@@ -0,0 +1,76 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import java.util.List;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.EntityVillagerAbstract;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||
import org.bukkit.craftbukkit.inventory.CraftMerchant;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.MerchantRecipe;
|
||||
import org.bukkit.entity.AbstractVillager;
|
||||
|
||||
public class CraftAbstractVillager extends CraftAgeable implements AbstractVillager, InventoryHolder {
|
||||
|
||||
private CraftMerchant merchant;
|
||||
|
||||
public CraftAbstractVillager(CraftServer server, EntityVillagerAbstract entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityVillagerAbstract getHandle() {
|
||||
return (EntityVillager) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftAbstractVillager";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return new CraftInventory(getHandle().getInventory());
|
||||
}
|
||||
|
||||
private CraftMerchant getMerchant() {
|
||||
return (merchant == null) ? merchant = new CraftMerchant(getHandle()) : merchant;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MerchantRecipe> getRecipes() {
|
||||
return getMerchant().getRecipes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipes(List<MerchantRecipe> recipes) {
|
||||
this.getMerchant().setRecipes(recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MerchantRecipe getRecipe(int i) {
|
||||
return getMerchant().getRecipe(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipe(int i, MerchantRecipe merchantRecipe) {
|
||||
getMerchant().setRecipe(i, merchantRecipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRecipeCount() {
|
||||
return getMerchant().getRecipeCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTrading() {
|
||||
return getTrader() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HumanEntity getTrader() {
|
||||
return getMerchant().getTrader();
|
||||
}
|
||||
}
|
||||
@@ -40,11 +40,11 @@ public class CraftAnimals extends CraftAgeable implements Animals {
|
||||
@Override
|
||||
public void setLoveModeTicks(int ticks) {
|
||||
Preconditions.checkArgument(ticks >= 0, "Love mode ticks must be positive or 0");
|
||||
getHandle().d(ticks); // PAIL rename setLoveModeTicks
|
||||
getHandle().setLoveTicks(ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoveModeTicks() {
|
||||
return getHandle().bC; // PAIL rename loveTicks
|
||||
return getHandle().loveTicks;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.EntityArrow;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
@@ -69,8 +70,8 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
|
||||
return null;
|
||||
}
|
||||
|
||||
EntityArrow handle = getHandle();
|
||||
return getWorld().getBlockAt(handle.tileX, handle.tileY, handle.tileZ);
|
||||
BlockPosition pos = getHandle().getChunkCoordinates();
|
||||
return getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,6 +104,6 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.ARROW;
|
||||
return EntityType.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.server.EntityCat;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Cat;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftCat extends CraftTameableAnimal implements Cat {
|
||||
|
||||
public CraftCat(CraftServer server, EntityCat entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityCat getHandle() {
|
||||
return (EntityCat) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.CAT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftCat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getCatType() {
|
||||
return Type.values()[getHandle().getCatType()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCatType(Type type) {
|
||||
Preconditions.checkArgument(type != null, "Cannot have null Type");
|
||||
|
||||
getHandle().setCatType(type.ordinal());
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,6 @@ public class CraftComplexPart extends CraftEntity implements ComplexEntityPart {
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.COMPLEX_PART;
|
||||
return EntityType.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.craftbukkit.util.CraftVector;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
@@ -78,7 +79,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityPig) { return new CraftPig(server, (EntityPig) entity); }
|
||||
else if (entity instanceof EntityTameableAnimal) {
|
||||
if (entity instanceof EntityWolf) { return new CraftWolf(server, (EntityWolf) entity); }
|
||||
else if (entity instanceof EntityOcelot) { return new CraftOcelot(server, (EntityOcelot) entity); }
|
||||
else if (entity instanceof EntityCat) { return new CraftCat(server, (EntityCat) entity); }
|
||||
else if (entity instanceof EntityParrot) { return new CraftParrot(server, (EntityParrot) entity); }
|
||||
}
|
||||
else if (entity instanceof EntitySheep) { return new CraftSheep(server, (EntitySheep) entity); }
|
||||
@@ -86,6 +87,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (entity instanceof EntityHorseChestedAbstract){
|
||||
if (entity instanceof EntityHorseDonkey) { return new CraftDonkey(server, (EntityHorseDonkey) entity); }
|
||||
else if (entity instanceof EntityHorseMule) { return new CraftMule(server, (EntityHorseMule) entity); }
|
||||
else if (entity instanceof EntityLLamaTrader) { return new CraftTraderLlama(server, (EntityLLamaTrader) entity); }
|
||||
else if (entity instanceof EntityLlama) { return new CraftLlama(server, (EntityLlama) entity); }
|
||||
} else if (entity instanceof EntityHorse) { return new CraftHorse(server, (EntityHorse) entity); }
|
||||
else if (entity instanceof EntityHorseSkeleton) { return new CraftSkeletonHorse(server, (EntityHorseSkeleton) entity); }
|
||||
@@ -94,6 +96,9 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityRabbit) { return new CraftRabbit(server, (EntityRabbit) entity); }
|
||||
else if (entity instanceof EntityPolarBear) { return new CraftPolarBear(server, (EntityPolarBear) entity); }
|
||||
else if (entity instanceof EntityTurtle) { return new CraftTurtle(server, (EntityTurtle) entity); }
|
||||
else if (entity instanceof EntityOcelot) { return new CraftOcelot(server, (EntityOcelot) entity); }
|
||||
else if (entity instanceof EntityPanda) { return new CraftPanda(server, (EntityPanda) entity); }
|
||||
else if (entity instanceof EntityFox) { return new CraftFox(server, (EntityFox) entity); }
|
||||
else { return new CraftAnimals(server, (EntityAnimal) entity); }
|
||||
}
|
||||
// Monsters
|
||||
@@ -134,8 +139,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else { return new CraftSpellcaster(server, (EntityIllagerWizard) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityVindicator) { return new CraftVindicator(server, (EntityVindicator) entity); }
|
||||
else if (entity instanceof EntityPillager) { return new CraftPillager(server, (EntityPillager) entity); }
|
||||
else { return new CraftIllager(server, (EntityIllagerAbstract) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityRavager) { return new CraftRavager(server, (EntityRavager) entity); }
|
||||
|
||||
else { return new CraftMonster(server, (EntityMonster) entity); }
|
||||
}
|
||||
@@ -144,7 +151,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityIronGolem) { return new CraftIronGolem(server, (EntityIronGolem) entity); }
|
||||
else if (entity instanceof EntityShulker) { return new CraftShulker(server, (EntityShulker) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityVillager) { return new CraftVillager(server, (EntityVillager) entity); }
|
||||
else if (entity instanceof EntityVillagerAbstract) {
|
||||
if (entity instanceof EntityVillager) { return new CraftVillager(server, (EntityVillager) entity); }
|
||||
else if (entity instanceof EntityVillagerTrader) { return new CraftWanderingTrader(server, (EntityVillagerTrader) entity); }
|
||||
else { return new CraftAbstractVillager(server, (EntityVillagerAbstract) entity); }
|
||||
}
|
||||
else { return new CraftCreature(server, (EntityCreature) entity); }
|
||||
}
|
||||
// Slimes are a special (and broken) case
|
||||
@@ -175,10 +186,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else { return new CraftComplexPart(server, (EntityComplexPart) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityExperienceOrb) { return new CraftExperienceOrb(server, (EntityExperienceOrb) entity); }
|
||||
else if (entity instanceof EntityTippedArrow) {
|
||||
if (((EntityTippedArrow) entity).isTipped()) { return new CraftTippedArrow(server, (EntityTippedArrow) entity); }
|
||||
else { return new CraftArrow(server, (EntityArrow) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityTippedArrow) { return new CraftTippedArrow(server, (EntityTippedArrow) entity); }
|
||||
else if (entity instanceof EntitySpectralArrow) { return new CraftSpectralArrow(server, (EntitySpectralArrow) entity); }
|
||||
else if (entity instanceof EntityArrow) {
|
||||
if (entity instanceof EntityThrownTrident) { return new CraftTrident(server, (EntityThrownTrident) entity); }
|
||||
@@ -188,10 +196,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityProjectile) {
|
||||
if (entity instanceof EntityEgg) { return new CraftEgg(server, (EntityEgg) entity); }
|
||||
else if (entity instanceof EntitySnowball) { return new CraftSnowball(server, (EntitySnowball) entity); }
|
||||
else if (entity instanceof EntityPotion) {
|
||||
if (!((EntityPotion) entity).isLingering()) { return new CraftSplashPotion(server, (EntityPotion) entity); }
|
||||
else { return new CraftLingeringPotion(server, (EntityPotion) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityPotion) { return new CraftThrownPotion(server, (EntityPotion) entity); }
|
||||
else if (entity instanceof EntityEnderPearl) { return new CraftEnderPearl(server, (EntityEnderPearl) entity); }
|
||||
else if (entity instanceof EntityThrownExpBottle) { return new CraftThrownExpBottle(server, (EntityThrownExpBottle) entity); }
|
||||
}
|
||||
@@ -207,10 +212,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityEnderCrystal) { return new CraftEnderCrystal(server, (EntityEnderCrystal) entity); }
|
||||
else if (entity instanceof EntityFishingHook) { return new CraftFishHook(server, (EntityFishingHook) entity); }
|
||||
else if (entity instanceof EntityItem) { return new CraftItem(server, (EntityItem) entity); }
|
||||
else if (entity instanceof EntityWeather) {
|
||||
if (entity instanceof EntityLightning) { return new CraftLightningStrike(server, (EntityLightning) entity); }
|
||||
else { return new CraftWeather(server, (EntityWeather) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityLightning) { return new CraftLightningStrike(server, (EntityLightning) entity); }
|
||||
else if (entity instanceof EntityMinecartAbstract) {
|
||||
if (entity instanceof EntityMinecartFurnace) { return new CraftMinecartFurnace(server, (EntityMinecartFurnace) entity); }
|
||||
else if (entity instanceof EntityMinecartChest) { return new CraftMinecartChest(server, (EntityMinecartChest) entity); }
|
||||
@@ -253,26 +255,24 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
|
||||
public Vector getVelocity() {
|
||||
return new Vector(entity.motX, entity.motY, entity.motZ);
|
||||
return CraftVector.toBukkit(entity.getMot());
|
||||
}
|
||||
|
||||
public void setVelocity(Vector velocity) {
|
||||
Preconditions.checkArgument(velocity != null, "velocity");
|
||||
velocity.checkFinite();
|
||||
entity.motX = velocity.getX();
|
||||
entity.motY = velocity.getY();
|
||||
entity.motZ = velocity.getZ();
|
||||
entity.setMot(CraftVector.toNMS(velocity));
|
||||
entity.velocityChanged = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getHeight() {
|
||||
return getHandle().length;
|
||||
return getHandle().getHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getWidth() {
|
||||
return getHandle().width;
|
||||
return getHandle().getWidth();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -324,7 +324,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
// Let the server handle cross world teleports
|
||||
if (!location.getWorld().equals(getWorld())) {
|
||||
entity.teleportTo(location, false);
|
||||
entity.teleportTo(((CraftWorld) location.getWorld()).getHandle().dimension, new BlockPosition(location.getX(), location.getY(), location.getZ()));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityFox;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Fox;
|
||||
|
||||
public class CraftFox extends CraftAnimals implements Fox {
|
||||
|
||||
public CraftFox(CraftServer server, EntityFox entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityFox getHandle() {
|
||||
return (EntityFox) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.FOX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftFox";
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,17 @@ import com.google.common.base.Preconditions;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import net.minecraft.server.BlockAnvil;
|
||||
import net.minecraft.server.BlockBed;
|
||||
import net.minecraft.server.BlockEnchantmentTable;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.BlockWorkbench;
|
||||
import net.minecraft.server.Blocks;
|
||||
import net.minecraft.server.ChatComponentText;
|
||||
import net.minecraft.server.Container;
|
||||
import net.minecraft.server.Containers;
|
||||
import net.minecraft.server.CraftingManager;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
@@ -19,6 +23,7 @@ import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityTypes;
|
||||
import net.minecraft.server.EnumMainHand;
|
||||
import net.minecraft.server.IBlockData;
|
||||
import net.minecraft.server.IChatBaseComponent;
|
||||
import net.minecraft.server.IInventory;
|
||||
import net.minecraft.server.IMerchant;
|
||||
import net.minecraft.server.IRecipe;
|
||||
@@ -29,14 +34,19 @@ import net.minecraft.server.NBTTagCompound;
|
||||
import net.minecraft.server.PacketPlayInCloseWindow;
|
||||
import net.minecraft.server.PacketPlayOutOpenWindow;
|
||||
import net.minecraft.server.TileEntity;
|
||||
import net.minecraft.server.TileEntityBarrel;
|
||||
import net.minecraft.server.TileEntityBeacon;
|
||||
import net.minecraft.server.TileEntityBlastFurnace;
|
||||
import net.minecraft.server.TileEntityBrewingStand;
|
||||
import net.minecraft.server.TileEntityDispenser;
|
||||
import net.minecraft.server.TileEntityDropper;
|
||||
import net.minecraft.server.TileEntityEnchantTable;
|
||||
import net.minecraft.server.TileEntityFurnace;
|
||||
import net.minecraft.server.TileEntityFurnaceFurnace;
|
||||
import net.minecraft.server.TileEntityHopper;
|
||||
import net.minecraft.server.TileEntityLectern;
|
||||
import net.minecraft.server.TileEntityShulkerBox;
|
||||
import net.minecraft.server.TileEntitySmoker;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@@ -52,6 +62,7 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.craftbukkit.inventory.CraftMerchant;
|
||||
import org.bukkit.craftbukkit.inventory.CraftMerchantCustom;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
@@ -121,7 +132,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
}
|
||||
|
||||
public boolean isSleeping() {
|
||||
return getHandle().sleeping;
|
||||
return getHandle().isSleeping();
|
||||
}
|
||||
|
||||
public int getSleepTicks() {
|
||||
@@ -168,7 +179,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getHandle().a(blockposition, force) != EntityHuman.EnumBedResult.OK) {
|
||||
if (getHandle().sleep(blockposition, force).left().isPresent()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -183,14 +194,15 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
public void wakeup(boolean setSpawnLocation) {
|
||||
Preconditions.checkState(isSleeping(), "Cannot wakeup if not sleeping");
|
||||
|
||||
getHandle().a(true, true, setSpawnLocation);
|
||||
getHandle().wakeup(true, true, setSpawnLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getBedLocation() {
|
||||
Preconditions.checkState(isSleeping(), "Not sleeping");
|
||||
|
||||
return new Location(getWorld(), getHandle().bedPosition.getX(), getHandle().bedPosition.getY(), getHandle().bedPosition.getZ());
|
||||
BlockPosition bed = getHandle().getBed();
|
||||
return new Location(getWorld(), bed.getX(), bed.getY(), bed.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -303,41 +315,64 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
case PLAYER:
|
||||
case CHEST:
|
||||
case ENDER_CHEST:
|
||||
getHandle().openContainer(iinventory);
|
||||
Containers customSize;
|
||||
switch (inventory.getSize()) {
|
||||
case 9:
|
||||
customSize = Containers.GENERIC_9X1;
|
||||
break;
|
||||
case 18:
|
||||
customSize = Containers.GENERIC_9X2;
|
||||
break;
|
||||
case 27:
|
||||
customSize = Containers.GENERIC_9X3;
|
||||
break;
|
||||
case 36:
|
||||
customSize = Containers.GENERIC_9X4;
|
||||
break;
|
||||
case 45:
|
||||
customSize = Containers.GENERIC_9X5;
|
||||
break;
|
||||
case 54:
|
||||
customSize = Containers.GENERIC_9X6;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unsupported custom size " + inventory.getSize());
|
||||
}
|
||||
openCustomInventory(inventory, player, customSize);
|
||||
break;
|
||||
case DISPENSER:
|
||||
if (iinventory instanceof TileEntityDispenser) {
|
||||
getHandle().openContainer((TileEntityDispenser) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:dispenser");
|
||||
openCustomInventory(inventory, player, Containers.GENERIC_3X3);
|
||||
}
|
||||
break;
|
||||
case DROPPER:
|
||||
if (iinventory instanceof TileEntityDropper) {
|
||||
getHandle().openContainer((TileEntityDropper) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:dropper");
|
||||
openCustomInventory(inventory, player, Containers.GENERIC_3X3);
|
||||
}
|
||||
break;
|
||||
case FURNACE:
|
||||
if (iinventory instanceof TileEntityFurnace) {
|
||||
getHandle().openContainer((TileEntityFurnace) iinventory);
|
||||
if (iinventory instanceof TileEntityFurnaceFurnace) {
|
||||
getHandle().openContainer((TileEntityFurnaceFurnace) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:furnace");
|
||||
openCustomInventory(inventory, player, Containers.FURNACE);
|
||||
}
|
||||
break;
|
||||
case WORKBENCH:
|
||||
openCustomInventory(inventory, player, "minecraft:crafting_table");
|
||||
openCustomInventory(inventory, player, Containers.CRAFTING);
|
||||
break;
|
||||
case BREWING:
|
||||
if (iinventory instanceof TileEntityBrewingStand) {
|
||||
getHandle().openContainer((TileEntityBrewingStand) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:brewing_stand");
|
||||
openCustomInventory(inventory, player, Containers.BREWING_STAND);
|
||||
}
|
||||
break;
|
||||
case ENCHANTING:
|
||||
openCustomInventory(inventory, player, "minecraft:enchanting_table");
|
||||
openCustomInventory(inventory, player, Containers.ENCHANTMENT);
|
||||
break;
|
||||
case HOPPER:
|
||||
if (iinventory instanceof TileEntityHopper) {
|
||||
@@ -345,33 +380,67 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
} else if (iinventory instanceof EntityMinecartHopper) {
|
||||
getHandle().openContainer((EntityMinecartHopper) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:hopper");
|
||||
openCustomInventory(inventory, player, Containers.HOPPER);
|
||||
}
|
||||
break;
|
||||
case BEACON:
|
||||
if (iinventory instanceof TileEntityBeacon) {
|
||||
getHandle().openContainer((TileEntityBeacon) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:beacon");
|
||||
openCustomInventory(inventory, player, Containers.BEACON);
|
||||
}
|
||||
break;
|
||||
case ANVIL:
|
||||
if (iinventory instanceof BlockAnvil.TileEntityContainerAnvil) {
|
||||
getHandle().openTileEntity((BlockAnvil.TileEntityContainerAnvil) iinventory);
|
||||
if (iinventory instanceof ITileInventory) {
|
||||
getHandle().openContainer((ITileInventory) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:anvil");
|
||||
openCustomInventory(inventory, player, Containers.ANVIL);
|
||||
}
|
||||
break;
|
||||
case SHULKER_BOX:
|
||||
if (iinventory instanceof TileEntityShulkerBox) {
|
||||
getHandle().openContainer((TileEntityShulkerBox) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, "minecraft:shulker_box");
|
||||
openCustomInventory(inventory, player, Containers.SHULKER_BOX);
|
||||
}
|
||||
break;
|
||||
case BARREL:
|
||||
if (iinventory instanceof TileEntityBarrel) {
|
||||
getHandle().openContainer((TileEntityBarrel) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, Containers.GENERIC_9X3);
|
||||
}
|
||||
break;
|
||||
case BLAST_FURNACE:
|
||||
if (iinventory instanceof TileEntityBlastFurnace) {
|
||||
getHandle().openContainer((TileEntityBlastFurnace) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, Containers.BLAST_FURNACE);
|
||||
}
|
||||
break;
|
||||
case LECTERN:
|
||||
if (iinventory instanceof TileEntityLectern) {
|
||||
getHandle().openContainer((TileEntityLectern) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, Containers.LECTERN);
|
||||
}
|
||||
break;
|
||||
case SMOKER:
|
||||
if (iinventory instanceof TileEntitySmoker) {
|
||||
getHandle().openContainer((TileEntitySmoker) iinventory);
|
||||
} else {
|
||||
openCustomInventory(inventory, player, Containers.SMOKER);
|
||||
}
|
||||
break;
|
||||
case STONECUTTER:
|
||||
openCustomInventory(inventory, player, Containers.STONECUTTER);
|
||||
break;
|
||||
case CREATIVE:
|
||||
case CRAFTING:
|
||||
case MERCHANT:
|
||||
case LOOM:
|
||||
case CARTOGRAPHY:
|
||||
case GRINDSTONE:
|
||||
throw new IllegalArgumentException("Can't open a " + type + " inventory!");
|
||||
}
|
||||
if (getHandle().activeContainer == formerContainer) {
|
||||
@@ -381,25 +450,17 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
}
|
||||
|
||||
private void openCustomInventory(Inventory inventory, EntityPlayer player, String windowType) {
|
||||
private void openCustomInventory(Inventory inventory, EntityPlayer player, Containers<?> windowType) {
|
||||
if (player.playerConnection == null) return;
|
||||
Preconditions.checkArgument(windowType != null, "Unknown windowType");
|
||||
Container container = new CraftContainer(inventory, this.getHandle(), player.nextContainerCounter());
|
||||
|
||||
container = CraftEventFactory.callInventoryOpenEvent(player, container);
|
||||
if(container == null) return;
|
||||
|
||||
String title = container.getBukkitView().getTitle();
|
||||
int size = container.getBukkitView().getTopInventory().getSize();
|
||||
|
||||
// Special cases
|
||||
if (windowType.equals("minecraft:crafting_table")
|
||||
|| windowType.equals("minecraft:anvil")
|
||||
|| windowType.equals("minecraft:enchanting_table")
|
||||
) {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title), size));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title)));
|
||||
getHandle().activeContainer = container;
|
||||
getHandle().activeContainer.addSlotListener(player);
|
||||
}
|
||||
@@ -414,7 +475,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
if (location == null) {
|
||||
location = getLocation();
|
||||
}
|
||||
getHandle().openTileEntity(new BlockWorkbench.TileEntityContainerWorkbench(getHandle().world, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
getHandle().openContainer(((BlockWorkbench) Blocks.CRAFTING_TABLE).getInventory(null, getHandle().world, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
}
|
||||
@@ -434,13 +495,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
// If there isn't an enchant table we can force create one, won't be very useful though.
|
||||
BlockPosition pos = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
TileEntity container = getHandle().world.getTileEntity(pos);
|
||||
if (container == null && force) {
|
||||
container = new TileEntityEnchantTable();
|
||||
container.setWorld(getHandle().world);
|
||||
container.setPosition(pos);
|
||||
}
|
||||
getHandle().openTileEntity((ITileEntityContainer) container);
|
||||
getHandle().openContainer(((BlockEnchantmentTable) Blocks.ENCHANTING_TABLE).getInventory(null, getHandle().world, pos));
|
||||
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
@@ -471,10 +526,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
// Now open the window
|
||||
InventoryType type = inventory.getType();
|
||||
String windowType = CraftContainer.getNotchInventoryType(type);
|
||||
Containers<?> windowType = CraftContainer.getNotchInventoryType(type);
|
||||
String title = inventory.getTitle();
|
||||
int size = inventory.getTopInventory().getSize();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title), size));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title)));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
}
|
||||
@@ -498,16 +552,19 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
}
|
||||
|
||||
IMerchant mcMerchant;
|
||||
IChatBaseComponent name;
|
||||
if (merchant instanceof CraftVillager) {
|
||||
mcMerchant = ((CraftVillager) merchant).getHandle();
|
||||
} else if (merchant instanceof CraftMerchant) {
|
||||
mcMerchant = ((CraftMerchant) merchant).getMerchant();
|
||||
name = ((CraftVillager) merchant).getHandle().getScoreboardDisplayName();
|
||||
} else if (merchant instanceof CraftMerchantCustom) {
|
||||
mcMerchant = ((CraftMerchantCustom) merchant).getMerchant();
|
||||
name = ((CraftMerchantCustom) merchant).getMerchant().getScoreboardDisplayName();
|
||||
} else {
|
||||
throw new IllegalArgumentException("Can't open merchant " + merchant.toString());
|
||||
}
|
||||
|
||||
mcMerchant.setTradingPlayer(this.getHandle());
|
||||
this.getHandle().openTrade(mcMerchant);
|
||||
mcMerchant.openTrade(this.getHandle(), name, 0);
|
||||
|
||||
return this.getHandle().activeContainer.getBukkitView();
|
||||
}
|
||||
@@ -576,17 +633,17 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
return getHandle().undiscoverRecipes(bukkitKeysToMinecraftRecipes(recipes));
|
||||
}
|
||||
|
||||
private Collection<IRecipe> bukkitKeysToMinecraftRecipes(Collection<NamespacedKey> recipeKeys) {
|
||||
Collection<IRecipe> recipes = new ArrayList<>();
|
||||
private Collection<IRecipe<?>> bukkitKeysToMinecraftRecipes(Collection<NamespacedKey> recipeKeys) {
|
||||
Collection<IRecipe<?>> recipes = new ArrayList<>();
|
||||
CraftingManager manager = getHandle().world.getMinecraftServer().getCraftingManager();
|
||||
|
||||
for (NamespacedKey recipeKey : recipeKeys) {
|
||||
IRecipe recipe = manager.a(CraftNamespacedKey.toMinecraft(recipeKey));
|
||||
if (recipe == null) {
|
||||
Optional<? extends IRecipe<?>> recipe = manager.a(CraftNamespacedKey.toMinecraft(recipeKey));
|
||||
if (!recipe.isPresent()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
recipes.add(recipe);
|
||||
recipes.add(recipe.get());
|
||||
}
|
||||
|
||||
return recipes;
|
||||
@@ -595,9 +652,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
@Override
|
||||
public org.bukkit.entity.Entity getShoulderEntityLeft() {
|
||||
if (!getHandle().getShoulderEntityLeft().isEmpty()) {
|
||||
Entity shoulder = EntityTypes.a(getHandle().getShoulderEntityLeft(), getHandle().world);
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityLeft(), getHandle().world);
|
||||
|
||||
return (shoulder == null) ? null : shoulder.getBukkitEntity();
|
||||
return (!shoulder.isPresent()) ? null : shoulder.get().getBukkitEntity();
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -614,9 +671,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
@Override
|
||||
public org.bukkit.entity.Entity getShoulderEntityRight() {
|
||||
if (!getHandle().getShoulderEntityRight().isEmpty()) {
|
||||
Entity shoulder = EntityTypes.a(getHandle().getShoulderEntityRight(), getHandle().world);
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityRight(), getHandle().world);
|
||||
|
||||
return (shoulder == null) ? null : shoulder.getBukkitEntity();
|
||||
return (!shoulder.isPresent()) ? null : shoulder.get().getBukkitEntity();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.server.EntityIllagerAbstract;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Illager;
|
||||
|
||||
public class CraftIllager extends CraftMonster implements Illager {
|
||||
public class CraftIllager extends CraftRaider implements Illager {
|
||||
|
||||
public CraftIllager(CraftServer server, EntityIllagerAbstract entity) {
|
||||
super(server, entity);
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPotion;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LingeringPotion;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class CraftLingeringPotion extends CraftThrownPotion implements LingeringPotion {
|
||||
|
||||
public CraftLingeringPotion(CraftServer server, EntityPotion entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
public void setItem(ItemStack item) {
|
||||
// The ItemStack must not be null.
|
||||
Validate.notNull(item, "ItemStack cannot be null.");
|
||||
|
||||
// The ItemStack must be a potion.
|
||||
Validate.isTrue(item.getType() == Material.LINGERING_POTION, "ItemStack must be a lingering potion. This item stack was " + item.getType() + ".");
|
||||
|
||||
getHandle().setItem(CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPotion getHandle() {
|
||||
return (EntityPotion) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftLingeringPotion";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.LINGERING_POTION;
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import net.minecraft.server.EntityThrownExpBottle;
|
||||
import net.minecraft.server.EntityTippedArrow;
|
||||
import net.minecraft.server.EntitySpectralArrow;
|
||||
import net.minecraft.server.EntityThrownTrident;
|
||||
import net.minecraft.server.EntityTypes;
|
||||
import net.minecraft.server.EntityWither;
|
||||
import net.minecraft.server.EntityWitherSkull;
|
||||
import net.minecraft.server.GenericAttributes;
|
||||
@@ -117,7 +118,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
public void setMaxHealth(double amount) {
|
||||
Validate.isTrue(amount > 0, "Max health must be greater than 0");
|
||||
|
||||
getHandle().getAttributeInstance(GenericAttributes.maxHealth).setValue(amount);
|
||||
getHandle().getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(amount);
|
||||
|
||||
if (getHealth() > amount) {
|
||||
setHealth(amount);
|
||||
@@ -125,7 +126,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
}
|
||||
|
||||
public void resetMaxHealth() {
|
||||
setMaxHealth(getHandle().getAttributeInstance(GenericAttributes.maxHealth).getAttribute().getDefault());
|
||||
setMaxHealth(getHandle().getAttributeInstance(GenericAttributes.MAX_HEALTH).getAttribute().getDefault());
|
||||
}
|
||||
|
||||
public double getEyeHeight() {
|
||||
@@ -352,16 +353,18 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
((EntityArrow) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 3.0F, 1.0F); // ItemBow
|
||||
} else if (ThrownPotion.class.isAssignableFrom(projectile)) {
|
||||
if (LingeringPotion.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityPotion(world, getHandle(), CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
|
||||
launch = new EntityPotion(world, getHandle());
|
||||
((EntityPotion) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
|
||||
} else {
|
||||
launch = new EntityPotion(world, getHandle(), CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
|
||||
launch = new EntityPotion(world, getHandle());
|
||||
((EntityPotion) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
|
||||
}
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, -20.0F, 0.5F, 1.0F); // ItemSplashPotion
|
||||
} else if (ThrownExpBottle.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityThrownExpBottle(world, getHandle());
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, -20.0F, 0.7F, 1.0F); // ItemExpBottle
|
||||
} else if (FishHook.class.isAssignableFrom(projectile) && getHandle() instanceof EntityHuman) {
|
||||
launch = new EntityFishingHook(world, (EntityHuman) getHandle());
|
||||
launch = new EntityFishingHook((EntityHuman) getHandle(), world, 0, 0);
|
||||
} else if (Fireball.class.isAssignableFrom(projectile)) {
|
||||
Location location = getEyeLocation();
|
||||
Vector direction = location.getDirection().multiply(10);
|
||||
@@ -382,7 +385,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
Location location = getEyeLocation();
|
||||
Vector direction = location.getDirection();
|
||||
|
||||
launch = new EntityLlamaSpit(world);
|
||||
launch = EntityTypes.LLAMA_SPIT.a(world);
|
||||
|
||||
((EntityLlamaSpit) launch).shooter = getHandle();
|
||||
((EntityLlamaSpit) launch).shoot(direction.getX(), direction.getY(), direction.getZ(), 1.5F, 10.0F); // EntityLlama
|
||||
|
||||
@@ -28,7 +28,7 @@ public abstract class CraftMinecartContainer extends CraftMinecart implements Lo
|
||||
|
||||
@Override
|
||||
public LootTable getLootTable() {
|
||||
MinecraftKey nmsTable = getHandle().getLootTable();
|
||||
MinecraftKey nmsTable = getHandle().lootTable;
|
||||
if (nmsTable == null) {
|
||||
return null; // return empty loot table?
|
||||
}
|
||||
@@ -49,6 +49,6 @@ public abstract class CraftMinecartContainer extends CraftMinecart implements Lo
|
||||
|
||||
private void setLootTable(LootTable table, long seed) {
|
||||
MinecraftKey newKey = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
|
||||
getHandle().a(newKey, seed);
|
||||
getHandle().setLootTable(newKey, seed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityOcelot;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Ocelot;
|
||||
|
||||
public class CraftOcelot extends CraftTameableAnimal implements Ocelot {
|
||||
public class CraftOcelot extends CraftAnimals implements Ocelot {
|
||||
public CraftOcelot(CraftServer server, EntityOcelot ocelot) {
|
||||
super(server, ocelot);
|
||||
}
|
||||
@@ -17,12 +16,11 @@ public class CraftOcelot extends CraftTameableAnimal implements Ocelot {
|
||||
}
|
||||
|
||||
public Type getCatType() {
|
||||
return Type.getType(getHandle().getCatType());
|
||||
return Type.WILD_OCELOT;
|
||||
}
|
||||
|
||||
public void setCatType(Type type) {
|
||||
Validate.notNull(type, "Cat type cannot be null");
|
||||
getHandle().setCatType(type.getId());
|
||||
throw new UnsupportedOperationException("Cats are now a different entity!");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPainting;
|
||||
import net.minecraft.server.EntityTypes;
|
||||
import net.minecraft.server.Paintings;
|
||||
import net.minecraft.server.WorldServer;
|
||||
|
||||
@@ -53,7 +54,7 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
|
||||
private void update() {
|
||||
WorldServer world = ((CraftWorld) getWorld()).getHandle();
|
||||
EntityPainting painting = new EntityPainting(world);
|
||||
EntityPainting painting = EntityTypes.PAINTING.a(world);
|
||||
painting.blockPosition = getHandle().blockPosition;
|
||||
painting.art = getHandle().art;
|
||||
painting.setDirection(getHandle().direction);
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.server.EntityPanda;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Panda;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftPanda extends CraftAnimals implements Panda {
|
||||
|
||||
public CraftPanda(CraftServer server, EntityPanda entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPanda getHandle() {
|
||||
return (EntityPanda) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.PANDA;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftPanda";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Gene getMainGene() {
|
||||
return fromNms(getHandle().getMainGene());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMainGene(Gene gene) {
|
||||
getHandle().setMainGene(toNms(gene));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Gene getHiddenGene() {
|
||||
return fromNms(getHandle().getHiddenGene());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHiddenGene(Gene gene) {
|
||||
getHandle().setHiddenGene(toNms(gene));
|
||||
}
|
||||
|
||||
public static Gene fromNms(EntityPanda.Gene gene) {
|
||||
Preconditions.checkArgument(gene != null, "Gene may not be null");
|
||||
|
||||
return Gene.values()[gene.ordinal()];
|
||||
}
|
||||
|
||||
public static EntityPanda.Gene toNms(Gene gene) {
|
||||
Preconditions.checkArgument(gene != null, "Gene may not be null");
|
||||
|
||||
return EntityPanda.Gene.values()[gene.ordinal()];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPillager;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||
import org.bukkit.entity.Pillager;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
||||
public class CraftPillager extends CraftIllager implements Pillager {
|
||||
|
||||
public CraftPillager(CraftServer server, EntityPillager entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPillager getHandle() {
|
||||
return (EntityPillager) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.PILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftPillager";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return new CraftInventory(getHandle().getInventory());
|
||||
}
|
||||
}
|
||||
@@ -36,8 +36,6 @@ import net.minecraft.server.Container;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityLiving;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityTracker;
|
||||
import net.minecraft.server.EntityTrackerEntry;
|
||||
import net.minecraft.server.EnumChatFormat;
|
||||
import net.minecraft.server.EnumGamemode;
|
||||
import net.minecraft.server.IChatBaseComponent;
|
||||
@@ -60,6 +58,7 @@ import net.minecraft.server.PacketPlayOutUpdateAttributes;
|
||||
import net.minecraft.server.PacketPlayOutUpdateHealth;
|
||||
import net.minecraft.server.PacketPlayOutWorldEvent;
|
||||
import net.minecraft.server.PacketPlayOutWorldParticles;
|
||||
import net.minecraft.server.PlayerChunkMap;
|
||||
import net.minecraft.server.PlayerConnection;
|
||||
import net.minecraft.server.TileEntitySign;
|
||||
import net.minecraft.server.Vec3D;
|
||||
@@ -399,6 +398,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
case 9:
|
||||
instrumentName = "xylophone";
|
||||
break;
|
||||
case 10:
|
||||
instrumentName = "iron_xylophone";
|
||||
break;
|
||||
case 11:
|
||||
instrumentName = "cow_bell";
|
||||
break;
|
||||
case 12:
|
||||
instrumentName = "didgeridoo";
|
||||
break;
|
||||
case 13:
|
||||
instrumentName = "bit";
|
||||
break;
|
||||
case 14:
|
||||
instrumentName = "banjo";
|
||||
break;
|
||||
case 15:
|
||||
instrumentName = "pling";
|
||||
break;
|
||||
case 16:
|
||||
instrumentName = "xylophone";
|
||||
break;
|
||||
}
|
||||
float f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(CraftSound.getSoundEffect("block.note_block." + instrumentName), net.minecraft.server.SoundCategory.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f));
|
||||
@@ -562,7 +582,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), map.getScale().getValue(), true, icons, data.buffer, 0, 0, 128, 128);
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), map.getScale().getValue(), true, map.isLocked(), icons, data.buffer, 0, 0, 128, 128);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@@ -668,7 +688,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public void setSleepingIgnored(boolean isSleeping) {
|
||||
getHandle().fauxSleeping = isSleeping;
|
||||
((CraftWorld) getWorld()).getHandle().checkSleepStatus();
|
||||
((CraftWorld) getWorld()).getHandle().everyoneSleeping();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1000,9 +1020,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
hiddenPlayers.put(player.getUniqueId(), hidingPlugins);
|
||||
|
||||
// Remove this player from the hidden player's EntityTrackerEntry
|
||||
EntityTracker tracker = ((WorldServer) entity.world).tracker;
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
EntityTrackerEntry entry = tracker.trackedEntities.get(other.getId());
|
||||
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null) {
|
||||
entry.clear(getHandle());
|
||||
}
|
||||
@@ -1042,12 +1062,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
|
||||
EntityTracker tracker = ((WorldServer) entity.world).tracker;
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
|
||||
|
||||
EntityTrackerEntry entry = tracker.trackedEntities.get(other.getId());
|
||||
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
|
||||
entry.updatePlayer(getHandle());
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@ public class CraftRabbit extends CraftAnimals implements Rabbit {
|
||||
if (getRabbitType() == Type.THE_KILLER_BUNNY) {
|
||||
// Reset goals and target finders.
|
||||
World world = ((CraftWorld) this.getWorld()).getHandle();
|
||||
entity.goalSelector = new PathfinderGoalSelector(world != null && world.methodProfiler != null ? world.methodProfiler : null);
|
||||
entity.targetSelector = new PathfinderGoalSelector(world != null && world.methodProfiler != null ? world.methodProfiler : null);
|
||||
entity.goalSelector = new PathfinderGoalSelector(world != null && world.getMethodProfiler() != null ? world.getMethodProfiler() : null);
|
||||
entity.targetSelector = new PathfinderGoalSelector(world != null && world.getMethodProfiler() != null ? world.getMethodProfiler() : null);
|
||||
entity.initializePathFinderGoals();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.EntityRaider;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||
import org.bukkit.entity.Raider;
|
||||
|
||||
public abstract class CraftRaider extends CraftMonster implements Raider {
|
||||
|
||||
public CraftRaider(CraftServer server, EntityRaider entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityRaider getHandle() {
|
||||
return (EntityRaider) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftRaider";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getPatrolTarget() {
|
||||
return getHandle().getPatrolTarget() == null ? null : CraftBlock.at(getHandle().world, getHandle().getPatrolTarget());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPatrolTarget(Block block) {
|
||||
if (block == null) {
|
||||
getHandle().setPatrolTarget((BlockPosition) null);
|
||||
} else {
|
||||
Preconditions.checkArgument(block.getWorld().equals(this.getWorld()), "Block must be in same world");
|
||||
|
||||
getHandle().setPatrolTarget(new BlockPosition(block.getX(), block.getY(), block.getZ()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPatrolLeader() {
|
||||
return getHandle().isPatrolLeader();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPatrolLeader(boolean leader) {
|
||||
getHandle().setPatrolLeader(leader);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityRavager;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Ravager;
|
||||
|
||||
public class CraftRavager extends CraftRaider implements Ravager {
|
||||
|
||||
public CraftRavager(CraftServer server, EntityRavager entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityRavager getHandle() {
|
||||
return (EntityRavager) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.RAVAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftRavager";
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPotion;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.SplashPotion;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class CraftSplashPotion extends CraftThrownPotion implements SplashPotion {
|
||||
|
||||
public CraftSplashPotion(CraftServer server, EntityPotion entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ItemStack item) {
|
||||
// The ItemStack must not be null.
|
||||
Validate.notNull(item, "ItemStack cannot be null.");
|
||||
|
||||
// The ItemStack must be a potion.
|
||||
Validate.isTrue(item.getType() == Material.SPLASH_POTION, "ItemStack must be a splash potion. This item stack was " + item.getType() + ".");
|
||||
|
||||
getHandle().setItem(CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPotion getHandle() {
|
||||
return (EntityPotion) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftSplashPotion";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.SPLASH_POTION;
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
public abstract class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
|
||||
public class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
|
||||
public CraftThrownPotion(CraftServer server, EntityPotion entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
@@ -34,8 +34,24 @@ public abstract class CraftThrownPotion extends CraftProjectile implements Throw
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ItemStack item) {
|
||||
// The ItemStack must not be null.
|
||||
Validate.notNull(item, "ItemStack cannot be null.");
|
||||
|
||||
// The ItemStack must be a potion.
|
||||
Validate.isTrue(item.getType() == Material.LINGERING_POTION || item.getType() == Material.SPLASH_POTION, "ItemStack must be a lingering or splash potion. This item stack was " + item.getType() + ".");
|
||||
|
||||
getHandle().setItem(CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPotion getHandle() {
|
||||
return (EntityPotion) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.SPLASH_POTION;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class CraftTippedArrow extends CraftArrow implements TippedArrow {
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.TIPPED_ARROW;
|
||||
return EntityType.ARROW;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityLLamaTrader;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.TraderLlama;
|
||||
|
||||
public class CraftTraderLlama extends CraftLlama implements TraderLlama {
|
||||
|
||||
public CraftTraderLlama(CraftServer server, EntityLLamaTrader entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityLLamaTrader getHandle() {
|
||||
return (EntityLLamaTrader) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftTraderLlama";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.TRADER_LLAMA;
|
||||
}
|
||||
}
|
||||
@@ -28,11 +28,11 @@ public class CraftVex extends CraftMonster implements Vex {
|
||||
|
||||
@Override
|
||||
public boolean isCharging() {
|
||||
return getHandle().dA();
|
||||
return getHandle().isCharging();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharging(boolean charging) {
|
||||
getHandle().a(charging);
|
||||
getHandle().setCharging(charging);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,15 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Locale;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.IRegistry;
|
||||
import net.minecraft.server.MinecraftKey;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||
import org.bukkit.craftbukkit.inventory.CraftMerchant;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.MerchantRecipe;
|
||||
|
||||
public class CraftVillager extends CraftAgeable implements Villager, InventoryHolder {
|
||||
|
||||
private static final Map<Career, Integer> careerIDMap = new HashMap<>();
|
||||
private CraftMerchant merchant;
|
||||
public class CraftVillager extends CraftAbstractVillager implements Villager {
|
||||
|
||||
public CraftVillager(CraftServer server, EntityVillager entity) {
|
||||
super(server, entity);
|
||||
@@ -40,126 +30,11 @@ public class CraftVillager extends CraftAgeable implements Villager, InventoryHo
|
||||
}
|
||||
|
||||
public Profession getProfession() {
|
||||
return Profession.values()[getHandle().getProfession() + 1]; // Offset by 1 from the zombie types
|
||||
return Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(getHandle().getVillagerData().getProfession()).getKey().toUpperCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
public void setProfession(Profession profession) {
|
||||
Validate.notNull(profession);
|
||||
Validate.isTrue(!profession.isZombie(), "Profession is reserved for Zombies: ", profession);
|
||||
getHandle().setProfession(profession.ordinal() - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Career getCareer() {
|
||||
return getCareer(getProfession(), getHandle().careerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCareer(Career career) {
|
||||
setCareer(career, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCareer(Career career, boolean resetTrades) {
|
||||
if (career == null) {
|
||||
getHandle().careerId = 0; // reset career
|
||||
} else {
|
||||
Validate.isTrue(career.getProfession() == getProfession(), "Career assignment mismatch. Found (" + getProfession() + ") Required (" + career.getProfession() + ")");
|
||||
getHandle().careerId = getCareerID(career);
|
||||
}
|
||||
|
||||
if (resetTrades) {
|
||||
getHandle().trades = null;
|
||||
getHandle().careerLevel = 0; // SPIGOT-4310
|
||||
getHandle().populateTrades();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return new CraftInventory(getHandle().inventory);
|
||||
}
|
||||
|
||||
private CraftMerchant getMerchant() {
|
||||
return (merchant == null) ? merchant = new CraftMerchant(getHandle()) : merchant;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MerchantRecipe> getRecipes() {
|
||||
return getMerchant().getRecipes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipes(List<MerchantRecipe> recipes) {
|
||||
this.getMerchant().setRecipes(recipes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MerchantRecipe getRecipe(int i) {
|
||||
return getMerchant().getRecipe(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipe(int i, MerchantRecipe merchantRecipe) {
|
||||
getMerchant().setRecipe(i, merchantRecipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRecipeCount() {
|
||||
return getMerchant().getRecipeCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTrading() {
|
||||
return getTrader() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HumanEntity getTrader() {
|
||||
return getMerchant().getTrader();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRiches() {
|
||||
return getHandle().riches;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRiches(int riches) {
|
||||
getHandle().riches = riches;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Career getCareer(Profession profession, int id) {
|
||||
Validate.isTrue(id > 0, "Career id must be greater than 0");
|
||||
|
||||
List<Career> careers = profession.getCareers();
|
||||
for (Career c : careers) {
|
||||
if (careerIDMap.containsKey(c) && careerIDMap.get(c) == id) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static int getCareerID(Career career) {
|
||||
return careerIDMap.getOrDefault(career, 0);
|
||||
}
|
||||
|
||||
static {
|
||||
// build Career -> ID map
|
||||
int id = 0;
|
||||
for (Profession prof : Profession.values()) {
|
||||
List<Career> careers = prof.getCareers();
|
||||
if (!careers.isEmpty()) {
|
||||
for (Career c : careers) {
|
||||
careerIDMap.put(c, ++id);
|
||||
}
|
||||
}
|
||||
|
||||
Validate.isTrue(id == careers.size(), "Career id registration mismatch");
|
||||
id = 0;
|
||||
}
|
||||
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(IRegistry.VILLAGER_PROFESSION.get(new MinecraftKey(profession.name().toLowerCase(Locale.ROOT)))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import net.minecraft.server.EntityZombieVillager;
|
||||
import net.minecraft.server.IRegistry;
|
||||
import net.minecraft.server.MinecraftKey;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Villager;
|
||||
@@ -31,12 +35,13 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
|
||||
|
||||
@Override
|
||||
public Villager.Profession getVillagerProfession() {
|
||||
return Villager.Profession.values()[getHandle().getProfession() + Villager.Profession.FARMER.ordinal()];
|
||||
return Villager.Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(getHandle().getVillagerData().getProfession()).getKey().toUpperCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVillagerProfession(Villager.Profession profession) {
|
||||
getHandle().setProfession(profession == null ? 0 : profession.ordinal() - Villager.Profession.FARMER.ordinal());
|
||||
Validate.notNull(profession);
|
||||
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(IRegistry.VILLAGER_PROFESSION.get(new MinecraftKey(profession.name().toLowerCase(Locale.ROOT)))));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityVillagerTrader;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.WanderingTrader;
|
||||
|
||||
public class CraftWanderingTrader extends CraftAbstractVillager implements WanderingTrader {
|
||||
|
||||
public CraftWanderingTrader(CraftServer server, EntityVillagerTrader entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityVillagerTrader getHandle() {
|
||||
return (EntityVillagerTrader) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftWanderingTrader";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.WANDERING_TRADER;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityWeather;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Weather;
|
||||
|
||||
public class CraftWeather extends CraftEntity implements Weather {
|
||||
public CraftWeather(final CraftServer server, final EntityWeather entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityWeather getHandle() {
|
||||
return (EntityWeather) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftWeather";
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.WEATHER;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Witch;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftWitch extends CraftMonster implements Witch {
|
||||
public class CraftWitch extends CraftRaider implements Witch {
|
||||
public CraftWitch(CraftServer server, EntityWitch entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user