add first patch
This commit is contained in:
@@ -0,0 +1,274 @@
|
||||
console.info("[SOCIETY] artisanHopper.js loaded");
|
||||
|
||||
/**
|
||||
* @param {Internal.BlockEntityJS} fishPondBasket
|
||||
* @param {Internal.Player|null} player
|
||||
*/
|
||||
global.runFishPondBasket = (fishPondBasket, fishPondPos, player) => {
|
||||
const { level, block, inventory } = fishPondBasket;
|
||||
const stages = global.getBlockEntityStages(fishPondBasket);
|
||||
const server = level.server;
|
||||
const fishPond = level.getBlock(fishPondPos);
|
||||
const { x, y, z } = fishPond;
|
||||
let machineOutputs;
|
||||
let newProperties = fishPond.getProperties();
|
||||
let nbt = fishPond.getEntityData();
|
||||
let recycleSparkstone;
|
||||
const { type, max_population, population } = nbt.data;
|
||||
if (global.inventoryHasItems(inventory, "society:sparkstone", 1) != 1) return;
|
||||
recycleSparkstone = global.checkSparkstoneRecyclers(level, block);
|
||||
if (
|
||||
newProperties.get("mature").toLowerCase() === "true" &&
|
||||
global.inventoryBelowHasRoom(level, block, global.getRoe(type)) &&
|
||||
(recycleSparkstone || global.useInventoryItems(inventory, "society:sparkstone", 1) == 1)
|
||||
) {
|
||||
machineOutputs = global.handleFishHarvest(fishPond, player, server, true, stages);
|
||||
|
||||
if (machineOutputs.length > 0) {
|
||||
machineOutputs.forEach((item) => {
|
||||
global.insertBelow(level, block, item);
|
||||
});
|
||||
level.spawnParticles(
|
||||
"species:ascending_dust",
|
||||
true,
|
||||
x,
|
||||
y + 1,
|
||||
z,
|
||||
0.2 * rnd(1, 1.5),
|
||||
0.2 * rnd(1, 1.5),
|
||||
0.2 * rnd(1, 1.5),
|
||||
3,
|
||||
0.01
|
||||
);
|
||||
}
|
||||
}
|
||||
if (
|
||||
newProperties.get("mature").toLowerCase() === "true" &&
|
||||
level.getBlock(block.pos).getProperties().get("upgraded") === "true" &&
|
||||
population > 0 && max_population === population
|
||||
) {
|
||||
let fishie = global.handleFishExtraction(fishPond, player, server, stages);
|
||||
recycleSparkstone = global.checkSparkstoneRecyclers(level, block);
|
||||
if (
|
||||
global.inventoryBelowHasRoom(level, block, fishie) &&
|
||||
(recycleSparkstone || global.useInventoryItems(inventory, "society:sparkstone", 1) == 1)
|
||||
) {
|
||||
global.insertBelow(level, block, fishie);
|
||||
level.spawnParticles(
|
||||
"species:ascending_dust",
|
||||
true,
|
||||
x,
|
||||
y + 1,
|
||||
z,
|
||||
0.2 * rnd(1, 1.5),
|
||||
0.2 * rnd(1, 1.5),
|
||||
0.2 * rnd(1, 1.5),
|
||||
3,
|
||||
0.01
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
StartupEvents.registry("block", (event) => {
|
||||
event
|
||||
.create("society:fish_pond_basket")
|
||||
.tagBlock("minecraft:mineable/axe")
|
||||
.tagBlock("minecraft:needs_stone_tool")
|
||||
.waterlogged()
|
||||
.defaultCutout()
|
||||
.item((item) => {
|
||||
item.tooltip(
|
||||
Text.translatable("block.society.fish_pond_basket.description").gray()
|
||||
);
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"society.working_block_entity.apply_player_skill"
|
||||
).gray()
|
||||
);
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"block.society.fish_pond_basket.description.upgrade"
|
||||
).gold()
|
||||
);
|
||||
item.tooltip(Text.translatable("tooltip.society.area", `3x3x3`).green());
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"block.society.fish_pond_basket.description.fuel"
|
||||
).lightPurple()
|
||||
);
|
||||
item.modelJson({
|
||||
parent: "society:block/kubejs/fish_pond_basket",
|
||||
});
|
||||
item.fireResistant(true);
|
||||
})
|
||||
.soundType("copper")
|
||||
.model("society:block/kubejs/fish_pond_basket")
|
||||
.property(booleanProperty.create("upgraded"))
|
||||
.defaultState((state) => {
|
||||
state
|
||||
.set(booleanProperty.create("upgraded"), false)
|
||||
.set(BlockProperties.WATERLOGGED, false);
|
||||
})
|
||||
.placementState((state) => {
|
||||
state
|
||||
.set(booleanProperty.create("upgraded"), false)
|
||||
.set(BlockProperties.WATERLOGGED, false);
|
||||
})
|
||||
.blockEntity((blockInfo) => {
|
||||
blockInfo.inventory(9, 2);
|
||||
blockInfo.initialData({ owner: "-1" });
|
||||
blockInfo.serverTick(600, 0, (entity) => {
|
||||
const { block, level } = entity;
|
||||
const { x, y, z } = block;
|
||||
const radius = 1;
|
||||
let attachedPlayer = global.cacheOwner(entity, [
|
||||
"bullfish_jobs",
|
||||
"caper_catcher",
|
||||
"caviar_catcher",
|
||||
"hot_hands",
|
||||
"mitosis",
|
||||
"scum_collector",
|
||||
]);
|
||||
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 === "society:fish_pond") {
|
||||
global.runFishPondBasket(entity, pos.immutable(), attachedPlayer);
|
||||
}
|
||||
}
|
||||
}),
|
||||
blockInfo.rightClickOpensInventory();
|
||||
blockInfo.attachCapability(
|
||||
CapabilityBuilder.ITEM.blockEntity()
|
||||
.insertItem((blockEntity, slot, stack, simulate) =>
|
||||
blockEntity.inventory.insertItem(slot, stack, simulate)
|
||||
)
|
||||
.extractItem((blockEntity, slot, stack, simulate) =>
|
||||
blockEntity.inventory.extractItem(slot, stack, simulate)
|
||||
)
|
||||
.getSlotLimit((blockEntity, slot) =>
|
||||
blockEntity.inventory.getSlotLimit(slot)
|
||||
)
|
||||
.getSlots((blockEntity) => blockEntity.inventory.slots)
|
||||
.getStackInSlot((blockEntity, slot) =>
|
||||
blockEntity.inventory.getStackInSlot(slot)
|
||||
)
|
||||
);
|
||||
}).blockstateJson = {
|
||||
multipart: [
|
||||
{
|
||||
when: { upgraded: "false" },
|
||||
apply: { model: "society:block/kubejs/fish_pond_basket" },
|
||||
},
|
||||
{
|
||||
when: { upgraded: "true" },
|
||||
apply: { model: "society:block/kubejs/fish_pond_basket_upgraded" },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
event
|
||||
.create("society:fish_pond_hatchery")
|
||||
.tagBlock("minecraft:mineable/axe")
|
||||
.tagBlock("minecraft:needs_stone_tool")
|
||||
.waterlogged()
|
||||
.defaultCutout()
|
||||
.item((item) => {
|
||||
item.tooltip(
|
||||
Text.translatable("block.society.fish_pond_basket.description").gray()
|
||||
);
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"society.working_block_entity.apply_player_skill"
|
||||
).gray()
|
||||
);
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"block.society.fish_pond_basket.description.upgrade"
|
||||
).gold()
|
||||
);
|
||||
item.tooltip(Text.translatable("tooltip.society.area", `3x7x3`).green());
|
||||
item.tooltip(
|
||||
Text.translatable(
|
||||
"block.society.fish_pond_basket.description.fuel"
|
||||
).lightPurple()
|
||||
);
|
||||
item.modelJson({
|
||||
parent: "society:block/kubejs/fish_pond_hatchery",
|
||||
});
|
||||
item.fireResistant(true);
|
||||
})
|
||||
.soundType("copper")
|
||||
.model("society:block/kubejs/fish_pond_hatchery")
|
||||
.property(booleanProperty.create("upgraded"))
|
||||
.defaultState((state) => {
|
||||
state
|
||||
.set(booleanProperty.create("upgraded"), false)
|
||||
.set(BlockProperties.WATERLOGGED, false);
|
||||
})
|
||||
.placementState((state) => {
|
||||
state
|
||||
.set(booleanProperty.create("upgraded"), false)
|
||||
.set(BlockProperties.WATERLOGGED, false);
|
||||
})
|
||||
.blockEntity((blockInfo) => {
|
||||
blockInfo.inventory(9, 2);
|
||||
blockInfo.initialData({ owner: "-1" });
|
||||
blockInfo.serverTick(600, 0, (entity) => {
|
||||
const { block, level } = entity;
|
||||
const { x, y, z } = block;
|
||||
let attachedPlayer = global.cacheOwner(entity, [
|
||||
"bullfish_jobs",
|
||||
"caper_catcher",
|
||||
"caviar_catcher",
|
||||
"hot_hands",
|
||||
"mitosis",
|
||||
"scum_collector",
|
||||
]);
|
||||
let scanBlock;
|
||||
for (let pos of BlockPos.betweenClosed(
|
||||
new BlockPos(x - 1, y - 3, z - 1),
|
||||
[x + 1, y + 3, z + 1]
|
||||
)) {
|
||||
if (!level.isLoaded(pos)) continue;
|
||||
scanBlock = level.getBlock(pos);
|
||||
if (scanBlock.id === "society:fish_pond") {
|
||||
global.runFishPondBasket(entity, pos.immutable(), attachedPlayer);
|
||||
}
|
||||
}
|
||||
}),
|
||||
blockInfo.rightClickOpensInventory();
|
||||
blockInfo.attachCapability(
|
||||
CapabilityBuilder.ITEM.blockEntity()
|
||||
.insertItem((blockEntity, slot, stack, simulate) =>
|
||||
blockEntity.inventory.insertItem(slot, stack, simulate)
|
||||
)
|
||||
.extractItem((blockEntity, slot, stack, simulate) =>
|
||||
blockEntity.inventory.extractItem(slot, stack, simulate)
|
||||
)
|
||||
.getSlotLimit((blockEntity, slot) =>
|
||||
blockEntity.inventory.getSlotLimit(slot)
|
||||
)
|
||||
.getSlots((blockEntity) => blockEntity.inventory.slots)
|
||||
.getStackInSlot((blockEntity, slot) =>
|
||||
blockEntity.inventory.getStackInSlot(slot)
|
||||
)
|
||||
);
|
||||
}).blockstateJson = {
|
||||
multipart: [
|
||||
{
|
||||
when: { upgraded: "false" },
|
||||
apply: { model: "society:block/kubejs/fish_pond_hatchery" },
|
||||
},
|
||||
{
|
||||
when: { upgraded: "true" },
|
||||
apply: { model: "society:block/kubejs/fish_pond_hatchery_upgraded" },
|
||||
},
|
||||
],
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user