138 lines
4.1 KiB
JavaScript
138 lines
4.1 KiB
JavaScript
global.handleHayGolem = (entity) => {
|
|
const { level } = entity;
|
|
const entities = level
|
|
.getEntitiesWithin(entity.boundingBox.inflate(8))
|
|
.filter((e) => e.type == "golemoverhaul:hay_golem");
|
|
const radius = 4;
|
|
const { x, y, z } = entity;
|
|
let scanBlock;
|
|
if (entities.length <= 1) {
|
|
for (let pos of BlockPos.betweenClosed(
|
|
new BlockPos(x - radius, y - radius, z - radius),
|
|
[x + radius, y + radius, z + radius]
|
|
)) {
|
|
if (!level.isLoaded(pos)) continue;
|
|
scanBlock = level.getBlock(pos);
|
|
if (rnd10() && scanBlock.hasTag("society:hay_golem_improvable")) {
|
|
if (scanBlock.id.equals("minecraft:farmland")) {
|
|
scanBlock.set(
|
|
"dew_drop_farmland_growth:low_quality_fertilized_farmland",
|
|
scanBlock.getProperties()
|
|
);
|
|
} else if (
|
|
scanBlock.id.equals(
|
|
"dew_drop_farmland_growth:low_quality_fertilized_farmland"
|
|
)
|
|
) {
|
|
scanBlock.set(
|
|
"dew_drop_farmland_growth:high_quality_fertilized_farmland",
|
|
scanBlock.getProperties()
|
|
);
|
|
}
|
|
if (level.server) {
|
|
level.server.runCommandSilent(
|
|
`playsound ribbits:entity.ribbit.magic block @a ${scanBlock.x} ${scanBlock.y} ${scanBlock.z}`
|
|
);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
global.handleKelpGolem = (entity) => {
|
|
const { level } = entity;
|
|
const { x, y, z } = entity;
|
|
const radius = 4;
|
|
let scanBlock;
|
|
let blockProperties;
|
|
for (let pos of BlockPos.betweenClosed(
|
|
new BlockPos(x - radius, y - radius, z - radius),
|
|
[x + radius, y + radius, z + radius]
|
|
)) {
|
|
if (!level.isLoaded(pos)) continue;
|
|
scanBlock = level.getBlock(pos);
|
|
if (scanBlock.id === "dew_drop_farmland_growth:garden_pot") {
|
|
blockProperties = scanBlock.getProperties();
|
|
blockProperties.moisture = "7";
|
|
scanBlock.set(scanBlock.id, blockProperties);
|
|
}
|
|
}
|
|
if (level.server) {
|
|
level.server.runCommandSilent(
|
|
`playsound minecraft:block.water.ambient block @a ${x} ${y} ${z}`
|
|
);
|
|
}
|
|
};
|
|
|
|
global.handleTerracottaGolem = (entity) => {
|
|
const { level } = entity;
|
|
const { x, y, z } = entity;
|
|
const radius = 4;
|
|
let scanBlock;
|
|
for (let pos of BlockPos.betweenClosed(
|
|
new BlockPos(x - radius, y - radius, z - radius),
|
|
[x + radius, y + radius, z + radius]
|
|
)) {
|
|
if (!level.isLoaded(pos)) continue;
|
|
scanBlock = level.getBlock(pos);
|
|
if (scanBlock.id.equals("minecraft:coarse_dirt")) {
|
|
scanBlock.set("minecraft:clay");
|
|
if (level.server) {
|
|
level.server.runCommandSilent(
|
|
`playsound twigs:block.silt.break block @a ${scanBlock.x} ${scanBlock.y} ${scanBlock.z}`
|
|
);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
|
|
global.handleSlimeGolem = (entity) => {
|
|
const { level } = entity;
|
|
const entities = level
|
|
.getEntitiesWithin(entity.boundingBox.inflate(8))
|
|
.filter((e) => e.type == "splendid_slimes:splendid_slime");
|
|
|
|
const golems = level
|
|
.getEntitiesWithin(entity.boundingBox.inflate(8))
|
|
.filter((e) => e.type == "golemoverhaul:slime_golem");
|
|
if (golems.length <= 1) {
|
|
entities.forEach((slime) => {
|
|
let nbt = slime.getNbt();
|
|
nbt.Happiness = nbt.Happiness + 5;
|
|
slime.setNbt(nbt);
|
|
});
|
|
}
|
|
};
|
|
|
|
EntityJSEvents.modifyEntity((event) => {
|
|
event.modify("golemoverhaul:hay_golem", (modifyBuilder) => {
|
|
modifyBuilder.tick((entity) => {
|
|
if (entity.level.time % 3600 === 0) {
|
|
global.handleHayGolem(entity);
|
|
}
|
|
});
|
|
});
|
|
event.modify("golemoverhaul:kelp_golem", (modifyBuilder) => {
|
|
modifyBuilder.tick((entity) => {
|
|
if (entity.level.time % 1200 === 0) {
|
|
global.handleKelpGolem(entity);
|
|
}
|
|
});
|
|
});
|
|
event.modify("golemoverhaul:terracotta_golem", (modifyBuilder) => {
|
|
modifyBuilder.tick((entity) => {
|
|
if (entity.level.time % 200 === 0) {
|
|
global.handleTerracottaGolem(entity);
|
|
}
|
|
});
|
|
});
|
|
event.modify("golemoverhaul:slime_golem", (modifyBuilder) => {
|
|
modifyBuilder.tick((entity) => {
|
|
if (entity.level.time % 1200 === 0) {
|
|
global.handleSlimeGolem(entity);
|
|
}
|
|
});
|
|
});
|
|
});
|