Mappings Update

This commit is contained in:
md_5 2018-12-13 11:00:00 +11:00
parent a3c2ec0314
commit c64fe5080c
80 changed files with 469 additions and 518 deletions

View File

@ -17,6 +17,15 @@
});
this.h = (new ChatComponentText("[")).addSibling(ichatbasecomponent2).a("]").a(enumchatformat);
@@ -55,7 +56,7 @@
}
public Advancement.SerializedAdvancement a() {
- return new Advancement.SerializedAdvancement(this.a == null ? null : this.a.getName(), this.b, this.c, this.e, this.f, null);
+ return new Advancement.SerializedAdvancement(this.a == null ? null : this.a.getName(), this.b, this.c, this.e, this.f); // CraftBukkit - decompile error
}
@Nullable
@@ -206,7 +207,7 @@
}

View File

@ -27,4 +27,4 @@
+ // CraftBukkit end
world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockDiodeAbstract.c, true), 2);
if (!flag1) {
world.J().a(blockposition, this, this.k(iblockdata), TickListPriority.HIGH);
world.getBlockTickList().a(blockposition, this, this.k(iblockdata), TickListPriority.HIGH);

View File

@ -58,7 +58,7 @@
int j = Math.min(15, i + random.nextInt(3) / 2);
@@ -103,14 +126,14 @@
world.J().a(blockposition, this, this.a((IWorldReader) world) + random.nextInt(10));
world.getBlockTickList().a(blockposition, this, this.a((IWorldReader) world) + random.nextInt(10));
if (!this.d(world, blockposition)) {
if (!world.getType(blockposition.down()).q() || i > 3) {
- world.setAir(blockposition);
@ -145,7 +145,7 @@
- world.setAir(blockposition);
+ fireExtinguished(world, blockposition); // CraftBukkit - fuel block broke
} else {
world.J().a(blockposition, this, this.a((IWorldReader) world) + world.random.nextInt(10));
world.getBlockTickList().a(blockposition, this, this.a((IWorldReader) world) + world.random.nextInt(10));
}
@@ -387,4 +432,12 @@
blockfire.a(Blocks.BLACK_CARPET, 60, 20);

View File

@ -26,5 +26,5 @@
+ }
+ // CraftBukkit end
world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockObserver.b, true), 2);
world.J().a(blockposition, this, 2);
world.getBlockTickList().a(blockposition, this, 2);
}

View File

@ -11,7 +11,7 @@
public static final BlockStateBoolean a = BlockRedstoneTorch.LIT;
@@ -33,6 +35,11 @@
if (flag) {
world.J().a(blockposition, this, 4);
world.getBlockTickList().a(blockposition, this, 4);
} else {
+ // CraftBukkit start
+ if (CraftEventFactory.callRedstoneChange(world, blockposition, 0, 15).getNewCurrent() != 15) {

View File

@ -60,7 +60,7 @@
+ // CraftBukkit end
+
public Chunk(World world, ProtoChunk protochunk, int i, int j) {
this(world, i, j, protochunk.getBiomeIndex(), protochunk.v(), protochunk.n(), protochunk.o(), protochunk.m());
this(world, i, j, protochunk.getBiomeIndex(), protochunk.v(), protochunk.k(), protochunk.l(), protochunk.m());
@@ -136,14 +175,15 @@
HeightMap.Type heightmap_type = (HeightMap.Type) iterator.next();
@ -230,17 +230,17 @@
}
if (this.s instanceof ProtoChunkTickList) {
- ((ProtoChunkTickList) this.s).a(this.world.J(), (blockposition) -> {
- ((ProtoChunkTickList) this.s).a(this.world.getBlockTickList(), (blockposition) -> {
- return this.world.getType(blockposition).getBlock();
+ ((ProtoChunkTickList<Block>) this.s).a(this.world.J(), (blockposition1) -> { // CraftBukkit - decompile error
+ ((ProtoChunkTickList<Block>) this.s).a(this.world.getBlockTickList(), (blockposition1) -> { // CraftBukkit - decompile error
+ return this.world.getType(blockposition1).getBlock();
});
}
if (this.t instanceof ProtoChunkTickList) {
- ((ProtoChunkTickList) this.t).a(this.world.I(), (blockposition) -> {
- ((ProtoChunkTickList) this.t).a(this.world.getFluidTickList(), (blockposition) -> {
- return this.world.getFluid(blockposition).c();
+ ((ProtoChunkTickList<FluidType>) this.t).a(this.world.I(), (blockposition1) -> { // CraftBukkit - decompile error
+ ((ProtoChunkTickList<FluidType>) this.t).a(this.world.getFluidTickList(), (blockposition1) -> { // CraftBukkit - decompile error
+ return this.world.getFluid(blockposition1).c();
});
}

View File

@ -24,34 +24,3 @@
return chunk1;
}
@@ -69,23 +86,25 @@
throw new RuntimeException("Not yet implemented");
}
- public Object remove(long i) {
+ // CraftBukkit start - decompile errors
+ public Chunk remove(long i) {
return this.a(i);
}
- public Object put(long i, Object object) {
+ public Chunk put(long i, Chunk object) {
return this.a(i, (Chunk) object);
}
- public Object remove(Object object) {
+ public Chunk remove(Object object) {
return this.a(object);
}
- public Object put(Long olong, Object object) {
+ public Chunk put(Long olong, Chunk object) {
return this.a(olong, (Chunk) object);
}
- public Object put(Object object, Object object1) {
+ public Object put(Object object, Chunk object1) {
return this.a((Long) object, (Chunk) object1);
}
+ // CraftBukkit end
}

View File

@ -12,12 +12,3 @@
float f7 = this.o[l1 + 2 + (i2 + 2) * 5] / (f5 + 2.0F);
@@ -267,7 +272,7 @@
return this.a.getSeaLevel() + 1;
}
- public GeneratorSettings getSettings() {
+ public GeneratorSettingsOverworld getSettings() { // CraftBukkit - decompile error
return this.f();
}
}

View File

@ -71,7 +71,7 @@
+ if (k < 1466) {
+ NBTTagCompound level = nbttagcompound1.getCompound("Level");
+ if (level.getBoolean("TerrainPopulated") && !level.getBoolean("LightPopulated")) {
+ ChunkProviderServer cps = (generatoraccess == null) ? null : ((WorldServer) generatoraccess).getChunkProviderServer();
+ ChunkProviderServer cps = (generatoraccess == null) ? null : ((WorldServer) generatoraccess).getChunkProvider();
+ if (check(cps, i - 1, j) && check(cps, i - 1, j - 1) && check(cps, i, j - 1)) {
+ level.setBoolean("LightPopulated", true);
+ }

View File

@ -176,7 +176,7 @@
+ return b1;
+ }
} finally {
commandlistenerwrapper.getServer().methodProfiler.e();
commandlistenerwrapper.getServer().methodProfiler.exit();
}
@@ -191,11 +248,36 @@
}

View File

@ -14,24 +14,24 @@
@@ -22,8 +26,15 @@
private int k;
public String renameText;
private final EntityHuman m;
private final EntityHuman player;
+ // CraftBukkit start
+ public int maximumRepairCost = 40;
+ private int lastLevelCost;
+ private CraftInventoryView bukkitEntity;
+ private PlayerInventory player;
+ private PlayerInventory playerInventory;
+ // CraftBukkit end
public ContainerAnvil(PlayerInventory playerinventory, final World world, final BlockPosition blockposition, EntityHuman entityhuman) {
+ this.player = playerinventory; // CraftBukkit
this.j = blockposition;
this.i = world;
this.m = entityhuman;
+ this.playerInventory = playerinventory; // CraftBukkit
this.position = blockposition;
this.world = world;
this.player = entityhuman;
@@ -111,7 +122,7 @@
byte b1 = 0;
if (itemstack.isEmpty()) {
- this.g.setItem(0, ItemStack.a);
- this.resultInventory.setItem(0, ItemStack.a);
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.a); // CraftBukkit
this.levelCost = 0;
} else {
@ -40,7 +40,7 @@
if (itemstack1.e() && itemstack1.getItem().a(itemstack, itemstack2)) {
k = Math.min(itemstack1.getDamage(), itemstack1.h() / 4);
if (k <= 0) {
- this.g.setItem(0, ItemStack.a);
- this.resultInventory.setItem(0, ItemStack.a);
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.a); // CraftBukkit
this.levelCost = 0;
return;
@ -49,7 +49,7 @@
this.k = i1;
} else {
if (!flag && (itemstack1.getItem() != itemstack2.getItem() || !itemstack1.e())) {
- this.g.setItem(0, ItemStack.a);
- this.resultInventory.setItem(0, ItemStack.a);
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.a); // CraftBukkit
this.levelCost = 0;
return;
@ -58,7 +58,7 @@
}
if (flag2 && !flag1) {
- this.g.setItem(0, ItemStack.a);
- this.resultInventory.setItem(0, ItemStack.a);
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), ItemStack.a); // CraftBukkit
this.levelCost = 0;
return;
@ -73,8 +73,8 @@
+ this.levelCost = maximumRepairCost - 1; // CraftBukkit
}
- if (this.levelCost >= 40 && !this.m.abilities.canInstantlyBuild) {
+ if (this.levelCost >= maximumRepairCost && !this.m.abilities.canInstantlyBuild) { // CraftBukkit
- if (this.levelCost >= 40 && !this.player.abilities.canInstantlyBuild) {
+ if (this.levelCost >= maximumRepairCost && !this.player.abilities.canInstantlyBuild) { // CraftBukkit
itemstack1 = ItemStack.a;
}
@ -82,7 +82,7 @@
EnchantmentManager.a(map, itemstack1);
}
- this.g.setItem(0, itemstack1);
- this.resultInventory.setItem(0, itemstack1);
+ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), itemstack1); // CraftBukkit
this.b();
}
@ -92,7 +92,7 @@
public boolean canUse(EntityHuman entityhuman) {
+ if (!this.checkReachable) return true; // CraftBukkit
return !this.i.getType(this.j).a(TagsBlock.ANVIL) ? false : entityhuman.d((double) this.j.getX() + 0.5D, (double) this.j.getY() + 0.5D, (double) this.j.getZ() + 0.5D) <= 64.0D;
return !this.world.getType(this.position).a(TagsBlock.ANVIL) ? false : entityhuman.d((double) this.position.getX() + 0.5D, (double) this.position.getY() + 0.5D, (double) this.position.getZ() + 0.5D) <= 64.0D;
}
@@ -354,4 +366,33 @@
@ -123,8 +123,8 @@
+ }
+
+ org.bukkit.craftbukkit.inventory.CraftInventory inventory = new org.bukkit.craftbukkit.inventory.CraftInventoryAnvil(
+ new org.bukkit.Location(i.getWorld(), j.getX(), j.getY(), j.getZ()), this.h, this.g, this);
+ bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), inventory, this);
+ new org.bukkit.Location(world.getWorld(), position.getX(), position.getY(), position.getZ()), this.repairInventory, this.resultInventory, this);
+ bukkitEntity = new CraftInventoryView(this.player.getBukkitEntity(), inventory, this);
+ return bukkitEntity;
+ }
+ // CraftBukkit end

View File

@ -13,11 +13,11 @@
}
public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> d() {
- return this.f.getCommandDispatcher().a();
+ return this.f.vanillaCommandDispatcher.a(); // CraftBukkit
- return this.server.getCommandDispatcher().a();
+ return this.server.vanillaCommandDispatcher.a(); // CraftBukkit
}
public void Y_() {
public void tick() {
@@ -164,7 +164,7 @@
arraylist.add(CompletableFuture.supplyAsync(() -> {
return a(iresourcemanager, minecraftkey);

View File

@ -1,6 +1,6 @@
--- a/net/minecraft/server/DedicatedServer.java
+++ b/net/minecraft/server/DedicatedServer.java
@@ -23,11 +23,22 @@
@@ -23,6 +23,17 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@ -18,12 +18,6 @@
public class DedicatedServer extends MinecraftServer implements IMinecraftServer {
private static final Logger LOGGER = LogManager.getLogger();
private static final Pattern h = Pattern.compile("^[a-fA-F0-9]{40}$");
- private final List<ServerCommand> serverCommandQueue = Collections.synchronizedList(Lists.newArrayList());
+ private final List<ServerCommand> serverCommandQueue = Collections.synchronizedList(Lists.<ServerCommand>newArrayList()); // CraftBukkit - fix decompile error
private RemoteStatusListener j;
public final RemoteControlCommandListener remoteControlCommandListener = new RemoteControlCommandListener(this);
private RemoteControlListener l;
@@ -37,8 +48,10 @@
private EnumGamemode p;
private boolean q;
@ -106,8 +100,8 @@
DedicatedServer.LOGGER.info("Loading properties");
- this.propertyManager = new PropertyManager(new File("server.properties"));
+ this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support
this.n = new EULA(new File("eula.txt"));
if (!this.n.a()) {
this.eula = new EULA(new File("eula.txt"));
if (!this.eula.a()) {
DedicatedServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info.");
@@ -143,6 +191,12 @@
return false;
@ -128,7 +122,7 @@
} else {
- this.a((PlayerList) (new DedicatedPlayerList(this)));
+ this.convertable = new WorldLoaderServer(server.getWorldContainer().toPath(), server.getWorldContainer().toPath().resolve("../backups"), this.dataConverterManager); // CraftBukkit - moved from MinecraftServer constructor
long j = SystemUtils.c();
long j = SystemUtils.getMonotonicNanos();
if (this.getWorld() == null) {
@@ -204,7 +258,13 @@
@ -163,7 +157,7 @@
+ }
+ // CraftBukkit end
+
if (this.aY() > 0L) {
if (this.getMaxTickTime() > 0L) {
Thread thread1 = new Thread(new ThreadWatchdog(this));
@@ -303,11 +374,11 @@
@ -178,7 +172,7 @@
- protected void b(BooleanSupplier booleansupplier) {
+ public void b(BooleanSupplier booleansupplier) { // CraftBukkit - fix decompile error
super.b(booleansupplier);
this.aU();
this.handleCommandQueue();
}
@@ -342,7 +413,15 @@
while (!this.serverCommandQueue.isEmpty()) {
@ -197,12 +191,11 @@
}
}
@@ -549,16 +628,75 @@
@@ -549,12 +628,71 @@
}
public String getPlugins() {
- return "";
- }
+ // CraftBukkit start - Whole method
+ StringBuilder result = new StringBuilder();
+ org.bukkit.plugin.Plugin[] plugins = server.getPluginManager().getPlugins();
@ -224,11 +217,7 @@
+ result.append(plugins[i].getDescription().getVersion().replaceAll(";", ","));
+ }
+ }
- public String executeRemoteCommand(String s) {
- this.remoteControlCommandListener.clearMessages();
- this.getCommandDispatcher().a(this.remoteControlCommandListener.f(), s);
- return this.remoteControlCommandListener.getMessages();
+
+ return result.toString();
+ // CraftBukkit end
+ }
@ -261,21 +250,21 @@
+ throw new RuntimeException("Interrupted processing rcon command " + s, e);
+ }
+ // CraftBukkit end
}
public PlayerList getPlayerList() {
return this.aV();
}
+ }
+
+ // CraftBukkit start
+ @Override
+ public PropertyManager getPropertyManager() {
+ return this.propertyManager;
+ }
+
}
- public String executeRemoteCommand(String s) {
- this.remoteControlCommandListener.clearMessages();
- this.getCommandDispatcher().a(this.remoteControlCommandListener.f(), s);
- return this.remoteControlCommandListener.getMessages();
+ @Override
+ public CommandSender getBukkitSender(CommandListenerWrapper wrapper) {
+ return console;
+ }
}
+ // CraftBukkit end
}

View File

@ -458,6 +458,23 @@
this.a = true;
if (world.isEmpty(blockposition) && blockpumpkincarved.a((IWorldReader) world, blockposition)) {
if (!world.isClientSide) {
@@ -336,14 +652,14 @@
return itemstack;
}
}));
- BlockDispenser.a((IMaterial) Blocks.SHULKER_BOX.getItem(), (IDispenseBehavior) (new DispenserRegistry.d(null)));
+ BlockDispenser.a((IMaterial) Blocks.SHULKER_BOX.getItem(), (IDispenseBehavior) (new DispenserRegistry.d())); // CraftBukkit - decompile error
EnumColor[] aenumcolor = EnumColor.values();
int i = aenumcolor.length;
for (int j = 0; j < i; ++j) {
EnumColor enumcolor = aenumcolor[j];
- BlockDispenser.a((IMaterial) BlockShulkerBox.a(enumcolor).getItem(), (IDispenseBehavior) (new DispenserRegistry.d(null)));
+ BlockDispenser.a((IMaterial) BlockShulkerBox.a(enumcolor).getItem(), (IDispenseBehavior) (new DispenserRegistry.d())); // CraftBukkit - decompile error
}
}
@@ -385,6 +701,51 @@
}
@ -550,7 +567,7 @@
this.a = ((ItemBlock) item).a((BlockActionContext) (new DispenserRegistry.b(isourceblock.getWorld(), blockposition, enumdirection, itemstack, enumdirection1))) == EnumInteractionResult.SUCCESS;
if (this.a) {
itemstack.subtract(1);
@@ -535,12 +920,40 @@
@@ -531,12 +916,40 @@
d3 = 0.0D;
}

View File

@ -16,10 +16,10 @@
if (iblockdata2.getMaterial() == Material.WATER && (Integer) iblockdata2.get(BlockFluids.LEVEL) == 0 && iblockdata.canPlace(world, blockposition_mutableblockposition1) && world.a(iblockdata, (BlockPosition) blockposition_mutableblockposition1)) {
- world.setTypeUpdate(blockposition_mutableblockposition1, iblockdata);
- world.J().a(blockposition_mutableblockposition1.h(), Blocks.FROSTED_ICE, MathHelper.nextInt(entityliving.getRandom(), 60, 120));
- world.getBlockTickList().a(blockposition_mutableblockposition1.h(), Blocks.FROSTED_ICE, MathHelper.nextInt(entityliving.getRandom(), 60, 120));
+ // CraftBukkit Start - Call EntityBlockFormEvent for Frost Walker
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(world, blockposition_mutableblockposition1, iblockdata, entityliving)) {
+ world.J().a(blockposition_mutableblockposition1.h(), Blocks.FROSTED_ICE, MathHelper.nextInt(entityliving.getRandom(), 60, 120));
+ world.getBlockTickList().a(blockposition_mutableblockposition1.h(), Blocks.FROSTED_ICE, MathHelper.nextInt(entityliving.getRandom(), 60, 120));
+ }
+ // CraftBukkit End
}

View File

@ -123,7 +123,7 @@
+ public void postTick() {
+ // No clean way to break out of ticking once the entity has been copied to a new world, so instead we move the portalling later in the tick cycle
+ if (!this.world.isClientSide && this.world instanceof WorldServer) {
+ this.world.methodProfiler.a("portal");
+ this.world.methodProfiler.enter("portal");
+ if (this.an) {
+ MinecraftServer minecraftserver = this.world.getMinecraftServer();
+
@ -159,13 +159,13 @@
+ }
+
+ this.E();
+ this.world.methodProfiler.e();
+ this.world.methodProfiler.exit();
+ }
+ }
+ // CraftBukkit end
+
public void W() {
this.world.methodProfiler.a("entityBaseTick");
this.world.methodProfiler.enter("entityBaseTick");
if (this.isPassenger() && this.getVehicle().dead) {
@@ -250,6 +380,8 @@
this.lastZ = this.locZ;
@ -174,11 +174,11 @@
+ // Moved up to postTick
+ /*
if (!this.world.isClientSide && this.world instanceof WorldServer) {
this.world.methodProfiler.a("portal");
this.world.methodProfiler.enter("portal");
if (this.an) {
@@ -289,6 +421,7 @@
this.E();
this.world.methodProfiler.e();
this.world.methodProfiler.exit();
}
+ */
@ -219,7 +219,7 @@
if (this.Q > 0.0F && flag && (d7 != d0 || d9 != d2)) {
@@ -592,7 +741,7 @@
this.world.methodProfiler.a("rest");
this.world.methodProfiler.enter("rest");
this.recalcPosition();
this.positionChanged = d7 != d0 || d9 != d2;
- this.C = d1 != d1;
@ -602,7 +602,7 @@
public void j(boolean flag) {
@@ -2036,19 +2387,72 @@
if (!this.world.isClientSide && !this.dead) {
this.world.methodProfiler.a("changeDimension");
this.world.methodProfiler.enter("changeDimension");
MinecraftServer minecraftserver = this.bK();
- DimensionManager dimensionmanager1 = this.dimension;
- WorldServer worldserver = minecraftserver.getWorldServer(dimensionmanager1);
@ -647,7 +647,7 @@
+
+ // Need to make sure the profiler state is reset afterwards (but we still want to time the call)
+ Entity entity = this.teleportTo(exit, true);
+ this.world.methodProfiler.e();
+ this.world.methodProfiler.exit();
+ return entity;
+ } else {
+ return null;
@ -671,7 +671,7 @@
this.world.kill(this);
this.dead = false;
this.world.methodProfiler.a("reposition");
this.world.methodProfiler.enter("reposition");
+ /* CraftBukkit start - Handled in calculateTarget
BlockPosition blockposition;
@ -687,7 +687,7 @@
+ worldserver1.getMinecraftServer().getPlayerList().repositionEntity(this, exit, portal);
+ // worldserver.entityJoinedWorld(this, false); // Handled in repositionEntity
+ // CraftBukkit end
this.world.methodProfiler.c("reloading");
this.world.methodProfiler.exitEnter("reloading");
Entity entity = this.P().a((World) worldserver1);
if (entity != null) {
@ -719,11 +719,11 @@
}
this.dead = true;
this.world.methodProfiler.e();
this.world.methodProfiler.exit();
worldserver.p();
worldserver1.p();
- this.world.methodProfiler.e();
+ // this.world.methodProfiler.e(); // CraftBukkit: Moved up to keep balanced
- this.world.methodProfiler.exit();
+ // this.world.methodProfiler.exit(); // CraftBukkit: Moved up to keep balanced
return entity;
} else {
return null;

View File

@ -34,8 +34,8 @@
public void a(DataWatcherObject<?> datawatcherobject) {
@@ -115,7 +118,7 @@
public void k() {
super.k();
public void movementTick() {
super.movementTick();
- if (this.world.isClientSide) {
+ if (this.world.isClientSide || ageLocked) { // CraftBukkit
if (this.c > 0) {

View File

@ -3,13 +3,13 @@
@@ -42,6 +42,11 @@
}
public void k() {
public void movementTick() {
+ // CraftBukkit start
+ if (this.isChickenJockey()) {
+ this.persistent = !this.isTypeNotPersistent();
+ }
+ // CraftBukkit end
super.k();
super.movementTick();
this.bG = this.bC;
this.bE = this.bD;
@@ -59,7 +64,9 @@

View File

@ -53,18 +53,18 @@
boolean flag = this.world.getGameRules().getBoolean("mobGriefing");
float f = this.isPowered() ? 2.0F : 1.0F;
- this.aX = true;
- this.killed = true;
- this.world.explode(this, this.locX, this.locY, this.locZ, (float) this.explosionRadius * f, flag);
- this.die();
- this.dF();
- this.createEffectCloud();
+ // CraftBukkit start
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.explosionRadius * f, false);
+ this.world.getServer().getPluginManager().callEvent(event);
+ if (!event.isCancelled()) {
+ this.aX = true;
+ this.killed = true;
+ this.world.createExplosion(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire(), flag);
+ this.die();
+ this.dF();
+ this.createEffectCloud();
+ } else {
+ fuseTicks = 0;
+ }

View File

@ -1,5 +1,14 @@
--- a/net/minecraft/server/EntityDolphin.java
+++ b/net/minecraft/server/EntityDolphin.java
@@ -95,7 +95,7 @@
this.goalSelector.a(5, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
this.goalSelector.a(5, new PathfinderGoalWaterJump(this, 10));
this.goalSelector.a(6, new PathfinderGoalMeleeAttack(this, 1.2000000476837158D, true));
- this.goalSelector.a(8, new EntityDolphin.d(null));
+ this.goalSelector.a(8, new EntityDolphin.d()); // CraftBukkit - decompile error
this.goalSelector.a(8, new PathfinderGoalFollowBoat(this));
this.goalSelector.a(9, new PathfinderGoalAvoidTarget(this, EntityGuardian.class, 8.0F, 1.0D, 1.0D));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[] { EntityGuardian.class}));
@@ -412,7 +412,7 @@
}

View File

@ -26,7 +26,7 @@
Vec3D vec3d = idragoncontroller.g();
- if (vec3d != null) {
+ if (vec3d != null && idragoncontroller.getControllerPhase() != DragonControllerPhase.k) { // CraftBukkit - Don't move when hovering // PAIL: rename
+ if (vec3d != null && idragoncontroller.getControllerPhase() != DragonControllerPhase.HOVER) { // CraftBukkit - Don't move when hovering
d0 = vec3d.x - this.locX;
d1 = vec3d.y - this.locY;
d2 = vec3d.z - this.locZ;

View File

@ -20,7 +20,7 @@
- if (this.random.nextFloat() < 0.05F && this.world.getGameRules().getBoolean("doMobSpawning")) {
- EntityEndermite entityendermite = new EntityEndermite(this.world);
-
- entityendermite.a(true);
- entityendermite.setPlayerSpawned(true);
- entityendermite.setPositionRotation(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch);
- this.world.addEntity(entityendermite);
- }
@ -40,7 +40,7 @@
+ if (this.random.nextFloat() < 0.05F && this.world.getGameRules().getBoolean("doMobSpawning")) {
+ EntityEndermite entityendermite = new EntityEndermite(this.world);
+
+ entityendermite.a(true);
+ entityendermite.setPlayerSpawned(true);
+ entityendermite.setPositionRotation(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch);
+ this.world.addEntity(entityendermite, CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
+ }

View File

@ -4,12 +4,12 @@
this.goalSelector.a(11, new EntityEnderman.PathfinderGoalEndermanPickupBlock(this));
this.targetSelector.a(1, new EntityEnderman.PathfinderGoalPlayerWhoLookedAtTarget(this));
this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, false, new Class[0]));
- this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityEndermite.class, 10, true, false, EntityEndermite::l));
- this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityEndermite.class, 10, true, false, EntityEndermite::isPlayerSpawned));
+ // CraftBukkit - decompile error
+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityEndermite.class, 10, true, false, new Predicate<EntityEndermite>() {
+ @Override
+ public boolean test(EntityEndermite entityendermite) {
+ return entityendermite.l();
+ return entityendermite.isPlayerSpawned();
+ }
+ }));
+ // CraftBukkit end

View File

@ -20,7 +20,7 @@
this.die();
@@ -112,7 +114,7 @@
if (!flag1 && BlockFalling.k(this.world.getType(new BlockPosition(this.locX, this.locY - 0.009999999776482582D, this.locZ)))) {
if (!flag1 && BlockFalling.canFallThrough(this.world.getType(new BlockPosition(this.locX, this.locY - 0.009999999776482582D, this.locZ)))) {
this.onGround = false;
- return;
+ // return; // CraftBukkit
@ -31,9 +31,9 @@
if (iblockdata.getBlock() != Blocks.MOVING_PISTON) {
this.die();
if (!this.f) {
- if (iblockdata.getMaterial().isReplaceable() && (flag1 || !BlockFalling.k(this.world.getType(blockposition.down()))) && this.world.setTypeAndData(blockposition, this.block, 3)) {
- if (iblockdata.getMaterial().isReplaceable() && (flag1 || !BlockFalling.canFallThrough(this.world.getType(blockposition.down()))) && this.world.setTypeAndData(blockposition, this.block, 3)) {
+ // CraftBukkit start
+ if (iblockdata.getMaterial().isReplaceable() && (flag1 || !BlockFalling.k(this.world.getType(blockposition.down())))) {
+ if (iblockdata.getMaterial().isReplaceable() && (flag1 || !BlockFalling.canFallThrough(this.world.getType(blockposition.down())))) {
+ if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, this.block).isCancelled()) {
+ return;
+ }

View File

@ -59,9 +59,9 @@
+ super.die(damagesource); // CraftBukkit
}
public void k() {
public void movementTick() {
@@ -480,7 +483,7 @@
super.k();
super.movementTick();
if (!this.world.isClientSide) {
if (this.random.nextInt(900) == 0 && this.deathTicks == 0) {
- this.heal(1.0F);

View File

@ -171,8 +171,8 @@
}
public boolean a(EntityHuman entityhuman) {
- ScoreboardTeamBase scoreboardteambase = this.be();
- ScoreboardTeamBase scoreboardteambase1 = entityhuman.be();
- ScoreboardTeamBase scoreboardteambase = this.getScoreboardTeam();
- ScoreboardTeamBase scoreboardteambase1 = entityhuman.getScoreboardTeam();
+ // CraftBukkit start - Change to check OTHER player's scoreboard team according to API
+ // To summarize this method's logic, it's "Can parameter hurt this"
+ org.bukkit.scoreboard.Team team;
@ -330,7 +330,15 @@
return EntityHuman.EnumBedResult.NOT_POSSIBLE_HERE;
}
@@ -1143,6 +1270,26 @@
@@ -1136,13 +1263,33 @@
if (!this.u()) {
double d0 = 8.0D;
double d1 = 5.0D;
- List list = this.world.a(EntityMonster.class, new AxisAlignedBB((double) blockposition.getX() - 8.0D, (double) blockposition.getY() - 5.0D, (double) blockposition.getZ() - 8.0D, (double) blockposition.getX() + 8.0D, (double) blockposition.getY() + 5.0D, (double) blockposition.getZ() + 8.0D), (Predicate) (new EntityHuman.c(this, null)));
+ List list = this.world.a(EntityMonster.class, new AxisAlignedBB((double) blockposition.getX() - 8.0D, (double) blockposition.getY() - 5.0D, (double) blockposition.getZ() - 8.0D, (double) blockposition.getX() + 8.0D, (double) blockposition.getY() + 5.0D, (double) blockposition.getZ() + 8.0D), (Predicate) (new EntityHuman.c(this))); // CraftBukkit - decompile error
if (!list.isEmpty()) {
return EntityHuman.EnumBedResult.NOT_SAFE;
}
}
}
@ -442,12 +450,3 @@
}
public abstract boolean isSpectator();
@@ -1856,7 +2032,7 @@
return entitymonster.c(this.a);
}
- public boolean test(@Nullable Object object) {
+ public boolean test(@Nullable EntityMonster object) { // CraftBukkit - decompile error
return this.a((EntityMonster) object);
}

View File

@ -1,5 +1,16 @@
--- a/net/minecraft/server/EntityIllagerIllusioner.java
+++ b/net/minecraft/server/EntityIllagerIllusioner.java
@@ -24,8 +24,8 @@
super.n();
this.goalSelector.a(0, new PathfinderGoalFloat(this));
this.goalSelector.a(1, new EntityIllagerWizard.b());
- this.goalSelector.a(4, new EntityIllagerIllusioner.b(null));
- this.goalSelector.a(5, new EntityIllagerIllusioner.a(null));
+ this.goalSelector.a(4, new EntityIllagerIllusioner.b()); // CraftBukkit - decompile error
+ this.goalSelector.a(5, new EntityIllagerIllusioner.a()); // CraftBukkit - decompile error
this.goalSelector.a(6, new PathfinderGoalBowShoot(this, 0.5D, 20, 15.0F));
this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D));
this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 3.0F, 1.0F));
@@ -164,7 +164,7 @@
}
@ -9,7 +20,7 @@
}
protected SoundEffect k() {
@@ -199,7 +199,7 @@
@@ -195,7 +195,7 @@
}
protected void j() {

View File

@ -73,7 +73,7 @@
}
@@ -264,6 +304,18 @@
this.world.methodProfiler.e();
this.world.methodProfiler.exit();
}
+ // CraftBukkit start
@ -89,7 +89,7 @@
+ // CraftBukkit end
+
protected void b(BlockPosition blockposition) {
int i = EnchantmentManager.a(Enchantments.j, this);
int i = EnchantmentManager.a(Enchantments.FROST_WALKER, this);
@@ -283,19 +335,19 @@

View File

@ -92,11 +92,11 @@
+ // CraftBukkit - handled in postTick
+ /*
if (!this.world.isClientSide && this.world instanceof WorldServer) {
this.world.methodProfiler.a("portal");
this.world.methodProfiler.enter("portal");
MinecraftServer minecraftserver = this.world.getMinecraftServer();
@@ -190,6 +242,7 @@
this.world.methodProfiler.e();
this.world.methodProfiler.exit();
}
+ */

View File

@ -1,6 +1,14 @@
--- a/net/minecraft/server/EntityParrot.java
+++ b/net/minecraft/server/EntityParrot.java
@@ -27,7 +27,7 @@
@@ -16,14 +16,14 @@
public class EntityParrot extends EntityPerchable implements EntityBird {
private static final DataWatcherObject<Integer> bL = DataWatcher.a(EntityParrot.class, DataWatcherRegistry.b);
- private static final Predicate<EntityInsentient> bM = new Predicate() {
+ private static final Predicate<EntityInsentient> bM = new Predicate<EntityInsentient>() { // CraftBukkit - decompile error
public boolean test(@Nullable EntityInsentient entityinsentient) {
return entityinsentient != null && EntityParrot.bP.containsKey(entityinsentient.P());
}
};
private static final Item bN = Items.COOKIE;
private static final Set<Item> bO = Sets.newHashSet(new Item[] { Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS});
@ -9,7 +17,7 @@
hashmap.put(EntityTypes.BLAZE, SoundEffects.ENTITY_PARROT_IMITATE_BLAZE);
hashmap.put(EntityTypes.CAVE_SPIDER, SoundEffects.ENTITY_PARROT_IMITATE_SPIDER);
hashmap.put(EntityTypes.CREEPER, SoundEffects.ENTITY_PARROT_IMITATE_CREEPER);
@@ -174,7 +174,7 @@
@@ -170,7 +170,7 @@
}
if (!this.world.isClientSide) {
@ -18,7 +26,7 @@
this.c(entityhuman);
this.s(true);
this.world.broadcastEntityEffect(this, (byte) 7);
@@ -190,7 +190,7 @@
@@ -186,7 +186,7 @@
itemstack.subtract(1);
}
@ -27,7 +35,7 @@
if (entityhuman.u() || !this.bl()) {
this.damageEntity(DamageSource.playerAttack(entityhuman), Float.MAX_VALUE);
}
@@ -310,7 +310,8 @@
@@ -306,7 +306,8 @@
return false;
} else {
if (this.goalSit != null) {

View File

@ -1,6 +1,22 @@
--- a/net/minecraft/server/EntityPhantom.java
+++ b/net/minecraft/server/EntityPhantom.java
@@ -186,7 +186,7 @@
@@ -28,10 +28,11 @@
}
protected void n() {
- this.goalSelector.a(1, new EntityPhantom.c(null));
- this.goalSelector.a(2, new EntityPhantom.i(null));
- this.goalSelector.a(3, new EntityPhantom.e(null));
- this.targetSelector.a(1, new EntityPhantom.b(null));
+ // CraftBukkit - decompile errors
+ this.goalSelector.a(1, new EntityPhantom.c());
+ this.goalSelector.a(2, new EntityPhantom.i());
+ this.goalSelector.a(3, new EntityPhantom.e());
+ this.targetSelector.a(1, new EntityPhantom.b());
}
protected void initAttributes() {
@@ -186,7 +187,7 @@
} else {
this.b = 60;
AxisAlignedBB axisalignedbb = EntityPhantom.this.getBoundingBox().grow(16.0D, 64.0D, 16.0D);
@ -9,7 +25,7 @@
if (!list.isEmpty()) {
list.sort((entityhuman, entityhuman1) -> {
@@ -198,7 +198,7 @@
@@ -198,7 +199,7 @@
EntityHuman entityhuman = (EntityHuman) iterator.next();
if (PathfinderGoalTarget.a(EntityPhantom.this, entityhuman, false, false)) {

View File

@ -104,7 +104,7 @@
@@ -132,6 +206,7 @@
if (nbttagcompound.hasKeyOfType("recipeBook", 10)) {
this.cy.a(nbttagcompound.getCompound("recipeBook"));
this.recipeBook.a(nbttagcompound.getCompound("recipeBook"));
}
+ this.getBukkitEntity().readExtraData(nbttagcompound); // CraftBukkit
@ -135,7 +135,7 @@
@@ -162,8 +250,34 @@
}
nbttagcompound.set("recipeBook", this.cy.e());
nbttagcompound.set("recipeBook", this.recipeBook.e());
+ this.getBukkitEntity().setExtraData(nbttagcompound); // CraftBukkit
}
@ -182,14 +182,14 @@
@@ -275,7 +394,7 @@
}
if (this.getHealth() != this.lastHealthSent || this.co != this.foodData.getFoodLevel() || this.foodData.getSaturationLevel() == 0.0F != this.cp) {
if (this.getHealth() != this.lastHealthSent || this.lastFoodSent != this.foodData.getFoodLevel() || this.foodData.getSaturationLevel() == 0.0F != this.cp) {
- this.playerConnection.sendPacket(new PacketPlayOutUpdateHealth(this.getHealth(), this.foodData.getFoodLevel(), this.foodData.getSaturationLevel()));
+ this.playerConnection.sendPacket(new PacketPlayOutUpdateHealth(this.getBukkitEntity().getScaledHealth(), this.foodData.getFoodLevel(), this.foodData.getSaturationLevel())); // CraftBukkit
this.lastHealthSent = this.getHealth();
this.co = this.foodData.getFoodLevel();
this.lastFoodSent = this.foodData.getFoodLevel();
this.cp = this.foodData.getSaturationLevel() == 0.0F;
@@ -306,6 +425,12 @@
this.a(IScoreboardCriteria.k, MathHelper.f((float) this.cm));
this.a(IScoreboardCriteria.XP, MathHelper.f((float) this.cm));
}
+ // CraftBukkit start - Force max health updates
@ -200,7 +200,7 @@
+
if (this.expLevel != this.cl) {
this.cl = this.expLevel;
this.a(IScoreboardCriteria.l, MathHelper.f((float) this.cl));
this.a(IScoreboardCriteria.LEVEL, MathHelper.f((float) this.cl));
@@ -320,6 +445,16 @@
CriterionTriggers.p.a(this);
}
@ -279,20 +279,20 @@
this.releaseShoulderEntities();
- if (!this.world.getGameRules().getBoolean("keepInventory") && !this.isSpectator()) {
- this.dj();
- this.inventory.q();
- this.removeCursedItems();
- this.inventory.dropContents();
+ // we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.
+ if (!event.getKeepInventory()) {
+ this.inventory.clear();
}
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.d, this.getName(), ScoreboardScore::incrementScore);
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.DEATH_COUNT, this.getName(), ScoreboardScore::incrementScore);
+ this.closeInventory();
+ this.setSpectatorTarget(this); // Remove spectated target
+ // CraftBukkit end
+
+ // CraftBukkit - Get our scores instead
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.d, this.getName(), ScoreboardScore::incrementScore);
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.DEATH_COUNT, this.getName(), ScoreboardScore::incrementScore);
EntityLiving entityliving = this.cv();
if (entityliving != null) {
@ -300,14 +300,14 @@
String s = this.getName();
String s1 = entity.getName();
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.f, s, ScoreboardScore::incrementScore);
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.TOTAL_KILL_COUNT, s, ScoreboardScore::incrementScore);
+ // CraftBukkit - Get our scores instead
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.f, s, ScoreboardScore::incrementScore);
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.TOTAL_KILL_COUNT, s, ScoreboardScore::incrementScore);
if (entity instanceof EntityHuman) {
this.a(StatisticList.PLAYER_KILLS);
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.e, s, ScoreboardScore::incrementScore);
- this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.PLAYER_KILL_COUNT, s, ScoreboardScore::incrementScore);
+ // CraftBukkit - Get our scores instead
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.e, s, ScoreboardScore::incrementScore);
+ this.world.getServer().getScoreboardManager().getScoreboardScores(IScoreboardCriteria.PLAYER_KILL_COUNT, s, ScoreboardScore::incrementScore);
} else {
this.a(StatisticList.MOB_KILLS);
}
@ -545,9 +545,9 @@
@@ -882,7 +1121,7 @@
this.lastSentExp = -1;
this.lastHealthSent = -1.0F;
this.co = -1;
- this.cy.a((RecipeBook) entityplayer.cy);
+ // this.cy.a((RecipeBook) entityplayer.cy); // CraftBukkit
this.lastFoodSent = -1;
- this.recipeBook.a((RecipeBook) entityplayer.recipeBook);
+ // this.recipeBook.a((RecipeBook) entityplayer.recipeBook); // CraftBukkit
this.removeQueue.addAll(entityplayer.removeQueue);
this.cx = entityplayer.cx;
this.cC = entityplayer.cC;
@ -605,11 +605,11 @@
protected void C() {
@@ -1053,7 +1315,7 @@
this.cv = (Entity) (entity == null ? this : entity);
if (entity1 != this.cv) {
this.playerConnection.sendPacket(new PacketPlayOutCamera(this.cv));
- this.enderTeleportTo(this.cv.locX, this.cv.locY, this.cv.locZ);
+ this.playerConnection.a(this.cv.locX, this.cv.locY, this.cv.locZ, this.yaw, this.pitch, TeleportCause.SPECTATE); // CraftBukkit
this.spectatedEntity = (Entity) (entity == null ? this : entity);
if (entity1 != this.spectatedEntity) {
this.playerConnection.sendPacket(new PacketPlayOutCamera(this.spectatedEntity));
- this.enderTeleportTo(this.spectatedEntity.locX, this.spectatedEntity.locY, this.spectatedEntity.locZ);
+ this.playerConnection.a(this.spectatedEntity.locX, this.spectatedEntity.locY, this.spectatedEntity.locZ, this.yaw, this.pitch, TeleportCause.SPECTATE); // CraftBukkit
}
}

View File

@ -15,12 +15,12 @@
protected void n() {
this.goalSelector.a(1, new PathfinderGoalFloat(this));
@@ -397,9 +403,23 @@
@@ -393,9 +399,23 @@
Integer integer = (Integer) iblockdata.get(BlockCarrots.AGE);
if (integer == 0) {
+ // CraftBukkit start
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.f, blockposition, Blocks.AIR.getBlockData()).isCancelled()) {
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.entity, blockposition, Blocks.AIR.getBlockData()).isCancelled()) {
+ return;
+ }
+ // CraftBukkit end
@ -29,7 +29,7 @@
} else {
+ // CraftBukkit start
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(
+ this.f,
+ this.entity,
+ blockposition,
+ iblockdata.set(BlockCarrots.AGE, integer - 1)
+ ).isCancelled()) {

View File

@ -71,6 +71,6 @@
this.container.setItem(0, new ItemStack(ItemDye.a(enumcolor)));
this.container.setItem(1, new ItemStack(ItemDye.a(enumcolor1)));
+ this.container.resultInventory = new InventoryCraftResult(); // CraftBukkit - add result slot for event
ItemStack itemstack = entityanimal.world.E().craft(this.container, ((EntitySheep) entityanimal).world);
ItemStack itemstack = entityanimal.world.getCraftingManager().craft(this.container, ((EntitySheep) entityanimal).world);
Item item = itemstack.getItem();
EnumColor enumcolor2;

View File

@ -11,6 +11,15 @@
public class EntityShulker extends EntityGolem implements IMonster {
@@ -44,7 +48,7 @@
protected void n() {
this.goalSelector.a(1, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(4, new EntityShulker.a());
- this.goalSelector.a(7, new EntityShulker.e(null));
+ this.goalSelector.a(7, new EntityShulker.e()); // CraftBukkit - decompile error
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0]));
this.targetSelector.a(2, new EntityShulker.d(this));
@@ -321,8 +325,17 @@
EnumDirection enumdirection = aenumdirection[k];

View File

@ -1,5 +1,19 @@
--- a/net/minecraft/server/EntityTurtle.java
+++ b/net/minecraft/server/EntityTurtle.java
@@ -130,11 +130,11 @@
this.goalSelector.a(1, new EntityTurtle.a(this, 1.0D));
this.goalSelector.a(1, new EntityTurtle.d(this, 1.0D));
this.goalSelector.a(2, new EntityTurtle.i(this, 1.1D, Blocks.SEAGRASS.getItem()));
- this.goalSelector.a(3, new EntityTurtle.c(this, 1.0D, null));
+ this.goalSelector.a(3, new EntityTurtle.c(this, 1.0D)); // CraftBukkit - decompile error
this.goalSelector.a(4, new EntityTurtle.b(this, 1.0D));
this.goalSelector.a(7, new EntityTurtle.j(this, 1.0D));
this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
- this.goalSelector.a(9, new EntityTurtle.h(this, 1.0D, 100, null));
+ this.goalSelector.a(9, new EntityTurtle.h(this, 1.0D, 100)); // CraftBukkit - decompile error
}
protected void initAttributes() {
@@ -232,7 +232,9 @@
protected void l() {
super.l();
@ -20,7 +34,7 @@
}
public void die(DamageSource damagesource) {
@@ -435,8 +439,12 @@
@@ -423,15 +427,19 @@
} else if (this.f.bK > 200) {
World world = this.f.world;
@ -33,3 +47,11 @@
this.f.s(false);
this.f.t(false);
this.f.d(600);
}
if (this.f.dz()) {
- EntityTurtle.g(this.f);
+ this.f.bK++; // CraftBukkit - decompile error
}
}

View File

@ -96,15 +96,17 @@
}
}
@@ -362,7 +395,7 @@
@@ -362,8 +395,8 @@
EntityZombieVillager entityzombievillager = new EntityZombieVillager(this.world);
entityzombievillager.u(entityvillager);
- this.world.kill(entityvillager);
- entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false, null), (NBTTagCompound) null);
+ // this.world.kill(entityvillager); // CraftBukkit - moved down
entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false, null), (NBTTagCompound) null);
+ entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false), (NBTTagCompound) null); // CraftBukkit - decompile error
entityzombievillager.setProfession(entityvillager.getProfession());
entityzombievillager.setBaby(entityvillager.isBaby());
entityzombievillager.setNoAI(entityvillager.isNoAI());
@@ -372,7 +405,13 @@
entityzombievillager.setCustomNameVisible(entityvillager.getCustomNameVisible());
}
@ -120,6 +122,15 @@
this.world.a((EntityHuman) null, 1026, new BlockPosition(this), 0);
}
@@ -399,7 +438,7 @@
this.p(this.random.nextFloat() < 0.55F * f);
if (object == null) {
- object = new EntityZombie.GroupDataZombie(this.world.random.nextFloat() < 0.05F, null);
+ object = new EntityZombie.GroupDataZombie(this.world.random.nextFloat() < 0.05F); // CraftBukkit - decompile error
}
if (object instanceof EntityZombie.GroupDataZombie) {
@@ -422,7 +461,7 @@
entitychicken1.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F);
entitychicken1.prepare(difficultydamagescaler, (GroupDataEntity) null, (NBTTagCompound) null);

View File

@ -9,16 +9,12 @@
Date date;
@@ -72,4 +72,30 @@
@@ -72,4 +72,26 @@
jsonobject.addProperty("expires", this.d == null ? "forever" : ExpirableListEntry.a.format(this.d));
jsonobject.addProperty("reason", this.e);
}
+
+ // CraftBukkit start
+ public String getSource() {
+ return this.c;
+ }
+
+ public Date getCreated() {
+ return this.b;
+ }

View File

@ -12,7 +12,7 @@
public class ExpiringMap<T> extends Long2ObjectOpenHashMap<T> {
@@ -21,11 +23,17 @@
long j = SystemUtils.b();
long j = SystemUtils.getMonotonicMillis();
this.b.put(i, j);
- ObjectIterator objectiterator = this.b.long2LongEntrySet().iterator();
@ -21,7 +21,7 @@
+ }
+
+ public void cleanup() {
+ long j = SystemUtils.b();
+ long j = SystemUtils.getMonotonicMillis();
+ ObjectIterator<Long2LongMap.Entry> objectiterator = this.b.long2LongEntrySet().iterator(); // CraftBukkit - decompile error
while (objectiterator.hasNext()) {
@ -48,7 +48,7 @@
+ // CraftBukkit start
+ @Override
+ public T computeIfAbsent(long l, LongFunction<? extends T> lf) {
+ this.b.put(l, SystemUtils.b());
+ this.b.put(l, SystemUtils.getMonotonicMillis());
+ return super.computeIfAbsent(l, lf);
+ }
+

View File

@ -41,17 +41,3 @@
public static class a implements RecipeSerializer<FurnaceRecipe> {
public a() {}
@@ -106,11 +133,11 @@
return "smelting";
}
- public IRecipe a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) {
+ public FurnaceRecipe a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) { // CraftBukkit - decompile error
return this.b(minecraftkey, packetdataserializer);
}
- public IRecipe a(MinecraftKey minecraftkey, JsonObject jsonobject) {
+ public FurnaceRecipe a(MinecraftKey minecraftkey, JsonObject jsonobject) { // CraftBukkit - decompile error
return this.b(minecraftkey, jsonobject);
}
}

View File

@ -1,5 +1,14 @@
--- a/net/minecraft/server/JsonList.java
+++ b/net/minecraft/server/JsonList.java
@@ -56,7 +56,7 @@
this.c = file;
GsonBuilder gsonbuilder = (new GsonBuilder()).setPrettyPrinting();
- gsonbuilder.registerTypeHierarchyAdapter(JsonListEntry.class, new JsonList.JsonListEntrySerializer(null));
+ gsonbuilder.registerTypeHierarchyAdapter(JsonListEntry.class, new JsonList.JsonListEntrySerializer()); // CraftBukkit - decompile error
this.b = gsonbuilder.create();
}
@@ -86,7 +86,7 @@
@Nullable
public V get(K k0) {
@ -40,17 +49,3 @@
}
}
}
@@ -212,11 +218,11 @@
}
}
- public JsonElement serialize(Object object, Type type, JsonSerializationContext jsonserializationcontext) {
+ public JsonElement serialize(JsonListEntry<K> object, Type type, JsonSerializationContext jsonserializationcontext) { // CraftBukkit - fix decompile error
return this.a((JsonListEntry) object, type, jsonserializationcontext);
}
- public Object deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException {
+ public JsonListEntry<K> deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { // CraftBukkit - fix decompile error
return this.a(jsonelement, type, jsondeserializationcontext);
}

View File

@ -4,12 +4,12 @@
MinecraftServer minecraftserver = this.b.d();
int i = bytebuf.readableBytes();
String s;
+ org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()); // CraftBukkit
+ org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()); // CraftBukkit
switch (i) {
case 0:
LegacyPingHandler.a.debug("Ping: (<1.3.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
- s = String.format("%s\u00a7%d\u00a7%d", new Object[] { minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()});
- s = String.format("%s\u00a7%d\u00a7%d", new Object[] { minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
+ s = String.format("%s\u00a7%d\u00a7%d", new Object[] { event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
this.a(channelhandlercontext, this.a(s));
break;
@ -18,7 +18,7 @@
}
LegacyPingHandler.a.debug("Ping: (1.4-1.5.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()});
- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
+ s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
this.a(channelhandlercontext, this.a(s));
break;
@ -27,7 +27,7 @@
}
LegacyPingHandler.a.debug("Ping: (1.6) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
- String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()});
- String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
+ String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
ByteBuf bytebuf1 = this.a(s1);

View File

@ -15,12 +15,3 @@
return itemstack;
}
@@ -57,7 +62,7 @@
return new LootEnchantFunction(alootitemcondition, (LootValueBounds) ChatDeserializer.a(jsonobject, "count", jsondeserializationcontext, LootValueBounds.class), i);
}
- public LootItemFunction b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext, LootItemCondition[] alootitemcondition) {
+ public LootEnchantFunction b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext, LootItemCondition[] alootitemcondition) { // CraftBukkit - decompile error
return this.a(jsonobject, jsondeserializationcontext, alootitemcondition);
}
}

