From b5c7a6943a8af2515336c1d07f914b25f3bf2f56 Mon Sep 17 00:00:00 2001 From: sebseb7 Date: Thu, 6 Apr 2023 21:08:32 +0200 Subject: [PATCH] genesis --- 2000ticks.js | 271 +++++++++ craft.js | 1514 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1785 insertions(+) create mode 100644 2000ticks.js create mode 100644 craft.js diff --git a/2000ticks.js b/2000ticks.js new file mode 100644 index 0000000..ef77f2f --- /dev/null +++ b/2000ticks.js @@ -0,0 +1,271 @@ + +if (!World.isWorldLoaded()) JsMacros.waitForEvent('ChunkLoad'); + + +Chat.log('------------- tick event service started -----------'); + +const t20000Event = JsMacros.createCustomEvent('t20000'); +t20000Event.registerEvent(); +const t2000Event = JsMacros.createCustomEvent('t2000'); +t2000Event.registerEvent(); +const t200Event = JsMacros.createCustomEvent('t200'); +t200Event.registerEvent(); +const t40Event = JsMacros.createCustomEvent('t40'); +t40Event.registerEvent(); + +const d2d = Hud.createDraw2D(); +let infotext; +d2d.setOnInit(JavaWrapper.methodToJava(() => { + infotext = d2d.addText('', 0, d2d.getHeight() - 10, 0xFFFFFF, true); +})); +Hud.registerDraw2D(d2d); + + +/* +GlobalVars.putBoolean('autocraft',false); + +Chat.createCommandBuilder('autocraft').executes(JavaWrapper.methodToJavaAsync((e) => { + Chat.log('--------AUTO-CRAFT-------------------'); + Chat.log('interact with input container'); + let event = JsMacros.waitForEvent('InteractBlock'); + event.context.releaseLock(); + let inputBlock = event.event.block.getBlockPos(); + Chat.log(event.event.block.getBlockPos()+''); + Chat.log('interact with output container'); + event = JsMacros.waitForEvent('InteractBlock'); + event.context.releaseLock(); + Chat.log(event.event.block.getBlockPos()+''); + let outputBlock = event.event.block.getBlockPos(); + Chat.log('interact with crafting table'); + event = JsMacros.waitForEvent('InteractBlock'); + event.context.releaseLock(); + let craftBlock = event.event.block.getBlockPos(); + Chat.log(event.event.block.getBlockPos()+''); + event = JsMacros.waitForEvent('OpenContainer'); + event.context.releaseLock(); + + var recip = null; + var found = false; + for(let rec of event.event.inventory.getCraftableRecipes()){ + recip = rec; + found = true; + } + if(found == true){ + Chat.log('Recipe selected: '+recip.getId()); + Chat.log('To Make: '+recip.getOutput().getItemId()); + GlobalVars.putBoolean('autocraft',true); + GlobalVars.putString('autocraft_recipe',recip.getId()); + GlobalVars.putString('autocraft_result',recip.getOutput().getItemId()); + GlobalVars.putObject('autocraft_player',Player.getPlayer().getPos()); + GlobalVars.putObject('autocraft_input',inputBlock); + GlobalVars.putObject('autocraft_output',outputBlock); + GlobalVars.putObject('autocraft_craft',craftBlock); + } + + return true; +})).register(); +*/ +var counterA = 20000; +var counterB = 2000; +var counterC = 200; +var counterD = 40; + +var dirtmode = 'normal'; + +const tickListener = JsMacros.on("Tick", JavaWrapper.methodToJava(() => { + if(World.isWorldLoaded()){ + counterA--; + counterB--; + counterC--; + counterD--; + + const player = Player.getPlayer(); + if(player.getPos().toVector(PositionCommon.createPos(983.9,74.5,11782.5)).getMagnitude() < 0.5){ + if(player.getMainHand().getItemId() == 'minecraft:cocoa_beans'){ + if(World.getBlock(984,76,11782).getId() == 'minecraft:air'){ + player.interactBlock(984, 76, 11783, 2, false); + } + else if(World.getBlock(984,76,11782).getId() == 'minecraft:cocoa'){ + //player.attack(984, 76, 11782, 4); + }; + } + } + else if(player.getPos().toVector(PositionCommon.createPos(-753.5,85,-2221.5)).getMagnitude() < 0.5){ + if(player.getMainHand().getItemId() == 'minecraft:jungle_sapling'){ + if(World.getBlock(-753,86,-2221).getId() == 'minecraft:air'){ + player.interactBlock(-753, 85, -2221, 1, false); + + }; + } + } + else if(player.getPos().toVector(PositionCommon.createPos(903.5,78,11760.5)).getMagnitude() < 0.3){ + if(player.getMainHand().getItemId() == 'minecraft:acacia_sapling'){ + if(World.getBlock(901,79,11760).getId() == 'minecraft:piston'){ + if(World.getBlock(901,79,11757).getId() == 'minecraft:air'){ + if(World.getBlock(901,78,11757).getId() == 'minecraft:air'){ + player.interactBlock(901, 77, 11757, 1, false); + }; + }; + }; + } + else if(player.getMainHand().getItemId() == 'minecraft:jungle_sapling'){ + //if(World.getBlock(901,79,11760).getId() == 'minecraft:piston'){ + //if(World.getBlock(901,79,11757).getId() == 'minecraft:air'){ + if(World.getBlock(901,78,11757).getId() == 'minecraft:air'){ + player.interactBlock(901, 77, 11757, 1, false); + }; + //}; + //}; + } + else if(player.getMainHand().getItemId() == 'minecraft:birch_sapling'){ + //if(World.getBlock(901,79,11760).getId() == 'minecraft:piston'){ + //if(World.getBlock(901,79,11757).getId() == 'minecraft:air'){ + if(World.getBlock(901,78,11757).getId() == 'minecraft:air'){ + player.interactBlock(901, 77, 11757, 1, false); + }; + //}; + //}; + } + else if(player.getMainHand().getItemId() == 'minecraft:spruce_sapling'){ + //if(World.getBlock(901,79,11760).getId() == 'minecraft:piston'){ + //if(World.getBlock(901,79,11757).getId() == 'minecraft:air'){ + if(World.getBlock(901,78,11757).getId() == 'minecraft:air'){ + player.interactBlock(901, 77, 11757, 1, false); + }; + if(World.getBlock(901,78,11757).getId() == 'minecraft:spruce_sapling'){ + player.interactBlock(901, 77, 11757, 1, false); + }; + //}; + //}; + } + //check for air one south of the tree column + //else if(player.getMainHand().getItemId() == 'minecraft:oak_sapling'){ + //if(World.getBlock(901,79,11760).getId() == 'minecraft:piston'){ + //if(World.getBlock(901,79,11757).getId() == 'minecraft:air'){ + // if(World.getBlock(901,78,11757).getId() == 'minecraft:air'){ + // player.interactBlock(901, 77, 11757, 1, false); + // }; + // if(World.getBlock(901,78,11757).getId() == 'minecraft:spruce_sapling'){ + // player.interactBlock(901, 77, 11757, 1, false); + // }; + //}; + //}; + //} + } + //else if(player.getPos().toVector(PositionCommon.createPos(889.6,78,11800.5)).getMagnitude() < 0.5){ + else if(player.getPos().toVector(PositionCommon.createPos(888.3,77,11800.5)).getMagnitude() < 0.5){ + if(dirtmode == 'normal'){ + if(player.getMainHand().getItemId() == 'minecraft:azalea'){ + if(World.getBlock(890,79,11799).getId() == 'minecraft:air'){ + player.interactBlock(890, 78, 11799, 1, false); + const secsofday = (Math.round(Time.time()/1000))%(60*60*24); + if((secsofday > 3300)&&(secsofday < 3600)){ + player.interactBlock(888, 77, 11800, 1, false); + //Chat.log(secsofday); + Chat.say('#goto 882 70 11807'); + dirtmode = 'down1'; + } + if((secsofday > (43200+3300))&&(secsofday < (43200+3600))){ + player.interactBlock(888, 77, 11800, 1, false); + //Chat.log(secsofday); + Chat.say('#goto 882 70 11807'); + dirtmode = 'down1'; + } + }; + } + } + if(dirtmode == 'isdown'){ + player.interactBlock(888, 77, 11800, 1, false); + dirtmode = 'isdown2'; + } + } + else if(player.getPos().toVector(PositionCommon.createPos(882,70,11807)).getMagnitude() < 1.5){ + if(dirtmode == 'down1'){ + player.interactBlock(883, 72, 11807, 1, false); + dirtmode = 'down2'; + Chat.say('#goto 855 70 11801'); + } + } + else if(player.getPos().toVector(PositionCommon.createPos(855.6,70,11801.6)).getMagnitude() < 1.5){ + if(dirtmode == 'down2'){ + player.interactBlock(855, 72, 11800, 1, false); + dirtmode = 'isdown'; + Chat.say('#goto 888.5 77 11800.5'); + } + } + else if(player.getPos().toVector(PositionCommon.createPos(880.7,73,11760.5)).getMagnitude() < 0.5){ + if(player.getMainHand().getItemId() == 'minecraft:mangrove_propagule'){ + if(World.getBlock(879,78,11761).getId() == 'minecraft:air'){ + player.interactBlock(879, 77, 11761, 1, false); + + }; + } + } + + + + + const detected = GlobalVars.getString('detected'); + if(counterA%20==0){ + if(detected && detected == 'autocraft'){ + infotext?.setText('autocraft'); + }else if(detected && detected != 'none' && detected != 'trade'){ + infotext?.setText(detected+' '+(counterB/20)); + }else if(detected && detected == 'trade'){ + infotext?.setText('trade '+GlobalVars.getString('trade_item')+' '+GlobalVars.getString('trade_msg')); + }else{ + infotext?.setText(''); + } + } + if(counterA == 0){ + //t20000Event.trigger(); + counterA=20000; + if(detected && detected == 'none'){ + counterA=200; + }else{ + counterA=20000; + } + } + if(counterB == 0){ + t2000Event.trigger(); + if(detected && detected == 'none'){ + counterB=200; + }else{ + counterB=2000; + } + } + if(counterC == 0){ + t200Event.trigger(); + counterC=100; + } + if(counterD == 0){ + t40Event.trigger(); + counterD=40; + } + } + /*const zTarget = GlobalVars.getInt('zTarget'); + if(zTarget){ + const currZ = Player.getPlayer().getZ() + 0.5; + + if(Math.abs(currZ-zTarget) > 0.4){ + if(currZ-zTarget < 0){ + Player.clearInputs(); + Player.addInput(Player.createPlayerInput(0,1,90)); + }else{ + Player.clearInputs(); + Player.addInput(Player.createPlayerInput(0,-1,90)); + } + }else{ + GlobalVars.remove('zTarget'); + GlobalVars.putBoolean('zTarget_reached',true); + } + }*/ +})); + +event.stopListener = JavaWrapper.methodToJava(() => { + JsMacros.off(tickListener); + Hud.unregisterDraw2D(d2d); + Chat.log('------------- tick event service stopped -----------'); + //Chat.unregisterCommand('feed'); + return Client; +}); diff --git a/craft.js b/craft.js new file mode 100644 index 0000000..992fc6b --- /dev/null +++ b/craft.js @@ -0,0 +1,1514 @@ +/*global GlobalVars, Chat, Player, JsMacros, Time, World, PositionCommon, Client, KeyBind*/ + +let globQuant; + +function quantify(inv) { + let allitems = {}; + for (let i = 0; i < inv.getTotalSlots(); i++) { + if ( + inv.getLocation(i) === "main" || + inv.getLocation(i) === "hotbar" || + inv.getLocation(i) === "input" + ) { + let itemid = inv.getSlot(i).getItemId(); + + if (!allitems[itemid]) allitems[itemid] = 0; + allitems[itemid] += inv.getSlot(i).getCount(); + } + } + return allitems; +} + +function compare(inv1, inv2) { + let ids = {}; + for (let i in inv1) { + ids[i] = true; + } + for (let i in inv2) { + ids[i] = true; + } + + for (let i in ids) { + if (!inv1[i]) inv1[i] = 0; + if (!inv2[i]) inv2[i] = 0; + if (inv1[i] > inv2[i]) { + const number = inv1[i] - inv2[i]; + let counters = GlobalVars.getString("itemcounter"); + let itemcounter_tmp = JSON.parse(counters); + let itemcounter = {}; + for (let j in itemcounter_tmp) { + itemcounter[j] = itemcounter_tmp[j]; + } + let counter = itemcounter["T2_" + i.substring(10)] || 0; + const started = GlobalVars.getInt("started"); + const now = Math.floor(Date.now() / 1000); + const timePassed = now - started; + counter += number; + const itemsPerSecond = counter / timePassed; + itemcounter["T2_" + i.substring(10)] = counter; + GlobalVars.putString("itemcounter", JSON.stringify(itemcounter)); + Chat.log(number + " " + i.substring(10) + " placed"); + + Chat.log( + Chat.createTextBuilder() + .append("( total:" + counter + " / ") + .append( + Math.floor(itemsPerSecond * 60 * 60 * 100) / 100 + "" + ) + .withColor(0x5) + .append( + " per hour / active for: " + + Math.floor((timePassed / 6) * 10) / 100 + + " minutes )" + ) + .build() + ); + } + if (inv1[i] < inv2[i]) { + const number = inv2[i] - inv1[i]; + let counters = GlobalVars.getString("itemcounter"); + let itemcounter_tmp = JSON.parse(counters); + let itemcounter = {}; + for (let j in itemcounter_tmp) { + itemcounter[j] = itemcounter_tmp[j]; + } + let counter = itemcounter["T_" + i.substring(10)] || 0; + const started = GlobalVars.getInt("started"); + const now = Math.floor(Date.now() / 1000); + const timePassed = now - started; + counter += number; + const itemsPerSecond = counter / timePassed; + itemcounter["T_" + i.substring(10)] = counter; + GlobalVars.putString("itemcounter", JSON.stringify(itemcounter)); + Chat.log(number + " " + i.substring(10) + " taken"); + + Chat.log( + Chat.createTextBuilder() + .append("( total:" + counter + " / ") + .append( + Math.floor(itemsPerSecond * 60 * 60 * 100) / 100 + "" + ) + .withColor(0xd) + .append( + " per hour / active for: " + + Math.floor((timePassed / 6) * 10) / 100 + + " minutes )" + ) + .build() + ); + } + } +} +function compareT(inv1, inv2) { + let ids = {}; + for (let i in inv1) { + ids[i] = true; + } + for (let i in inv2) { + ids[i] = true; + } + + let trade_from = ""; + let trade_to = ""; + let trade_from_count = 0; + let trade_to_count = 0; + + for (let i in ids) { + if (!inv1[i]) inv1[i] = 0; + if (!inv2[i]) inv2[i] = 0; + } + for (let i in ids) { + if (inv1[i] > inv2[i]) { + trade_from = i.substring(10); + trade_from_count = inv1[i] - inv2[i]; + } + } + for (let i in ids) { + if (inv1[i] < inv2[i]) { + trade_to = i.substring(10); + trade_to_count = inv2[i] - inv1[i]; + } + } + + if (trade_to_count > 0) { + const trade_name = trade_from + "_to_" + trade_to; + const counters = GlobalVars.getString("itemcounterT"); + const itemcounter_tmp = JSON.parse(counters); + let itemcounter = {}; + for (let j in itemcounter_tmp) { + itemcounter[j] = itemcounter_tmp[j]; + } + let counter = itemcounter[trade_name] || 0; + const started = GlobalVars.getInt("started"); + const now = Math.floor(Date.now() / 1000); + const timePassed = now - started; + counter += trade_to_count; + const itemsPerSecond = counter / timePassed; + itemcounter[trade_name] = counter; + GlobalVars.putString("itemcounterT", JSON.stringify(itemcounter)); + Chat.log( + "traded " + + trade_from_count + + " " + + trade_from + + " for " + + trade_to_count + + " " + + trade_to + ); + let color = 0xd; + if (trade_name === "glass_bottle_to_emerald") color = 0xc; //l red + if (trade_name === "emerald_to_glass") color = 0xe; //yellow + if (trade_name === "paper_to_emerald") color = 0xa; //l green + if (trade_name === "flesh_to_emerald") color = 0xb; //cyan + if (trade_name === "emerald_to_redstone") color = 0x9; //l blue + if (trade_name === "emerald_to_experience_bottle") color = 0x2; //d green + + Chat.log( + Chat.createTextBuilder() + .append("( total:" + counter + " / ") + .append(Math.floor(itemsPerSecond * 60 * 60 * 100) / 100 + "") + .withColor(color) + .append( + " per hour / active for: " + + Math.floor((timePassed / 6) * 10) / 100 + + " minutes )" + ) + .build() + ); + } else { + Chat.log("empty trade"); + } +} + +function take(x, y, z) { + let player = Player.getPlayer(); + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv = Player.openInventory(); + + Time.sleep(120); + const before = quantify(inv); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "container") inv.quickAll(i); + } + compare(before, quantify(inv)); + + globQuant = quantify(inv); + inv.close(); +} + +function takeStacks(x, y, z, item, amount) { + let player = Player.getPlayer(); + let toTake = amount; + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv = Player.openInventory(); + + Time.sleep(120); + const before = quantify(inv); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "container") { + if (inv.getSlot(i).getItemId() === item) { + if (toTake > 0) { + inv.quick(i); + toTake--; + } + } + } + } + compare(before, quantify(inv)); + + globQuant = quantify(inv); + inv.close(); +} /* +function takeItems(x,y,z,item,amount){ + let player = Player.getPlayer(); + let toTake = amount; + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent('OpenContainer').context.releaseLock(); + const inv = Player.openInventory(); + + Time.sleep(200); + const before = quantify(inv); + for(var i=0;i 0){ + inv.quick(i); + toTake--; + } + } + } + }; + compare(before,quantify(inv)); + + globQuant = quantify(inv); + inv.close(); +} +*/ + +function craft(x, y, z, item) { + let player = Player.getPlayer(); + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv2 = Player.openInventory(); + Time.sleep(120); + + let found; + do { + found = false; + let recip = null; + if (inv2.getCraftableRecipes) + for (let rec of inv2.getCraftableRecipes()) { + // Chat.log(rec.getId()); + if (rec.getId() === "minecraft:" + item) { + recip = rec; + found = true; + } + } + if (found === true) { + Chat.log("crafting " + item + " ..."); + recip.craft(true); + inv2.quick(0); + } + Time.sleep(120); + } while (found === true); + + globQuant = quantify(inv2); + inv2.close(); +} +function craft_num(x, y, z, item, num) { + if (num > 0) { + let player = Player.getPlayer(); + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv2 = Player.openInventory(); + Time.sleep(120); + + Chat.log("crafting " + num + " " + item + " ..."); + + let recip = null; + let found = false; + for (let rec of inv2.getCraftableRecipes()) { + if (rec.getId() === "minecraft:" + item) { + recip = rec; + found = true; + } + } + + do { + if (found === true) { + recip.craft(false); + inv2.quick(0); + } + } while (--num > 0); + + Time.sleep(120); + + globQuant = quantify(inv2); + inv2.close(); + } +} +function craftSpecial(x, y, z) { + let player = Player.getPlayer(); + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv2 = Player.openInventory(); + Time.sleep(200); + + let filled3 = false; + let filled5 = false; + let filled6 = false; + let filled9 = false; + + for (let i = 10; i < inv2.getTotalSlots(); i++) { + // Chat.log(i+' '+inv2.getLocation(i)); + if (!filled3) { + if (inv2.getSlot(i).getItemId() === "minecraft:gunpowder") { + inv2.swap(i, 3); + filled3 = true; + } + } else if (!filled6) { + if (inv2.getSlot(i).getItemId() === "minecraft:gunpowder") { + inv2.swap(i, 6); + filled6 = true; + } + } else if (!filled9) { + if (inv2.getSlot(i).getItemId() === "minecraft:gunpowder") { + inv2.swap(i, 9); + filled9 = true; + } + } + if (!filled5) { + if (inv2.getSlot(i).getItemId() === "minecraft:paper") { + inv2.swap(i, 5); + filled5 = true; + } + } + /* + if((inv2.getLocation(i) == 'main')||(inv3.getLocation(i) == 'hotbar')){ + if(inv3.getSlot(i).getItemId() == 'minecraft:'+item){ + inv3.quickAll(i); + break; + } + }*/ + } + + inv2.quickAll(0); + + globQuant = quantify(inv2); + inv2.close(); +} + +function put(x, y, z, item) { + let player = Player.getPlayer(); + player.interactBlock(x, y, z, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv3 = Player.openInventory(); + Time.sleep(200); + + const before = quantify(inv3); + for (let i = 0; i < inv3.getTotalSlots(); i++) { + if ( + inv3.getLocation(i) === "main" || + inv3.getLocation(i) === "hotbar" + ) { + if (inv3.getSlot(i).getItemId() === "minecraft:" + item) { + inv3.quickAll(i); + break; + } + } + } + + compare(before, quantify(inv3)); + globQuant = quantify(inv3); + inv3.close(); +} + +function trade(tradepos, tradelane, reach) { + let trade_good_flesh = GlobalVars.getBoolean("trade_good_flesh"); + let trade_good_bottle = GlobalVars.getBoolean("trade_good_bottle"); + let trade_good_paper = GlobalVars.getBoolean("trade_good_paper"); + + let emerald = GlobalVars.getInt("emerald"); + let redstone = GlobalVars.getInt("redstone"); + let paper = GlobalVars.getInt("paper"); + let xp = GlobalVars.getInt("xp"); + let glass = GlobalVars.getInt("glass"); + let flesh = GlobalVars.getInt("flesh"); + const bottle = GlobalVars.getInt("bottle"); + let mode = "none"; + + /* for(const e of World.getEntities()){ + if(e.getPos().toVector(PositionCommon.createPos(947,75.5,11850.5)).getMagnitude() < 0.2){ + if(e.getType() == 'minecraft:item_frame'){ + mode = e.getItem().getItemId().substring(10); + GlobalVars.putString('trade_item',mode); + } + } + } + */ + //GlobalVars.putString('trade_item','experience_bottle'); + //mode = 'experience_bottle'; + //GlobalVars.putString('trade_item','emerald'); + //mode = 'emerald'; + //GlobalVars.putString('trade_item','glass'); + //mode = 'glass'; + GlobalVars.putString("trade_item", "redstone"); + mode = "redstone"; + + if ( + !( + mode !== "emerald" && + mode !== "redstone" && + mode !== "glass" && + mode !== "experience_bottle" + ) + ) { + for (const e of World.getEntities()) { + if ( + trade_good_bottle || + mode === "emerald" || + mode === "glass" || + (mode === "redstone" && emerald < 256) || + (mode === "experience_bottle" && emerald < 256) + ) { + /*if(e.getPos().toVector(player.getPos()).getMagnitude() < 3){ + if(e.getType() == 'minecraft:villager'){ + Chat.log(e.getPos()); + } + + }*/ + if ( + e + .getPos() + .toVector( + PositionCommon.createPos( + 937.5 + tradelane, + 70, + 11852.5 - tradepos * 2 + ) + ) + .getMagnitude() < 1 + ) { + if (e.getType() === "minecraft:villager") { + const uuid = e.getUUID(); + const old_uuid = GlobalVars.getString("last_lib"); + if (old_uuid === uuid) { + //skip + } else { + GlobalVars.putString("last_lib", uuid); + player.interactEntity(e, false); + const ev = JsMacros.waitForEvent("OpenContainer"); + ev.context.releaseLock(); + Time.sleep(200); + const inv = ev.event.inventory; + const trades = inv ? inv.getTrades() : []; + let found = false; + let index = 0; + for (const tr in trades) { + if ( + trades[tr].getInput()[0].getItemId() === + "minecraft:paper" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() <= 4 + ) { + if ( + emerald < 256 || + mode === "emerald" + ) { + if (paper >= 16) { + found = true; + index = tr; + } + if (!trade_good_paper) { + GlobalVars.putBoolean( + "trade_good_paper", + true + ); + trade_good_paper = true; + } + } + //Chat.log("paper"); + } else { + //Chat.log("paper too expensive:" + trades[tr].getInput()[0].getCount()); + } + } else { + //Chat.log("paper no stock"); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + } + } + compareT(before1, quantify(inv)); + } + found = false; + if (glass < 576) + for (const tr in trades) { + if ( + trades[tr].getOutput().getItemId() === + "minecraft:glass" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() === 1 + ) { + if ( + mode === "glass" || + (trade_good_bottle && + bottle < 128) + ) { + if (emerald >= 16) { + found = true; + index = tr; + } + } + } else { + //Chat.log('glass too expensive'); + } + } else { + //Chat.log('glass no stock'); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + } + } + compareT(before1, quantify(inv)); + } + + const before = quantify(inv); + globQuant = quantify(inv); + inv.close(); + if (!before["minecraft:emerald"]) + before["minecraft:emerald"] = 0; + if (!before["minecraft:glass_bottle"]) + before["minecraft:glass_bottle"] = 0; + if (!before["minecraft:rotten_flesh"]) + before["minecraft:rotten_flesh"] = 0; + if (!before["minecraft:redstone"]) + before["minecraft:redstone"] = 0; + if (!before["minecraft:paper"]) + before["minecraft:paper"] = 0; + if (!before["minecraft:glass"]) + before["minecraft:glass"] = 0; + GlobalVars.putInt( + "glass", + before["minecraft:glass"] + ); + glass = before["minecraft:glass"]; + GlobalVars.putInt( + "paper", + before["minecraft:paper"] + ); + paper = before["minecraft:paper"]; + GlobalVars.putInt( + "emerald", + before["minecraft:emerald"] + ); + emerald = before["minecraft:emerald"]; + GlobalVars.putInt( + "redstone", + before["minecraft:redstone"] + ); + redstone = before["minecraft:redstone"]; + flesh = before["minecraft:rotten_flesh"]; + GlobalVars.putInt( + "bottle", + before["minecraft:glass_bottle"] + ); + GlobalVars.putInt( + "flesh", + before["minecraft:rotten_flesh"] + ); + Time.sleep(100); + } + } + } + } + if ( + e + .getPos() + .toVector( + PositionCommon.createPos( + 941.5 + tradelane, + 70, + 11852.5 - tradepos * 2 + ) + ) + .getMagnitude() < 1 + ) { + if (e.getType() === "minecraft:villager") { + const uuid = e.getUUID(); + const old_uuid = GlobalVars.getString("last_cleric"); + if (old_uuid === uuid) { + //skip + } else { + GlobalVars.putString("last_cleric", uuid); + player.interactEntity(e, false); + const ev = JsMacros.waitForEvent("OpenContainer"); + ev.context.releaseLock(); + Time.sleep(100); + const inv = ev.event.inventory; + const trades = inv.getTrades(); + let found = false; + let index = 0; + if (emerald < 256 || mode === "emerald") { + for (const tr in trades) { + if ( + trades[tr].getInput()[0].getItemId() === + "minecraft:rotten_flesh" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() < 9 + ) { + if (flesh >= 16) { + found = true; + index = tr; + } + if (!trade_good_flesh) { + GlobalVars.putBoolean( + "trade_good_flesh", + true + ); + trade_good_flesh = true; + } + } else { + //Chat.log('flesh too expensive'); + } + } else { + //Chat.log('flesh no stock'); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + } + } + compareT(before1, quantify(inv)); + } + found = false; + } + if (mode === "redstone" && emerald >= 12) { + for (const tr in trades) { + if ( + trades[tr].getOutput().getItemId() === + "minecraft:redstone" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() < 3 + ) { + if (emerald >= 12) { + found = true; + index = tr; + } + } else { + //Chat.log('redstone too expensive'); + } + } else { + //Chat.log('redstone no stock'); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + //Chat.log('** redstone traded'); + } + } + compareT(before1, quantify(inv)); + } + found = false; + } + if (mode === "experience_bottle" && emerald >= 16) { + for (const tr in trades) { + if ( + trades[tr].getOutput().getItemId() === + "minecraft:experience_bottle" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() <= 2 + ) { + //maximum xp bottle price (3 == 1100) + if (emerald >= 12) { + found = true; + index = tr; + } + } else { + //Chat.log('xp too expensive'); + } + } else { + //Chat.log('xp no stock'); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + //Chat.log('** redstone traded'); + } + } + compareT(before1, quantify(inv)); + } + found = false; + } + if (emerald < 256 || mode === "emerald") { + for (const tr in trades) { + if ( + trades[tr].getInput()[0].getItemId() === + "minecraft:glass_bottle" + ) { + if (trades[tr].isAvailable() === true) { + if ( + trades[tr] + .getInput()[0] + .getCount() === 1 + ) { + if (bottle > 16) { + found = true; + index = tr; + } + if (!trade_good_bottle) { + GlobalVars.putBoolean( + "trade_good_bottle", + true + ); + trade_good_bottle = true; + } + } else { + //Chat.log('bottle too expensive'); + } + } else { + //Chat.log('bottle no stock'); + } + } + } + if (found === true) { + const before1 = quantify(inv); + inv.selectTrade(index); + for (let i = 0; i < inv.getTotalSlots(); i++) { + if (inv.getLocation(i) === "output") { + inv.quickAll(i); + } + } + compareT(before1, quantify(inv)); + } + } + const before = quantify(inv); + globQuant = quantify(inv); + inv.close(); + if (!before["minecraft:experience_bottle"]) + before["minecraft:experience_bottle"] = 0; + if (!before["minecraft:emerald"]) + before["minecraft:emerald"] = 0; + if (!before["minecraft:glass_bottle"]) + before["minecraft:glass_bottle"] = 0; + if (!before["minecraft:rotten_flesh"]) + before["minecraft:rotten_flesh"] = 0; + if (!before["minecraft:redstone"]) + before["minecraft:redstone"] = 0; + if (!before["minecraft:paper"]) + before["minecraft:paper"] = 0; + if (!before["minecraft:glass"]) + before["minecraft:glass"] = 0; + GlobalVars.putInt("glass", before["minecraft:glass"]); + glass = before["minecraft:glass"]; + GlobalVars.putInt("paper", before["minecraft:paper"]); + paper = before["minecraft:paper"]; + GlobalVars.putInt( + "emerald", + before["minecraft:emerald"] + ); + emerald = before["minecraft:emerald"]; + GlobalVars.putInt( + "redstone", + before["minecraft:redstone"] + ); + redstone = before["minecraft:redstone"]; + flesh = before["minecraft:rotten_flesh"]; + xp = before["minecraft:experience_bottle"]; + GlobalVars.putInt( + "bottle", + before["minecraft:glass_bottle"] + ); + GlobalVars.putInt( + "flesh", + before["minecraft:rotten_flesh"] + ); + GlobalVars.putInt( + "xp", + before["minecraft:experience_bottle"] + ); + Time.sleep(100); + } + } + } + } + + if (reach) { + if (mode === "emerald") { + if (emerald > 88 && tradepos === 1 && tradelane === 0) { + //if(((bottle >=64)&&(trade_good_bottle))||(!trade_good_bottle)){ + //Chat.log('should put away blocks'); + craft( + 938 + tradelane, + 72, + 11851 - tradepos * 2, + "emerald_block" + ); + //only put when crafting successful + put(940, 71, 11852, "emerald_block"); + const inv = Player.openInventory(); + const before = quantify(inv); + if (!before["minecraft:emerald"]) + before["minecraft:emerald"] = 0; + GlobalVars.putInt("emerald", before["minecraft:emerald"]); + emerald = before["minecraft:emerald"]; + globQuant = quantify(inv); + inv.close(); + + //} + } + } + if (redstone > 88) { + craft( + 938 + tradelane, + 72, + 11851 - tradepos * 2, + "redstone_block" + ); + } + if (tradepos === 1 && tradelane === 0) { + put(940, 71, 11852, "redstone_block"); + } + if (xp > 88 && tradepos === 1 && tradelane === 0) { + put(940, 71, 11852, "experience_bottle"); + } + if (paper < 64 && trade_good_paper) { + //Chat.log('should take paper'); + takeStacks( + 938, + 72, + 11852 - tradepos * 2, + "minecraft:sugar_cane", + 3 + ); + //return count from takeStacks and only craft when sugar_cane found + craft(938 + tradelane, 72, 11851 - tradepos * 2, "paper"); + + const inv = Player.openInventory(); + const before = quantify(inv); + if (!before["minecraft:paper"]) before["minecraft:paper"] = 0; + GlobalVars.putInt("paper", before["minecraft:paper"]); + paper = before["minecraft:paper"]; + globQuant = quantify(inv); + inv.close(); + } + if (bottle < 128 && trade_good_bottle) { + if (glass >= 3) { + craft( + 938 + tradelane, + 72, + 11851 - tradepos * 2, + "glass_bottle" + ); + } + } + if (glass > 88 && tradepos === 1 && tradelane === 0) { + if (mode === "glass") { + put(940, 71, 11852, "glass"); + } + } + if (flesh < 128 && trade_good_flesh) { + //Chat.log('should take flesh'); + //takeStacks(946,74,11849,'minecraft:rotten_flesh',3); + } + if ( + (mode === "experience_bottle" || mode === "glass") && + emerald < 32 + ) { + //Chat.log('should take emerald'); + //takeStacks(946,74,11849,'minecraft:emerald_block',1); + //return count from takeStacks and only craft when blocks found + //craft(946,75,11847,'emerald'); + } + } + } +} + +let player = Player.getPlayer(); +const dim = World.getDimension(); + +let farm = "none"; + +let pdetect = false; +for (const e of World.getEntities()) { + if (e.getType() === "minecraft:player") { + let name = e.getName().getString(); + if ( + !( + name === "DLuKz_" || + name === "sebgreenbus" || + name === "craftery85" || + name === "Thuxx_" + ) + ) { + Chat.log("presence detected: " + name); + pdetect = true; + } + } +} + +if ( + player + .getPos() + .toVector(PositionCommon.createPos(180, 85, 247)) + .getMagnitude() < 20 +) { + const testBlock = World.getBlock(180, 85, 247).getId(); + if (testBlock === "minecraft:terracotta") { + Chat.log("lobby"); + KeyBind.key("key.keyboard.1", true); + Client.waitTick(); + player.attack(); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv2 = Player.openInventory(); + Time.sleep(200); + for (let i = 0; i < inv2.getTotalSlots(); i++) { + if (inv2.getSlot(i).getItemId() === "minecraft:oak_sapling") { + inv2.click(i); + break; + } + } + } +} + +if (pdetect === false) { + if (dim === "minecraft:overworld") { + if ( + player + .getPos() + .toVector(PositionCommon.createPos(883, 72, 11797)) + .getMagnitude() < 1.5 + ) { + farm = "terracotta"; + if (event.eventName === "t2000") { + Chat.log( + Chat.createTextBuilder() + .append("[") + .withColor(0x7) + .append("MacroBot") + .withColor(0x2) + .append("]") + .withColor(0x7) + .build() + ); + take(883, 73, 11795); + craft(883, 74, 11795, "clay"); + put(882, 74, 11794, "clay"); + } + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-764.5, 71, -2308)) + .getMagnitude() < 1.5 + ) { + farm = "iron"; + if (event.eventName === "t2000") { + Chat.log( + Chat.createTextBuilder() + .append("[") + .withColor(0x7) + .append("MacroBot") + .withColor(0x2) + .append("]") + .withColor(0x7) + .build() + ); + take(-767, 71, -2309); + craft(-765, 70, -2310, "iron_block"); + //put(-767,74,-2308,'iron_block'); + } + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-733, 71, -2219)) + .getMagnitude() < 1.5 + ) { + //farm = 'bonemeal'; + //if(event.eventName == 't2000'){ + // Chat.log(Chat.createTextBuilder().append("[").withColor(0x7).append("MacroBot").withColor(0x2).append("]").withColor(0x7).build()); + // take(-732,71,-2218); + // craft(-735,71,-2218,'bone_block'); + // put(-734,72,-2217,'bone_block'); + //} + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(37.5, 81, 11930.5)) + .getMagnitude() < 1.5 + ) { + farm = "blue"; + if (event.eventName === "t2000") { + Chat.log( + Chat.createTextBuilder() + .append("[") + .withColor(0x7) + .append("MacroBot") + .withColor(0x2) + .append("]") + .withColor(0x7) + .build() + ); + take(35, 81, 11930); + craft(35, 81, 11931, "blue_dye_from_cornflower"); + put(36, 81, 11928, "blue_dye"); + } + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(981.1, 70, 11895.5)) + .getMagnitude() < 0.4 + ) { + //let autocraft = GlobalVars.getBoolean('autocraft'); + //if(autocraft){ + // if(! player.isSleeping()){ + if (player.getMainHand().getItemId() === "minecraft:elytra") { + farm = "autocraft"; + if (event.eventName === "t200") { + //takeStacks(983,72,11897,'minecraft:bone_meal',10); + //put(978,71,11896,'gray_dye'); + + takeStacks(983, 72, 11897, "minecraft:bone", 9); + craft(979, 70, 11894, "bone_meal"); + craft(979, 70, 11894, "bone_block"); + + /* + takeStacks(983,72,11897,'minecraft:gunpowder',9); + takeStacks(978,72,11897,'minecraft:sugar_cane',3); + craft(979,70,11894,'paper'); + craftSpecial(979,70,11894); + craftSpecial(979,70,11894); + craftSpecial(979,70,11894); + */ + + //put(978,71,11896,'lime_dye'); + //craft(979,70,11894,'yellow_dye_from_sunflower'); + //craft(979,70,11894,'red_dye_from_rose_bush'); + //craft(979,70,11894,'black_dye_from_wither_rose'); + //craft(979,70,11894,'gray_dye'); + //craft(979,70,11894,'light_gray_dye_from_gray_white_dye'); + //craft(979,70,11894,'yellow_dye_from_sunflower'); + //craft(979,70,11894,'orange_dye_from_red_yellow'); + + //put(978,71,11896,'firework_rocket'); + + put(978, 71, 11896, "bone_block"); + + // if(player.getPos().toVector(GlobalVars.getObject('autocraft_player')).getMagnitude() < 1){ + // let input = GlobalVars.getObject('autocraft_input'); + // let output = GlobalVars.getObject('autocraft_output'); + // let craftB = GlobalVars.getObject('autocraft_craft'); + // take(input.getX(),input.getY(),input.getZ()); + // craft(craftB.getX(),craftB.getY(),craftB.getZ(),GlobalVars.getString('autocraft_recipe').substring(10)); + // put(output.getX(),output.getY(),output.getZ(),GlobalVars.getString('autocraft_result').substring(10)); + // } + } + } else { + farm = "autocraft_nosword"; + // GlobalVars.putBoolean('autocraft',false); + // Chat.log('ending autocraft - no diamond_sword'); + } + } + + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-11523.5, 268, -3583)) + .getMagnitude() < 0.4 + ) { + let armor = false; + for (const e of World.getEntities()) { + if (e.getType() === "minecraft:armor_stand") { + armor = true; + } + } + if (!armor) { + Chat.log("dispensing armor stand"); + player.interactBlock(-11525, 270, -3583, 2, false, true); + } + } + + if ( + player + .getPos() + .toVector(PositionCommon.createPos(887, 70, 11828.5)) + .getMagnitude() < 0.4 + ) { + farm = "masscraft"; + if ( + event.eventName === "t200" && + GlobalVars.getBoolean("craft_lock") === false + ) { + GlobalVars.putBoolean("craft_lock", true); + /*put(884, 71, 11830, "dispenser"); + if (!globQuant["minecraft:cobblestone"] || globQuant["minecraft:cobblestone"] < 112) { + if (!globQuant["minecraft:cobblestone"] || globQuant["minecraft:cobblestone"] > 48) { + takeStacks(889, 71, 11826, "minecraft:cobblestone", 1); + } else { + takeStacks(889, 71, 11826, "minecraft:cobblestone", 2); + } + } + if (!globQuant["minecraft:cobblestone"] || globQuant["minecraft:cobblestone"] < 112) { + takeStacks(889, 71, 11826, "minecraft:cobblestone", 2); + } + if (!globQuant["minecraft:redstone"] || globQuant["minecraft:redstone"] < 16) { + takeStacks(884, 71, 11826, "minecraft:redstone", 1); + } + if (!globQuant["minecraft:string"] || globQuant["minecraft:string"] < 48) { + takeStacks(889, 71, 11830, "minecraft:string", 1); + } + if (!globQuant["minecraft:stick"] || globQuant["minecraft:stick"] < 48) { + takeStacks(889, 71, 11830, "minecraft:oak_log", 1); + craft(886, 71, 11830, "oak_planks"); + craft(886, 71, 11830, "stick"); + } + var bows = globQuant["minecraft:bow"] || 0; + craft_num(886, 71, 11830, "bow", 8 - bows); + craft_num(886, 71, 11830, "dispenser", 8); + bows = globQuant["minecraft:bow"] || 0; + put(884, 71, 11830, "dispenser");*/ + + /* put(884,71,11830,'dropper'); + takeStacks(889,71,11826,'minecraft:cobblestone',9); + if(! globQuant['minecraft:redstone'] || globQuant['minecraft:redstone'] < 83){ + takeStacks(884,71,11826,'minecraft:redstone',2); + } + craft(886,71,11830,'dropper'); + put(884,71,11830,'dropper'); + */ + + /* + put(884, 71, 11830, 'piston'); + if (!globQuant['minecraft:birch_planks'] || globQuant['minecraft:birch_planks'] < (64*3)) { + takeStacks(889, 71, 11830, 'minecraft:birch_log', 1); + craft(886, 71, 11830, 'birch_planks'); + } + takeStacks(889, 71, 11826, "minecraft:cobblestone", 4); + takeStacks(884, 71, 11826, "minecraft:redstone", 1); + if (!globQuant['minecraft:iron_ingot'] || globQuant['minecraft:iron_ingot'] < 64) { + takeStacks(887, 72, 11824, 'minecraft:iron_ingot',1); + } + if (!globQuant['minecraft:iron_ingot'] || globQuant['minecraft:iron_ingot'] < 64) { + takeStacks(888, 72, 11824, 'minecraft:iron_block', 1); + craft(886, 71, 11830, 'iron_ingot_from_iron_block'); + put(887, 72, 11824, 'iron_ingot'); + } + if (!globQuant['minecraft:iron_ingot'] || globQuant['minecraft:iron_ingot'] < 64) { + takeStacks(887, 72, 11824, 'minecraft:iron_ingot',1); + } + + craft(886,71,11830,'piston'); + put(884,71,11830,'piston'); + + +*/ + /* + put(884, 71, 11830, 'observer'); + if (!globQuant["minecraft:cobblestone"] || globQuant["minecraft:cobblestone"] < (64 * 18)) { + takeStacks(889, 71, 11826, "minecraft:cobblestone", 18); + } + if (!globQuant["minecraft:redstone"] || globQuant["minecraft:redstone"] < (64 * 6)) { + takeStacks(884, 71, 11826, "minecraft:redstone", 6); + } + if (!globQuant["minecraft:quartz"] || globQuant["minecraft:quartz"] < (64 * 3)) { + takeStacks(889, 71, 11830, 'minecraft:quartz', 3); + } + if (!globQuant["minecraft:cobblestone"] || globQuant["minecraft:cobblestone"] < (64 * 18)) { + takeStacks(889, 71, 11826, "minecraft:cobblestone", Math.round(((64*18)-globQuant["minecraft:cobblestone"])/64)); + } + if (!globQuant["minecraft:redstone"] || globQuant["minecraft:redstone"] < (64 * 6)) { + takeStacks(884, 71, 11826, "minecraft:redstone", Math.round(((64 * 6) - globQuant["minecraft:redstone"]) / 64)); + } + craft(886,71,11830,'observer'); + put(884,71,11830,'observer'); +*/ + + /*takeStacks(884, 71, 11826, "minecraft:redstone_block", 3); + craft(886, 71, 11830, "redstone"); + put(884, 71, 11830, "redstone"); + */ + + /* put(884, 71, 11830, 'repeater'); + if (!globQuant["minecraft:stone"] || globQuant["minecraft:stone"] < (64 * 9)) { + takeStacks(889, 71, 11826, "minecraft:stone", 9); + } + if (!globQuant["minecraft:redstone"] || globQuant["minecraft:redstone"] < (64 * 9)) { + Chat.log(Math.round(((64 * 9) - (globQuant["minecraft:redstone"]||0)) / 64)); + takeStacks(884, 71, 11826, "minecraft:redstone", Math.round(((64 * 9) - (globQuant["minecraft:redstone"]||0)) / 64)); + } + if (!globQuant["minecraft:redstone_torch"] || globQuant["minecraft:redstone_torch"] < (64 * 6)) { + if (!globQuant["minecraft:stick"] || globQuant["minecraft:stick"] < (64 * 6)) { + if (!globQuant["minecraft:birch_planks"] || globQuant["minecraft:birch_planks"] < (64 * 4s)) { + if (!globQuant["minecraft:birch_log"] || globQuant["minecraft:birch_log"] < (64)) { + takeStacks(889, 71, 11830, "minecraft:birch_log", 1); + } + craft(886, 71, 11830, "birch_planks"); + } + craft(886, 71, 11830, "stick"); + } + craft(886, 71, 11830, "redstone_torch"); + } + craft(886, 71, 11830, "repeater"); + put(884, 71, 11830, 'repeater');*/ + /* + put(884, 71, 11830, "comparator"); + + if (!globQuant["minecraft:stone"] || globQuant["minecraft:stone"] < 64 * 9) { + takeStacks(889, 71, 11826, "minecraft:stone", 9); + } + if (!globQuant["minecraft:redstone_torch"] || globQuant["minecraft:redstone_torch"] < 64 * 9) { + takeStacks(884, 71, 11826, "minecraft:redstone_torch", 9); + } + if (!globQuant["minecraft:quartz"] || globQuant["minecraft:quartz"] < (64*3)) { + takeStacks(889, 71, 11830, "minecraft:quartz", 3); + } + + craft(886, 71, 11830, "comparator"); + put(884, 71, 11830, "comparator"); +*/ + + /*put(884, 71, 11830, "chest"); + takeStacks(889, 71, 11830, "minecraft:crimson_stem", 9); + craft(886, 71, 11830, "crimson_planks"); + craft(886, 71, 11830, "chest"); + put(884, 71, 11830, "chest");*/ + + put(884, 71, 11830, "hopper"); + if ( + !globQuant["minecraft:chest"] || + globQuant["minecraft:chest"] < 64 * 3 + ) { + takeStacks(889, 71, 11830, "minecraft:chest", 3); + } + if ( + !globQuant["minecraft:iron_ingot"] || + globQuant["minecraft:iron_ingot"] < 64 * 15 + ) { + if ( + !globQuant["minecraft:iron_block"] || + globQuant["minecraft:iron_block"] < 64 * 2 + ) { + takeStacks(884, 71, 11826, "minecraft:iron_block", 2); + } + craft(886, 71, 11830, "iron_ingot_from_iron_block"); + } + craft(886, 71, 11830, "hopper"); + + put(884, 71, 11830, "hopper"); + + /*put(884, 71, 11830, "redstone_torch"); + if (!globQuant["minecraft:redstone"] || globQuant["minecraft:redstone"] < 64 * 9) { + takeStacks(884, 71, 11826, "minecraft:redstone", Math.round((64 * 9 - (globQuant["minecraft:redstone"] || 0)) / 64)); + } + if (!globQuant["minecraft:stick"] || globQuant["minecraft:stick"] < 64 * 9) { + if (!globQuant["minecraft:birch_planks"] || globQuant["minecraft:birch_planks"] < 64 * 5) { + if (!globQuant["minecraft:birch_log"] || globQuant["minecraft:birch_log"] < 64) { + takeStacks(889, 71, 11830, "minecraft:birch_log", 2); + } + craft(886, 71, 11830, "birch_planks"); + } + craft(886, 71, 11830, "stick"); + } + craft(886, 71, 11830, "redstone_torch"); + put(884, 71, 11830, "redstone_torch");*/ + + /*put(884, 71, 11830, "target"); + if (!globQuant["minecraft:hay_block"]) { + takeStacks(889, 71, 11830, "minecraft:hay_block", 4); + } + if (globQuant["minecraft:hay_block"] < 256) { + takeStacks(889, 71, 11830, "minecraft:hay_block", Math.round((256 - globQuant["minecraft:hay_block"]) / 64)); + } + if (!globQuant["minecraft:redstone"]) { + takeStacks(884, 71, 11826, "minecraft:redstone", 16); + } + if (globQuant["minecraft:redstone"] < 1024) { + takeStacks(884, 71, 11826, "minecraft:redstone", Math.round((1024 - globQuant["minecraft:redstone"]) / 64)); + } + if (globQuant["minecraft:redstone"] < 1024) { + takeStacks(884, 71, 11826, "minecraft:redstone", Math.round((1024 - globQuant["minecraft:redstone"]) / 64)); + } + craft(886, 71, 11830, "target"); + put(884, 71, 11830, "target");*/ + + GlobalVars.putBoolean("craft_lock", false); + } + } + + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-703.5, 70, -2221.5)) + .getMagnitude() < 0.6 + ) { + farm = "lava"; + const cState = World.getBlock(-708, 71, -2222).getId(); + if (cState === "minecraft:lava_cauldron") { + if (player.getMainHand().getItemId() === "minecraft:bucket") + player.interactBlock(-708, 71, -2222, 4, false); + } + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-1211.5, 184, 3650.6)) + .getMagnitude() < 1.5 + ) { + farm = "brew"; + //brew(-1210,185,3650); + } + if ( + player.getZ() > 11800 && + player.getZ() < 11852 && + player.getY() >= 69 && + player.getY() < 71 && + player.getX() > 938 && + player.getX() < 946 + ) { + farm = "trade"; + let tradelane = 0; + if (player.getX() > 944) { + tradelane = 6; + } + + let last_trade_pos = GlobalVars.getInt("last_trade_pos"); + let last_tradelane = GlobalVars.getInt("last_tradelane"); + let z = player.getZ(); + let x = player.getX(); + let y = player.getY(); + let trade_pos = (11852 - Math.floor(z)) / 2; + let diff = Math.abs(11852 - trade_pos * 2 - z + 0.5); + //Chat.log(trade_pos+' '+x+' '+y+' '+diff+' '+last_trade_pos); + + if ( + trade_pos % 2 === 1 && + (Math.abs(939.5 - x) < 0.2 || Math.abs(945.5 - x) < 0.2) && + y > 70.1 && + y < 70.6 && + diff < 0.4 && + (last_trade_pos !== trade_pos || last_tradelane !== tradelane) + ) { + //Chat.log(trade_pos+' '+diff); + GlobalVars.putInt("last_trade_pos", trade_pos); + GlobalVars.putInt("last_tradelane", tradelane); + + //if(GlobalVars.getBoolean('trade_lock') == true){ + //}else{ + // GlobalVars.putBoolean('trade_lock',true); + GlobalVars.putInt("trade_pos", trade_pos); + trade(trade_pos, tradelane, true); + trade(trade_pos + 1, tradelane, false); + //trade(trade_pos+1,false); + // GlobalVars.putBoolean('trade_lock',false); + //} + } + } + } + + if (dim === "minecraft:the_nether") { + if ( + player + .getPos() + .toVector(PositionCommon.createPos(80.5, 246, -94)) + .getMagnitude() < 1.5 + ) { + farm = "bartering"; + if (event.eventName === "t2000") { + Chat.log( + Chat.createTextBuilder() + .append("[") + .withColor(0x7) + .append("MacroBot") + .withColor(0x2) + .append("]") + .withColor(0x7) + .build() + ); + take(78, 246, -95); + craft(78, 247, -96, "gold_ingot_from_nuggets"); + put(78, 246, -96, "gold_ingot"); + //craft(78,247,-96,'gold_block'); + //put(79,246,-97,'gold_block'); + } + } + if ( + player + .getPos() + .toVector(PositionCommon.createPos(-1438.5, 250, -448)) + .getMagnitude() < 1.0 + ) { + farm = "bartering2"; + if (event.eventName === "t200") { + Chat.log( + Chat.createTextBuilder() + .append("[") + .withColor(0x7) + .append("MacroBot") + .withColor(0x2) + .append("]") + .withColor(0x7) + .build() + ); + player.lookAt(0, -8); + craft(-1439, 251, -446, "gold_ingot_from_nuggets"); + player.interactBlock(-1439, 251, -446, 0, false, true); + JsMacros.waitForEvent("OpenContainer").context.releaseLock(); + const inv3 = Player.openInventory(); + Time.sleep(200); + const before = quantify(inv3); + let closed = false; + for (let i = 0; i < inv3.getTotalSlots(); i++) { + if ( + inv3.getLocation(i) === "main" || + inv3.getLocation(i) === "hotbar" + ) { + if ( + inv3.getSlot(i).getItemId() === + "minecraft:gold_ingot" + ) { + inv3.grabAll(i); + compare(before, quantify(inv3)); + globQuant = quantify(inv3); + inv3.closeAndDrop(); + closed = true; + break; + } + } + } + if (!closed) { + inv3.close(); + } + } + } + } + + let farm_old = GlobalVars.getString("detected"); + + GlobalVars.putString("detected", farm); + + if (farm !== farm_old) { + GlobalVars.putBoolean("craft_lock", false); + GlobalVars.putInt("started", Math.floor(Date.now() / 1000)); + GlobalVars.putString("itemcounter", JSON.stringify("{}")); + GlobalVars.putString("itemcounterT", JSON.stringify("{}")); + + //reset trade state + GlobalVars.putBoolean("trade_good_flesh", false); + GlobalVars.putBoolean("trade_good_bottle", false); + GlobalVars.putBoolean("trade_good_paper", false); + + //Chat.log('reset timers'); + } +}