########################################### # Made by Smellyonionman for Smellycraft. # # onion@smellycraft.com # # Tested on Denizen-1.1.2-b4492-DEV # # Version 1.2 # #-----------------------------------------# # Updates and notes are found at: # # https://smellycraft.com/d/denizence # #-----------------------------------------# # You may use, modify or share this # # script, provided you don't remove # # or alter lines 1-13 of this file. # ########################################### # This script requires PlaceholderAPI # ########################################### sc_dce_init: type: task debug: false script: - define namespace:sc_dce - define admin:> - define targets:]].include[].deduplicate||> - define filename: - if ]||false>: - if : - ~yaml unload id:sc_dce - ~yaml load:../Smellycraft/<[filename]> id:sc_dce - else: - ~yaml create id:sc_dce - define payload: - if <[payload].matches[null]>: - ~webget https://raw.githubusercontent.com/smellyonionman/smellycraft/master/configs/denizence.yml save:sc_raw headers:host/smellycraft.com:443|user-agent/smellycraft - define payload: - ~yaml loadtext:<[payload]> id:sc_dce - yaml set type:! id:sc_dce - if ].not>: - define msg:> - narrate <[msg].unescaped.parse_color> targets:<[targets]> - stop - foreach >> as:task: - if ]||]>>]>].not>: - define placeholder:> - narrate '<[placeholder].replace[[script]].with[<[task]>].separated_by[&sp].unescaped.parse_color>' targets:<[targets]> - stop - ~yaml load:../Residence/config.yml id:sc_dce_resconf - yaml set gui.current.material.create: id:sc_dce - ~yaml unload id:sc_dce_resconf - ~yaml savefile:../Smellycraft/<[filename]> id:sc_dce - define feedback:> - inject >]> sc_dce_cmd: type: command debug: false name: denizence description: usage: /denizence sc_dce_menu: type: inventory debug: false title: >].unescaped.parse_color> size: 18 definitions: Current: Messages: Flags: Size: Subzones: Rental: Back: slots: - "[Current] [] [] [] [Messages] [Flags] [Size] [Subzones] [Rental]" - "[Back] [] [] [] [] [] [] [] []" sc_dce_menu_current: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine create button. If so... - if <[name].matches[].not>: - define owner: - define size: - define subzone: #Are you the owner? If so, details. - if <[owner].matches[]>: - define button:>].with[display_name=>;nbt=click/owned]> - define placeholder:> - define lore:!|:<[placeholder].replace[[name]].with[<[name]||&cError>]> - define lore:|:> - define placeholder:> - define lore:|:<[placeholder].replace[[size]].with[<[size]||&cError>]> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> - define lore:|:> #If someone else owns this residence... - else: - define button:>].with[display_name=>;nbt=click/notowned]> - define placeholder:> - define lore:!|:<[placeholder].replace[[owner]].with[<[owner]>].replace[[name]].with[<[name]>]> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #Is it for rent or for sale? If for rent... - define forrent: - define renter: - define renewdate: - define rentprice: - define rentperiod: - if <[forrent]>: #Are you the tenant? Click for more buttons. or... - if <[renter].matches[]>: - define button:>].with[display_name=>;nbt=click/rented;enchantments=protection,1;flags=HIDE_ENCHANTS]> - define placeholder:> - define lore:|:<[placeholder].replace[[renewdate]].with[<[renewdate]>]> - define placeholder:> - define lore:|:<[placeholder].replace[[rentprice]].with[]>]> - define lore:|:> #Is another the tenant? or... - else if <[renter].matches[].not>: - define placeholder:> - define lore:|:<[placeholder].replace[[renter]].with[<[renter]>]> #Is the place rentable by you? - else: - define button:>].with[display_name=>;nbt=click/forrent]> - define placeholder:> - define lore:|:<[placeholder].replace[[rentprice]].with[]> - define placeholder:> - define lore:|:<[placeholder].replace[[rentperiod]].with[<[rentperiod]>]> - define lore:|:> #...or is it for sale? If so... details. If not, nothing. - define forsale: - define saleprice: - else if <[forsale]>: - define button:>].with[display_name=>]> - define lore:|:> - define placeholder:|:> - define lore:|:<[placeholder].replace[[saleprice]].with[]>]> #If there is no residence here... - else: - define button:>].with[display_name=>;nbt=click/forsale]> - define lore:!|:> - define lore:<[button].lore.exclude[<[button].lore.last>].include[<[lore]>]> - adjust def:button display_name:> - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_menu_flags: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine empty. - if <[name].matches[].not>: - define owner: - define subzone: #Are you the owner? If so, details. Click for more buttons. - if <[owner].matches[]>: - define button:>].with[display_name=>;nbt=click/flags]> - define lore:!|:> - define lore:|:> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #If someone else owns this residence... - else: #Is it for rent or for sale? If for rent... - define forrent: - define renter: - if <[forrent]>: #Are you the tenant? Click for more buttons. or... - if <[renter].matches[]>: - define button:>].with[display_name=>;nbt=click/flags]> - define lore:!|:> - define lore:|:> #If there is no residence here... - else: - define button: - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_menu_msgs: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine empty. - if <[name].matches[].not>: - define owner: - define subzone: #Are you the owner? If so, details. - if <[owner].matches[]>: - define button >].with[display_name=>;nbt=click/msgs]> - define lore:!|:> - define lore:|:> - define lore:|:> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #If someone else owns this residence... - else: #Is it for rent or for sale? If for rent... - define forrent: - define renter: - if <[forrent]>: #Are you the tenant? Click for more buttons. or... - if <[renter].matches[]>: - define lore:!|:> - define lore:|:> - define lore:|:> #If there is no residence here... - else: - define button: - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_menu_size: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine nothing. If so... - if <[name].matches[].not>: - define owner: - define subzone: #Are you the owner? If so, details. - if <[owner].matches[]>: - define button:>].with[display_name=>;nbt=click/size]> - define maxew: - define maxns: - define maxud: - define lore:!|:> - define lore:|:> - define lore:|:> - define placeholder:> - define lore:|:<[placeholder].replace[[maxew]].with[<[maxew]>].replace[[maxud]].with[<[maxud]>].replace[[maxns]].with[<[maxns]>]> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #If there is no residence here... - else: - define button: - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_menu_zones: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine nothing. If so... - if <[name].matches[].not>: - define owner: - define subzone: #Are you the owner? If so, details. - if <[owner].matches[]>: - define button:>].with[display_name=>;nbt=click/zones]> - define lore:!|:> - define lore:|:> - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #If there is no residence here... - else: - define button: - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_menu_rent: type: procedure debug: false script: - define name: #Are you in a residence? If not, determine create button. If so... - if <[name].length.is[MORE].than[0]>: - define owner: #Are you the owner? If so, continue. - if <[owner].matches[]>: - define subzone: - define placeholder:> - define lore:|:<[placeholder].replace[[subzone]].with[].pass[<[subzone]>].fail[&f&oNone]>]> #Is it for rent or for sale? If for rent... - define forrent: - if <[forrent]>: - define button:>].with[display_name=>;nbt=click/unrent]> - define renter: #Is a tenant currently occupying? or... - if <[renter].matches[].not>: - define renewdate: - define rentprice: - define rentperiod: - define placeholder:> - define lore:|:<[placeholder].replace[[renter]].with[<[renter]>]> - define placeholder:> - define placeholder:> - define lore:|:<[placeholder].replace[[rentprice]].with[]>]> - define lore:|:> - else: - define lore:|:> - define lore:|:> - else: - define button:>].with[display_name=>;nbt=click/rent]> - define lore:|:> #If there is no residence here... - else: - define button: - adjust def:button lore:<[lore]||null> - determine <[button].unescaped.parse_color||null> sc_dce_listener: type: world debug: false events: on reload scripts: - if : - inject on server start: - inject on delta time hourly: - define namespace:sc_dce - define silent:true - inject - if : - inject >]> on shutdown: - define namespace:sc_dce - inject - yaml unload id:sc_dce on player opens sc_dce_menu: - define namespace:sc_dce - if >].not>: - determine passively cancelled - define feedback:> - inject >]> on player drags in sc_dce_menu: - determine cancelled on player clicks in sc_dce_menu: - define namespace:sc_dce - determine passively cancelled - define click: - if <[click].matches[null]||false>: - stop - choose : - case "owned": - inventory close - execute as_player "res remove " - case "renting": - inventory close - execute as_player "res market unrent" - case "forrent": - execute as_player "res market rent" - wait - inventory open d: - case "forsale": - execute as_player "res market buy" - wait - inventory open d: - case "create": - flag player sc_dce_input:res_create_name duration: - inventory close - wait - define feedback:> - case "size": - execute as_player "res select residence" - if : - execute as_player "res select expand 1" - inventory open d: - else if : - execute as_player "res select contract 1" - inventory open d: - else: - define title:> - inject >]> - case "subzones": - if : - flag player sc_dce_input:res_subzone_name duration: - inventory close - wait - define feedback:> - else if : - execute as_player "res remove" - case "flags": - if : - execute as_player "res set" - else if : - flag player sc_dce_input:res_player_flags duration: - inventory close - wait - define feedback:> - case "msgs": - if : - flag player sc_dce_input:res_message_enter duration: - else if : - flag player sc_dce_input:res_message_leave duration: - else if : - execute as_player "res message enter remove" - define placeholder:> - define title:<[placeholder].replace[[type]].with[enter]> - inject >]> - stop - else if : - execute as_player "res message leave remove" - define placeholder:> - define title:<[placeholder].replace[[type]].with[leave]> - inject >]> - stop - inventory close - wait - define feedback:> - case "rent": - flag player sc_dce_input:!|:res_market_rent duration:1m - inventory close - wait - define feedback:> - case "unrent": - execute as_player "res market unrent" - wait - inventory open d: - case "back": - inventory open d: - case "default": - stop - if <[feedback].exists>: - inject >]> on residence||res command: - if : - determine passively cancelled - inventory open d: on player chats flagged:sc_dce_input: - define namespace:sc_dce - determine passively cancelled - if : - if : - define title:> - else: - execute as_player "res create " - else if : - if : - define title:> - else: - execute as_player "res subzone " - else if : - if : - define placeholder:> - define title:<[placeholder].replace[[type]].swith[entry]> - else if : - execute as_player "res message enter remove" - else: - execute as_player ].unescaped> - else if : - if : - define placeholder:> - define title:<[placeholder].replace[[type]].with[entry]> - else if : - execute as_player "res message enter remove" - else: - execute as_player "res message leave " - else if : - if : - define title:> - else: - execute as_player "res pset " - flag player sc_dce_input:! - stop - else if : - if : - define title:> - flag player sc_dce_input:! - else if : - if : - flag player sc_dce_input:->: - define placeholder:> - define feedback:<[placeholder].replace[[price]].with[]>]> - else: - define feedback:> - else if : - if : - flag player sc_dce_input:->: - define placeholder:> - define feedback:<[placeholder].replace[[days]].with[]> - else: - define feedback:> - else if : - if : - flag player sc_dce_input:->:true - define placeholder:> - define feedback:<[placeholder].replace[[renewable]].with[&aAllowed]> - else if : - flag player sc_dce_input:->:false - define placeholder:> - define feedback:<[placeholder].replace[[renewable]].with[&cDenied]> - else: - define feedback:> - else if : - if : - flag player sc_dce_input:->:true - define placeholder:> - define feedback:<[placeholder].replace[[T/F]].with[&aTrue]> - else if : - flag player sc_dce_input:->:false - define placeholder:> - define feedback:<[placeholder].replace[[T/F]].with[&cFalse]> - else: - define feedback:> - else if : - if : - flag player sc_dce_input:->:true - else if : - flag player sc_dce_input:->:false - else: - define feeback:> - inject >]> - stop - define area: - define price: - define term: - define renew: - define stay: - define auto: - execute as_player "res market rentable <[area]> <[price]> <[term]> <[renew]> <[stay]> <[auto]>" - flag player sc_dce_input:! - if : - if <[feedback].exists>: - inject >]> - else: - define inv: - inventory open d:<[inv]> - if <[marquee].exists>: - inject >]> sc_dce_data: type: yaml data version: 1.2 filename: denizence.yml scripts: reload: sc_dce_init save: sc_common_save update: sc_common_update sc_dce_defaults: type: yaml data settings: update: true permissions: use: residence.gui admin: residence.admin scripts: narrator: sc_common_feedback GUI: sc_common_marquee messages: prefix: '&9&lb&aDeniz&2ence&9&rb' description: 'GUI for Residence Users.' reload: '&9Plugin has been reloaded.' missing_common: '&This plugin uses code contained in sc_common.yml. Visit https://smellycraft.com/d/common for the most recent version.' missing_script: '&9 Script &a[script] &9was not detected. &c Installation not complete. &9An alternative is available in the Common Files.' enter_name: '&9Enter Residence name.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' enter_subzone: '&9Enter Subzone name.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' enter_player: '&9Enter Player name.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' enter_message: '&9Enter your message. &aColor codes supported.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' enter_price: '&9Enter the &6price &9to charge per rental term.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog' enter_term: '&9Renewal price&co &6[price]&9. Enter lease term next.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' allow_renew: '&9Lease term has been set to &a[days] &9(real) days. Allow renewing? Y/N.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' stay_rentable: '&9Renew set to [renewable]&9. Stay in market? Y/N.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' autopay: 'Stay in market set to [T/F]&9. Allow auto-pay? Y/N.&nl&7To resume chatting, type cancel, wait 60 seconds or just relog.' numbers_only: '&cPlease use numbers only.' boolean_only: '&cPlease use Y or N only.' gui: marquee: default: ' &1&lDenizence &2&oby Smellycraft' click_type: ' &8Left or Right click only.' cancel_res: - '&cResidence not created.' - '&cWere both corners unclaimed?' cancel_subzone: - ' &cSubzone not created.' - ' &cWere both corners inside?' cancel_message: ' &cNo changes to [type] message.' message_removed: ' &9Removed [type] message.' cancel_player: ' &cNo player chosen to flag.' cancel_list: ' &cArea was not put up for rent.' current: material: create: golden_shovel owned: oak_door not_owned: iron_door display: create: '&aCreate new Residence' owned: '&aWelcome Home' not_owned: '&cClaimed Land' lore: name: '&6[name]' owned: '&9You own this Residence.' not_owned: '&6&o[name]&9, Owned by &6[owner]' size: '&9Size: &a[size]' subzone: '&9Current Subzone: &6&o[subzone]' remove: '&fClick to remove.' forsale: '&9Residence is &afor sale&9.' saleprice: '&9Price&co &6[saleprice]' create: '&fClick to create a residence.' flags: material: lime_banner display: '&aAdjust Flags' lore: set_global: '&9Set &6global &fpermissions with &aLeft click' set_player: '&9Set &6player &fpermissions with &aRight click' editing_zone: '&9Editing Subzone&co &6&o[subzone]' messages: material: name_tag display: '&aChange Messages' lore: header: '&9Change the Enter or Leave messages.' buttons_1: '&aLeft-click &ffor Enter, &aRight-click &ffor Leave.' buttons_2: '&aShift-click &f to remove a message.' editing_zone: '&9Editing Subzone&co &6&o[subzone]' size: material: stick display: '&aExpand or Contract' lore: header: '&9Look up, down, or in any direction.' buttons: '&aLeft-click &fexpands, &aRight-click &fcontracts.' limits_1: '&cYour size limits are&co' limits_2: '&7X&co &a[maxew]&7, Y&co &a[maxud]&7, Z&co &a[maxns]' editing_zone: '&9Editing Subzone&co &6&o[subzone]' zones: material: oak_fence display: '&aManage Subzones' lore: header: '&9Select two points within a Residence.' buttons: '&aLeft-click &fcreates, &aRight-click &fremoves.' editing_zone: '&9Editing Subzone&co &6&o[subzone]' market: material: list: tripwire_hook unlist: tripwire_hook rented: tripwire_hook forrent: tripwire_hook sell: oak_sign unsell: oak_sign forsale: oak_sign display: list: '&aMake Rentable' unlist: '&aRemove from Market' rented: '&aCurrently Renting' forrent: '&aSpace for Rent' sell: '&aSell this Residence' unsell: '&aRemove from Market' forsale: '&aFor Sale' lore: tenant: '&9Currently rented by &6[renter]' due: '&9Renewal date&co &a[renewdate]' cost: '&9You will be debited &6[rentprice]' vacant: '&9Rentable for &6[rentprice]' unrent: '&fClick to unrent.' list: '&fClick to put this area up for rent.' unlist: '&fClick to remove from the market.' period: '&9Renews every &a[rentperiod] day(s).' newrent: '&fClick to rent this property.' evict: '&fClick to evict this tenant.' editing_zone: '&9Editing Subzone&co &6&o[subzone]'