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

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

package net.minecraft.server;

import java.util.List;

public class CommandSummon extends CommandAbstract {
	
	public CommandSummon() {
	}
	
	public String getCommand() {
		return "summon";
	}
	
	public int a() {
		return 2;
	}
	
	public String getUsage(ICommandListener icommandlistener) {
		return "commands.summon.usage";
	}
	
	public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
		if (astring.length < 1) {
			throw new ExceptionUsage("commands.summon.usage");
		} else {
			String s = astring[0];
			BlockPosition blockposition = icommandlistener.getChunkCoordinates();
			Vec3D vec3d = icommandlistener.getPositionVector();
			double d0 = vec3d.a;
			double d1 = vec3d.b;
			double d2 = vec3d.c;
			
			if (astring.length >= 4) {
				d0 = b(d0, astring[1], true);
				d1 = b(d1, astring[2], false);
				d2 = b(d2, astring[3], true);
				blockposition = new BlockPosition(d0, d1, d2);
			}
			
			World world = icommandlistener.getWorld();
			
			if (!world.isLoaded(blockposition)) {
				throw new CommandException("commands.summon.outOfWorld");
			} else if ("LightningBolt".equals(s)) {
				world.strikeLightning(new EntityLightning(world, d0, d1, d2));
				a(icommandlistener, this, "commands.summon.success");
			} else {
				NBTTagCompound nbttagcompound = new NBTTagCompound();
				boolean flag = false;
				
				if (astring.length >= 5) {
					IChatBaseComponent ichatbasecomponent = a(icommandlistener, astring, 4);
					
					try {
						nbttagcompound = MojangsonParser.parse(ichatbasecomponent.c());
						flag = true;
					} catch (MojangsonParseException mojangsonparseexception) {
						throw new CommandException("commands.summon.tagError", mojangsonparseexception.getMessage());
					}
				}
				
				nbttagcompound.setString("id", s);
				
				Entity entity;
				
				try {
					entity = EntityTypes.a(nbttagcompound, world);
				} catch (RuntimeException runtimeexception) {
					throw new CommandException("commands.summon.failed");
				}
				
				if (entity == null) {
					throw new CommandException("commands.summon.failed");
				} else {
					entity.setPositionRotation(d0, d1, d2, entity.yaw, entity.pitch);
					if (!flag && entity instanceof EntityInsentient) {
						((EntityInsentient) entity).prepare(world.E(new BlockPosition(entity)), null);
					}
					
					world.addEntity(entity);
					Entity entity1 = entity;
					
					for (NBTTagCompound nbttagcompound1 = nbttagcompound; entity1 != null && nbttagcompound1.hasKeyOfType("Riding", 10); nbttagcompound1 = nbttagcompound1.getCompound("Riding")) {
						Entity entity2 = EntityTypes.a(nbttagcompound1.getCompound("Riding"), world);
						
						if (entity2 != null) {
							entity2.setPositionRotation(d0, d1, d2, entity2.yaw, entity2.pitch);
							world.addEntity(entity2);
							entity1.mount(entity2);
						}
						
						entity1 = entity2;
					}
					
					a(icommandlistener, this, "commands.summon.success");
				}
			}
		}
	}
	
	public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
		return astring.length == 1 ? a(astring, EntityTypes.b()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : null);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy