Files
jsMacro/craft.js
sebseb7 f9007c0eae upd
2023-04-08 06:58:18 +02:00

1560 lines
44 KiB
JavaScript

/*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<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 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 epos = e.getPos();
player.lookAt(
epos.x,
epos.y + e.getEyeHeight(),
epos.z
);
const old_uuid = GlobalVars.getString("last_lib");
if (old_uuid === uuid) {
//skip
} else {
GlobalVars.putString("last_lib", uuid);
player.interactEntity(e, false, true);
const ev = JsMacros.waitForEvent("OpenContainer");
ev.context.releaseLock();
let inv = Player.openInventory();
Time.sleep(200);
//const inv = ev.event.inventory;
const trades = 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);
}
}
const after = quantify(inv);
compareT(before1, after);
globQuant = after;
}
if (!globQuant) globQuant = quantify(inv);
const before = globQuant;
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 (false)
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 epos = e.getPos();
player.lookAt(
epos.x,
epos.y + e.getEyeHeight(),
epos.z
);
const old_uuid = GlobalVars.getString("last_cleric");
if (old_uuid === uuid) {
//skip
} else {
GlobalVars.putString("last_cleric", uuid);
player.interactEntity(e, false, true);
const ev = JsMacros.waitForEvent("OpenContainer");
ev.context.releaseLock();
let inv = Player.openInventory();
Time.sleep(200);
//const inv = ev.event.inventory;
const trades = inv.getTrades ? 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;
}
e;
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));
}
}
if (inv && inv.close) {
const before = quantify(inv);
globQuant = before;
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 < 32 && 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 < 32 && trade_good_bottle) {
if (mode === "glass" && tradepos === 1 && tradelane === 0) {
//craft(
// 938 + tradelane,
// 72,
// 11851 - tradepos * 2,
// "glass_bottle"
//);
//GlobalVars.putInt("glass", 0);
put(940, 71, 11852, "glass");
}
//}
// if (glass > 0 && tradepos === 1) {
// 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.getZ() > 11800 &&
player.getZ() < 11853 &&
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);
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);
if ((trade_pos + 1) % 4 === 0) {
trade(trade_pos, tradelane, true);
trade(trade_pos + 1, tradelane, false);
} else {
trade(trade_pos + 1, tradelane, false);
trade(trade_pos, tradelane, true);
}
//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');
}
}