View File

@ -12,12 +12,3 @@
return random.nextFloat() < this.a + (float) i * this.b;
}
@@ -40,7 +45,7 @@
return new LootItemConditionRandomChanceWithLooting(ChatDeserializer.l(jsonobject, "chance"), ChatDeserializer.l(jsonobject, "looting_multiplier"));
}
- public LootItemCondition b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext) {
+ public LootItemConditionRandomChanceWithLooting b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext) { // CraftBukkit - decompile error
return this.a(jsonobject, jsondeserializationcontext);
}
}

View File

@ -26,21 +26,7 @@
}
@Nullable
@@ -124,11 +127,11 @@
return LootTableInfo.EntityTarget.a(jsonreader.nextString());
}
- public Object read(JsonReader jsonreader) throws IOException {
+ public LootTableInfo.EntityTarget read(JsonReader jsonreader) throws IOException { // CraftBukkit - decompile error
return this.a(jsonreader);
}
- public void write(JsonWriter jsonwriter, Object object) throws IOException {
+ public void write(JsonWriter jsonwriter, LootTableInfo.EntityTarget object) throws IOException { // CraftBukkit - decompile error
this.a(jsonwriter, (LootTableInfo.EntityTarget) object);
}
}
@@ -138,6 +141,7 @@
@@ -130,6 +133,7 @@
private final WorldServer a;
private float b;
@ -48,7 +34,7 @@
private Entity c;
private EntityHuman d;
private DamageSource e;
@@ -172,8 +176,15 @@
@@ -164,8 +168,15 @@
return this;
}

