From ce0ed604cbbfb67c7fcb4c17b718b564e16a108f Mon Sep 17 00:00:00 2001 From: Qther Date: Sun, 10 May 2026 18:18:16 +0800 Subject: [PATCH] 1.19.2(game) - Fix falling anvils spawning output items in -ve,-ve corner --- .../common/handler/FallingAnvilHandler.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/handler/FallingAnvilHandler.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/handler/FallingAnvilHandler.java index c03ef5d71..4fdc401de 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/handler/FallingAnvilHandler.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/handler/FallingAnvilHandler.java @@ -21,6 +21,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.entity.EntityLeaveLevelEvent; import java.util.ArrayList; @@ -160,6 +161,8 @@ private static void removeEnchantmentsFromItems( continue; } + var spawnLocation = Vec3.atBottomCenterOf(anvilPos); + // Determine how large the stack is int stackSize = stack.getCount(); @@ -179,9 +182,9 @@ private static void removeEnchantmentsFromItems( // Spawn the book in the world level.addFreshEntity(new ItemEntity( level, - anvilPos.getX(), - anvilPos.getY(), - anvilPos.getZ(), + spawnLocation.x, + spawnLocation.y, + spawnLocation.z, enchantedBookToSpawn )); @@ -202,13 +205,14 @@ private static void removeEnchantmentsFromItems( } // Respawn any remaining books + var spawnLocation = Vec3.atBottomCenterOf(anvilPos); while (booksAvailable > 0) { int toSpawn = Math.min(booksAvailable, 64); level.addFreshEntity(new ItemEntity( level, - anvilPos.getX(), - anvilPos.getY(), - anvilPos.getZ(), + spawnLocation.x, + spawnLocation.y, + spawnLocation.z, new ItemStack(Items.BOOK, toSpawn) )); booksAvailable -= toSpawn; @@ -220,6 +224,7 @@ private static void crushEnchantedBooksIntoXpShards( BlockPos anvilPos, List items ) { + var spawnLocation = Vec3.atBottomCenterOf(anvilPos); // For each item for (ItemEntity itemEntity : items) { @@ -262,9 +267,9 @@ private static void crushEnchantedBooksIntoXpShards( // Spawn the stack ItemEntity shardItemEntity = new ItemEntity( level, - anvilPos.getX(), - anvilPos.getY(), - anvilPos.getZ(), + spawnLocation.x, + spawnLocation.y, + spawnLocation.z, shardStack ); level.addFreshEntity(shardItemEntity); @@ -289,6 +294,8 @@ private static void handlePrintingPressFormCreation( // Mark the block for consumption only if work is done boolean consumeBlock = false; + var spawnLocation = Vec3.atBottomCenterOf(anvilPos); + // For each item entity for (ItemEntity itemEntity : itemEntities) { @@ -306,9 +313,9 @@ private static void handlePrintingPressFormCreation( // Spawn the new item level.addFreshEntity(new ItemEntity( level, - anvilPos.getX(), - anvilPos.getY(), - anvilPos.getZ(), + spawnLocation.x, + spawnLocation.y, + spawnLocation.z, formStack ));