All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minecraft.server.ItemArmorStand Maven / Gradle / Ivy

package net.minecraft.server;

import java.util.List;
import java.util.Random;

public class ItemArmorStand extends Item {
	
	public ItemArmorStand() {
		this.a(CreativeModeTab.c);
	}
	
	public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) {
		if (enumdirection == EnumDirection.DOWN) {
			return false;
		} else {
			boolean flag = world.getType(blockposition).getBlock().a(world, blockposition);
			BlockPosition blockposition1 = flag ? blockposition : blockposition.shift(enumdirection);
			
			if (!entityhuman.a(blockposition1, enumdirection, itemstack)) {
				return false;
			} else {
				BlockPosition blockposition2 = blockposition1.up();
				boolean flag1 = !world.isEmpty(blockposition1) && !world.getType(blockposition1).getBlock().a(world, blockposition1);
				
				flag1 |= !world.isEmpty(blockposition2) && !world.getType(blockposition2).getBlock().a(world, blockposition2);
				if (flag1) {
					return false;
				} else {
					double d0 = blockposition1.getX();
					double d1 = blockposition1.getY();
					double d2 = blockposition1.getZ();
					List list = world.getEntities(null, AxisAlignedBB.a(d0, d1, d2, d0 + 1.0D, d1 + 2.0D, d2 + 1.0D));
					
					if (list.size() > 0) {
						return false;
					} else {
						if (!world.isClientSide) {
							world.setAir(blockposition1);
							world.setAir(blockposition2);
							EntityArmorStand entityarmorstand = new EntityArmorStand(world, d0 + 0.5D, d1, d2 + 0.5D);
							float f3 = (float) MathHelper.d((MathHelper.g(entityhuman.yaw - 180.0F) + 22.5F) / 45.0F) * 45.0F;
							
							entityarmorstand.setPositionRotation(d0 + 0.5D, d1, d2 + 0.5D, f3, 0.0F);
							this.a(entityarmorstand, world.random);
							NBTTagCompound nbttagcompound = itemstack.getTag();
							
							if (nbttagcompound != null && nbttagcompound.hasKeyOfType("EntityTag", 10)) {
								NBTTagCompound nbttagcompound1 = new NBTTagCompound();

								entityarmorstand.writeToNBTOptional(nbttagcompound1);
								nbttagcompound1.a(nbttagcompound.getCompound("EntityTag"));
								entityarmorstand.readFromNBT(nbttagcompound1);
							}
							
							world.addEntity(entityarmorstand);
						}
						
						--itemstack.count;
						return true;
					}
				}
			}
		}
	}
	
	private void a(EntityArmorStand entityarmorstand, Random random) {
		Vector3f vector3f = entityarmorstand.t();
		float f = random.nextFloat() * 5.0F;
		float f1 = random.nextFloat() * 20.0F - 10.0F;
		Vector3f vector3f1 = new Vector3f(vector3f.getX() + f, vector3f.getY() + f1, vector3f.getZ());
		
		entityarmorstand.setHeadPose(vector3f1);
		vector3f = entityarmorstand.u();
		f = random.nextFloat() * 10.0F - 5.0F;
		vector3f1 = new Vector3f(vector3f.getX(), vector3f.getY() + f, vector3f.getZ());
		entityarmorstand.setBodyPose(vector3f1);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy