StorekeeperPlayerOwned: type: assignment debug: true default constants: transaction_data: true transaction_log: true server_price_requirment: true open_limit: false online_only: true store greetings: li@Welcome to my store!|Feel free to look around!|Just give me a click if you need something! actions: # Just some setup of the triggers on remove: - flag server store:<-: on assignment: - trigger name:proximity toggle:true radius:30 cooldown:3s - trigger name:click toggle:true - trigger name:chat toggle:true - trigger name:damage toggle:true - flag npc cashregister:5 on enter proximity: - if : - foreach : - if !: - adjust %value% framed:]>]> on exit proximity: - define name - if && == false: - if !'' contains '': - flag server storeclosed:->: - announce "store closed" - foreach : - switch %value% state:off - despawn - if && ]||false>: - flag player storekeepernpc: - if ! contains && != : - flag npc customer:->: - if && !]> && '': - inventory add o:in@def[name]_shopping_bag d: - take "i@shopping_bag" - narrate "No stealing items from my store!!" - else if contains && !]||false>: - flag npc customer:<-: - if == && ]||null> && !: - narrate "Hello just ask for 'help' if you need a command refresher for your shop" - flag player greeted duration:5m - else if ! && ]||null>: - if ! == null: - narrate "" - else: - narrate "].as_list.random>" - flag player greeted duration:30s on damage: - define name - if == : - narrate " The balance is " - narrate "would you like to 'give' money to your store or 'take' money from your store?" - else if '!' && '!': - note 'in@player bag' as:_shopping_bag - animate arm_swing - flag player storekeepernpc: - narrate 'Here, have a complimentary shopping_bag!' - give 'i@shopping_bag' - else if == 'i@shopping_bag' && == server: - define total_price 0 - foreach : - adjust %value% quantity:1 save:item2 - if ]||null> == null: - flag server :1.00 - adjust %value% quantity:1 save:item - define price ].mul[2].mul[]>].mul[]||null> - define total_price - narrate "Ready to check out? Just click me with your bag!" - narrate "your total price is %total_price%" - else if == 'i@shopping_bag': - define total_price 0 - define name - foreach : - if !].mul[<%value%.qty>]||null> == null: - define price ].mul[]||null> - else: - define price ]>].mul[]||null> - define total_price - narrate "Ready to check out? Just click me with your bag!" - narrate "your total price is %total_price%" - else if == 'i@selling_bag' && == server: - define total_price 0 - foreach : - adjust %value% quantity:1 save:item - define price ].mul[]> - define total_price - narrate "Ready to sell items? Just right click me with your bag!" - narrate "your total price is %total_price%" - else if == 'i@selling_bag': - define total_price 0 - foreach : - define newvalue - define price - define total_price - narrate "Ready to sell items? Just right click me with your bag!" - narrate "your total price is %total_price%" - else: - flag player storekeepernpc:n@ on chat: - if == greeting && == : - narrate "Would you like to add or remove a greeting?" - flag player greeting d:15s - narrate "Your current greetings are<&co>" - foreach : - narrate "%loop_index%=%value%" - determine cancelled - if == true && == : - if == add: - if > 4: - narrate "You cannot exceed five greetings!" - flag player greeting:! - determine cancelled - queue clear - else: - narrate "Please say the greeting you would like to add to your store" - flag player greeting:! - flag player addgreeting - determine cancelled - else if == remove && == : - flag player greeting:! - flag player removegreeting - narrate "What line number would you like to remove?" - foreach : - narrate "%loop_index%=%value%" - determine cancelled - if == true && == : - narrate "]>" - narrate "Has been removed" - flag npc greeting[]:<- - flag player removegreeting:! - determine cancelled - if == true && == : - flag npc greeting:->: - flag player addgreeting:! - narrate "You added a new greeting to your list. Your new greeting is" - narrate "" - determine cancelled - if == expand && == : - execute as_op "npc select" - flag server store:<-: - give "storelocationstick" - narrate "please reselect the bottom and top corners of your cuboid then drop the selector" - determine cancelled - if == help && == : - narrate "your shop commands are Greeting, items, give, take, set, unset, expand, open, close." - narrate "Click the npc with an item to set a price for it" - narrate "Right click the npc without an item to view inventory for the store" - determine cancelled - if == items && == : - if == false: - narrate "No items have been sold to your shop" - else: - give - flag npc buyback:! - determine cancelled - if == true && == : - flag npc cashregister:+: - take money qty: - narrate "You give to the cash register. The balance is now " - flag player givingtocashregister:! - determine cancelled - if == give && == : - flag player givingtocashregister - narrate "How much would you like to give to the store?" - determine cancelled - if == take && == : - flag player takingfromcashregister - narrate "How much would you like to take from the store?" - determine cancelled - if == true && == : - if > : - flag npc cashregister:-: - give money qty: - narrate "You take from the cash register. The balance is now " - flag player takingfromcashregister:! - determine cancelled - else if < : - narrate "You havnt got that much money in your cashregister!" - if == unset && == : - flag global store:<-: - narrate "your store is now unprotected! tell the npc to 'set' the store back up when you are done editing" - determine cancelled - if == sell: - if == server: - note 'in@selling bag' as:_selling_bag - animate arm_swing - narrate 'Here is your item selling bag!' - else: - note 'in@player bag' as:_selling_bag - animate arm_swing - narrate 'Here is your item selling bag!' - narrate "We buy the following items that you have" - foreach : - if !]||null> == null: - if <%value%.display||null> == null: - narrate "We buy <%value%.material.name||null> for ]||null> coins a piece" - else: - narrate "We buy <%value%.display||null> for ]||null> coins a piece" - give i@selling_bag - determine cancelled - if == set && == && !contains : - determine passively cancelled - narrate "<&b>your store is now open for business!" - flag npc stock:! - flag server store:->: - flag npc storeitems:! - foreach >: - if == item_frame: - flag npc storeitems:->: - flag npc storeitemlocations:->: - wait 1t - foreach : - flag npc stock:->: - if == buying && == : - if == true: - narrate "please set a price below ]||null> for that item." - flag player settype:buy - determine cancelled - else: - flag player settype:buy - narrate "please set a price for that item" - determine cancelled - if == selling && == : - if == true: - narrate "please set a price above ]||null> for that item." - flag player settype:sell - determine cancelled - else: - flag player settype:sell - narrate "please set a price for that item" - determine cancelled - if == true && == : - if == buy && == true: - if > ]||null> && : - narrate "your price needs to be below the base price. this price will not be set for this item." - flag npc currentitem:! - flag player settype:! - determine cancelled - else if < ]||null> && : - flag npc _: - if == null: - narrate " price is now set to " - else: - narrate " price is now set to " - flag npc currentitem:! - flag player settype:! - determine cancelled - else: - narrate "That doesnt not match a valid number! please set a proper number for a price" - determine cancelled - if == true && == : - if == sell && == true: - if < ]||null> && : - narrate "your price needs to be above the base price. this price will not be set for this item." - flag npc currentitem:! - flag player settype:! - determine cancelled - else if > ]> && : - flag npc _: - if == null: - narrate " price is now set to " - else: - narrate " price is now set to " - flag npc currentitem:! - flag player settype:! - determine cancelled - else: - narrate "That doesn not match a valid number! please set a proper number for a price" - determine cancelled - if ! && == : - if ! == true: - if : - flag npc _: - if == null: - narrate " price is now set to " - else: - narrate " price is now set to " - flag npc currentitem:! - flag player settype:! - determine cancelled - else: - narrate "That is not a valid number. please select a valid number for the price" - determine cancelled - if == open && == : - flag player openhour - narrate "Please select a opening hour between 0 and 23 If you no longer want an opening hour then just say none." - determine cancelled - if == close && == && == false: - flag player closehour - narrate "Please select a closing hour between 0 and 23" - determine cancelled - else if != false: - narrate " This server has an open limit and doesn not allow for a store closing change. Please make your opening hour and then the store will close automaticly when the time limit is reached." - if : - flag npc open: - flag player openhour:! - narrate " Is now your opening hour!" - determine cancelled - if : - flag npc close: - flag player closehour:! - narrate " Is now your closing hour!" - determine cancelled on click: - define name - if == && != i@air: - adjust quantity:1 save:item8 - flag npc currentitem: - narrate "will you be 'selling' or 'buying' for this item?" - queue clear - determine cancelled - if == "i@shopping_bag": - if == 0: - narrate "your shopping_bag is empty!" - else if == server: - flag player delay duration:3s - chat "ok let's total these items up for you then!" - define total_price 0 - foreach : - adjust %value% quantity:1 save:item2 - if ]||null> == null: - flag server :1.00 - adjust %value% quantity:1 save:item - define price ].mul[2].mul[]||null>].mul[]> - define total_price - if == true: - yaml id:transaction_data set transaction..bought.from_.>:+: - yaml savefile:transaction_data.yml id:transaction_data - if == true: - if == 1000: - flag server logname:+:1 - flag server loglimiter:! - log " bought > from_ for %price%" file:transaction_log> - if < %total_price%: - narrate "YOU NEED MONEYS D=" - queue clear - flag player bagnumber:+:1 - note "in@player bag" "as: _item_bag" - take money qty:%total_price% - if == true: - yaml id:transaction_data set transaction..money.spent:+: - yaml savefile:transaction_data.yml id:transaction_data - run "itemgiverPlayer Owned" delay:1s - take 'i@shopping_bag' - narrate "The shopkeeper takes %total_price% coins" - narrate "You are all checked out. have a great day!" - narrate "Do not open your item bag until you are ready to take all the items out" - foreach : - adjust %value% quantity:1 save:item9 - flag server adjust:+: - run script:price_adjuster def: - else: - flag player delay duration:3s - chat "ok let's total these items up for you then!" - define total_price 0 - foreach : - adjust %value% quantity:1 save:item2 - if .escaped>]> == null: - flag server <.escaped>:1.00 - define price ]>].mul[]> - define total_price - if : - yaml id:transaction_data set transaction..bought.from_.>:+: - yaml savefile:transaction_data.yml id:transaction_data - if == true: - if == 1000: - flag server logname:+:1 - flag server loglimiter:! - log " bought > from_ for %price%" file:transaction_log> - if < %total_price%: - narrate "YOU NEED MONEYS D=" - queue clear - if contains _shopping_bag.list_contents.simple>: - narrate "I am sorry but we just ran out of some of those items!" - queue clear - flag player bagnumber:+:1 - note "in@player bag" "as: _item_bag" - take money qty:%total_price% - flag npc cashregister:+:%total_price% - if == true: - yaml id:transaction_data set transaction..money.spent:+: - yaml savefile:transaction_data.yml id:transaction_data - run "itemgiverPlayer Owned" delay:1s - take 'i@shopping_bag' - narrate "The shopkeeper takes %total_price% coins" - narrate "You are all checked out. have a great day!" - narrate "Do not open your item bag until you are ready to take all the items out" - foreach : - adjust %value% quantity:1 save:item9 - flag server adjust:+: - run script:price_adjuster def: - else if == "i@selling_bag": - flag player delay duration:3s - if == 0: - narrate "your selling bag is empty!" - else if : - chat "i am sorry but i do not buy back my shopping bags." - else if == server: - chat "ok let's total these items up for you then!" - define total_price 0 - foreach : - adjust %value% quantity:1 save:item - define price ].mul[]||null> - define total_price - if : - yaml id:transaction_data set transaction..sold.to_.>:+: - yaml savefile:transaction_data.yml id:transaction_data - if == true: - if == 1000: - flag server logname:+:1 - flag server loglimiter:! - log " sold from_ for %price%" file:transaction_log> - note as:_selling_bag remove - give money qty:%total_price% - if == true: - yaml id:transaction_data set transaction..money.recieved:+: - yaml savefile:transaction_data.yml id:transaction_data - take 'i@selling_bag' - narrate "The shopkeeper gives you %total_price% coins" - foreach : - adjust %value% quantity:1 save:item9 - flag server adjust:-: - run script:price_adjuster def: - queue clear - else: - chat "ok let's total these items up for you then!" - define total_price 0 - foreach : - adjust %value% quantity:1 save:item - define price ]>].mul[]> - define total_price - if : - yaml id:transaction_data set transaction..sold.to_.>:+: - yaml savefile:transaction_data.yml id:transaction_data - if == true: - if == 1000: - flag server logname:+:1 - flag server loglimiter:! - flag server loglimiter:+:1 - log " sold > from_ for %price%" file:transaction_log> - if %total_price% < : - flag npc buyback:->: - note 'in@player bag' as:_selling_bag - give money qty:%total_price% - flag npc cashregister:-:%total_price% - if == true: - yaml id:transaction_data set transaction..money.recieved:+: - yaml savefile:transaction_data.yml id:transaction_data - take 'i@selling_bag' - narrate "The shopkeeper gives you %total_price% coins" - foreach : - adjust %value% quantity:1 save:item9 - flag server adjust:-: - run script:price_adjuster def: - queue clear - else: - narrate "I am sorry I don't have the funds to buy all of that back!" - else if contains 'i@shopping_bag' || contains 'i@selling_bag': - queue clear - else if == : - narrate "Hey boss!" - queue clear - else: - chat "Please visit http://youtu.be/2f3Dk4cPCXs for a short tutorial of how to use our stores." itemgiverPlayer Owned: type: task debug: false script: - define name - inventory add o:in@%name%_shopping_bag 'd:in@ _item_bag' - ^adjust 'i@item_bag' "lore: " save:playersbag - give Item Frame Shop Player Owned: type: world debug: true constants: permission_for_prices: true events: on player right clicks with polar_bear_spawn_egg: - determine cancelled on server start: - yaml load:prices.yml id:prices - if !: - yaml create id:transaction_data - wait 1t - yaml id:transaction_data set transaction:data - yaml savefile:transaction_data.yml id:transaction_data - else: - yaml load:transaction_data.yml id:transaction_data on time changes: - foreach : - define shopkeeper %value% - if == : - if ! == false: - flag openhours:+:1 - if == : - flag openhours:! - if == false: - if !'' contains '': - announce "shop closed" - despawn - foreach : - switch %value% state:off - flag server storeclosed:->: - else: - flag closed - else if == && == false: - despawn - if !'' contains '': - announce "shop closed" - foreach : - switch %value% state:off - flag server storeclosed:->: - else if == : - flag closed - if == true: - if && == : - spawn - if '' contains '': - announce "shop opened" - flag server storeclosed:<-: - flag closed:! - else if == : - spawn - if '' contains '': - announce "shop opened" - flag server storeclosed:<-: - flag closed:! on player clicks wooden_door: - foreach : - if == : - if ]||false>: - queue clear - else: - foreach : - if ]||false>: - narrate "This shop is closed and the door is locked!!!" - determine cancelled on price command: - if : - adjust quantity:1 save:item3 - if !]||false>: - flag player setpriceserver: - narrate "what is the base price you want for that item?" - determine cancelled - else: - narrate "That item already has a current price of ]||null>" - narrate "To adjust that items price use the /adjust_price command" - determine cancelled on player right clicks chest: - foreach : - if ]||false>: - if != : - narrate "This chest is locked" - determine cancelled on player right clicks trapped_chest: - foreach : - if ]||false>: - if != : - narrate "This chest is locked" - determine cancelled on adjust_price command: - adjust quantity:1 save:item3 - yaml id:prices set prices.:! - flag player setpriceserver: - narrate "what is the base price you want for that item?" - determine fulfilled on player chats: - if && : - if : - yaml id:prices set prices.: - yaml savefile:prices.yml id:prices - narrate ">> price is now set to ]||null>" - flag setpriceserver:! - determine cancelled - else: - narrate "That is not a valid number" - narrate "what is the base price you want for that item?" - determine cancelled on stop command: - foreach : - flag %value% storeinventory: on player teleports: - if '!': - queue clear - else if '': - define name - if ! == server: - foreach : - define item %value% - foreach : - if contains && < 64 && ! == : - give %item% qty: to:%value% - foreach stop - else if %loop_index% == : - foreach : - if ! == : - give %item% qty: to:%value% - narrate "No stealing items from my store!!" on player quits: - if '': - define name - if ! == server: - foreach : - define item %value% - foreach : - if contains && < 64 && ! == : - give %item% qty: to:%value% - foreach stop - else if %loop_index% == : - foreach : - if ! == : - give %item% qty: to:%value% - foreach : - if == true: - if == : - if == false: - if !'' contains '': - announce "shop closed" - despawn - flag server storeclosed:->: - else: - flag closed on store_setup command: - give i@storekeeperegg - determine fulfilled on player clicks with storekeeperegg: - if : - create player storekeeper "save:mystorekeeper" - wait 2t - flag player storenpc: - narrate "please select the bottom and top corners of your cuboid then drop the selector" - take i@storekeeperegg - wait 1t - lookclose state:true - assignment set npc: script:StorekeeperPlayerOwned - give i@storelocationstick - queue clear - foreach : - if ]>: - narrate "you cannot place your store inside of another store" - determine cancelled - foreach : - if !]>: - create player storekeeper "save:mystorekeeper" - execute as_op "npc select" - execute as_op "npc owner " - narrate "please select the bottom and top corners of your cuboid then drop the selector" - take i@storekeeperegg - flag player storenpc: - lookclose state:true - wait 1t - assignment set npc: script:StorekeeperPlayerOwned - give i@storelocationstick - queue clear on item_frame damaged by entity_explosion: - foreach : - if ]||false>: - determine cancelled on item_frame damaged by block_explosion: - foreach : - if ]||false>: - determine cancelled on player right clicks with storelocationstick: - if == null: - flag player location1: - narrate "Cuboid location 1 selected" - determine passively cancelled - wait 1t - showfake m@red_wool to: d:10s - else: - foreach : - if ]||false>: - narrate "You cannot have your store in another store location please select a different location" - determine cancelled - else: - flag player location1: - narrate "Cuboid location 1 selected" - determine passively cancelled - wait 1t - showfake m@red_wool to: d:10s on player left clicks with storelocationstick: - if == null: - flag player location2: - narrate "Cuboid location 2 selected" - determine passively cancelled - wait 1t - showfake m@red_wool to: d:10s - else: - foreach : - if ]||false>: - narrate "You cannot have your store in another store location please select a different location" - determine cancelled - else: - flag player location2: - narrate "Cuboid location 2 selected" - determine passively cancelled - wait 1t - showfake m@red_wool to: d:10s on player drops storelocationstick: - execute as_op "npc select" " --id " - execute as_op "npc owner --id " - flag store:cu@| - flag player location1:! - flag player location2:! - flag server storenpcs:->: - narrate "tell the npc 'SET' to set the items in the frame" - determine passively cancelled - wait 1t - take storelocationstick on player right clicks item_frame: - define name - foreach : - if ]||false>: - if && : - queue clear - determine passively cancelled - if == 'i@shopping_bag': - if = 18: - narrate "Your shopping bag is full!" - else if == server && ]||null> == null: - foreach : - if !']||null>' == null: - narrate "Warning<&co> has no price! please set a price for this item by holding it in your hand ant typing /price" target:%value% - else if !]>: - flag server pricemessage:->: - narrate "This item has no price. please contact the servers administrators to let them know" - determine cancelled - else if == server: - inventory add o: d:in@_shopping_bag - if != null: - narrate "You add a to your shopping bag." - else: - narrate "You add to your shopping bag." - playsound sound:DIG_GRASS - else if ]||null> == null: - if == true: - narrate "Warning<&co>>> does not have a price set for it! Please set a price in your shop for this item" targets: - else: - if !]||false>: - flag "storepricemessage:->:>>" - narrate "This item has no price and cannot be sold till a price is set for it." - determine cancelled - else: - foreach : - if ]>: - inventory add o: d:in@_shopping_bag - take from: - narrate "You add a >> to your shopping bag." - playsound sound:DIG_GRASS - define true true - foreach stop - if %loop_index% == && == false: - if == true: - narrate "Warning<&co>>> is out of stock! Please restock this item." targets: - else: - if ! contains : - flag "storestockmessage:->:>>" - narrate "That item is out of stock! Please check back later" - determine cancelled on player places block: - foreach : - if ]||false>: - if && : - queue clear - else: - determine cancelled on player breaks item_frame: - foreach : - if ]||false>: - if && : - queue clear - else: - if != null: - narrate "It's a ." - else: - narrate "It's ." - narrate "Right click it with your shopping bag to add it to your transaction." - determine cancelled on player breaks block: - foreach : - if ]||false>: - if && : - queue clear - else: - determine cancelled - if == null: - narrate '[storekeeper] -> You<&co> Hey! You break it, you buy it! Be careful!' - flag storekeeper_warned duration:5s on entity damages item_frame: - foreach : - if ]||false>: - if && : - queue clear - else: - foreach : - if ]||false>: - if ]||null> == null: - flag server :1.00 - determine cancelled - else if == server && ]||null> == null: - foreach : - if ']||null>' != null: - narrate "Warning<&co> has no price! please set a price for this item by holding it in your hand ant typing /price" target:%value% - else if !]>: - flag server pricemessage:->: - narrate "This item has no price. please contact the servers administrators to let them know" - determine cancelled - else if == server: - define price ].mul[2].mul[]>].as_int||null> - narrate "%price%" - determine cancelled - else if ]||null> == null: - if == true: - narrate "Warning<&co>>> does not have a price set for it! Please set a price in your shop for this item" targets: - else: - if ]||true>: - flag "storepricemessage:->:>>" - narrate "This item has no price and cannot be sold till a price is set for it." - determine cancelled - else: - define price ]||null> - narrate "%price%" - determine cancelled on player joins: - foreach : - if == && == false: - spawn - if '' contains '': - announce "shop opened" - flag server storeclosed:<-: - flag closed:! - if ! == null: - wait 5s - foreach : - wait 3t - narrate "Warning<&co>%value% does not have a price set for it! Please set a price in your shop for this item" - flag player storepricemessage:<-:%value% - if ! == null: - wait 8s - foreach : - wait 3t - narrate "Warning<&co>%value% is out of stock! Please restock this item." - flag player storestockmessage:<-:%value% - if ']||false>': - wait 12s - foreach : - narrate "Warning<&co>%value% has no price! please set a price for this item by holding it in your hand and typing /price" - flag server pricemessage:<-:%value% on player right clicks entity with shopping_bag: - if : - flag player shopkeeper: on player places item_frame: - foreach : - if ]||false>: - if && : - queue clear - else: - determine cancelled on player right clicks with shopping_bag: - define name - define is_shopping false - foreach : - if ]>: - define is_shopping true - foreach stop - if ! >= 2: - take 'i@shopping_bag' qty:36 - note 'in@player bag' as:_shopping_bag - if !%is_shopping%: - inventory clear d:in@_shopping_bag - take 'i@shopping_bag' - narrate 'You are not shopping right now!' - else if in@_shopping_bag == null && %is_shopping%: - note 'in@player bag' as:_shopping_bag - else if %is_shopping%: - narrate 'You take a look in your shopping bag...' - inventory open d:in@_shopping_bag - determine cancelled on player right clicks with selling_bag: - define name - define is_shopping false - foreach : - if ]>: - define is_shopping true - foreach stop - if !%is_shopping%: - define name - foreach : - drop %value% - inventory clear d:in@_selling_bag - narrate 'You are not in a shop right now!' - take 'i@selling_bag' - determine cancelled - else if == null && %is_shopping%: - note 'in@player bag' as:_selling_bag - inventory open d:in@_selling_bag - determine cancelled - else if %is_shopping%: - inventory open d:in@_selling_bag - determine cancelled - determine cancelled on player right clicks with item_bag: - foreach : - if ]||false> && ]>: - else: - define item - foreach : - drop %value% - narrate "your shopping bag ripped" - take iteminhand - determine cancelled on player drops shopping_bag: - define name - narrate 'You ditch your shopping bag.' - if ! == server: - foreach : - define item %value% - foreach : - if contains && < 64 && ! == : - give %item% qty: to:%value% - foreach stop - else if %loop_index% == : - foreach : - if ! == : - give %item% qty: to:%value% - determine passively cancelled - wait 1t - take 'i@shopping_bag' on player drops selling_bag: - define name - foreach : - drop %value% - narrate 'You ditch your selling bag.' - note in@_selling_bag remove - determine passively cancelled - wait 1t - take 'i@selling_bag' on player clicks in inventory: - define name - if == 'in@_shopping_bag' && == 'i@shopping_bag': - determine passively cancelled - inventory update d: - if == 'in@_shopping_bag' && == 'i@shopping_bag': - if : - determine passively cancelled - inventory update d: - if == 'in@_selling_bag': - if "li@i@shopping_bag|i@selling_bag|i@item_bag" contains : - inventory update - determine cancelled on player picks up shopping_bag: - if '': - determine cancelled - else: - note 'in@player bag' as:_shopping_bag - narrate "You pick up a brand new shopping bag. It's empty!" on player picks up storekeeperegg: - narrate "To learn how to set up the frame shop please visit https://www.youtube.com/watch?v=FlYEog5-KxU" on player clicks storekeeperegg in inventory: - narrate "To learn how to set up the frame shop please visit https://www.youtube.com/watch?v=FlYEog5-KxU" 'player bag': type: inventory title: shopping bag size: 18 # It's empty! 'selling bag': type: inventory title: selling bag size: 18 shopping_bag: type: item material: "player_head[skull_skin=02d014dd-6d1a-4056-ba55-977918442838|eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3R leHR1cmUvYmY0MGM3NzE2MjY3YjFmNDY5YWU3MzBkMDEzYjE0MDAyN2Q4NDE5YzEyZDcxZjA3MTk4MTdhYzBhMWY3ZjA5ZCJ9fX0=]" display name: "shopping bag" lore: - Give this to a shopkeeper to check out - by right clicking him with it. - Right click to see the contents. - Left click the shopkeeper to see the price. 'item_bag': type: item material: "player_head[skull_skin=02d014dd-6d1a-4056-ba55-977918442838|eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3R leHR1cmUvYmY0MGM3NzE2MjY3YjFmNDY5YWU3MzBkMDEzYjE0MDAyN2Q4NDE5YzEyZDcxZjA3MTk4MTdhYzBhMWY3ZjA5ZCJ9fX0=]" display name: item bag lore: - this bag contains the items you bought selling_bag: type: item material: "player_head[skull_skin=02d014dd-6d1a-4056-ba55-977918442838|eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3R leHR1cmUvYmY0MGM3NzE2MjY3YjFmNDY5YWU3MzBkMDEzYjE0MDAyN2Q4NDE5YzEyZDcxZjA3MTk4MTdhYzBhMWY3ZjA5ZCJ9fX0=]" display name: selling bag lore: - Right click the shopkeeper with this bag to sell the items in it. - Left click the shopkeeper with this bag to see what the - total price of your items will be. storelocationstick: type: item material: iron_hoe display name: store_selector_tool storekeeperegg: type: item material: polar_bear_spawn_egg display name: shop_keeper