package net.minecraft.world; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; public class Containers { public static void dropContents(Level level, BlockPos pos, Container inventory) { dropContents(level, pos.getX(), pos.getY(), pos.getZ(), inventory); } public static void dropContents(Level level, Entity entityAt, Container inventory) { dropContents(level, entityAt.getX(), entityAt.getY(), entityAt.getZ(), inventory); } private static void dropContents(Level level, double x, double y, double z, Container inventory) { for (int i = 0; i < inventory.getContainerSize(); i++) { dropItemStack(level, x, y, z, inventory.getItem(i)); } } public static void dropContents(Level level, BlockPos pos, NonNullList stackList) { stackList.forEach(itemStack -> dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), itemStack)); } public static void dropItemStack(Level level, double x, double y, double z, ItemStack stack) { double d = EntityType.ITEM.getWidth(); double e = 1.0 - d; double f = d / 2.0; double g = Math.floor(x) + level.random.nextDouble() * e + f; double h = Math.floor(y) + level.random.nextDouble() * e; double i = Math.floor(z) + level.random.nextDouble() * e + f; while (!stack.isEmpty()) { ItemEntity itemEntity = new ItemEntity(level, g, h, i, stack.split(level.random.nextInt(21) + 10)); float j = 0.05F; itemEntity.setDeltaMovement( level.random.triangle(0.0, 0.11485000171139836), level.random.triangle(0.2, 0.11485000171139836), level.random.triangle(0.0, 0.11485000171139836) ); level.addFreshEntity(itemEntity); } } public static void updateNeighboursAfterDestroy(BlockState state, Level level, BlockPos pos) { level.updateNeighbourForOutputSignal(pos, state.getBlock()); } }