From 2c09a08709e79762117b4c8a7a1bcb8865582359 Mon Sep 17 00:00:00 2001 From: Darshan Phaldesai <51489635+dphaldes@users.noreply.github.com> Date: Sun, 22 Dec 2024 23:48:24 -0700 Subject: [PATCH] feat: add SmelterJobEvent (#1275) --- .../common/entity/job/SmelterJob.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/job/SmelterJob.java b/src/main/java/com/klikli_dev/occultism/common/entity/job/SmelterJob.java index e6254c270..d83e8af6c 100644 --- a/src/main/java/com/klikli_dev/occultism/common/entity/job/SmelterJob.java +++ b/src/main/java/com/klikli_dev/occultism/common/entity/job/SmelterJob.java @@ -32,10 +32,13 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.*; import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.entity.EntityEvent; import java.util.ArrayList; import java.util.List; @@ -137,9 +140,13 @@ public void update() { handHeld.shrink(1); this.onSmelt(inputCopy, result); - ItemEntity droppedItem = this.entity.spawnAtLocation(result); - if (droppedItem != null) { - droppedItem.addTag(DROPPED_BY_SMELTER); + var event = new SmelterJobEvent(this.entity, inputCopy, result); + NeoForge.EVENT_BUS.post(event); + if(!event.getResult().isEmpty()) { + ItemEntity droppedItem = this.entity.spawnAtLocation(event.getResult()); + if (droppedItem != null) { + droppedItem.addTag(DROPPED_BY_SMELTER); + } } //Don't reset recipe here, keep it cached } @@ -184,4 +191,30 @@ public List getItemsToPickUp() { public void onSmelt(ItemStack input, ItemStack output) { } + + public static class SmelterJobEvent extends EntityEvent { + private ItemStack input; + private ItemStack result; + public SmelterJobEvent(Entity entity, ItemStack input, ItemStack result) { + super(entity); + this.input = input; + this.result = result; + } + + public ItemStack getInput() { + return input; + } + + public void setInput(ItemStack input) { + this.input = input; + } + + public ItemStack getResult() { + return result; + } + + public void setResult(ItemStack result) { + this.result = result; + } + } }