add first patch
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
// priority: 1
|
||||
console.info("[SOCIETY] basicShippingBin.js loaded");
|
||||
|
||||
const debug = false;
|
||||
|
||||
const basicCoinMap = [
|
||||
{ coin: "numismatics:sun", value: 4096 },
|
||||
{ coin: "numismatics:crown", value: 512 },
|
||||
{ coin: "numismatics:cog", value: 64 },
|
||||
{ coin: "numismatics:sprocket", value: 16 },
|
||||
{ coin: "numismatics:bevel", value: 8 },
|
||||
{ coin: "numismatics:spur", value: 1 },
|
||||
];
|
||||
|
||||
const calculateSlotsNeeded = (coins) => {
|
||||
let slots = 0;
|
||||
coins.forEach((coinObj) => {
|
||||
let { count } = coinObj;
|
||||
for (let index = 0; index <= count; index += 64) {
|
||||
slots++;
|
||||
}
|
||||
});
|
||||
return slots;
|
||||
};
|
||||
|
||||
StartupEvents.registry("block", (event) => {
|
||||
event
|
||||
.create("shippingbin:basic_shipping_bin", "cardinal")
|
||||
.tagBlock("minecraft:mineable/axe")
|
||||
.item((item) => {
|
||||
item.tooltip(Text.translatable("tooltip.society.shipping_bin").gray());
|
||||
item.modelJson({
|
||||
parent: "shippingbin:block/shipping_bin",
|
||||
});
|
||||
})
|
||||
.model("shippingbin:block/shipping_bin")
|
||||
.blockEntity((blockInfo) => {
|
||||
blockInfo.inventory(9, 4);
|
||||
blockInfo.initialData({ owner: "-1" });
|
||||
blockInfo.serverTick(10, 0, (entity) => {
|
||||
const { inventory, level, block } = entity;
|
||||
let dayTime = level.dayTime();
|
||||
let morningModulo = dayTime % 24000;
|
||||
if (rnd5()) global.cacheShippingBin(entity);
|
||||
if (morningModulo >= 5 && morningModulo < 15) {
|
||||
let slots = inventory.getSlots();
|
||||
let value = 0;
|
||||
let binPlayer = global.cacheShippingBin(entity);
|
||||
let blockData = block.getEntityData().data;
|
||||
let playerAttributes = blockData.attributes;
|
||||
let playerStages = blockData.stages;
|
||||
let removedSlots = [];
|
||||
let calculationResults;
|
||||
if (!playerStages || !playerAttributes) return;
|
||||
|
||||
calculationResults = global.processShippingBinInventory(
|
||||
inventory,
|
||||
slots,
|
||||
playerAttributes,
|
||||
playerStages,
|
||||
true
|
||||
);
|
||||
value = Math.round(calculationResults.calculatedValue);
|
||||
removedSlots = calculationResults.removedItems;
|
||||
global.processValueOutput(
|
||||
value,
|
||||
slots,
|
||||
removedSlots,
|
||||
binPlayer,
|
||||
level.getServer(),
|
||||
block,
|
||||
inventory
|
||||
);
|
||||
}
|
||||
}),
|
||||
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))
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user