View File

@ -19,7 +19,7 @@
@@ -52,6 +54,7 @@
}
public void a(String s) {
public void enter(String s) {
+ if (!ENABLED) return; // CraftBukkit
if (this.d) {
if (!this.e.isEmpty()) {
@ -30,14 +30,14 @@
public void a(Supplier<String> supplier) {
+ if (!ENABLED) return; // CraftBukkit
if (this.d) {
this.a((String) supplier.get());
this.enter((String) supplier.get());
}
}
public void e() {
public void exit() {
+ if (!ENABLED) return; // CraftBukkit
if (this.d && !this.c.isEmpty()) {
long i = SystemUtils.c();
long i = SystemUtils.getMonotonicNanos();
long j = (Long) this.c.remove(this.c.size() - 1);
@@ -92,6 +97,7 @@
}
@ -50,10 +50,10 @@
@@ -154,11 +160,13 @@
}
public void c(String s) {
public void exitEnter(String s) {
+ if (!ENABLED) return; // CraftBukkit
this.e();
this.a(s);
this.exit();
this.enter(s);
}
public String f() {
@ -61,12 +61,3 @@
return this.b.isEmpty() ? "[UNKNOWN]" : (String) this.b.get(this.b.size() - 1);
}
@@ -178,7 +186,7 @@
return methodprofiler_profilerinfo.a < this.a ? -1 : (methodprofiler_profilerinfo.a > this.a ? 1 : methodprofiler_profilerinfo.c.compareTo(this.c));
}
- public int compareTo(Object object) {
+ public int compareTo(MethodProfiler.ProfilerInfo object) { // CraftBukkit: decompile error
return this.a((MethodProfiler.ProfilerInfo) object);
}
}

View File

@ -49,10 +49,10 @@
this.W = gameprofilerepository;
this.X = usercache;
- this.universe = file;
- this.l = file == null ? null : new ServerConnection(this);
- this.serverConnection = file == null ? null : new ServerConnection(this);
- this.convertable = file == null ? null : new WorldLoaderServer(file.toPath(), file.toPath().resolve("../backups"), datafixer);
+ // this.universe = file; // CraftBukkit
+ this.l = new ServerConnection(this); // CraftBukkit
+ this.serverConnection = new ServerConnection(this); // CraftBukkit
+ // this.convertable = file == null ? null : new WorldLoaderServer(file.toPath(), file.toPath().resolve("../backups"), datafixer); // CraftBukkit - moved to DedicatedServer.init
this.dataConverterManager = datafixer;
this.ac.a((IResourcePackListener) this.ah);
@ -189,7 +189,7 @@
+ world = (WorldServer) (new WorldServer(this, idatamanager, persistentcollection, worlddata, DimensionManager.OVERWORLD, this.methodProfiler, org.bukkit.World.Environment.getEnvironment(dimension), gen)).i_();
+ }
- SecondaryWorldServer secondaryworldserver = (new SecondaryWorldServer(this, idatamanager, DimensionManager.NETHER, worldserver, this.methodProfiler)).b();
- SecondaryWorldServer secondaryworldserver = (new SecondaryWorldServer(this, idatamanager, DimensionManager.NETHER, worldserver, this.methodProfiler)).i_();
+ world.a(worldsettings);
+ this.server.scoreboardManager = new org.bukkit.craftbukkit.scoreboard.CraftScoreboardManager(this, world.getScoreboard());
+ } else {
@ -203,7 +203,7 @@
+ File newWorld = new File(new File(name), dim);
+ File oldWorld = new File(new File(s), dim);
- SecondaryWorldServer secondaryworldserver1 = (new SecondaryWorldServer(this, idatamanager, DimensionManager.THE_END, worldserver, this.methodProfiler)).b();
- SecondaryWorldServer secondaryworldserver1 = (new SecondaryWorldServer(this, idatamanager, DimensionManager.THE_END, worldserver, this.methodProfiler)).i_();
+ if ((!newWorld.isDirectory()) && (oldWorld.isDirectory())) {
+ MinecraftServer.LOGGER.info("---- Migration of old " + worldType + " folder required ----");
+ MinecraftServer.LOGGER.info("Unfortunately due to the way that Minecraft implemented multiworld support in 1.6, Bukkit requires that you move your " + worldType + " folder to a new location in order to operate correctly.");
@ -246,7 +246,7 @@
+ worlddata = new WorldData(worldsettings, name);
+ }
+ worlddata.checkName(name); // CraftBukkit - Migration did not rewrite the level.dat; This forces 1.8 to take the last loaded world as respawn (in this case the end)
+ world = (WorldServer) new SecondaryWorldServer(this, idatamanager, DimensionManager.a(dimension), this.getWorldServer(DimensionManager.OVERWORLD), this.methodProfiler, worlddata, org.bukkit.World.Environment.getEnvironment(dimension), gen).b();
+ world = (WorldServer) new SecondaryWorldServer(this, idatamanager, DimensionManager.a(dimension), this.getWorldServer(DimensionManager.OVERWORLD), this.methodProfiler, worlddata, org.bukkit.World.Environment.getEnvironment(dimension), gen).i_();
+ }
+
+ this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldInitEvent(world.getWorld()));
@ -319,7 +319,7 @@
+ continue;
}
- CompletableFuture completablefuture = worldserver.getChunkProviderServer().a((Iterable) arraylist, (chunk) -> {
- CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) arraylist, (chunk) -> {
- set.add(chunk.getPos());
- });
+ BlockPosition blockposition = worldserver.getSpawn();
@ -340,7 +340,7 @@
- if (executionexception.getCause() instanceof RuntimeException) {
- throw (RuntimeException) executionexception.getCause();
- }
+ CompletableFuture completablefuture = worldserver.getChunkProviderServer().a((Iterable) arraylist, (chunk) -> {
+ CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) arraylist, (chunk) -> {
+ set.add(chunk.getPos());
+ });
+
@ -415,25 +415,25 @@
}
@@ -452,6 +624,7 @@
MinecraftServer.LOGGER.info("Saving players");
this.s.savePlayers();
this.s.u();
this.playerList.savePlayers();
this.playerList.u();
+ try { Thread.sleep(100); } catch (InterruptedException ex) {} // CraftBukkit - SPIGOT-625 - give server at least a chance to send packets
}
MinecraftServer.LOGGER.info("Saving worlds");
@@ -516,11 +689,13 @@
if (i > 2000L && this.aa - this.Q >= 15000L) {
if (i > 2000L && this.nextTick - this.lastOverloadTime >= 15000L) {
long j = i / 50L;
+ if (server.getWarnOnOverload()) // CraftBukkit
MinecraftServer.LOGGER.warn("Can't keep up! Is the server overloaded? Running {}ms or {} ticks behind", i, j);
this.aa += j * 50L;
this.Q = this.aa;
this.nextTick += j * 50L;
this.lastOverloadTime = this.nextTick;
}
+ MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
this.a(this::aT);
this.aa += 50L;
this.a(this::canSleepForTick);
this.nextTick += 50L;
@@ -559,6 +734,12 @@
} catch (Throwable throwable1) {
@ -454,20 +454,20 @@
- if (this.ticks % 900 == 0) {
+ if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
this.methodProfiler.a("save");
this.s.savePlayers();
this.methodProfiler.enter("save");
this.playerList.savePlayers();
this.saveChunks(true);
@@ -653,6 +834,7 @@
}
public void b(BooleanSupplier booleansupplier) {
+ this.server.getScheduler().mainThreadHeartbeat(this.ticks); // CraftBukkit
this.methodProfiler.a("jobs");
this.methodProfiler.enter("jobs");
FutureTask futuretask;
@@ -665,23 +847,40 @@
this.getFunctionData().Y_();
this.methodProfiler.c("levels");
this.getFunctionData().tick();
this.methodProfiler.exitEnter("levels");
- WorldServer worldserver;
+ // CraftBukkit start
@ -491,12 +491,12 @@
- for (Iterator iterator = this.getWorlds().iterator(); iterator.hasNext();((long[]) this.e.computeIfAbsent(worldserver.worldProvider.getDimensionManager(), (dimensionmanager) -> {
- return new long[100];
- }))[this.ticks % 100] = SystemUtils.c() - i) {
- }))[this.ticks % 100] = SystemUtils.getMonotonicNanos() - i) {
- worldserver = (WorldServer) iterator.next();
+ // CraftBukkit - dropTickTime
+ for (Iterator iterator = this.getWorlds().iterator(); iterator.hasNext();) {
+ WorldServer worldserver = (WorldServer) iterator.next();
i = SystemUtils.c();
i = SystemUtils.getMonotonicNanos();
- if (worldserver.worldProvider.getDimensionManager() == DimensionManager.OVERWORLD || this.getAllowNether()) {
+ if (true || worldserver.worldProvider.getDimensionManager() == DimensionManager.OVERWORLD || this.getAllowNether()) { // CraftBukkit
this.methodProfiler.a(() -> {
@ -504,13 +504,13 @@
});
+ /* Drop global time updates
if (this.ticks % 20 == 0) {
this.methodProfiler.a("timeSync");
this.s.a((Packet) (new PacketPlayOutUpdateTime(worldserver.getTime(), worldserver.getDayTime(), worldserver.getGameRules().getBoolean("doDaylightCycle"))), worldserver.worldProvider.getDimensionManager());
this.methodProfiler.e();
this.methodProfiler.enter("timeSync");
this.playerList.a((Packet) (new PacketPlayOutUpdateTime(worldserver.getTime(), worldserver.getDayTime(), worldserver.getGameRules().getBoolean("doDaylightCycle"))), worldserver.worldProvider.getDimensionManager());
this.methodProfiler.exit();
}
+ // CraftBukkit end */
this.methodProfiler.a("tick");
this.methodProfiler.enter("tick");
@@ -732,10 +931,11 @@
this.k.add(itickable);

View File

@ -12,6 +12,15 @@
}
}
@@ -113,7 +114,7 @@
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
NameReferencingFileConverter.e.warn("Could not lookup user banlist entry for {}", gameprofile.getName(), exception);
if (!(exception instanceof ProfileNotFoundException)) {
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
}
}
};
@@ -141,8 +142,9 @@
if (ipbanlist.c().exists()) {
try {
@ -36,6 +45,15 @@
}
}
@@ -198,7 +201,7 @@
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
NameReferencingFileConverter.e.warn("Could not lookup oplist entry for {}", gameprofile.getName(), exception);
if (!(exception instanceof ProfileNotFoundException)) {
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
}
}
};
@@ -226,8 +229,9 @@
if (whitelist.c().exists()) {
try {
@ -48,6 +66,24 @@
}
}
@@ -242,7 +246,7 @@
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
NameReferencingFileConverter.e.warn("Could not lookup user whitelist entry for {}", gameprofile.getName(), exception);
if (!(exception instanceof ProfileNotFoundException)) {
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
}
}
};
@@ -337,7 +341,7 @@
this.a(file, s, s);
} else {
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
}
}
@@ -345,6 +349,30 @@
File file1 = new File(file2, s + ".dat");
File file3 = new File(file, s1 + ".dat");

