diff --git a/src/main/java/io/github/pylonmc/pylon/content/machines/simple/ShimmerAltar.java b/src/main/java/io/github/pylonmc/pylon/content/machines/simple/ShimmerAltar.java index 7bbf22795..2c872b016 100644 --- a/src/main/java/io/github/pylonmc/pylon/content/machines/simple/ShimmerAltar.java +++ b/src/main/java/io/github/pylonmc/pylon/content/machines/simple/ShimmerAltar.java @@ -8,10 +8,12 @@ import io.github.pylonmc.pylon.util.PylonUtils; import io.github.pylonmc.rebar.block.BlockStorage; import io.github.pylonmc.rebar.block.RebarBlock; +import io.github.pylonmc.rebar.block.base.RebarBreakHandler; import io.github.pylonmc.rebar.block.base.RebarInteractBlock; import io.github.pylonmc.rebar.block.base.RebarRecipeProcessor; import io.github.pylonmc.rebar.block.base.RebarSimpleMultiblock; import io.github.pylonmc.rebar.block.base.RebarTickingBlock; +import io.github.pylonmc.rebar.block.context.BlockBreakContext; import io.github.pylonmc.rebar.block.context.BlockCreateContext; import io.github.pylonmc.rebar.config.adapter.ConfigAdapter; import io.github.pylonmc.rebar.entity.display.ItemDisplayBuilder; @@ -41,7 +43,7 @@ import java.util.*; public class ShimmerAltar extends RebarBlock - implements RebarSimpleMultiblock, RebarInteractBlock, RebarTickingBlock, RebarRecipeProcessor { + implements RebarSimpleMultiblock, RebarInteractBlock, RebarTickingBlock, RebarRecipeProcessor, RebarBreakHandler { public static final int PEDESTAL_COUNT = 8; @@ -237,6 +239,17 @@ public void cancelRecipe() { } @Override + public void onBreak(@NotNull List drops, @NotNull BlockBreakContext context) { + if (!getItemDisplay().getItemStack().getType().isAir()) { + drops.add(getItemDisplay().getItemStack()); + } + for (Pedestal pedestal : getPedestals()) { + if (pedestal != null) { + pedestal.setLocked(false); + } + } + } + public @Nullable WailaDisplay getWaila(@NotNull Player player) { return new WailaDisplay(getDefaultWailaTranslationKey().arguments( RebarArgument.of("progress", getCurrentRecipe() == null diff --git a/src/main/java/io/github/pylonmc/pylon/recipes/ShimmerAltarRecipe.java b/src/main/java/io/github/pylonmc/pylon/recipes/ShimmerAltarRecipe.java index 708e6c5cc..9d281a13b 100644 --- a/src/main/java/io/github/pylonmc/pylon/recipes/ShimmerAltarRecipe.java +++ b/src/main/java/io/github/pylonmc/pylon/recipes/ShimmerAltarRecipe.java @@ -110,7 +110,8 @@ public boolean ingredientsMatch(List ingredients) { boolean allIngredientsMatch = true; for (int j = 0; j < ShimmerAltar.PEDESTAL_COUNT; j++) { RecipeInput.Item input = this.inputs.get(j); - if (input != null && !input.matches(ingredients.get(j))) { + if ((input == null && ingredients.get(j).getType() != Material.AIR) + || (input != null && !input.matches(ingredients.get(j)))) { allIngredientsMatch = false; break; }