add first patch
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
console.info("[SOCIETY] hoeAoe.js loaded");
|
||||
|
||||
const hoeTiers = new Map([
|
||||
["minecraft:stone_hoe", 0.2],
|
||||
["minecraft:iron_hoe", 0.5],
|
||||
["minecraft:golden_hoe", 1],
|
||||
["minecraft:diamond_hoe", 2],
|
||||
["oreganized:electrum_hoe", 3],
|
||||
["minecraft:netherite_hoe", 3],
|
||||
["aquaculture:neptunium_hoe", 3],
|
||||
["botania:elementium_hoe", 3],
|
||||
["botania:manasteel_hoe", 2],
|
||||
]);
|
||||
|
||||
const hoeFarmland = new Map([
|
||||
["aquaculture:neptunium_hoe", "dew_drop_farmland_growth:hydrating_farmland"],
|
||||
["botania:elementium_hoe", "dew_drop_farmland_growth:hydrating_farmland"],
|
||||
]);
|
||||
|
||||
const tryTill = (level, player, pos, farmland) => {
|
||||
if (!level.getBlock(pos).hasTag("minecraft:dirt")) return false;
|
||||
const above = level.getBlock(pos.above()).id;
|
||||
if (
|
||||
above !== "minecraft:air" &&
|
||||
above !== "minecraft:water" &&
|
||||
above !== "minecraft:flowing_water"
|
||||
)
|
||||
return false;
|
||||
|
||||
level.getBlock(pos).set(farmland || "minecraft:farmland");
|
||||
player.swing();
|
||||
player.server.runCommandSilent(
|
||||
`playsound minecraft:item.hoe.till block @a ${player.x} ${player.y} ${player.z}`
|
||||
);
|
||||
return true;
|
||||
};
|
||||
|
||||
BlockEvents.rightClicked(
|
||||
[
|
||||
"minecraft:dirt",
|
||||
"minecraft:rooted_dirt",
|
||||
"minecraft:coarse_dirt",
|
||||
"minecraft:dirt_path",
|
||||
"minecraft:grass_block",
|
||||
],
|
||||
(e) => {
|
||||
const { item, block, player, level } = e;
|
||||
const id = `${item.id}`;
|
||||
const hoe = hoeTiers.get(id);
|
||||
if (!hoe) return;
|
||||
|
||||
const farmland = hoeFarmland.get(id);
|
||||
if (!player.crouching) {
|
||||
tryTill(level, player, block.pos, farmland);
|
||||
e.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (hoe < 1) {
|
||||
const distance = hoe > 0.2 ? 3 : 2;
|
||||
let pos = block.pos;
|
||||
for (let i = 0; i < distance; i++) {
|
||||
tryTill(level, player, pos, farmland);
|
||||
pos = global.getFacing(player.facing, pos);
|
||||
}
|
||||
} else {
|
||||
const { x, y, z } = block;
|
||||
for (let pos of BlockPos.betweenClosed(
|
||||
new BlockPos(x - hoe, y, z - hoe),
|
||||
[x + hoe, y, z + hoe]
|
||||
)) {
|
||||
tryTill(level, player, pos, farmland);
|
||||
}
|
||||
}
|
||||
global.addItemCooldown(player, item, 40);
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user