@@ -99,6 +99,6 @@ public abstract class CraftAbstractHorse extends CraftAnimals implements Abstrac
|
||||
|
||||
@Override
|
||||
public AbstractHorseInventory getInventory() {
|
||||
return new CraftInventoryAbstractHorse(getHandle().inventoryChest);
|
||||
return new CraftInventoryAbstractHorse(getHandle().inventory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,12 @@ public class CraftAnimals extends CraftAgeable implements Animals {
|
||||
|
||||
@Override
|
||||
public UUID getBreedCause() {
|
||||
return getHandle().breedCause;
|
||||
return getHandle().loveCause;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBreedCause(UUID uuid) {
|
||||
getHandle().breedCause = uuid;
|
||||
getHandle().loveCause = uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,6 +45,6 @@ public class CraftAnimals extends CraftAgeable implements Animals {
|
||||
|
||||
@Override
|
||||
public int getLoveModeTicks() {
|
||||
return getHandle().loveTicks;
|
||||
return getHandle().inLove;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
|
||||
public void setGravity(boolean gravity) {
|
||||
super.setGravity(gravity);
|
||||
// Armor stands are special
|
||||
getHandle().noclip = !gravity;
|
||||
getHandle().noPhysics = !gravity;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,7 +26,7 @@ public class CraftArrow extends AbstractProjectile implements AbstractArrow {
|
||||
|
||||
@Override
|
||||
public int getKnockbackStrength() {
|
||||
return getHandle().knockbackStrength;
|
||||
return getHandle().knockback;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,13 +94,13 @@ public class CraftArrow extends AbstractProjectile implements AbstractArrow {
|
||||
|
||||
@Override
|
||||
public PickupStatus getPickupStatus() {
|
||||
return PickupStatus.values()[getHandle().fromPlayer.ordinal()];
|
||||
return PickupStatus.values()[getHandle().pickup.ordinal()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPickupStatus(PickupStatus status) {
|
||||
Preconditions.checkNotNull(status, "status");
|
||||
getHandle().fromPlayer = EntityArrow.PickupStatus.a(status.ordinal());
|
||||
getHandle().pickup = EntityArrow.PickupStatus.a(status.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,7 +108,7 @@ public class CraftArrow extends AbstractProjectile implements AbstractArrow {
|
||||
super.setTicksLived(value);
|
||||
|
||||
// Second field for EntityArrow
|
||||
getHandle().despawnCounter = value;
|
||||
getHandle().life = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Axolotl;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftAxolotl extends CraftAnimals implements Axolotl {
|
||||
|
||||
public CraftAxolotl(CraftServer server, net.minecraft.world.entity.animal.axolotl.Axolotl entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.entity.animal.axolotl.Axolotl getHandle() {
|
||||
return (net.minecraft.world.entity.animal.axolotl.Axolotl) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.AXOLOTL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftAxolotl";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayingDead() {
|
||||
return getHandle().isPlayingDead();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayingDead(boolean playingDead) {
|
||||
getHandle().setPlayingDead(playingDead);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Variant getVariant() {
|
||||
return Variant.values()[getHandle().getVariant().ordinal()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVariant(Variant variant) {
|
||||
Preconditions.checkArgument(variant != null, "variant");
|
||||
|
||||
getHandle().setVariant(net.minecraft.world.entity.animal.axolotl.Axolotl.Variant.BY_ID[variant.ordinal()]);
|
||||
}
|
||||
}
|
||||
@@ -85,7 +85,7 @@ public class CraftBee extends CraftAnimals implements Bee {
|
||||
|
||||
@Override
|
||||
public int getCannotEnterHiveTicks() {
|
||||
return getHandle().cannotEnterHiveTicks;
|
||||
return getHandle().stayOutOfHiveCountdown;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,7 +15,7 @@ public class CraftComplexPart extends CraftEntity implements ComplexEntityPart {
|
||||
|
||||
@Override
|
||||
public ComplexLivingEntity getParent() {
|
||||
return (ComplexLivingEntity) ((EntityEnderDragon) getHandle().owner).getBukkitEntity();
|
||||
return (ComplexLivingEntity) ((EntityEnderDragon) getHandle().parentMob).getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -44,12 +44,12 @@ public class CraftCreeper extends CraftMonster implements Creeper {
|
||||
public void setMaxFuseTicks(int ticks) {
|
||||
Preconditions.checkArgument(ticks >= 0, "ticks < 0");
|
||||
|
||||
getHandle().maxFuseTicks = ticks;
|
||||
getHandle().maxSwell = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFuseTicks() {
|
||||
return getHandle().maxFuseTicks;
|
||||
return getHandle().maxSwell;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,12 +57,12 @@ public class CraftCreeper extends CraftMonster implements Creeper {
|
||||
Preconditions.checkArgument(ticks >= 0, "ticks < 0");
|
||||
Preconditions.checkArgument(ticks <= getMaxFuseTicks(), "ticks > maxFuseTicks");
|
||||
|
||||
getHandle().fuseTicks = ticks;
|
||||
getHandle().swell = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFuseTicks() {
|
||||
return getHandle().fuseTicks;
|
||||
return getHandle().swell;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,7 +25,7 @@ public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderD
|
||||
public Set<ComplexEntityPart> getParts() {
|
||||
Builder<ComplexEntityPart> builder = ImmutableSet.builder();
|
||||
|
||||
for (EntityComplexPart part : getHandle().children) {
|
||||
for (EntityComplexPart part : getHandle().subEntities) {
|
||||
builder.add((ComplexEntityPart) part.getBukkitEntity());
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderD
|
||||
|
||||
@Override
|
||||
public Phase getPhase() {
|
||||
return Phase.values()[getHandle().getDataWatcher().get(EntityEnderDragon.PHASE)];
|
||||
return Phase.values()[getHandle().getDataWatcher().get(EntityEnderDragon.DATA_PHASE)];
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,6 +77,6 @@ public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderD
|
||||
|
||||
@Override
|
||||
public int getDeathAnimationTicks() {
|
||||
return getHandle().deathAnimationTicks;
|
||||
return getHandle().dragonDeathTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class CraftEnderSignal extends CraftEntity implements EnderSignal {
|
||||
|
||||
@Override
|
||||
public Location getTargetLocation() {
|
||||
return new Location(getWorld(), getHandle().targetX, getHandle().targetY, getHandle().targetZ, getHandle().yaw, getHandle().pitch);
|
||||
return new Location(getWorld(), getHandle().tx, getHandle().ty, getHandle().tz, getHandle().getYRot(), getHandle().getXRot());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,17 +44,17 @@ public class CraftEnderSignal extends CraftEntity implements EnderSignal {
|
||||
|
||||
@Override
|
||||
public boolean getDropItem() {
|
||||
return getHandle().shouldDropItem;
|
||||
return getHandle().surviveAfterDeath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDropItem(boolean shouldDropItem) {
|
||||
getHandle().shouldDropItem = shouldDropItem;
|
||||
getHandle().surviveAfterDeath = shouldDropItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getItem());
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getSuppliedItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,11 +64,11 @@ public class CraftEnderSignal extends CraftEntity implements EnderSignal {
|
||||
|
||||
@Override
|
||||
public int getDespawnTimer() {
|
||||
return getHandle().despawnTimer;
|
||||
return getHandle().life;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDespawnTimer(int time) {
|
||||
getHandle().despawnTimer = time;
|
||||
getHandle().life = time;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,11 +28,11 @@ public class CraftEndermite extends CraftMonster implements Endermite {
|
||||
|
||||
@Override
|
||||
public boolean isPlayerSpawned() {
|
||||
return getHandle().isPlayerSpawned();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerSpawned(boolean playerSpawned) {
|
||||
getHandle().setPlayerSpawned(playerSpawned);
|
||||
// Nop
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ import net.minecraft.world.entity.EntityFlying;
|
||||
import net.minecraft.world.entity.EntityLightning;
|
||||
import net.minecraft.world.entity.EntityLiving;
|
||||
import net.minecraft.world.entity.EntityTameableAnimal;
|
||||
import net.minecraft.world.entity.GlowSquid;
|
||||
import net.minecraft.world.entity.Marker;
|
||||
import net.minecraft.world.entity.ambient.EntityAmbient;
|
||||
import net.minecraft.world.entity.ambient.EntityBat;
|
||||
import net.minecraft.world.entity.animal.EntityAnimal;
|
||||
@@ -49,6 +51,8 @@ import net.minecraft.world.entity.animal.EntityTropicalFish;
|
||||
import net.minecraft.world.entity.animal.EntityTurtle;
|
||||
import net.minecraft.world.entity.animal.EntityWaterAnimal;
|
||||
import net.minecraft.world.entity.animal.EntityWolf;
|
||||
import net.minecraft.world.entity.animal.axolotl.Axolotl;
|
||||
import net.minecraft.world.entity.animal.goat.Goat;
|
||||
import net.minecraft.world.entity.animal.horse.EntityHorse;
|
||||
import net.minecraft.world.entity.animal.horse.EntityHorseAbstract;
|
||||
import net.minecraft.world.entity.animal.horse.EntityHorseChestedAbstract;
|
||||
@@ -67,6 +71,7 @@ import net.minecraft.world.entity.decoration.EntityHanging;
|
||||
import net.minecraft.world.entity.decoration.EntityItemFrame;
|
||||
import net.minecraft.world.entity.decoration.EntityLeash;
|
||||
import net.minecraft.world.entity.decoration.EntityPainting;
|
||||
import net.minecraft.world.entity.decoration.GlowItemFrame;
|
||||
import net.minecraft.world.entity.item.EntityFallingBlock;
|
||||
import net.minecraft.world.entity.item.EntityItem;
|
||||
import net.minecraft.world.entity.item.EntityTNTPrimed;
|
||||
@@ -198,7 +203,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
// Water Animals
|
||||
else if (entity instanceof EntityWaterAnimal) {
|
||||
if (entity instanceof EntitySquid) { return new CraftSquid(server, (EntitySquid) entity); }
|
||||
if (entity instanceof EntitySquid) {
|
||||
if (entity instanceof GlowSquid) { return new CraftGlowSquid(server, (GlowSquid) entity); }
|
||||
else { return new CraftSquid(server, (EntitySquid) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityFish) {
|
||||
if (entity instanceof EntityCod) { return new CraftCod(server, (EntityCod) entity); }
|
||||
else if (entity instanceof EntityPufferFish) { return new CraftPufferFish(server, (EntityPufferFish) entity); }
|
||||
@@ -243,6 +251,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityBee) { return new CraftBee(server, (EntityBee) entity); }
|
||||
else if (entity instanceof EntityHoglin) { return new CraftHoglin(server, (EntityHoglin) entity); }
|
||||
else if (entity instanceof EntityStrider) { return new CraftStrider(server, (EntityStrider) entity); }
|
||||
else if (entity instanceof Axolotl) { return new CraftAxolotl(server, (Axolotl) entity); }
|
||||
else if (entity instanceof Goat) { return new CraftGoat(server, (Goat) entity); }
|
||||
else { return new CraftAnimals(server, (EntityAnimal) entity); }
|
||||
}
|
||||
// Monsters
|
||||
@@ -332,7 +342,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
else if (entity instanceof EntityComplexPart) {
|
||||
EntityComplexPart part = (EntityComplexPart) entity;
|
||||
if (part.owner instanceof EntityEnderDragon) { return new CraftEnderDragonPart(server, (EntityComplexPart) entity); }
|
||||
if (part.parentMob instanceof EntityEnderDragon) { return new CraftEnderDragonPart(server, (EntityComplexPart) entity); }
|
||||
else { return new CraftComplexPart(server, (EntityComplexPart) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityExperienceOrb) { return new CraftExperienceOrb(server, (EntityExperienceOrb) entity); }
|
||||
@@ -373,7 +383,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityMinecartCommandBlock) { return new CraftMinecartCommand(server, (EntityMinecartCommandBlock) entity); }
|
||||
} else if (entity instanceof EntityHanging) {
|
||||
if (entity instanceof EntityPainting) { return new CraftPainting(server, (EntityPainting) entity); }
|
||||
else if (entity instanceof EntityItemFrame) { return new CraftItemFrame(server, (EntityItemFrame) entity); }
|
||||
else if (entity instanceof EntityItemFrame) {
|
||||
if (entity instanceof GlowItemFrame) { return new CraftGlowItemFrame(server, (GlowItemFrame) entity); }
|
||||
else { return new CraftItemFrame(server, (EntityItemFrame) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityLeash) { return new CraftLeash(server, (EntityLeash) entity); }
|
||||
else { return new CraftHanging(server, (EntityHanging) entity); }
|
||||
}
|
||||
@@ -383,6 +396,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityAreaEffectCloud) { return new CraftAreaEffectCloud(server, (EntityAreaEffectCloud) entity); }
|
||||
else if (entity instanceof EntityEvokerFangs) { return new CraftEvokerFangs(server, (EntityEvokerFangs) entity); }
|
||||
else if (entity instanceof EntityLlamaSpit) { return new CraftLlamaSpit(server, (EntityLlamaSpit) entity); }
|
||||
else if (entity instanceof Marker) { return new CraftMarker(server, (Marker) entity); }
|
||||
// CHECKSTYLE:ON
|
||||
|
||||
throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass()));
|
||||
@@ -390,7 +404,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public Location getLocation() {
|
||||
return new Location(getWorld(), entity.locX(), entity.locY(), entity.locZ(), entity.getBukkitYaw(), entity.pitch);
|
||||
return new Location(getWorld(), entity.locX(), entity.locY(), entity.locZ(), entity.getBukkitYaw(), entity.getXRot());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -401,7 +415,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
loc.setY(entity.locY());
|
||||
loc.setZ(entity.locZ());
|
||||
loc.setYaw(entity.getBukkitYaw());
|
||||
loc.setPitch(entity.pitch);
|
||||
loc.setPitch(entity.getXRot());
|
||||
}
|
||||
|
||||
return loc;
|
||||
@@ -417,7 +431,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
Preconditions.checkArgument(velocity != null, "velocity");
|
||||
velocity.checkFinite();
|
||||
entity.setMot(CraftVector.toNMS(velocity));
|
||||
entity.velocityChanged = true;
|
||||
entity.hurtMarked = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -451,7 +465,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public World getWorld() {
|
||||
return entity.world.getWorld();
|
||||
return entity.level.getWorld();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -462,10 +476,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
yaw = Location.normalizeYaw(yaw);
|
||||
pitch = Location.normalizePitch(pitch);
|
||||
|
||||
entity.yaw = yaw;
|
||||
entity.pitch = pitch;
|
||||
entity.lastYaw = yaw;
|
||||
entity.lastPitch = pitch;
|
||||
entity.setYRot(yaw);
|
||||
entity.setXRot(pitch);
|
||||
entity.yRotO = yaw;
|
||||
entity.xRotO = pitch;
|
||||
entity.setHeadRotation(yaw);
|
||||
}
|
||||
|
||||
@@ -479,7 +493,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
Preconditions.checkArgument(location != null, "location");
|
||||
location.checkFinite();
|
||||
|
||||
if (entity.isVehicle() || entity.dead) {
|
||||
if (entity.isVehicle() || entity.isRemoved()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -512,7 +526,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z) {
|
||||
List<Entity> notchEntityList = entity.world.getEntities(entity, entity.getBoundingBox().grow(x, y, z), null);
|
||||
List<Entity> notchEntityList = entity.level.getEntities(entity, entity.getBoundingBox().grow(x, y, z), null);
|
||||
List<org.bukkit.entity.Entity> bukkitEntityList = new java.util.ArrayList<org.bukkit.entity.Entity>(notchEntityList.size());
|
||||
|
||||
for (Entity e : notchEntityList) {
|
||||
@@ -528,7 +542,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public int getFireTicks() {
|
||||
return entity.fireTicks;
|
||||
return entity.remainingFireTicks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -538,7 +552,39 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public void setFireTicks(int ticks) {
|
||||
entity.fireTicks = ticks;
|
||||
entity.remainingFireTicks = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisualFire(boolean fire) {
|
||||
getHandle().hasVisualFire = fire;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisualFire() {
|
||||
return getHandle().hasVisualFire;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFreezeTicks() {
|
||||
return getHandle().getTicksFrozen();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFreezeTicks() {
|
||||
return getHandle().getTicksRequiredToFreeze();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFreezeTicks(int ticks) {
|
||||
Preconditions.checkArgument(0 <= ticks && ticks <= getMaxFreezeTicks(), "Ticks cannot be less than 0 or greater than getMaxFreezeTicks");
|
||||
|
||||
getHandle().setTicksFrozen(ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFrozen() {
|
||||
return getHandle().isFullyFrozen();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -662,7 +708,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public int getTicksLived() {
|
||||
return getHandle().ticksLived;
|
||||
return getHandle().tickCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -670,7 +716,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (value <= 0) {
|
||||
throw new IllegalArgumentException("Age must be at least 1 tick");
|
||||
}
|
||||
getHandle().ticksLived = value;
|
||||
getHandle().tickCount = value;
|
||||
}
|
||||
|
||||
public Entity getHandle() {
|
||||
@@ -682,7 +728,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
Preconditions.checkArgument(type != null, "type");
|
||||
|
||||
if (type.getApplicable().isInstance(this)) {
|
||||
this.getHandle().world.broadcastEntityEffect(getHandle(), type.getData());
|
||||
this.getHandle().level.broadcastEntityEffect(getHandle(), type.getData());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -881,16 +927,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
@Override
|
||||
public void setGlowing(boolean flag) {
|
||||
getHandle().glowing = flag;
|
||||
Entity e = getHandle();
|
||||
if (e.getFlag(6) != flag) {
|
||||
e.setFlag(6, flag);
|
||||
}
|
||||
getHandle().setGlowingTag(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGlowing() {
|
||||
return getHandle().glowing;
|
||||
return getHandle().isCurrentlyGlowing();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -64,6 +64,6 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock {
|
||||
super.setTicksLived(value);
|
||||
|
||||
// Second field for EntityFallingBlock
|
||||
getHandle().ticksLived = value;
|
||||
getHandle().time = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
|
||||
|
||||
@Override
|
||||
public Vector getDirection() {
|
||||
return new Vector(getHandle().dirX, getHandle().dirY, getHandle().dirZ);
|
||||
return new Vector(getHandle().xPower, getHandle().yPower, getHandle().zPower);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,11 +19,11 @@ public class CraftFirework extends CraftProjectile implements Firework {
|
||||
public CraftFirework(CraftServer server, EntityFireworks entity) {
|
||||
super(server, entity);
|
||||
|
||||
ItemStack item = getHandle().getDataWatcher().get(EntityFireworks.FIREWORK_ITEM);
|
||||
ItemStack item = getHandle().getDataWatcher().get(EntityFireworks.DATA_ID_FIREWORKS_ITEM);
|
||||
|
||||
if (item.isEmpty()) {
|
||||
item = new ItemStack(Items.FIREWORK_ROCKET);
|
||||
getHandle().getDataWatcher().set(EntityFireworks.FIREWORK_ITEM, item);
|
||||
getHandle().getDataWatcher().set(EntityFireworks.DATA_ID_FIREWORKS_ITEM, item);
|
||||
}
|
||||
|
||||
this.item = CraftItemStack.asCraftMirror(item);
|
||||
@@ -59,14 +59,14 @@ public class CraftFirework extends CraftProjectile implements Firework {
|
||||
item.setItemMeta(meta);
|
||||
|
||||
// Copied from EntityFireworks constructor, update firework lifetime/power
|
||||
getHandle().expectedLifespan = 10 * (1 + meta.getPower()) + random.nextInt(6) + random.nextInt(7);
|
||||
getHandle().lifetime = 10 * (1 + meta.getPower()) + random.nextInt(6) + random.nextInt(7);
|
||||
|
||||
getHandle().getDataWatcher().markDirty(EntityFireworks.FIREWORK_ITEM);
|
||||
getHandle().getDataWatcher().markDirty(EntityFireworks.DATA_ID_FIREWORKS_ITEM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detonate() {
|
||||
getHandle().expectedLifespan = 0;
|
||||
getHandle().lifetime = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,6 +76,6 @@ public class CraftFirework extends CraftProjectile implements Firework {
|
||||
|
||||
@Override
|
||||
public void setShotAtAngle(boolean shotAtAngle) {
|
||||
getHandle().getDataWatcher().set(EntityFireworks.SHOT_AT_ANGLE, shotAtAngle);
|
||||
getHandle().getDataWatcher().set(EntityFireworks.DATA_SHOT_AT_ANGLE, shotAtAngle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class CraftFishHook extends CraftProjectile implements FishHook {
|
||||
EntityFishingHook hook = getHandle();
|
||||
|
||||
if (this.biteChance == -1) {
|
||||
if (hook.world.isRainingAt(new BlockPosition(MathHelper.floor(hook.locX()), MathHelper.floor(hook.locY()) + 1, MathHelper.floor(hook.locZ())))) {
|
||||
if (hook.level.isRainingAt(new BlockPosition(MathHelper.floor(hook.locX()), MathHelper.floor(hook.locY()) + 1, MathHelper.floor(hook.locZ())))) {
|
||||
return 1 / 300.0;
|
||||
}
|
||||
return 1 / 500.0;
|
||||
@@ -92,7 +92,7 @@ public class CraftFishHook extends CraftProjectile implements FishHook {
|
||||
|
||||
@Override
|
||||
public Entity getHookedEntity() {
|
||||
net.minecraft.world.entity.Entity hooked = getHandle().hooked;
|
||||
net.minecraft.world.entity.Entity hooked = getHandle().hookedIn;
|
||||
return (hooked != null) ? hooked.getBukkitEntity() : null;
|
||||
}
|
||||
|
||||
@@ -100,23 +100,23 @@ public class CraftFishHook extends CraftProjectile implements FishHook {
|
||||
public void setHookedEntity(Entity entity) {
|
||||
EntityFishingHook hook = getHandle();
|
||||
|
||||
hook.hooked = (entity != null) ? ((CraftEntity) entity).getHandle() : null;
|
||||
hook.getDataWatcher().set(EntityFishingHook.HOOKED_ENTITY, hook.hooked != null ? hook.hooked.getId() + 1 : 0);
|
||||
hook.hookedIn = (entity != null) ? ((CraftEntity) entity).getHandle() : null;
|
||||
hook.getDataWatcher().set(EntityFishingHook.DATA_HOOKED_ENTITY, hook.hookedIn != null ? hook.hookedIn.getId() + 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean pullHookedEntity() {
|
||||
EntityFishingHook hook = getHandle();
|
||||
if (hook.hooked == null) {
|
||||
if (hook.hookedIn == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
hook.reel();
|
||||
hook.reel(hook.hookedIn);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HookState getState() {
|
||||
return HookState.values()[getHandle().hookState.ordinal()];
|
||||
return HookState.values()[getHandle().currentState.ordinal()];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class CraftFox extends CraftAnimals implements Fox {
|
||||
|
||||
@Override
|
||||
public AnimalTamer getFirstTrustedPlayer() {
|
||||
UUID uuid = getHandle().getDataWatcher().get(EntityFox.FIRST_TRUSTED_PLAYER).orElse(null);
|
||||
UUID uuid = getHandle().getDataWatcher().get(EntityFox.DATA_TRUSTED_ID_0).orElse(null);
|
||||
if (uuid == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -85,16 +85,16 @@ public class CraftFox extends CraftAnimals implements Fox {
|
||||
|
||||
@Override
|
||||
public void setFirstTrustedPlayer(AnimalTamer player) {
|
||||
if (player == null && getHandle().getDataWatcher().get(EntityFox.SECOND_TRUSTED_PLAYER).isPresent()) {
|
||||
if (player == null && getHandle().getDataWatcher().get(EntityFox.DATA_TRUSTED_ID_1).isPresent()) {
|
||||
throw new IllegalStateException("Must remove second trusted player first");
|
||||
}
|
||||
|
||||
getHandle().getDataWatcher().set(EntityFox.FIRST_TRUSTED_PLAYER, player == null ? Optional.empty() : Optional.of(player.getUniqueId()));
|
||||
getHandle().getDataWatcher().set(EntityFox.DATA_TRUSTED_ID_0, player == null ? Optional.empty() : Optional.of(player.getUniqueId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnimalTamer getSecondTrustedPlayer() {
|
||||
UUID uuid = getHandle().getDataWatcher().get(EntityFox.SECOND_TRUSTED_PLAYER).orElse(null);
|
||||
UUID uuid = getHandle().getDataWatcher().get(EntityFox.DATA_TRUSTED_ID_1).orElse(null);
|
||||
if (uuid == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -109,10 +109,10 @@ public class CraftFox extends CraftAnimals implements Fox {
|
||||
|
||||
@Override
|
||||
public void setSecondTrustedPlayer(AnimalTamer player) {
|
||||
if (player != null && !getHandle().getDataWatcher().get(EntityFox.FIRST_TRUSTED_PLAYER).isPresent()) {
|
||||
if (player != null && !getHandle().getDataWatcher().get(EntityFox.DATA_TRUSTED_ID_0).isPresent()) {
|
||||
throw new IllegalStateException("Must add first trusted player first");
|
||||
}
|
||||
|
||||
getHandle().getDataWatcher().set(EntityFox.SECOND_TRUSTED_PLAYER, player == null ? Optional.empty() : Optional.of(player.getUniqueId()));
|
||||
getHandle().getDataWatcher().set(EntityFox.DATA_TRUSTED_ID_1, player == null ? Optional.empty() : Optional.of(player.getUniqueId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.GlowItemFrame;
|
||||
|
||||
public class CraftGlowItemFrame extends CraftItemFrame implements GlowItemFrame {
|
||||
|
||||
public CraftGlowItemFrame(CraftServer server, net.minecraft.world.entity.decoration.GlowItemFrame entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.entity.decoration.GlowItemFrame getHandle() {
|
||||
return (net.minecraft.world.entity.decoration.GlowItemFrame) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.GLOW_ITEM_FRAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftGlowItemFrame";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.GlowSquid;
|
||||
|
||||
public class CraftGlowSquid extends CraftSquid implements GlowSquid {
|
||||
|
||||
public CraftGlowSquid(CraftServer server, net.minecraft.world.entity.GlowSquid entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.entity.GlowSquid getHandle() {
|
||||
return (net.minecraft.world.entity.GlowSquid) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.GLOW_SQUID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftGlowSquid";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDarkTicksRemaining() {
|
||||
return getHandle().getDarkTicksRemaining();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDarkTicksRemaining(int darkTicksRemaining) {
|
||||
Preconditions.checkArgument(darkTicksRemaining >= 0, "darkTicksRemaining must be >= 0");
|
||||
getHandle().setDarkTicksRemaining(darkTicksRemaining);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Goat;
|
||||
|
||||
public class CraftGoat extends CraftAnimals implements Goat {
|
||||
|
||||
public CraftGoat(CraftServer server, net.minecraft.world.entity.animal.goat.Goat entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.entity.animal.goat.Goat getHandle() {
|
||||
return (net.minecraft.world.entity.animal.goat.Goat) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.GOAT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftGoat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isScreaming() {
|
||||
return getHandle().isScreamingGoat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScreaming(boolean screaming) {
|
||||
getHandle().setScreamingGoat(screaming);
|
||||
}
|
||||
}
|
||||
@@ -81,12 +81,12 @@ public class CraftHanging extends CraftEntity implements Hanging {
|
||||
}
|
||||
|
||||
WorldServer world = ((CraftWorld) getWorld()).getHandle();
|
||||
PlayerChunkMap.EntityTracker entityTracker = world.getChunkProvider().playerChunkMap.trackedEntities.get(getEntityId());
|
||||
PlayerChunkMap.EntityTracker entityTracker = world.getChunkProvider().chunkMap.entityMap.get(getEntityId());
|
||||
|
||||
if (entityTracker == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
entityTracker.broadcast(getHandle().P());
|
||||
entityTracker.broadcast(getHandle().getPacket());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,16 +35,16 @@ public class CraftHoglin extends CraftAnimals implements Hoglin {
|
||||
@Override
|
||||
public int getConversionTime() {
|
||||
Preconditions.checkState(isConverting(), "Entity not converting");
|
||||
return getHandle().conversionTicks;
|
||||
return getHandle().timeInOverworld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConversionTime(int time) {
|
||||
if (time < 0) {
|
||||
getHandle().conversionTicks = -1;
|
||||
getHandle().timeInOverworld = -1;
|
||||
getHandle().setImmuneToZombification(false);
|
||||
} else {
|
||||
getHandle().conversionTicks = time;
|
||||
getHandle().timeInOverworld = time;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ public class CraftHorse extends CraftAbstractHorse implements Horse {
|
||||
|
||||
@Override
|
||||
public HorseInventory getInventory() {
|
||||
return new CraftInventoryHorse(getHandle().inventoryChest);
|
||||
return new CraftInventoryHorse(getHandle().inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -73,7 +73,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
public CraftHumanEntity(final CraftServer server, final EntityHuman entity) {
|
||||
super(server, entity);
|
||||
mode = server.getDefaultGameMode();
|
||||
this.inventory = new CraftInventoryPlayer(entity.inventory);
|
||||
this.inventory = new CraftInventoryPlayer(entity.getInventory());
|
||||
enderChest = new CraftInventory(entity.getEnderChest());
|
||||
}
|
||||
|
||||
@@ -109,21 +109,21 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
@Override
|
||||
public ItemStack getItemOnCursor() {
|
||||
return CraftItemStack.asCraftMirror(getHandle().inventory.getCarried());
|
||||
return CraftItemStack.asCraftMirror(getHandle().inventoryMenu.getCarried());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemOnCursor(ItemStack item) {
|
||||
net.minecraft.world.item.ItemStack stack = CraftItemStack.asNMSCopy(item);
|
||||
getHandle().inventory.setCarried(stack);
|
||||
getHandle().inventoryMenu.setCarried(stack);
|
||||
if (this instanceof CraftPlayer) {
|
||||
((EntityPlayer) getHandle()).broadcastCarriedItem(); // Send set slot for cursor
|
||||
getHandle().inventoryMenu.broadcastCarriedItem(); // Send set slot for cursor
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSleepTicks() {
|
||||
return getHandle().sleepTicks;
|
||||
return getHandle().sleepCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -133,7 +133,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
Preconditions.checkArgument(location.getWorld().equals(getWorld()), "Cannot sleep across worlds");
|
||||
|
||||
BlockPosition blockposition = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
IBlockData iblockdata = getHandle().world.getType(blockposition);
|
||||
IBlockData iblockdata = getHandle().level.getType(blockposition);
|
||||
if (!(iblockdata.getBlock() instanceof BlockBed)) {
|
||||
return false;
|
||||
}
|
||||
@@ -144,7 +144,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
// From BlockBed
|
||||
iblockdata = (IBlockData) iblockdata.set(BlockBed.OCCUPIED, true);
|
||||
getHandle().world.setTypeAndData(blockposition, iblockdata, 4);
|
||||
getHandle().level.setTypeAndData(blockposition, iblockdata, 4);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -256,7 +256,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
public void setHandle(final EntityHuman entity) {
|
||||
super.setHandle(entity);
|
||||
this.inventory = new CraftInventoryPlayer(entity.inventory);
|
||||
this.inventory = new CraftInventoryPlayer(entity.getInventory());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -266,14 +266,14 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
@Override
|
||||
public InventoryView getOpenInventory() {
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
return getHandle().containerMenu.getBukkitView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InventoryView openInventory(Inventory inventory) {
|
||||
if (!(getHandle() instanceof EntityPlayer)) return null;
|
||||
EntityPlayer player = (EntityPlayer) getHandle();
|
||||
Container formerContainer = getHandle().activeContainer;
|
||||
Container formerContainer = getHandle().containerMenu;
|
||||
|
||||
ITileInventory iinventory = null;
|
||||
if (inventory instanceof CraftInventoryDoubleChest) {
|
||||
@@ -291,7 +291,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
if (iinventory instanceof TileEntity) {
|
||||
TileEntity te = (TileEntity) iinventory;
|
||||
if (!te.hasWorld()) {
|
||||
te.setLocation(getHandle().world, getHandle().getChunkCoordinates());
|
||||
te.setWorld(getHandle().level);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -303,26 +303,26 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
openCustomInventory(inventory, player, container);
|
||||
}
|
||||
|
||||
if (getHandle().activeContainer == formerContainer) {
|
||||
if (getHandle().containerMenu == formerContainer) {
|
||||
return null;
|
||||
}
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
getHandle().containerMenu.checkReachable = false;
|
||||
return getHandle().containerMenu.getBukkitView();
|
||||
}
|
||||
|
||||
private void openCustomInventory(Inventory inventory, EntityPlayer player, Containers<?> windowType) {
|
||||
if (player.playerConnection == null) return;
|
||||
private static void openCustomInventory(Inventory inventory, EntityPlayer player, Containers<?> windowType) {
|
||||
if (player.connection == null) return;
|
||||
Preconditions.checkArgument(windowType != null, "Unknown windowType");
|
||||
Container container = new CraftContainer(inventory, this.getHandle(), player.nextContainerCounter());
|
||||
Container container = new CraftContainer(inventory, player, player.nextContainerCounter());
|
||||
|
||||
container = CraftEventFactory.callInventoryOpenEvent(player, container);
|
||||
if (container == null) return;
|
||||
|
||||
String title = container.getBukkitView().getTitle();
|
||||
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0]));
|
||||
getHandle().activeContainer = container;
|
||||
getHandle().activeContainer.addSlotListener(player);
|
||||
player.connection.sendPacket(new PacketPlayOutOpenWindow(container.containerId, windowType, CraftChatMessage.fromString(title)[0]));
|
||||
player.containerMenu = container;
|
||||
player.initMenu(container);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -336,11 +336,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
getHandle().openContainer(((BlockWorkbench) Blocks.CRAFTING_TABLE).getInventory(null, getHandle().world, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
getHandle().openContainer(((BlockWorkbench) Blocks.CRAFTING_TABLE).getInventory(null, getHandle().level, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
getHandle().containerMenu.checkReachable = false;
|
||||
}
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
return getHandle().containerMenu.getBukkitView();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -357,21 +357,21 @@ 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());
|
||||
getHandle().openContainer(((BlockEnchantmentTable) Blocks.ENCHANTING_TABLE).getInventory(null, getHandle().world, pos));
|
||||
getHandle().openContainer(((BlockEnchantmentTable) Blocks.ENCHANTING_TABLE).getInventory(null, getHandle().level, pos));
|
||||
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
getHandle().containerMenu.checkReachable = false;
|
||||
}
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
return getHandle().containerMenu.getBukkitView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openInventory(InventoryView inventory) {
|
||||
if (!(getHandle() instanceof EntityPlayer)) return; // TODO: NPC support?
|
||||
if (((EntityPlayer) getHandle()).playerConnection == null) return;
|
||||
if (getHandle().activeContainer != getHandle().defaultContainer) {
|
||||
if (((EntityPlayer) getHandle()).connection == null) return;
|
||||
if (getHandle().containerMenu != getHandle().inventoryMenu) {
|
||||
// fire INVENTORY_CLOSE if one already open
|
||||
((EntityPlayer) getHandle()).playerConnection.a(new PacketPlayInCloseWindow(getHandle().activeContainer.windowId));
|
||||
((EntityPlayer) getHandle()).connection.a(new PacketPlayInCloseWindow(getHandle().containerMenu.containerId));
|
||||
}
|
||||
EntityPlayer player = (EntityPlayer) getHandle();
|
||||
Container container;
|
||||
@@ -390,9 +390,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
// Now open the window
|
||||
Containers<?> windowType = CraftContainer.getNotchInventoryType(inventory.getTopInventory());
|
||||
String title = inventory.getTitle();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0]));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
player.connection.sendPacket(new PacketPlayOutOpenWindow(container.containerId, windowType, CraftChatMessage.fromString(title)[0]));
|
||||
player.containerMenu = container;
|
||||
player.initMenu(container);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -432,7 +432,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
mcMerchant.setTradingPlayer(this.getHandle());
|
||||
mcMerchant.openTrade(this.getHandle(), name, level);
|
||||
|
||||
return this.getHandle().activeContainer.getBukkitView();
|
||||
return this.getHandle().containerMenu.getBukkitView();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -477,7 +477,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
Preconditions.checkArgument(material != null, "material");
|
||||
|
||||
ItemCooldown.Info cooldown = getHandle().getCooldownTracker().cooldowns.get(CraftMagicNumbers.getItem(material));
|
||||
return (cooldown == null) ? 0 : Math.max(0, cooldown.endTick - getHandle().getCooldownTracker().currentTick);
|
||||
return (cooldown == null) ? 0 : Math.max(0, cooldown.endTime - getHandle().getCooldownTracker().tickCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -520,7 +520,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
private Collection<IRecipe<?>> bukkitKeysToMinecraftRecipes(Collection<NamespacedKey> recipeKeys) {
|
||||
Collection<IRecipe<?>> recipes = new ArrayList<>();
|
||||
CraftingManager manager = getHandle().world.getMinecraftServer().getCraftingManager();
|
||||
CraftingManager manager = getHandle().level.getMinecraftServer().getCraftingManager();
|
||||
|
||||
for (NamespacedKey recipeKey : recipeKeys) {
|
||||
Optional<? extends IRecipe<?>> recipe = manager.getRecipe(CraftNamespacedKey.toMinecraft(recipeKey));
|
||||
@@ -537,7 +537,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
@Override
|
||||
public org.bukkit.entity.Entity getShoulderEntityLeft() {
|
||||
if (!getHandle().getShoulderEntityLeft().isEmpty()) {
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityLeft(), getHandle().world);
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityLeft(), getHandle().level);
|
||||
|
||||
return (!shoulder.isPresent()) ? null : shoulder.get().getBukkitEntity();
|
||||
}
|
||||
@@ -556,7 +556,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
@Override
|
||||
public org.bukkit.entity.Entity getShoulderEntityRight() {
|
||||
if (!getHandle().getShoulderEntityRight().isEmpty()) {
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityRight(), getHandle().world);
|
||||
Optional<Entity> shoulder = EntityTypes.a(getHandle().getShoulderEntityRight(), getHandle().level);
|
||||
|
||||
return (!shoulder.isPresent()) ? null : shoulder.get().getBukkitEntity();
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
|
||||
super.update();
|
||||
|
||||
// mark dirty, so that the client gets updated with item and rotation
|
||||
for (DataWatcher.Item<?> dataItem : getHandle().getDataWatcher().c()) {
|
||||
for (DataWatcher.Item<?> dataItem : getHandle().getDataWatcher().getAll()) {
|
||||
getHandle().getDataWatcher().markDirty(dataItem.a());
|
||||
}
|
||||
|
||||
// update redstone
|
||||
getHandle().getWorld().updateAdjacentComparators(getHandle().blockPosition, Blocks.AIR);
|
||||
getHandle().getWorld().updateAdjacentComparators(getHandle().pos, Blocks.AIR);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -67,13 +67,13 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
|
||||
|
||||
@Override
|
||||
public float getItemDropChance() {
|
||||
return getHandle().itemDropChance;
|
||||
return getHandle().dropChance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemDropChance(float chance) {
|
||||
Preconditions.checkArgument(0.0 <= chance && chance <= 1.0, "Chance outside range [0, 1]");
|
||||
getHandle().itemDropChance = chance;
|
||||
getHandle().dropChance = chance;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,7 +13,7 @@ public class CraftLargeFireball extends CraftSizedFireball implements LargeFireb
|
||||
@Override
|
||||
public void setYield(float yield) {
|
||||
super.setYield(yield);
|
||||
getHandle().yield = (int) yield;
|
||||
getHandle().explosionPower = (int) yield;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,7 +12,7 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike
|
||||
|
||||
@Override
|
||||
public boolean isEffect() {
|
||||
return getHandle().isEffect;
|
||||
return getHandle().visualOnly;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -248,12 +248,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
@Override
|
||||
public int getArrowCooldown() {
|
||||
return getHandle().arrowCooldown;
|
||||
return getHandle().removeArrowTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArrowCooldown(int ticks) {
|
||||
getHandle().arrowCooldown = ticks;
|
||||
getHandle().removeArrowTime = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -264,7 +264,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
@Override
|
||||
public void setArrowsInBody(int count) {
|
||||
Preconditions.checkArgument(count >= 0, "New arrow amount must be >= 0");
|
||||
getHandle().getDataWatcher().set(EntityLiving.ARROWS_IN_BODY, count);
|
||||
getHandle().getDataWatcher().set(EntityLiving.DATA_ARROW_COUNT_ID, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -294,32 +294,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
@Override
|
||||
public int getMaximumNoDamageTicks() {
|
||||
return getHandle().maxNoDamageTicks;
|
||||
return getHandle().invulnerableDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaximumNoDamageTicks(int ticks) {
|
||||
getHandle().maxNoDamageTicks = ticks;
|
||||
getHandle().invulnerableDuration = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLastDamage() {
|
||||
return getHandle().lastDamage;
|
||||
return getHandle().lastHurt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastDamage(double damage) {
|
||||
getHandle().lastDamage = (float) damage;
|
||||
getHandle().lastHurt = (float) damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNoDamageTicks() {
|
||||
return getHandle().noDamageTicks;
|
||||
return getHandle().invulnerableTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoDamageTicks(int ticks) {
|
||||
getHandle().noDamageTicks = ticks;
|
||||
getHandle().invulnerableTime = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -338,7 +338,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
@Override
|
||||
public Player getKiller() {
|
||||
return getHandle().killer == null ? null : (Player) getHandle().killer.getBukkitEntity();
|
||||
return getHandle().lastHurtByPlayer == null ? null : (Player) getHandle().lastHurtByPlayer.getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -380,7 +380,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
@Override
|
||||
public Collection<PotionEffect> getActivePotionEffects() {
|
||||
List<PotionEffect> effects = new ArrayList<PotionEffect>();
|
||||
for (MobEffect handle : getHandle().effects.values()) {
|
||||
for (MobEffect handle : getHandle().activeEffects.values()) {
|
||||
effects.add(new PotionEffect(PotionEffectType.getById(MobEffectList.getId(handle.getMobEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isShowParticles()));
|
||||
}
|
||||
return effects;
|
||||
@@ -399,13 +399,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
if (Snowball.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntitySnowball(world, getHandle());
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 1.5F, 1.0F); // ItemSnowball
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), 0.0F, 1.5F, 1.0F); // ItemSnowball
|
||||
} else if (Egg.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityEgg(world, getHandle());
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 1.5F, 1.0F); // ItemEgg
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), 0.0F, 1.5F, 1.0F); // ItemEgg
|
||||
} else if (EnderPearl.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityEnderPearl(world, getHandle());
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 1.5F, 1.0F); // ItemEnderPearl
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), 0.0F, 1.5F, 1.0F); // ItemEnderPearl
|
||||
} else if (AbstractArrow.class.isAssignableFrom(projectile)) {
|
||||
if (TippedArrow.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityTippedArrow(world, getHandle());
|
||||
@@ -417,7 +417,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
} else {
|
||||
launch = new EntityTippedArrow(world, getHandle());
|
||||
}
|
||||
((EntityArrow) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 3.0F, 1.0F); // ItemBow
|
||||
((EntityArrow) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), 0.0F, 3.0F, 1.0F); // ItemBow
|
||||
} else if (ThrownPotion.class.isAssignableFrom(projectile)) {
|
||||
if (LingeringPotion.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityPotion(world, getHandle());
|
||||
@@ -426,10 +426,10 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
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
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), -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
|
||||
((EntityProjectile) launch).a(getHandle(), getHandle().getXRot(), getHandle().getYRot(), -20.0F, 0.7F, 1.0F); // ItemExpBottle
|
||||
} else if (FishHook.class.isAssignableFrom(projectile) && getHandle() instanceof EntityHuman) {
|
||||
launch = new EntityFishingHook((EntityHuman) getHandle(), world, 0, 0);
|
||||
} else if (Fireball.class.isAssignableFrom(projectile)) {
|
||||
@@ -443,7 +443,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
} else if (DragonFireball.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityDragonFireball(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
|
||||
} else {
|
||||
launch = new EntityLargeFireball(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
|
||||
launch = new EntityLargeFireball(world, getHandle(), direction.getX(), direction.getY(), direction.getZ(), 1);
|
||||
}
|
||||
|
||||
((EntityFireball) launch).projectileSource = this;
|
||||
@@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
} else if (Firework.class.isAssignableFrom(projectile)) {
|
||||
Location location = getEyeLocation();
|
||||
|
||||
launch = new EntityFireworks(world, net.minecraft.world.item.ItemStack.b, getHandle());
|
||||
launch = new EntityFireworks(world, net.minecraft.world.item.ItemStack.EMPTY, getHandle());
|
||||
launch.setPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
|
||||
}
|
||||
|
||||
@@ -491,13 +491,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
@Override
|
||||
public boolean getRemoveWhenFarAway() {
|
||||
return getHandle() instanceof EntityInsentient && !((EntityInsentient) getHandle()).persistent;
|
||||
return getHandle() instanceof EntityInsentient && !((EntityInsentient) getHandle()).persistenceRequired;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRemoveWhenFarAway(boolean remove) {
|
||||
if (getHandle() instanceof EntityInsentient) {
|
||||
((EntityInsentient) getHandle()).persistent = !remove;
|
||||
((EntityInsentient) getHandle()).persistenceRequired = !remove;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,12 +508,20 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
||||
@Override
|
||||
public void setCanPickupItems(boolean pickup) {
|
||||
getHandle().canPickUpLoot = pickup;
|
||||
if (getHandle() instanceof EntityInsentient) {
|
||||
((EntityInsentient) getHandle()).setCanPickupLoot(pickup);
|
||||
} else {
|
||||
getHandle().bukkitPickUpLoot = pickup;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getCanPickupItems() {
|
||||
return getHandle().canPickUpLoot;
|
||||
if (getHandle() instanceof EntityInsentient) {
|
||||
return ((EntityInsentient) getHandle()).canPickupLoot();
|
||||
} else {
|
||||
return getHandle().bukkitPickUpLoot;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -669,7 +677,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
return EntityCategory.ARTHROPOD;
|
||||
} else if (type == EnumMonsterType.ILLAGER) {
|
||||
return EntityCategory.ILLAGER;
|
||||
} else if (type == EnumMonsterType.WATER_MOB) {
|
||||
} else if (type == EnumMonsterType.WATER) {
|
||||
return EntityCategory.WATER;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class CraftLlama extends CraftChestedHorse implements Llama {
|
||||
|
||||
@Override
|
||||
public LlamaInventory getInventory() {
|
||||
return new CraftInventoryLlama(getHandle().inventoryChest);
|
||||
return new CraftInventoryLlama(getHandle().inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Marker;
|
||||
|
||||
public class CraftMarker extends CraftEntity implements Marker {
|
||||
|
||||
public CraftMarker(CraftServer server, net.minecraft.world.entity.Marker entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.entity.Marker getHandle() {
|
||||
return (net.minecraft.world.entity.Marker) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.MARKER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftMarker";
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public class CraftMinecartCommand extends CraftMinecart implements CommandMineca
|
||||
@Override
|
||||
public void setCommand(String command) {
|
||||
getHandle().getCommandBlock().setCommand(command != null ? command : "");
|
||||
getHandle().getDataWatcher().set(EntityMinecartCommandBlock.COMMAND, getHandle().getCommandBlock().getCommand());
|
||||
getHandle().getDataWatcher().set(EntityMinecartCommandBlock.DATA_ID_COMMAND_NAME, getHandle().getCommandBlock().getCommand());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -53,16 +53,16 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob {
|
||||
|
||||
@Override
|
||||
public void setLootTable(LootTable table) {
|
||||
getHandle().lootTableKey = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
|
||||
getHandle().lootTable = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public LootTable getLootTable() {
|
||||
if (getHandle().lootTableKey == null) {
|
||||
getHandle().lootTableKey = getHandle().getLootTable();
|
||||
if (getHandle().lootTable == null) {
|
||||
getHandle().lootTable = getHandle().getDefaultLootTable();
|
||||
}
|
||||
|
||||
NamespacedKey key = CraftNamespacedKey.fromMinecraft(getHandle().lootTableKey);
|
||||
NamespacedKey key = CraftNamespacedKey.fromMinecraft(getHandle().lootTable);
|
||||
return Bukkit.getLootTable(key);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
|
||||
@Override
|
||||
public Art getArt() {
|
||||
Paintings art = getHandle().art;
|
||||
Paintings art = getHandle().motive;
|
||||
return CraftArt.NotchToBukkit(art);
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
@Override
|
||||
public boolean setArt(Art art, boolean force) {
|
||||
EntityPainting painting = this.getHandle();
|
||||
Paintings oldArt = painting.art;
|
||||
painting.art = CraftArt.BukkitToNotch(art);
|
||||
Paintings oldArt = painting.motive;
|
||||
painting.motive = CraftArt.BukkitToNotch(art);
|
||||
painting.setDirection(painting.getDirection());
|
||||
if (!force && !painting.survives()) {
|
||||
// Revert painting since it doesn't fit
|
||||
painting.art = oldArt;
|
||||
painting.motive = oldArt;
|
||||
painting.setDirection(painting.getDirection());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -20,36 +20,36 @@ public class CraftPig extends CraftAnimals implements Pig {
|
||||
|
||||
@Override
|
||||
public void setSaddle(boolean saddled) {
|
||||
getHandle().saddleStorage.setSaddle(saddled);
|
||||
getHandle().steering.setSaddle(saddled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBoostTicks() {
|
||||
return getHandle().saddleStorage.boosting ? getHandle().saddleStorage.boostTicks : 0;
|
||||
return getHandle().steering.boosting ? getHandle().steering.boostTimeTotal : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoostTicks(int ticks) {
|
||||
Preconditions.checkArgument(ticks >= 0, "ticks must be >= 0");
|
||||
|
||||
getHandle().saddleStorage.setBoostTicks(ticks);
|
||||
getHandle().steering.setBoostTicks(ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCurrentBoostTicks() {
|
||||
return getHandle().saddleStorage.boosting ? getHandle().saddleStorage.currentBoostTicks : 0;
|
||||
return getHandle().steering.boosting ? getHandle().steering.boostTime : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentBoostTicks(int ticks) {
|
||||
if (!getHandle().saddleStorage.boosting) {
|
||||
if (!getHandle().steering.boosting) {
|
||||
return;
|
||||
}
|
||||
|
||||
int max = getHandle().saddleStorage.boostTicks;
|
||||
int max = getHandle().steering.boostTimeTotal;
|
||||
Preconditions.checkArgument(ticks >= 0 && ticks <= max, "boost ticks must not exceed 0 or %d (inclusive)", max);
|
||||
|
||||
this.getHandle().saddleStorage.currentBoostTicks = ticks;
|
||||
this.getHandle().steering.boostTime = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -74,7 +74,7 @@ public class CraftPiglin extends CraftPiglinAbstract implements Piglin {
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return new CraftInventory(getHandle().bu);
|
||||
return new CraftInventory(getHandle().inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,16 +24,16 @@ public class CraftPiglinAbstract extends CraftMonster implements PiglinAbstract
|
||||
@Override
|
||||
public int getConversionTime() {
|
||||
Preconditions.checkState(isConverting(), "Entity not converting");
|
||||
return getHandle().conversionTicks;
|
||||
return getHandle().timeInOverworld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConversionTime(int time) {
|
||||
if (time < 0) {
|
||||
getHandle().conversionTicks = -1;
|
||||
getHandle().timeInOverworld = -1;
|
||||
getHandle().setImmuneToZombification(false);
|
||||
} else {
|
||||
getHandle().conversionTicks = time;
|
||||
getHandle().timeInOverworld = time;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ import net.minecraft.network.PacketDataSerializer;
|
||||
import net.minecraft.network.chat.ChatComponentText;
|
||||
import net.minecraft.network.chat.ChatMessageType;
|
||||
import net.minecraft.network.chat.IChatBaseComponent;
|
||||
import net.minecraft.network.protocol.game.ClientboundClearTitlesPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutBlockBreakAnimation;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutBlockChange;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutChat;
|
||||
@@ -44,7 +48,6 @@ import net.minecraft.network.protocol.game.PacketPlayOutPlayerInfo;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutPlayerListHeaderFooter;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutSpawnPosition;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutStopSound;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutTitle;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutUpdateAttributes;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutUpdateHealth;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutWorldEvent;
|
||||
@@ -65,8 +68,10 @@ import net.minecraft.world.entity.player.EntityHuman;
|
||||
import net.minecraft.world.inventory.Container;
|
||||
import net.minecraft.world.item.EnumColor;
|
||||
import net.minecraft.world.level.EnumGamemode;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.TileEntitySign;
|
||||
import net.minecraft.world.level.saveddata.maps.MapIcon;
|
||||
import net.minecraft.world.level.saveddata.maps.WorldMap;
|
||||
import net.minecraft.world.phys.Vec3D;
|
||||
import org.apache.commons.lang.NotImplementedException;
|
||||
import org.apache.commons.lang.Validate;
|
||||
@@ -171,9 +176,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public InetSocketAddress getAddress() {
|
||||
if (getHandle().playerConnection == null) return null;
|
||||
if (getHandle().connection == null) return null;
|
||||
|
||||
SocketAddress addr = getHandle().playerConnection.networkManager.getSocketAddress();
|
||||
SocketAddress addr = getHandle().connection.connection.getSocketAddress();
|
||||
if (addr instanceof InetSocketAddress) {
|
||||
return (InetSocketAddress) addr;
|
||||
} else {
|
||||
@@ -192,19 +197,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendRawMessage(String message) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
for (IChatBaseComponent component : CraftChatMessage.fromString(message)) {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutChat(component, ChatMessageType.SYSTEM, SystemUtils.b));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutChat(component, ChatMessageType.SYSTEM, SystemUtils.NIL_UUID));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendRawMessage(UUID sender, String message) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
for (IChatBaseComponent component : CraftChatMessage.fromString(message)) {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutChat(component, ChatMessageType.CHAT, (sender == null) ? SystemUtils.b : sender));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutChat(component, ChatMessageType.CHAT, (sender == null) ? SystemUtils.NIL_UUID : sender));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,7 +264,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromStringOrNull(name);
|
||||
for (EntityPlayer player : (List<EntityPlayer>) server.getHandle().players) {
|
||||
if (player.getBukkitEntity().canSee(this)) {
|
||||
player.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, getHandle()));
|
||||
player.connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, getHandle()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -297,12 +302,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
private void updatePlayerListHeaderFooter() {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
|
||||
packet.header = (this.playerListHeader == null) ? new ChatComponentText("") : this.playerListHeader;
|
||||
packet.footer = (this.playerListFooter == null) ? new ChatComponentText("") : this.playerListFooter;
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter((this.playerListHeader == null) ? new ChatComponentText("") : this.playerListHeader, (this.playerListFooter == null) ? new ChatComponentText("") : this.playerListFooter);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -327,17 +330,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void kickPlayer(String message) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
getHandle().playerConnection.disconnect(message == null ? "" : message);
|
||||
getHandle().connection.disconnect(message == null ? "" : message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompassTarget(Location loc) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
// Do not directly assign here, from the packethandler we'll assign it.
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutSpawnPosition(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), loc.getYaw()));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutSpawnPosition(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), loc.getYaw()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -347,9 +350,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void chat(String msg) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
getHandle().playerConnection.chat(msg, false);
|
||||
getHandle().connection.chat(msg, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -359,7 +362,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void playNote(Location loc, byte instrument, byte note) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
String instrumentName = null;
|
||||
switch (instrument) {
|
||||
@@ -396,12 +399,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
float f = (float) Math.pow(2.0D, (note - 12.0D) / 12.0D);
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(CraftSound.getSoundEffect("block.note_block." + instrumentName), net.minecraft.sounds.SoundCategory.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutNamedSoundEffect(CraftSound.getSoundEffect("block.note_block." + instrumentName), net.minecraft.sounds.SoundCategory.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playNote(Location loc, Instrument instrument, Note note) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
String instrumentName = null;
|
||||
switch (instrument.ordinal()) {
|
||||
@@ -458,7 +461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
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.sounds.SoundCategory.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutNamedSoundEffect(CraftSound.getSoundEffect("block.note_block." + instrumentName), net.minecraft.sounds.SoundCategory.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -473,18 +476,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void playSound(Location loc, Sound sound, org.bukkit.SoundCategory category, float volume, float pitch) {
|
||||
if (loc == null || sound == null || category == null || getHandle().playerConnection == null) return;
|
||||
if (loc == null || sound == null || category == null || getHandle().connection == null) return;
|
||||
|
||||
PacketPlayOutNamedSoundEffect packet = new PacketPlayOutNamedSoundEffect(CraftSound.getSoundEffect(sound), net.minecraft.sounds.SoundCategory.valueOf(category.name()), loc.getX(), loc.getY(), loc.getZ(), volume, pitch);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(Location loc, String sound, org.bukkit.SoundCategory category, float volume, float pitch) {
|
||||
if (loc == null || sound == null || category == null || getHandle().playerConnection == null) return;
|
||||
if (loc == null || sound == null || category == null || getHandle().connection == null) return;
|
||||
|
||||
PacketPlayOutCustomSoundEffect packet = new PacketPlayOutCustomSoundEffect(new MinecraftKey(sound), net.minecraft.sounds.SoundCategory.valueOf(category.name()), new Vec3D(loc.getX(), loc.getY(), loc.getZ()), volume, pitch);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -504,18 +507,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void stopSound(String sound, org.bukkit.SoundCategory category) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutStopSound(new MinecraftKey(sound), category == null ? net.minecraft.sounds.SoundCategory.MASTER : net.minecraft.sounds.SoundCategory.valueOf(category.name())));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutStopSound(new MinecraftKey(sound), category == null ? net.minecraft.sounds.SoundCategory.MASTER : net.minecraft.sounds.SoundCategory.valueOf(category.name())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playEffect(Location loc, Effect effect, int data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
int packetData = effect.getId();
|
||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(packetData, new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), data, false);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -532,18 +535,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, Material material, byte data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), CraftMagicNumbers.getBlock(material, data));
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, BlockData block) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), ((CraftBlockData) block).getState());
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -551,11 +554,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
Preconditions.checkArgument(loc != null, "loc must not be null");
|
||||
Preconditions.checkArgument(progress >= 0.0 && progress <= 1.0, "progress must be between 0.0 and 1.0 (inclusive)");
|
||||
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
int stage = (int) (9 * progress); // There are 0 - 9 damage states
|
||||
PacketPlayOutBlockBreakAnimation packet = new PacketPlayOutBlockBreakAnimation(getHandle().getId(), new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), stage);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -565,7 +568,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendSignChange(Location loc, String[] lines, DyeColor dyeColor) {
|
||||
if (getHandle().playerConnection == null) {
|
||||
if (getHandle().connection == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -580,17 +583,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
IChatBaseComponent[] components = CraftSign.sanitizeLines(lines);
|
||||
TileEntitySign sign = new TileEntitySign();
|
||||
sign.setPosition(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
TileEntitySign sign = new TileEntitySign(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.getBlockData());
|
||||
sign.setColor(EnumColor.fromColorIndex(dyeColor.getWoolData()));
|
||||
System.arraycopy(components, 0, sign.lines, 0, sign.lines.length);
|
||||
for (int i = 0; i < components.length; i++) {
|
||||
sign.a(i, components[i]);
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(sign.getUpdatePacket());
|
||||
getHandle().connection.sendPacket(sign.getUpdatePacket());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) {
|
||||
if (getHandle().playerConnection == null) return false;
|
||||
if (getHandle().connection == null) return false;
|
||||
|
||||
/*
|
||||
int x = loc.getBlockX();
|
||||
@@ -624,7 +628,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendMap(MapView map) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
RenderData data = ((CraftMapView) map).render(this);
|
||||
Collection<MapIcon> icons = new ArrayList<MapIcon>();
|
||||
@@ -634,8 +638,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), map.getScale().getValue(), true, map.isLocked(), icons, data.buffer, 0, 0, 128, 128);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), map.getScale().getValue(), map.isLocked(), icons, new WorldMap.b(0, 0, 128, 128, data.buffer));
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -651,11 +655,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
EntityPlayer entity = getHandle();
|
||||
|
||||
if (getHealth() == 0 || entity.dead) {
|
||||
if (getHealth() == 0 || entity.isRemoved()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (entity.playerConnection == null) {
|
||||
if (entity.connection == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -693,13 +697,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
WorldServer toWorld = ((CraftWorld) to.getWorld()).getHandle();
|
||||
|
||||
// Close any foreign inventory
|
||||
if (getHandle().activeContainer != getHandle().defaultContainer) {
|
||||
if (getHandle().containerMenu != getHandle().inventoryMenu) {
|
||||
getHandle().closeInventory();
|
||||
}
|
||||
|
||||
// Check if the fromWorld and toWorld are the same.
|
||||
if (fromWorld == toWorld) {
|
||||
entity.playerConnection.teleport(to);
|
||||
entity.connection.teleport(to);
|
||||
} else {
|
||||
server.getHandle().moveToWorld(entity, toWorld, true, to, true);
|
||||
}
|
||||
@@ -728,18 +732,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void loadData() {
|
||||
server.getHandle().playerFileData.load(getHandle());
|
||||
server.getHandle().playerIo.load(getHandle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveData() {
|
||||
server.getHandle().playerFileData.save(getHandle());
|
||||
server.getHandle().playerIo.save(getHandle());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public void updateInventory() {
|
||||
getHandle().updateInventory(getHandle().activeContainer);
|
||||
getHandle().containerMenu.updateInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -799,7 +803,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public Set<NamespacedKey> getDiscoveredRecipes() {
|
||||
ImmutableSet.Builder<NamespacedKey> bukkitRecipeKeys = ImmutableSet.builder();
|
||||
getHandle().getRecipeBook().recipes.forEach(key -> bukkitRecipeKeys.add(CraftNamespacedKey.fromMinecraft(key)));
|
||||
getHandle().getRecipeBook().known.forEach(key -> bukkitRecipeKeys.add(CraftNamespacedKey.fromMinecraft(key)));
|
||||
return bukkitRecipeKeys.build();
|
||||
}
|
||||
|
||||
@@ -955,7 +959,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void setGameMode(GameMode mode) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
if (mode == null) {
|
||||
throw new IllegalArgumentException("Mode cannot be null");
|
||||
@@ -966,7 +970,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public GameMode getGameMode() {
|
||||
return GameMode.getByValue(getHandle().playerInteractManager.getGameMode().getId());
|
||||
return GameMode.getByValue(getHandle().gameMode.getGameMode().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -981,37 +985,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public float getExp() {
|
||||
return getHandle().exp;
|
||||
return getHandle().experienceProgress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExp(float exp) {
|
||||
Preconditions.checkArgument(exp >= 0.0 && exp <= 1.0, "Experience progress must be between 0.0 and 1.0 (%s)", exp);
|
||||
getHandle().exp = exp;
|
||||
getHandle().experienceProgress = exp;
|
||||
getHandle().lastSentExp = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLevel() {
|
||||
return getHandle().expLevel;
|
||||
return getHandle().experienceLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLevel(int level) {
|
||||
Preconditions.checkArgument(level >= 0, "Experience level must not be negative (%s)", level);
|
||||
getHandle().expLevel = level;
|
||||
getHandle().experienceLevel = level;
|
||||
getHandle().lastSentExp = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalExperience() {
|
||||
return getHandle().expTotal;
|
||||
return getHandle().totalExperience;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTotalExperience(int exp) {
|
||||
Preconditions.checkArgument(exp >= 0, "Total experience points must not be negative (%s)", exp);
|
||||
getHandle().expTotal = exp;
|
||||
getHandle().totalExperience = exp;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1024,12 +1028,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
Preconditions.checkArgument(progress >= 0.0 && progress <= 1.0, "Experience progress must be between 0.0 and 1.0 (%s)", progress);
|
||||
Preconditions.checkArgument(level >= 0, "Experience level must not be negative (%s)", level);
|
||||
|
||||
if (getHandle().playerConnection == null) {
|
||||
if (getHandle().connection == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PacketPlayOutExperience packet = new PacketPlayOutExperience(progress, getTotalExperience(), level);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -1053,7 +1057,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
private void hidePlayer0(@Nullable Plugin plugin, Player player) {
|
||||
Validate.notNull(player, "hidden player cannot be null");
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
if (equals(player)) return;
|
||||
|
||||
Set<WeakReference<Plugin>> hidingPlugins = hiddenPlayers.get(player.getUniqueId());
|
||||
@@ -1068,16 +1072,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
hiddenPlayers.put(player.getUniqueId(), hidingPlugins);
|
||||
|
||||
// Remove this player from the hidden player's EntityTrackerEntry
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.level).getChunkProvider().chunkMap;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
|
||||
PlayerChunkMap.EntityTracker entry = tracker.entityMap.get(other.getId());
|
||||
if (entry != null) {
|
||||
entry.clear(getHandle());
|
||||
}
|
||||
|
||||
// Remove the hidden player from this player user list, if they're on it
|
||||
if (other.sentListPacket) {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, other));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, other));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1097,7 +1101,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
private void showPlayer0(@Nullable Plugin plugin, Player player) {
|
||||
Validate.notNull(player, "shown player cannot be null");
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
if (equals(player)) return;
|
||||
|
||||
Set<WeakReference<Plugin>> hidingPlugins = hiddenPlayers.get(player.getUniqueId());
|
||||
@@ -1110,13 +1114,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.world).getChunkProvider().playerChunkMap;
|
||||
PlayerChunkMap tracker = ((WorldServer) entity.level).getChunkProvider().chunkMap;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
|
||||
|
||||
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
|
||||
PlayerChunkMap.EntityTracker entry = tracker.entityMap.get(other.getId());
|
||||
if (entry != null && !entry.seenBy.contains(getHandle())) {
|
||||
entry.updatePlayer(getHandle());
|
||||
}
|
||||
}
|
||||
@@ -1251,12 +1255,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public void sendPluginMessage(Plugin source, String channel, byte[] message) {
|
||||
StandardMessenger.validatePluginMessage(server.getMessenger(), source, channel, message);
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
if (channels.contains(channel)) {
|
||||
channel = StandardMessenger.validateAndCorrectChannel(channel);
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(new MinecraftKey(channel), new PacketDataSerializer(Unpooled.wrappedBuffer(message)));
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().connection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1269,7 +1273,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void setResourcePack(String url) {
|
||||
Validate.notNull(url, "Resource pack URL cannot be null");
|
||||
|
||||
getHandle().setResourcePack(url, "null");
|
||||
getHandle().setResourcePack(url, "null", false, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1278,7 +1282,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
Validate.notNull(hash, "Resource pack hash cannot be null");
|
||||
Validate.isTrue(hash.length == 20, "Resource pack hash should be 20 bytes long but was " + hash.length);
|
||||
|
||||
getHandle().setResourcePack(url, BaseEncoding.base16().lowerCase().encode(hash));
|
||||
getHandle().setResourcePack(url, BaseEncoding.base16().lowerCase().encode(hash), false, null);
|
||||
}
|
||||
|
||||
public void addChannel(String channel) {
|
||||
@@ -1302,7 +1306,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
public void sendSupportedChannels() {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
Set<String> listening = server.getMessenger().getIncomingChannels();
|
||||
|
||||
if (!listening.isEmpty()) {
|
||||
@@ -1317,7 +1321,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload(new MinecraftKey("register"), new PacketDataSerializer(Unpooled.wrappedBuffer(stream.toByteArray()))));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutCustomPayload(new MinecraftKey("register"), new PacketDataSerializer(Unpooled.wrappedBuffer(stream.toByteArray()))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1348,11 +1352,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public boolean setWindowProperty(Property prop, int value) {
|
||||
Container container = getHandle().activeContainer;
|
||||
Container container = getHandle().containerMenu;
|
||||
if (container.getBukkitView().getType() != prop.getType()) {
|
||||
return false;
|
||||
}
|
||||
getHandle().setContainerData(container, prop.getId(), value);
|
||||
container.setContainerData(prop.getId(), value);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1363,7 +1367,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public boolean isFlying() {
|
||||
return getHandle().abilities.isFlying;
|
||||
return getHandle().getAbilities().flying;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1372,45 +1376,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
throw new IllegalArgumentException("Cannot make player fly if getAllowFlight() is false");
|
||||
}
|
||||
|
||||
getHandle().abilities.isFlying = value;
|
||||
getHandle().getAbilities().flying = value;
|
||||
getHandle().updateAbilities();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getAllowFlight() {
|
||||
return getHandle().abilities.canFly;
|
||||
return getHandle().getAbilities().mayfly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllowFlight(boolean value) {
|
||||
if (isFlying() && !value) {
|
||||
getHandle().abilities.isFlying = false;
|
||||
getHandle().getAbilities().flying = false;
|
||||
}
|
||||
|
||||
getHandle().abilities.canFly = value;
|
||||
getHandle().getAbilities().mayfly = value;
|
||||
getHandle().updateAbilities();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNoDamageTicks() {
|
||||
if (getHandle().invulnerableTicks > 0) {
|
||||
return Math.max(getHandle().invulnerableTicks, getHandle().noDamageTicks);
|
||||
if (getHandle().spawnInvulnerableTime > 0) {
|
||||
return Math.max(getHandle().spawnInvulnerableTime, getHandle().invulnerableTime);
|
||||
} else {
|
||||
return getHandle().noDamageTicks;
|
||||
return getHandle().invulnerableTime;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNoDamageTicks(int ticks) {
|
||||
super.setNoDamageTicks(ticks);
|
||||
getHandle().invulnerableTicks = ticks; // SPIGOT-5921: Update both for players, like the getter above
|
||||
getHandle().spawnInvulnerableTime = ticks; // SPIGOT-5921: Update both for players, like the getter above
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFlySpeed(float value) {
|
||||
validateSpeed(value);
|
||||
EntityPlayer player = getHandle();
|
||||
player.abilities.flySpeed = value / 2f;
|
||||
player.getAbilities().flyingSpeed = value / 2f;
|
||||
player.updateAbilities();
|
||||
|
||||
}
|
||||
@@ -1419,19 +1423,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void setWalkSpeed(float value) {
|
||||
validateSpeed(value);
|
||||
EntityPlayer player = getHandle();
|
||||
player.abilities.walkSpeed = value / 2f;
|
||||
player.getAbilities().walkingSpeed = value / 2f;
|
||||
player.updateAbilities();
|
||||
getHandle().getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(player.abilities.walkSpeed); // SPIGOT-5833: combination of the two in 1.16+
|
||||
getHandle().getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(player.getAbilities().walkingSpeed); // SPIGOT-5833: combination of the two in 1.16+
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFlySpeed() {
|
||||
return (float) getHandle().abilities.flySpeed * 2f;
|
||||
return (float) getHandle().getAbilities().flyingSpeed * 2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getWalkSpeed() {
|
||||
return getHandle().abilities.walkSpeed * 2f;
|
||||
return getHandle().getAbilities().walkingSpeed * 2f;
|
||||
}
|
||||
|
||||
private void validateSpeed(float value) {
|
||||
@@ -1467,7 +1471,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public void setScoreboard(Scoreboard scoreboard) {
|
||||
Validate.notNull(scoreboard, "Scoreboard cannot be null");
|
||||
PlayerConnection playerConnection = getHandle().playerConnection;
|
||||
PlayerConnection playerConnection = getHandle().connection;
|
||||
if (playerConnection == null) {
|
||||
throw new IllegalStateException("Cannot set scoreboard yet");
|
||||
}
|
||||
@@ -1527,19 +1531,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
injectScaledMaxHealth(set, true);
|
||||
|
||||
// SPIGOT-3813: Attributes before health
|
||||
if (getHandle().playerConnection != null) {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateAttributes(getHandle().getId(), set));
|
||||
if (getHandle().connection != null) {
|
||||
getHandle().connection.sendPacket(new PacketPlayOutUpdateAttributes(getHandle().getId(), set));
|
||||
if (sendHealth) {
|
||||
sendHealthUpdate();
|
||||
}
|
||||
}
|
||||
getHandle().getDataWatcher().set(EntityLiving.HEALTH, (float) getScaledHealth());
|
||||
getHandle().getDataWatcher().set(EntityLiving.DATA_HEALTH_ID, (float) getScaledHealth());
|
||||
|
||||
getHandle().maxHealthCache = getMaxHealth();
|
||||
}
|
||||
|
||||
public void sendHealthUpdate() {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateHealth(getScaledHealth(), getHandle().getFoodData().getFoodLevel(), getHandle().getFoodData().getSaturationLevel()));
|
||||
getHandle().connection.sendPacket(new PacketPlayOutUpdateHealth(getScaledHealth(), getHandle().getFoodData().getFoodLevel(), getHandle().getFoodData().getSaturationLevel()));
|
||||
}
|
||||
|
||||
public void injectScaledMaxHealth(Collection<AttributeModifiable> collection, boolean force) {
|
||||
@@ -1576,24 +1580,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) {
|
||||
PacketPlayOutTitle times = new PacketPlayOutTitle(fadeIn, stay, fadeOut);
|
||||
getHandle().playerConnection.sendPacket(times);
|
||||
ClientboundSetTitlesAnimationPacket times = new ClientboundSetTitlesAnimationPacket(fadeIn, stay, fadeOut);
|
||||
getHandle().connection.sendPacket(times);
|
||||
|
||||
if (title != null) {
|
||||
PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, CraftChatMessage.fromStringOrNull(title));
|
||||
getHandle().playerConnection.sendPacket(packetTitle);
|
||||
ClientboundSetTitleTextPacket packetTitle = new ClientboundSetTitleTextPacket(CraftChatMessage.fromStringOrNull(title));
|
||||
getHandle().connection.sendPacket(packetTitle);
|
||||
}
|
||||
|
||||
if (subtitle != null) {
|
||||
PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, CraftChatMessage.fromStringOrNull(subtitle));
|
||||
getHandle().playerConnection.sendPacket(packetSubtitle);
|
||||
ClientboundSetSubtitleTextPacket packetSubtitle = new ClientboundSetSubtitleTextPacket(CraftChatMessage.fromStringOrNull(subtitle));
|
||||
getHandle().connection.sendPacket(packetSubtitle);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetTitle() {
|
||||
PacketPlayOutTitle packetReset = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.RESET, null);
|
||||
getHandle().playerConnection.sendPacket(packetReset);
|
||||
ClientboundClearTitlesPacket packetReset = new ClientboundClearTitlesPacket(true);
|
||||
getHandle().connection.sendPacket(packetReset);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1657,7 +1661,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
throw new IllegalArgumentException("data should be " + particle.getDataType() + " got " + data.getClass());
|
||||
}
|
||||
PacketPlayOutWorldParticles packetplayoutworldparticles = new PacketPlayOutWorldParticles(CraftParticle.toNMS(particle, data), true, (float) x, (float) y, (float) z, (float) offsetX, (float) offsetY, (float) offsetZ, (float) extra, count);
|
||||
getHandle().playerConnection.sendPacket(packetplayoutworldparticles);
|
||||
getHandle().connection.sendPacket(packetplayoutworldparticles);
|
||||
|
||||
}
|
||||
|
||||
@@ -1679,7 +1683,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public int getPing() {
|
||||
return getHandle().ping;
|
||||
return getHandle().latency;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1689,7 +1693,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void updateCommands() {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
if (getHandle().connection == null) return;
|
||||
|
||||
getHandle().server.getCommandDispatcher().a(getHandle());
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public abstract class CraftRaider extends CraftMonster implements Raider {
|
||||
|
||||
@Override
|
||||
public Block getPatrolTarget() {
|
||||
return getHandle().getPatrolTarget() == null ? null : CraftBlock.at(getHandle().world, getHandle().getPatrolTarget());
|
||||
return getHandle().getPatrolTarget() == null ? null : CraftBlock.at(getHandle().level, getHandle().getPatrolTarget());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -32,34 +32,34 @@ public class CraftShulker extends CraftGolem implements Shulker {
|
||||
|
||||
@Override
|
||||
public DyeColor getColor() {
|
||||
return DyeColor.getByWoolData(getHandle().getDataWatcher().get(EntityShulker.COLOR));
|
||||
return DyeColor.getByWoolData(getHandle().getDataWatcher().get(EntityShulker.DATA_COLOR_ID));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setColor(DyeColor color) {
|
||||
getHandle().getDataWatcher().set(EntityShulker.COLOR, (color == null) ? 16 : color.getWoolData());
|
||||
getHandle().getDataWatcher().set(EntityShulker.DATA_COLOR_ID, (color == null) ? 16 : color.getWoolData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPeek() {
|
||||
return (float) getHandle().eN() / 100; // PAIL rename getPeek
|
||||
return (float) getHandle().getPeek() / 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPeek(float value) {
|
||||
Preconditions.checkArgument(value >= 0 && value <= 1, "value needs to be in between or equal to 0 and 1");
|
||||
getHandle().a((int) (value * 100)); // PAIL rename setPeek
|
||||
getHandle().setPeek((int) (value * 100));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockFace getAttachedFace() {
|
||||
return CraftBlock.notchToBlockFace(getHandle().eL()); // PAIL rename getAttachedFace
|
||||
return CraftBlock.notchToBlockFace(getHandle().getAttachFace());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAttachedFace(BlockFace face) {
|
||||
Preconditions.checkNotNull(face, "face cannot be null");
|
||||
Preconditions.checkArgument(face.isCartesian(), "%s is not a valid block face to attach a shulker to, a cartesian block face is expected", face);
|
||||
getHandle().getDataWatcher().set(EntityShulker.b, CraftBlock.blockFaceToNotch(face));
|
||||
getHandle().setAttachFace(CraftBlock.blockFaceToNotch(face));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,36 +30,36 @@ public class CraftStrider extends CraftAnimals implements Strider {
|
||||
|
||||
@Override
|
||||
public void setSaddle(boolean saddled) {
|
||||
getHandle().saddleStorage.setSaddle(saddled);
|
||||
getHandle().steering.setSaddle(saddled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBoostTicks() {
|
||||
return getHandle().saddleStorage.boosting ? getHandle().saddleStorage.boostTicks : 0;
|
||||
return getHandle().steering.boosting ? getHandle().steering.boostTimeTotal : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoostTicks(int ticks) {
|
||||
Preconditions.checkArgument(ticks >= 0, "ticks must be >= 0");
|
||||
|
||||
getHandle().saddleStorage.setBoostTicks(ticks);
|
||||
getHandle().steering.setBoostTicks(ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCurrentBoostTicks() {
|
||||
return getHandle().saddleStorage.boosting ? getHandle().saddleStorage.currentBoostTicks : 0;
|
||||
return getHandle().steering.boosting ? getHandle().steering.boostTime : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentBoostTicks(int ticks) {
|
||||
if (!getHandle().saddleStorage.boosting) {
|
||||
if (!getHandle().steering.boosting) {
|
||||
return;
|
||||
}
|
||||
|
||||
int max = getHandle().saddleStorage.boostTicks;
|
||||
int max = getHandle().steering.boostTimeTotal;
|
||||
Preconditions.checkArgument(ticks >= 0 && ticks <= max, "boost ticks must not exceed 0 or %d (inclusive)", max);
|
||||
|
||||
this.getHandle().saddleStorage.currentBoostTicks = ticks;
|
||||
this.getHandle().steering.boostTime = ticks;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -69,9 +69,9 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed {
|
||||
@Override
|
||||
public void setSource(Entity source) {
|
||||
if (source instanceof LivingEntity) {
|
||||
getHandle().source = ((CraftLivingEntity) source).getHandle();
|
||||
getHandle().owner = ((CraftLivingEntity) source).getHandle();
|
||||
} else {
|
||||
getHandle().source = null;
|
||||
getHandle().owner = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,12 +20,12 @@ public class CraftTrident extends CraftArrow implements Trident {
|
||||
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().trident);
|
||||
return CraftItemStack.asBukkitCopy(getHandle().tridentItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ItemStack itemStack) {
|
||||
getHandle().trident = CraftItemStack.asNMSCopy(itemStack);
|
||||
getHandle().tridentItem = CraftItemStack.asNMSCopy(itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -91,7 +91,7 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
|
||||
Preconditions.checkArgument(location.getWorld().equals(getWorld()), "Cannot sleep across worlds");
|
||||
|
||||
BlockPosition position = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
IBlockData iblockdata = getHandle().world.getType(position);
|
||||
IBlockData iblockdata = getHandle().level.getType(position);
|
||||
if (!(iblockdata.getBlock() instanceof BlockBed)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -68,17 +68,17 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
|
||||
public int getConversionTime() {
|
||||
Preconditions.checkState(isConverting(), "Entity not converting");
|
||||
|
||||
return getHandle().conversionTime;
|
||||
return getHandle().villagerConversionTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConversionTime(int time) {
|
||||
if (time < 0) {
|
||||
getHandle().conversionTime = -1;
|
||||
getHandle().getDataWatcher().set(EntityZombieVillager.CONVERTING, false);
|
||||
getHandle().persistent = false; // CraftBukkit - SPIGOT-4684 update persistence
|
||||
getHandle().conversionPlayer = null;
|
||||
getHandle().removeEffect(MobEffects.INCREASE_DAMAGE, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION);
|
||||
getHandle().villagerConversionTime = -1;
|
||||
getHandle().getDataWatcher().set(EntityZombieVillager.DATA_CONVERTING_ID, false);
|
||||
getHandle().persistenceRequired = false; // CraftBukkit - SPIGOT-4684 update persistence
|
||||
getHandle().conversionStarter = null;
|
||||
getHandle().removeEffect(MobEffects.DAMAGE_BOOST, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION);
|
||||
} else {
|
||||
getHandle().startConversion((UUID) null, time);
|
||||
}
|
||||
@@ -86,12 +86,12 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
|
||||
|
||||
@Override
|
||||
public OfflinePlayer getConversionPlayer() {
|
||||
return (getHandle().conversionPlayer == null) ? null : Bukkit.getOfflinePlayer(getHandle().conversionPlayer);
|
||||
return (getHandle().conversionStarter == null) ? null : Bukkit.getOfflinePlayer(getHandle().conversionStarter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConversionPlayer(OfflinePlayer conversionPlayer) {
|
||||
if (!this.isConverting()) return;
|
||||
getHandle().conversionPlayer = (conversionPlayer == null) ? null : conversionPlayer.getUniqueId();
|
||||
getHandle().conversionStarter = (conversionPlayer == null) ? null : conversionPlayer.getUniqueId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ public class CraftWither extends CraftMonster implements Wither {
|
||||
public CraftWither(CraftServer server, EntityWither entity) {
|
||||
super(server, entity);
|
||||
|
||||
if (entity.bossBattle != null) {
|
||||
this.bossBar = new CraftBossBar(entity.bossBattle);
|
||||
if (entity.bossEvent != null) {
|
||||
this.bossBar = new CraftBossBar(entity.bossEvent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,14 +68,14 @@ public class CraftZombie extends CraftMonster implements Zombie {
|
||||
public int getConversionTime() {
|
||||
Preconditions.checkState(isConverting(), "Entity not converting");
|
||||
|
||||
return getHandle().drownedConversionTime;
|
||||
return getHandle().conversionTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConversionTime(int time) {
|
||||
if (time < 0) {
|
||||
getHandle().drownedConversionTime = -1;
|
||||
getHandle().getDataWatcher().set(EntityZombie.DROWN_CONVERTING, false);
|
||||
getHandle().conversionTime = -1;
|
||||
getHandle().getDataWatcher().set(EntityZombie.DATA_DROWNED_CONVERSION_ID, false);
|
||||
} else {
|
||||
getHandle().startDrownedConversion(time);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ public final class CraftMemoryMapper {
|
||||
return (UUID) object;
|
||||
} else if (object instanceof Boolean) {
|
||||
return (Boolean) object;
|
||||
} else if (object instanceof Integer) {
|
||||
return (Integer) object;
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException("Do not know how to map " + object);
|
||||
@@ -37,6 +39,8 @@ public final class CraftMemoryMapper {
|
||||
return (UUID) object;
|
||||
} else if (object instanceof Boolean) {
|
||||
return (Boolean) object;
|
||||
} else if (object instanceof Integer) {
|
||||
return (Integer) object;
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException("Do not know how to map " + object);
|
||||
|
||||
Reference in New Issue
Block a user