Advertisement
omr__

Untitled

May 23rd, 2023 (edited)
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Market
  2. let getShopId = (block) => `${block.x}:${block.y}:${block.z}`;
  3. let getNmb = (str) => str.replace(/\D+/g, '');
  4. let getItemName = (str) => str.split(':')[1];
  5. let $DiamondUtilsApi = Java.loadClass('com.gmail.sneakdevs.diamondeconomy.DiamondUtils');
  6.  
  7. BlockEvents.rightClicked(event => {
  8.   let { server, player, item, block } = event;
  9.   let dm = $DiamondUtilsApi.getDatabaseManager();
  10.  
  11.   // Init data
  12.   if (!server.persistentData.shops) {
  13.     server.persistentData.shops = {};
  14.   }
  15.  
  16.   // Debug
  17.   if (player.isOp() && block.id.indexOf('jukebox') !== -1 && item.id.indexOf('command_block') !== -1) {
  18.     player.tell(Utils.server.persistentData.shops);
  19.     return;
  20.   }
  21.  
  22.   // Delete shop
  23.   if (player.isOp() && block.id.indexOf('sign') !== -1 && item.id.indexOf('command_block') !== -1) {
  24.     if (server.persistentData.shops[getShopId(block)]) {
  25.       delete server.persistentData.shops[getShopId(block)];
  26.       player.tell(`Shop was destroyed!`);
  27.       return;
  28.     }
  29.   }
  30.  
  31.   if (block.id.indexOf('sign') !== -1) {
  32.     let tradeAmount = JSON.parse(block.entityData.Text2).text;
  33.     let tradePrice = JSON.parse(block.entityData.Text3).text.split(':');
  34.     let shopID = getShopId(event.block);
  35.     let isShopExists = !!server.persistentData.shops[shopID];
  36.     let isAir = item.id.indexOf('minecraft:air') !== -1;
  37.     let isShop = JSON.parse(block.entityData.Text1).text === 'shop';
  38.  
  39.     if (isShop) {
  40.       // Create shop
  41.       if (player.isOp() && !isShopExists && !isAir) {
  42.         let entityData = event.block.entityData;
  43.         entityData.GlowingText = 1;
  44.         entityData.Color = 'orange';
  45.         event.block.setEntityData(entityData);
  46.  
  47.         server.persistentData.shops[shopID] = {
  48.           item: item.id,
  49.           owner: player.name.string
  50.         }
  51.         player.tell(`Shop with ${getItemName(item.id)} was created!`);
  52.         return;
  53.       }
  54.  
  55.       if (item.id === server.persistentData.shops[shopID].item) {
  56.         if (tradeAmount > item.count) {
  57.           player.tell(`You have not enought items in hand to sell!`);
  58.           return;
  59.         }
  60.  
  61.         player.tell(`You sold ${tradeAmount} ${getItemName(item.id)} for $${getNmb(tradePrice[0])}`);
  62.         player.inventory.extractItem(player.getSelectedSlot(), tradeAmount, false);
  63.         dm.changeBalance(player.uuid, getNmb(tradePrice[0]));
  64.         event.cancel();
  65.         return;
  66.       } else {
  67.         player.tell(`Shop of ${getItemName(server.persistentData.shops[shopID].item)}`);
  68.       }
  69.     }
  70.   }
  71. });
  72.  
  73. BlockEvents.leftClicked(event => {
  74.   let { server, player, item, block } = event;
  75.   let dm = $DiamondUtilsApi.getDatabaseManager();
  76.  
  77.   if (block.id.indexOf('sign') !== -1) {
  78.     let tradeAmount = JSON.parse(block.entityData.Text2).text;
  79.     let isShop = JSON.parse(block.entityData.Text1).text === 'shop';
  80.     let tradePrice = JSON.parse(block.entityData.Text3).text.split(':');
  81.     let shopID = getShopId(event.block);
  82.     let isShopExists = !!server.persistentData.shops[shopID];
  83.  
  84.     if (!isShop || !isShopExists) {
  85.       return;
  86.     }
  87.  
  88.     if (dm.getBalanceFromUUID(player.uuid) >= getNmb(tradePrice[1])) {
  89.       player.tell(`You bought ${tradeAmount} ${getItemName(server.persistentData.shops[shopID].item)} for $${getNmb(tradePrice[1])}`);
  90.       server.runCommandSilent(`give ${player.name.string} ${server.persistentData.shops[shopID].item} ${tradeAmount}`);
  91.       dm.changeBalance(player.uuid, `-${getNmb(tradePrice[1])}`);
  92.     } else {
  93.       player.tell('You have not enough $. Check balance with /coins balance');
  94.     }
  95.     event.cancel();
  96.   }
  97. });
  98.  
  99. BlockEvents.broken(event => {
  100.   let { server, player, item, block } = event;
  101.   if (block.id.indexOf('sign') !== -1) {
  102.     if (server.persistentData.shops[getShopId(block)]) {
  103.       // server.persistentData.shops[getShopId(block)].item = null;
  104.       player.tell(`Shop was destroyed!`);
  105.     }
  106.   }
  107.   //remove shop
  108. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement