52 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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<ItemStack> 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());
 | |
| 	}
 | |
| }
 |