View File

@ -27,12 +27,3 @@
this.n = ichatbasecomponent;
}
@@ -319,7 +319,7 @@
}
}
- protected void channelRead0(ChannelHandlerContext channelhandlercontext, Object object) throws Exception {
+ protected void channelRead0(ChannelHandlerContext channelhandlercontext, Packet object) throws Exception { // CraftBukkit - fix decompile error
this.a(channelhandlercontext, (Packet) object);
}

View File

@ -3,7 +3,7 @@
@@ -80,6 +80,11 @@
private void i() {
EntityVillager entityvillager = this.a.b((EntityAgeable) this.b);
EntityVillager entityvillager = this.a.createChild(this.b);
+ // CraftBukkit start - call EntityBreedEvent
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityvillager, this.a, this.b, null, null, 0).isCancelled()) {
+ return;

View File

@ -1,6 +1,6 @@
--- a/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java
+++ b/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java
@@ -44,11 +44,11 @@
@@ -44,18 +44,18 @@
return false;
} else {
Collections.sort(list, this.b);
@ -12,22 +12,17 @@
- this.d = this.e.world.a(this.e.locX, this.e.locY + (double) this.e.getHeadHeight(), this.e.locZ, this.i(), this.i(), new Function() {
+ this.d = (T) this.e.world.a(this.e.locX, this.e.locY + (double) this.e.getHeadHeight(), this.e.locZ, this.i(), this.i(), new Function<EntityHuman, Double>() { // CraftBukkit - fix decompile error
@Nullable
public Double a(@Nullable EntityHuman entityhuman) {
public Double apply(@Nullable EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.getEquipment(EnumItemSlot.HEAD);
@@ -57,10 +57,10 @@
}
@Nullable
- public Object apply(@Nullable Object object) {
+ public Double apply(@Nullable EntityHuman object) { // CraftBukkit - fix decompile error
return this.a((EntityHuman) object);
return (!(PathfinderGoalNearestAttackableTarget.this.e instanceof EntitySkeleton) || itemstack.getItem() != Items.SKELETON_SKULL) && (!(PathfinderGoalNearestAttackableTarget.this.e instanceof EntityZombie) || itemstack.getItem() != Items.ZOMBIE_HEAD) && (!(PathfinderGoalNearestAttackableTarget.this.e instanceof EntityCreeper) || itemstack.getItem() != Items.CREEPER_HEAD) ? 1.0D : 0.5D;
}
- }, this.c);
+ }, (Predicate<EntityHuman>) this.c); // CraftBukkit - fix decompile error
return this.d != null;
}
}
@@ -70,7 +70,7 @@
@@ -65,7 +65,7 @@
}
public void c() {
@ -36,12 +31,3 @@
super.c();
}
@@ -89,7 +89,7 @@
return d0 < d1 ? -1 : (d0 > d1 ? 1 : 0);
}
- public int compare(Object object, Object object1) {
+ public int compare(Entity object, Entity object1) { // CraftBukkit - fix decompile error
return this.a((Entity) object, (Entity) object1);
}
}

View File

@ -1,41 +0,0 @@
--- a/net/minecraft/server/PlayerChunk.java
+++ b/net/minecraft/server/PlayerChunk.java
@@ -7,21 +7,36 @@
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+// CraftBukkit Start
+import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
+// CraftBukkit end
public class PlayerChunk {
private static final Logger a = LogManager.getLogger();
private final PlayerChunkMap playerChunkMap;
- private final List<EntityPlayer> c = Lists.newArrayList();
+ public final List<EntityPlayer> c = Lists.newArrayList(); // CraftBukkit - public
private final ChunkCoordIntPair location;
private final short[] dirtyBlocks = new short[64];
@Nullable
- private Chunk chunk;
+ public Chunk chunk; // CraftBukkit - public
private int dirtyCount;
private int h;
private long i;
private boolean done;
+ // CraftBukkit start - add fields
+ // You know the drill, https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse
+ // All may seem good at first, but there's deeper issues if you play for a bit
+ private boolean loadInProgress = false;
+ private Runnable loadedRunnable = new Runnable() {
+ public void run() {
+ loadInProgress = false;
+ PlayerChunk.this.chunk = PlayerChunk.this.playerChunkMap.getWorld().getChunkProviderServer().getChunkAt(location.x, location.z, true, true);
+ }
+ };
+ // CraftBukkit end
+
public PlayerChunk(PlayerChunkMap playerchunkmap, int i, int j) {
this.playerChunkMap = playerchunkmap;
this.location = new ChunkCoordIntPair(i, j);

View File

@ -19,7 +19,7 @@
public PlayerChunkMap(WorldServer worldserver) {
this.world = worldserver;
@@ -107,16 +112,18 @@
@@ -103,16 +108,18 @@
if (this.l && i % 4L == 0L) {
this.l = false;
@ -42,7 +42,7 @@
}
if (!this.h.isEmpty()) {
@@ -141,7 +148,11 @@
@@ -137,7 +144,11 @@
break;
}
}
@ -54,7 +54,7 @@
}
}
@@ -203,6 +214,16 @@
@@ -199,6 +210,16 @@
return playerchunk;
}
@ -62,7 +62,7 @@
+ public final boolean isChunkInUse(int x, int z) {
+ PlayerChunk pi = getChunk(x, z);
+ if (pi != null) {
+ return (pi.c.size() > 0);
+ return (pi.players.size() > 0);
+ }
+ return false;
+ }
@ -71,7 +71,7 @@
public void flagDirty(BlockPosition blockposition) {
int i = blockposition.getX() >> 4;
int j = blockposition.getZ() >> 4;
@@ -221,12 +242,22 @@
@@ -217,12 +238,22 @@
entityplayer.d = entityplayer.locX;
entityplayer.e = entityplayer.locZ;
@ -95,7 +95,7 @@
this.managedPlayers.add(entityplayer);
this.e();
}
@@ -270,11 +301,14 @@
@@ -266,11 +297,14 @@
int j1 = i - k;
int k1 = j - l;
@ -111,7 +111,7 @@
}
if (!this.a(l1 - j1, i2 - k1, i, j, i1)) {
@@ -290,6 +324,13 @@
@@ -286,6 +320,13 @@
entityplayer.d = entityplayer.locX;
entityplayer.e = entityplayer.locZ;
this.e();
@ -125,7 +125,7 @@
}
}
}
@@ -374,4 +415,47 @@
@@ -370,4 +411,47 @@
}
}

View File

