set_model: type: task definitions: display script: - define loc - modifyblock <[loc]> stone - spawn entity display_entity <[loc]> - note <[display]> as:custom_model_display - adjust <[display]> custom_model_data:123 ModelPlacingSystemInventory: type: inventory inventory: chest title: gui: true slots: - [] [] [] [] [] [] [] [] [] - [] [] [] [] [] [] [] [] [] - [] [] [] [] [] [] [] [] [] Model_Placing_System_Data: type: data models: bench_model: name: Bench description: a nice bench model item: stone model_id: 1001 box_model: name: Box description: a nice box model item: stone model_id: 1057 chair_model: name: Chair description: a nice chair model item: stone model_id: 1060 open_ModelPlacingInventory: type: task script: - define inventory - define models_data - define slot 11 - inventory set d:<[inventory]> slot:23 o:Close]> - foreach <[models_data]> key:model as:value: - define model_name <[value.name]> - inventory set d:<[inventory]> slot:<[slot]> o:].with[custom_model_data=<[value.model_id]>;display=<[value.name]>;lore=|<[value.description]>||Click Here].with_flag[model:<[model]>]> - define slot:++ - if <[slot]> < 17: - repeat <[slot]> from:<[slot]> as:num: - if <[slot]> >= 18: - repeat stop - define slot:++ - inventory open destination:<[inventory]> ModelPlacingPurchaseConfirm: type: inventory inventory: chest title: gui: true slots: - [] [] [] [] [] [] [] [] [] - [] [] [] [] [] [] [] [] [] - [] [] [] [] [] [] [] [] [] open_model_placing_purchase_confirm: type: task definitions: model script: - define inventory - define models_data - define model_data <[models_data.<[model]>]> - inventory set d:<[inventory]> slot:13 o:Confirm;lore=<[model_data.description]>].with_flag[model:<[model]>]> - inventory set d:<[inventory]> slot:15 o:Cancel]> - inventory open destination:<[inventory]> ModelPlacingHandler: type: world debug: false events: on player clicks item in ModelPlacingSystemInventory: - stop if:]> - define item - define slot - define model <[item].flag[model]> - stop if:<[item].equals[]> - if <[slot].equals[23]>: - inventory close - if <[item].has_flag[model]>: - run open_model_placing_purchase_confirm def:<[model]> on player clicks item in modelplacingpurchaseconfirm: - stop if:]> - define item - define slot - define model <[item].flag[model]> - stop if:<[item].equals[]> - if <[slot].equals[15]>: - run open_modelplacinginventory - if <[slot].equals[13]>: - run ModelConfirmPurchase def:<[model]> on player right clicks block: - stop if:]> - if : - define item - define model <[item].flag[model]> - define loc ;fluids=false;nonsolids=false;default=air;range=20]>].distance[2]> - modifyblock <[loc]> barrier - spawn entity display_entity <[loc]> save:entity - define display - note <[display]> as:<[model.name]> - adjust <[display]> custom_model_data:<[model.model_id]> on player places stone: - define model_id - define size ]||1> - define base - define base_x <[base].x.round> - define base_y <[base].y.round> - define base_z <[base].z.round> # Spawn model - define model_loc <[base].add[0, 0.1, 0]> - spawn item_display[scale=1,5,1.5,1.5;item=] <[model_loc]> save:model # Place barriers according to size - repeat <[size]> as:x: - repeat <[size]> as:z: - define offset_x <[x].sub[<[size].div[2].round_down>]> - define offset_z <[z].sub[<[size].div[2].round_down>]> - define loc ]>,<[base_y]>,<[base_z].add[<[offset_z]>]>]> - modifyblock <[loc]> barrier - take item: ModelConfirmPurchase: type: task definitions: model script: - define inventory - define models_data - define model_data <[models_data.<[model]>]> - inventory close - give ].with[custom_model_data=<[model_data.model_id]>].with_flag[model:<[model_data]>].with[display=<[model_data.name]>;lore=<[model_data.description]>]> quantity:1 - narrate "You have got <[model_data.name]>"