@ -52,8 +52,8 @@
private static final Logger LOGGER = LogManager.getLogger();
@@ -27,7 +71,10 @@
private long f;
private boolean g;
private long lastKeepAlive;
private boolean awaitingKeepAlive;
private long h;
- private int chatThrottle;
+ // CraftBukkit start - multithreaded fields
@ -95,21 +95,21 @@
}
+ // CraftBukkit end
public void Y_() {
public void tick() {
this.syncPosition();
@@ -105,7 +178,7 @@
this.minecraftServer.methodProfiler.a("keepAlive");
long i = SystemUtils.b();
this.minecraftServer.methodProfiler.enter("keepAlive");
long i = SystemUtils.getMonotonicMillis();
- if (i - this.f >= 15000L) {
+ if (i - this.f >= 25000L) { // CraftBukkit
if (this.g) {
- if (i - this.lastKeepAlive >= 15000L) {
+ if (i - this.lastKeepAlive >= 25000L) { // CraftBukkit
if (this.awaitingKeepAlive) {
this.disconnect(new ChatMessage("disconnect.timeout", new Object[0]));
} else {
@@ -117,15 +190,21 @@
}
this.minecraftServer.methodProfiler.e();
this.minecraftServer.methodProfiler.exit();
+ // CraftBukkit start
+ for (int spam; (spam = this.chatThrottle) > 0 && !chatSpamField.compareAndSet(this, spam, spam - 1); ) ;
+ /* Use thread-safe field access instead
@ -123,7 +123,7 @@
--this.j;
}
if (this.player.F() > 0L && this.minecraftServer.getIdleTimeout() > 0 && SystemUtils.b() - this.player.F() > (long) (this.minecraftServer.getIdleTimeout() * 1000 * 60)) {
if (this.player.F() > 0L && this.minecraftServer.getIdleTimeout() > 0 && SystemUtils.getMonotonicMillis() - this.player.F() > (long) (this.minecraftServer.getIdleTimeout() * 1000 * 60)) {
+ this.player.resetIdleTimer(); // CraftBukkit - SPIGOT-854
this.disconnect(new ChatMessage("multiplayer.disconnect.idling", new Object[0]));
}
@ -1600,8 +1600,8 @@
public void a(PacketPlayInKeepAlive packetplayinkeepalive) {
+ PlayerConnectionUtils.ensureMainThread(packetplayinkeepalive, this, this.player.getWorldServer()); // CraftBukkit
if (this.g && packetplayinkeepalive.b() == this.h) {
int i = (int) (SystemUtils.b() - this.f);
if (this.awaitingKeepAlive && packetplayinkeepalive.b() == this.h) {
int i = (int) (SystemUtils.getMonotonicMillis() - this.lastKeepAlive);
@@ -1222,7 +2330,17 @@

View File

@ -481,7 +481,7 @@
+ entityplayer1.forceSetPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
+ // CraftBukkit end
worldserver.getChunkProviderServer().getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4, true, true);
worldserver.getChunkProvider().getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4, true, true);
- while (!worldserver.getCubes(entityplayer1, entityplayer1.getBoundingBox()) && entityplayer1.locY < 256.0D) {
+ while (avoidSuffocation && !worldserver.getCubes(entityplayer1, entityplayer1.getBoundingBox()) && entityplayer1.locY < 256.0D) {
@ -635,7 +635,7 @@
float f = entity.yaw;
+ */
worldserver.methodProfiler.a("moving");
worldserver.methodProfiler.enter("moving");
- if (entity.dimension == DimensionManager.NETHER) {
+ if (worldserver1.dimension == DimensionManager.NETHER) {
d0 = MathHelper.a(d0 / 8.0D, worldserver1.getWorldBorder().b() + 16.0D, worldserver1.getWorldBorder().d() - 16.0D);
@ -679,9 +679,9 @@
+ */
}
worldserver.methodProfiler.e();
worldserver.methodProfiler.exit();
@@ -542,22 +865,119 @@
worldserver.methodProfiler.a("placing");
worldserver.methodProfiler.enter("placing");
d0 = (double) MathHelper.clamp((int) d0, -29999872, 29999872);
d1 = (double) MathHelper.clamp((int) d1, -29999872, 29999872);
+ /*
@ -693,7 +693,7 @@
}
+ */
+
+ worldserver.methodProfiler.e();
+ worldserver.methodProfiler.exit();
+ }
+
+ // entity.spawnIn(worldserver1);
@ -713,7 +713,7 @@
+ float f = entity.yaw;
+ */
+
+ worldserver.methodProfiler.a("moving");
+ worldserver.methodProfiler.enter("moving");
+ entity.setPositionRotation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch());
+ if (entity.isAlive()) {
+ worldserver.entityJoinedWorld(entity, false);
@ -754,9 +754,9 @@
+ }
+ */
+
+ worldserver.methodProfiler.e();
+ worldserver.methodProfiler.exit();
+ if (dimensionmanager != DimensionManager.THE_END) {
+ worldserver.methodProfiler.a("placing");
+ worldserver.methodProfiler.enter("placing");
+ /*
+ d0 = (double) MathHelper.clamp((int) d0, -29999872, 29999872);
+ d1 = (double) MathHelper.clamp((int) d1, -29999872, 29999872);
@ -776,7 +776,7 @@
+ worldserver1.entityJoinedWorld(entity, false);
+ }
worldserver.methodProfiler.e();
worldserver.methodProfiler.exit();
}
entity.spawnIn(worldserver1);

View File

@ -276,14 +276,3 @@
d4 = d1 * d1 + d3 * d3 + d2 * d2;
if (d0 < 0.0D || d4 < d0) {
d0 = d4;
@@ -354,5 +468,10 @@
super(blockposition.getX(), blockposition.getY(), blockposition.getZ());
this.b = i;
}
+
+ @Override
+ public int compareTo(BaseBlockPosition o) {
+ return this.l(o);
+ }
}
}

View File

@ -8,18 +8,18 @@
+ public static synchronized RegionFile b(File file, int i, int j) {
+ File file1 = new File(file, "region");
+ File file2 = new File(file1, "r." + (i >> 5) + "." + (j >> 5) + ".mca");
+ RegionFile regionfile = (RegionFile) RegionFileCache.a.get(file2);
+ RegionFile regionfile = (RegionFile) RegionFileCache.cache.get(file2);
+
+ if (regionfile != null) {
+ return regionfile;
+ } else if (file1.exists() && file2.exists()) {
+ if (RegionFileCache.a.size() >= 256) {
+ if (RegionFileCache.cache.size() >= 256) {
+ a();
+ }
+
+ RegionFile regionfile1 = new RegionFile(file2);
+
+ RegionFileCache.a.put(file2, regionfile1);
+ RegionFileCache.cache.put(file2, regionfile1);
+ return regionfile1;
+ } else {
+ return null;
@ -28,7 +28,7 @@
+ // CraftBukkit end
+
public static synchronized void a() {
Iterator iterator = RegionFileCache.a.values().iterator();
Iterator iterator = RegionFileCache.cache.values().iterator();
@@ -55,16 +78,32 @@
}

View File

@ -24,7 +24,7 @@
- protected void a() {}
+ // protected void a() {} // CraftBukkit
public SecondaryWorldServer b() {
public SecondaryWorldServer i_() {
String s = PersistentVillage.a(this.worldProvider);
@@ -51,7 +55,7 @@
this.villages.a((World) this);

View File

@ -85,17 +85,3 @@
public MinecraftKey getKey() {
return this.key;
}
@@ -302,11 +373,11 @@
packetdataserializer.a(shapedrecipes.result);
}
- public IRecipe a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) {
+ public ShapedRecipes a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) { // CraftBukkit - decompile error
return this.b(minecraftkey, packetdataserializer);
}
- public IRecipe a(MinecraftKey minecraftkey, JsonObject jsonobject) {
+ public ShapedRecipes a(MinecraftKey minecraftkey, JsonObject jsonobject) { // CraftBukkit - decompile error
return this.b(minecraftkey, jsonobject);
}
}

View File

@ -41,17 +41,3 @@
public MinecraftKey getKey() {
return this.key;
}
@@ -127,11 +154,11 @@
packetdataserializer.a(shapelessrecipes.result);
}
- public IRecipe a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) {
+ public ShapelessRecipes a(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) { // CraftBukkit - decompile error
return this.b(minecraftkey, packetdataserializer);
}
- public IRecipe a(MinecraftKey minecraftkey, JsonObject jsonobject) {
+ public ShapelessRecipes a(MinecraftKey minecraftkey, JsonObject jsonobject) { // CraftBukkit - decompile error
return this.b(minecraftkey, jsonobject);
}
}

View File

@ -37,7 +37,7 @@
+ // CraftBukkit end
}
this.f.methodProfiler.a("cleaning");
this.f.methodProfiler.enter("cleaning");
- NextTickListEntry nextticklistentry;
+ NextTickListEntry<T> nextticklistentry; // CraftBukkit - decompile error

View File

@ -3,7 +3,7 @@
@@ -30,6 +30,11 @@
if (nbttagcompound != null && nbttagcompound.hasKeyOfType("Patterns", 9)) {
this.patterns = nbttagcompound.getList("Patterns", 10).c();
this.patterns = nbttagcompound.getList("Patterns", 10).clone();
+ // CraftBukkit start
+ while (this.patterns.size() > 20) {
+ this.patterns.remove(20);

View File

@ -57,7 +57,7 @@
this.world.a((EntityHuman) null, this.position, soundeffect, SoundCategory.BLOCKS, 1.0F, 1.0F);
}
- private void D() {
- private void applyEffects() {
- if (this.i && this.levels > 0 && !this.world.isClientSide && this.primaryEffect != null) {
- double d0 = (double) (this.levels * 10 + 10);
+ // CraftBukkit start - split into components
@ -123,7 +123,7 @@
+ }
+ }
+
+ private void D() {
+ private void applyEffects() {
+ if (this.i && this.levels > 0 && !this.world.isClientSide && this.primaryEffect != null) {
+ byte b0 = getAmplification();
+

View File

@ -51,7 +51,7 @@
+ return maxStack; // CraftBukkit
}
public void Y_() {
public void tick() {
@@ -170,8 +199,20 @@
if (this.f < 0) {
this.f = 0;

View File

@ -51,14 +51,14 @@
@@ -219,7 +253,7 @@
}
public void Y_() {
public void tick() {
- boolean flag = this.isBurning();
+ boolean flag = this.getBlock().get(BlockFurnace.LIT); // CraftBukkit - SPIGOT-844 - Check if furnace block is lit using the block instead of burn time
boolean flag1 = false;
if (this.isBurning()) {
@@ -237,9 +271,20 @@
IRecipe irecipe = this.world.E().b(this, this.world);
IRecipe irecipe = this.world.getCraftingManager().b(this, this.world);
if (!this.isBurning() && this.canBurn(irecipe)) {
- this.burnTime = fuelTime(itemstack);
@ -92,8 +92,8 @@
}
private int s() {
- FurnaceRecipe furnacerecipe = (FurnaceRecipe) this.world.E().b(this, this.world);
+ FurnaceRecipe furnacerecipe = (this.hasWorld()) ? (FurnaceRecipe) this.world.E().b(this, this.world) : null; // CraftBukkit - SPIGOT-4302
- FurnaceRecipe furnacerecipe = (FurnaceRecipe) this.world.getCraftingManager().b(this, this.world);
+ FurnaceRecipe furnacerecipe = (this.hasWorld()) ? (FurnaceRecipe) this.world.getCraftingManager().b(this, this.world) : null; // CraftBukkit - SPIGOT-4302
return furnacerecipe != null ? furnacerecipe.h() : 200;
}

View File

@ -55,7 +55,7 @@
+ return maxStack; // CraftBukkit
}
public void Y_() {
public void tick() {
@@ -165,7 +199,28 @@
for (int i = 0; i < this.getSize(); ++i) {
if (!this.getItem(i).isEmpty()) {

View File

@ -66,7 +66,7 @@
+ // CraftBukkit start
+ @Override
+ public org.bukkit.command.CommandSender getBukkitSender(CommandListenerWrapper wrapper) {
+ return wrapper.f() != null ? wrapper.f().getBukkitSender(wrapper) : new org.bukkit.craftbukkit.command.CraftBlockCommandSender(wrapper, this);
+ return wrapper.getEntity() != null ? wrapper.getEntity().getBukkitSender(wrapper) : new org.bukkit.craftbukkit.command.CraftBlockCommandSender(wrapper, this);
+ }
+ // CraftBukkit end
+

View File

@ -9,17 +9,30 @@
private final GameProfileRepository g;
protected final Gson b;
private final File h;
@@ -330,11 +330,11 @@
@@ -69,7 +69,7 @@
this.h = file;
GsonBuilder gsonbuilder = new GsonBuilder();
- gsonbuilder.registerTypeHierarchyAdapter(UserCache.UserCacheEntry.class, new UserCache.BanEntrySerializer(null));
+ gsonbuilder.registerTypeHierarchyAdapter(UserCache.UserCacheEntry.class, new UserCache.BanEntrySerializer()); // CraftBukkit - decompile error
this.b = gsonbuilder.create();
this.b();
}
@@ -120,7 +120,7 @@
date = calendar.getTime();
}
- public JsonElement serialize(Object object, Type type, JsonSerializationContext jsonserializationcontext) {
+ public JsonElement serialize(UserCacheEntry object, Type type, JsonSerializationContext jsonserializationcontext) { // CraftBukkit - decompile error
return this.a((UserCache.UserCacheEntry) object, type, jsonserializationcontext);
- UserCache.UserCacheEntry usercache_usercacheentry = new UserCache.UserCacheEntry(gameprofile, date, null);
+ UserCache.UserCacheEntry usercache_usercacheentry = new UserCache.UserCacheEntry(gameprofile, date); // CraftBukkit - decompile error
if (this.e.containsKey(uuid)) {
UserCache.UserCacheEntry usercache_usercacheentry1 = (UserCache.UserCacheEntry) this.e.get(uuid);
@@ -314,7 +314,7 @@
return null;
}
- public Object deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException {
+ public UserCacheEntry deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { // CraftBukkit - decompile error
return this.a(jsonelement, type, jsondeserializationcontext);
- return UserCache.this.new UserCacheEntry(new GameProfile(uuid, s1), date, null);
+ return UserCache.this.new UserCacheEntry(new GameProfile(uuid, s1), date); // CraftBukkit - decompile error
} else {
return null;
}

View File

@ -168,7 +168,7 @@
} else {
IBlockData iblockdata2 = this.getType(blockposition);
@@ -168,6 +294,7 @@
this.methodProfiler.e();
this.methodProfiler.exit();
}
+ /*
@ -465,7 +465,7 @@
});
entity.tick();
+ entity.postTick(); // CraftBukkit
this.methodProfiler.e();
this.methodProfiler.exit();
}
}
@@ -1310,11 +1582,18 @@

View File

@ -8,6 +8,15 @@
public WorldBorder() {}
@@ -108,7 +109,7 @@
}
public void transitionSizeBetween(double d0, double d1, long i) {
- this.i = (WorldBorder.a) (d0 != d1 ? new WorldBorder.b(d0, d1, i, null) : new WorldBorder.c(d1));
+ this.i = (WorldBorder.a) (d0 != d1 ? new WorldBorder.b(d0, d1, i) : new WorldBorder.c(d1)); // CraftBukkit - decompile error
Iterator iterator = this.k().iterator();
while (iterator.hasNext()) {
@@ -124,6 +125,7 @@
}

View File

@ -223,21 +223,21 @@
@@ -128,9 +271,12 @@
}
this.methodProfiler.a("spawner");
this.methodProfiler.enter("spawner");
- if (this.getGameRules().getBoolean("doMobSpawning") && this.worldData.getType() != WorldType.DEBUG_ALL_BLOCK_STATES) {
- this.spawnerCreature.a(this, this.allowMonsters, this.allowAnimals, this.worldData.getTime() % 400L == 0L);
- this.getChunkProviderServer().a(this, this.allowMonsters, this.allowAnimals);
- this.getChunkProvider().a(this, this.allowMonsters, this.allowAnimals);
+ // CraftBukkit start - Only call spawner if we have players online and the world allows for mobs or animals
+ long time = this.worldData.getTime();
+ if (this.getGameRules().getBoolean("doMobSpawning") && this.worldData.getType() != WorldType.DEBUG_ALL_BLOCK_STATES && (this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.players.size() > 0)) {
+ this.spawnerCreature.a(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L);
+ this.getChunkProviderServer().a(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L));
+ this.getChunkProvider().a(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L));
+ // CraftBukkit end
}
this.methodProfiler.c("chunkSource");
this.methodProfiler.exitEnter("chunkSource");
@@ -160,6 +306,8 @@
this.methodProfiler.e();
this.methodProfiler.exit();
this.an();
this.P = false;
+
@ -413,7 +413,7 @@
WorldServer.a.warn("Unable to find spawn biome");
}
@@ -647,6 +848,7 @@
ChunkProviderServer chunkproviderserver = this.getChunkProviderServer();
ChunkProviderServer chunkproviderserver = this.getChunkProvider();
if (chunkproviderserver.d()) {
+ org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit

View File

@ -39,7 +39,7 @@ public class CraftLootTable implements org.bukkit.loot.LootTable {
@Override
public Collection<ItemStack> populateLoot(Random random, LootContext context) {
LootTableInfo nmsContext = convertContext(context);
List<net.minecraft.server.ItemStack> nmsItems = handle.a(random, nmsContext); // PAIL rename populateLoot
List<net.minecraft.server.ItemStack> nmsItems = handle.populateLoot(random, nmsContext);
Collection<ItemStack> bukkit = new ArrayList<>(nmsItems.size());
for (net.minecraft.server.ItemStack item : nmsItems) {
@ -59,7 +59,7 @@ public class CraftLootTable implements org.bukkit.loot.LootTable {
IInventory handle = craftInventory.getInventory();
// TODO: When events are added, call event here w/ custom reason?
getHandle().a(handle, random, nmsContext); // PAIL rename fillInventory
getHandle().fillInventory(handle, random, nmsContext);
}
@Override

View File

@ -962,7 +962,7 @@ public final class CraftServer implements Server {
}
BlockPosition chunkcoordinates = internal.getSpawn();
internal.getChunkProviderServer().getChunkAt(chunkcoordinates.getX() + j >> 4, chunkcoordinates.getZ() + k >> 4, true, true);
internal.getChunkProvider().getChunkAt(chunkcoordinates.getX() + j >> 4, chunkcoordinates.getZ() + k >> 4, true, true);
}
}
}
@ -978,7 +978,7 @@ public final class CraftServer implements Server {
long k = longiterator.nextLong();
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(k);
internal.getChunkProviderServer().getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, true, true);
internal.getChunkProvider().getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, true, true);
}
}

View File

@ -140,7 +140,7 @@ public class CraftWorld implements World {
}
public Chunk getChunkAt(int x, int z) {
return this.world.getChunkProviderServer().getChunkAt(x, z, true, true).bukkitChunk;
return this.world.getChunkProvider().getChunkAt(x, z, true, true).bukkitChunk;
}
public Chunk getChunkAt(Block block) {
@ -148,16 +148,16 @@ public class CraftWorld implements World {
}
public boolean isChunkLoaded(int x, int z) {
return world.getChunkProviderServer().isLoaded(x, z);
return world.getChunkProvider().isLoaded(x, z);
}
@Override
public boolean isChunkGenerated(int x, int z) {
return isChunkLoaded(x, z) || ((ChunkRegionLoader) world.getChunkProviderServer().chunkLoader).chunkExists(x, z);
return isChunkLoaded(x, z) || ((ChunkRegionLoader) world.getChunkProvider().chunkLoader).chunkExists(x, z);
}
public Chunk[] getLoadedChunks() {
Object[] chunks = world.getChunkProviderServer().chunks.values().toArray();
Object[] chunks = world.getChunkProvider().chunks.values().toArray();
org.bukkit.Chunk[] craftChunks = new CraftChunk[chunks.length];
for (int i = 0; i < chunks.length; i++) {
@ -193,9 +193,9 @@ public class CraftWorld implements World {
return false;
}
net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkAt(x, z, false, false);
net.minecraft.server.Chunk chunk = world.getChunkProvider().getChunkAt(x, z, false, false);
if (chunk != null) {
world.getChunkProviderServer().unload(chunk);
world.getChunkProvider().unload(chunk);
}
return true;
@ -210,13 +210,13 @@ public class CraftWorld implements World {
}
private boolean unloadChunk0(int x, int z, boolean save) {
net.minecraft.server.Chunk chunk = world.getChunkProviderServer().getChunkAt(x, z, false, false);
net.minecraft.server.Chunk chunk = world.getChunkProvider().getChunkAt(x, z, false, false);
if (chunk == null) {
return true;
}
// If chunk had previously been queued to save, must do save to avoid loss of that data
return world.getChunkProviderServer().unloadChunk(chunk, chunk.mustSave || save);
return world.getChunkProvider().unloadChunk(chunk, chunk.mustSave || save);
}
public boolean regenerateChunk(int x, int z) {
@ -225,9 +225,9 @@ public class CraftWorld implements World {
}
final long chunkKey = ChunkCoordIntPair.a(x, z);
world.getChunkProviderServer().unloadQueue.remove(chunkKey);
world.getChunkProvider().unloadQueue.remove(chunkKey);
net.minecraft.server.Chunk chunk = world.getChunkProviderServer().generateChunk(x, z);
net.minecraft.server.Chunk chunk = world.getChunkProvider().generateChunk(x, z);
PlayerChunk playerChunk = world.getPlayerChunkMap().getChunk(x, z);
if (playerChunk != null) {
playerChunk.chunk = chunk;
@ -266,7 +266,7 @@ public class CraftWorld implements World {
public boolean loadChunk(int x, int z, boolean generate) {
chunkLoadCount++;
return world.getChunkProviderServer().getChunkAt(x, z, true, generate) != null;
return world.getChunkProvider().getChunkAt(x, z, true, generate) != null;
}
public boolean isChunkLoaded(Chunk chunk) {
@ -1723,7 +1723,7 @@ public class CraftWorld implements World {
@Override
public Location locateNearestStructure(Location origin, StructureType structureType, int radius, boolean findUnexplored) {
BlockPosition originPos = new BlockPosition(origin.getX(), origin.getY(), origin.getZ());
BlockPosition nearest = getHandle().getChunkProviderServer().getChunkGenerator().findNearestMapFeature(getHandle(), structureType.getName(), originPos, radius, findUnexplored);
BlockPosition nearest = getHandle().getChunkProvider().getChunkGenerator().findNearestMapFeature(getHandle(), structureType.getName(), originPos, radius, findUnexplored);
return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
}
@ -1738,7 +1738,7 @@ public class CraftWorld implements World {
return;
}
ChunkProviderServer cps = world.getChunkProviderServer();
ChunkProviderServer cps = world.getChunkProvider();
for (net.minecraft.server.Chunk chunk : cps.chunks.values()) {
// If in use, skip it
if (isChunkInUse(chunk.locX, chunk.locZ)) {

View File

@ -28,11 +28,11 @@ public class CraftEndermite extends CraftMonster implements Endermite {
@Override
public boolean isPlayerSpawned() {
return getHandle().l(); // PAIL
return getHandle().isPlayerSpawned();
}
@Override
public void setPlayerSpawned(boolean playerSpawned) {
getHandle().a(playerSpawned); // PAIL
getHandle().setPlayerSpawned(playerSpawned);
}
}

View File

@ -174,7 +174,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator<GeneratorSettin
}
@Override
public int e() {
public int getGenerationDepth() {
return world.getHeight();
}
}

View File

@ -108,7 +108,7 @@ public class NormalChunkGenerator<C extends GeneratorSettings> extends InternalC
}
@Override
public int e() {
return generator.e(); // PAIL: Gen depth
public int getGenerationDepth() {
return generator.getGenerationDepth();
}
}

View File

@ -421,7 +421,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable {
continue;
}
EquipmentSlot slot = CraftEquipmentSlot.getSlot(EnumItemSlot.a(slotName.toLowerCase(Locale.ROOT))); // PAIL rename fromName
EquipmentSlot slot = CraftEquipmentSlot.getSlot(EnumItemSlot.fromName(slotName.toLowerCase(Locale.ROOT)));
if (slot == null) {
modifiers.put(attribute, attribMod);
continue;

View File

@ -44,17 +44,17 @@ public class DummyGeneratorAccess implements GeneratorAccess {
}
@Override
public TickList<Block> J() {
public TickList<Block> getBlockTickList() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public TickList<FluidType> I() {
public TickList<FluidType> getFluidTickList() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public IChunkAccess b(int i, int i1) {
public IChunkAccess getChunkAt(int i, int i1) {
throw new UnsupportedOperationException("Not supported yet.");
}

View File

@ -20,31 +20,31 @@ public class EnderDragonPhaseTest {
@Test
public void testBukkitToMinecraft() {
Assert.assertEquals("CIRCLING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.CIRCLING), DragonControllerPhase.a); // PAIL: Rename HOLDING_PATTERN
Assert.assertEquals("STRAFING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.STRAFING), DragonControllerPhase.b); // PAIL: Rename STRAFE_PLAYER
Assert.assertEquals("FLY_TO_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.FLY_TO_PORTAL), DragonControllerPhase.c); // PAIL: Rename LANDING_APPROACH
Assert.assertEquals("LAND_ON_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.LAND_ON_PORTAL), DragonControllerPhase.d); // PAIL: Rename LANDING
Assert.assertEquals("LEAVE_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.LEAVE_PORTAL), DragonControllerPhase.e); // PAIL: Rename TAKEOFF
Assert.assertEquals("BREATH_ATTACK", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.BREATH_ATTACK), DragonControllerPhase.f); // PAIL: Rename SITTING_FLAMING
Assert.assertEquals("SEARCH_FOR_BREATH_ATTACK_TARGET", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.SEARCH_FOR_BREATH_ATTACK_TARGET), DragonControllerPhase.g); // PAIL: Rename SITTING_SCANNING
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.ROAR_BEFORE_ATTACK), DragonControllerPhase.h); // PAIL: Rename SITTING_ATTACKING
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.CHARGE_PLAYER), DragonControllerPhase.i); // PAIL: Rename CHARGING_PLAYER
Assert.assertEquals("DYING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.DYING), DragonControllerPhase.j); // PAIL: Rename DYING
Assert.assertEquals("HOVER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.HOVER), DragonControllerPhase.k); // PAIL: Rename HOVER
Assert.assertEquals("CIRCLING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.CIRCLING), DragonControllerPhase.HOLDING_PATTERN);
Assert.assertEquals("STRAFING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.STRAFING), DragonControllerPhase.STRAFE_PLAYER);
Assert.assertEquals("FLY_TO_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.FLY_TO_PORTAL), DragonControllerPhase.LANDING_APPROACH);
Assert.assertEquals("LAND_ON_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.LAND_ON_PORTAL), DragonControllerPhase.LANDING);
Assert.assertEquals("LEAVE_PORTAL", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.LEAVE_PORTAL), DragonControllerPhase.TAKEOFF);
Assert.assertEquals("BREATH_ATTACK", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.BREATH_ATTACK), DragonControllerPhase.SITTING_FLAMING);
Assert.assertEquals("SEARCH_FOR_BREATH_ATTACK_TARGET", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.SEARCH_FOR_BREATH_ATTACK_TARGET), DragonControllerPhase.SITTING_SCANNING);
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.ROAR_BEFORE_ATTACK), DragonControllerPhase.SITTING_ATTACKING);
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.CHARGE_PLAYER), DragonControllerPhase.CHARGING_PLAYER);
Assert.assertEquals("DYING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.DYING), DragonControllerPhase.DYING);
Assert.assertEquals("HOVER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.HOVER), DragonControllerPhase.HOVER);
}
@Test
public void testMinecraftToBukkit() {
Assert.assertEquals("CIRCLING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.a), EnderDragon.Phase.CIRCLING);
Assert.assertEquals("STRAFING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.b), EnderDragon.Phase.STRAFING);
Assert.assertEquals("FLY_TO_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.c), EnderDragon.Phase.FLY_TO_PORTAL);
Assert.assertEquals("LAND_ON_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.d), EnderDragon.Phase.LAND_ON_PORTAL);
Assert.assertEquals("LEAVE_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.e), EnderDragon.Phase.LEAVE_PORTAL);
Assert.assertEquals("BREATH_ATTACK", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.f), EnderDragon.Phase.BREATH_ATTACK);
Assert.assertEquals("SEARCH_FOR_BREATH_ATTACK_TARGET", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.g), EnderDragon.Phase.SEARCH_FOR_BREATH_ATTACK_TARGET);
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.h), EnderDragon.Phase.ROAR_BEFORE_ATTACK);
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.i), EnderDragon.Phase.CHARGE_PLAYER);
Assert.assertEquals("DYING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.j), EnderDragon.Phase.DYING);
Assert.assertEquals("HOVER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.k), EnderDragon.Phase.HOVER);
Assert.assertEquals("CIRCLING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.HOLDING_PATTERN), EnderDragon.Phase.CIRCLING);
Assert.assertEquals("STRAFING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.STRAFE_PLAYER), EnderDragon.Phase.STRAFING);
Assert.assertEquals("FLY_TO_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.LANDING_APPROACH), EnderDragon.Phase.FLY_TO_PORTAL);
Assert.assertEquals("LAND_ON_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.LANDING), EnderDragon.Phase.LAND_ON_PORTAL);
Assert.assertEquals("LEAVE_PORTAL", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.TAKEOFF), EnderDragon.Phase.LEAVE_PORTAL);
Assert.assertEquals("BREATH_ATTACK", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.SITTING_FLAMING), EnderDragon.Phase.BREATH_ATTACK);
Assert.assertEquals("SEARCH_FOR_BREATH_ATTACK_TARGET", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.SITTING_SCANNING), EnderDragon.Phase.SEARCH_FOR_BREATH_ATTACK_TARGET);
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.SITTING_ATTACKING), EnderDragon.Phase.ROAR_BEFORE_ATTACK);
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.CHARGING_PLAYER), EnderDragon.Phase.CHARGE_PLAYER);
Assert.assertEquals("DYING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.DYING), EnderDragon.Phase.DYING);
Assert.assertEquals("HOVER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.HOVER), EnderDragon.Phase.HOVER);
}
}