diff --git a/pom.xml b/pom.xml index a92acad6b8..19a9175f92 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.bukkit craftbukkit jar - 1.4.5-R1.1-SNAPSHOT + 1.4.6-R0.1-SNAPSHOT CraftBukkit http://www.bukkit.org @@ -12,8 +12,8 @@ UTF-8 unknown 4.11 - 1.4.5 - 1_4_5 + 1.4.6 + 1_4_6 @@ -288,7 +288,7 @@ 2.11 ${basedir}/target/test-server - + org/bukkit/craftbukkit/updater/BukkitDLUpdaterServiceTest.java org/bukkit/craftbukkit/inventory/ItemStackBookTest.java org/bukkit/craftbukkit/inventory/ItemStackLeatherTest.java diff --git a/src/main/java/net/minecraft/server/BlockDispenser.java b/src/main/java/net/minecraft/server/BlockDispenser.java index 6848309444..5cb21c8354 100644 --- a/src/main/java/net/minecraft/server/BlockDispenser.java +++ b/src/main/java/net/minecraft/server/BlockDispenser.java @@ -5,8 +5,8 @@ import java.util.Random; public class BlockDispenser extends BlockContainer { public static final IRegistry a = new RegistryDefault(new DispenseBehaviorItem()); - private Random b = new Random(); public static boolean eventFired = false; // CraftBukkit + private Random b = new Random(); protected BlockDispenser(int i) { super(i, Material.STONE); @@ -160,7 +160,7 @@ public class BlockDispenser extends BlockContainer { EntityItem entityitem = new EntityItem(world, (double) ((float) i + f), (double) ((float) j + f1), (double) ((float) k + f2), new ItemStack(itemstack.id, k1, itemstack.getData())); if (itemstack.hasTag()) { - entityitem.itemStack.setTag((NBTTagCompound) itemstack.getTag().clone()); + entityitem.getItemStack().setTag((NBTTagCompound) itemstack.getTag().clone()); } float f3 = 0.05F; @@ -179,9 +179,9 @@ public class BlockDispenser extends BlockContainer { public static IPosition a(ISourceBlock isourceblock) { EnumFacing enumfacing = EnumFacing.a(isourceblock.h()); - double d0 = isourceblock.getX() + 0.6D * (double) enumfacing.c(); + double d0 = isourceblock.getX() + 0.7D * (double) enumfacing.c(); double d1 = isourceblock.getY(); - double d2 = isourceblock.getZ() + 0.6D * (double) enumfacing.e(); + double d2 = isourceblock.getZ() + 0.7D * (double) enumfacing.e(); return new Position(d0, d1, d2); } diff --git a/src/main/java/net/minecraft/server/BlockDragonEgg.java b/src/main/java/net/minecraft/server/BlockDragonEgg.java index 5deafecd9c..2c46125354 100644 --- a/src/main/java/net/minecraft/server/BlockDragonEgg.java +++ b/src/main/java/net/minecraft/server/BlockDragonEgg.java @@ -8,6 +8,7 @@ public class BlockDragonEgg extends Block { public BlockDragonEgg(int i, int j) { super(i, j, Material.DRAGON_EGG); + this.a(0.0625F, 0.0F, 0.0625F, 0.9375F, 1.0F, 0.9375F); } public void onPlace(World world, int i, int j, int k) { diff --git a/src/main/java/net/minecraft/server/BlockLeaves.java b/src/main/java/net/minecraft/server/BlockLeaves.java index cea559f34c..e06e0675f6 100644 --- a/src/main/java/net/minecraft/server/BlockLeaves.java +++ b/src/main/java/net/minecraft/server/BlockLeaves.java @@ -163,7 +163,7 @@ public class BlockLeaves extends BlockTransparant { } public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) { - if (!world.isStatic && entityhuman.bT() != null && entityhuman.bT().id == Item.SHEARS.id) { + if (!world.isStatic && entityhuman.bS() != null && entityhuman.bS().id == Item.SHEARS.id) { entityhuman.a(StatisticList.C[this.id], 1); this.b(world, i, j, k, new ItemStack(Block.LEAVES.id, 1, l & 3)); } else { @@ -182,4 +182,8 @@ public class BlockLeaves extends BlockTransparant { public int a(int i, int j) { return (j & 3) == 1 ? this.textureId + 80 : ((j & 3) == 3 ? this.textureId + 144 : this.textureId); } + + protected ItemStack f_(int i) { + return new ItemStack(this.id, 1, i & 3); + } } diff --git a/src/main/java/net/minecraft/server/BlockLever.java b/src/main/java/net/minecraft/server/BlockLever.java index 5b290f6080..11489b14e5 100644 --- a/src/main/java/net/minecraft/server/BlockLever.java +++ b/src/main/java/net/minecraft/server/BlockLever.java @@ -65,7 +65,7 @@ public class BlockLever extends Block { return k1 + j1; } - public static int d(int i) { + public static int e(int i) { switch (i) { case 0: return 0; diff --git a/src/main/java/net/minecraft/server/BlockSkull.java b/src/main/java/net/minecraft/server/BlockSkull.java index d5fd3ad3d3..de166a1b9b 100644 --- a/src/main/java/net/minecraft/server/BlockSkull.java +++ b/src/main/java/net/minecraft/server/BlockSkull.java @@ -155,7 +155,7 @@ public class BlockSkull extends BlockContainer { if (!world.isStatic) { entitywither = new EntityWither(world); entitywither.setPositionRotation((double) i + 0.5D, (double) j - 1.45D, (double) (k + i1) + 1.5D, 90.0F, 0.0F); - entitywither.aw = 90.0F; + entitywither.ax = 90.0F; entitywither.m(); if (world.addEntity(entitywither, SpawnReason.BUILD_WITHER)) { diff --git a/src/main/java/net/minecraft/server/BlockSoil.java b/src/main/java/net/minecraft/server/BlockSoil.java index dfff34c324..21641570bd 100644 --- a/src/main/java/net/minecraft/server/BlockSoil.java +++ b/src/main/java/net/minecraft/server/BlockSoil.java @@ -56,6 +56,10 @@ public class BlockSoil extends Block { public void a(World world, int i, int j, int k, Entity entity, float f) { if (!world.isStatic && world.random.nextFloat() < f - 0.5F) { + if (!(entity instanceof EntityHuman) && !world.getGameRules().getBoolean("mobGriefing")) { + return; + } + // CraftBukkit start - interact soil org.bukkit.event.Cancellable cancellable; if (entity instanceof EntityHuman) { diff --git a/src/main/java/net/minecraft/server/BlockTNT.java b/src/main/java/net/minecraft/server/BlockTNT.java index 2090674432..c9c0ec0f8d 100644 --- a/src/main/java/net/minecraft/server/BlockTNT.java +++ b/src/main/java/net/minecraft/server/BlockTNT.java @@ -53,7 +53,7 @@ public class BlockTNT extends Block { } public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman, int l, float f, float f1, float f2) { - if (entityhuman.bT() != null && entityhuman.bT().id == Item.FLINT_AND_STEEL.id) { + if (entityhuman.bS() != null && entityhuman.bS().id == Item.FLINT_AND_STEEL.id) { this.postBreak(world, i, j, k, 1); world.setTypeId(i, j, k, 0); return true; diff --git a/src/main/java/net/minecraft/server/BlockTripwire.java b/src/main/java/net/minecraft/server/BlockTripwire.java index 191526a5f7..dc31e0c25b 100644 --- a/src/main/java/net/minecraft/server/BlockTripwire.java +++ b/src/main/java/net/minecraft/server/BlockTripwire.java @@ -76,7 +76,7 @@ public class BlockTripwire extends Block { public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) { if (!world.isStatic) { - if (entityhuman.bT() != null && entityhuman.bT().id == Item.SHEARS.id) { + if (entityhuman.bS() != null && entityhuman.bS().id == Item.SHEARS.id) { world.setData(i, j, k, l | 8); } } diff --git a/src/main/java/net/minecraft/server/BlockVine.java b/src/main/java/net/minecraft/server/BlockVine.java index 7217e32f0d..03064defa8 100644 --- a/src/main/java/net/minecraft/server/BlockVine.java +++ b/src/main/java/net/minecraft/server/BlockVine.java @@ -299,7 +299,7 @@ public class BlockVine extends Block { } public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) { - if (!world.isStatic && entityhuman.bT() != null && entityhuman.bT().id == Item.SHEARS.id) { + if (!world.isStatic && entityhuman.bS() != null && entityhuman.bS().id == Item.SHEARS.id) { entityhuman.a(StatisticList.C[this.id], 1); this.b(world, i, j, k, new ItemStack(Block.VINE, 1, 0)); } else { diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index 8732e7a824..9b6d134189 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -88,7 +88,7 @@ public class Chunk { int k1 = j1 >> 4; if (this.sections[k1] == null) { - this.sections[k1] = new ChunkSection(k1 << 4); + this.sections[k1] = new ChunkSection(k1 << 4, !world.worldProvider.f); } this.sections[k1].a(l, j1 & 15, i1, b0); @@ -387,7 +387,7 @@ public class Chunk { return false; } - chunksection = this.sections[j >> 4] = new ChunkSection(j >> 4 << 4); + chunksection = this.sections[j >> 4] = new ChunkSection(j >> 4 << 4, !world.worldProvider.f); flag = j >= k1; } @@ -498,14 +498,14 @@ public class Chunk { public int getBrightness(EnumSkyBlock enumskyblock, int i, int j, int k) { ChunkSection chunksection = this.sections[j >> 4]; - return chunksection == null ? (this.d(i, j, k) ? enumskyblock.c : 0) : (enumskyblock == EnumSkyBlock.SKY ? chunksection.c(i, j & 15, k) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.d(i, j & 15, k) : enumskyblock.c)); + return chunksection == null ? (this.d(i, j, k) ? enumskyblock.c : 0) : (enumskyblock == EnumSkyBlock.SKY ? (this.world.worldProvider.f ? 0 : chunksection.c(i, j & 15, k)) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.d(i, j & 15, k) : enumskyblock.c)); } public void a(EnumSkyBlock enumskyblock, int i, int j, int k, int l) { ChunkSection chunksection = this.sections[j >> 4]; if (chunksection == null) { - chunksection = this.sections[j >> 4] = new ChunkSection(j >> 4 << 4); + chunksection = this.sections[j >> 4] = new ChunkSection(j >> 4 << 4, !world.worldProvider.f); this.initLighting(); } diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java index 7926c1dce6..88c33d06e1 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java @@ -194,6 +194,7 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { nbttagcompound.setBoolean("TerrainPopulated", chunk.done); ChunkSection[] achunksection = chunk.i(); NBTTagList nbttaglist = new NBTTagList("Sections"); + boolean flag = !world.worldProvider.f; ChunkSection[] achunksection1 = achunksection; int i = achunksection.length; @@ -211,8 +212,13 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { } nbttagcompound1.setByteArray("Data", chunksection.j().a); - nbttagcompound1.setByteArray("SkyLight", chunksection.l().a); nbttagcompound1.setByteArray("BlockLight", chunksection.k().a); + if (flag) { + nbttagcompound1.setByteArray("SkyLight", chunksection.l().a); + } else { + nbttagcompound1.setByteArray("SkyLight", new byte[chunksection.k().a.length]); + } + nbttaglist.add(nbttagcompound1); } } @@ -285,11 +291,12 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { NBTTagList nbttaglist = nbttagcompound.getList("Sections"); byte b0 = 16; ChunkSection[] achunksection = new ChunkSection[b0]; + boolean flag = !world.worldProvider.f; for (int k = 0; k < nbttaglist.size(); ++k) { NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.get(k); byte b1 = nbttagcompound1.getByte("Y"); - ChunkSection chunksection = new ChunkSection(b1 << 4); + ChunkSection chunksection = new ChunkSection(b1 << 4, flag); chunksection.a(nbttagcompound1.getByteArray("Blocks")); if (nbttagcompound1.hasKey("Add")) { @@ -297,8 +304,11 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { } chunksection.b(new NibbleArray(nbttagcompound1.getByteArray("Data"), 4)); - chunksection.d(new NibbleArray(nbttagcompound1.getByteArray("SkyLight"), 4)); chunksection.c(new NibbleArray(nbttagcompound1.getByteArray("BlockLight"), 4)); + if (flag) { + chunksection.d(new NibbleArray(nbttagcompound1.getByteArray("SkyLight"), 4)); + } + chunksection.recalcBlockCounts(); achunksection[b1] = chunksection; } diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java index 31262a3535..90e0636dc0 100644 --- a/src/main/java/net/minecraft/server/ChunkSection.java +++ b/src/main/java/net/minecraft/server/ChunkSection.java @@ -11,16 +11,18 @@ public class ChunkSection { private NibbleArray blockLight; private NibbleArray skyLight; - public ChunkSection(int i) { + public ChunkSection(int i, boolean flag) { this.yPos = i; this.blockIds = new byte[4096]; this.blockData = new NibbleArray(this.blockIds.length, 4); - this.skyLight = new NibbleArray(this.blockIds.length, 4); this.blockLight = new NibbleArray(this.blockIds.length, 4); + if (flag) { + this.skyLight = new NibbleArray(this.blockIds.length, 4); + } } // CraftBukkit start - public ChunkSection(int y, byte[] blkIds, byte[] extBlkIds) { + public ChunkSection(int y, boolean flag, byte[] blkIds, byte[] extBlkIds) { this.yPos = y; this.blockIds = blkIds; if (extBlkIds != null) { @@ -28,7 +30,9 @@ public class ChunkSection { } this.blockData = new NibbleArray(this.blockIds.length, 4); this.blockLight = new NibbleArray(this.blockIds.length, 4); - this.skyLight = new NibbleArray(this.blockIds.length, 4); + if (flag) { + this.skyLight = new NibbleArray(this.blockIds.length, 4); + } this.recalcBlockCounts(); } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/Container.java b/src/main/java/net/minecraft/server/Container.java index 8bc961aa32..9ecefea0dc 100644 --- a/src/main/java/net/minecraft/server/Container.java +++ b/src/main/java/net/minecraft/server/Container.java @@ -186,7 +186,7 @@ public abstract class Container { slot.a(entityhuman, playerinventory.getCarried()); } else if (slot.isAllowed(itemstack3)) { - if (itemstack1.id == itemstack3.id && (!itemstack1.usesData() || itemstack1.getData() == itemstack3.getData()) && ItemStack.equals(itemstack1, itemstack3)) { + if (itemstack1.id == itemstack3.id && itemstack1.getData() == itemstack3.getData() && ItemStack.equals(itemstack1, itemstack3)) { l = j == 0 ? itemstack3.count : 1; if (l > slot.a() - itemstack1.count) { l = slot.a() - itemstack1.count; @@ -241,10 +241,12 @@ public abstract class Container { if ((slot.inventory != playerinventory || !slot.isAllowed(itemstack1)) && itemstack1 != null) { if (l > -1) { playerinventory.pickup(itemstack1); + slot.a(itemstack2.count); slot.set((ItemStack) null); slot.a(entityhuman, itemstack2); } } else { + slot.a(itemstack2.count); slot.set(itemstack1); slot.a(entityhuman, itemstack2); } diff --git a/src/main/java/net/minecraft/server/ContainerAnvil.java b/src/main/java/net/minecraft/server/ContainerAnvil.java index eabc7b1412..febfa1df61 100644 --- a/src/main/java/net/minecraft/server/ContainerAnvil.java +++ b/src/main/java/net/minecraft/server/ContainerAnvil.java @@ -72,6 +72,7 @@ public class ContainerAnvil extends Container { ItemStack itemstack1 = itemstack.cloneItemStack(); ItemStack itemstack2 = this.g.getItem(1); Map map = EnchantmentManager.a(itemstack1); + boolean flag = false; int k = b0 + itemstack.getRepairCost() + (itemstack2 == null ? 0 : itemstack2.getRepairCost()); this.l = 0; @@ -79,10 +80,12 @@ public class ContainerAnvil extends Container { int i1; int j1; int k1; - Enchantment enchantment; + int l1; Iterator iterator; + Enchantment enchantment; if (itemstack2 != null) { + flag = itemstack2.id == Item.ENCHANTED_BOOK.id && Item.ENCHANTED_BOOK.g(itemstack2).size() > 0; if (itemstack1.f() && Item.byId[itemstack1.id].a(itemstack, itemstack2)) { l = Math.min(itemstack1.i(), itemstack1.k() / 4); if (l <= 0) { @@ -100,19 +103,19 @@ public class ContainerAnvil extends Container { this.l = i1; } else { - if (itemstack1.id != itemstack2.id || !itemstack1.f()) { + if (!flag && (itemstack1.id != itemstack2.id || !itemstack1.f())) { this.f.setItem(0, (ItemStack) null); this.a = 0; return; } - if (itemstack1.f()) { + if (itemstack1.f() && !flag) { l = itemstack.k() - itemstack.i(); i1 = itemstack2.k() - itemstack2.i(); j1 = i1 + itemstack1.k() * 12 / 100; - int l1 = l + j1; + int i2 = l + j1; - k1 = itemstack1.k() - l1; + k1 = itemstack1.k() - i2; if (k1 < 0) { k1 = 0; } @@ -131,45 +134,50 @@ public class ContainerAnvil extends Container { j1 = ((Integer) iterator.next()).intValue(); enchantment = Enchantment.byId[j1]; k1 = map.containsKey(Integer.valueOf(j1)) ? ((Integer) map.get(Integer.valueOf(j1))).intValue() : 0; - int i2 = ((Integer) map1.get(Integer.valueOf(j1))).intValue(); + l1 = ((Integer) map1.get(Integer.valueOf(j1))).intValue(); int j2; - if (k1 == i2) { - ++i2; - j2 = i2; + if (k1 == l1) { + ++l1; + j2 = l1; } else { - j2 = Math.max(i2, k1); + j2 = Math.max(l1, k1); + } + + l1 = j2; + int k2 = l1 - k1; + boolean flag1 = enchantment.canEnchant(itemstack); + + if (this.n.abilities.canInstantlyBuild) { + flag1 = true; } - i2 = j2; - int k2 = i2 - k1; - boolean flag = true; Iterator iterator1 = map.keySet().iterator(); while (iterator1.hasNext()) { int l2 = ((Integer) iterator1.next()).intValue(); if (l2 != j1 && !enchantment.a(Enchantment.byId[l2])) { - flag = false; + flag1 = false; i += k2; } } - if (flag) { - if (i2 > enchantment.getMaxLevel()) { - i2 = enchantment.getMaxLevel(); + if (flag1) { + if (l1 > enchantment.getMaxLevel()) { + l1 = enchantment.getMaxLevel(); } - map.put(Integer.valueOf(j1), Integer.valueOf(i2)); - byte b1 = 0; + map.put(Integer.valueOf(j1), Integer.valueOf(l1)); + int i3 = 0; switch (enchantment.getRandomWeight()) { case 1: - b1 = 8; + i3 = 8; break; case 2: - b1 = 4; + i3 = 4; case 3: case 4: @@ -181,14 +189,14 @@ public class ContainerAnvil extends Container { break; case 5: - b1 = 2; + i3 = 2; break; case 10: - b1 = 1; + i3 = 1; } - i += b1 * k2; + i += i3 * k2; } } } @@ -206,21 +214,19 @@ public class ContainerAnvil extends Container { l = 0; - byte b2; - - for (iterator = map.keySet().iterator(); iterator.hasNext(); k += l + k1 * b2) { + for (iterator = map.keySet().iterator(); iterator.hasNext(); k += l + k1 * l1) { j1 = ((Integer) iterator.next()).intValue(); enchantment = Enchantment.byId[j1]; k1 = ((Integer) map.get(Integer.valueOf(j1))).intValue(); - b2 = 0; + l1 = 0; ++l; switch (enchantment.getRandomWeight()) { case 1: - b2 = 8; + l1 = 8; break; case 2: - b2 = 4; + l1 = 4; case 3: case 4: @@ -232,12 +238,20 @@ public class ContainerAnvil extends Container { break; case 5: - b2 = 2; + l1 = 2; break; case 10: - b2 = 1; + l1 = 1; } + + if (flag) { + l1 = Math.max(1, l1 / 2); + } + } + + if (flag) { + k = Math.max(1, k / 2); } this.a = k + i; diff --git a/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/src/main/java/net/minecraft/server/ContainerEnchantTable.java index 9f66060705..c0d99318d7 100644 --- a/src/main/java/net/minecraft/server/ContainerEnchantTable.java +++ b/src/main/java/net/minecraft/server/ContainerEnchantTable.java @@ -1,6 +1,5 @@ package net.minecraft.server; -import java.util.Iterator; import java.util.List; import java.util.Random; @@ -152,6 +151,7 @@ public class ContainerEnchantTable extends Container { if (this.costs[i] > 0 && itemstack != null && (entityhuman.expLevel >= this.costs[i] || entityhuman.abilities.canInstantlyBuild)) { if (!this.world.isStatic) { List list = EnchantmentManager.b(this.l, itemstack, this.costs[i]); + boolean flag = itemstack.id == Item.BOOK.id; if (list != null) { // CraftBukkit start @@ -170,6 +170,7 @@ public class ContainerEnchantTable extends Container { return false; } + // TODO: Apply Diffs entityhuman.levelDown(-level); for (Map.Entry entry : event.getEnchantsToAdd().entrySet()) { try { diff --git a/src/main/java/net/minecraft/server/ContainerPlayer.java b/src/main/java/net/minecraft/server/ContainerPlayer.java index 51661ad59f..5c850f8b60 100644 --- a/src/main/java/net/minecraft/server/ContainerPlayer.java +++ b/src/main/java/net/minecraft/server/ContainerPlayer.java @@ -61,7 +61,7 @@ public class ContainerPlayer extends Container { } EntityPlayer player = (EntityPlayer) super.listeners.get(0); // TODO: Is this _always_ correct? Seems like it. - player.netServerHandler.sendPacket(new Packet103SetSlot(player.activeContainer.windowId, 0, craftResult)); + player.playerConnection.sendPacket(new Packet103SetSlot(player.activeContainer.windowId, 0, craftResult)); // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java index 7c32df51f2..eb2fe72a5a 100644 --- a/src/main/java/net/minecraft/server/ContainerWorkbench.java +++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java @@ -63,7 +63,7 @@ public class ContainerWorkbench extends Container { } EntityPlayer player = (EntityPlayer) super.listeners.get(0); // TODO: Is this _always_ correct? Seems like it. - player.netServerHandler.sendPacket(new Packet103SetSlot(player.activeContainer.windowId, 0, craftResult)); + player.playerConnection.sendPacket(new Packet103SetSlot(player.activeContainer.windowId, 0, craftResult)); // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/ControllerLook.java b/src/main/java/net/minecraft/server/ControllerLook.java index 525954284c..bed36954a5 100644 --- a/src/main/java/net/minecraft/server/ControllerLook.java +++ b/src/main/java/net/minecraft/server/ControllerLook.java @@ -53,20 +53,20 @@ public class ControllerLook { // CraftBukkit end this.a.pitch = this.a(this.a.pitch, f1, this.c); - this.a.ay = this.a(this.a.ay, f, this.b); + this.a.az = this.a(this.a.az, f, this.b); } else { - this.a.ay = this.a(this.a.ay, this.a.aw, 10.0F); + this.a.az = this.a(this.a.az, this.a.ax, 10.0F); } - float f2 = MathHelper.g(this.a.ay - this.a.aw); + float f2 = MathHelper.g(this.a.az - this.a.ax); if (!this.a.getNavigation().f()) { if (f2 < -75.0F) { - this.a.ay = this.a.aw - 75.0F; + this.a.az = this.a.ax - 75.0F; } if (f2 > 75.0F) { - this.a.ay = this.a.aw + 75.0F; + this.a.az = this.a.ax + 75.0F; } } } diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java index 8867b56f85..e33bc55e5c 100644 --- a/src/main/java/net/minecraft/server/CraftingManager.java +++ b/src/main/java/net/minecraft/server/CraftingManager.java @@ -29,9 +29,10 @@ public class CraftingManager { (new RecipesCrafting()).a(this); (new RecipesArmor()).a(this); (new RecipesDyes()).a(this); - this.recipes.add(new RecipesArmorDye()); - this.recipes.add(new RecipesMapClone()); - this.recipes.add(new RecipesMapExtend()); + this.recipes.add(new RecipeArmorDye()); + this.recipes.add(new RecipeMapClone()); + this.recipes.add(new RecipeMapExtend()); + this.recipes.add(new RecipeFireworks()); this.registerShapedRecipe(new ItemStack(Item.PAPER, 3), new Object[] { "###", Character.valueOf('#'), Item.SUGAR_CANE}); this.registerShapelessRecipe(new ItemStack(Item.BOOK, 1), new Object[] { Item.PAPER, Item.PAPER, Item.PAPER, Item.LEATHER}); this.registerShapelessRecipe(new ItemStack(Item.BOOK_AND_QUILL, 1), new Object[] { Item.BOOK, new ItemStack(Item.INK_SACK, 1, 0), Item.FEATHER}); @@ -54,6 +55,7 @@ public class CraftingManager { this.registerShapedRecipe(new ItemStack(Block.STEP, 6, 1), new Object[] { "###", Character.valueOf('#'), Block.SANDSTONE}); this.registerShapedRecipe(new ItemStack(Block.STEP, 6, 4), new Object[] { "###", Character.valueOf('#'), Block.BRICK}); this.registerShapedRecipe(new ItemStack(Block.STEP, 6, 5), new Object[] { "###", Character.valueOf('#'), Block.SMOOTH_BRICK}); + this.registerShapedRecipe(new ItemStack(Block.STEP, 6, 6), new Object[] { "###", Character.valueOf('#'), Block.NETHER_BRICK}); this.registerShapedRecipe(new ItemStack(Block.WOOD_STEP, 6, 0), new Object[] { "###", Character.valueOf('#'), new ItemStack(Block.WOOD, 1, 0)}); this.registerShapedRecipe(new ItemStack(Block.WOOD_STEP, 6, 2), new Object[] { "###", Character.valueOf('#'), new ItemStack(Block.WOOD, 1, 2)}); this.registerShapedRecipe(new ItemStack(Block.WOOD_STEP, 6, 1), new Object[] { "###", Character.valueOf('#'), new ItemStack(Block.WOOD, 1, 1)}); @@ -93,7 +95,7 @@ public class CraftingManager { this.registerShapedRecipe(new ItemStack(Block.SPRUCE_WOOD_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), new ItemStack(Block.WOOD, 1, 1)}); this.registerShapedRecipe(new ItemStack(Block.JUNGLE_WOOD_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), new ItemStack(Block.WOOD, 1, 3)}); this.registerShapedRecipe(new ItemStack(Item.FISHING_ROD, 1), new Object[] { " #", " #X", "# X", Character.valueOf('#'), Item.STICK, Character.valueOf('X'), Item.STRING}); - this.registerShapedRecipe(new ItemStack(Item.CARROT_STICK, 1), new Object[] { "# ", " X", Character.valueOf('#'), Item.FISHING_ROD, Character.valueOf('X'), Item.CARROT}); + this.registerShapedRecipe(new ItemStack(Item.CARROT_STICK, 1), new Object[] { "# ", " X", Character.valueOf('#'), Item.FISHING_ROD, Character.valueOf('X'), Item.CARROT}).c(); this.registerShapedRecipe(new ItemStack(Block.COBBLESTONE_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), Block.COBBLESTONE}); this.registerShapedRecipe(new ItemStack(Block.BRICK_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), Block.BRICK}); this.registerShapedRecipe(new ItemStack(Block.STONE_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), Block.SMOOTH_BRICK}); @@ -136,7 +138,7 @@ public class CraftingManager { // CraftBukkit end // CraftBukkit - default -> public - public void registerShapedRecipe(ItemStack itemstack, Object... aobject) { + public ShapedRecipes registerShapedRecipe(ItemStack itemstack, Object... aobject) { String s = ""; int i = 0; int j = 0; @@ -191,7 +193,10 @@ public class CraftingManager { } } - this.recipes.add(new ShapedRecipes(j, k, aitemstack, itemstack)); + ShapedRecipes shapedrecipes = new ShapedRecipes(j, k, aitemstack, itemstack); + + this.recipes.add(shapedrecipes); + return shapedrecipes; } // CraftBukkit - default -> public diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java index 3b0ec70b02..9201375674 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -47,7 +47,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer System.setErr(new PrintStream(new LoggerOutputStream(log, Level.SEVERE), true)); // CraftBukkit end - log.info("Starting minecraft server version 1.4.5"); + log.info("Starting minecraft server version 1.4.6"); if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { log.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); } @@ -101,6 +101,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return false; } + this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit + if (!this.getOnlineMode()) { log.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); log.warning("The server will make no attempt to authenticate usernames. Beware."); @@ -108,7 +110,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer log.warning("To change this, set \"online-mode\" to \"true\" in the server.properties file."); } - this.a((ServerConfigurationManagerAbstract) (new ServerConfigurationManager(this))); + // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit - moved up this.convertable = new WorldLoaderServer(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor long j = System.nanoTime(); @@ -264,8 +266,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return true; } - public ServerConfigurationManager am() { - return (ServerConfigurationManager) super.getServerConfigurationManager(); + public DedicatedPlayerList am() { + return (DedicatedPlayerList) super.getPlayerList(); } public ServerConnection ae() { @@ -319,7 +321,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return this.propertyManager.getInt("spawn-protection", super.getSpawnProtection()); } - public ServerConfigurationManagerAbstract getServerConfigurationManager() { + public PlayerList getPlayerList() { return this.am(); } } diff --git a/src/main/java/net/minecraft/server/DedicatedServerConnectionThread.java b/src/main/java/net/minecraft/server/DedicatedServerConnectionThread.java index 311265fcde..25e2ac1df9 100644 --- a/src/main/java/net/minecraft/server/DedicatedServerConnectionThread.java +++ b/src/main/java/net/minecraft/server/DedicatedServerConnectionThread.java @@ -38,20 +38,20 @@ public class DedicatedServerConnectionThread extends Thread { synchronized (this.b) { for (int i = 0; i < this.b.size(); ++i) { - NetLoginHandler netloginhandler = (NetLoginHandler) this.b.get(i); + PendingConnection pendingconnection = (PendingConnection) this.b.get(i); try { - netloginhandler.c(); + pendingconnection.c(); } catch (Exception exception) { - netloginhandler.disconnect("Internal server error"); - a.log(Level.WARNING, "Failed to handle packet for " + netloginhandler.getName() + ": " + exception, exception); + pendingconnection.disconnect("Internal server error"); + a.log(Level.WARNING, "Failed to handle packet for " + pendingconnection.getName() + ": " + exception, exception); } - if (netloginhandler.c) { + if (pendingconnection.c) { this.b.remove(i--); } - netloginhandler.networkManager.a(); + pendingconnection.networkManager.a(); } } } @@ -83,9 +83,9 @@ public class DedicatedServerConnectionThread extends Thread { this.c.put(inetaddress, Long.valueOf(i)); } - NetLoginHandler netloginhandler = new NetLoginHandler(this.f.d(), socket, "Connection #" + this.d++); + PendingConnection pendingconnection = new PendingConnection(this.f.d(), socket, "Connection #" + this.d++); - this.a(netloginhandler); + this.a(pendingconnection); } catch (IOException ioexception) { a.warning("DSCT: " + ioexception.getMessage()); // CraftBukkit } @@ -94,14 +94,14 @@ public class DedicatedServerConnectionThread extends Thread { System.out.println("Closing listening thread"); } - private void a(NetLoginHandler netloginhandler) { - if (netloginhandler == null) { + private void a(PendingConnection pendingconnection) { + if (pendingconnection == null) { throw new IllegalArgumentException("Got null pendingconnection!"); } else { List list = this.b; synchronized (this.b) { - this.b.add(netloginhandler); + this.b.add(pendingconnection); } } } diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java index 1e7161acf6..42e08a23f3 100644 --- a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java +++ b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java @@ -61,7 +61,7 @@ public class DispenseBehaviorItem implements IDispenseBehavior { return false; } - entityitem.itemStack = CraftItemStack.asNMSCopy(event.getItem()); + entityitem.setItemStack(CraftItemStack.asNMSCopy(event.getItem())); entityitem.motX = event.getVelocity().getX(); entityitem.motY = event.getVelocity().getY(); entityitem.motZ = event.getVelocity().getZ(); diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorMinecart.java b/src/main/java/net/minecraft/server/DispenseBehaviorMinecart.java index 1ec5310eff..2da34d377a 100644 --- a/src/main/java/net/minecraft/server/DispenseBehaviorMinecart.java +++ b/src/main/java/net/minecraft/server/DispenseBehaviorMinecart.java @@ -28,10 +28,10 @@ public class DispenseBehaviorMinecart extends DispenseBehaviorItem { int l = world.getTypeId(i, j, k); double d3; - if (BlockMinecartTrack.d(l)) { + if (BlockMinecartTrack.e(l)) { d3 = 0.0D; } else { - if (l != 0 || !BlockMinecartTrack.d(world.getTypeId(i, j - 1, k))) { + if (l != 0 || !BlockMinecartTrack.e(world.getTypeId(i, j - 1, k))) { return this.c.a(isourceblock, itemstack); } diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorMonsterEgg.java b/src/main/java/net/minecraft/server/DispenseBehaviorMonsterEgg.java index 66ad86ec23..e5a011bc56 100644 --- a/src/main/java/net/minecraft/server/DispenseBehaviorMonsterEgg.java +++ b/src/main/java/net/minecraft/server/DispenseBehaviorMonsterEgg.java @@ -52,8 +52,4 @@ public class DispenseBehaviorMonsterEgg extends DispenseBehaviorItem { // CraftBukkit end return itemstack; } - - protected void a(ISourceBlock isourceblock) { - isourceblock.k().triggerEffect(1002, isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ(), 0); - } } diff --git a/src/main/java/net/minecraft/server/Enchantment.java b/src/main/java/net/minecraft/server/Enchantment.java index 293c3876c9..fec45c4659 100644 --- a/src/main/java/net/minecraft/server/Enchantment.java +++ b/src/main/java/net/minecraft/server/Enchantment.java @@ -1,9 +1,12 @@ package net.minecraft.server; +import java.util.ArrayList; + public abstract class Enchantment { // CraftBukkit - update CraftEnchant.getName(i) if this changes public static final Enchantment[] byId = new Enchantment[256]; + public static final Enchantment[] c; public static final Enchantment PROTECTION_ENVIRONMENTAL = new EnchantmentProtection(0, 10, 0); public static final Enchantment PROTECTION_FIRE = new EnchantmentProtection(1, 5, 1); public static final Enchantment PROTECTION_FALL = new EnchantmentProtection(2, 5, 2); @@ -11,6 +14,7 @@ public abstract class Enchantment { public static final Enchantment PROTECTION_PROJECTILE = new EnchantmentProtection(4, 5, 4); public static final Enchantment OXYGEN = new EnchantmentOxygen(5, 2); public static final Enchantment WATER_WORKER = new EnchantmentWaterWorker(6, 2); + public static final Enchantment THORNS = new EnchantmentThorns(7, 1); public static final Enchantment DAMAGE_ALL = new EnchantmentWeaponDamage(16, 10, 0); public static final Enchantment DAMAGE_UNDEAD = new EnchantmentWeaponDamage(17, 5, 1); public static final Enchantment DAMAGE_ARTHROPODS = new EnchantmentWeaponDamage(18, 5, 2); @@ -89,4 +93,25 @@ public abstract class Enchantment { return s + " " + LocaleI18n.get("enchantment.level." + i); } + + public boolean canEnchant(ItemStack itemstack) { + return this.slot.canEnchant(itemstack.getItem()); + } + + static { + ArrayList arraylist = new ArrayList(); + Enchantment[] aenchantment = byId; + int i = aenchantment.length; + + for (int j = 0; j < i; ++j) { + Enchantment enchantment = aenchantment[j]; + + + if (enchantment != null) { + arraylist.add(enchantment); + } + } + + c = (Enchantment[]) arraylist.toArray(new Enchantment[0]); + } } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index ba09ace78f..1b1cd91254 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -99,11 +99,11 @@ public abstract class Entity { public boolean am; public int portalCooldown; protected boolean ao; - private int h; + protected int ap; public int dimension; - protected int aq; + protected int ar; private boolean invulnerable; - public EnumEntitySize ar; + public EnumEntitySize as; public UUID uniqueId = UUID.randomUUID(); // CraftBukkit public boolean valid = false; // CraftBukkit @@ -139,9 +139,9 @@ public abstract class Entity { this.fireProof = false; this.datawatcher = new DataWatcher(); this.ah = false; - this.aq = 0; + this.ar = 0; this.invulnerable = false; - this.ar = EnumEntitySize.SIZE_2; + this.as = EnumEntitySize.SIZE_2; this.world = world; this.setPosition(0.0D, 0.0D, 0.0D); if (world != null) { @@ -177,17 +177,17 @@ public abstract class Entity { float f2 = f % 2.0F; if ((double) f2 < 0.375D) { - this.ar = EnumEntitySize.SIZE_1; + this.as = EnumEntitySize.SIZE_1; } else if ((double) f2 < 0.75D) { - this.ar = EnumEntitySize.SIZE_2; + this.as = EnumEntitySize.SIZE_2; } else if ((double) f2 < 1.0D) { - this.ar = EnumEntitySize.SIZE_3; + this.as = EnumEntitySize.SIZE_3; } else if ((double) f2 < 1.375D) { - this.ar = EnumEntitySize.SIZE_4; + this.as = EnumEntitySize.SIZE_4; } else if ((double) f2 < 1.75D) { - this.ar = EnumEntitySize.SIZE_5; + this.as = EnumEntitySize.SIZE_5; } else { - this.ar = EnumEntitySize.SIZE_6; + this.as = EnumEntitySize.SIZE_6; } } @@ -243,7 +243,6 @@ public abstract class Entity { this.vehicle = null; } - ++this.ticksLived; this.P = this.Q; this.lastX = this.locX; this.lastY = this.locY; @@ -259,8 +258,8 @@ public abstract class Entity { i = this.z(); if (this.ao) { if (true || minecraftserver.getAllowNether()) { // CraftBukkit - if (this.vehicle == null && this.h++ >= i) { - this.h = i; + if (this.vehicle == null && this.ap++ >= i) { + this.ap = i; this.portalCooldown = this.ab(); byte b0; @@ -276,12 +275,12 @@ public abstract class Entity { this.ao = false; } } else { - if (this.h > 0) { - this.h -= 4; + if (this.ap > 0) { + this.ap -= 4; } - if (this.h < 0) { - this.h = 0; + if (this.ap < 0) { + this.ap = 0; } } @@ -398,6 +397,7 @@ public abstract class Entity { public void setOnFire(int i) { int j = i * 20; + j = EnchantmentProtection.a(this, j); if (this.fireTicks < j) { this.fireTicks = j; } @@ -760,7 +760,7 @@ public abstract class Entity { } } - protected void makeSound(String s, float f, float f1) { + public void makeSound(String s, float f, float f1) { this.world.makeSound(this, s, f, f1); } @@ -868,7 +868,7 @@ public abstract class Entity { int l = this.world.getTypeId(i, j, k); if (l != 0 && Block.byId[l].material == material) { - float f = BlockFluids.d(this.world.getData(i, j, k)) - 0.11111111F; + float f = BlockFluids.e(this.world.getData(i, j, k)) - 0.11111111F; float f1 = (float) (j + 1) - f; return d0 < (double) f1; @@ -1341,7 +1341,7 @@ public abstract class Entity { } public void V() { - if (!(this.passenger instanceof EntityHuman) || !((EntityHuman) this.passenger).bW()) { + if (!(this.passenger instanceof EntityHuman) || !((EntityHuman) this.passenger).bV()) { this.passenger.T = this.T; this.passenger.U = this.U + this.X() + this.passenger.W(); this.passenger.V = this.V; @@ -1478,7 +1478,7 @@ public abstract class Entity { double d1 = this.lastZ - this.locZ; if (!this.world.isStatic && !this.ao) { - this.aq = Direction.a(d0, d1); + this.ar = Direction.a(d0, d1); } this.ao = true; @@ -1722,7 +1722,7 @@ public abstract class Entity { entity.d(nbttagcompound); this.e(nbttagcompound); this.portalCooldown = entity.portalCooldown; - this.aq = entity.aq; + this.ar = entity.ar; } public void b(int i) { @@ -1737,7 +1737,7 @@ public abstract class Entity { this.world.kill(this); this.dead = false; this.world.methodProfiler.a("reposition"); - minecraftserver.getServerConfigurationManager().a(this, j, worldserver, worldserver1); + minecraftserver.getPlayerList().a(this, j, worldserver, worldserver1); this.world.methodProfiler.c("reloading"); Entity entity = EntityTypes.createEntityByName(EntityTypes.b(this), worldserver1); @@ -1763,7 +1763,7 @@ public abstract class Entity { } public int at() { - return this.aq; + return this.ar; } public boolean au() { diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java index aecf24587f..845a9023e4 100644 --- a/src/main/java/net/minecraft/server/EntityAgeable.java +++ b/src/main/java/net/minecraft/server/EntityAgeable.java @@ -22,16 +22,12 @@ public abstract class EntityAgeable extends EntityCreature { entityageable.setAge(-24000); entityageable.setPositionRotation(this.locX, this.locY, this.locZ, 0.0F, 0.0F); this.world.addEntity(entityageable, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG); // CraftBukkit - - // CraftBukkit start if (!entityhuman.abilities.canInstantlyBuild) { - itemstack.count--; - - if (itemstack.count == 0) { - entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, null); + --itemstack.count; + if (itemstack.count == 0) { // CraftBukkit - allow less than 0 stacks as "infinit" + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); } } - // CraftBukkit end } } } diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java index fdad5657d8..dfc1f56784 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -21,17 +21,19 @@ public class EntityArrow extends Entity implements IProjectile { public int shake = 0; public Entity shooter; private int j; - private int as = 0; + private int at = 0; private double damage = 2.0D; - private int au; + private int av; public EntityArrow(World world) { super(world); + this.l = 10.0D; this.a(0.5F, 0.5F); } public EntityArrow(World world, double d0, double d1, double d2) { super(world); + this.l = 10.0D; this.a(0.5F, 0.5F); this.setPosition(d0, d1, d2); this.height = 0.0F; @@ -39,6 +41,7 @@ public class EntityArrow extends Entity implements IProjectile { public EntityArrow(World world, EntityLiving entityliving, EntityLiving entityliving1, float f, float f1) { super(world); + this.l = 10.0D; this.shooter = entityliving; if (entityliving instanceof EntityHuman) { this.fromPlayer = 1; @@ -66,6 +69,7 @@ public class EntityArrow extends Entity implements IProjectile { public EntityArrow(World world, EntityLiving entityliving, float f) { super(world); + this.l = 10.0D; this.shooter = entityliving; if (entityliving instanceof EntityHuman) { this.fromPlayer = 1; @@ -149,10 +153,10 @@ public class EntityArrow extends Entity implements IProjectile { this.motY *= (double) (this.random.nextFloat() * 0.2F); this.motZ *= (double) (this.random.nextFloat() * 0.2F); this.j = 0; - this.as = 0; + this.at = 0; } } else { - ++this.as; + ++this.at; Vec3D vec3d = this.world.getVec3DPool().create(this.locX, this.locY, this.locZ); Vec3D vec3d1 = this.world.getVec3DPool().create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ); MovingObjectPosition movingobjectposition = this.world.rayTrace(vec3d, vec3d1, false, true); @@ -173,7 +177,7 @@ public class EntityArrow extends Entity implements IProjectile { for (l = 0; l < list.size(); ++l) { Entity entity1 = (Entity) list.get(l); - if (entity1.L() && (entity1 != this.shooter || this.as >= 5)) { + if (entity1.L() && (entity1 != this.shooter || this.at >= 5)) { f1 = 0.3F; AxisAlignedBB axisalignedbb1 = entity1.boundingBox.grow((double) f1, (double) f1, (double) f1); MovingObjectPosition movingobjectposition1 = axisalignedbb1.a(vec3d, vec3d1); @@ -194,6 +198,7 @@ public class EntityArrow extends Entity implements IProjectile { } float f2; + float f3; if (movingobjectposition != null) { // CraftBukkit start @@ -219,7 +224,7 @@ public class EntityArrow extends Entity implements IProjectile { // CraftBukkit start - moved damage call if (movingobjectposition.entity.damageEntity(damagesource, i1)) { - if (this.isBurning() && (!(movingobjectposition.entity instanceof EntityPlayer) || !(this.shooter instanceof EntityPlayer) || this.world.pvpMode)) { // CraftBukkit - abide by pvp setting if destination is a player. + if (this.isBurning() && !(movingobjectposition.entity instanceof EntityEnderman) && (!(movingobjectposition.entity instanceof EntityPlayer) || !(this.shooter instanceof EntityPlayer) || this.world.pvpMode)) { // CraftBukkit - abide by pvp setting if destination is a player. EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity(), 5); org.bukkit.Bukkit.getPluginManager().callEvent(combustEvent); @@ -231,30 +236,37 @@ public class EntityArrow extends Entity implements IProjectile { // if (movingobjectposition.entity.damageEntity(damagesource, i1)) { // CraftBukkit - moved up if (movingobjectposition.entity instanceof EntityLiving) { - if (!this.world.isStatic) { - EntityLiving entityliving = (EntityLiving) movingobjectposition.entity; + EntityLiving entityliving = (EntityLiving) movingobjectposition.entity; + if (!this.world.isStatic) { entityliving.r(entityliving.bJ() + 1); } - if (this.au > 0) { - float f3 = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ); + if (this.av > 0) { + f3 = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ); if (f3 > 0.0F) { - movingobjectposition.entity.g(this.motX * (double) this.au * 0.6000000238418579D / (double) f3, 0.1D, this.motZ * (double) this.au * 0.6000000238418579D / (double) f3); + movingobjectposition.entity.g(this.motX * (double) this.av * 0.6000000238418579D / (double) f3, 0.1D, this.motZ * (double) this.av * 0.6000000238418579D / (double) f3); } } + + EnchantmentThorns.a(this.shooter, entityliving, this.random); + if (this.shooter != null && movingobjectposition.entity != this.shooter && movingobjectposition.entity instanceof EntityHuman && this.shooter instanceof EntityPlayer) { + ((EntityPlayer) this.shooter).playerConnection.sendPacket(new Packet70Bed(6, 0)); + } } this.makeSound("random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F)); - this.die(); + if (!(movingobjectposition.entity instanceof EntityEnderman)) { + this.die(); + } } else { this.motX *= -0.10000000149011612D; this.motY *= -0.10000000149011612D; this.motZ *= -0.10000000149011612D; this.yaw += 180.0F; this.lastYaw += 180.0F; - this.as = 0; + this.at = 0; } } else { this.d = movingobjectposition.b; @@ -314,9 +326,8 @@ public class EntityArrow extends Entity implements IProjectile { f1 = 0.05F; if (this.H()) { for (int j1 = 0; j1 < 4; ++j1) { - float f5 = 0.25F; - - this.world.addParticle("bubble", this.locX - this.motX * (double) f5, this.locY - this.motY * (double) f5, this.locZ - this.motZ * (double) f5, this.motX, this.motY, this.motZ); + f3 = 0.25F; + this.world.addParticle("bubble", this.locX - this.motX * (double) f3, this.locY - this.motY * (double) f3, this.locZ - this.motZ * (double) f3, this.motX, this.motY, this.motZ); } f4 = 0.8F; @@ -406,7 +417,7 @@ public class EntityArrow extends Entity implements IProjectile { } public void a(int i) { - this.au = i; + this.av = i; } public boolean aq() { diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java index ac7a779ef1..74739a21a2 100644 --- a/src/main/java/net/minecraft/server/EntityBlaze.java +++ b/src/main/java/net/minecraft/server/EntityBlaze.java @@ -10,7 +10,7 @@ public class EntityBlaze extends EntityMonster { super(world); this.texture = "/mob/fire.png"; this.fireProof = true; - this.bc = 10; + this.bd = 10; } public int getMaxHealth() { diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java index 95ec583580..d75c3c8729 100644 --- a/src/main/java/net/minecraft/server/EntityCreature.java +++ b/src/main/java/net/minecraft/server/EntityCreature.java @@ -73,7 +73,7 @@ public abstract class EntityCreature extends EntityLiving { this.world.methodProfiler.b(); if (!this.b && this.target != null && (this.pathEntity == null || this.random.nextInt(20) == 0)) { this.pathEntity = this.world.findPath(this, this.target, f, true, false, false, true); - } else if (!this.b && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.c > 0) && this.bA < 100) { + } else if (!this.b && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.c > 0) && this.bB < 100) { this.i(); } @@ -97,7 +97,7 @@ public abstract class EntityCreature extends EntityLiving { } } - this.bE = false; + this.bF = false; if (vec3d != null) { double d1 = vec3d.c - this.locX; double d2 = vec3d.e - this.locZ; @@ -106,7 +106,7 @@ public abstract class EntityCreature extends EntityLiving { float f2 = (float) (org.bukkit.craftbukkit.TrigMath.atan2(d2, d1) * 180.0D / 3.1415927410125732D) - 90.0F; float f3 = MathHelper.g(f2 - this.yaw); - this.bC = this.bG; + this.bD = this.bH; if (f3 > 30.0F) { f3 = 30.0F; } @@ -123,12 +123,12 @@ public abstract class EntityCreature extends EntityLiving { this.yaw = (float) (Math.atan2(d5, d4) * 180.0D / 3.1415927410125732D) - 90.0F; f3 = (f4 - this.yaw + 90.0F) * 3.1415927F / 180.0F; - this.bB = -MathHelper.sin(f3) * this.bC * 1.0F; - this.bC = MathHelper.cos(f3) * this.bC * 1.0F; + this.bC = -MathHelper.sin(f3) * this.bC * 1.0F; + this.bD = MathHelper.cos(f3) * this.bC * 1.0F; } if (d3 > 0.0D) { - this.bE = true; + this.bF = true; } } @@ -137,11 +137,11 @@ public abstract class EntityCreature extends EntityLiving { } if (this.positionChanged && !this.k()) { - this.bE = true; + this.bF = true; } if (this.random.nextFloat() < 0.8F && (flag || flag1)) { - this.bE = true; + this.bF = true; } this.world.methodProfiler.b(); diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java index 066ee78ca9..7d2cf37e1d 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -25,20 +25,20 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { public EntityComplexPart h; public EntityComplexPart i; public EntityComplexPart j; - public EntityComplexPart bI; public EntityComplexPart bJ; public EntityComplexPart bK; - public float bL = 0.0F; + public EntityComplexPart bL; public float bM = 0.0F; - public boolean bN = false; + public float bN = 0.0F; public boolean bO = false; - private Entity bR; - public int bP = 0; - public EntityEnderCrystal bQ = null; + public boolean bP = false; + private Entity bS; + public int bQ = 0; + public EntityEnderCrystal bR = null; public EntityEnderDragon(World world) { super(world); - this.children = new EntityComplexPart[] { this.g = new EntityComplexPart(this, "head", 6.0F, 6.0F), this.h = new EntityComplexPart(this, "body", 8.0F, 8.0F), this.i = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.j = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bI = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bJ = new EntityComplexPart(this, "wing", 4.0F, 4.0F), this.bK = new EntityComplexPart(this, "wing", 4.0F, 4.0F)}; + this.children = new EntityComplexPart[] { this.g = new EntityComplexPart(this, "head", 6.0F, 6.0F), this.h = new EntityComplexPart(this, "body", 8.0F, 8.0F), this.i = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.j = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bJ = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bK = new EntityComplexPart(this, "wing", 4.0F, 4.0F), this.bL = new EntityComplexPart(this, "wing", 4.0F, 4.0F)}; this.setHealth(this.getMaxHealth()); this.texture = "/mob/enderdragon/ender.png"; this.a(16.0F, 8.0F); @@ -84,14 +84,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { if (!this.world.isStatic) { this.datawatcher.watch(16, Integer.valueOf(this.health)); } else { - f = MathHelper.cos(this.bM * 3.1415927F * 2.0F); - f1 = MathHelper.cos(this.bL * 3.1415927F * 2.0F); + f = MathHelper.cos(this.bN * 3.1415927F * 2.0F); + f1 = MathHelper.cos(this.bM * 3.1415927F * 2.0F); if (f1 <= -0.3F && f >= -0.3F) { - this.world.b(this.locX, this.locY, this.locZ, "mob.enderdragon.wings", 5.0F, 0.8F + this.random.nextFloat() * 0.3F); + this.world.a(this.locX, this.locY, this.locZ, "mob.enderdragon.wings", 5.0F, 0.8F + this.random.nextFloat() * 0.3F, false); } } - this.bL = this.bM; + this.bM = this.bN; float f2; if (this.health <= 0) { @@ -103,10 +103,10 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { this.h(); f = 0.2F / (MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, this.motY); - if (this.bO) { - this.bM += f * 0.5F; + if (this.bP) { + this.bN += f * 0.5F; } else { - this.bM += f; + this.bN += f; } this.yaw = MathHelper.g(this.yaw); @@ -130,14 +130,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { float f3; if (this.world.isStatic) { - if (this.bs > 0) { - d0 = this.locX + (this.bt - this.locX) / (double) this.bs; - d1 = this.locY + (this.bu - this.locY) / (double) this.bs; - d2 = this.locZ + (this.bv - this.locZ) / (double) this.bs; + if (this.bt > 0) { + d0 = this.locX + (this.bt - this.locX) / (double) this.bt; + d1 = this.locY + (this.bu - this.locY) / (double) this.bt; + d2 = this.locZ + (this.bv - this.locZ) / (double) this.bt; d3 = MathHelper.g(this.bw - (double) this.yaw); - this.yaw = (float) ((double) this.yaw + d3 / (double) this.bs); - this.pitch = (float) ((double) this.pitch + (this.bx - (double) this.pitch) / (double) this.bs); - --this.bs; + this.yaw = (float) ((double) this.yaw + d3 / (double) this.bt); + this.pitch = (float) ((double) this.pitch + (this.bx - (double) this.pitch) / (double) this.bt); + --this.bt; this.setPosition(d0, d1, d2); this.b(this.yaw, this.pitch); } @@ -146,9 +146,9 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { d1 = this.b - this.locY; d2 = this.c - this.locZ; d3 = d0 * d0 + d1 * d1 + d2 * d2; - if (this.bR != null) { - this.a = this.bR.locX; - this.c = this.bR.locZ; + if (this.bS != null) { + this.a = this.bS.locX; + this.c = this.bS.locZ; double d4 = this.a - this.locX; double d5 = this.c - this.locZ; double d6 = Math.sqrt(d4 * d4 + d5 * d5); @@ -158,13 +158,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { d7 = 10.0D; } - this.b = this.bR.boundingBox.b + d7; + this.b = this.bS.boundingBox.b + d7; } else { this.a += this.random.nextGaussian() * 2.0D; this.c += this.random.nextGaussian() * 2.0D; } - if (this.bN || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.G) { + if (this.bO || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.G) { this.i(); } @@ -199,7 +199,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { f4 = 0.0F; } - this.bD *= 0.8F; + this.bE *= 0.8F; float f5 = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 1.0F + 1.0F; double d10 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 1.0D + 1.0D; @@ -207,13 +207,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { d10 = 40.0D; } - this.bD = (float) ((double) this.bD + d9 * (0.699999988079071D / d10 / (double) f5)); - this.yaw += this.bD * 0.1F; + this.bE = (float) ((double) this.bE + d9 * (0.699999988079071D / d10 / (double) f5)); + this.yaw += this.bE * 0.1F; float f6 = (float) (2.0D / (d10 + 1.0D)); float f7 = 0.06F; this.a(0.0F, -1.0F, f7 * (f4 * f6 + (1.0F - f6))); - if (this.bO) { + if (this.bP) { this.move(this.motX * 0.800000011920929D, this.motY * 0.800000011920929D, this.motZ * 0.800000011920929D); } else { this.move(this.motX, this.motY, this.motZ); @@ -228,17 +228,17 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { this.motY *= 0.9100000262260437D; } - this.aw = this.yaw; + this.ax = this.yaw; this.g.width = this.g.length = 3.0F; this.i.width = this.i.length = 2.0F; this.j.width = this.j.length = 2.0F; - this.bI.width = this.bI.length = 2.0F; + this.bJ.width = this.bJ.length = 2.0F; this.h.length = 3.0F; this.h.width = 5.0F; - this.bJ.length = 2.0F; - this.bJ.width = 4.0F; - this.bK.length = 3.0F; + this.bK.length = 2.0F; this.bK.width = 4.0F; + this.bL.length = 3.0F; + this.bL.width = 4.0F; f1 = (float) (this.a(5, 1.0F)[1] - this.a(10, 1.0F)[1]) * 10.0F / 180.0F * 3.1415927F; f2 = MathHelper.cos(f1); float f9 = -MathHelper.sin(f1); @@ -248,21 +248,21 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { this.h.j_(); this.h.setPositionRotation(this.locX + (double) (f11 * 0.5F), this.locY, this.locZ - (double) (f12 * 0.5F), 0.0F, 0.0F); - this.bJ.j_(); - this.bJ.setPositionRotation(this.locX + (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ + (double) (f11 * 4.5F), 0.0F, 0.0F); this.bK.j_(); - this.bK.setPositionRotation(this.locX - (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ - (double) (f11 * 4.5F), 0.0F, 0.0F); + this.bK.setPositionRotation(this.locX + (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ + (double) (f11 * 4.5F), 0.0F, 0.0F); + this.bL.j_(); + this.bL.setPositionRotation(this.locX - (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ - (double) (f11 * 4.5F), 0.0F, 0.0F); if (!this.world.isStatic && this.hurtTicks == 0) { - this.a(this.world.getEntities(this, this.bJ.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D))); this.a(this.world.getEntities(this, this.bK.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D))); + this.a(this.world.getEntities(this, this.bL.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D))); this.b(this.world.getEntities(this, this.g.boundingBox.grow(1.0D, 1.0D, 1.0D))); } double[] adouble = this.a(5, 1.0F); double[] adouble1 = this.a(0, 1.0F); - f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.bD * 0.01F); - float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.bD * 0.01F); + f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.bE * 0.01F); + float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.bE * 0.01F); this.g.j_(); this.g.setPositionRotation(this.locX + (double) (f3 * 5.5F * f2), this.locY + (adouble1[1] - adouble[1]) * 1.0D + (double) (f9 * 5.5F), this.locZ - (double) (f13 * 5.5F * f2), 0.0F, 0.0F); @@ -279,7 +279,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } if (j == 2) { - entitycomplexpart = this.bI; + entitycomplexpart = this.bJ; } double[] adouble2 = this.a(12 + j * 2, 1.0F); @@ -300,13 +300,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } private void h() { - if (this.bQ != null) { - if (this.bQ.dead) { + if (this.bR != null) { + if (this.bR.dead) { if (!this.world.isStatic) { this.a(this.g, DamageSource.EXPLOSION, 10); } - this.bQ = null; + this.bR = null; } else if (this.ticksLived % 10 == 0 && this.health < this.getMaxHealth()) { // CraftBukkit start EntityRegainHealthEvent event = new EntityRegainHealthEvent(this.getBukkitEntity(), 1, EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL); @@ -336,7 +336,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } } - this.bQ = entityendercrystal; + this.bR = entityendercrystal; } } @@ -382,9 +382,9 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } private void i() { - this.bN = false; + this.bO = false; if (this.random.nextInt(2) == 0 && !this.world.players.isEmpty()) { - this.bR = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size())); + this.bS = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size())); } else { boolean flag = false; @@ -401,7 +401,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { flag = d0 * d0 + d1 * d1 + d2 * d2 > 100.0D; } while (!flag); - this.bR = null; + this.bS = null; } } @@ -482,7 +482,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { this.a = this.locX + (double) (f1 * 5.0F) + (double) ((this.random.nextFloat() - 0.5F) * 2.0F); this.b = this.locY + (double) (this.random.nextFloat() * 3.0F) + 1.0D; this.c = this.locZ - (double) (f2 * 5.0F) + (double) ((this.random.nextFloat() - 0.5F) * 2.0F); - this.bR = null; + this.bS = null; if (damagesource.getEntity() instanceof EntityHuman || damagesource == DamageSource.EXPLOSION) { this.dealDamage(damagesource, i); } @@ -499,8 +499,8 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } protected void aP() { - ++this.bP; - if (this.bP >= 180 && this.bP <= 200) { + ++this.bQ; + if (this.bQ >= 180 && this.bQ <= 200) { float f = (this.random.nextFloat() - 0.5F) * 8.0F; float f1 = (this.random.nextFloat() - 0.5F) * 4.0F; float f2 = (this.random.nextFloat() - 0.5F) * 8.0F; @@ -512,7 +512,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { int j; if (!this.world.isStatic) { - if (this.bP > 150 && this.bP % 5 == 0) { + if (this.bQ > 150 && this.bQ % 5 == 0) { i = expToDrop / 12; // CraftBukkit - drop experience as dragon falls from sky. use experience drop from death event. This is now set in getExpReward() while (i > 0) { @@ -522,14 +522,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { } } - if (this.bP == 1) { + if (this.bQ == 1) { this.world.e(1018, (int) this.locX, (int) this.locY, (int) this.locZ, 0); } } this.move(0.0D, 0.10000000149011612D, 0.0D); - this.aw = this.yaw += 20.0F; - if (this.bP == 200 && !this.world.isStatic) { + this.ax = this.yaw += 20.0F; + if (this.bQ == 200 && !this.world.isStatic) { i = expToDrop - 10 * (expToDrop / 12); // CraftBukkit - drop the remaining experience while (i > 0) { @@ -599,7 +599,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { for (Iterator it = this.world.players.iterator(); it.hasNext();) { EntityHuman entity = (EntityHuman) it.next(); if (entity instanceof EntityPlayer) { - ((EntityPlayer) entity).netServerHandler.sendPacket(packet); + ((EntityPlayer) entity).playerConnection.sendPacket(packet); } } } diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java index e173f625c9..fa2ccc4807 100644 --- a/src/main/java/net/minecraft/server/EntityEnderPearl.java +++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java @@ -29,7 +29,7 @@ public class EntityEnderPearl extends EntityProjectile { if (this.getShooter() != null && this.getShooter() instanceof EntityPlayer) { EntityPlayer entityplayer = (EntityPlayer) this.getShooter(); - if (!entityplayer.netServerHandler.disconnected && entityplayer.world == this.world) { + if (!entityplayer.playerConnection.disconnected && entityplayer.world == this.world) { // CraftBukkit start org.bukkit.craftbukkit.entity.CraftPlayer player = entityplayer.getBukkitEntity(); org.bukkit.Location location = getBukkitEntity().getLocation(); @@ -39,14 +39,14 @@ public class EntityEnderPearl extends EntityProjectile { PlayerTeleportEvent teleEvent = new PlayerTeleportEvent(player, player.getLocation(), location, PlayerTeleportEvent.TeleportCause.ENDER_PEARL); Bukkit.getPluginManager().callEvent(teleEvent); - if (!teleEvent.isCancelled() && !entityplayer.netServerHandler.disconnected) { - entityplayer.netServerHandler.teleport(teleEvent.getTo()); + if (!teleEvent.isCancelled() && !entityplayer.playerConnection.disconnected) { + entityplayer.playerConnection.teleport(teleEvent.getTo()); this.getShooter().fallDistance = 0.0F; EntityDamageByEntityEvent damageEvent = new EntityDamageByEntityEvent(this.getBukkitEntity(), player, EntityDamageByEntityEvent.DamageCause.FALL, 5); Bukkit.getPluginManager().callEvent(damageEvent); - if (!damageEvent.isCancelled() && !entityplayer.netServerHandler.disconnected) { + if (!damageEvent.isCancelled() && !entityplayer.playerConnection.disconnected) { entityplayer.invulnerableTicks = -1; // Remove spawning invulnerability player.setLastDamageCause(damageEvent); entityplayer.damageEntity(DamageSource.FALL, damageEvent.getDamage()); diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java index eb331932f4..15b5516b26 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -15,7 +15,7 @@ public class EntityEnderman extends EntityMonster { public EntityEnderman(World world) { super(world); this.texture = "/mob/enderman.png"; - this.bG = 0.2F; + this.bH = 0.2F; this.a(0.6F, 2.9F); this.X = 1.0F; } @@ -87,7 +87,7 @@ public class EntityEnderman extends EntityMonster { this.damageEntity(DamageSource.DROWN, 1); } - this.bG = this.target != null ? 6.5F : 0.3F; + this.bH = this.target != null ? 6.5F : 0.3F; int i; if (!this.world.isStatic && this.world.getGameRules().getBoolean("mobGriefing")) { @@ -143,13 +143,13 @@ public class EntityEnderman extends EntityMonster { } } - if (this.G()) { + if (this.G() || this.isBurning()) { this.target = null; this.f(false); this.m(); } - this.bE = false; + this.bF = false; if (this.target != null) { this.a(this.target, 100.0F, 100.0F); } @@ -157,8 +157,8 @@ public class EntityEnderman extends EntityMonster { if (!this.world.isStatic && this.isAlive()) { if (this.target != null) { if (this.target instanceof EntityHuman && this.d((EntityHuman) this.target)) { - this.bB = this.bC = 0.0F; - this.bG = 0.0F; + this.bC = this.bD = 0.0F; + this.bH = 0.0F; if (this.target.e((Entity) this) < 16.0D) { this.m(); } @@ -316,21 +316,20 @@ public class EntityEnderman extends EntityMonster { public boolean damageEntity(DamageSource damagesource, int i) { if (this.isInvulnerable()) { - return false; - } else if (damagesource instanceof EntityDamageSourceIndirect) { - for (int j = 0; j < 64; ++j) { - if (this.m()) { - return true; - } - } - return false; } else { - if (damagesource.getEntity() instanceof EntityHuman) { - this.f(true); - } + this.f(true); + if (damagesource instanceof EntityDamageSourceIndirect) { + for (int j = 0; j < 64; ++j) { + if (this.m()) { + return true; + } + } - return super.damageEntity(damagesource, i); + return false; + } else { + return super.damageEntity(damagesource, i); + } } } diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java index a733b6a8ed..f5fc9cdebe 100644 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java @@ -150,8 +150,8 @@ public class EntityExperienceOrb extends Entity { public void c_(EntityHuman entityhuman) { if (!this.world.isStatic) { - if (this.c == 0 && entityhuman.bR == 0) { - entityhuman.bR = 2; + if (this.c == 0 && entityhuman.bS == 0) { + entityhuman.bS = 2; this.makeSound("random.orb", 0.1F, 0.5F * ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.8F)); entityhuman.receive(this, 1); entityhuman.giveExp(CraftEventFactory.callPlayerExpChangeEvent(entityhuman, this.value).getAmount()); // CraftBukkit - this.value to event.getAmount() diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java index 2f142ae11f..1daf7beed9 100644 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -25,7 +25,7 @@ public class EntityFallingBlock extends Entity { this.dropItem = true; this.e = false; this.hurtEntities = false; - this.fallHurtMax = 20; + this.fallHurtMax = 40; this.fallHurtAmount = 2.0F; } @@ -39,7 +39,7 @@ public class EntityFallingBlock extends Entity { this.dropItem = true; this.e = false; this.hurtEntities = false; - this.fallHurtMax = 20; + this.fallHurtMax = 40; this.fallHurtAmount = 2.0F; this.id = i; this.data = j; @@ -84,12 +84,13 @@ public class EntityFallingBlock extends Entity { int k = MathHelper.floor(this.locZ); if (this.c == 1) { - if (this.c == 1 && this.world.getTypeId(i, j, k) == this.id && this.world.getData(i, j, k) == this.data && !CraftEventFactory.callEntityChangeBlockEvent(this, i, j, k, 0, 0).isCancelled()) { // CraftBukkit - compare data and call event - this.world.setTypeId(i, j, k, 0); - } else { + // CraftBukkit - compare data and call event + if (this.c != 1 || this.world.getTypeId(i, j, k) != this.id || this.world.getData(i, j, k) != this.data || CraftEventFactory.callEntityChangeBlockEvent(this, i, j, k, 0, 0).isCancelled()) { this.die(); - return; // CraftBukkit + return; } + + this.world.setTypeId(i, j, k, 0); } if (this.onGround) { @@ -196,4 +197,10 @@ public class EntityFallingBlock extends Entity { public void e(boolean flag) { this.hurtEntities = flag; } + + public void a(CrashReportSystemDetails crashreportsystemdetails) { + super.a(crashreportsystemdetails); + crashreportsystemdetails.a("Immitating block ID", Integer.valueOf(this.id)); + crashreportsystemdetails.a("Immitating block data", Integer.valueOf(this.data)); + } } diff --git a/src/main/java/net/minecraft/server/EntityFireball.java b/src/main/java/net/minecraft/server/EntityFireball.java index c016f925a0..d8f34ef87a 100644 --- a/src/main/java/net/minecraft/server/EntityFireball.java +++ b/src/main/java/net/minecraft/server/EntityFireball.java @@ -13,7 +13,7 @@ public abstract class EntityFireball extends Entity { private boolean i = false; public EntityLiving shooter; private int j; - private int as = 0; + private int at = 0; public double dirX; public double dirY; public double dirZ; @@ -86,9 +86,9 @@ public abstract class EntityFireball extends Entity { this.motY *= (double) (this.random.nextFloat() * 0.2F); this.motZ *= (double) (this.random.nextFloat() * 0.2F); this.j = 0; - this.as = 0; + this.at = 0; } else { - ++this.as; + ++this.at; } Vec3D vec3d = this.world.getVec3DPool().create(this.locX, this.locY, this.locZ); @@ -108,7 +108,7 @@ public abstract class EntityFireball extends Entity { for (int j = 0; j < list.size(); ++j) { Entity entity1 = (Entity) list.get(j); - if (entity1.L() && (!entity1.i(this.shooter) || this.as >= 25)) { + if (entity1.L() && (!entity1.i(this.shooter) || this.at >= 25)) { float f = 0.3F; AxisAlignedBB axisalignedbb = entity1.boundingBox.grow((double) f, (double) f, (double) f); MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1); diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java index bce96a1fbe..36c46cfcc2 100644 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -18,14 +18,14 @@ public class EntityFishingHook extends Entity { public EntityHuman owner; private int i; private int j = 0; - private int as = 0; + private int at = 0; public Entity hooked = null; - private int at; - private double au; + private int au; private double av; private double aw; private double ax; private double ay; + private double az; public EntityFishingHook(World world) { super(world); @@ -79,20 +79,20 @@ public class EntityFishingHook extends Entity { public void j_() { super.j_(); - if (this.at > 0) { - double d0 = this.locX + (this.au - this.locX) / (double) this.at; - double d1 = this.locY + (this.av - this.locY) / (double) this.at; - double d2 = this.locZ + (this.aw - this.locZ) / (double) this.at; - double d3 = MathHelper.g(this.ax - (double) this.yaw); + if (this.au > 0) { + double d0 = this.locX + (this.av - this.locX) / (double) this.au; + double d1 = this.locY + (this.aw - this.locY) / (double) this.au; + double d2 = this.locZ + (this.ax - this.locZ) / (double) this.au; + double d3 = MathHelper.g(this.ay - (double) this.yaw); - this.yaw = (float) ((double) this.yaw + d3 / (double) this.at); - this.pitch = (float) ((double) this.pitch + (this.ay - (double) this.pitch) / (double) this.at); - --this.at; + this.yaw = (float) ((double) this.yaw + d3 / (double) this.au); + this.pitch = (float) ((double) this.pitch + (this.az - (double) this.pitch) / (double) this.au); + --this.au; this.setPosition(d0, d1, d2); this.b(this.yaw, this.pitch); } else { if (!this.world.isStatic) { - ItemStack itemstack = this.owner.bT(); + ItemStack itemstack = this.owner.bS(); if (this.owner.dead || !this.owner.isAlive() || itemstack == null || itemstack.getItem() != Item.FISHING_ROD || this.e(this.owner) > 1024.0D) { this.die(); @@ -230,8 +230,8 @@ public class EntityFishingHook extends Entity { } if (d6 > 0.0D) { - if (this.as > 0) { - --this.as; + if (this.at > 0) { + --this.at; } else { short short1 = 500; @@ -240,7 +240,7 @@ public class EntityFishingHook extends Entity { } if (this.random.nextInt(short1) == 0) { - this.as = this.random.nextInt(30) + 10; + this.at = this.random.nextInt(30) + 10; this.motY -= 0.20000000298023224D; this.makeSound("random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F); float f3 = (float) MathHelper.floor(this.boundingBox.b); @@ -264,7 +264,7 @@ public class EntityFishingHook extends Entity { } } - if (this.as > 0) { + if (this.at > 0) { this.motY -= (double) (this.random.nextFloat() * this.random.nextFloat() * this.random.nextFloat()) * 0.2D; } @@ -329,7 +329,7 @@ public class EntityFishingHook extends Entity { this.hooked.motY += d1 * d4 + (double) MathHelper.sqrt(d3) * 0.08D; this.hooked.motZ += d2 * d4; b0 = 3; - } else if (this.as > 0) { + } else if (this.at > 0) { EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY, this.locZ, new ItemStack(Item.RAW_FISH)); // CraftBukkit start PlayerFishEvent playerFishEvent = new PlayerFishEvent((Player) this.owner.getBukkitEntity(), entityitem.getBukkitEntity(), PlayerFishEvent.State.CAUGHT_FISH); @@ -353,7 +353,7 @@ public class EntityFishingHook extends Entity { entityitem.motZ = d7 * d9; this.world.addEntity(entityitem); this.owner.a(StatisticList.B, 1); - this.owner.world.addEntity(new EntityExperienceOrb(this.owner.world, this.owner.locX, this.owner.locY + 0.5D, this.owner.locZ + 0.5D, this.random.nextInt(3) + 1)); + this.owner.world.addEntity(new EntityExperienceOrb(this.owner.world, this.owner.locX, this.owner.locY + 0.5D, this.owner.locZ + 0.5D, this.random.nextInt(6) + 1)); b0 = 1; } diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java index 3dc67c08c3..ac31564002 100644 --- a/src/main/java/net/minecraft/server/EntityGhast.java +++ b/src/main/java/net/minecraft/server/EntityGhast.java @@ -16,13 +16,14 @@ public class EntityGhast extends EntityFlying implements IMonster { private int i = 0; public int f = 0; public int g = 0; + private int explosionPower = 1; public EntityGhast(World world) { super(world); this.texture = "/mob/ghast.png"; this.a(4.0F, 4.0F); this.fireProof = true; - this.bc = 5; + this.bd = 5; } public boolean damageEntity(DamageSource damagesource, int i) { @@ -129,7 +130,7 @@ public class EntityGhast extends EntityFlying implements IMonster { double d6 = this.target.boundingBox.b + (double) (this.target.length / 2.0F) - (this.locY + (double) (this.length / 2.0F)); double d7 = this.target.locZ - this.locZ; - this.aw = this.yaw = -((float) Math.atan2(d5, d7)) * 180.0F / 3.1415927F; + this.ax = this.yaw = -((float) Math.atan2(d5, d7)) * 180.0F / 3.1415927F; if (this.n(this.target)) { if (this.g == 10) { this.world.a((EntityHuman) null, 1007, (int) this.locX, (int) this.locY, (int) this.locZ, 0); @@ -139,6 +140,8 @@ public class EntityGhast extends EntityFlying implements IMonster { if (this.g == 20) { this.world.a((EntityHuman) null, 1008, (int) this.locX, (int) this.locY, (int) this.locZ, 0); EntityLargeFireball entitylargefireball = new EntityLargeFireball(this.world, this, d5, d6, d7); + + entitylargefireball.e = this.explosionPower; double d8 = 4.0D; Vec3D vec3d = this.i(1.0F); @@ -152,7 +155,7 @@ public class EntityGhast extends EntityFlying implements IMonster { --this.g; } } else { - this.aw = this.yaw = -((float) Math.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F; + this.ax = this.yaw = -((float) Math.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F; if (this.g > 0) { --this.g; } @@ -232,4 +235,16 @@ public class EntityGhast extends EntityFlying implements IMonster { public int bv() { return 1; } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setInt("ExplosionPower", this.explosionPower); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + if (nbttagcompound.hasKey("ExplosionPower")) { + this.explosionPower = nbttagcompound.getInt("ExplosionPower"); + } + } } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java index 1e5723d3b1..3aec4df385 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -20,18 +20,18 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen public Container defaultContainer; public Container activeContainer; protected FoodMetaData foodData = new FoodMetaData(); - protected int bM = 0; - public byte bN = 0; - public float bO; + protected int bN = 0; + public byte bO = 0; public float bP; + public float bQ; public String name; - public int bR = 0; - public double bS; + public int bS = 0; public double bT; public double bU; public double bV; public double bW; public double bX; + public double bY; // CraftBukkit start public boolean sleeping; // protected -> public public boolean fauxSleeping; @@ -42,10 +42,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } // CraftBukkit end - public ChunkCoordinates bZ; + public ChunkCoordinates ca; public int sleepTicks; // CraftBukkit - private -> public - public float ca; public float cb; + public float cc; private ChunkCoordinates c; private boolean d; private ChunkCoordinates e; @@ -56,8 +56,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen public float exp; private ItemStack f; private int g; - protected float cg = 0.1F; - protected float ch = 0.02F; + protected float ch = 0.1F; + protected float ci = 0.02F; private int h = 0; public EntityFishingHook hookedFish = null; @@ -69,8 +69,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen ChunkCoordinates chunkcoordinates = world.getSpawn(); this.setPositionRotation((double) chunkcoordinates.x + 0.5D, (double) (chunkcoordinates.y + 1), (double) chunkcoordinates.z + 0.5D, 0.0F, 0.0F); - this.aI = "humanoid"; - this.aH = 180.0F; + this.aJ = "humanoid"; + this.aI = 180.0F; this.maxFireTicks = 20; this.texture = "/mob/char.png"; } @@ -107,7 +107,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } public boolean bh() { - return this.bM() && Item.byId[this.f.id].d_(this.f) == EnumAnimation.d; + return this.bM() && Item.byId[this.f.id].b_(this.f) == EnumAnimation.d; } public void j_() { @@ -127,8 +127,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } } - if (this.bR > 0) { - --this.bR; + if (this.bS > 0) { + --this.bS; } if (this.isSleeping()) { @@ -161,41 +161,41 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen this.extinguish(); } - this.bS = this.bV; this.bT = this.bW; this.bU = this.bX; - double d0 = this.locX - this.bV; - double d1 = this.locY - this.bW; - double d2 = this.locZ - this.bX; + this.bV = this.bY; + double d0 = this.locX - this.bW; + double d1 = this.locY - this.bX; + double d2 = this.locZ - this.bY; double d3 = 10.0D; if (d0 > d3) { - this.bS = this.bV = this.locX; + this.bT = this.bW = this.locX; } if (d2 > d3) { - this.bU = this.bX = this.locZ; + this.bV = this.bY = this.locZ; } if (d1 > d3) { - this.bT = this.bW = this.locY; + this.bU = this.bX = this.locY; } if (d0 < -d3) { - this.bS = this.bV = this.locX; + this.bT = this.bW = this.locX; } if (d2 < -d3) { - this.bU = this.bX = this.locZ; + this.bV = this.bY = this.locZ; } if (d1 < -d3) { - this.bT = this.bW = this.locY; + this.bU = this.bX = this.locY; } - this.bV += d0 * 0.25D; - this.bX += d2 * 0.25D; - this.bW += d1 * 0.25D; + this.bW += d0 * 0.25D; + this.bY += d2 * 0.25D; + this.bX += d1 * 0.25D; this.a(StatisticList.k, 1); if (this.vehicle == null) { this.e = null; @@ -214,7 +214,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return 10; } - protected void makeSound(String s, float f, float f1) { + public void makeSound(String s, float f, float f1) { this.world.a(this, s, f, f1); } @@ -275,13 +275,13 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen float f1 = this.pitch; super.U(); - this.bO = this.bP; - this.bP = 0.0F; + this.bP = this.bQ; + this.bQ = 0.0F; this.k(this.locX - d0, this.locY - d1, this.locZ - d2); if (this.vehicle instanceof EntityPig) { this.pitch = f1; this.yaw = f; - this.aw = ((EntityPig) this.vehicle).aw; + this.ax = ((EntityPig) this.vehicle).ax; } } @@ -290,8 +290,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } public void c() { - if (this.bM > 0) { - --this.bM; + if (this.bN > 0) { + --this.bN; } if (this.world.difficulty == 0 && this.getHealth() < this.getMaxHealth() && this.ticksLived % 20 * 12 == 0) { @@ -300,13 +300,13 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } this.inventory.j(); - this.bO = this.bP; + this.bP = this.bQ; super.c(); - this.aM = this.abilities.b(); - this.aN = this.ch; + this.aN = this.abilities.b(); + this.aO = this.ci; if (this.isSprinting()) { - this.aM = (float) ((double) this.aM + (double) this.abilities.b() * 0.3D); - this.aN = (float) ((double) this.aN + (double) this.ch * 0.3D); + this.aN = (float) ((double) this.aN + (double) this.abilities.b() * 0.3D); + this.aO = (float) ((double) this.aO + (double) this.ci * 0.3D); } float f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ); @@ -325,8 +325,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen f1 = 0.0F; } - this.bP += (f - this.bP) * 0.4F; - this.ba += (f1 - this.ba) * 0.8F; + this.bQ += (f - this.bQ) * 0.4F; + this.bb += (f1 - this.bb) * 0.8F; if (this.getHealth() > 0) { List list = this.world.getEntities(this, this.boundingBox.grow(1.0D, 0.5D, 1.0D)); @@ -374,8 +374,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } if (damagesource != null) { - this.motX = (double) (-MathHelper.cos((this.aW + this.yaw) * 3.1415927F / 180.0F) * 0.1F); - this.motZ = (double) (-MathHelper.sin((this.aW + this.yaw) * 3.1415927F / 180.0F) * 0.1F); + this.motX = (double) (-MathHelper.cos((this.aX + this.yaw) * 3.1415927F / 180.0F) * 0.1F); + this.motZ = (double) (-MathHelper.sin((this.aX + this.yaw) * 3.1415927F / 180.0F) * 0.1F); } else { this.motX = this.motZ = 0.0D; } @@ -393,8 +393,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } } - public EntityItem bR() { - return this.a(this.inventory.splitStack(this.inventory.itemInHandIndex, 1), false); + public EntityItem f(boolean flag) { + return this.a(this.inventory.splitStack(this.inventory.itemInHandIndex, flag && this.inventory.getItemInHand() != null ? this.inventory.getItemInHand().count : 1), false); } public EntityItem drop(ItemStack itemstack) { @@ -457,9 +457,16 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen public float a(Block block) { float f = this.inventory.a(block); int i = EnchantmentManager.getDigSpeedEnchantmentLevel(this); + ItemStack itemstack = this.inventory.getItemInHand(); - if (i > 0 && this.inventory.b(block)) { - f += (float) (i * i + 1); + if (i > 0 && itemstack != null) { + float f1 = (float) (i * i + 1); + + if (!itemstack.b(block) && f <= 1.0F) { + f += f1 * 0.08F; + } else { + f += f1; + } } if (this.hasEffect(MobEffectList.FASTER_DIG)) { @@ -490,6 +497,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen NBTTagList nbttaglist = nbttagcompound.getList("Inventory"); this.inventory.b(nbttaglist); + this.inventory.itemInHandIndex = nbttagcompound.getInt("SelectedItemSlot"); this.sleeping = nbttagcompound.getBoolean("Sleeping"); this.sleepTicks = nbttagcompound.getShort("SleepTimer"); this.exp = nbttagcompound.getFloat("XpP"); @@ -497,7 +505,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen this.expTotal = nbttagcompound.getInt("XpTotal"); this.setScore(nbttagcompound.getInt("Score")); if (this.sleeping) { - this.bZ = new ChunkCoordinates(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)); + this.ca = new ChunkCoordinates(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)); this.a(true, true, false); } @@ -525,6 +533,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen public void b(NBTTagCompound nbttagcompound) { super.b(nbttagcompound); nbttagcompound.set("Inventory", this.inventory.a(new NBTTagList())); + nbttagcompound.setInt("SelectedItemSlot", this.inventory.itemInHandIndex); nbttagcompound.setBoolean("Sleeping", this.sleeping); nbttagcompound.setShort("SleepTimer", (short) this.sleepTicks); nbttagcompound.setFloat("XpP", this.exp); @@ -566,7 +575,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } else if (this.abilities.isInvulnerable && !damagesource.ignoresInvulnerability()) { return false; } else { - this.bA = 0; + this.bB = 0; if (this.getHealth() <= 0) { return false; } else { @@ -622,10 +631,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen if (k > 0 && k <= 20) { int l = 25 - k; - int i1 = j * l + this.aS; + int i1 = j * l + this.aT; j = i1 / 25; - this.aS = i1 % 25; + this.aT = i1 % 25; } return j; @@ -670,7 +679,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return this.inventory.k(); } - public float bS() { + public float bR() { int i = 0; ItemStack[] aitemstack = this.inventory.armor; int j = aitemstack.length; @@ -717,7 +726,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen if (entity.a(this)) { return true; } else { - ItemStack itemstack = this.bT(); + ItemStack itemstack = this.bS(); if (itemstack != null && entity instanceof EntityLiving) { if (this.abilities.canInstantlyBuild) { @@ -727,7 +736,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen if (itemstack.a((EntityLiving) entity)) { // CraftBukkit - bypass infinite items; <= 0 -> == 0 if (itemstack.count == 0 && !this.abilities.canInstantlyBuild) { - this.bU(); + this.bT(); } return true; @@ -738,11 +747,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } } - public ItemStack bT() { + public ItemStack bS() { return this.inventory.getItemInHand(); } - public void bU() { + public void bT() { this.inventory.setItem(this.inventory.itemInHandIndex, (ItemStack) null); } @@ -823,15 +832,18 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } this.l(entity); + if (entity instanceof EntityLiving) { + EnchantmentThorns.a(this, (EntityLiving) entity, this.random); + } } - ItemStack itemstack = this.bT(); + ItemStack itemstack = this.bS(); if (itemstack != null && entity instanceof EntityLiving) { itemstack.a((EntityLiving) entity, this); // CraftBukkit - bypass infinite items; <= 0 -> == 0 if (itemstack.count == 0) { - this.bU(); + this.bT(); } } @@ -877,7 +889,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return !this.sleeping && super.inBlock(); } - public boolean bW() { + public boolean bV() { return false; } @@ -955,7 +967,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen this.sleeping = true; this.sleepTicks = 0; - this.bZ = new ChunkCoordinates(i, j, k); + this.ca = new ChunkCoordinates(i, j, k); this.motX = this.motZ = this.motY = 0.0D; if (!this.world.isStatic) { this.world.everyoneSleeping(); @@ -965,31 +977,31 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } private void x(int i) { - this.ca = 0.0F; this.cb = 0.0F; + this.cc = 0.0F; switch (i) { case 0: - this.cb = -1.8F; + this.cc = -1.8F; break; case 1: - this.ca = 1.8F; - break; - - case 2: this.cb = 1.8F; break; + case 2: + this.cc = 1.8F; + break; + case 3: - this.ca = -1.8F; + this.cb = -1.8F; } } public void a(boolean flag, boolean flag1, boolean flag2) { this.a(0.6F, 1.8F); this.e_(); - ChunkCoordinates chunkcoordinates = this.bZ; - ChunkCoordinates chunkcoordinates1 = this.bZ; + ChunkCoordinates chunkcoordinates = this.ca; + ChunkCoordinates chunkcoordinates1 = this.ca; if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) == Block.BED.id) { BlockBed.a(this.world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, false); @@ -1029,12 +1041,12 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen } if (flag2) { - this.setRespawnPosition(this.bZ, false); + this.setRespawnPosition(this.ca, false); } } private boolean j() { - return this.world.getTypeId(this.bZ.x, this.bZ.y, this.bZ.z) == Block.BED.id; + return this.world.getTypeId(this.ca.x, this.ca.y, this.ca.z) == Block.BED.id; } public static ChunkCoordinates getBed(World world, ChunkCoordinates chunkcoordinates, boolean flag) { @@ -1121,12 +1133,12 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen if (this.abilities.isFlying && this.vehicle == null) { double d3 = this.motY; - float f2 = this.aN; + float f2 = this.aO; - this.aN = this.abilities.a(); + this.aO = this.abilities.a(); super.e(f, f1); this.motY = d3 * 0.6D; - this.aN = f2; + this.aO = f2; } else { super.e(f, f1); } @@ -1244,12 +1256,14 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen this.expLevel += i; if (this.expLevel < 0) { this.expLevel = 0; + this.exp = 0.0F; + this.expTotal = 0; } if (i > 0 && this.expLevel % 5 == 0 && (float) this.h < (float) this.ticksLived - 100.0F) { float f = this.expLevel > 30 ? 1.0F : (float) this.expLevel / 30.0F; - this.makeSound("random.levelup", f * 0.75F, 1.0F); + this.world.makeSound(this, "random.levelup", f * 0.75F, 1.0F); this.h = this.ticksLived; } } @@ -1270,11 +1284,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return this.foodData; } - public boolean f(boolean flag) { + public boolean g(boolean flag) { return (flag || this.foodData.c()) && !this.abilities.isInvulnerable; } - public boolean ce() { + public boolean cd() { return this.getHealth() > 0 && this.getHealth() < this.getMaxHealth(); } @@ -1301,8 +1315,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return true; } - if (this.bT() != null) { - ItemStack itemstack = this.bT(); + if (this.bS() != null) { + ItemStack itemstack = this.bS(); if (itemstack.b(block) || itemstack.a(block) > 1.0F) { return true; @@ -1345,7 +1359,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen this.expTotal = entityhuman.expTotal; this.exp = entityhuman.exp; this.setScore(entityhuman.getScore()); - this.aq = entityhuman.aq; + this.ar = entityhuman.ar; } else if (this.world.getGameRules().getBoolean("keepInventory")) { this.inventory.b(entityhuman.inventory); this.expLevel = entityhuman.expLevel; diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java index a1dca1628d..c877686769 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -6,46 +6,47 @@ import org.bukkit.event.player.PlayerPickupItemEvent; // CraftBukkit public class EntityItem extends Entity { - public ItemStack itemStack; - public int age = 0; + public int age; public int pickupDelay; - private int e = 5; - public float d = (float) (Math.random() * 3.141592653589793D * 2.0D); + private int d; + public float c; private int lastTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit - public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) { + public EntityItem(World world, double d0, double d1, double d2) { super(world); + this.age = 0; + this.d = 5; + this.c = (float) (Math.random() * 3.141592653589793D * 2.0D); this.a(0.25F, 0.25F); this.height = this.length / 2.0F; this.setPosition(d0, d1, d2); - this.itemStack = itemstack; - - // CraftBukkit start - infinite item fix & nullcheck - if (this.itemStack == null) { - throw new IllegalArgumentException("Can't create an EntityItem for a null item"); - } - if (this.itemStack.count <= -1) { - this.itemStack.count = 1; - } - // CraftBukkit end - this.yaw = (float) (Math.random() * 360.0D); this.motX = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D)); this.motY = 0.20000000298023224D; this.motZ = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D)); } + public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) { + this(world, d0, d1, d2); + this.setItemStack(itemstack); + } + protected boolean f_() { return false; } public EntityItem(World world) { super(world); + this.age = 0; + this.d = 5; + this.c = (float) (Math.random() * 3.141592653589793D * 2.0D); this.a(0.25F, 0.25F); this.height = this.length / 2.0F; } - protected void a() {} + protected void a() { + this.getDataWatcher().a(10, 5); + } public void j_() { super.j_(); @@ -63,7 +64,7 @@ public class EntityItem extends Entity { this.move(this.motX, this.motY, this.motZ); boolean flag = (int) this.lastX != (int) this.locX || (int) this.lastY != (int) this.locY || (int) this.lastZ != (int) this.locZ; - if (flag) { + if (flag || this.ticksLived % 25 == 0) { if (this.world.getMaterial(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) == Material.LAVA) { this.motY = 0.20000000298023224D; this.motX = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F); @@ -72,7 +73,7 @@ public class EntityItem extends Entity { } if (!this.world.isStatic) { - this.d(); + this.g(); } } @@ -106,7 +107,7 @@ public class EntityItem extends Entity { } } - private void d() { + private void g() { Iterator iterator = this.world.a(EntityItem.class, this.boundingBox.grow(0.5D, 0.0D, 0.5D)).iterator(); while (iterator.hasNext()) { @@ -120,26 +121,26 @@ public class EntityItem extends Entity { if (entityitem == this) { return false; } else if (entityitem.isAlive() && this.isAlive()) { - if (entityitem.itemStack.getItem() != this.itemStack.getItem()) { + ItemStack itemstack = this.getItemStack(); + ItemStack itemstack1 = entityitem.getItemStack(); + + if (itemstack1.getItem() != itemstack.getItem()) { return false; - } else if (entityitem.itemStack.hasTag() ^ this.itemStack.hasTag()) { + } else if (itemstack1.hasTag() ^ itemstack.hasTag()) { return false; - } else if (entityitem.itemStack.hasTag() && !entityitem.itemStack.getTag().equals(this.itemStack.getTag())) { + } else if (itemstack1.hasTag() && !itemstack1.getTag().equals(itemstack.getTag())) { return false; - } else if (entityitem.itemStack.getItem().l() && entityitem.itemStack.getData() != this.itemStack.getData()) { + } else if (itemstack1.getItem().l() && itemstack1.getData() != itemstack.getData()) { return false; - } else if (entityitem.itemStack.count < this.itemStack.count) { + } else if (itemstack1.count < itemstack.count) { return entityitem.a(this); - } else if (entityitem.itemStack.count + this.itemStack.count > entityitem.itemStack.getMaxStackSize()) { + } else if (itemstack1.count + itemstack.count > itemstack1.getMaxStackSize()) { return false; - // CraftBukkit start - don't merge items with enchantments - } else if (entityitem.itemStack.hasEnchantments() || this.itemStack.hasEnchantments()) { - return false; - // CraftBukkit end } else { - entityitem.itemStack.count += this.itemStack.count; + itemstack1.count += itemstack.count; entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay); entityitem.age = Math.min(entityitem.age, this.age); + entityitem.setItemStack(itemstack1); this.die(); return true; } @@ -163,10 +164,12 @@ public class EntityItem extends Entity { public boolean damageEntity(DamageSource damagesource, int i) { if (this.isInvulnerable()) { return false; + } else if (this.getItemStack() != null && this.getItemStack().id == Item.NETHER_STAR.id && damagesource == DamageSource.EXPLOSION) { + return false; } else { this.K(); - this.e -= i; - if (this.e <= 0) { + this.d -= i; + if (this.d <= 0) { this.die(); } @@ -175,38 +178,39 @@ public class EntityItem extends Entity { } public void b(NBTTagCompound nbttagcompound) { - nbttagcompound.setShort("Health", (short) ((byte) this.e)); + nbttagcompound.setShort("Health", (short) ((byte) this.d)); nbttagcompound.setShort("Age", (short) this.age); - if (this.itemStack != null) { - nbttagcompound.setCompound("Item", this.itemStack.save(new NBTTagCompound())); + if (this.getItemStack() != null) { + nbttagcompound.setCompound("Item", this.getItemStack().save(new NBTTagCompound())); } } public void a(NBTTagCompound nbttagcompound) { - this.e = nbttagcompound.getShort("Health") & 255; + this.d = nbttagcompound.getShort("Health") & 255; this.age = nbttagcompound.getShort("Age"); NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Item"); - this.itemStack = ItemStack.a(nbttagcompound1); - if (this.itemStack == null) { + this.setItemStack(ItemStack.a(nbttagcompound1)); + if (this.getItemStack() == null) { this.die(); } } public void c_(EntityHuman entityhuman) { - if ((!this.world.isStatic) && (this.itemStack != null)) { // CraftBukkit - nullcheck - int i = this.itemStack.count; + if (!this.world.isStatic) { + ItemStack itemstack = this.getItemStack(); + int i = itemstack.count; // CraftBukkit start - int canHold = entityhuman.inventory.canHold(this.itemStack); - int remaining = this.itemStack.count - canHold; + int canHold = entityhuman.inventory.canHold(itemstack); + int remaining = itemstack.count - canHold; if (this.pickupDelay <= 0 && canHold > 0) { - this.itemStack.count = canHold; + itemstack.count = canHold; PlayerPickupItemEvent event = new PlayerPickupItemEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), (org.bukkit.entity.Item) this.getBukkitEntity(), remaining); event.setCancelled(!entityhuman.canPickUpLoot); this.world.getServer().getPluginManager().callEvent(event); - this.itemStack.count = canHold + remaining; + itemstack.count = canHold + remaining; if (event.isCancelled()) { return; @@ -217,26 +221,26 @@ public class EntityItem extends Entity { } // CraftBukkit end - if (this.pickupDelay == 0 && entityhuman.inventory.pickup(this.itemStack)) { - if (this.itemStack.id == Block.LOG.id) { + if (this.pickupDelay == 0 && entityhuman.inventory.pickup(itemstack)) { + if (itemstack.id == Block.LOG.id) { entityhuman.a((Statistic) AchievementList.g); } - if (this.itemStack.id == Item.LEATHER.id) { + if (itemstack.id == Item.LEATHER.id) { entityhuman.a((Statistic) AchievementList.t); } - if (this.itemStack.id == Item.DIAMOND.id) { + if (itemstack.id == Item.DIAMOND.id) { entityhuman.a((Statistic) AchievementList.w); } - if (this.itemStack.id == Item.BLAZE_ROD.id) { + if (itemstack.id == Item.BLAZE_ROD.id) { entityhuman.a((Statistic) AchievementList.z); } this.makeSound("random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F); entityhuman.receive(this, i); - if (this.itemStack.count <= 0) { + if (itemstack.count <= 0) { this.die(); } } @@ -244,8 +248,7 @@ public class EntityItem extends Entity { } public String getLocalizedName() { - if (this.itemStack == null) return LocaleI18n.get("item.unknown"); // CraftBukkit - nullcheck - return LocaleI18n.get("item." + this.itemStack.a()); + return LocaleI18n.get("item." + this.getItemStack().a()); } public boolean aq() { @@ -255,7 +258,23 @@ public class EntityItem extends Entity { public void b(int i) { super.b(i); if (!this.world.isStatic) { - this.d(); + this.g(); } } + + public ItemStack getItemStack() { + ItemStack itemstack = this.getDataWatcher().f(10); + + if (itemstack == null) { + System.out.println("Item entity " + this.id + " has no item?!"); + return new ItemStack(Block.STONE); + } else { + return itemstack; + } + } + + public void setItemStack(ItemStack itemstack) { + this.getDataWatcher().watch(10, itemstack); + this.getDataWatcher().h(10); + } } diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java index 3f7d950282..88b0d84a8f 100644 --- a/src/main/java/net/minecraft/server/EntityLargeFireball.java +++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java @@ -4,6 +4,8 @@ import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit public class EntityLargeFireball extends EntityFireball { + public int e = 1; + public EntityLargeFireball(World world) { super(world); } diff --git a/src/main/java/net/minecraft/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java index a8d100507f..606ae347db 100644 --- a/src/main/java/net/minecraft/server/EntityLightning.java +++ b/src/main/java/net/minecraft/server/EntityLightning.java @@ -104,17 +104,19 @@ public class EntityLightning extends EntityWeather { } } - if (!this.world.isStatic && this.lifeTicks >= 0 && !this.isEffect) { // CraftBukkit - double d0 = 3.0D; - List list = this.world.getEntities(this, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + 6.0D + d0, this.locZ + d0)); + if (this.lifeTicks >= 0 && !this.isEffect) { // CraftBukkit - add !this.isEffect + if (this.world.isStatic) { + this.world.q = 2; + } else { + double d0 = 3.0D; + List list = this.world.getEntities(this, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + 6.0D + d0, this.locZ + d0)); - for (int l = 0; l < list.size(); ++l) { - Entity entity = (Entity) list.get(l); + for (int l = 0; l < list.size(); ++l) { + Entity entity = (Entity) list.get(l); - entity.a(this); + entity.a(this); + } } - - this.world.r = 2; } } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index 08ffc62c9e..bae495a235 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -15,57 +15,57 @@ import org.bukkit.event.entity.EntityRegainHealthEvent; public abstract class EntityLiving extends Entity { - private static final float[] b = new float[] { 0.0F, 0.0F, 0.005F, 0.01F}; - private static final float[] c = new float[] { 0.0F, 0.0F, 0.05F, 0.1F}; - private static final float[] d = new float[] { 0.0F, 0.0F, 0.005F, 0.02F}; - public static final float[] as = new float[] { 0.0F, 0.01F, 0.07F, 0.2F}; + private static final float[] b = new float[] { 0.0F, 0.0F, 0.05F, 0.1F}; + private static final float[] c = new float[] { 0.0F, 0.0F, 0.05F, 0.2F}; + private static final float[] d = new float[] { 0.0F, 0.0F, 0.05F, 0.02F}; + public static final float[] at = new float[] { 0.0F, 0.1F, 0.15F, 0.45F}; public int maxNoDamageTicks = 20; - public float au; public float av; - public float aw = 0.0F; + public float aw; public float ax = 0.0F; public float ay = 0.0F; public float az = 0.0F; - protected float aA; + public float aA = 0.0F; protected float aB; protected float aC; protected float aD; - protected boolean aE = true; + protected float aE; + protected boolean aF = true; protected String texture = "/mob/char.png"; - protected boolean aG = true; - protected float aH = 0.0F; - protected String aI = null; - protected float aJ = 1.0F; - protected int aK = 0; - protected float aL = 0.0F; - public float aM = 0.1F; - public float aN = 0.02F; - public float aO; + protected boolean aH = true; + protected float aI = 0.0F; + protected String aJ = null; + protected float aK = 1.0F; + protected int aL = 0; + protected float aM = 0.0F; + public float aN = 0.1F; + public float aO = 0.02F; public float aP; + public float aQ; protected int health = this.getMaxHealth(); - public int aR; - protected int aS; - public int aT; + public int aS; + protected int aT; + public int aU; public int hurtTicks; - public int aV; - public float aW = 0.0F; + public int aW; + public float aX = 0.0F; public int deathTicks = 0; public int attackTicks = 0; - public float aZ; public float ba; - protected boolean bb = false; - protected int bc; - public int bd = -1; - public float be = (float) (Math.random() * 0.8999999761581421D + 0.10000000149011612D); - public float bf; + public float bb; + protected boolean bc = false; + protected int bd; + public int be = -1; + public float bf = (float) (Math.random() * 0.8999999761581421D + 0.10000000149011612D); public float bg; public float bh; + public float bi; public EntityHuman killer = null; // CraftBukkit - protected -> public protected int lastDamageByPlayerTime = 0; public EntityLiving lastDamager = null; // CraftBukkit - private -> public private int f = 0; private EntityLiving g = null; - public int bk = 0; + public int bl = 0; public HashMap effects = new HashMap(); // CraftBukkit - protected -> public public boolean updateEffects = true; // CraftBukkit - private -> public private int i; @@ -76,36 +76,36 @@ public abstract class EntityLiving extends Entity { private Navigation navigation; protected final PathfinderGoalSelector goalSelector; protected final PathfinderGoalSelector targetSelector; - private EntityLiving bM; - private EntitySenses bN; - private float bO; - private ChunkCoordinates bP = new ChunkCoordinates(0, 0, 0); - private float bQ = -1.0F; + private EntityLiving bN; + private EntitySenses bO; + private float bP; + private ChunkCoordinates bQ = new ChunkCoordinates(0, 0, 0); + private float bR = -1.0F; private ItemStack[] equipment = new ItemStack[5]; public float[] dropChances = new float[5]; // CraftBukkit - protected -> public - private ItemStack[] bS = new ItemStack[5]; - public boolean bp = false; - public int bq = 0; + private ItemStack[] bT = new ItemStack[5]; + public boolean bq = false; + public int br = 0; public boolean canPickUpLoot = false; // CraftBukkit - protected -> public public boolean persistent = !this.bj(); // CraftBukkit - private -> public, change value - protected int bs; - protected double bt; + protected int bt; protected double bu; protected double bv; protected double bw; protected double bx; - float by = 0.0F; + protected double by; + float bz = 0.0F; public int lastDamage = 0; // CraftBukkit - protected -> public - protected int bA = 0; - protected float bB; + protected int bB = 0; protected float bC; protected float bD; - protected boolean bE = false; - protected float bF = 0.0F; - protected float bG = 0.7F; - private int bU = 0; - private Entity bV; - protected int bH = 0; + protected float bE; + protected boolean bF = false; + protected float bG = 0.0F; + protected float bH = 0.7F; + private int bV = 0; + private Entity bW; + protected int bI = 0; public int expToDrop = 0; // CraftBukkit public int maxAirTicks = 300; // CraftBukkit @@ -119,12 +119,12 @@ public abstract class EntityLiving extends Entity { this.jumpController = new ControllerJump(this); this.senses = new EntityAIBodyControl(this); this.navigation = new Navigation(this, world, 16.0F); - this.bN = new EntitySenses(this); - this.av = (float) (Math.random() + 1.0D) * 0.01F; + this.bO = new EntitySenses(this); + this.aw = (float) (Math.random() + 1.0D) * 0.01F; this.setPosition(this.locX, this.locY, this.locZ); - this.au = (float) Math.random() * 12398.0F; + this.av = (float) Math.random() * 12398.0F; this.yaw = (float) (Math.random() * 3.1415927410125732D * 2.0D); - this.ay = this.yaw; + this.az = this.yaw; for (int i = 0; i < this.dropChances.length; ++i) { this.dropChances[i] = 0.05F; @@ -150,7 +150,7 @@ public abstract class EntityLiving extends Entity { } public EntitySenses aA() { - return this.bN; + return this.bO; } public Random aB() { @@ -172,19 +172,19 @@ public abstract class EntityLiving extends Entity { } public int aE() { - return this.bA; + return this.bB; } public float ap() { - return this.ay; + return this.az; } public float aF() { - return this.bO; + return this.bP; } public void e(float f) { - this.bO = f; + this.bP = f; this.f(f); } @@ -194,11 +194,11 @@ public abstract class EntityLiving extends Entity { } public EntityLiving aG() { - return this.bM; + return this.bN; } public void b(EntityLiving entityliving) { - this.bM = entityliving; + this.bN = entityliving; } public boolean a(Class oclass) { @@ -239,28 +239,28 @@ public abstract class EntityLiving extends Entity { } public boolean e(int i, int j, int k) { - return this.bQ == -1.0F ? true : this.bP.e(i, j, k) < this.bQ * this.bQ; + return this.bR == -1.0F ? true : this.bQ.e(i, j, k) < this.bR * this.bR; } public void b(int i, int j, int k, int l) { - this.bP.b(i, j, k); - this.bQ = (float) l; + this.bQ.b(i, j, k); + this.bR = (float) l; } public ChunkCoordinates aJ() { - return this.bP; - } - - public float aK() { return this.bQ; } + public float aK() { + return this.bR; + } + public void aL() { - this.bQ = -1.0F; + this.bR = -1.0F; } public boolean aM() { - return this.bQ != -1.0F; + return this.bR != -1.0F; } public void c(EntityLiving entityliving) { @@ -303,11 +303,11 @@ public abstract class EntityLiving extends Entity { } public void y() { - this.aO = this.aP; + this.aP = this.aQ; super.y(); this.world.methodProfiler.a("mobBaseTick"); - if (this.isAlive() && this.random.nextInt(1000) < this.aT++) { - this.aT = -this.aN(); + if (this.isAlive() && this.random.nextInt(1000) < this.aU++) { + this.aU = -this.aN(); this.aO(); } @@ -327,7 +327,9 @@ public abstract class EntityLiving extends Entity { this.extinguish(); } - if (this.isAlive() && this.a(Material.WATER) && !this.bc() && !this.effects.containsKey(Integer.valueOf(MobEffectList.WATER_BREATHING.id))) { + boolean flag = this instanceof EntityHuman && ((EntityHuman) this).abilities.isInvulnerable; + + if (this.isAlive() && this.a(Material.WATER) && !this.bc() && !this.effects.containsKey(Integer.valueOf(MobEffectList.WATER_BREATHING.id)) && !flag) { this.setAirTicks(this.g(this.getAirTicks())); if (this.getAirTicks() == -20) { this.setAirTicks(0); @@ -360,7 +362,7 @@ public abstract class EntityLiving extends Entity { // CraftBukkit end } - this.aZ = this.ba; + this.ba = this.bb; if (this.attackTicks > 0) { --this.attackTicks; } @@ -398,9 +400,9 @@ public abstract class EntityLiving extends Entity { } this.bx(); - this.aD = this.aC; - this.ax = this.aw; - this.az = this.ay; + this.aE = this.aD; + this.ay = this.ax; + this.aA = this.az; this.lastYaw = this.yaw; this.lastPitch = this.pitch; this.world.methodProfiler.b(); @@ -453,7 +455,20 @@ public abstract class EntityLiving extends Entity { } protected int getExpValue(EntityHuman entityhuman) { - return this.bc; + if (this.bd > 0) { + int i = this.bd; + ItemStack[] aitemstack = this.getEquipment(); + + for (int j = 0; j < aitemstack.length; ++j) { + if (aitemstack[j] != null && this.dropChances[j] <= 1.0F) { + i += 1 + this.random.nextInt(3); + } + } + + return i; + } else { + return this.bd; + } } protected boolean alwaysGivesExp() { @@ -473,8 +488,8 @@ public abstract class EntityLiving extends Entity { public void U() { super.U(); - this.aA = this.aB; - this.aB = 0.0F; + this.aB = this.aC; + this.aC = 0.0F; this.fallDistance = 0.0F; } @@ -486,20 +501,20 @@ public abstract class EntityLiving extends Entity { for (i = 0; i < 5; ++i) { ItemStack itemstack = this.getEquipment(i); - if (!ItemStack.matches(itemstack, this.bS[i])) { + if (!ItemStack.matches(itemstack, this.bT[i])) { ((WorldServer) this.world).getTracker().a((Entity) this, (Packet) (new Packet5EntityEquipment(this.id, i, itemstack))); - this.bS[i] = itemstack == null ? null : itemstack.cloneItemStack(); + this.bT[i] = itemstack == null ? null : itemstack.cloneItemStack(); } } i = this.bJ(); if (i > 0) { - if (this.bk <= 0) { - this.bk = 20 * (30 - i); + if (this.bl <= 0) { + this.bl = 20 * (30 - i); } - --this.bk; - if (this.bk <= 0) { + --this.bl; + if (this.bl <= 0) { this.r(i - 1); } } @@ -509,10 +524,10 @@ public abstract class EntityLiving extends Entity { double d0 = this.locX - this.lastX; double d1 = this.locZ - this.lastZ; float f = (float) (d0 * d0 + d1 * d1); - float f1 = this.aw; + float f1 = this.ax; float f2 = 0.0F; - this.aA = this.aB; + this.aB = this.aC; float f3 = 0.0F; if (f > 0.0025000002F) { @@ -522,7 +537,7 @@ public abstract class EntityLiving extends Entity { f1 = (float) org.bukkit.craftbukkit.TrigMath.atan2(d1, d0) * 180.0F / 3.1415927F - 90.0F; } - if (this.aP > 0.0F) { + if (this.aQ > 0.0F) { f1 = this.yaw; } @@ -530,15 +545,15 @@ public abstract class EntityLiving extends Entity { f3 = 0.0F; } - this.aB += (f3 - this.aB) * 0.3F; + this.aC += (f3 - this.aC) * 0.3F; this.world.methodProfiler.a("headTurn"); if (this.be()) { this.senses.a(); } else { - float f4 = MathHelper.g(f1 - this.aw); + float f4 = MathHelper.g(f1 - this.ax); - this.aw += f4 * 0.3F; - float f5 = MathHelper.g(this.yaw - this.aw); + this.ax += f4 * 0.3F; + float f5 = MathHelper.g(this.yaw - this.ax); boolean flag = f5 < -90.0F || f5 >= 90.0F; if (f5 < -75.0F) { @@ -549,9 +564,9 @@ public abstract class EntityLiving extends Entity { f5 = 75.0F; } - this.aw = this.yaw - f5; + this.ax = this.yaw - f5; if (f5 * f5 > 2500.0F) { - this.aw += f5 * 0.2F; + this.ax += f5 * 0.2F; } if (flag) { @@ -570,12 +585,12 @@ public abstract class EntityLiving extends Entity { this.lastYaw += 360.0F; } - while (this.aw - this.ax < -180.0F) { - this.ax -= 360.0F; + while (this.ax - this.ay < -180.0F) { + this.ay -= 360.0F; } - while (this.aw - this.ax >= 180.0F) { - this.ax += 360.0F; + while (this.ax - this.ay >= 180.0F) { + this.ay += 360.0F; } while (this.pitch - this.lastPitch < -180.0F) { @@ -586,16 +601,16 @@ public abstract class EntityLiving extends Entity { this.lastPitch += 360.0F; } - while (this.ay - this.az < -180.0F) { - this.az -= 360.0F; + while (this.az - this.aA < -180.0F) { + this.aA -= 360.0F; } - while (this.ay - this.az >= 180.0F) { - this.az += 360.0F; + while (this.az - this.aA >= 180.0F) { + this.aA += 360.0F; } this.world.methodProfiler.b(); - this.aC += f2; + this.aD += f2; } // CraftBukkit start - delegate so we can handle providing a reason for health being regained @@ -640,17 +655,18 @@ public abstract class EntityLiving extends Entity { } else if (this.world.isStatic) { return false; } else { - this.bA = 0; + this.bB = 0; if (this.health <= 0) { return false; } else if (damagesource.k() && this.hasEffect(MobEffectList.FIRE_RESISTANCE)) { return false; } else { if ((damagesource == DamageSource.ANVIL || damagesource == DamageSource.FALLING_BLOCK) && this.getEquipment(4) != null) { - i = (int) ((float) i * 0.55F); + this.getEquipment(4).damage(i * 4 + this.random.nextInt(i * 2), this); + i = (int) ((float) i * 0.75F); } - this.bg = 1.5F; + this.bh = 1.5F; boolean flag = true; // CraftBukkit start @@ -673,13 +689,13 @@ public abstract class EntityLiving extends Entity { flag = false; } else { this.lastDamage = i; - this.aR = this.health; + this.aS = this.health; this.noDamageTicks = this.maxNoDamageTicks; this.d(damagesource, i); - this.hurtTicks = this.aV = 10; + this.hurtTicks = this.aW = 10; } - this.aW = 0.0F; + this.aX = 0.0F; Entity entity = damagesource.getEntity(); if (entity != null) { @@ -715,10 +731,10 @@ public abstract class EntityLiving extends Entity { d0 = (Math.random() - Math.random()) * 0.01D; } - this.aW = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - this.yaw; + this.aX = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - this.yaw; this.a(entity, i, d0, d1); } else { - this.aW = (float) ((int) (Math.random() * 2.0D) * 180); + this.aX = (float) ((int) (Math.random() * 2.0D) * 180); } } @@ -764,11 +780,11 @@ public abstract class EntityLiving extends Entity { protected int b(DamageSource damagesource, int i) { if (!damagesource.ignoresArmor()) { int j = 25 - this.aW(); - int k = i * j + this.aS; + int k = i * j + this.aT; this.k(i); i = k / 25; - this.aS = k % 25; + this.aT = k % 25; } return i; @@ -778,10 +794,10 @@ public abstract class EntityLiving extends Entity { if (this.hasEffect(MobEffectList.RESISTANCE)) { int j = (this.getEffect(MobEffectList.RESISTANCE).getAmplifier() + 1) * 5; int k = 25 - j; - int l = i * k + this.aS; + int l = i * k + this.aT; i = l / 25; - this.aS = l % 25; + this.aT = l % 25; } return i; @@ -830,15 +846,15 @@ public abstract class EntityLiving extends Entity { public void die(DamageSource damagesource) { Entity entity = damagesource.getEntity(); - if (this.aK >= 0 && entity != null) { - entity.c(this, this.aK); + if (this.aL >= 0 && entity != null) { + entity.c(this, this.aL); } if (entity != null) { entity.a(this); } - this.bb = true; + this.bc = true; if (!this.world.isStatic) { int i = 0; @@ -984,12 +1000,12 @@ public abstract class EntityLiving extends Entity { if (this.be()) { f4 = this.aF(); } else { - f4 = this.aM; + f4 = this.aN; } f4 *= f3; } else { - f4 = this.aN; + f4 = this.aO; } this.a(f, f1, f4); @@ -1054,7 +1070,7 @@ public abstract class EntityLiving extends Entity { this.motZ *= (double) f2; } - this.bf = this.bg; + this.bg = this.bh; d0 = this.locX - this.lastX; double d1 = this.locZ - this.lastZ; float f6 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F; @@ -1063,8 +1079,8 @@ public abstract class EntityLiving extends Entity { f6 = 1.0F; } - this.bg += (f6 - this.bg) * 0.4F; - this.bh += this.bg; + this.bh += (f6 - this.bh) * 0.4F; + this.bi += this.bh; } public boolean g_() { @@ -1185,29 +1201,33 @@ public abstract class EntityLiving extends Entity { } public void f(float f) { - this.bC = f; + this.bD = f; } public void e(boolean flag) { - this.bE = flag; + this.bF = flag; } public void c() { - if (this.bU > 0) { - --this.bU; + if (this.bV > 0) { + --this.bV; } - if (this.bs > 0) { - double d0 = this.locX + (this.bt - this.locX) / (double) this.bs; - double d1 = this.locY + (this.bu - this.locY) / (double) this.bs; - double d2 = this.locZ + (this.bv - this.locZ) / (double) this.bs; - double d3 = MathHelper.g(this.bw - (double) this.yaw); + if (this.bt > 0) { + double d0 = this.locX + (this.bu - this.locX) / (double) this.bt; + double d1 = this.locY + (this.bv - this.locY) / (double) this.bt; + double d2 = this.locZ + (this.bw - this.locZ) / (double) this.bt; + double d3 = MathHelper.g(this.bx - (double) this.yaw); - this.yaw = (float) ((double) this.yaw + d3 / (double) this.bs); - this.pitch = (float) ((double) this.pitch + (this.bx - (double) this.pitch) / (double) this.bs); - --this.bs; + this.yaw = (float) ((double) this.yaw + d3 / (double) this.bt); + this.pitch = (float) ((double) this.pitch + (this.by - (double) this.pitch) / (double) this.bt); + --this.bt; this.setPosition(d0, d1, d2); this.b(this.yaw, this.pitch); + } else if (!this.bf()) { + this.motX *= 0.98D; + this.motY *= 0.98D; + this.motZ *= 0.98D; } if (Math.abs(this.motX) < 0.005D) { @@ -1224,10 +1244,10 @@ public abstract class EntityLiving extends Entity { this.world.methodProfiler.a("ai"); if (this.bg()) { - this.bE = false; - this.bB = 0.0F; + this.bF = false; this.bC = 0.0F; this.bD = 0.0F; + this.bE = 0.0F; } else if (this.bf()) { if (this.be()) { this.world.methodProfiler.a("newAi"); @@ -1237,35 +1257,35 @@ public abstract class EntityLiving extends Entity { this.world.methodProfiler.a("oldAi"); this.bn(); this.world.methodProfiler.b(); - this.ay = this.yaw; + this.az = this.yaw; } } this.world.methodProfiler.b(); this.world.methodProfiler.a("jump"); - if (this.bE) { + if (this.bF) { if (!this.H() && !this.J()) { - if (this.onGround && this.bU == 0) { + if (this.onGround && this.bV == 0) { this.bi(); - this.bU = 10; + this.bV = 10; } } else { this.motY += 0.03999999910593033D; } } else { - this.bU = 0; + this.bV = 0; } this.world.methodProfiler.b(); this.world.methodProfiler.a("travel"); - this.bB *= 0.98F; this.bC *= 0.98F; - this.bD *= 0.9F; - float f = this.aM; + this.bD *= 0.98F; + this.bE *= 0.9F; + float f = this.aN; - this.aM *= this.bB(); - this.e(this.bB, this.bC); - this.aM = f; + this.aN *= this.bB(); + this.e(this.bC, this.bD); + this.aN = f; this.world.methodProfiler.b(); this.world.methodProfiler.a("push"); if (!this.world.isStatic) { @@ -1275,15 +1295,15 @@ public abstract class EntityLiving extends Entity { this.world.methodProfiler.b(); this.world.methodProfiler.a("looting"); // CraftBukkit - Don't run mob pickup code on players - if (!this.world.isStatic && !(this instanceof EntityPlayer) && this.canPickUpLoot && !this.bb && this.world.getGameRules().getBoolean("mobGriefing")) { + if (!this.world.isStatic && !(this instanceof EntityPlayer) && this.canPickUpLoot && !this.bc && this.world.getGameRules().getBoolean("mobGriefing")) { List list = this.world.a(EntityItem.class, this.boundingBox.grow(1.0D, 0.0D, 1.0D)); Iterator iterator = list.iterator(); while (iterator.hasNext()) { EntityItem entityitem = (EntityItem) iterator.next(); - if (!entityitem.dead && entityitem.itemStack != null) { - ItemStack itemstack = entityitem.itemStack; + if (!entityitem.dead && entityitem.getItemStack() != null) { + ItemStack itemstack = entityitem.getItemStack(); int i = b(itemstack); if (i > -1) { @@ -1409,26 +1429,26 @@ public abstract class EntityLiving extends Entity { this.die(); } - if (this.bA > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D) { // CraftBukkit - remove this.bj() check + if (this.bB > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D) { // CraftBukkit - remove this.bj() check this.die(); } else if (d3 < 1024.0D) { - this.bA = 0; + this.bB = 0; } } // CraftBukkit start } else { - this.bA = 0; + this.bB = 0; } // CraftBukkit end } protected void bl() { - ++this.bA; + ++this.bB; this.world.methodProfiler.a("checkDespawn"); this.bk(); this.world.methodProfiler.b(); this.world.methodProfiler.a("sensing"); - this.bN.a(); + this.bO.a(); this.world.methodProfiler.b(); this.world.methodProfiler.a("targetSelector"); this.targetSelector.a(); @@ -1456,59 +1476,59 @@ public abstract class EntityLiving extends Entity { protected void bm() {} protected void bn() { - ++this.bA; + ++this.bB; this.bk(); - this.bB = 0.0F; this.bC = 0.0F; + this.bD = 0.0F; float f = 8.0F; if (this.random.nextFloat() < 0.02F) { EntityHuman entityhuman = this.world.findNearbyPlayer(this, (double) f); if (entityhuman != null) { - this.bV = entityhuman; - this.bH = 10 + this.random.nextInt(20); + this.bW = entityhuman; + this.bI = 10 + this.random.nextInt(20); } else { - this.bD = (this.random.nextFloat() - 0.5F) * 20.0F; + this.bE = (this.random.nextFloat() - 0.5F) * 20.0F; } } - if (this.bV != null) { - this.a(this.bV, 10.0F, (float) this.bp()); - if (this.bH-- <= 0 || this.bV.dead || this.bV.e((Entity) this) > (double) (f * f)) { - this.bV = null; + if (this.bW != null) { + this.a(this.bW, 10.0F, (float) this.bp()); + if (this.bI-- <= 0 || this.bW.dead || this.bW.e((Entity) this) > (double) (f * f)) { + this.bW = null; } } else { if (this.random.nextFloat() < 0.05F) { - this.bD = (this.random.nextFloat() - 0.5F) * 20.0F; + this.bE = (this.random.nextFloat() - 0.5F) * 20.0F; } - this.yaw += this.bD; - this.pitch = this.bF; + this.yaw += this.bE; + this.pitch = this.bG; } boolean flag = this.H(); boolean flag1 = this.J(); if (flag || flag1) { - this.bE = this.random.nextFloat() < 0.8F; + this.bF = this.random.nextFloat() < 0.8F; } } protected void bo() { int i = this.h(); - if (this.bp) { - ++this.bq; - if (this.bq >= i) { - this.bq = 0; - this.bp = false; + if (this.bq) { + ++this.br; + if (this.br >= i) { + this.br = 0; + this.bq = false; } } else { - this.bq = 0; + this.br = 0; } - this.aP = (float) this.bq / (float) i; + this.aQ = (float) this.br / (float) i; } public int bp() { @@ -1853,15 +1873,15 @@ public abstract class EntityLiving extends Entity { int i = this.random.nextInt(2); float f = this.world.difficulty == 3 ? 0.1F : 0.25F; - if (this.random.nextFloat() < 0.07F) { + if (this.random.nextFloat() < 0.1F) { ++i; } - if (this.random.nextFloat() < 0.07F) { + if (this.random.nextFloat() < 0.1F) { ++i; } - if (this.random.nextFloat() < 0.07F) { + if (this.random.nextFloat() < 0.1F) { ++i; } @@ -1986,14 +2006,14 @@ public abstract class EntityLiving extends Entity { protected void bF() { if (this.bD() != null && this.random.nextFloat() < b[this.world.difficulty]) { - EnchantmentManager.a(this.random, this.bD(), 5); + EnchantmentManager.a(this.random, this.bD(), 5 + this.world.difficulty * this.random.nextInt(6)); } for (int i = 0; i < 4; ++i) { ItemStack itemstack = this.q(i); if (itemstack != null && this.random.nextFloat() < c[this.world.difficulty]) { - EnchantmentManager.a(this.random, itemstack, 5); + EnchantmentManager.a(this.random, itemstack, 5 + this.world.difficulty * this.random.nextInt(6)); } } } @@ -2005,9 +2025,9 @@ public abstract class EntityLiving extends Entity { } public void bH() { - if (!this.bp || this.bq >= this.h() / 2 || this.bq < 0) { - this.bq = -1; - this.bp = true; + if (!this.bq || this.br >= this.h() / 2 || this.br < 0) { + this.br = -1; + this.bq = true; if (this.world instanceof WorldServer) { ((WorldServer) this.world).getTracker().a((Entity) this, (Packet) (new Packet18ArmAnimation(this, 1))); } diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java index cacde68ab2..a60539262c 100644 --- a/src/main/java/net/minecraft/server/EntityMagmaCube.java +++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -6,7 +6,7 @@ public class EntityMagmaCube extends EntitySlime { super(world); this.texture = "/mob/lava.png"; this.fireProof = true; - this.aM = 0.2F; + this.aN = 0.2F; } public boolean canSpawn() { diff --git a/src/main/java/net/minecraft/server/EntityMinecart.java b/src/main/java/net/minecraft/server/EntityMinecart.java index 29edbc3da5..7ae7129757 100644 --- a/src/main/java/net/minecraft/server/EntityMinecart.java +++ b/src/main/java/net/minecraft/server/EntityMinecart.java @@ -26,11 +26,11 @@ public class EntityMinecart extends Entity implements IInventory { private boolean h; private static final int[][][] matrix = new int[][][] { { { 0, 0, -1}, { 0, 0, 1}}, { { -1, 0, 0}, { 1, 0, 0}}, { { -1, -1, 0}, { 1, 0, 0}}, { { -1, 0, 0}, { 1, -1, 0}}, { { 0, 0, -1}, { 0, -1, 1}}, { { 0, -1, -1}, { 0, 0, 1}}, { { 0, 0, 1}, { 1, 0, 0}}, { { 0, 0, 1}, { -1, 0, 0}}, { { 0, 0, -1}, { -1, 0, 0}}, { { 0, 0, -1}, { 1, 0, 0}}}; private int j; - private double as; private double at; private double au; private double av; private double aw; + private double ax; // CraftBukkit start public boolean slowWhenEmpty = true; @@ -237,7 +237,7 @@ public class EntityMinecart extends Entity implements IInventory { EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, j, itemstack.getData())); if (itemstack.hasTag()) { - entityitem.itemStack.setTag((NBTTagCompound) itemstack.getTag().clone()); + entityitem.getItemStack().setTag((NBTTagCompound) itemstack.getTag().clone()); } float f3 = 0.05F; @@ -291,15 +291,57 @@ public class EntityMinecart extends Entity implements IInventory { this.world.addParticle("largesmoke", this.locX, this.locY + 0.8D, this.locZ, 0.0D, 0.0D, 0.0D); } + int i; + + if (!this.world.isStatic && this.world instanceof WorldServer) { + this.world.methodProfiler.a("portal"); + MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer(); + + i = this.z(); + if (this.ao) { + if (minecraftserver.getAllowNether()) { + if (this.vehicle == null && this.ap++ >= i) { + this.ap = i; + this.portalCooldown = this.ab(); + byte b0; + + if (this.world.worldProvider.dimension == -1) { + b0 = 0; + } else { + b0 = -1; + } + + this.b(b0); + } + + this.ao = false; + } + } else { + if (this.ap > 0) { + this.ap -= 4; + } + + if (this.ap < 0) { + this.ap = 0; + } + } + + if (this.portalCooldown > 0) { + --this.portalCooldown; + } + + this.world.methodProfiler.b(); + } + if (this.world.isStatic) { if (this.j > 0) { - double d0 = this.locX + (this.as - this.locX) / (double) this.j; - double d1 = this.locY + (this.at - this.locY) / (double) this.j; - double d2 = this.locZ + (this.au - this.locZ) / (double) this.j; - double d3 = MathHelper.g(this.av - (double) this.yaw); + double d0 = this.locX + (this.at - this.locX) / (double) this.j; + double d1 = this.locY + (this.au - this.locY) / (double) this.j; + double d2 = this.locZ + (this.av - this.locZ) / (double) this.j; + double d3 = MathHelper.g(this.aw - (double) this.yaw); this.yaw = (float) ((double) this.yaw + d3 / (double) this.j); - this.pitch = (float) ((double) this.pitch + (this.aw - (double) this.pitch) / (double) this.j); + this.pitch = (float) ((double) this.pitch + (this.ax - (double) this.pitch) / (double) this.j); --this.j; this.setPosition(d0, d1, d2); this.b(this.yaw, this.pitch); @@ -312,25 +354,25 @@ public class EntityMinecart extends Entity implements IInventory { this.lastY = this.locY; this.lastZ = this.locZ; this.motY -= 0.03999999910593033D; - int i = MathHelper.floor(this.locX); - int j = MathHelper.floor(this.locY); + int j = MathHelper.floor(this.locX); + i = MathHelper.floor(this.locY); int k = MathHelper.floor(this.locZ); - if (BlockMinecartTrack.e_(this.world, i, j - 1, k)) { - --j; + if (BlockMinecartTrack.e_(this.world, j, i - 1, k)) { + --i; } // CraftBukkit double d4 = this.maxSpeed; double d5 = 0.0078125D; - int l = this.world.getTypeId(i, j, k); + int l = this.world.getTypeId(j, i, k); - if (BlockMinecartTrack.d(l)) { + if (BlockMinecartTrack.e(l)) { this.fallDistance = 0.0F; Vec3D vec3d = this.a(this.locX, this.locY, this.locZ); - int i1 = this.world.getData(i, j, k); + int i1 = this.world.getData(j, i, k); - this.locY = (double) j; + this.locY = (double) i; boolean flag = false; boolean flag1 = false; @@ -344,7 +386,7 @@ public class EntityMinecart extends Entity implements IInventory { } if (i1 >= 2 && i1 <= 5) { - this.locY = (double) (j + 1); + this.locY = (double) (i + 1); } if (i1 == 2) { @@ -405,9 +447,9 @@ public class EntityMinecart extends Entity implements IInventory { } d12 = 0.0D; - d11 = (double) i + 0.5D + (double) aint[0][0] * 0.5D; + d11 = (double) j + 0.5D + (double) aint[0][0] * 0.5D; double d13 = (double) k + 0.5D + (double) aint[0][2] * 0.5D; - double d14 = (double) i + 0.5D + (double) aint[1][0] * 0.5D; + double d14 = (double) j + 0.5D + (double) aint[1][0] * 0.5D; double d15 = (double) k + 0.5D + (double) aint[1][2] * 0.5D; d6 = d14 - d11; @@ -416,11 +458,11 @@ public class EntityMinecart extends Entity implements IInventory { double d17; if (d6 == 0.0D) { - this.locX = (double) i + 0.5D; + this.locX = (double) j + 0.5D; d12 = this.locZ - (double) k; } else if (d7 == 0.0D) { this.locZ = (double) k + 0.5D; - d12 = this.locX - (double) i; + d12 = this.locX - (double) j; } else { d16 = this.locX - d11; d17 = this.locZ - d13; @@ -454,9 +496,9 @@ public class EntityMinecart extends Entity implements IInventory { } this.move(d16, 0.0D, d17); - if (aint[0][1] != 0 && MathHelper.floor(this.locX) - i == aint[0][0] && MathHelper.floor(this.locZ) - k == aint[0][2]) { + if (aint[0][1] != 0 && MathHelper.floor(this.locX) - j == aint[0][0] && MathHelper.floor(this.locZ) - k == aint[0][2]) { this.setPosition(this.locX, this.locY + (double) aint[0][1], this.locZ); - } else if (aint[1][1] != 0 && MathHelper.floor(this.locX) - i == aint[1][0] && MathHelper.floor(this.locZ) - k == aint[1][2]) { + } else if (aint[1][1] != 0 && MathHelper.floor(this.locX) - j == aint[1][0] && MathHelper.floor(this.locZ) - k == aint[1][2]) { this.setPosition(this.locX, this.locY + (double) aint[1][1], this.locZ); } @@ -509,9 +551,9 @@ public class EntityMinecart extends Entity implements IInventory { int j1 = MathHelper.floor(this.locX); int k1 = MathHelper.floor(this.locZ); - if (j1 != i || k1 != k) { + if (j1 != j || k1 != k) { d10 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ); - this.motX = d10 * (double) (j1 - i); + this.motX = d10 * (double) (j1 - j); this.motZ = d10 * (double) (k1 - k); } @@ -541,15 +583,15 @@ public class EntityMinecart extends Entity implements IInventory { this.motX += this.motX / d21 * d22; this.motZ += this.motZ / d21 * d22; } else if (i1 == 1) { - if (this.world.t(i - 1, j, k)) { + if (this.world.t(j - 1, i, k)) { this.motX = 0.02D; - } else if (this.world.t(i + 1, j, k)) { + } else if (this.world.t(j + 1, i, k)) { this.motX = -0.02D; } } else if (i1 == 0) { - if (this.world.t(i, j, k - 1)) { + if (this.world.t(j, i, k - 1)) { this.motZ = 0.02D; - } else if (this.world.t(i, j, k + 1)) { + } else if (this.world.t(j, i, k + 1)) { this.motZ = -0.02D; } } @@ -666,7 +708,7 @@ public class EntityMinecart extends Entity implements IInventory { int l = this.world.getTypeId(i, j, k); - if (BlockMinecartTrack.d(l)) { + if (BlockMinecartTrack.e(l)) { int i1 = this.world.getData(i, j, k); d1 = (double) j; diff --git a/src/main/java/net/minecraft/server/EntityMonster.java b/src/main/java/net/minecraft/server/EntityMonster.java index 5b9337c89b..2b39bbf63c 100644 --- a/src/main/java/net/minecraft/server/EntityMonster.java +++ b/src/main/java/net/minecraft/server/EntityMonster.java @@ -6,7 +6,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { public EntityMonster(World world) { super(world); - this.bc = 5; + this.bd = 5; } public void c() { @@ -14,7 +14,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { float f = this.c(1.0F); if (f > 0.5F) { - this.bA += 2; + this.bB += 2; } super.c(); @@ -99,6 +99,10 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { if (k > 0) { entity.setOnFire(k * 4); } + + if (entity instanceof EntityLiving) { + EnchantmentThorns.a(this, (EntityLiving) entity, this.random); + } } return flag; diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java index a9f69783a3..29fdc83403 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -42,7 +42,7 @@ public class EntityMushroomCow extends EntityCow { entitycow.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, this.pitch); entitycow.setHealth(this.getHealth()); - entitycow.aw = this.aw; + entitycow.ax = this.ax; this.world.addEntity(entitycow); for (int i = 0; i < 5; ++i) { diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index d3bd681e0a..3a07b6226b 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -15,7 +15,7 @@ public class EntityPigZombie extends EntityZombie { public EntityPigZombie(World world) { super(world); this.texture = "/mob/pigzombie.png"; - this.bG = 0.5F; + this.bH = 0.5F; this.fireProof = true; } @@ -24,7 +24,7 @@ public class EntityPigZombie extends EntityZombie { } public void j_() { - this.bG = this.target != null ? 0.95F : 0.5F; + this.bH = this.target != null ? 0.95F : 0.5F; if (this.soundDelay > 0 && --this.soundDelay == 0) { this.makeSound("mob.zombiepig.zpigangry", this.aX() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F); } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index 775e988bf4..e2938a766c 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -20,21 +20,21 @@ import org.bukkit.event.inventory.InventoryType; public class EntityPlayer extends EntityHuman implements ICrafting { private LocaleLanguage locale = new LocaleLanguage("en_US"); - public NetServerHandler netServerHandler; + public PlayerConnection playerConnection; public MinecraftServer server; - public ItemInWorldManager itemInWorldManager; + public PlayerInteractManager playerInteractManager; public double d; public double e; public final List chunkCoordIntPairQueue = new LinkedList(); public final List removeQueue = new LinkedList(); - private int ck = -99999999; private int cl = -99999999; - private boolean cm = true; + private int cm = -99999999; + private boolean cn = true; public int lastSentExp = -99999999; // CraftBukkit - private -> public public int invulnerableTicks = 60; // CraftBukkit - private -> public - private int cp = 0; private int cq = 0; - private boolean cr = true; + private int cr = 0; + private boolean cs = true; private int containerCounter = 0; public boolean h; public int ping; @@ -49,11 +49,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public boolean keepLevel = false; // CraftBukkit end - public EntityPlayer(MinecraftServer minecraftserver, World world, String s, ItemInWorldManager iteminworldmanager) { + public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) { super(world); - iteminworldmanager.player = this; - this.itemInWorldManager = iteminworldmanager; - this.cp = minecraftserver.getServerConfigurationManager().o(); + playerinteractmanager.player = this; + this.playerInteractManager = playerinteractmanager; + this.cq = minecraftserver.getPlayerList().o(); ChunkCoordinates chunkcoordinates = world.getSpawn(); int i = chunkcoordinates.x; int j = chunkcoordinates.z; @@ -80,14 +80,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void a(NBTTagCompound nbttagcompound) { super.a(nbttagcompound); if (nbttagcompound.hasKey("playerGameType")) { - this.itemInWorldManager.setGameMode(EnumGamemode.a(nbttagcompound.getInt("playerGameType"))); + this.playerInteractManager.setGameMode(EnumGamemode.a(nbttagcompound.getInt("playerGameType"))); } this.getBukkitEntity().readExtraData(nbttagcompound); // CraftBukkit } public void b(NBTTagCompound nbttagcompound) { super.b(nbttagcompound); - nbttagcompound.setInt("playerGameType", this.itemInWorldManager.getGameMode().a()); + nbttagcompound.setInt("playerGameType", this.playerInteractManager.getGameMode().a()); this.getBukkitEntity().setExtraData(nbttagcompound); // CraftBukkit } @@ -112,7 +112,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.setPosition(position.x + 0.5, position.y, position.z + 0.5); } this.dimension = ((WorldServer) this.world).dimension; - this.itemInWorldManager.a((WorldServer) world); + this.playerInteractManager.a((WorldServer) world); } // CraftBukkit end @@ -134,7 +134,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void j_() { - this.itemInWorldManager.a(); + this.playerInteractManager.a(); --this.invulnerableTicks; this.activeContainer.b(); @@ -149,7 +149,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { iterator.remove(); } - this.netServerHandler.sendPacket(new Packet29DestroyEntity(aint)); + this.playerConnection.sendPacket(new Packet29DestroyEntity(aint)); } if (!this.chunkCoordIntPairQueue.isEmpty()) { @@ -168,7 +168,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } if (!arraylist.isEmpty()) { - this.netServerHandler.sendPacket(new Packet56MapChunkBulk(arraylist)); + this.playerConnection.sendPacket(new Packet56MapChunkBulk(arraylist)); Iterator iterator2 = arraylist1.iterator(); @@ -195,25 +195,25 @@ public class EntityPlayer extends EntityHuman implements ICrafting { for (int i = 0; i < this.inventory.getSize(); ++i) { ItemStack itemstack = this.inventory.getItem(i); - if (itemstack != null && Item.byId[itemstack.id].f() && this.netServerHandler.lowPriorityCount() <= 5) { + if (itemstack != null && Item.byId[itemstack.id].f() && this.playerConnection.lowPriorityCount() <= 5) { Packet packet = ((ItemWorldMapBase) Item.byId[itemstack.id]).c(itemstack, this.world, this); if (packet != null) { - this.netServerHandler.sendPacket(packet); + this.playerConnection.sendPacket(packet); } } } - if (this.getHealth() != this.ck || this.cl != this.foodData.a() || this.foodData.e() == 0.0F != this.cm) { - this.netServerHandler.sendPacket(new Packet8UpdateHealth(this.getHealth(), this.foodData.a(), this.foodData.e())); - this.ck = this.getHealth(); - this.cl = this.foodData.a(); - this.cm = this.foodData.e() == 0.0F; + if (this.getHealth() != this.cl || this.cm != this.foodData.a() || this.foodData.e() == 0.0F != this.cn) { + this.playerConnection.sendPacket(new Packet8UpdateHealth(this.getHealth(), this.foodData.a(), this.foodData.e())); + this.cl = this.getHealth(); + this.cm = this.foodData.a(); + this.cn = this.foodData.e() == 0.0F; } if (this.expTotal != this.lastSentExp) { this.lastSentExp = this.expTotal; - this.netServerHandler.sendPacket(new Packet43SetExperience(this.exp, this.expTotal, this.expLevel)); + this.playerConnection.sendPacket(new Packet43SetExperience(this.exp, this.expTotal, this.expLevel)); } // CraftBukkit start @@ -256,7 +256,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { String deathMessage = event.getDeathMessage(); if (deathMessage != null && deathMessage.length() > 0) { - this.server.getServerConfigurationManager().sendAll(new Packet3Chat(event.getDeathMessage())); + this.server.getPlayerList().k(event.getDeathMessage()); } // CraftBukkit - we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory. @@ -284,7 +284,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit - this.server.getPvP() -> this.world.pvpMode boolean flag = this.server.T() && this.world.pvpMode && "fall".equals(damagesource.translationIndex); - if (!flag && this.invulnerableTicks > 0) { + if (!flag && this.invulnerableTicks > 0 && damagesource != DamageSource.OUT_OF_WORLD) { return false; } else { // CraftBukkit - this.server.getPvP() -> this.world.pvpMode @@ -318,7 +318,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.a((Statistic) AchievementList.C); this.world.kill(this); this.viewingCredits = true; - this.netServerHandler.sendPacket(new Packet70Bed(4, 0)); + this.playerConnection.sendPacket(new Packet70Bed(4, 0)); } else { this.a((Statistic) AchievementList.B); /* CraftBukkit start - removed to fix our handling of The End portals @@ -334,10 +334,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } // CraftBukkit end */ - this.server.getServerConfigurationManager().changeDimension(this, i); + this.server.getPlayerList().changeDimension(this, i); this.lastSentExp = -1; - this.ck = -1; this.cl = -1; + this.cm = -1; } } @@ -346,7 +346,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { Packet packet = tileentity.getUpdatePacket(); if (packet != null) { - this.netServerHandler.sendPacket(packet); + this.playerConnection.sendPacket(packet); } } } @@ -363,8 +363,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { Packet17EntityLocationAction packet17entitylocationaction = new Packet17EntityLocationAction(this, 0, i, j, k); this.p().getTracker().a((Entity) this, (Packet) packet17entitylocationaction); - this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); - this.netServerHandler.sendPacket(packet17entitylocationaction); + this.playerConnection.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); + this.playerConnection.sendPacket(packet17entitylocationaction); } return enumbedresult; @@ -378,8 +378,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } super.a(flag, flag1, flag2); - if (this.netServerHandler != null) { - this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); + if (this.playerConnection != null) { + this.playerConnection.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); } } @@ -395,8 +395,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { super.setPassengerOf(entity); // CraftBukkit end - this.netServerHandler.sendPacket(new Packet39AttachEntity(this, this.vehicle)); - this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); + this.playerConnection.sendPacket(new Packet39AttachEntity(this, this.vehicle)); + this.playerConnection.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); } protected void a(double d0, boolean flag) {} @@ -417,7 +417,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 1, "Crafting", 9)); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 1, "Crafting", 9)); this.activeContainer = container; // CraftBukkit - Use container we passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -430,7 +430,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 4, "Enchanting", 9)); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 4, "Enchanting", 9)); this.activeContainer = container; // CraftBukkit - Use container we passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -443,7 +443,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 8, "Repairing", 9)); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 8, "Repairing", 9)); this.activeContainer = container; // CraftBukkit - use container we passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -460,7 +460,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 0, iinventory.getName(), iinventory.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 0, iinventory.getName(), iinventory.getSize())); this.activeContainer = container; // CraftBukkit - Use container passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -473,7 +473,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 2, tileentityfurnace.getName(), tileentityfurnace.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 2, tileentityfurnace.getName(), tileentityfurnace.getSize())); this.activeContainer = container; // CraftBukkit - Use container passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -486,7 +486,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 3, tileentitydispenser.getName(), tileentitydispenser.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 3, tileentitydispenser.getName(), tileentitydispenser.getSize())); this.activeContainer = container; // CraftBukkit - Use container passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -499,7 +499,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 5, tileentitybrewingstand.getName(), tileentitybrewingstand.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 5, tileentitybrewingstand.getName(), tileentitybrewingstand.getSize())); this.activeContainer = container; // CraftBukkit - Use container passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -512,7 +512,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end this.nextContainerCounter(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 7, tileentitybeacon.getName(), tileentitybeacon.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 7, tileentitybeacon.getName(), tileentitybeacon.getSize())); this.activeContainer = container; // CraftBukkit - Use container passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); @@ -530,7 +530,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.activeContainer.addSlotListener(this); InventoryMerchant inventorymerchant = ((ContainerMerchant) this.activeContainer).getMerchantInventory(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.containerCounter, 6, inventorymerchant.getName(), inventorymerchant.getSize())); + this.playerConnection.sendPacket(new Packet100OpenWindow(this.containerCounter, 6, inventorymerchant.getName(), inventorymerchant.getSize())); MerchantRecipeList merchantrecipelist = imerchant.getOffers(this); if (merchantrecipelist != null) { @@ -540,7 +540,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { dataoutputstream.writeInt(this.containerCounter); merchantrecipelist.a(dataoutputstream); - this.netServerHandler.sendPacket(new Packet250CustomPayload("MC|TrList", bytearrayoutputstream.toByteArray())); + this.playerConnection.sendPacket(new Packet250CustomPayload("MC|TrList", bytearrayoutputstream.toByteArray())); } catch (IOException ioexception) { ioexception.printStackTrace(); } @@ -550,7 +550,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void a(Container container, int i, ItemStack itemstack) { if (!(container.getSlot(i) instanceof SlotResult)) { if (!this.h) { - this.netServerHandler.sendPacket(new Packet103SetSlot(container.windowId, i, itemstack)); + this.playerConnection.sendPacket(new Packet103SetSlot(container.windowId, i, itemstack)); } } } @@ -560,27 +560,27 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(Container container, List list) { - this.netServerHandler.sendPacket(new Packet104WindowItems(container.windowId, list)); - this.netServerHandler.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.getCarried())); + this.playerConnection.sendPacket(new Packet104WindowItems(container.windowId, list)); + this.playerConnection.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.getCarried())); // CraftBukkit start - send a Set Slot to update the crafting result slot if (java.util.EnumSet.of(InventoryType.CRAFTING,InventoryType.WORKBENCH).contains(container.getBukkitView().getType())) { - this.netServerHandler.sendPacket(new Packet103SetSlot(container.windowId, 0, container.getSlot(0).getItem())); + this.playerConnection.sendPacket(new Packet103SetSlot(container.windowId, 0, container.getSlot(0).getItem())); } // CraftBukkit end } public void setContainerData(Container container, int i, int j) { - this.netServerHandler.sendPacket(new Packet105CraftProgressBar(container.windowId, i, j)); + this.playerConnection.sendPacket(new Packet105CraftProgressBar(container.windowId, i, j)); } public void closeInventory() { - this.netServerHandler.sendPacket(new Packet101CloseWindow(this.activeContainer.windowId)); + this.playerConnection.sendPacket(new Packet101CloseWindow(this.activeContainer.windowId)); this.k(); } public void broadcastCarriedItem() { if (!this.h) { - this.netServerHandler.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.getCarried())); + this.playerConnection.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.getCarried())); } } @@ -593,11 +593,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { if (statistic != null) { if (!statistic.f) { while (i > 100) { - this.netServerHandler.sendPacket(new Packet200Statistic(statistic.e, 100)); + this.playerConnection.sendPacket(new Packet200Statistic(statistic.e, 100)); i -= 100; } - this.netServerHandler.sendPacket(new Packet200Statistic(statistic.e, i)); + this.playerConnection.sendPacket(new Packet200Statistic(statistic.e, i)); } } } @@ -617,7 +617,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void m() { - this.ck = -99999999; + this.cl = -99999999; this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -625,17 +625,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { LocaleLanguage localelanguage = LocaleLanguage.a(); String s1 = localelanguage.b(s); - this.netServerHandler.sendPacket(new Packet3Chat(s1)); + this.playerConnection.sendPacket(new Packet3Chat(s1)); } protected void n() { - this.netServerHandler.sendPacket(new Packet38EntityStatus(this.id, (byte) 9)); + this.playerConnection.sendPacket(new Packet38EntityStatus(this.id, (byte) 9)); super.n(); } public void a(ItemStack itemstack, int i) { super.a(itemstack, i); - if (itemstack != null && itemstack.getItem() != null && itemstack.getItem().d_(itemstack) == EnumAnimation.b) { + if (itemstack != null && itemstack.getItem() != null && itemstack.getItem().b_(itemstack) == EnumAnimation.b) { this.p().getTracker().sendPacketToEntity(this, new Packet18ArmAnimation(this, 5)); } } @@ -643,28 +643,28 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void copyTo(EntityHuman entityhuman, boolean flag) { super.copyTo(entityhuman, flag); this.lastSentExp = -1; - this.ck = -1; this.cl = -1; + this.cm = -1; this.removeQueue.addAll(((EntityPlayer) entityhuman).removeQueue); } protected void a(MobEffect mobeffect) { super.a(mobeffect); - this.netServerHandler.sendPacket(new Packet41MobEffect(this.id, mobeffect)); + this.playerConnection.sendPacket(new Packet41MobEffect(this.id, mobeffect)); } protected void b(MobEffect mobeffect) { super.b(mobeffect); - this.netServerHandler.sendPacket(new Packet41MobEffect(this.id, mobeffect)); + this.playerConnection.sendPacket(new Packet41MobEffect(this.id, mobeffect)); } protected void c(MobEffect mobeffect) { super.c(mobeffect); - this.netServerHandler.sendPacket(new Packet42RemoveMobEffect(this.id, mobeffect)); + this.playerConnection.sendPacket(new Packet42RemoveMobEffect(this.id, mobeffect)); } public void enderTeleportTo(double d0, double d1, double d2) { - this.netServerHandler.a(d0, d1, d2, this.yaw, this.pitch); + this.playerConnection.a(d0, d1, d2, this.yaw, this.pitch); } public void b(Entity entity) { @@ -676,8 +676,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void updateAbilities() { - if (this.netServerHandler != null) { - this.netServerHandler.sendPacket(new Packet202Abilities(this.abilities)); + if (this.playerConnection != null) { + this.playerConnection.sendPacket(new Packet202Abilities(this.abilities)); } } @@ -686,20 +686,20 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(EnumGamemode enumgamemode) { - this.itemInWorldManager.setGameMode(enumgamemode); - this.netServerHandler.sendPacket(new Packet70Bed(3, enumgamemode.a())); + this.playerInteractManager.setGameMode(enumgamemode); + this.playerConnection.sendPacket(new Packet70Bed(3, enumgamemode.a())); } public void sendMessage(String s) { - this.netServerHandler.sendPacket(new Packet3Chat(s)); + this.playerConnection.sendPacket(new Packet3Chat(s)); } public boolean a(int i, String s) { - return "seed".equals(s) && !this.server.T() ? true : (!"tell".equals(s) && !"help".equals(s) && !"me".equals(s) ? this.server.getServerConfigurationManager().isOp(this.name) : true); + return "seed".equals(s) && !this.server.T() ? true : (!"tell".equals(s) && !"help".equals(s) && !"me".equals(s) ? this.server.getPlayerList().isOp(this.name) : true); } public String q() { - String s = this.netServerHandler.networkManager.getSocketAddress().toString(); + String s = this.playerConnection.networkManager.getSocketAddress().toString(); s = s.substring(s.indexOf("/") + 1); s = s.substring(0, s.indexOf(":")); @@ -714,11 +714,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { int i = 256 >> packet204localeandviewdistance.f(); if (i > 3 && i < 15) { - this.cp = i; + this.cq = i; } - this.cq = packet204localeandviewdistance.g(); - this.cr = packet204localeandviewdistance.h(); + this.cr = packet204localeandviewdistance.g(); + this.cs = packet204localeandviewdistance.h(); if (this.server.I() && this.server.H().equals(this.name)) { this.server.c(packet204localeandviewdistance.i()); } @@ -731,13 +731,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public int getChatFlags() { - return this.cq; + return this.cr; } public void a(String s, int i) { String s1 = s + "\0" + i; // CraftBukkit - fix decompile error - this.netServerHandler.sendPacket(new Packet250CustomPayload("MC|TPack", s1.getBytes())); + this.playerConnection.sendPacket(new Packet250CustomPayload("MC|TPack", s1.getBytes())); } public ChunkCoordinates b() { diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java index cf734a1bcc..aa6def05b6 100644 --- a/src/main/java/net/minecraft/server/EntityPotion.java +++ b/src/main/java/net/minecraft/server/EntityPotion.java @@ -62,7 +62,7 @@ public class EntityPotion extends EntityProjectile { protected void a(MovingObjectPosition movingobjectposition) { if (!this.world.isStatic) { - List list = Item.POTION.l(this.c); + List list = Item.POTION.g(this.c); if (list != null && !list.isEmpty()) { AxisAlignedBB axisalignedbb = this.boundingBox.grow(4.0D, 2.0D, 4.0D); diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java index 5ccb3ab6a7..7b524cdaca 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java @@ -10,7 +10,7 @@ public class EntitySilverfish extends EntityMonster { super(world); this.texture = "/mob/silverfish.png"; this.a(0.3F, 0.7F); - this.bG = 0.6F; + this.bH = 0.6F; } public int getMaxHealth() { @@ -54,7 +54,7 @@ public class EntitySilverfish extends EntityMonster { protected void a(Entity entity, float f) { if (this.attackTicks <= 0 && f < 1.2F && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) { this.attackTicks = 20; - entity.damageEntity(DamageSource.mobAttack(this), this.c(entity)); + this.m(entity); } } @@ -67,7 +67,7 @@ public class EntitySilverfish extends EntityMonster { } public void j_() { - this.aw = this.yaw; + this.ax = this.yaw; super.j_(); } diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java index aba1e88cdb..4ea580bed0 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -12,11 +12,11 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity { public EntitySkeleton(World world) { super(world); this.texture = "/mob/skeleton.png"; - this.bG = 0.25F; + this.bH = 0.25F; this.goalSelector.a(1, new PathfinderGoalFloat(this)); this.goalSelector.a(2, new PathfinderGoalRestrictSun(this)); - this.goalSelector.a(3, new PathfinderGoalFleeSun(this, this.bG)); - this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bG)); + this.goalSelector.a(3, new PathfinderGoalFleeSun(this, this.bH)); + this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bH)); this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(6, new PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false)); @@ -201,11 +201,7 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity { this.bF(); } - if (this.random.nextFloat() >= as[this.world.difficulty]) { - ; - } - - this.canPickUpLoot = true; + this.canPickUpLoot = this.random.nextFloat() < at[this.world.difficulty]; if (this.getEquipment(4) == null) { Calendar calendar = this.world.T(); diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java index c57aa010f6..54e50d13bd 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java @@ -30,7 +30,7 @@ public class EntitySlime extends EntityLiving implements IMonster { this.a(0.6F * (float) i, 0.6F * (float) i); this.setPosition(this.locX, this.locY, this.locZ); this.setHealth(this.getMaxHealth()); - this.bc = i; + this.bd = i; } public int getMaxHealth() { @@ -115,17 +115,17 @@ public class EntitySlime extends EntityLiving implements IMonster { this.jumpDelay /= 3; } - this.bE = true; + this.bF = true; if (this.q()) { this.makeSound(this.n(), this.aX(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 0.8F); } - this.bB = 1.0F - this.random.nextFloat() * 2.0F; - this.bC = (float) (1 * this.getSize()); + this.bC = 1.0F - this.random.nextFloat() * 2.0F; + this.bD = (float) (1 * this.getSize()); } else { - this.bE = false; + this.bF = false; if (this.onGround) { - this.bB = this.bC = 0.0F; + this.bC = this.bD = 0.0F; } } } diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java index c3cfa283b3..9b466d497f 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java @@ -8,7 +8,7 @@ public class EntitySpider extends EntityMonster { super(world); this.texture = "/mob/spider.png"; this.a(1.4F, 0.9F); - this.bG = 0.8F; + this.bH = 0.8F; } protected void a() { diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java index 602187965a..961d83a4bd 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -11,19 +11,19 @@ public class EntitySquid extends EntityWaterAnimal { public float h = 0.0F; public float i = 0.0F; public float j = 0.0F; - public float bI = 0.0F; - private float bJ = 0.0F; + public float bJ = 0.0F; private float bK = 0.0F; private float bL = 0.0F; private float bM = 0.0F; private float bN = 0.0F; private float bO = 0.0F; + private float bP = 0.0F; public EntitySquid(World world) { super(world); this.texture = "/mob/squid.png"; this.a(0.95F, 0.95F); - this.bK = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; + this.bL = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } public int getMaxHealth() { @@ -72,12 +72,12 @@ public class EntitySquid extends EntityWaterAnimal { this.e = this.d; this.g = this.f; this.i = this.h; - this.bI = this.j; - this.h += this.bK; + this.bJ = this.j; + this.h += this.bL; if (this.h > 6.2831855F) { this.h -= 6.2831855F; if (this.random.nextInt(10) == 0) { - this.bK = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; + this.bL = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } } @@ -88,28 +88,28 @@ public class EntitySquid extends EntityWaterAnimal { f = this.h / 3.1415927F; this.j = MathHelper.sin(f * f * 3.1415927F) * 3.1415927F * 0.25F; if ((double) f > 0.75D) { - this.bJ = 1.0F; - this.bL = 1.0F; + this.bK = 1.0F; + this.bM = 1.0F; } else { - this.bL *= 0.8F; + this.bM *= 0.8F; } } else { this.j = 0.0F; - this.bJ *= 0.9F; - this.bL *= 0.99F; + this.bK *= 0.9F; + this.bM *= 0.99F; } if (!this.world.isStatic) { - this.motX = (double) (this.bM * this.bJ); - this.motY = (double) (this.bN * this.bJ); - this.motZ = (double) (this.bO * this.bJ); + this.motX = (double) (this.bN * this.bK); + this.motY = (double) (this.bO * this.bK); + this.motZ = (double) (this.bP * this.bK); } f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ); // CraftBukkit - Math -> TrigMath - this.aw += (-((float) TrigMath.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F - this.aw) * 0.1F; - this.yaw = this.aw; - this.f += 3.1415927F * this.bL * 1.5F; + this.ax += (-((float) TrigMath.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F - this.ax) * 0.1F; + this.yaw = this.ax; + this.f += 3.1415927F * this.bM * 1.5F; // CraftBukkit - Math -> TrigMath this.d += (-((float) TrigMath.atan2((double) f, this.motY)) * 180.0F / 3.1415927F - this.d) * 0.1F; } else { @@ -130,15 +130,15 @@ public class EntitySquid extends EntityWaterAnimal { } protected void bn() { - ++this.bA; - if (this.bA > 100) { - this.bM = this.bN = this.bO = 0.0F; - } else if (this.random.nextInt(50) == 0 || !this.ad || this.bM == 0.0F && this.bN == 0.0F && this.bO == 0.0F) { + ++this.bB; + if (this.bB > 100) { + this.bN = this.bO = this.bP = 0.0F; + } else if (this.random.nextInt(50) == 0 || !this.ad || this.bN == 0.0F && this.bO == 0.0F && this.bP == 0.0F) { float f = this.random.nextFloat() * 3.1415927F * 2.0F; - this.bM = MathHelper.cos(f) * 0.2F; - this.bN = -0.1F + this.random.nextFloat() * 0.2F; - this.bO = MathHelper.sin(f) * 0.2F; + this.bN = MathHelper.cos(f) * 0.2F; + this.bO = -0.1F + this.random.nextFloat() * 0.2F; + this.bP = MathHelper.sin(f) * 0.2F; } this.bk(); diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java index f0ae58f533..d2d6ff0d73 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java @@ -14,7 +14,7 @@ public class EntityTracker { public EntityTracker(WorldServer worldserver) { this.world = worldserver; - this.d = worldserver.getMinecraftServer().getServerConfigurationManager().a(); + this.d = worldserver.getMinecraftServer().getPlayerList().a(); } // CraftBukkit - synchronized @@ -51,6 +51,8 @@ public class EntityTracker { this.addEntity(entity, 64, 10, true); } else if (entity instanceof EntityThrownExpBottle) { this.addEntity(entity, 64, 10, true); + } else if (entity instanceof EntityFireworks) { + this.addEntity(entity, 64, 10, true); } else if (entity instanceof EntityItem) { this.addEntity(entity, 64, 20, true); } else if (entity instanceof EntityMinecart) { diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java index acb363768b..a026c4ce60 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -86,11 +86,11 @@ public class EntityTrackerEntry { EntityPlayer j2 = (EntityPlayer) j1; i7.a(j2, i5); - if (j2.netServerHandler.lowPriorityCount() <= 5) { + if (j2.playerConnection.lowPriorityCount() <= 5) { Packet j3 = Item.MAP.c(i5, this.tracker.world, j2); if (j3 != null) { - j2.netServerHandler.sendPacket(j3); + j2.playerConnection.sendPacket(j3); } } } @@ -107,9 +107,9 @@ public class EntityTrackerEntry { if (this.tracker.vehicle == null) { ++this.u; - i = this.tracker.ar.a(this.tracker.locX); + i = this.tracker.as.a(this.tracker.locX); j = MathHelper.floor(this.tracker.locY * 32.0D); - int k = this.tracker.ar.a(this.tracker.locZ); + int k = this.tracker.as.a(this.tracker.locZ); int l = MathHelper.d(this.tracker.yaw * 256.0F / 360.0F); int i1 = MathHelper.d(this.tracker.pitch * 256.0F / 360.0F); int j1 = i - this.xLoc; @@ -200,9 +200,9 @@ public class EntityTrackerEntry { this.xRot = j; } - this.xLoc = this.tracker.ar.a(this.tracker.locX); + this.xLoc = this.tracker.as.a(this.tracker.locX); this.yLoc = MathHelper.floor(this.tracker.locY * 32.0D); - this.zLoc = this.tracker.ar.a(this.tracker.locZ); + this.zLoc = this.tracker.as.a(this.tracker.locZ); DataWatcher datawatcher2 = this.tracker.getDataWatcher(); if (datawatcher2.a()) { @@ -254,14 +254,14 @@ public class EntityTrackerEntry { while (iterator.hasNext()) { EntityPlayer entityplayer = (EntityPlayer) iterator.next(); - entityplayer.netServerHandler.sendPacket(packet); + entityplayer.playerConnection.sendPacket(packet); } } public void broadcastIncludingSelf(Packet packet) { this.broadcast(packet); if (this.tracker instanceof EntityPlayer) { - ((EntityPlayer) this.tracker).netServerHandler.sendPacket(packet); + ((EntityPlayer) this.tracker).playerConnection.sendPacket(packet); } } @@ -303,20 +303,20 @@ public class EntityTrackerEntry { this.trackedPlayers.add(entityplayer); Packet packet = this.b(); - entityplayer.netServerHandler.sendPacket(packet); - if (this.tracker instanceof EntityItemFrame) { - entityplayer.netServerHandler.sendPacket(new Packet40EntityMetadata(this.tracker.id, this.tracker.getDataWatcher(), true)); + entityplayer.playerConnection.sendPacket(packet); + if (!this.tracker.getDataWatcher().d()) { + entityplayer.playerConnection.sendPacket(new Packet40EntityMetadata(this.tracker.id, this.tracker.getDataWatcher(), true)); } this.j = this.tracker.motX; this.k = this.tracker.motY; this.l = this.tracker.motZ; if (this.isMoving && !(packet instanceof Packet24MobSpawn)) { - entityplayer.netServerHandler.sendPacket(new Packet28EntityVelocity(this.tracker.id, this.tracker.motX, this.tracker.motY, this.tracker.motZ)); + entityplayer.playerConnection.sendPacket(new Packet28EntityVelocity(this.tracker.id, this.tracker.motX, this.tracker.motY, this.tracker.motZ)); } if (this.tracker.vehicle != null) { - entityplayer.netServerHandler.sendPacket(new Packet39AttachEntity(this.tracker, this.tracker.vehicle)); + entityplayer.playerConnection.sendPacket(new Packet39AttachEntity(this.tracker, this.tracker.vehicle)); } if (this.tracker instanceof EntityLiving) { @@ -324,7 +324,7 @@ public class EntityTrackerEntry { ItemStack itemstack = ((EntityLiving) this.tracker).getEquipment(i); if (itemstack != null) { - entityplayer.netServerHandler.sendPacket(new Packet5EntityEquipment(this.tracker.id, i, itemstack)); + entityplayer.playerConnection.sendPacket(new Packet5EntityEquipment(this.tracker.id, i, itemstack)); } } } @@ -333,7 +333,7 @@ public class EntityTrackerEntry { EntityHuman entityhuman = (EntityHuman) this.tracker; if (entityhuman.isSleeping()) { - entityplayer.netServerHandler.sendPacket(new Packet17EntityLocationAction(this.tracker, 0, MathHelper.floor(this.tracker.locX), MathHelper.floor(this.tracker.locY), MathHelper.floor(this.tracker.locZ))); + entityplayer.playerConnection.sendPacket(new Packet17EntityLocationAction(this.tracker, 0, MathHelper.floor(this.tracker.locX), MathHelper.floor(this.tracker.locY), MathHelper.floor(this.tracker.locZ))); } } @@ -349,7 +349,7 @@ public class EntityTrackerEntry { while (iterator.hasNext()) { MobEffect mobeffect = (MobEffect) iterator.next(); - entityplayer.netServerHandler.sendPacket(new Packet41MobEffect(this.tracker.id, mobeffect)); + entityplayer.playerConnection.sendPacket(new Packet41MobEffect(this.tracker.id, mobeffect)); } } } @@ -361,7 +361,7 @@ public class EntityTrackerEntry { } private boolean d(EntityPlayer entityplayer) { - return entityplayer.p().getPlayerManager().a(entityplayer, this.tracker.ai, this.tracker.ak); + return entityplayer.p().getPlayerChunkMap().a(entityplayer, this.tracker.ai, this.tracker.ak); } public void scanPlayers(List list) { @@ -379,13 +379,7 @@ public class EntityTrackerEntry { } if (this.tracker instanceof EntityItem) { - EntityItem entityitem = (EntityItem) this.tracker; - Packet21PickupSpawn entityminecart0 = new Packet21PickupSpawn(entityitem); - - entityitem.locX = (double) entityminecart0.b / 32.0D; - entityitem.locY = (double) entityminecart0.c / 32.0D; - entityitem.locZ = (double) entityminecart0.d / 32.0D; - return entityminecart0; + return new Packet23VehicleSpawn(this.tracker, 2, 1); } else if (this.tracker instanceof EntityPlayer) { return new Packet20NamedEntitySpawn((EntityHuman) this.tracker); } else { @@ -426,6 +420,8 @@ public class EntityTrackerEntry { return new Packet23VehicleSpawn(this.tracker, 65); } else if (this.tracker instanceof EntityEnderSignal) { return new Packet23VehicleSpawn(this.tracker, 72); + } else if (this.tracker instanceof EntityFireworks) { + return new Packet23VehicleSpawn(this.tracker, 76); } else { Packet23VehicleSpawn packet23vehiclespawn; diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java index 5d0c6b6a2d..f7a32e5fd4 100644 --- a/src/main/java/net/minecraft/server/EntityWitch.java +++ b/src/main/java/net/minecraft/server/EntityWitch.java @@ -11,10 +11,10 @@ public class EntityWitch extends EntityMonster implements IRangedEntity { public EntityWitch(World world) { super(world); this.texture = "/mob/villager/witch.png"; - this.bG = 0.25F; + this.bH = 0.25F; this.goalSelector.a(1, new PathfinderGoalFloat(this)); - this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bG, 60, 10.0F)); - this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, this.bG)); + this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bH, 60, 10.0F)); + this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, this.bH)); this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(3, new PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false)); @@ -63,7 +63,7 @@ public class EntityWitch extends EntityMonster implements IRangedEntity { this.setEquipment(0, (ItemStack) null); if (itemstack != null && itemstack.id == Item.POTION.id) { - List list = Item.POTION.l(itemstack); + List list = Item.POTION.g(itemstack); if (list != null) { Iterator iterator = list.iterator(); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java index 8cf3a5cce1..45bcf23e78 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java @@ -16,7 +16,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { private int[] h = new int[2]; private int[] i = new int[2]; private int j; - private static final IEntitySelector bI = new EntitySelectorNotUndead(); + private static final IEntitySelector bJ = new EntitySelectorNotUndead(); public EntityWither(World world) { super(world); @@ -24,16 +24,16 @@ public class EntityWither extends EntityMonster implements IRangedEntity { this.texture = "/mob/wither.png"; this.a(0.9F, 4.0F); this.fireProof = true; - this.bG = 0.6F; + this.bH = 0.6F; this.getNavigation().e(true); this.goalSelector.a(0, new PathfinderGoalFloat(this)); - this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bG, 40, 20.0F)); - this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bG)); + this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bH, 40, 20.0F)); + this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bH)); this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false)); - this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 30.0F, 0, false, false, bI)); - this.bc = 50; + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 30.0F, 0, false, false, bJ)); + this.bd = 50; } protected void a() { @@ -139,7 +139,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { this.d[i] = this.b(this.d[i], f1, 40.0F); this.e[i] = this.b(this.e[i], f, 10.0F); } else { - this.e[i] = this.b(this.e[i], this.aw, 10.0F); + this.e[i] = this.b(this.e[i], this.ax, 10.0F); } } @@ -222,7 +222,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { this.c(i, 0); } } else { - List list = this.world.a(EntityLiving.class, this.boundingBox.grow(20.0D, 8.0D, 20.0D), bI); + List list = this.world.a(EntityLiving.class, this.boundingBox.grow(20.0D, 8.0D, 20.0D), bJ); for (int i1 = 0; i1 < 10 && !list.isEmpty(); ++i1) { EntityLiving entityliving = (EntityLiving) list.get(this.random.nextInt(list.size())); @@ -311,7 +311,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { if (i <= 0) { return this.locX; } else { - float f = (this.aw + (float) (180 * (i - 1))) / 180.0F * 3.1415927F; + float f = (this.ax + (float) (180 * (i - 1))) / 180.0F * 3.1415927F; float f1 = MathHelper.cos(f); return this.locX + (double) f1 * 1.3D; @@ -326,7 +326,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { if (i <= 0) { return this.locZ; } else { - float f = (this.aw + (float) (180 * (i - 1))) / 180.0F * 3.1415927F; + float f = (this.ax + (float) (180 * (i - 1))) / 180.0F * 3.1415927F; float f1 = MathHelper.sin(f); return this.locZ + (double) f1 * 1.3D; @@ -418,7 +418,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { } protected void bk() { - this.bA = 0; + this.bB = 0; } public boolean L() { diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java index 74e98c49d3..cd71c1dcc4 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -13,15 +13,15 @@ public class EntityWolf extends EntityTameableAnimal { super(world); this.texture = "/mob/wolf.png"; this.a(0.6F, 0.8F); - this.bG = 0.3F; + this.bH = 0.3F; this.getNavigation().a(true); this.goalSelector.a(1, new PathfinderGoalFloat(this)); this.goalSelector.a(2, this.d); this.goalSelector.a(3, new PathfinderGoalLeapAtTarget(this, 0.4F)); - this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, this.bG, true)); - this.goalSelector.a(5, new PathfinderGoalFollowOwner(this, this.bG, 10.0F, 2.0F)); - this.goalSelector.a(6, new PathfinderGoalBreed(this, this.bG)); - this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, this.bG)); + this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, this.bH, true)); + this.goalSelector.a(5, new PathfinderGoalFollowOwner(this, this.bH, 10.0F, 2.0F)); + this.goalSelector.a(6, new PathfinderGoalBreed(this, this.bH)); + this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, this.bH)); this.goalSelector.a(8, new PathfinderGoalBeg(this, 8.0F)); this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(9, new PathfinderGoalRandomLookaround(this)); @@ -119,7 +119,7 @@ public class EntityWolf extends EntityTameableAnimal { } if (this.bM()) { - this.bH = 10; + this.bI = 10; } if (this.G()) { @@ -220,7 +220,7 @@ public class EntityWolf extends EntityTameableAnimal { if (entityhuman.name.equalsIgnoreCase(this.getOwnerName()) && !this.world.isStatic && !this.c(itemstack)) { this.d.a(!this.isSitting()); - this.bE = false; + this.bF = false; this.setPathEntity((PathEntity) null); } } else if (itemstack != null && itemstack.id == Item.BONE.id && !this.isAngry()) { diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java index a0934a25e0..87a63e1331 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -11,15 +11,15 @@ public class EntityZombie extends EntityMonster { public EntityZombie(World world) { super(world); this.texture = "/mob/zombie.png"; - this.bG = 0.23F; + this.bH = 0.23F; this.getNavigation().b(true); this.goalSelector.a(0, new PathfinderGoalFloat(this)); this.goalSelector.a(1, new PathfinderGoalBreakDoor(this)); - this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bG, false)); - this.goalSelector.a(3, new PathfinderGoalMeleeAttack(this, EntityVillager.class, this.bG, true)); - this.goalSelector.a(4, new PathfinderGoalMoveTowardsRestriction(this, this.bG)); - this.goalSelector.a(5, new PathfinderGoalMoveThroughVillage(this, this.bG, false)); - this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, this.bG)); + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bH, false)); + this.goalSelector.a(3, new PathfinderGoalMeleeAttack(this, EntityVillager.class, this.bH, true)); + this.goalSelector.a(4, new PathfinderGoalMoveTowardsRestriction(this, this.bH)); + this.goalSelector.a(5, new PathfinderGoalMoveThroughVillage(this, this.bH, false)); + this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, this.bH)); this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false)); @@ -235,7 +235,7 @@ public class EntityZombie extends EntityMonster { } public void bG() { - this.canPickUpLoot = this.random.nextFloat() < as[this.world.difficulty]; + this.canPickUpLoot = this.random.nextFloat() < at[this.world.difficulty]; if (this.world.random.nextFloat() < 0.05F) { this.setVillager(true); } @@ -253,7 +253,7 @@ public class EntityZombie extends EntityMonster { } public boolean a(EntityHuman entityhuman) { - ItemStack itemstack = entityhuman.bT(); + ItemStack itemstack = entityhuman.bS(); if (itemstack != null && itemstack.getItem() == Item.GOLDEN_APPLE && itemstack.getData() == 0 && this.isVillager() && this.hasEffect(MobEffectList.WEAKNESS)) { if (!entityhuman.abilities.canInstantlyBuild) { diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java index fae57de185..ba2f88f0af 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -144,10 +144,11 @@ public class Explosion { if (!event.isCancelled()) { damagee.setLastDamageCause(event); entity.damageEntity(DamageSource.EXPLOSION, event.getDamage()); + double d11 = EnchantmentProtection.a(entity, d10); - entity.motX += d0 * d10; - entity.motY += d1 * d10; - entity.motZ += d2 * d10; + entity.motX += d0 * d11; + entity.motY += d1 * d11; + entity.motZ += d2 * d11; if (entity instanceof EntityHuman) { this.l.put((EntityHuman) entity, this.world.getVec3DPool().create(d0 * d10, d1 * d10, d2 * d10)); } diff --git a/src/main/java/net/minecraft/server/FoodMetaData.java b/src/main/java/net/minecraft/server/FoodMetaData.java index 2bd3af1475..c311f57e9d 100644 --- a/src/main/java/net/minecraft/server/FoodMetaData.java +++ b/src/main/java/net/minecraft/server/FoodMetaData.java @@ -39,12 +39,12 @@ public class FoodMetaData { this.foodLevel = event.getFoodLevel(); } - ((EntityPlayer) entityhuman).netServerHandler.sendPacket(new Packet8UpdateHealth(entityhuman.getHealth(), this.foodLevel, this.saturationLevel)); + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet8UpdateHealth(entityhuman.getHealth(), this.foodLevel, this.saturationLevel)); // CraftBukkit end } } - if (this.foodLevel >= 18 && entityhuman.ce()) { + if (this.foodLevel >= 18 && entityhuman.cd()) { ++this.foodTickTimer; if (this.foodTickTimer >= 80) { // CraftBukkit - added RegainReason diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java index f952b38bfa..fd34f9069e 100644 --- a/src/main/java/net/minecraft/server/ItemBlock.java +++ b/src/main/java/net/minecraft/server/ItemBlock.java @@ -101,7 +101,7 @@ public class ItemBlock extends Item { } } - public String c_(ItemStack itemstack) { + public String d(ItemStack itemstack) { return Block.byId[this.id].a(); } diff --git a/src/main/java/net/minecraft/server/ItemBoat.java b/src/main/java/net/minecraft/server/ItemBoat.java index 5bd2e94311..cb9b38d547 100644 --- a/src/main/java/net/minecraft/server/ItemBoat.java +++ b/src/main/java/net/minecraft/server/ItemBoat.java @@ -73,6 +73,7 @@ public class ItemBoat extends Item { EntityBoat entityboat = new EntityBoat(world, (double) ((float) i + 0.5F), (double) ((float) j + 1.0F), (double) ((float) k + 0.5F)); + entityboat.yaw = (float) (((MathHelper.floor((double) (entityhuman.yaw * 4.0F / 360.0F) + 0.5D) & 3) - 1) * 90); if (!world.getCubes(entityboat, entityboat.boundingBox.grow(-0.1D, -0.1D, -0.1D)).isEmpty()) { return itemstack; } diff --git a/src/main/java/net/minecraft/server/ItemBow.java b/src/main/java/net/minecraft/server/ItemBow.java index 90c3bd4442..f62ec9a780 100644 --- a/src/main/java/net/minecraft/server/ItemBow.java +++ b/src/main/java/net/minecraft/server/ItemBow.java @@ -13,7 +13,7 @@ public class ItemBow extends Item { boolean flag = entityhuman.abilities.canInstantlyBuild || EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_INFINITE.id, itemstack) > 0; if (flag || entityhuman.inventory.e(Item.ARROW.id)) { - int j = this.a(itemstack) - i; + int j = this.c_(itemstack) - i; float f = (float) j / 20.0F; f = (f * f + f * 2.0F) / 3.0F; @@ -74,17 +74,17 @@ public class ItemBow extends Item { return itemstack; } - public int a(ItemStack itemstack) { + public int c_(ItemStack itemstack) { return 72000; } - public EnumAnimation d_(ItemStack itemstack) { + public EnumAnimation b_(ItemStack itemstack) { return EnumAnimation.e; } public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { if (entityhuman.abilities.canInstantlyBuild || entityhuman.inventory.e(Item.ARROW.id)) { - entityhuman.a(itemstack, this.a(itemstack)); + entityhuman.a(itemstack, this.c_(itemstack)); } return itemstack; diff --git a/src/main/java/net/minecraft/server/ItemDye.java b/src/main/java/net/minecraft/server/ItemDye.java index e8c1684a94..75cbf7de25 100644 --- a/src/main/java/net/minecraft/server/ItemDye.java +++ b/src/main/java/net/minecraft/server/ItemDye.java @@ -8,7 +8,7 @@ import org.bukkit.event.entity.SheepDyeWoolEvent; public class ItemDye extends Item { public static final String[] a = new String[] { "black", "red", "green", "brown", "blue", "purple", "cyan", "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white"}; - public static final int[] b = new int[] { 1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 2651799, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320}; + public static final int[] b = new int[] { 1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320}; public ItemDye(int i) { super(i); @@ -17,7 +17,7 @@ public class ItemDye extends Item { this.a(CreativeModeTab.l); } - public String c_(ItemStack itemstack) { + public String d(ItemStack itemstack) { int i = MathHelper.a(itemstack.getData(), 0, 15); return super.getName() + "." + a[i]; diff --git a/src/main/java/net/minecraft/server/ItemFood.java b/src/main/java/net/minecraft/server/ItemFood.java index 5a3862d231..28fbe430cf 100644 --- a/src/main/java/net/minecraft/server/ItemFood.java +++ b/src/main/java/net/minecraft/server/ItemFood.java @@ -5,18 +5,18 @@ public class ItemFood extends Item { public final int a; private final int b; private final float c; - private final boolean cl; - private boolean cm; - private int cn; - private int co; - private int cp; - private float cq; + private final boolean co; + private boolean cp; + private int cq; + private int cr; + private int cs; + private float ct; public ItemFood(int i, int j, float f, boolean flag) { super(i); this.a = 32; this.b = j; - this.cl = flag; + this.co = flag; this.c = f; this.a(CreativeModeTab.h); } @@ -36,7 +36,7 @@ public class ItemFood extends Item { entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, this.getSaturationModifier()); } - ((EntityPlayer) entityhuman).netServerHandler.sendPacket(new Packet8UpdateHealth(entityhuman.getHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet8UpdateHealth(entityhuman.getHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); // CraftBukkit end world.makeSound(entityhuman, "random.burp", 0.5F, world.random.nextFloat() * 0.1F + 0.9F); @@ -45,22 +45,22 @@ public class ItemFood extends Item { } protected void c(ItemStack itemstack, World world, EntityHuman entityhuman) { - if (!world.isStatic && this.cn > 0 && world.random.nextFloat() < this.cq) { - entityhuman.addEffect(new MobEffect(this.cn, this.co * 20, this.cp)); + if (!world.isStatic && this.cq > 0 && world.random.nextFloat() < this.ct) { + entityhuman.addEffect(new MobEffect(this.cq, this.cr * 20, this.cs)); } } - public int a(ItemStack itemstack) { + public int c_(ItemStack itemstack) { return 32; } - public EnumAnimation d_(ItemStack itemstack) { + public EnumAnimation b_(ItemStack itemstack) { return EnumAnimation.b; } public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { - if (entityhuman.f(this.cm)) { - entityhuman.a(itemstack, this.a(itemstack)); + if (entityhuman.g(this.cp)) { + entityhuman.a(itemstack, this.c_(itemstack)); } return itemstack; @@ -75,19 +75,19 @@ public class ItemFood extends Item { } public boolean i() { - return this.cl; + return this.co; } public ItemFood a(int i, int j, int k, float f) { - this.cn = i; - this.co = j; - this.cp = k; - this.cq = f; + this.cq = i; + this.cr = j; + this.cs = k; + this.ct = f; return this; } public ItemFood j() { - this.cm = true; + this.cp = true; return this; } } diff --git a/src/main/java/net/minecraft/server/ItemMinecart.java b/src/main/java/net/minecraft/server/ItemMinecart.java index a0c1d88d50..cd06b9b703 100644 --- a/src/main/java/net/minecraft/server/ItemMinecart.java +++ b/src/main/java/net/minecraft/server/ItemMinecart.java @@ -14,7 +14,7 @@ public class ItemMinecart extends Item { public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { int i1 = world.getTypeId(i, j, k); - if (BlockMinecartTrack.d(i1)) { + if (BlockMinecartTrack.e(i1)) { if (!world.isStatic) { // CraftBukkit start - Minecarts org.bukkit.event.player.PlayerInteractEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(entityhuman, org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK, i, j, k, l, itemstack); diff --git a/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/src/main/java/net/minecraft/server/ItemMonsterEgg.java index cb8fc6398e..ead857e4ed 100644 --- a/src/main/java/net/minecraft/server/ItemMonsterEgg.java +++ b/src/main/java/net/minecraft/server/ItemMonsterEgg.java @@ -8,7 +8,7 @@ public class ItemMonsterEgg extends Item { this.a(CreativeModeTab.f); } - public String j(ItemStack itemstack) { + public String i(ItemStack itemstack) { String s = ("" + LocaleI18n.get(this.getName() + ".name")).trim(); String s1 = EntityTypes.b(itemstack.getData()); @@ -50,11 +50,15 @@ public class ItemMonsterEgg extends Item { for (int j = 0; j < 1; ++j) { entity = EntityTypes.a(i, world); - if (entity != null && entity instanceof EntityLiving) { // CraftBukkit - entity.setPositionRotation(d0, d1, d2, world.random.nextFloat() * 360.0F, 0.0F); - ((EntityLiving) entity).bG(); + if (entity != null && entity instanceof EntityLiving) { + EntityLiving entityliving = (EntityLiving) entity; + + entity.setPositionRotation(d0, d1, d2, MathHelper.g(world.random.nextFloat() * 360.0F), 0.0F); + entityliving.az = entityliving.yaw; + entityliving.ax = entityliving.yaw; + entityliving.bG(); world.addEntity(entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG); // CraftBukkit - ((EntityLiving) entity).aO(); + entityliving.aO(); } } diff --git a/src/main/java/net/minecraft/server/ItemSkull.java b/src/main/java/net/minecraft/server/ItemSkull.java index 1dcc3be8c9..facd5d4472 100644 --- a/src/main/java/net/minecraft/server/ItemSkull.java +++ b/src/main/java/net/minecraft/server/ItemSkull.java @@ -89,7 +89,7 @@ public class ItemSkull extends Item { return i; } - public String c_(ItemStack itemstack) { + public String d(ItemStack itemstack) { int i = itemstack.getData(); if (i < 0 || i >= a.length) { @@ -99,7 +99,7 @@ public class ItemSkull extends Item { return super.getName() + "." + a[i]; } - public String j(ItemStack itemstack) { - return itemstack.getData() == 3 && itemstack.hasTag() && itemstack.getTag().hasKey("SkullOwner") ? LocaleI18n.get("item.skull.player.name", new Object[] { itemstack.getTag().getString("SkullOwner")}) : super.j(itemstack); + public String l(ItemStack itemstack) { + return itemstack.getData() == 3 && itemstack.hasTag() && itemstack.getTag().hasKey("SkullOwner") ? LocaleI18n.get("item.skull.player.name", new Object[] { itemstack.getTag().getString("SkullOwner")}) : super.l(itemstack); } } diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java index d0a60c2dd4..a09d8d895f 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -149,9 +149,17 @@ public final class ItemStack { public void damage(int i, EntityLiving entityliving) { if (this.f()) { if (i > 0 && entityliving instanceof EntityHuman) { - int j = EnchantmentManager.getDurabilityEnchantmentLevel(entityliving); + int j = EnchantmentManager.getEnchantmentLevel(Enchantment.DURABILITY.id, this); + int k = 0; - if (j > 0 && entityliving.world.random.nextInt(j + 1) > 0) { + for (int l = 0; j > 0 && l < i; ++l) { + if (EnchantmentDurability.a(this, j, entityliving.world.random)) { + ++k; + } + } + + i -= k; + if (i <= 0) { return; } } @@ -237,7 +245,7 @@ public final class ItemStack { } public String a() { - return Item.byId[this.id].c_(this); + return Item.byId[this.id].d(this); } public static ItemStack b(ItemStack itemstack) { @@ -262,11 +270,11 @@ public final class ItemStack { } public int m() { - return this.getItem().a(this); + return this.getItem().c_(this); } public EnumAnimation n() { - return this.getItem().d_(this); + return this.getItem().b_(this); } public void b(World world, EntityHuman entityhuman, int i) { @@ -290,7 +298,7 @@ public final class ItemStack { } public String r() { - String s = this.getItem().j(this); + String s = this.getItem().l(this); if (this.tag != null && this.tag.hasKey("display")) { NBTTagCompound nbttagcompound = this.tag.getCompound("display"); @@ -320,7 +328,7 @@ public final class ItemStack { } public boolean v() { - return !this.getItem().k(this) ? false : !this.hasEnchantments(); + return !this.getItem().d_(this) ? false : !this.hasEnchantments(); } public void addEnchantment(Enchantment enchantment, int i) { diff --git a/src/main/java/net/minecraft/server/ItemStep.java b/src/main/java/net/minecraft/server/ItemStep.java index f1ab801ca7..8501394ca8 100644 --- a/src/main/java/net/minecraft/server/ItemStep.java +++ b/src/main/java/net/minecraft/server/ItemStep.java @@ -19,7 +19,7 @@ public class ItemStep extends ItemBlock { return i; } - public String c_(ItemStack itemstack) { + public String d(ItemStack itemstack) { return this.b.d(itemstack.getData()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 6b10bfcba7..2f200385fa 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -39,7 +39,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo private String serverIp; private int s = -1; // public WorldServer[] worldServer; // CraftBukkit - removed! - private ServerConfigurationManagerAbstract t; + private PlayerList t; private boolean isRunning = true; private boolean isStopped = false; private int ticks = 0; @@ -126,6 +126,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo BlockDispenser.a.a(Item.EXP_BOTTLE, new DispenseBehaviorExpBottle(this)); BlockDispenser.a.a(Item.POTION, new DispenseBehaviorPotion(this)); BlockDispenser.a.a(Item.MONSTER_EGG, new DispenseBehaviorMonsterEgg(this)); + BlockDispenser.a.a(Item.FIREWORKS, new DispenseBehaviorFireworks(this)); BlockDispenser.a.a(Item.FIREBALL, new DispenseBehaviorFireball(this)); DispenseBehaviorMinecart dispensebehaviorminecart = new DispenseBehaviorMinecart(this); @@ -537,9 +538,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo // Send timeupdates to everyone, it will get the right time from the world the player is in. if (this.ticks % 20 == 0) { - for (int i = 0; i < this.getServerConfigurationManager().players.size(); ++i) { - EntityPlayer entityplayer = (EntityPlayer) this.getServerConfigurationManager().players.get(i); - entityplayer.netServerHandler.sendPacket(new Packet4UpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime())); // Add support for per player time + for (int i = 0; i < this.getPlayerList().players.size(); ++i) { + EntityPlayer entityplayer = (EntityPlayer) this.getPlayerList().players.get(i); + entityplayer.playerConnection.sendPacket(new Packet4UpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime())); // Add support for per player time } } @@ -757,7 +758,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo } public String getVersion() { - return "1.4.5"; + return "1.4.6"; } public int y() { @@ -1085,7 +1086,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo public abstract boolean T(); public boolean getOnlineMode() { - return this.onlineMode; + return this.server.getOnlineMode(); // CraftBukkit } public void setOnlineMode(boolean flag) { @@ -1146,12 +1147,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo return this.isStopped; } - public ServerConfigurationManagerAbstract getServerConfigurationManager() { + public PlayerList getPlayerList() { return this.t; } - public void a(ServerConfigurationManagerAbstract serverconfigurationmanagerabstract) { - this.t = serverconfigurationmanagerabstract; + public void a(PlayerList playerlist) { + this.t = playerlist; } public void a(EnumGamemode enumgamemode) { @@ -1186,7 +1187,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo return 16; } - public static ServerConfigurationManagerAbstract a(MinecraftServer minecraftserver) { + public static PlayerList a(MinecraftServer minecraftserver) { return minecraftserver.t; } } diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 25c276657a..7c64e9bbb0 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -31,7 +31,7 @@ public class NetworkManager implements INetworkManager { private java.util.Queue inboundQueue = new java.util.concurrent.ConcurrentLinkedQueue(); // CraftBukkit - Concurrent linked queue private List highPriorityQueue = Collections.synchronizedList(new ArrayList()); private List lowPriorityQueue = Collections.synchronizedList(new ArrayList()); - private NetHandler packetListener; + private Connection connection; private boolean s = false; private Thread t; private Thread u; @@ -48,11 +48,11 @@ public class NetworkManager implements INetworkManager { private PrivateKey A = null; private int lowPriorityQueueDelay = 50; - public NetworkManager(Socket socket, String s, NetHandler nethandler, PrivateKey privatekey) throws IOException { // CraftBukkit - throws IOException + public NetworkManager(Socket socket, String s, Connection connection, PrivateKey privatekey) throws IOException { // CraftBukkit - throws IOException this.A = privatekey; this.socket = socket; this.j = socket.getRemoteSocketAddress(); - this.packetListener = nethandler; + this.connection = connection; try { socket.setSoTimeout(30000); @@ -69,8 +69,8 @@ public class NetworkManager implements INetworkManager { this.t.start(); } - public void a(NetHandler nethandler) { - this.packetListener = nethandler; + public void a(Connection connection) { + this.connection = connection; } public void queue(Packet packet) { @@ -97,7 +97,7 @@ public class NetworkManager implements INetworkManager { if (packet != null) { Packet.a(packet, this.output); if (packet instanceof Packet252KeyResponse && !this.g) { - if (!this.packetListener.a()) { + if (!this.connection.a()) { this.z = ((Packet252KeyResponse) packet).d(); } @@ -187,11 +187,11 @@ public class NetworkManager implements INetworkManager { boolean flag = false; try { - Packet packet = Packet.a(this.input, this.packetListener.a(), this.socket); + Packet packet = Packet.a(this.input, this.connection.a(), this.socket); if (packet != null) { if (packet instanceof Packet252KeyResponse && !this.f) { - if (this.packetListener.a()) { + if (this.connection.a()) { this.z = ((Packet252KeyResponse) packet).a(this.A); } @@ -203,9 +203,9 @@ public class NetworkManager implements INetworkManager { aint[i] += packet.a() + 1; if (!this.s) { - if (packet.a_() && this.packetListener.b()) { + if (packet.a_() && this.connection.b()) { this.x = 0; - packet.handle(this.packetListener); + packet.handle(this.connection); } else { this.inboundQueue.add(packet); } @@ -282,17 +282,17 @@ public class NetworkManager implements INetworkManager { Packet packet = (Packet) this.inboundQueue.poll(); // CraftBukkit - remove -> poll // CraftBukkit start - if (this.packetListener instanceof NetLoginHandler ? ((NetLoginHandler) this.packetListener).c : ((NetServerHandler) this.packetListener).disconnected) { + if (this.connection instanceof PendingConnection ? ((PendingConnection) this.connection).c : ((PlayerConnection) this.connection).disconnected) { continue; } // CraftBukkit end - packet.handle(this.packetListener); + packet.handle(this.connection); } this.a(); if (this.n && this.inboundQueue.isEmpty()) { - this.packetListener.a(this.v, this.w); + this.connection.a(this.v, this.w); } } diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java index dc692dd037..a754da985f 100644 --- a/src/main/java/net/minecraft/server/Packet.java +++ b/src/main/java/net/minecraft/server/Packet.java @@ -172,7 +172,7 @@ public abstract class Packet { public abstract void a(DataOutputStream dataoutputstream) throws IOException; // CraftBukkit - throws IOException - public abstract void handle(NetHandler nethandler); + public abstract void handle(Connection connection); public abstract int a(); @@ -267,12 +267,11 @@ public abstract class Packet { a(13, true, true, Packet13PlayerLookMove.class); a(14, false, true, Packet14BlockDig.class); a(15, false, true, Packet15Place.class); - a(16, false, true, Packet16BlockItemSwitch.class); + a(16, true, true, Packet16BlockItemSwitch.class); a(17, true, false, Packet17EntityLocationAction.class); a(18, true, true, Packet18ArmAnimation.class); a(19, false, true, Packet19EntityAction.class); a(20, true, false, Packet20NamedEntitySpawn.class); - a(21, true, false, Packet21PickupSpawn.class); a(22, true, false, Packet22Collect.class); a(23, true, false, Packet23VehicleSpawn.class); a(24, true, false, Packet24MobSpawn.class); diff --git a/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java b/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java index 25d4ab8c4d..68e48ef62b 100644 --- a/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java +++ b/src/main/java/net/minecraft/server/Packet20NamedEntitySpawn.java @@ -67,8 +67,8 @@ public class Packet20NamedEntitySpawn extends Packet { this.i.a(dataoutputstream); } - public void handle(NetHandler nethandler) { - nethandler.a(this); + public void handle(Connection connection) { + connection.a(this); } public int a() { diff --git a/src/main/java/net/minecraft/server/Packet2Handshake.java b/src/main/java/net/minecraft/server/Packet2Handshake.java index 435e7e0b5d..343af93df8 100644 --- a/src/main/java/net/minecraft/server/Packet2Handshake.java +++ b/src/main/java/net/minecraft/server/Packet2Handshake.java @@ -28,8 +28,8 @@ public class Packet2Handshake extends Packet { dataoutputstream.writeInt(this.d); } - public void handle(NetHandler nethandler) { - nethandler.a(this); + public void handle(Connection connection) { + connection.a(this); } public int a() { diff --git a/src/main/java/net/minecraft/server/Packet3Chat.java b/src/main/java/net/minecraft/server/Packet3Chat.java index 7c0205b6fe..b8f3f25dc6 100644 --- a/src/main/java/net/minecraft/server/Packet3Chat.java +++ b/src/main/java/net/minecraft/server/Packet3Chat.java @@ -40,8 +40,8 @@ public class Packet3Chat extends Packet { a(this.message, dataoutputstream); } - public void handle(NetHandler nethandler) { - nethandler.a(this); + public void handle(Connection connection) { + connection.a(this); } public int a() { diff --git a/src/main/java/net/minecraft/server/Packet51MapChunk.java b/src/main/java/net/minecraft/server/Packet51MapChunk.java index b6d8ba57c7..8ae452a733 100644 --- a/src/main/java/net/minecraft/server/Packet51MapChunk.java +++ b/src/main/java/net/minecraft/server/Packet51MapChunk.java @@ -94,8 +94,8 @@ public class Packet51MapChunk extends Packet { dataoutputstream.write(this.buffer, 0, this.size); } - public void handle(NetHandler nethandler) { - nethandler.a(this); + public void handle(Connection connection) { + connection.a(this); } public int a() { @@ -152,11 +152,13 @@ public class Packet51MapChunk extends Packet { } } - for (l = 0; l < achunksection.length; ++l) { - if (achunksection[l] != null && (!flag || !achunksection[l].a()) && (i & 1 << l) != 0) { - nibblearray = achunksection[l].l(); - System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); - j += nibblearray.a.length; + if (!chunk.world.worldProvider.f) { + for (l = 0; l < achunksection.length; ++l) { + if (achunksection[l] != null && (!flag || !achunksection[l].a()) && (i & 1 << l) != 0) { + nibblearray = achunksection[l].l(); + System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); + j += nibblearray.a.length; + } } } diff --git a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java index 07681a8848..867ebd3abc 100644 --- a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java +++ b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java @@ -17,6 +17,7 @@ public class Packet56MapChunkBulk extends Packet { private byte[] buffer; private byte[][] inflatedBuffers; private int size; + private boolean h; private byte[] buildBuffer = new byte[0]; // CraftBukkit - remove static // CraftBukkit start static final ThreadLocal localDeflater = new ThreadLocal() { @@ -38,6 +39,7 @@ public class Packet56MapChunkBulk extends Packet { this.a = new int[i]; this.b = new int[i]; this.inflatedBuffers = new byte[i][]; + this.h = !list.isEmpty() && !((Chunk) list.get(0)).world.worldProvider.f; int j = 0; for (int k = 0; k < i; ++k) { @@ -94,6 +96,7 @@ public class Packet56MapChunkBulk extends Packet { short short1 = datainputstream.readShort(); this.size = datainputstream.readInt(); + this.h = datainputstream.readBoolean(); this.c = new int[short1]; this.d = new int[short1]; this.a = new int[short1]; @@ -125,17 +128,24 @@ public class Packet56MapChunkBulk extends Packet { this.a[j] = datainputstream.readShort(); this.b[j] = datainputstream.readShort(); int k = 0; + int l = 0; - int l; + int i1; - for (l = 0; l < 16; ++l) { - k += this.a[j] >> l & 1; + for (i1 = 0; i1 < 16; ++i1) { + k += this.a[j] >> i1 & 1; + l += this.b[j] >> i1 & 1; } - l = 2048 * 5 * k + 256; - this.inflatedBuffers[j] = new byte[l]; - System.arraycopy(abyte, i, this.inflatedBuffers[j], 0, l); - i += l; + i1 = 2048 * 4 * k + 256; + i1 += 2048 * l; + if (this.h) { + i1 += 2048 * k; + } + + this.inflatedBuffers[j] = new byte[i1]; + System.arraycopy(abyte, i, this.inflatedBuffers[j], 0, i1); + i += i1; } } @@ -143,6 +153,7 @@ public class Packet56MapChunkBulk extends Packet { compress(); // CraftBukkit dataoutputstream.writeShort(this.c.length); dataoutputstream.writeInt(this.size); + dataoutputstream.writeBoolean(this.h); dataoutputstream.write(this.buffer, 0, this.size); for (int i = 0; i < this.c.length; ++i) { @@ -153,8 +164,8 @@ public class Packet56MapChunkBulk extends Packet { } } - public void handle(NetHandler nethandler) { - nethandler.a(this); + public void handle(Connection connection) { + connection.a(this); } public int a() { diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java index d5ab4ce7cf..a2c57a6235 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java @@ -85,7 +85,7 @@ public class PathfinderGoalBreed extends PathfinderGoal { this.a.addParticle("heart", this.d.locX + (double) (random.nextFloat() * this.d.width * 2.0F) - (double) this.d.width, this.d.locY + 0.5D + (double) (random.nextFloat() * this.d.length), this.d.locZ + (double) (random.nextFloat() * this.d.width * 2.0F) - (double) this.d.width, d0, d1, d2); } - this.a.addEntity(new EntityExperienceOrb(this.a, this.d.locX, this.d.locY, this.d.locZ, random.nextInt(4) + 1)); + this.a.addEntity(new EntityExperienceOrb(this.a, this.d.locX, this.d.locY, this.d.locZ, random.nextInt(7) + 1)); } } } diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/PendingConnection.java similarity index 74% rename from src/main/java/net/minecraft/server/NetLoginHandler.java rename to src/main/java/net/minecraft/server/PendingConnection.java index 977c89c3e1..8413a1527b 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java @@ -12,7 +12,7 @@ import java.util.Random; import java.util.logging.Logger; import javax.crypto.SecretKey; -public class NetLoginHandler extends NetHandler { +public class PendingConnection extends Connection { private byte[] d; public static Logger logger = Logger.getLogger("Minecraft"); @@ -24,11 +24,11 @@ public class NetLoginHandler extends NetHandler { private String h = null; private volatile boolean i = false; private String loginKey = Long.toString(random.nextLong(), 16); // CraftBukkit - Security fix - private SecretKey k = null; + private boolean k = false; + private SecretKey l = null; public String hostname = ""; // CraftBukkit - add field - private boolean login = false; // CraftBukkit - public NetLoginHandler(MinecraftServer minecraftserver, Socket socket, String s) throws java.io.IOException { // CraftBukkit - throws IOException + public PendingConnection(MinecraftServer minecraftserver, Socket socket, String s) throws java.io.IOException { // CraftBukkit - throws IOException this.server = minecraftserver; this.networkManager = new NetworkManager(socket, s, this, minecraftserver.F().getPrivate()); this.networkManager.e = 0; @@ -73,8 +73,8 @@ public class NetLoginHandler extends NetHandler { } else { PublicKey publickey = this.server.F().getPublic(); - if (packet2handshake.d() != 49) { - if (packet2handshake.d() > 49) { + if (packet2handshake.d() != 51) { + if (packet2handshake.d() > 51) { this.disconnect("Outdated server!"); } else { this.disconnect("Outdated client!"); @@ -91,7 +91,7 @@ public class NetLoginHandler extends NetHandler { public void a(Packet252KeyResponse packet252keyresponse) { PrivateKey privatekey = this.server.F().getPrivate(); - this.k = packet252keyresponse.a(privatekey); + this.l = packet252keyresponse.a(privatekey); if (!Arrays.equals(this.d, packet252keyresponse.b(privatekey))) { this.disconnect("Invalid client reply"); } @@ -102,13 +102,11 @@ public class NetLoginHandler extends NetHandler { public void a(Packet205ClientCommand packet205clientcommand) { if (packet205clientcommand.a == 0) { if (this.server.getOnlineMode()) { - // CraftBukkit start - if (this.login) { + if (this.k) { this.disconnect("Duplicate login"); return; } - this.login = true; - // CraftBukkit end + this.k = true; (new ThreadLoginVerifier(this, server.server)).start(); // CraftBukkit - add CraftServer } else { this.i = true; @@ -120,16 +118,16 @@ public class NetLoginHandler extends NetHandler { public void d() { // CraftBukkit start - EntityPlayer s = this.server.getServerConfigurationManager().attemptLogin(this, this.h, this.hostname); + EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.h, this.hostname); if (s == null) { return; // CraftBukkit end } else { - EntityPlayer entityplayer = this.server.getServerConfigurationManager().processLogin(s); // CraftBukkit - this.h -> s + EntityPlayer entityplayer = this.server.getPlayerList().processLogin(s); // CraftBukkit - this.h -> s if (entityplayer != null) { - this.server.getServerConfigurationManager().a((INetworkManager) this.networkManager, entityplayer); + this.server.getPlayerList().a((INetworkManager) this.networkManager, entityplayer); } } @@ -144,14 +142,14 @@ public class NetLoginHandler extends NetHandler { public void a(Packet254GetInfo packet254getinfo) { if (this.networkManager.getSocket() == null) return; // CraftBukkit - fix NPE when a client queries a server that is unable to handle it. try { - ServerConfigurationManagerAbstract serverconfigurationmanagerabstract = this.server.getServerConfigurationManager(); + PlayerList playerlist = this.server.getPlayerList(); String s = null; // CraftBukkit - org.bukkit.event.server.ServerListPingEvent pingEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.getMotd(), serverconfigurationmanagerabstract.getPlayerCount(), serverconfigurationmanagerabstract.getMaxPlayers()); + org.bukkit.event.server.ServerListPingEvent pingEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.getMotd(), playerlist.getPlayerCount(), playerlist.getMaxPlayers()); if (packet254getinfo.a == 1) { // CraftBukkit start - fix decompile issues, don't create a list from an array - Object[] list = new Object[] { 1, 49, this.server.getVersion(), pingEvent.getMotd(), serverconfigurationmanagerabstract.getPlayerCount(), pingEvent.getMaxPlayers() }; + Object[] list = new Object[] { 1, 51, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() }; for (Object object : list) { if (s == null) { @@ -165,7 +163,7 @@ public class NetLoginHandler extends NetHandler { // CraftBukkit end } else { // CraftBukkit - s = pingEvent.getMotd() + "\u00A7" + serverconfigurationmanagerabstract.getPlayerCount() + "\u00A7" + pingEvent.getMaxPlayers(); + s = pingEvent.getMotd() + "\u00A7" + playerlist.getPlayerCount() + "\u00A7" + pingEvent.getMaxPlayers(); } InetAddress inetaddress = null; @@ -198,23 +196,23 @@ public class NetLoginHandler extends NetHandler { return true; } - static String a(NetLoginHandler netloginhandler) { - return netloginhandler.loginKey; + static String a(PendingConnection pendingconnection) { + return pendingconnection.loginKey; } - static MinecraftServer b(NetLoginHandler netloginhandler) { - return netloginhandler.server; + static MinecraftServer b(PendingConnection pendingconnection) { + return pendingconnection.server; } - static SecretKey c(NetLoginHandler netloginhandler) { - return netloginhandler.k; + static SecretKey c(PendingConnection pendingconnection) { + return pendingconnection.l; } - static String d(NetLoginHandler netloginhandler) { - return netloginhandler.h; + static String d(PendingConnection pendingconnection) { + return pendingconnection.h; } - static boolean a(NetLoginHandler netloginhandler, boolean flag) { - return netloginhandler.i = flag; + static boolean a(PendingConnection pendingconnection, boolean flag) { + return pendingconnection.i = flag; } } diff --git a/src/main/java/net/minecraft/server/PlayerInstance.java b/src/main/java/net/minecraft/server/PlayerChunk.java similarity index 68% rename from src/main/java/net/minecraft/server/PlayerInstance.java rename to src/main/java/net/minecraft/server/PlayerChunk.java index a4d9047516..5350644321 100644 --- a/src/main/java/net/minecraft/server/PlayerInstance.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -3,7 +3,7 @@ package net.minecraft.server; import java.util.ArrayList; import java.util.List; -class PlayerInstance { +class PlayerChunk { private final List b; private final ChunkCoordIntPair location; @@ -12,21 +12,20 @@ class PlayerInstance { private int f; private boolean loaded = false; // CraftBukkit - final PlayerManager playerManager; + final PlayerChunkMap playerChunkMap; - public PlayerInstance(PlayerManager playermanager, int i, int j) { - this.playerManager = playermanager; + public PlayerChunk(PlayerChunkMap playerchunkmap, int i, int j) { + this.playerChunkMap = playerchunkmap; this.b = new ArrayList(); this.dirtyBlocks = new short[64]; this.dirtyCount = 0; this.location = new ChunkCoordIntPair(i, j); // CraftBukkit start - playermanager.a().chunkProviderServer.getChunkAt(i, j, new Runnable() { + playerchunkmap.a().chunkProviderServer.getChunkAt(i, j, new Runnable() { public void run() { - PlayerInstance.this.loaded = true; + PlayerChunk.this.loaded = true; } }); - // CraftBukkit end } public void a(final EntityPlayer entityplayer) { // CraftBukkit - added final to argument @@ -40,9 +39,9 @@ class PlayerInstance { entityplayer.chunkCoordIntPairQueue.add(this.location); } else { // Abuse getChunkAt to add another callback - this.playerManager.a().chunkProviderServer.getChunkAt(this.location.x, this.location.z, new Runnable() { + this.playerChunkMap.a().chunkProviderServer.getChunkAt(this.location.x, this.location.z, new Runnable() { public void run() { - entityplayer.chunkCoordIntPairQueue.add(PlayerInstance.this.location); + entityplayer.chunkCoordIntPairQueue.add(PlayerChunk.this.location); } }); } @@ -52,25 +51,25 @@ class PlayerInstance { public void b(EntityPlayer entityplayer) { if (this.b.contains(entityplayer)) { - entityplayer.netServerHandler.sendPacket(new Packet51MapChunk(PlayerManager.a(this.playerManager).getChunkAt(this.location.x, this.location.z), true, 0)); + entityplayer.playerConnection.sendPacket(new Packet51MapChunk(PlayerChunkMap.a(this.playerChunkMap).getChunkAt(this.location.x, this.location.z), true, 0)); this.b.remove(entityplayer); entityplayer.chunkCoordIntPairQueue.remove(this.location); if (this.b.isEmpty()) { long i = (long) this.location.x + 2147483647L | (long) this.location.z + 2147483647L << 32; - PlayerManager.b(this.playerManager).remove(i); + PlayerChunkMap.b(this.playerChunkMap).remove(i); if (this.dirtyCount > 0) { - PlayerManager.c(this.playerManager).remove(this); + PlayerChunkMap.c(this.playerChunkMap).remove(this); } - this.playerManager.a().chunkProviderServer.queueUnload(this.location.x, this.location.z); + this.playerChunkMap.a().chunkProviderServer.queueUnload(this.location.x, this.location.z); } } } public void a(int i, int j, int k) { if (this.dirtyCount == 0) { - PlayerManager.c(this.playerManager).add(this); + PlayerChunkMap.c(this.playerChunkMap).add(this); } this.f |= 1 << (j >> 4); @@ -92,7 +91,7 @@ class PlayerInstance { EntityPlayer entityplayer = (EntityPlayer) this.b.get(i); if (!entityplayer.chunkCoordIntPairQueue.contains(this.location)) { - entityplayer.netServerHandler.sendPacket(packet); + entityplayer.playerConnection.sendPacket(packet); } } } @@ -107,9 +106,9 @@ class PlayerInstance { i = this.location.x * 16 + (this.dirtyBlocks[0] >> 12 & 15); j = this.dirtyBlocks[0] & 255; k = this.location.z * 16 + (this.dirtyBlocks[0] >> 8 & 15); - this.sendAll(new Packet53BlockChange(i, j, k, PlayerManager.a(this.playerManager))); - if (PlayerManager.a(this.playerManager).isTileEntity(i, j, k)) { - this.sendTileEntity(PlayerManager.a(this.playerManager).getTileEntity(i, j, k)); + this.sendAll(new Packet53BlockChange(i, j, k, PlayerChunkMap.a(this.playerChunkMap))); + if (PlayerChunkMap.a(this.playerChunkMap).isTileEntity(i, j, k)) { + this.sendTileEntity(PlayerChunkMap.a(this.playerChunkMap).getTileEntity(i, j, k)); } } else { int l; @@ -117,12 +116,12 @@ class PlayerInstance { if (this.dirtyCount == 64) { i = this.location.x * 16; j = this.location.z * 16; - this.sendAll(new Packet51MapChunk(PlayerManager.a(this.playerManager).getChunkAt(this.location.x, this.location.z), (this.f == 0xFFFF), this.f)); // CraftBukkit - send everything (including biome) if all sections flagged + this.sendAll(new Packet51MapChunk(PlayerChunkMap.a(this.playerChunkMap).getChunkAt(this.location.x, this.location.z), (this.f == 0xFFFF), this.f)); // CraftBukkit - send everything (including biome) if all sections flagged for (k = 0; k < 16; ++k) { if ((this.f & 1 << k) != 0) { l = k << 4; - List list = PlayerManager.a(this.playerManager).getTileEntities(i, l, j, i + 16, l + 16, j + 16); + List list = PlayerChunkMap.a(this.playerChunkMap).getTileEntities(i, l, j, i + 16, l + 16, j + 16); for (int i1 = 0; i1 < list.size(); ++i1) { this.sendTileEntity((TileEntity) list.get(i1)); @@ -130,14 +129,14 @@ class PlayerInstance { } } } else { - this.sendAll(new Packet52MultiBlockChange(this.location.x, this.location.z, this.dirtyBlocks, this.dirtyCount, PlayerManager.a(this.playerManager))); + this.sendAll(new Packet52MultiBlockChange(this.location.x, this.location.z, this.dirtyBlocks, this.dirtyCount, PlayerChunkMap.a(this.playerChunkMap))); for (i = 0; i < this.dirtyCount; ++i) { j = this.location.x * 16 + (this.dirtyBlocks[i] >> 12 & 15); k = this.dirtyBlocks[i] & 255; l = this.location.z * 16 + (this.dirtyBlocks[i] >> 8 & 15); - if (PlayerManager.a(this.playerManager).isTileEntity(j, k, l)) { - this.sendTileEntity(PlayerManager.a(this.playerManager).getTileEntity(j, k, l)); + if (PlayerChunkMap.a(this.playerChunkMap).isTileEntity(j, k, l)) { + this.sendTileEntity(PlayerChunkMap.a(this.playerChunkMap).getTileEntity(j, k, l)); } } } @@ -158,11 +157,11 @@ class PlayerInstance { } } - static ChunkCoordIntPair a(PlayerInstance playerinstance) { - return playerinstance.location; + static ChunkCoordIntPair a(PlayerChunk playerchunk) { + return playerchunk.location; } - static List b(PlayerInstance playerinstance) { - return playerinstance.b; + static List b(PlayerChunk playerchunk) { + return playerchunk.b; } } diff --git a/src/main/java/net/minecraft/server/PlayerManager.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java similarity index 81% rename from src/main/java/net/minecraft/server/PlayerManager.java rename to src/main/java/net/minecraft/server/PlayerChunkMap.java index 3b776fad7e..f788a62e3a 100644 --- a/src/main/java/net/minecraft/server/PlayerManager.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -10,7 +10,7 @@ import java.util.Iterator; import java.util.LinkedList; // CraftBukkit end -public class PlayerManager { +public class PlayerChunkMap { private final WorldServer world; private final List managedPlayers = new ArrayList(); @@ -20,7 +20,7 @@ public class PlayerManager { private final int[][] f = new int[][] { { 1, 0}, { 0, 1}, { -1, 0}, { 0, -1}}; private boolean wasNotEmpty; // CraftBukkit - public PlayerManager(WorldServer worldserver, int i) { + public PlayerChunkMap(WorldServer worldserver, int i) { if (i > 15) { throw new IllegalArgumentException("Too big view radius!"); } else if (i < 3) { @@ -40,7 +40,7 @@ public class PlayerManager { Iterator iterator = this.d.iterator(); while (iterator.hasNext()) { - PlayerInstance playerinstance = (PlayerInstance) iterator.next(); + PlayerChunk playerinstance = (PlayerChunk) iterator.next(); playerinstance.a(); iterator.remove(); } @@ -62,22 +62,22 @@ public class PlayerManager { // CraftBukkit end } - private PlayerInstance a(int i, int j, boolean flag) { + private PlayerChunk a(int i, int j, boolean flag) { long k = (long) i + 2147483647L | (long) j + 2147483647L << 32; - PlayerInstance playerinstance = (PlayerInstance) this.c.getEntry(k); + PlayerChunk playerchunk = (PlayerChunk) this.c.getEntry(k); - if (playerinstance == null && flag) { - playerinstance = new PlayerInstance(this, i, j); - this.c.put(k, playerinstance); + if (playerchunk == null && flag) { + playerchunk = new PlayerChunk(this, i, j); + this.c.put(k, playerchunk); } - return playerinstance; + return playerchunk; } // CraftBukkit start public final boolean isChunkInUse(int x, int z) { - PlayerInstance pi = a(x, z, false); + PlayerChunk pi = a(x, z, false); if (pi != null) { - return (PlayerInstance.b(pi).size() > 0); + return (PlayerChunk.b(pi).size() > 0); } return false; } @@ -86,10 +86,10 @@ public class PlayerManager { public void flagDirty(int i, int j, int k) { int l = i >> 4; int i1 = k >> 4; - PlayerInstance playerinstance = this.a(l, i1, false); + PlayerChunk playerchunk = this.a(l, i1, false); - if (playerinstance != null) { - playerinstance.a(i & 15, j, k & 15); + if (playerchunk != null) { + playerchunk.a(i & 15, j, k & 15); } } @@ -126,7 +126,7 @@ public class PlayerManager { int l = (int) entityplayer.locZ >> 4; int i1 = 0; int j1 = 0; - ChunkCoordIntPair chunkcoordintpair = PlayerInstance.a(this.a(k, l, true)); + ChunkCoordIntPair chunkcoordintpair = PlayerChunk.a(this.a(k, l, true)); entityplayer.chunkCoordIntPairQueue.clear(); if (arraylist.contains(chunkcoordintpair)) { @@ -142,7 +142,7 @@ public class PlayerManager { for (int i2 = 0; i2 < k1; ++i2) { i1 += aint[0]; j1 += aint[1]; - chunkcoordintpair = PlayerInstance.a(this.a(k + i1, l + j1, true)); + chunkcoordintpair = PlayerChunk.a(this.a(k + i1, l + j1, true)); if (arraylist.contains(chunkcoordintpair)) { entityplayer.chunkCoordIntPairQueue.add(chunkcoordintpair); } @@ -155,7 +155,7 @@ public class PlayerManager { for (k1 = 0; k1 < j * 2; ++k1) { i1 += this.f[i][0]; j1 += this.f[i][1]; - chunkcoordintpair = PlayerInstance.a(this.a(k + i1, l + j1, true)); + chunkcoordintpair = PlayerChunk.a(this.a(k + i1, l + j1, true)); if (arraylist.contains(chunkcoordintpair)) { entityplayer.chunkCoordIntPairQueue.add(chunkcoordintpair); } @@ -168,10 +168,10 @@ public class PlayerManager { for (int k = i - this.e; k <= i + this.e; ++k) { for (int l = j - this.e; l <= j + this.e; ++l) { - PlayerInstance playerinstance = this.a(k, l, false); + PlayerChunk playerchunk = this.a(k, l, false); - if (playerinstance != null) { - playerinstance.b(entityplayer); + if (playerchunk != null) { + playerchunk.b(entityplayer); } } } @@ -209,10 +209,10 @@ public class PlayerManager { } if (!this.a(l1 - j1, i2 - k1, i, j, i1)) { - PlayerInstance playerinstance = this.a(l1 - j1, i2 - k1, false); + PlayerChunk playerchunk = this.a(l1 - j1, i2 - k1, false); - if (playerinstance != null) { - playerinstance.b(entityplayer); + if (playerchunk != null) { + playerchunk.b(entityplayer); } } } @@ -237,24 +237,24 @@ public class PlayerManager { } public boolean a(EntityPlayer entityplayer, int i, int j) { - PlayerInstance playerinstance = this.a(i, j, false); + PlayerChunk playerchunk = this.a(i, j, false); - return playerinstance == null ? false : PlayerInstance.b(playerinstance).contains(entityplayer) && !entityplayer.chunkCoordIntPairQueue.contains(PlayerInstance.a(playerinstance)); + return playerchunk == null ? false : PlayerChunk.b(playerchunk).contains(entityplayer) && !entityplayer.chunkCoordIntPairQueue.contains(PlayerChunk.a(playerchunk)); } public static int getFurthestViewableBlock(int i) { return i * 16 - 16; } - static WorldServer a(PlayerManager playermanager) { - return playermanager.world; + static WorldServer a(PlayerChunkMap playerchunkmap) { + return playerchunkmap.world; } - static LongHashMap b(PlayerManager playermanager) { - return playermanager.c; + static LongHashMap b(PlayerChunkMap playerchunkmap) { + return playerchunkmap.c; } - static Queue c(PlayerManager playermanager) { // CraftBukkit List -> Queue + static Queue c(PlayerChunkMap playermanager) { // CraftBukkit List -> Queue return playermanager.d; } diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/PlayerConnection.java similarity index 91% rename from src/main/java/net/minecraft/server/NetServerHandler.java rename to src/main/java/net/minecraft/server/PlayerConnection.java index 88afae4359..fb6a54b215 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -47,8 +47,7 @@ import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.InventoryView; // CraftBukkit end -public class NetServerHandler extends NetHandler { - +public class PlayerConnection extends Connection { public static Logger logger = Logger.getLogger("Minecraft"); public INetworkManager networkManager; public boolean disconnected = false; @@ -61,7 +60,7 @@ public class NetServerHandler extends NetHandler { private long j; private static Random k = new Random(); private long l; - private volatile int m = 0; private static final AtomicIntegerFieldUpdater chatSpamField = AtomicIntegerFieldUpdater.newUpdater(NetServerHandler.class, "m"); // CraftBukkit - multithreaded field + private volatile int m = 0; private static final AtomicIntegerFieldUpdater chatSpamField = AtomicIntegerFieldUpdater.newUpdater(PlayerConnection.class, "m"); // CraftBukkit - multithreaded field private int x = 0; private double y; private double z; @@ -69,12 +68,12 @@ public class NetServerHandler extends NetHandler { public boolean checkMovement = true; // CraftBukkit - private -> public private IntHashMap s = new IntHashMap(); - public NetServerHandler(MinecraftServer minecraftserver, INetworkManager inetworkmanager, EntityPlayer entityplayer) { + public PlayerConnection(MinecraftServer minecraftserver, INetworkManager inetworkmanager, EntityPlayer entityplayer) { this.minecraftServer = minecraftserver; this.networkManager = inetworkmanager; inetworkmanager.a(this); this.player = entityplayer; - entityplayer.netServerHandler = this; + entityplayer.playerConnection = this; // CraftBukkit start this.server = minecraftserver.server; @@ -162,12 +161,12 @@ public class NetServerHandler extends NetHandler { // CraftBukkit start leaveMessage = event.getLeaveMessage(); if (leaveMessage != null && leaveMessage.length() > 0) { - this.minecraftServer.getServerConfigurationManager().sendAll(new Packet3Chat(leaveMessage)); + this.minecraftServer.getPlayerList().sendAll(new Packet3Chat(leaveMessage)); } getPlayer().disconnect(s); // CraftBukkit end - this.minecraftServer.getServerConfigurationManager().disconnect(this.player); + this.minecraftServer.getPlayerList().disconnect(this.player); this.disconnected = true; } } @@ -222,7 +221,7 @@ public class NetServerHandler extends NetHandler { // If the event is cancelled we move the player back to their old location. if (event.isCancelled()) { - this.player.netServerHandler.sendPacket(new Packet13PlayerLookMove(from.getX(), from.getY() + 1.6200000047683716D, from.getY(), from.getZ(), from.getYaw(), from.getPitch(), false)); + this.player.playerConnection.sendPacket(new Packet13PlayerLookMove(from.getX(), from.getY() + 1.6200000047683716D, from.getY(), from.getZ(), from.getYaw(), from.getPitch(), false)); return; } @@ -275,8 +274,8 @@ public class NetServerHandler extends NetHandler { if (packet10flying.hasPos && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { if (Math.abs(packet10flying.x) > 1.0D || Math.abs(packet10flying.z) > 1.0D) { - System.err.println(player.getName() + " was caught trying to crash the server with an invalid position."); - player.kickPlayer("Nope!"); + System.err.println(this.player.name + " was caught trying to crash the server with an invalid position."); + this.disconnect("Nope!"); return; } @@ -298,7 +297,7 @@ public class NetServerHandler extends NetHandler { this.player.vehicle.V(); } - this.minecraftServer.getServerConfigurationManager().d(this.player); + this.minecraftServer.getPlayerList().d(this.player); this.y = this.player.locX; this.z = this.player.locY; this.q = this.player.locZ; @@ -395,7 +394,7 @@ public class NetServerHandler extends NetHandler { d11 = d4 * d4 + d6 * d6 + d7 * d7; boolean flag1 = false; - if (d11 > 0.0625D && !this.player.isSleeping() && !this.player.itemInWorldManager.isCreative()) { + if (d11 > 0.0625D && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative()) { flag1 = true; logger.warning(this.player.name + " moved wrongly!"); } @@ -424,8 +423,8 @@ public class NetServerHandler extends NetHandler { } this.player.onGround = packet10flying.g; - this.minecraftServer.getServerConfigurationManager().d(this.player); - if (this.player.itemInWorldManager.isCreative()) return; // CraftBukkit - fixed fall distance accumulating while being in Creative mode. + this.minecraftServer.getPlayerList().d(this.player); + if (this.player.playerInteractManager.isCreative()) return; // CraftBukkit - fixed fall distance accumulating while being in Creative mode. this.player.b(this.player.locY - d0, packet10flying.g); } } @@ -477,7 +476,7 @@ public class NetServerHandler extends NetHandler { this.z = d1; this.q = d2; this.player.setLocation(d0, d1, d2, f, f1); - this.player.netServerHandler.sendPacket(new Packet13PlayerLookMove(d0, d1 + 1.6200000047683716D, d1, d2, f, f1, false)); + this.player.playerConnection.sendPacket(new Packet13PlayerLookMove(d0, d1 + 1.6200000047683716D, d1, d2, f, f1, false)); } public void a(Packet14BlockDig packet14blockdig) { @@ -501,14 +500,21 @@ public class NetServerHandler extends NetHandler { } } // CraftBukkit end - this.player.bR(); + this.player.f(false); + } else if (packet14blockdig.e == 3) { + this.player.f(true); } else if (packet14blockdig.e == 5) { this.player.bO(); } else { - boolean flag = worldserver.worldProvider.dimension != 0 || this.minecraftServer.getServerConfigurationManager().getOPs().isEmpty() || this.minecraftServer.getServerConfigurationManager().isOp(this.player.name) || this.minecraftServer.I(); + int i = this.minecraftServer.getSpawnProtection(); + boolean flag = worldserver.worldProvider.dimension != 0 || this.minecraftServer.getPlayerList().getOPs().isEmpty() || this.minecraftServer.getPlayerList().isOp(this.player.name) || i <= 0 || this.minecraftServer.I(); boolean flag1 = false; - if (packet14blockdig.e == 0 || packet14blockdig.e == 1) { // CraftBukkit - check cancelled + if (packet14blockdig.e == 0) { + flag1 = true; + } + + if (packet14blockdig.e == 1) { flag1 = true; } @@ -516,72 +522,57 @@ public class NetServerHandler extends NetHandler { flag1 = true; } - int i = packet14blockdig.a; - int j = packet14blockdig.b; - int k = packet14blockdig.c; + int j = packet14blockdig.a; + int k = packet14blockdig.b; + int l = packet14blockdig.c; if (flag1) { - double d0 = this.player.locX - ((double) i + 0.5D); - double d1 = this.player.locY - ((double) j + 0.5D) + 1.5D; - double d2 = this.player.locZ - ((double) k + 0.5D); + double d0 = this.player.locX - ((double) j + 0.5D); + double d1 = this.player.locY - ((double) k + 0.5D) + 1.5D; + double d2 = this.player.locZ - ((double) l + 0.5D); double d3 = d0 * d0 + d1 * d1 + d2 * d2; if (d3 > 36.0D) { return; } - if (j >= this.minecraftServer.getMaxBuildHeight()) { + if (k >= this.minecraftServer.getMaxBuildHeight()) { return; } } ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); - int l = MathHelper.a(i - chunkcoordinates.x); - int i1 = MathHelper.a(k - chunkcoordinates.z); + int i1 = MathHelper.a(j - chunkcoordinates.x); + int j1 = MathHelper.a(l - chunkcoordinates.z); - if (l > i1) { - i1 = l; + if (i1 > j1) { + j1 = i1; } if (packet14blockdig.e == 0) { // CraftBukkit start - if (i1 < this.server.getSpawnRadius() && !flag) { - CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_BLOCK, i, j, k, l, this.player.inventory.getItemInHand()); - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); + if (j1 < this.server.getSpawnRadius() && !flag) { + CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_BLOCK, j, k, l, i1, this.player.inventory.getItemInHand()); + this.player.playerConnection.sendPacket(new Packet53BlockChange(j, k, l, worldserver)); // Update any tile entity data for this block - TileEntity tileentity = worldserver.getTileEntity(i, j, k); + TileEntity tileentity = worldserver.getTileEntity(j, k, l); if (tileentity != null) { - this.player.netServerHandler.sendPacket(tileentity.getUpdatePacket()); + this.player.playerConnection.sendPacket(tileentity.getUpdatePacket()); } // CraftBukkit end } else { - this.player.itemInWorldManager.dig(i, j, k, packet14blockdig.face); + this.player.playerInteractManager.dig(j, k, l, packet14blockdig.face); } } else if (packet14blockdig.e == 2) { - this.player.itemInWorldManager.a(i, j, k); - if (worldserver.getTypeId(i, j, k) != 0) { - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); + this.player.playerInteractManager.a(j, k, l); + if (worldserver.getTypeId(j, k, l) != 0) { + this.player.playerConnection.sendPacket(new Packet53BlockChange(j, k, l, worldserver)); } } else if (packet14blockdig.e == 1) { - this.player.itemInWorldManager.c(i, j, k); - if (worldserver.getTypeId(i, j, k) != 0) { - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); + this.player.playerInteractManager.c(j, k, l); + if (worldserver.getTypeId(j, k, l) != 0) { + this.player.playerConnection.sendPacket(new Packet53BlockChange(j, k, l, worldserver)); } - } else if (packet14blockdig.e == 3) { - // CraftBukkit start - logger.warning(this.player.name + " is using a modded client!"); - this.disconnect("Nope!"); - return; - /* - double d4 = this.player.locX - ((double) i + 0.5D); - double d5 = this.player.locY - ((double) j + 0.5D); - double d6 = this.player.locZ - ((double) k + 0.5D); - double d7 = d4 * d4 + d5 * d5 + d6 * d6; - - if (d7 < 256.0D) { - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); - } - // CraftBukkit end */ } } } @@ -623,7 +614,8 @@ public class NetServerHandler extends NetHandler { int j = packet15place.f(); int k = packet15place.g(); int l = packet15place.getFace(); - boolean flag1 = worldserver.worldProvider.dimension != 0 || this.minecraftServer.getServerConfigurationManager().getOPs().isEmpty() || this.minecraftServer.getServerConfigurationManager().isOp(this.player.name) || this.minecraftServer.I(); + int i1 = this.minecraftServer.getSpawnProtection(); + boolean flag1 = worldserver.worldProvider.dimension != 0 || this.minecraftServer.getPlayerList().getOPs().isEmpty() || this.minecraftServer.getPlayerList().isOp(this.player.name) || i1 <= 0 || this.minecraftServer.I(); if (packet15place.getFace() == 255) { if (itemstack == null) { @@ -634,7 +626,7 @@ public class NetServerHandler extends NetHandler { int itemstackAmount = itemstack.count; org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack); if (event.useItemInHand() != Event.Result.DENY) { - this.player.itemInWorldManager.useItem(this.player, this.player.world, itemstack); + this.player.playerInteractManager.useItem(this.player, this.player.world, itemstack); } // CraftBukkit - notch decrements the counter by 1 in the above method with food, @@ -643,15 +635,15 @@ public class NetServerHandler extends NetHandler { always = (itemstack.count != itemstackAmount); // CraftBukkit end } else if (packet15place.f() >= this.minecraftServer.getMaxBuildHeight() - 1 && (packet15place.getFace() == 1 || packet15place.f() >= this.minecraftServer.getMaxBuildHeight())) { - this.player.netServerHandler.sendPacket(new Packet3Chat("\u00A77Height limit for building is " + this.minecraftServer.getMaxBuildHeight())); + this.player.playerConnection.sendPacket(new Packet3Chat("\u00A77Height limit for building is " + this.minecraftServer.getMaxBuildHeight())); flag = true; } else { ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); - int i1 = MathHelper.a(i - chunkcoordinates.x); - int j1 = MathHelper.a(k - chunkcoordinates.z); + int j1 = MathHelper.a(i - chunkcoordinates.x); + int k1 = MathHelper.a(k - chunkcoordinates.z); - if (i1 > j1) { - j1 = i1; + if (j1 > k1) { + k1 = j1; } // CraftBukkit start - Check if we can actually do something over this large a distance @@ -660,16 +652,16 @@ public class NetServerHandler extends NetHandler { return; } flag1 = true; // spawn protection moved to ItemBlock!!! - if (j1 > this.minecraftServer.getSpawnProtection() || flag1) { + if (j1 > i1 || flag1) { // CraftBukkit end - this.player.itemInWorldManager.interact(this.player, worldserver, itemstack, i, j, k, l, packet15place.j(), packet15place.l(), packet15place.m()); + this.player.playerInteractManager.interact(this.player, worldserver, itemstack, i, j, k, l, packet15place.j(), packet15place.l(), packet15place.m()); } flag = true; } if (flag) { - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); + this.player.playerConnection.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); if (l == 0) { --j; } @@ -694,7 +686,7 @@ public class NetServerHandler extends NetHandler { ++i; } - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); + this.player.playerConnection.sendPacket(new Packet53BlockChange(i, j, k, worldserver)); } itemstack = this.player.inventory.getItemInHand(); @@ -722,9 +714,9 @@ public class NetServerHandler extends NetHandler { logger.info(this.player.name + " lost connection: " + s); // CraftBukkit start - we need to handle custom quit messages - String quitMessage = this.minecraftServer.getServerConfigurationManager().disconnect(this.player); + String quitMessage = this.minecraftServer.getPlayerList().disconnect(this.player); if ((quitMessage != null) && (quitMessage.length() > 0)) { - this.minecraftServer.getServerConfigurationManager().sendAll(new Packet3Chat(quitMessage)); + this.minecraftServer.getPlayerList().sendAll(new Packet3Chat(quitMessage)); } // CraftBukkit end this.disconnected = true; @@ -802,7 +794,7 @@ public class NetServerHandler extends NetHandler { Waitable waitable = new Waitable() { @Override protected Object evaluate() { - NetServerHandler.this.disconnect("Chat message too long"); + PlayerConnection.this.disconnect("Chat message too long"); return null; } }; @@ -830,7 +822,7 @@ public class NetServerHandler extends NetHandler { Waitable waitable = new Waitable() { @Override protected Object evaluate() { - NetServerHandler.this.disconnect("Illegal characters in chat"); + PlayerConnection.this.disconnect("Illegal characters in chat"); return null; } }; @@ -861,13 +853,13 @@ public class NetServerHandler extends NetHandler { this.chat(s, packet3chat.a_()); // This section stays because it is only applicable to packets - if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getServerConfigurationManager().isOp(this.player.name)) { // CraftBukkit use thread-safe spam + if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.name)) { // CraftBukkit use thread-safe spam // CraftBukkit start if (packet3chat.a_()) { Waitable waitable = new Waitable() { @Override protected Object evaluate() { - NetServerHandler.this.disconnect("disconnect.spam"); + PlayerConnection.this.disconnect("disconnect.spam"); return null; } }; @@ -924,9 +916,9 @@ public class NetServerHandler extends NetHandler { } String message = String.format(queueEvent.getFormat(), queueEvent.getPlayer().getDisplayName(), queueEvent.getMessage()); - NetServerHandler.this.minecraftServer.console.sendMessage(message); + PlayerConnection.this.minecraftServer.console.sendMessage(message); if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) { - for (Object player : NetServerHandler.this.minecraftServer.getServerConfigurationManager().players) { + for (Object player : PlayerConnection.this.minecraftServer.getPlayerList().players) { ((EntityPlayer) player).sendMessage(message); } } else { @@ -956,7 +948,7 @@ public class NetServerHandler extends NetHandler { s = String.format(event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage()); minecraftServer.console.sendMessage(s); if (((LazyPlayerSet) event.getRecipients()).isLazy()) { - for (Object recipient : minecraftServer.getServerConfigurationManager().players) { + for (Object recipient : minecraftServer.getPlayerList().players) { ((EntityPlayer) recipient).sendMessage(s); } } else { @@ -990,7 +982,7 @@ public class NetServerHandler extends NetHandler { } } catch (org.bukkit.command.CommandException ex) { player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); - Logger.getLogger(NetServerHandler.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex); return; } // CraftBukkit end @@ -1146,7 +1138,7 @@ public class NetServerHandler extends NetHandler { CraftWorld cworld = (CraftWorld) this.server.getWorlds().get(0); ChunkCoordinates chunkcoordinates = cworld.getHandle().getSpawn(); toLocation = new Location(cworld, chunkcoordinates.x + 0.5, chunkcoordinates.y, chunkcoordinates.z + 0.5); - this.player.netServerHandler.sendPacket(new Packet70Bed(0, 0)); + this.player.playerConnection.sendPacket(new Packet70Bed(0, 0)); } else { toLocation = this.player.getBukkitEntity().getBedSpawnLocation(); toLocation = new Location(toLocation.getWorld(), toLocation.getX() + 0.5, toLocation.getY(), toLocation.getZ() + 0.5); @@ -1156,25 +1148,25 @@ public class NetServerHandler extends NetHandler { event.useTravelAgent(false); Bukkit.getServer().getPluginManager().callEvent(event); - this.player = this.minecraftServer.getServerConfigurationManager().moveToWorld(this.player, 0, true, event.getTo()); + this.player = this.minecraftServer.getPlayerList().moveToWorld(this.player, 0, true, event.getTo()); // CraftBukkit end } else if (this.player.p().getWorldData().isHardcore()) { if (this.minecraftServer.I() && this.player.name.equals(this.minecraftServer.H())) { - this.player.netServerHandler.disconnect("You have died. Game over, man, it\'s game over!"); + this.player.playerConnection.disconnect("You have died. Game over, man, it\'s game over!"); this.minecraftServer.P(); } else { BanEntry banentry = new BanEntry(this.player.name); banentry.setReason("Death in Hardcore"); - this.minecraftServer.getServerConfigurationManager().getNameBans().add(banentry); - this.player.netServerHandler.disconnect("You have died. Game over, man, it\'s game over!"); + this.minecraftServer.getPlayerList().getNameBans().add(banentry); + this.player.playerConnection.disconnect("You have died. Game over, man, it\'s game over!"); } } else { if (this.player.getHealth() > 0) { return; } - this.player = this.minecraftServer.getServerConfigurationManager().moveToWorld(this.player, 0, false); + this.player = this.minecraftServer.getPlayerList().moveToWorld(this.player, 0, false); } } } @@ -1248,14 +1240,14 @@ public class NetServerHandler extends NetHandler { // CraftBukkit end if (ItemStack.matches(packet102windowclick.item, itemstack)) { - this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)); + this.player.playerConnection.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)); this.player.h = true; this.player.activeContainer.b(); this.player.broadcastCarriedItem(); this.player.h = false; } else { this.s.a(this.player.activeContainer.windowId, Short.valueOf(packet102windowclick.d)); - this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, false)); + this.player.playerConnection.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, false)); this.player.activeContainer.a(this.player, false); ArrayList arraylist = new ArrayList(); @@ -1267,7 +1259,7 @@ public class NetServerHandler extends NetHandler { // CraftBukkit start - send a Set Slot to update the crafting result slot if(type == SlotType.RESULT && itemstack != null) - this.player.netServerHandler.sendPacket((Packet) (new Packet103SetSlot(this.player.activeContainer.windowId, 0, itemstack))); + this.player.playerConnection.sendPacket((Packet) (new Packet103SetSlot(this.player.activeContainer.windowId, 0, itemstack))); // CraftBukkit end } } @@ -1281,7 +1273,7 @@ public class NetServerHandler extends NetHandler { } public void a(Packet107SetCreativeSlot packet107setcreativeslot) { - if (this.player.itemInWorldManager.isCreative()) { + if (this.player.playerInteractManager.isCreative()) { boolean flag = packet107setcreativeslot.slot < 0; ItemStack itemstack = packet107setcreativeslot.b; boolean flag1 = packet107setcreativeslot.slot >= 1 && packet107setcreativeslot.slot < 36 + PlayerInventory.getHotbarSize(); @@ -1316,7 +1308,7 @@ public class NetServerHandler extends NetHandler { case DENY: // TODO: Will this actually work? if (packet107setcreativeslot.slot > -1) { - this.player.netServerHandler.sendPacket(new Packet103SetSlot(this.player.defaultContainer.windowId, packet107setcreativeslot.slot, CraftItemStack.asNMSCopy(item))); + this.player.playerConnection.sendPacket(new Packet103SetSlot(this.player.defaultContainer.windowId, packet107setcreativeslot.slot, CraftItemStack.asNMSCopy(item))); } return; case DEFAULT: @@ -1462,7 +1454,7 @@ public class NetServerHandler extends NetHandler { } } - this.player.netServerHandler.sendPacket(new Packet203TabComplete(stringbuilder.toString())); + this.player.playerConnection.sendPacket(new Packet203TabComplete(stringbuilder.toString())); } public void a(Packet204LocaleAndViewDistance packet204localeandviewdistance) { @@ -1598,7 +1590,7 @@ public class NetServerHandler extends NetHandler { getPlayer().addChannel(channel); } } catch (UnsupportedEncodingException ex) { - Logger.getLogger(NetServerHandler.class.getName()).log(Level.SEVERE, "Could not parse REGISTER payload in plugin message packet", ex); + Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, "Could not parse REGISTER payload in plugin message packet", ex); } } else if (packet250custompayload.tag.equals("UNREGISTER")) { try { @@ -1607,7 +1599,7 @@ public class NetServerHandler extends NetHandler { getPlayer().removeChannel(channel); } } catch (UnsupportedEncodingException ex) { - Logger.getLogger(NetServerHandler.class.getName()).log(Level.SEVERE, "Could not parse UNREGISTER payload in plugin message packet", ex); + Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, "Could not parse UNREGISTER payload in plugin message packet", ex); } } else { server.getMessenger().dispatchIncomingMessage(player.getBukkitEntity(), packet250custompayload.tag, packet250custompayload.data); diff --git a/src/main/java/net/minecraft/server/ItemInWorldManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java similarity index 90% rename from src/main/java/net/minecraft/server/ItemInWorldManager.java rename to src/main/java/net/minecraft/server/PlayerInteractManager.java index 9410b4b7f9..5faee12248 100644 --- a/src/main/java/net/minecraft/server/ItemInWorldManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -8,7 +8,7 @@ import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; // CraftBukkit end -public class ItemInWorldManager { +public class PlayerInteractManager { public World world; public EntityPlayer player; @@ -26,14 +26,14 @@ public class ItemInWorldManager { private int n; private int o; - public ItemInWorldManager(World world) { + public PlayerInteractManager(World world) { this.gamemode = EnumGamemode.NONE; this.o = -1; this.world = world; } // CraftBukkit start - keep this for backwards compatibility - public ItemInWorldManager(WorldServer world) { + public PlayerInteractManager(WorldServer world) { this((World) world); } // CraftBukkit end @@ -117,11 +117,11 @@ public class ItemInWorldManager { // CraftBukkit start if (event.isCancelled()) { // Let the client know the block still exists - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); // Update any tile entity data for this block TileEntity tileentity = this.world.getTileEntity(i, j, k); if (tileentity != null) { - this.player.netServerHandler.sendPacket(tileentity.getUpdatePacket()); + this.player.playerConnection.sendPacket(tileentity.getUpdatePacket()); } return; } @@ -141,10 +141,10 @@ public class ItemInWorldManager { if (i1 == Block.WOODEN_DOOR.id) { // For some reason *BOTH* the bottom/top part have to be marked updated. boolean bottom = (this.world.getData(i, j, k) & 8) == 0; - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, this.world)); } else if (i1 == Block.TRAP_DOOR.id) { - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); } } else if (i1 > 0) { Block.byId[i1].attack(this.world, i, j, k, this.player); @@ -160,7 +160,7 @@ public class ItemInWorldManager { if (event.useItemInHand() == Event.Result.DENY) { // If we 'insta destroyed' then the client needs to be informed. if (f > 1.0f) { - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); } return; } @@ -168,7 +168,7 @@ public class ItemInWorldManager { if (blockEvent.isCancelled()) { // Let the client know the block still exists - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); return; } @@ -218,7 +218,7 @@ public class ItemInWorldManager { } // CraftBukkit start - force blockreset to client } else { - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); // CraftBukkit end } } @@ -258,7 +258,7 @@ public class ItemInWorldManager { packet.material = 0; packet.data = 0; - ((EntityPlayer) this.player).netServerHandler.sendPacket(packet); + ((EntityPlayer) this.player).playerConnection.sendPacket(packet); } event = new BlockBreakEvent(block, this.player.getBukkitEntity()); @@ -283,11 +283,11 @@ public class ItemInWorldManager { if (event.isCancelled()) { // Let the client know the block still exists - ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + ((EntityPlayer) this.player).playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); // Update any tile entity data for this block TileEntity tileentity = this.world.getTileEntity(i, j, k); if (tileentity != null) { - this.player.netServerHandler.sendPacket(tileentity.getUpdatePacket()); + this.player.playerConnection.sendPacket(tileentity.getUpdatePacket()); } return false; } @@ -312,15 +312,15 @@ public class ItemInWorldManager { boolean flag = this.d(i, j, k); if (this.isCreative()) { - this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); + this.player.playerConnection.sendPacket(new Packet53BlockChange(i, j, k, this.world)); } else { - ItemStack itemstack = this.player.bT(); + ItemStack itemstack = this.player.bS(); boolean flag1 = this.player.b(Block.byId[l]); if (itemstack != null) { itemstack.a(this.world, l, i, j, k, this.player); if (itemstack.count == 0) { - this.player.bU(); + this.player.bT(); } } @@ -378,10 +378,10 @@ public class ItemInWorldManager { // If we denied a door from opening, we need to send a correcting update to the client, as it already opened the door. if (i1 == Block.WOODEN_DOOR.id) { boolean bottom = (world.getData(i, j, k) & 8) == 0; - ((EntityPlayer) entityhuman).netServerHandler.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, world)); + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, world)); } result = (event.useItemInHand() != Event.Result.ALLOW); - } else { + } else if (!entityhuman.isSneaking() || itemstack == null) { result = Block.byId[i1].interact(world, i, j, k, entityhuman, l, f, f1, f2); } diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java index d63a4a4a3a..288cb22052 100644 --- a/src/main/java/net/minecraft/server/PlayerInventory.java +++ b/src/main/java/net/minecraft/server/PlayerInventory.java @@ -502,5 +502,7 @@ public class PlayerInventory implements IInventory { for (i = 0; i < this.armor.length; ++i) { this.armor[i] = ItemStack.b(playerinventory.armor[i]); } + + this.itemInHandIndex = playerinventory.itemInHandIndex; } } diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java b/src/main/java/net/minecraft/server/PlayerList.java similarity index 87% rename from src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java rename to src/main/java/net/minecraft/server/PlayerList.java index b3d8c2c5b3..52dd997bd3 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -27,7 +27,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.Bukkit; // CraftBukkit end -public abstract class ServerConfigurationManagerAbstract { +public abstract class PlayerList { private static final SimpleDateFormat e = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z"); public static final Logger a = Logger.getLogger("Minecraft"); @@ -48,7 +48,7 @@ public abstract class ServerConfigurationManagerAbstract { // CraftBukkit start private CraftServer cserver; - public ServerConfigurationManagerAbstract(MinecraftServer minecraftserver) { + public PlayerList(MinecraftServer minecraftserver) { minecraftserver.server = new CraftServer(minecraftserver, this); minecraftserver.console = org.bukkit.craftbukkit.command.ColouredConsoleSender.getInstance(); this.cserver = minecraftserver.server; @@ -63,7 +63,7 @@ public abstract class ServerConfigurationManagerAbstract { public void a(INetworkManager inetworkmanager, EntityPlayer entityplayer) { this.a(entityplayer); entityplayer.spawnIn(this.server.getWorldServer(entityplayer.dimension)); - entityplayer.itemInWorldManager.a((WorldServer) entityplayer.world); + entityplayer.playerInteractManager.a((WorldServer) entityplayer.world); String s = "local"; if (inetworkmanager.getSocketAddress() != null) { @@ -76,25 +76,26 @@ public abstract class ServerConfigurationManagerAbstract { ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); this.a(entityplayer, (EntityPlayer) null, worldserver); - NetServerHandler netserverhandler = new NetServerHandler(this.server, inetworkmanager, entityplayer); + PlayerConnection playerconnection = new PlayerConnection(this.server, inetworkmanager, entityplayer); // CraftBukkit start -- Don't send a higher than 60 MaxPlayer size, otherwise the PlayerInfo window won't render correctly. int maxPlayers = this.getMaxPlayers(); if (maxPlayers > 60) { maxPlayers = 60; } - netserverhandler.sendPacket(new Packet1Login(entityplayer.id, worldserver.getWorldData().getType(), entityplayer.itemInWorldManager.getGameMode(), worldserver.getWorldData().isHardcore(), worldserver.worldProvider.dimension, worldserver.difficulty, worldserver.getHeight(), maxPlayers)); + playerconnection.sendPacket(new Packet1Login(entityplayer.id, worldserver.getWorldData().getType(), entityplayer.playerInteractManager.getGameMode(), worldserver.getWorldData().isHardcore(), worldserver.worldProvider.dimension, worldserver.difficulty, worldserver.getHeight(), maxPlayers)); entityplayer.getBukkitEntity().sendSupportedChannels(); // CraftBukkit end - netserverhandler.sendPacket(new Packet6SpawnPosition(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z)); - netserverhandler.sendPacket(new Packet202Abilities(entityplayer.abilities)); + playerconnection.sendPacket(new Packet6SpawnPosition(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z)); + playerconnection.sendPacket(new Packet202Abilities(entityplayer.abilities)); + playerconnection.sendPacket(new Packet16BlockItemSwitch(entityplayer.inventory.itemInHandIndex)); this.b(entityplayer, worldserver); // this.sendAll(new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game.")); // CraftBukkit - handled in event this.c(entityplayer); - netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); - this.server.ae().a(netserverhandler); - netserverhandler.sendPacket(new Packet4UpdateTime(worldserver.getTime(), worldserver.getDayTime())); + playerconnection.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); + this.server.ae().a(playerconnection); + playerconnection.sendPacket(new Packet4UpdateTime(worldserver.getTime(), worldserver.getDayTime())); if (this.server.getTexturePack().length() > 0) { entityplayer.a(this.server.getTexturePack(), this.server.S()); } @@ -104,7 +105,7 @@ public abstract class ServerConfigurationManagerAbstract { while (iterator.hasNext()) { MobEffect mobeffect = (MobEffect) iterator.next(); - netserverhandler.sendPacket(new Packet41MobEffect(entityplayer.id, mobeffect)); + playerconnection.sendPacket(new Packet41MobEffect(entityplayer.id, mobeffect)); } entityplayer.syncInventory(); @@ -119,15 +120,15 @@ public abstract class ServerConfigurationManagerAbstract { WorldServer worldserver1 = entityplayer.p(); if (worldserver != null) { - worldserver.getPlayerManager().removePlayer(entityplayer); + worldserver.getPlayerChunkMap().removePlayer(entityplayer); } - worldserver1.getPlayerManager().addPlayer(entityplayer); + worldserver1.getPlayerChunkMap().addPlayer(entityplayer); worldserver1.chunkProviderServer.getChunkAt((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4); } public int a() { - return PlayerManager.getFurthestViewableBlock(this.o()); + return PlayerChunkMap.getFurthestViewableBlock(this.o()); } public void a(EntityPlayer entityplayer) { @@ -157,7 +158,7 @@ public abstract class ServerConfigurationManagerAbstract { String joinMessage = playerJoinEvent.getJoinMessage(); if ((joinMessage != null) && (joinMessage.length() > 0)) { - this.server.getServerConfigurationManager().sendAll(new Packet3Chat(joinMessage)); + this.server.getPlayerList().sendAll(new Packet3Chat(joinMessage)); } this.cserver.onPlayerJoin(playerJoinEvent.getPlayer()); @@ -177,7 +178,7 @@ public abstract class ServerConfigurationManagerAbstract { EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { - entityplayer1.netServerHandler.sendPacket(packet); + entityplayer1.playerConnection.sendPacket(packet); } } // CraftBukkit end @@ -187,18 +188,18 @@ public abstract class ServerConfigurationManagerAbstract { // CraftBukkit start - .name -> .listName if (entityplayer.getBukkitEntity().canSee(entityplayer1.getBukkitEntity())) { - entityplayer.netServerHandler.sendPacket(new Packet201PlayerInfo(entityplayer1.listName, true, entityplayer1.ping)); + entityplayer.playerConnection.sendPacket(new Packet201PlayerInfo(entityplayer1.listName, true, entityplayer1.ping)); } // CraftBukkit end } } public void d(EntityPlayer entityplayer) { - entityplayer.p().getPlayerManager().movePlayer(entityplayer); + entityplayer.p().getPlayerChunkMap().movePlayer(entityplayer); } public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string - if (entityplayer.netServerHandler.disconnected) return null; // CraftBukkit - exploitsies fix + if (entityplayer.playerConnection.disconnected) return null; // CraftBukkit - exploitsies fix // CraftBukkit start - quitting must be before we do final save of data, in case plugins need to modify it PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " left the game."); @@ -209,7 +210,7 @@ public abstract class ServerConfigurationManagerAbstract { WorldServer worldserver = entityplayer.p(); worldserver.kill(entityplayer); - worldserver.getPlayerManager().removePlayer(entityplayer); + worldserver.getPlayerChunkMap().removePlayer(entityplayer); this.players.remove(entityplayer); ChunkIOExecutor.adjustPoolSize(this.getPlayerCount()); // CraftBukkit @@ -219,7 +220,7 @@ public abstract class ServerConfigurationManagerAbstract { EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { - entityplayer1.netServerHandler.sendPacket(packet); + entityplayer1.playerConnection.sendPacket(packet); } } @@ -228,15 +229,15 @@ public abstract class ServerConfigurationManagerAbstract { } // CraftBukkit start - Whole method and signature - public EntityPlayer attemptLogin(NetLoginHandler netloginhandler, String s, String hostname) { + public EntityPlayer attemptLogin(PendingConnection pendingconnection, String s, String hostname) { // Instead of kicking then returning, we need to store the kick reason // in the event, check with plugins to see if it's ok, and THEN kick // depending on the outcome. - EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.M() ? new DemoItemInWorldManager(this.server.getWorldServer(0)) : new ItemInWorldManager(this.server.getWorldServer(0))); + EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.M() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0))); Player player = entity.getBukkitEntity(); - PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, netloginhandler.getSocket().getInetAddress()); + PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, pendingconnection.getSocket().getInetAddress()); - SocketAddress socketaddress = netloginhandler.networkManager.getSocketAddress(); + SocketAddress socketaddress = pendingconnection.networkManager.getSocketAddress(); if (this.banByName.isBanned(s)) { BanEntry banentry = (BanEntry) this.banByName.getEntries().get(s); @@ -272,7 +273,7 @@ public abstract class ServerConfigurationManagerAbstract { this.cserver.getPluginManager().callEvent(event); if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) { - netloginhandler.disconnect(event.getKickMessage()); + pendingconnection.disconnect(event.getKickMessage()); return null; } @@ -297,19 +298,19 @@ public abstract class ServerConfigurationManagerAbstract { while (iterator.hasNext()) { entityplayer = (EntityPlayer) iterator.next(); - entityplayer.netServerHandler.disconnect("You logged in from another location"); + entityplayer.playerConnection.disconnect("You logged in from another location"); } /* CraftBukkit start Object object; if (this.server.M()) { - object = new DemoItemInWorldManager(this.server.getWorldServer(0)); + object = new DemoPlayerInteractManager(this.server.getWorldServer(0)); } else { - object = new ItemInWorldManager(this.server.getWorldServer(0)); + object = new PlayerInteractManager(this.server.getWorldServer(0)); } - return new EntityPlayer(this.server, this.server.getWorldServer(0), s, (ItemInWorldManager) object); + return new EntityPlayer(this.server, this.server.getWorldServer(0), s, (PlayerInteractManager) object); */ return player; // CraftBukkit end @@ -324,7 +325,7 @@ public abstract class ServerConfigurationManagerAbstract { // CraftBukkit end entityplayer.p().getTracker().untrackPlayer(entityplayer); // entityplayer.p().getTracker().untrackEntity(entityplayer); // CraftBukkit - entityplayer.p().getPlayerManager().removePlayer(entityplayer); + entityplayer.p().getPlayerChunkMap().removePlayer(entityplayer); this.players.remove(entityplayer); this.server.getWorldServer(entityplayer.dimension).removeEntity(entityplayer); ChunkCoordinates chunkcoordinates = entityplayer.getBed(); @@ -348,7 +349,7 @@ public abstract class ServerConfigurationManagerAbstract { location = new Location(cworld, chunkcoordinates1.x + 0.5, chunkcoordinates1.y, chunkcoordinates1.z + 0.5); } else { entityplayer1.setRespawnPosition(null, true); - entityplayer1.netServerHandler.sendPacket(new Packet70Bed(0, 0)); + entityplayer1.playerConnection.sendPacket(new Packet70Bed(0, 0)); } } @@ -380,18 +381,18 @@ public abstract class ServerConfigurationManagerAbstract { // CraftBukkit start byte actualDimension = (byte) (worldserver.getWorld().getEnvironment().getId()); // Force the client to refresh their chunk cache. - entityplayer1.netServerHandler.sendPacket(new Packet9Respawn((byte) (actualDimension >= 0 ? -1 : 0), (byte) worldserver.difficulty, worldserver.getWorldData().getType(), worldserver.getHeight(), entityplayer.itemInWorldManager.getGameMode())); - entityplayer1.netServerHandler.sendPacket(new Packet9Respawn(actualDimension, (byte) worldserver.difficulty, worldserver.getWorldData().getType(), worldserver.getHeight(), entityplayer.itemInWorldManager.getGameMode())); + entityplayer1.playerConnection.sendPacket(new Packet9Respawn((byte) (actualDimension >= 0 ? -1 : 0), (byte) worldserver.difficulty, worldserver.getWorldData().getType(), worldserver.getHeight(), entityplayer.playerInteractManager.getGameMode())); + entityplayer1.playerConnection.sendPacket(new Packet9Respawn(actualDimension, (byte) worldserver.difficulty, worldserver.getWorldData().getType(), worldserver.getHeight(), entityplayer.playerInteractManager.getGameMode())); entityplayer1.spawnIn(worldserver); entityplayer1.dead = false; - entityplayer1.netServerHandler.teleport(new Location(worldserver.getWorld(), entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch)); + entityplayer1.playerConnection.teleport(new Location(worldserver.getWorld(), entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch)); entityplayer1.setSneaking(false); chunkcoordinates1 = worldserver.getSpawn(); // CraftBukkit end - entityplayer1.netServerHandler.sendPacket(new Packet6SpawnPosition(chunkcoordinates1.x, chunkcoordinates1.y, chunkcoordinates1.z)); - entityplayer1.netServerHandler.sendPacket(new Packet43SetExperience(entityplayer1.exp, entityplayer1.expTotal, entityplayer1.expLevel)); + entityplayer1.playerConnection.sendPacket(new Packet6SpawnPosition(chunkcoordinates1.x, chunkcoordinates1.y, chunkcoordinates1.z)); + entityplayer1.playerConnection.sendPacket(new Packet43SetExperience(entityplayer1.exp, entityplayer1.expTotal, entityplayer1.expLevel)); this.b(entityplayer1, worldserver); - worldserver.getPlayerManager().addPlayer(entityplayer1); + worldserver.getPlayerChunkMap().addPlayer(entityplayer1); worldserver.addEntity(entityplayer1); this.players.add(entityplayer1); // CraftBukkit start - added from changeDimension @@ -402,7 +403,7 @@ public abstract class ServerConfigurationManagerAbstract { while (iterator.hasNext()) { MobEffect mobeffect = (MobEffect) iterator.next(); - entityplayer1.netServerHandler.sendPacket(new Packet41MobEffect(entityplayer1.id, mobeffect)); + entityplayer1.playerConnection.sendPacket(new Packet41MobEffect(entityplayer1.id, mobeffect)); } // entityplayer1.syncInventory(); // CraftBukkit end @@ -562,7 +563,7 @@ public abstract class ServerConfigurationManagerAbstract { public void sendAll(Packet packet) { for (int i = 0; i < this.players.size(); ++i) { - ((EntityPlayer) this.players.get(i)).netServerHandler.sendPacket(packet); + ((EntityPlayer) this.players.get(i)).playerConnection.sendPacket(packet); } } @@ -571,7 +572,7 @@ public abstract class ServerConfigurationManagerAbstract { EntityPlayer entityplayer = (EntityPlayer) this.players.get(j); if (entityplayer.dimension == i) { - entityplayer.netServerHandler.sendPacket(packet); + entityplayer.playerConnection.sendPacket(packet); } } } @@ -678,7 +679,7 @@ public abstract class ServerConfigurationManagerAbstract { } } - if ((l == EnumGamemode.NONE.a() || l == entityplayer.itemInWorldManager.getGameMode().a()) && (i1 <= 0 || entityplayer.expLevel >= i1) && entityplayer.expLevel <= j1) { + if ((l == EnumGamemode.NONE.a() || l == entityplayer.playerInteractManager.getGameMode().a()) && (i1 <= 0 || entityplayer.expLevel >= i1) && entityplayer.expLevel <= j1) { ((List) object).add(entityplayer); } } @@ -718,7 +719,7 @@ public abstract class ServerConfigurationManagerAbstract { double d6 = d2 - entityplayer.locZ; if (d4 * d4 + d5 * d5 + d6 * d6 < d3 * d3) { - entityplayer.netServerHandler.sendPacket(packet); + entityplayer.playerConnection.sendPacket(packet); } } } @@ -749,15 +750,16 @@ public abstract class ServerConfigurationManagerAbstract { public void reloadWhitelist() {} public void b(EntityPlayer entityplayer, WorldServer worldserver) { - entityplayer.netServerHandler.sendPacket(new Packet4UpdateTime(worldserver.getTime(), worldserver.getDayTime())); + entityplayer.playerConnection.sendPacket(new Packet4UpdateTime(worldserver.getTime(), worldserver.getDayTime())); if (worldserver.N()) { - entityplayer.netServerHandler.sendPacket(new Packet70Bed(1, 0)); + entityplayer.playerConnection.sendPacket(new Packet70Bed(1, 0)); } } public void updateClient(EntityPlayer entityplayer) { entityplayer.updateInventory(entityplayer.defaultContainer); entityplayer.m(); + entityplayer.playerConnection.sendPacket(new Packet16BlockItemSwitch(entityplayer.inventory.itemInHandIndex)); } public int getPlayerCount() { @@ -809,17 +811,22 @@ public abstract class ServerConfigurationManagerAbstract { private void a(EntityPlayer entityplayer, EntityPlayer entityplayer1, World world) { if (entityplayer1 != null) { - entityplayer.itemInWorldManager.setGameMode(entityplayer1.itemInWorldManager.getGameMode()); + entityplayer.playerInteractManager.setGameMode(entityplayer1.playerInteractManager.getGameMode()); } else if (this.m != null) { - entityplayer.itemInWorldManager.setGameMode(this.m); + entityplayer.playerInteractManager.setGameMode(this.m); } - entityplayer.itemInWorldManager.b(world.getWorldData().getGameType()); + entityplayer.playerInteractManager.b(world.getWorldData().getGameType()); } public void r() { while (!this.players.isEmpty()) { - ((EntityPlayer) this.players.get(0)).netServerHandler.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message + ((EntityPlayer) this.players.get(0)).playerConnection.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message } } + + public void k(String s) { + this.server.info(s); + this.sendAll(new Packet3Chat(s)); + } } diff --git a/src/main/java/net/minecraft/server/PropertyManager.java b/src/main/java/net/minecraft/server/PropertyManager.java index af01fd338b..3f87365aac 100644 --- a/src/main/java/net/minecraft/server/PropertyManager.java +++ b/src/main/java/net/minecraft/server/PropertyManager.java @@ -91,7 +91,6 @@ public class PropertyManager { public String getString(String s, String s1) { if (!this.properties.containsKey(s)) { - s1 = this.getOverride(s, s1); // CraftBukkit this.properties.setProperty(s, s1); this.savePropertiesFile(); } @@ -103,7 +102,6 @@ public class PropertyManager { try { return this.getOverride(s, Integer.parseInt(this.getString(s, "" + i))); // CraftBukkit } catch (Exception exception) { - i = this.getOverride(s, i); // CraftBukkit this.properties.setProperty(s, "" + i); return i; } @@ -113,7 +111,6 @@ public class PropertyManager { try { return this.getOverride(s, Boolean.parseBoolean(this.getString(s, "" + flag))); // CraftBukkit } catch (Exception exception) { - flag = this.getOverride(s, flag); // CraftBukkit this.properties.setProperty(s, "" + flag); return flag; } diff --git a/src/main/java/net/minecraft/server/RecipesArmorDye.java b/src/main/java/net/minecraft/server/RecipeArmorDye.java similarity index 95% rename from src/main/java/net/minecraft/server/RecipesArmorDye.java rename to src/main/java/net/minecraft/server/RecipeArmorDye.java index 22d8d32800..3735aa7a28 100644 --- a/src/main/java/net/minecraft/server/RecipesArmorDye.java +++ b/src/main/java/net/minecraft/server/RecipeArmorDye.java @@ -2,10 +2,10 @@ package net.minecraft.server; import java.util.ArrayList; -public class RecipesArmorDye extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends +public class RecipeArmorDye extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends // CraftBukkit start - delegate to new parent class with bogus info - public RecipesArmorDye() { + public RecipeArmorDye() { super(new ItemStack(Item.LEATHER_HELMET, 0, 0), java.util.Arrays.asList(new ItemStack(Item.INK_SACK, 0, 5))); } // CraftBukkit end @@ -63,7 +63,7 @@ public class RecipesArmorDye extends ShapelessRecipes implements IRecipe { // Cr } itemstack = itemstack1.cloneItemStack(); - if (itemarmor.b_(itemstack1)) { + if (itemarmor.a(itemstack1)) { l = itemarmor.b(itemstack); f = (float) (l >> 16 & 255) / 255.0F; f1 = (float) (l >> 8 & 255) / 255.0F; diff --git a/src/main/java/net/minecraft/server/RecipeFireworks.java b/src/main/java/net/minecraft/server/RecipeFireworks.java new file mode 100644 index 0000000000..abed268ec5 --- /dev/null +++ b/src/main/java/net/minecraft/server/RecipeFireworks.java @@ -0,0 +1,176 @@ +package net.minecraft.server; + +import java.util.ArrayList; + +public class RecipeFireworks extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends + + private ItemStack a; + + // CraftBukkit start - delegate to new parent class with bogus info + public RecipeFireworks() { + super(new ItemStack(Item.FIREWORKS, 0, 0), java.util.Arrays.asList(new ItemStack(Item.SULPHUR, 0, 5))); + } + // CraftBukkit end + + public boolean a(InventoryCrafting inventorycrafting, World world) { + this.a = null; + int i = 0; + int j = 0; + int k = 0; + int l = 0; + int i1 = 0; + int j1 = 0; + + for (int k1 = 0; k1 < inventorycrafting.getSize(); ++k1) { + ItemStack itemstack = inventorycrafting.getItem(k1); + + if (itemstack != null) { + if (itemstack.id == Item.SULPHUR.id) { + ++j; + } else if (itemstack.id == Item.FIREWORKS_CHARGE.id) { + ++l; + } else if (itemstack.id == Item.INK_SACK.id) { + ++k; + } else if (itemstack.id == Item.PAPER.id) { + ++i; + } else if (itemstack.id == Item.GLOWSTONE_DUST.id) { + ++i1; + } else if (itemstack.id == Item.DIAMOND.id) { + ++i1; + } else if (itemstack.id == Item.FIREBALL.id) { + ++j1; + } else if (itemstack.id == Item.FEATHER.id) { + ++j1; + } else if (itemstack.id == Item.GOLD_NUGGET.id) { + ++j1; + } else { + if (itemstack.id != Item.SKULL.id) { + return false; + } + + ++j1; + } + } + } + + i1 += k + j1; + if (j <= 3 && i <= 1) { + NBTTagCompound nbttagcompound; + NBTTagCompound nbttagcompound1; + + if (j >= 1 && i == 1 && i1 == 0) { + this.a = new ItemStack(Item.FIREWORKS); + if (l > 0) { + nbttagcompound = new NBTTagCompound(); + nbttagcompound1 = new NBTTagCompound("Fireworks"); + NBTTagList nbttaglist = new NBTTagList("Explosions"); + + for (int l1 = 0; l1 < inventorycrafting.getSize(); ++l1) { + ItemStack itemstack1 = inventorycrafting.getItem(l1); + + if (itemstack1 != null && itemstack1.id == Item.FIREWORKS_CHARGE.id && itemstack1.hasTag() && itemstack1.getTag().hasKey("Explosion")) { + nbttaglist.add(itemstack1.getTag().getCompound("Explosion")); + } + } + + nbttagcompound1.set("Explosions", nbttaglist); + nbttagcompound1.setByte("Flight", (byte) j); + nbttagcompound.set("Fireworks", nbttagcompound1); + this.a.setTag(nbttagcompound); + } + + return true; + } else if (j == 1 && i == 0 && l == 0 && k > 0 && j1 <= 1) { + this.a = new ItemStack(Item.FIREWORKS_CHARGE); + nbttagcompound = new NBTTagCompound(); + nbttagcompound1 = new NBTTagCompound("Explosion"); + byte b0 = 0; + ArrayList arraylist = new ArrayList(); + + for (int i2 = 0; i2 < inventorycrafting.getSize(); ++i2) { + ItemStack itemstack2 = inventorycrafting.getItem(i2); + + if (itemstack2 != null) { + if (itemstack2.id == Item.INK_SACK.id) { + arraylist.add(Integer.valueOf(ItemDye.b[itemstack2.getData()])); + } else if (itemstack2.id == Item.GLOWSTONE_DUST.id) { + nbttagcompound1.setBoolean("Flicker", true); + } else if (itemstack2.id == Item.DIAMOND.id) { + nbttagcompound1.setBoolean("Trail", true); + } else if (itemstack2.id == Item.FIREBALL.id) { + b0 = 1; + } else if (itemstack2.id == Item.FEATHER.id) { + b0 = 4; + } else if (itemstack2.id == Item.GOLD_NUGGET.id) { + b0 = 2; + } else if (itemstack2.id == Item.SKULL.id) { + b0 = 3; + } + } + } + + int[] aint = new int[arraylist.size()]; + + for (int j2 = 0; j2 < aint.length; ++j2) { + aint[j2] = ((Integer) arraylist.get(j2)).intValue(); + } + + nbttagcompound1.setIntArray("Colors", aint); + nbttagcompound1.setByte("Type", b0); + nbttagcompound.set("Explosion", nbttagcompound1); + this.a.setTag(nbttagcompound); + return true; + } else if (j == 0 && i == 0 && l == 1 && k > 0 && k == i1) { + ArrayList arraylist1 = new ArrayList(); + + for (int k2 = 0; k2 < inventorycrafting.getSize(); ++k2) { + ItemStack itemstack3 = inventorycrafting.getItem(k2); + + if (itemstack3 != null) { + if (itemstack3.id == Item.INK_SACK.id) { + arraylist1.add(Integer.valueOf(ItemDye.b[itemstack3.getData()])); + } else if (itemstack3.id == Item.FIREWORKS_CHARGE.id) { + this.a = itemstack3.cloneItemStack(); + this.a.count = 1; + } + } + } + + int[] aint1 = new int[arraylist1.size()]; + + for (int l2 = 0; l2 < aint1.length; ++l2) { + aint1[l2] = ((Integer) arraylist1.get(l2)).intValue(); + } + + if (this.a != null && this.a.hasTag()) { + NBTTagCompound nbttagcompound2 = this.a.getTag().getCompound("Explosion"); + + if (nbttagcompound2 == null) { + return false; + } else { + nbttagcompound2.setIntArray("FadeColors", aint1); + return true; + } + } else { + return false; + } + } else { + return false; + } + } else { + return false; + } + } + + public ItemStack a(InventoryCrafting inventorycrafting) { + return this.a.cloneItemStack(); + } + + public int a() { + return 10; + } + + public ItemStack b() { + return this.a; + } +} diff --git a/src/main/java/net/minecraft/server/RecipesMapClone.java b/src/main/java/net/minecraft/server/RecipeMapClone.java similarity index 86% rename from src/main/java/net/minecraft/server/RecipesMapClone.java rename to src/main/java/net/minecraft/server/RecipeMapClone.java index f0e697364c..7224c7af5b 100644 --- a/src/main/java/net/minecraft/server/RecipesMapClone.java +++ b/src/main/java/net/minecraft/server/RecipeMapClone.java @@ -1,15 +1,9 @@ package net.minecraft.server; -// CraftBukkit start -import java.util.List; -import org.bukkit.craftbukkit.inventory.CraftItemStack; -import org.bukkit.craftbukkit.inventory.CraftShapelessRecipe; -// CraftBukkit end - -public class RecipesMapClone extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends +public class RecipeMapClone extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends // CraftBukkit start - delegate to new parent class - public RecipesMapClone() { + public RecipeMapClone() { super(new ItemStack(Item.MAP, 0, -1), java.util.Arrays.asList(new ItemStack(Item.MAP_EMPTY, 0, 0))); } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/ShapedRecipes.java b/src/main/java/net/minecraft/server/ShapedRecipes.java index e3126b6bf6..52f8ee747a 100644 --- a/src/main/java/net/minecraft/server/ShapedRecipes.java +++ b/src/main/java/net/minecraft/server/ShapedRecipes.java @@ -12,6 +12,7 @@ public class ShapedRecipes implements IRecipe { private ItemStack[] items; private ItemStack result; public final int a; + private boolean f = false; public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) { this.a = itemstack.id; @@ -134,10 +135,27 @@ public class ShapedRecipes implements IRecipe { } public ItemStack a(InventoryCrafting inventorycrafting) { - return this.b().cloneItemStack(); + ItemStack itemstack = this.b().cloneItemStack(); + + if (this.f) { + for (int i = 0; i < inventorycrafting.getSize(); ++i) { + ItemStack itemstack1 = inventorycrafting.getItem(i); + + if (itemstack1 != null && itemstack1.hasTag()) { + itemstack.setTag((NBTTagCompound) itemstack1.tag.clone()); + } + } + } + + return itemstack; } public int a() { return this.width * this.height; } + + public ShapedRecipes c() { + this.f = true; + return this; + } } diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java index 8bb1f71e0d..0686ba0f97 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -15,40 +15,40 @@ import org.bukkit.event.player.PlayerPreLoginEvent; class ThreadLoginVerifier extends Thread { - final NetLoginHandler netLoginHandler; + final PendingConnection pendingConnection; // CraftBukkit start CraftServer server; - ThreadLoginVerifier(NetLoginHandler netloginhandler, CraftServer server) { + ThreadLoginVerifier(PendingConnection pendingconnection, CraftServer server) { this.server = server; // CraftBukkit end - this.netLoginHandler = netloginhandler; + this.pendingConnection = pendingconnection; } public void run() { try { - String s = (new BigInteger(MinecraftEncryption.a(NetLoginHandler.a(this.netLoginHandler), NetLoginHandler.b(this.netLoginHandler).F().getPublic(), NetLoginHandler.c(this.netLoginHandler)))).toString(16); - URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(NetLoginHandler.d(this.netLoginHandler), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); + String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).F().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); + URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); String s1 = bufferedreader.readLine(); bufferedreader.close(); if (!"YES".equals(s1)) { - this.netLoginHandler.disconnect("Failed to verify username!"); + this.pendingConnection.disconnect("Failed to verify username!"); return; } // CraftBukkit start - if (this.netLoginHandler.getSocket() == null) { + if (this.pendingConnection.getSocket() == null) { return; } - AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(NetLoginHandler.d(this.netLoginHandler), this.netLoginHandler.getSocket().getInetAddress()); + AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress()); this.server.getPluginManager().callEvent(asyncEvent); if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) { - final PlayerPreLoginEvent event = new PlayerPreLoginEvent(NetLoginHandler.d(this.netLoginHandler), this.netLoginHandler.getSocket().getInetAddress()); + final PlayerPreLoginEvent event = new PlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress()); if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage()); } @@ -59,26 +59,26 @@ class ThreadLoginVerifier extends Thread { return event.getResult(); }}; - NetLoginHandler.b(this.netLoginHandler).processQueue.add(waitable); + PendingConnection.b(this.pendingConnection).processQueue.add(waitable); if (waitable.get() != PlayerPreLoginEvent.Result.ALLOWED) { - this.netLoginHandler.disconnect(event.getKickMessage()); + this.pendingConnection.disconnect(event.getKickMessage()); return; } } else { if (asyncEvent.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { - this.netLoginHandler.disconnect(asyncEvent.getKickMessage()); + this.pendingConnection.disconnect(asyncEvent.getKickMessage()); return; } } // CraftBukkit end - NetLoginHandler.a(this.netLoginHandler, true); + PendingConnection.a(this.pendingConnection, true); // CraftBukkit start } catch (java.io.IOException exception) { - this.netLoginHandler.disconnect("Failed to verify username, session authentication server unavailable!"); + this.pendingConnection.disconnect("Failed to verify username, session authentication server unavailable!"); } catch (Exception exception) { - this.netLoginHandler.disconnect("Failed to verify username!"); - server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + NetLoginHandler.d(this.netLoginHandler), exception); + this.pendingConnection.disconnect("Failed to verify username!"); + server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + PendingConnection.d(this.pendingConnection), exception); // CraftBukkit end } } diff --git a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java index ccc94d2257..b6ad98c4a8 100644 --- a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java +++ b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java @@ -1,17 +1,22 @@ package net.minecraft.server; +import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; +import java.util.List; public class TileEntityMobSpawner extends TileEntity { public int spawnDelay = -1; public String mobName = "Pig"; // CraftBukkit - private -> public - private NBTTagCompound spawnData = null; + private List mobs = null; + private TileEntityMobSpawnerData spawnData = null; public double b; public double c = 0.0D; private int minSpawnDelay = 200; private int maxSpawnDelay = 800; private int spawnCount = 4; + private Entity j; private int maxNearbyEntities = 6; private int requiredPlayerRange = 16; private int spawnRange = 4; @@ -20,6 +25,10 @@ public class TileEntityMobSpawner extends TileEntity { this.spawnDelay = 20; } + public String getMobName() { + return this.spawnData == null ? this.mobName : this.spawnData.c; + } + public void a(String s) { this.mobName = s; } @@ -30,13 +39,15 @@ public class TileEntityMobSpawner extends TileEntity { public void g() { if (this.b()) { - if (this.world.isStatic) { - double d0 = (double) ((float) this.x + this.world.random.nextFloat()); - double d1 = (double) ((float) this.y + this.world.random.nextFloat()); - double d2 = (double) ((float) this.z + this.world.random.nextFloat()); + double d0; - this.world.addParticle("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D); - this.world.addParticle("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D); + if (this.world.isStatic) { + double d1 = (double) ((float) this.x + this.world.random.nextFloat()); + double d2 = (double) ((float) this.y + this.world.random.nextFloat()); + + d0 = (double) ((float) this.z + this.world.random.nextFloat()); + this.world.addParticle("smoke", d1, d2, d0, 0.0D, 0.0D, 0.0D); + this.world.addParticle("flame", d1, d2, d0, 0.0D, 0.0D, 0.0D); if (this.spawnDelay > 0) { --this.spawnDelay; } @@ -53,8 +64,10 @@ public class TileEntityMobSpawner extends TileEntity { return; } + boolean flag = false; + for (int i = 0; i < this.spawnCount; ++i) { - Entity entity = EntityTypes.createEntityByName(this.mobName, this.world); + Entity entity = EntityTypes.createEntityByName(this.getMobName(), this.world); if (entity == null) { return; @@ -68,12 +81,12 @@ public class TileEntityMobSpawner extends TileEntity { } if (entity != null) { - double d3 = (double) this.x + (this.world.random.nextDouble() - this.world.random.nextDouble()) * (double) this.spawnRange; - double d4 = (double) (this.y + this.world.random.nextInt(3) - 1); - double d5 = (double) this.z + (this.world.random.nextDouble() - this.world.random.nextDouble()) * (double) this.spawnRange; + d0 = (double) this.x + (this.world.random.nextDouble() - this.world.random.nextDouble()) * (double) this.spawnRange; + double d3 = (double) (this.y + this.world.random.nextInt(3) - 1); + double d4 = (double) this.z + (this.world.random.nextDouble() - this.world.random.nextDouble()) * (double) this.spawnRange; EntityLiving entityliving = entity instanceof EntityLiving ? (EntityLiving) entity : null; - entity.setPositionRotation(d3, d4, d5, this.world.random.nextFloat() * 360.0F, 0.0F); + entity.setPositionRotation(d0, d3, d4, this.world.random.nextFloat() * 360.0F, 0.0F); if (entityliving == null || entityliving.canSpawn()) { this.a(entity); this.world.addEntity(entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit @@ -82,10 +95,14 @@ public class TileEntityMobSpawner extends TileEntity { entityliving.aR(); } - this.e(); + flag = true; } } } + + if (flag) { + this.e(); + } } super.g(); @@ -97,7 +114,7 @@ public class TileEntityMobSpawner extends TileEntity { NBTTagCompound nbttagcompound = new NBTTagCompound(); entity.c(nbttagcompound); - Iterator iterator = this.spawnData.c().iterator(); + Iterator iterator = this.spawnData.b.c().iterator(); while (iterator.hasNext()) { NBTBase nbtbase = (NBTBase) iterator.next(); @@ -118,6 +135,11 @@ public class TileEntityMobSpawner extends TileEntity { this.spawnDelay = this.minSpawnDelay + this.world.random.nextInt(this.maxSpawnDelay - this.minSpawnDelay); } + if (this.mobs != null && this.mobs.size() > 0) { + this.spawnData = (TileEntityMobSpawnerData) WeightedRandom.a(this.world.random, (Collection) this.mobs); + this.world.notify(this.x, this.y, this.z); + } + this.world.playNote(this.x, this.y, this.z, this.q().id, 1, 0); } @@ -125,8 +147,19 @@ public class TileEntityMobSpawner extends TileEntity { super.a(nbttagcompound); this.mobName = nbttagcompound.getString("EntityId"); this.spawnDelay = nbttagcompound.getShort("Delay"); + if (nbttagcompound.hasKey("SpawnPotentials")) { + this.mobs = new ArrayList(); + NBTTagList nbttaglist = nbttagcompound.getList("SpawnPotentials"); + + for (int i = 0; i < nbttaglist.size(); ++i) { + this.mobs.add(new TileEntityMobSpawnerData(this, (NBTTagCompound) nbttaglist.get(i))); + } + } else { + this.mobs = null; + } + if (nbttagcompound.hasKey("SpawnData")) { - this.spawnData = nbttagcompound.getCompound("SpawnData"); + this.spawnData = new TileEntityMobSpawnerData(this, nbttagcompound.getCompound("SpawnData"), this.mobName); } else { this.spawnData = null; } @@ -145,11 +178,15 @@ public class TileEntityMobSpawner extends TileEntity { if (nbttagcompound.hasKey("SpawnRange")) { this.spawnRange = nbttagcompound.getShort("SpawnRange"); } + + if (this.world != null && this.world.isStatic) { + this.j = null; + } } public void b(NBTTagCompound nbttagcompound) { super.b(nbttagcompound); - nbttagcompound.setString("EntityId", this.mobName); + nbttagcompound.setString("EntityId", this.getMobName()); nbttagcompound.setShort("Delay", (short) this.spawnDelay); nbttagcompound.setShort("MinSpawnDelay", (short) this.minSpawnDelay); nbttagcompound.setShort("MaxSpawnDelay", (short) this.maxSpawnDelay); @@ -158,7 +195,25 @@ public class TileEntityMobSpawner extends TileEntity { nbttagcompound.setShort("RequiredPlayerRange", (short) this.requiredPlayerRange); nbttagcompound.setShort("SpawnRange", (short) this.spawnRange); if (this.spawnData != null) { - nbttagcompound.setCompound("SpawnData", this.spawnData); + nbttagcompound.setCompound("SpawnData", (NBTTagCompound) this.spawnData.b.clone()); + } + + if (this.spawnData != null || this.mobs != null && this.mobs.size() > 0) { + NBTTagList nbttaglist = new NBTTagList(); + + if (this.mobs != null && this.mobs.size() > 0) { + Iterator iterator = this.mobs.iterator(); + + while (iterator.hasNext()) { + TileEntityMobSpawnerData tileentitymobspawnerdata = (TileEntityMobSpawnerData) iterator.next(); + + nbttaglist.add(tileentitymobspawnerdata.a()); + } + } else { + nbttaglist.add(this.spawnData.a()); + } + + nbttagcompound.set("SpawnPotentials", nbttaglist); } } @@ -166,6 +221,7 @@ public class TileEntityMobSpawner extends TileEntity { NBTTagCompound nbttagcompound = new NBTTagCompound(); this.b(nbttagcompound); + nbttagcompound.o("SpawnPotentials"); return new Packet132TileEntityData(this.x, this.y, this.z, 1, nbttagcompound); } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 0260dd3c58..e2fd0dfd56 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -43,13 +43,12 @@ public abstract class World implements IBlockAccess { protected float n; protected float o; protected float p; - protected int q = 0; - public int r = 0; + public int q = 0; public boolean suppressPhysics = false; public int difficulty; public Random random = new Random(); public WorldProvider worldProvider; // CraftBukkit - remove final - protected List w = new ArrayList(); + protected List v = new ArrayList(); public IChunkProvider chunkProvider; // CraftBukkit - protected -> public protected final IDataManager dataManager; public WorldData worldData; // CraftBukkit - protected -> public @@ -58,10 +57,10 @@ public abstract class World implements IBlockAccess { public final VillageCollection villages; protected final VillageSiege siegeManager = new VillageSiege(this); public final MethodProfiler methodProfiler; - private final Vec3DPool K = new Vec3DPool(300, 2000); - private final Calendar L = Calendar.getInstance(); - private UnsafeList M = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList - private boolean N; + private final Vec3DPool J = new Vec3DPool(300, 2000); + private final Calendar K = Calendar.getInstance(); + private UnsafeList L = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList + private boolean M; // CraftBukkit start - public, longhashset public boolean allowMonsters = true; public boolean allowAnimals = true; @@ -69,9 +68,9 @@ public abstract class World implements IBlockAccess { public long ticksPerAnimalSpawns; public long ticksPerMonsterSpawns; // CraftBukkit end - private int O; - int[] I; - private List P; + private int N; + int[] H; + private List O; public boolean isStatic; public BiomeBase getBiome(int i, int j) { @@ -116,9 +115,9 @@ public abstract class World implements IBlockAccess { this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit // CraftBukkit end - this.O = this.random.nextInt(12000); - this.I = new int['\u8000']; - this.P = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList + this.N = this.random.nextInt(12000); + this.H = new int['\u8000']; + this.O = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList this.isStatic = false; this.dataManager = idatamanager; this.methodProfiler = methodprofiler; @@ -416,8 +415,8 @@ public abstract class World implements IBlockAccess { } public void notify(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(i, j, k); } } @@ -444,14 +443,14 @@ public abstract class World implements IBlockAccess { } public void j(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(i, j, k, i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(i, j, k, i, j, k); } } public void e(int i, int j, int k, int l, int i1, int j1) { - for (int k1 = 0; k1 < this.w.size(); ++k1) { - ((IWorldAccess) this.w.get(k1)).a(i, j, k, l, i1, j1); + for (int k1 = 0; k1 < this.v.size(); ++k1) { + ((IWorldAccess) this.v.get(k1)).a(i, j, k, l, i1, j1); } } @@ -636,8 +635,8 @@ public abstract class World implements IBlockAccess { chunk.a(enumskyblock, i & 15, j, k & 15, l); - for (int i1 = 0; i1 < this.w.size(); ++i1) { - ((IWorldAccess) this.w.get(i1)).b(i, j, k); + for (int i1 = 0; i1 < this.v.size(); ++i1) { + ((IWorldAccess) this.v.get(i1)).b(i, j, k); } } } @@ -646,8 +645,8 @@ public abstract class World implements IBlockAccess { } public void o(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).b(i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).b(i, j, k); } } @@ -830,39 +829,39 @@ public abstract class World implements IBlockAccess { public void makeSound(Entity entity, String s, float f, float f1) { if (entity != null && s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1); } } } public void a(EntityHuman entityhuman, String s, float f, float f1) { if (entityhuman != null && s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(entityhuman, s, entityhuman.locX, entityhuman.locY - (double) entityhuman.height, entityhuman.locZ, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(entityhuman, s, entityhuman.locX, entityhuman.locY - (double) entityhuman.height, entityhuman.locZ, f, f1); } } } public void makeSound(double d0, double d1, double d2, String s, float f, float f1) { if (s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, d0, d1, d2, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, d0, d1, d2, f, f1); } } } - public void b(double d0, double d1, double d2, String s, float f, float f1) {} + public void a(double d0, double d1, double d2, String s, float f, float f1, boolean flag) {} public void a(String s, int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(s, i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(s, i, j, k); } } public void addParticle(String s, double d0, double d1, double d2, double d3, double d4, double d5) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, d0, d1, d2, d3, d4, d5); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, d0, d1, d2, d3, d4, d5); } } @@ -934,16 +933,16 @@ public abstract class World implements IBlockAccess { } protected void a(Entity entity) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(entity); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(entity); } entity.valid = true; // CraftBukkit } protected void b(Entity entity) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).b(entity); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).b(entity); } entity.valid = false; // CraftBukkit @@ -984,11 +983,11 @@ public abstract class World implements IBlockAccess { } public void addIWorldAccess(IWorldAccess iworldaccess) { - this.w.add(iworldaccess); + this.v.add(iworldaccess); } public List getCubes(Entity entity, AxisAlignedBB axisalignedbb) { - this.M.clear(); + this.L.clear(); int i = MathHelper.floor(axisalignedbb.a); int j = MathHelper.floor(axisalignedbb.d + 1.0D); int k = MathHelper.floor(axisalignedbb.b); @@ -1003,7 +1002,7 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, i2, l1)]; if (block != null) { - block.a(this, k1, i2, l1, axisalignedbb, this.M, entity); + block.a(this, k1, i2, l1, axisalignedbb, this.L, entity); } } } @@ -1017,20 +1016,20 @@ public abstract class World implements IBlockAccess { AxisAlignedBB axisalignedbb1 = ((Entity) list.get(j2)).E(); if (axisalignedbb1 != null && axisalignedbb1.a(axisalignedbb)) { - this.M.add(axisalignedbb1); + this.L.add(axisalignedbb1); } axisalignedbb1 = entity.g((Entity) list.get(j2)); if (axisalignedbb1 != null && axisalignedbb1.a(axisalignedbb)) { - this.M.add(axisalignedbb1); + this.L.add(axisalignedbb1); } } - return this.M; + return this.L; } public List a(AxisAlignedBB axisalignedbb) { - this.M.clear(); + this.L.clear(); int i = MathHelper.floor(axisalignedbb.a); int j = MathHelper.floor(axisalignedbb.d + 1.0D); int k = MathHelper.floor(axisalignedbb.b); @@ -1045,14 +1044,14 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, i2, l1)]; if (block != null) { - block.a(this, k1, i2, l1, axisalignedbb, this.M, (Entity) null); + block.a(this, k1, i2, l1, axisalignedbb, this.L, (Entity) null); } } } } } - return this.M; + return this.L; } public int a(float f) { @@ -1128,6 +1127,7 @@ public abstract class World implements IBlockAccess { // CraftBukkit end try { + ++entity.ticksLived; entity.j_(); } catch (Throwable throwable) { crashreport = CrashReport.a(throwable, "Ticking entity"); @@ -1221,7 +1221,7 @@ public abstract class World implements IBlockAccess { } this.methodProfiler.c("tileEntities"); - this.N = true; + this.M = true; Iterator iterator = this.tileEntityList.iterator(); while (iterator.hasNext()) { @@ -1261,7 +1261,7 @@ public abstract class World implements IBlockAccess { } } - this.N = false; + this.M = false; if (!this.b.isEmpty()) { this.tileEntityList.removeAll(this.b); this.b.clear(); @@ -1304,7 +1304,7 @@ public abstract class World implements IBlockAccess { } public void a(Collection collection) { - if (this.N) { + if (this.M) { this.a.addAll(collection); } else { this.tileEntityList.addAll(collection); @@ -1330,6 +1330,7 @@ public abstract class World implements IBlockAccess { if (entity.vehicle != null) { entity.U(); } else { + ++entity.ticksLived; entity.j_(); } } @@ -1517,7 +1518,7 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, l1, i2)]; if (block != null && block.material == material) { - double d0 = (double) ((float) (l1 + 1) - BlockFluids.d(this.getData(k1, l1, i2))); + double d0 = (double) ((float) (l1 + 1) - BlockFluids.e(this.getData(k1, l1, i2))); if ((double) l >= d0) { flag = true; @@ -1702,7 +1703,7 @@ public abstract class World implements IBlockAccess { public void setTileEntity(int i, int j, int k, TileEntity tileentity) { if (tileentity != null && !tileentity.r()) { - if (this.N) { + if (this.M) { tileentity.x = i; tileentity.y = j; tileentity.z = k; @@ -1721,7 +1722,7 @@ public abstract class World implements IBlockAccess { public void r(int i, int j, int k) { TileEntity tileentity = this.getTileEntity(i, j, k); - if (tileentity != null && this.N) { + if (tileentity != null && this.M) { tileentity.w_(); this.a.remove(tileentity); } else { @@ -1814,10 +1815,6 @@ public abstract class World implements IBlockAccess { protected void n() { if (!this.worldProvider.f) { - if (this.q > 0) { - --this.q; - } - int i = this.worldData.getThunderDuration(); if (i <= 0) { @@ -1929,8 +1926,8 @@ public abstract class World implements IBlockAccess { } this.methodProfiler.b(); - if (this.O > 0) { - --this.O; + if (this.N > 0) { + --this.N; } this.methodProfiler.a("playerCheckLight"); @@ -1949,7 +1946,7 @@ public abstract class World implements IBlockAccess { protected void a(int i, int j, Chunk chunk) { this.methodProfiler.c("moodSound"); - if (this.O == 0 && !this.isStatic) { + if (this.N == 0 && !this.isStatic) { this.k = this.k * 3 + 1013904223; int k = this.k >> 2; int l = k & 15; @@ -1964,7 +1961,7 @@ public abstract class World implements IBlockAccess { if (entityhuman != null && entityhuman.e((double) l + 0.5D, (double) j1 + 0.5D, (double) i1 + 0.5D) > 4.0D) { this.makeSound((double) l + 0.5D, (double) j1 + 0.5D, (double) i1 + 0.5D, "ambient.cave.cave", 0.7F, 0.8F + this.random.nextFloat() * 0.2F); - this.O = this.random.nextInt(12000) + 6000; + this.N = this.random.nextInt(12000) + 6000; } } } @@ -2171,16 +2168,16 @@ public abstract class World implements IBlockAccess { int i4; if (i2 > j1) { - this.I[i1++] = 133152; + this.H[i1++] = 133152; } else if (i2 < j1) { if (enumskyblock != EnumSkyBlock.BLOCK) { ; } - this.I[i1++] = 133152 + (j1 << 18); + this.H[i1++] = 133152 + (j1 << 18); while (l < i1) { - k1 = this.I[l++]; + k1 = this.H[l++]; l1 = (k1 & 63) - 32 + i; i2 = (k1 >> 6 & 63) - 32 + j; j2 = (k1 >> 12 & 63) - 32 + k; @@ -2218,8 +2215,8 @@ public abstract class World implements IBlockAccess { i5 = 1; } - if (l2 == k2 - i5 && i1 < this.I.length) { - this.I[i1++] = j4 - i + 32 + (k4 - j + 32 << 6) + (l4 - k + 32 << 12) + (k2 - i5 << 18); + if (l2 == k2 - i5 && i1 < this.H.length) { + this.H[i1++] = j4 - i + 32 + (k4 - j + 32 << 6) + (l4 - k + 32 << 12) + (k2 - i5 << 18); } } } @@ -2234,7 +2231,7 @@ public abstract class World implements IBlockAccess { this.methodProfiler.a("checkedPosition < toCheckCount"); while (l < i1) { - k1 = this.I[l++]; + k1 = this.H[l++]; l1 = (k1 & 63) - 32 + i; i2 = (k1 >> 6 & 63) - 32 + j; j2 = (k1 >> 12 & 63) - 32 + k; @@ -2271,29 +2268,29 @@ public abstract class World implements IBlockAccess { l3 = -l3; } - if (j3 + i4 + l3 < 17 && i1 < this.I.length - 6) { + if (j3 + i4 + l3 < 17 && i1 < this.H.length - 6) { if (this.b(enumskyblock, l1 - 1, i2, j2) < k3) { - this.I[i1++] = l1 - 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1 + 1, i2, j2) < k3) { - this.I[i1++] = l1 + 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 + 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2 - 1, j2) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - 1 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - 1 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2 + 1, j2) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 + 1 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 + 1 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2, j2 - 1) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 - 1 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 - 1 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2, j2 + 1) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 + 1 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 + 1 - k + 32 << 12); } } } @@ -2313,7 +2310,7 @@ public abstract class World implements IBlockAccess { } public List getEntities(Entity entity, AxisAlignedBB axisalignedbb) { - this.P.clear(); + this.O.clear(); int i = MathHelper.floor((axisalignedbb.a - 2.0D) / 16.0D); int j = MathHelper.floor((axisalignedbb.d + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.c - 2.0D) / 16.0D); @@ -2322,12 +2319,12 @@ public abstract class World implements IBlockAccess { for (int i1 = i; i1 <= j; ++i1) { for (int j1 = k; j1 <= l; ++j1) { if (this.isChunkLoaded(i1, j1)) { - this.getChunkAt(i1, j1).a(entity, axisalignedbb, this.P); + this.getChunkAt(i1, j1).a(entity, axisalignedbb, this.O); } } } - return this.P; + return this.O; } public List a(Class oclass, AxisAlignedBB axisalignedbb) { @@ -2548,7 +2545,7 @@ public abstract class World implements IBlockAccess { } // CraftBukkit end - if (!entityhuman1.abilities.isInvulnerable) { + if (!entityhuman1.abilities.isInvulnerable && entityhuman1.isAlive()) { double d5 = entityhuman1.e(d0, d1, d2); double d6 = d3; @@ -2557,7 +2554,7 @@ public abstract class World implements IBlockAccess { } if (entityhuman1.isInvisible()) { - float f = entityhuman1.bS(); + float f = entityhuman1.bR(); if (f < 0.1F) { f = 0.1F; @@ -2699,8 +2696,8 @@ public abstract class World implements IBlockAccess { } public void e(int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - ((IWorldAccess) this.w.get(j1)).a(i, j, k, l, i1); + for (int j1 = 0; j1 < this.v.size(); ++j1) { + ((IWorldAccess) this.v.get(j1)).a(i, j, k, l, i1); } } @@ -2709,8 +2706,19 @@ public abstract class World implements IBlockAccess { } public void a(EntityHuman entityhuman, int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - ((IWorldAccess) this.w.get(j1)).a(entityhuman, i, j, k, l, i1); + try { + for (int j1 = 0; j1 < this.v.size(); ++j1) { + ((IWorldAccess) this.v.get(j1)).a(entityhuman, i, j, k, l, i1); + } + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Playing level event"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Level event being played"); + + crashreportsystemdetails.a("Block coordinates", CrashReportSystemDetails.a(j, k, l)); + crashreportsystemdetails.a("Event source", entityhuman); + crashreportsystemdetails.a("Event type", Integer.valueOf(i)); + crashreportsystemdetails.a("Event data", Integer.valueOf(i1)); + throw new ReportedException(crashreport); } } @@ -2754,22 +2762,22 @@ public abstract class World implements IBlockAccess { } public void g(int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - IWorldAccess iworldaccess = (IWorldAccess) this.w.get(j1); + for (int j1 = 0; j1 < this.v.size(); ++j1) { + IWorldAccess iworldaccess = (IWorldAccess) this.v.get(j1); iworldaccess.b(i, j, k, l, i1); } } public Vec3DPool getVec3DPool() { - return this.K; + return this.J; } public Calendar T() { if (this.getTime() % 600L == 0L) { - this.L.setTimeInMillis(System.currentTimeMillis()); + this.K.setTimeInMillis(System.currentTimeMillis()); } - return this.L; + return this.K; } } diff --git a/src/main/java/net/minecraft/server/WorldManager.java b/src/main/java/net/minecraft/server/WorldManager.java index 34104a1ea6..d1a02e6b91 100644 --- a/src/main/java/net/minecraft/server/WorldManager.java +++ b/src/main/java/net/minecraft/server/WorldManager.java @@ -24,18 +24,18 @@ public class WorldManager implements IWorldAccess { public void a(String s, double d0, double d1, double d2, float f, float f1) { // CraftBukkit - this.world.dimension - this.server.getServerConfigurationManager().sendPacketNearby(d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1)); + this.server.getPlayerList().sendPacketNearby(d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1)); } public void a(EntityHuman entityhuman, String s, double d0, double d1, double d2, float f, float f1) { // CraftBukkit - this.world.dimension - this.server.getServerConfigurationManager().sendPacketNearby(entityhuman, d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1)); + this.server.getPlayerList().sendPacketNearby(entityhuman, d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1)); } public void a(int i, int j, int k, int l, int i1, int j1) {} public void a(int i, int j, int k) { - this.world.getPlayerManager().flagDirty(i, j, k); + this.world.getPlayerChunkMap().flagDirty(i, j, k); } public void b(int i, int j, int k) {} @@ -44,15 +44,15 @@ public class WorldManager implements IWorldAccess { public void a(EntityHuman entityhuman, int i, int j, int k, int l, int i1) { // CraftBukkit - this.world.dimension - this.server.getServerConfigurationManager().sendPacketNearby(entityhuman, (double) j, (double) k, (double) l, 64.0D, this.world.dimension, new Packet61WorldEvent(i, j, k, l, i1, false)); + this.server.getPlayerList().sendPacketNearby(entityhuman, (double) j, (double) k, (double) l, 64.0D, this.world.dimension, new Packet61WorldEvent(i, j, k, l, i1, false)); } public void a(int i, int j, int k, int l, int i1) { - this.server.getServerConfigurationManager().sendAll(new Packet61WorldEvent(i, j, k, l, i1, true)); + this.server.getPlayerList().sendAll(new Packet61WorldEvent(i, j, k, l, i1, true)); } public void b(int i, int j, int k, int l, int i1) { - Iterator iterator = this.server.getServerConfigurationManager().players.iterator(); + Iterator iterator = this.server.getPlayerList().players.iterator(); while (iterator.hasNext()) { EntityPlayer entityplayer = (EntityPlayer) iterator.next(); @@ -63,7 +63,7 @@ public class WorldManager implements IWorldAccess { double d2 = (double) l - entityplayer.locZ; if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) { - entityplayer.netServerHandler.sendPacket(new Packet55BlockBreakAnimation(i, j, k, l, i1)); + entityplayer.playerConnection.sendPacket(new Packet55BlockBreakAnimation(i, j, k, l, i1)); } } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 02982bae0a..48fdcab53e 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -23,17 +23,17 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate private final MinecraftServer server; public EntityTracker tracker; // CraftBukkit - private final -> public - private final PlayerManager manager; - private Set M; - private TreeSet N; + private final PlayerChunkMap manager; + private Set L; + private TreeSet M; public ChunkProviderServer chunkProviderServer; public boolean savingDisabled; - private boolean O; + private boolean N; private int emptyTime = 0; - private final PortalTravelAgent Q; - private NoteDataList[] R = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; - private int S = 0; - private static final StructurePieceTreasure[] T = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; + private final PortalTravelAgent P; + private NoteDataList[] Q = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; + private int R = 0; + private static final StructurePieceTreasure[] S = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; private IntHashMap entitiesById; // CraftBukkit start @@ -46,20 +46,20 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate // CraftBukkit end this.server = minecraftserver; this.tracker = new EntityTracker(this); - this.manager = new PlayerManager(this, minecraftserver.getServerConfigurationManager().o()); + this.manager = new PlayerChunkMap(this, minecraftserver.getPlayerList().o()); if (this.entitiesById == null) { this.entitiesById = new IntHashMap(); } + if (this.L == null) { + this.L = new HashSet(); + } + if (this.M == null) { - this.M = new HashSet(); + this.M = new TreeSet(); } - if (this.N == null) { - this.N = new TreeSet(); - } - - this.Q = new PortalTravelAgent(this); + this.P = new PortalTravelAgent(this); } // CraftBukkit start @@ -178,7 +178,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.villages.tick(); this.siegeManager.a(); this.methodProfiler.c("portalForcer"); - this.Q.a(this.getTime()); + this.P.a(this.getTime()); this.methodProfiler.b(); this.V(); } @@ -190,21 +190,21 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } public void everyoneSleeping() { - this.O = !this.players.isEmpty(); + this.N = !this.players.isEmpty(); Iterator iterator = this.players.iterator(); while (iterator.hasNext()) { EntityHuman entityhuman = (EntityHuman) iterator.next(); if (!entityhuman.isSleeping() && !entityhuman.fauxSleeping) { // CraftBukkit - this.O = false; + this.N = false; break; } } } protected void d() { - this.O = false; + this.N = false; Iterator iterator = this.players.iterator(); while (iterator.hasNext()) { @@ -237,7 +237,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } public boolean everyoneDeeplySleeping() { - if (this.O && !this.isStatic) { + if (this.N && !this.isStatic) { Iterator iterator = this.players.iterator(); // CraftBukkit - This allows us to assume that some people are in bed but not really, allowing time to pass in spite of AFKers @@ -299,7 +299,6 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate l1 = this.h(j1, k1); if (this.D(j1, l1, k1)) { this.strikeLightning(new EntityLightning(this, (double) j1, (double) l1, (double) k1)); - this.q = 2; } } @@ -412,9 +411,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate nextticklistentry.a(j1); } - if (!this.M.contains(nextticklistentry)) { + if (!this.L.contains(nextticklistentry)) { + this.L.add(nextticklistentry); this.M.add(nextticklistentry); - this.N.add(nextticklistentry); } } } @@ -426,9 +425,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate nextticklistentry.a((long) i1 + this.worldData.getTime()); } - if (!this.M.contains(nextticklistentry)) { + if (!this.L.contains(nextticklistentry)) { + this.L.add(nextticklistentry); this.M.add(nextticklistentry); - this.N.add(nextticklistentry); } } @@ -449,9 +448,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } public boolean a(boolean flag) { - int i = this.N.size(); + int i = this.M.size(); - if (i != this.M.size()) { + if (i != this.L.size()) { throw new IllegalStateException("TickNextTick list out of synch"); } else { if (i > 1000) { @@ -465,14 +464,14 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } for (int j = 0; j < i; ++j) { - NextTickListEntry nextticklistentry = (NextTickListEntry) this.N.first(); + NextTickListEntry nextticklistentry = (NextTickListEntry) this.M.first(); if (!flag && nextticklistentry.e > this.worldData.getTime()) { break; } - this.N.remove(nextticklistentry); this.M.remove(nextticklistentry); + this.L.remove(nextticklistentry); byte b0 = 8; if (this.d(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) { @@ -495,11 +494,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate CrashReportSystemDetails.a(crashreportsystemdetails, nextticklistentry.a, nextticklistentry.b, nextticklistentry.c, k, l); throw new ReportedException(crashreport); - } } + } + } } } - return !this.N.isEmpty(); + return !this.M.isEmpty(); } } @@ -510,14 +510,14 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate int j = i + 16; int k = chunkcoordintpair.z << 4; int l = k + 16; - Iterator iterator = this.N.iterator(); + Iterator iterator = this.M.iterator(); while (iterator.hasNext()) { NextTickListEntry nextticklistentry = (NextTickListEntry) iterator.next(); if (nextticklistentry.a >= i && nextticklistentry.a < j && nextticklistentry.c >= k && nextticklistentry.c < l) { if (flag) { - this.M.remove(nextticklistentry); + this.L.remove(nextticklistentry); iterator.remove(); } @@ -599,7 +599,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } // CraftBukkit - Configurable spawn protection - return i1 > this.getServer().getSpawnRadius() || this.server.getServerConfigurationManager().isOp(entityhuman.name) || this.server.I(); + return i1 > this.getServer().getSpawnRadius() || this.server.getPlayerList().isOp(entityhuman.name) || this.server.I(); } protected void a(WorldSettings worldsettings) { @@ -607,12 +607,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.entitiesById = new IntHashMap(); } - if (this.M == null) { - this.M = new HashSet(); + if (this.L == null) { + this.L = new HashSet(); } - if (this.N == null) { - this.N = new TreeSet(); + if (this.M == null) { + this.M = new TreeSet(); } this.b(worldsettings); @@ -676,7 +676,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } protected void k() { - WorldGenBonusChest worldgenbonuschest = new WorldGenBonusChest(T, 10); + WorldGenBonusChest worldgenbonuschest = new WorldGenBonusChest(S, 10); for (int i = 0; i < 10; ++i) { int j = this.worldData.c() + this.random.nextInt(6) - this.random.nextInt(6); @@ -710,7 +710,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate protected void a() throws ExceptionWorldConflict { // CraftBukkit - added throws this.D(); - this.dataManager.saveWorldData(this.worldData, this.server.getServerConfigurationManager().q()); + this.dataManager.saveWorldData(this.worldData, this.server.getPlayerList().q()); this.worldMaps.a(); } @@ -752,7 +752,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } if (super.strikeLightning(entity)) { - this.server.getServerConfigurationManager().sendPacketNearby(entity.locX, entity.locY, entity.locZ, 512.0D, this.dimension, new Packet71Weather(entity)); + this.server.getPlayerList().sendPacketNearby(entity.locX, entity.locY, entity.locZ, 512.0D, this.dimension, new Packet71Weather(entity)); // CraftBukkit end return true; } else { @@ -792,7 +792,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate EntityHuman entityhuman = (EntityHuman) iterator.next(); if (entityhuman.e(d0, d1, d2) < 4096.0D) { - ((EntityPlayer) entityhuman).netServerHandler.sendPacket(new Packet60Explosion(d0, d1, d2, f, explosion.blocks, (Vec3D) explosion.b().get(entityhuman))); + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet60Explosion(d0, d1, d2, f, explosion.blocks, (Vec3D) explosion.b().get(entityhuman))); } } @@ -801,13 +801,13 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate public void playNote(int i, int j, int k, int l, int i1, int j1) { NoteBlockData noteblockdata = new NoteBlockData(i, j, k, l, i1, j1); - Iterator iterator = this.R[this.S].iterator(); + Iterator iterator = this.Q[this.R].iterator(); NoteBlockData noteblockdata1; do { if (!iterator.hasNext()) { - this.R[this.S].add(noteblockdata); + this.Q[this.R].add(noteblockdata); return; } @@ -817,22 +817,22 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } private void V() { - while (!this.R[this.S].isEmpty()) { - int i = this.S; + while (!this.Q[this.R].isEmpty()) { + int i = this.R; - this.S ^= 1; - Iterator iterator = this.R[i].iterator(); + this.R ^= 1; + Iterator iterator = this.Q[i].iterator(); while (iterator.hasNext()) { NoteBlockData noteblockdata = (NoteBlockData) iterator.next(); if (this.a(noteblockdata)) { // CraftBukkit - this.worldProvider.dimension -> this.dimension - this.server.getServerConfigurationManager().sendPacketNearby((double) noteblockdata.a(), (double) noteblockdata.b(), (double) noteblockdata.c(), 64.0D, this.dimension, new Packet54PlayNoteBlock(noteblockdata.a(), noteblockdata.b(), noteblockdata.c(), noteblockdata.f(), noteblockdata.d(), noteblockdata.e())); + this.server.getPlayerList().sendPacketNearby((double) noteblockdata.a(), (double) noteblockdata.b(), (double) noteblockdata.c(), 64.0D, this.dimension, new Packet54PlayNoteBlock(noteblockdata.a(), noteblockdata.b(), noteblockdata.c(), noteblockdata.f(), noteblockdata.d(), noteblockdata.e())); } } - this.R[i].clear(); + this.Q[i].clear(); } } @@ -859,7 +859,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate // CraftBukkit start - only sending weather packets to those affected for (int i = 0; i < this.players.size(); ++i) { if (((EntityPlayer) this.players.get(i)).world == this) { - ((EntityPlayer) this.players.get(i)).netServerHandler.sendPacket(new Packet70Bed(flag ? 2 : 1, 0)); + ((EntityPlayer) this.players.get(i)).playerConnection.sendPacket(new Packet70Bed(flag ? 2 : 1, 0)); } } // CraftBukkit end @@ -874,11 +874,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate return this.tracker; } - public PlayerManager getPlayerManager() { + public PlayerChunkMap getPlayerChunkMap() { return this.manager; } public PortalTravelAgent s() { - return this.Q; + return this.P; } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java index d35c0fad0d..c43773df11 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -106,7 +106,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa for (Object obj : server.getHandle().players) { EntityPlayer player = (EntityPlayer) obj; if (player.name.equalsIgnoreCase(getName())) { - return (player.netServerHandler != null) ? player.netServerHandler.getPlayer() : null; + return (player.playerConnection != null) ? player.playerConnection.getPlayer() : null; } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 6f957c53ff..9642959f44 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -23,12 +23,14 @@ import net.minecraft.server.ChunkCoordinates; import net.minecraft.server.Convertable; import net.minecraft.server.ConvertProgressUpdater; import net.minecraft.server.CraftingManager; +import net.minecraft.server.DedicatedPlayerList; import net.minecraft.server.DedicatedServer; import net.minecraft.server.Enchantment; import net.minecraft.server.EntityPlayer; import net.minecraft.server.EntityTracker; import net.minecraft.server.EnumGamemode; import net.minecraft.server.ExceptionWorldConflict; +import net.minecraft.server.PlayerList; import net.minecraft.server.RecipesFurnace; import net.minecraft.server.IProgressUpdate; import net.minecraft.server.IWorldAccess; @@ -37,8 +39,6 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.MobEffectList; import net.minecraft.server.PropertyManager; import net.minecraft.server.ServerCommand; -import net.minecraft.server.ServerConfigurationManager; -import net.minecraft.server.ServerConfigurationManagerAbstract; import net.minecraft.server.ServerNBTManager; import net.minecraft.server.WorldLoaderServer; import net.minecraft.server.WorldManager; @@ -144,7 +144,7 @@ public final class CraftServer implements Server { private final StandardMessenger messenger = new StandardMessenger(); private final PluginManager pluginManager = new SimplePluginManager(this, commandMap); protected final MinecraftServer console; - protected final ServerConfigurationManager server; + protected final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap(); private YamlConfiguration configuration; private final Yaml yaml = new Yaml(new SafeConstructor()); @@ -159,16 +159,22 @@ public final class CraftServer implements Server { private int ambientSpawn = -1; private File container; private WarningState warningState = WarningState.DEFAULT; + private final BooleanWrapper online = new BooleanWrapper(); + + private final class BooleanWrapper { + private boolean value = true; + } static { ConfigurationSerialization.registerClass(CraftOfflinePlayer.class); CraftItemFactory.instance(); } - public CraftServer(MinecraftServer console, ServerConfigurationManagerAbstract server) { + public CraftServer(MinecraftServer console, PlayerList playerList) { this.console = console; - this.server = (ServerConfigurationManager) server; + this.playerList = (DedicatedPlayerList) playerList; this.serverVersion = CraftServer.class.getPackage().getImplementationVersion(); + online.value = console.getPropertyManager().getBoolean("online-mode", true); Bukkit.setServer(this); @@ -299,11 +305,11 @@ public final class CraftServer implements Server { @SuppressWarnings("unchecked") public Player[] getOnlinePlayers() { - List online = server.players; + List online = playerList.players; Player[] players = new Player[online.size()]; for (int i = 0; i < players.length; i++) { - players[i] = online.get(i).netServerHandler.getPlayer(); + players[i] = online.get(i).playerConnection.getPlayer(); } return players; @@ -345,7 +351,7 @@ public final class CraftServer implements Server { } public Player getPlayer(final EntityPlayer entity) { - return entity.netServerHandler.getPlayer(); + return entity.playerConnection.getPlayer(); } public List matchPlayer(String partialName) { @@ -370,7 +376,7 @@ public final class CraftServer implements Server { } public int getMaxPlayers() { - return server.getMaxPlayers(); + return playerList.getMaxPlayers(); } // NOTE: These are dependent on the corrisponding call in MinecraftServer @@ -478,8 +484,8 @@ public final class CraftServer implements Server { return new ArrayList(worlds.values()); } - public ServerConfigurationManager getHandle() { - return server; + public DedicatedPlayerList getHandle() { + return playerList; } // NOTE: Should only be called from DedicatedServer.ah() @@ -520,7 +526,7 @@ public final class CraftServer implements Server { boolean monsters = config.getBoolean("spawn-monsters", console.worlds.get(0).difficulty > 0); int difficulty = config.getInt("difficulty", console.worlds.get(0).difficulty); - console.setOnlineMode(config.getBoolean("online-mode", console.getOnlineMode())); + online.value = config.getBoolean("online-mode", console.getOnlineMode()); console.setSpawnAnimals(config.getBoolean("spawn-animals", console.getSpawnAnimals())); console.setPvP(config.getBoolean("pvp", console.getPvP())); console.setAllowFlight(config.getBoolean("allow-flight", console.getAllowFlight())); @@ -833,7 +839,7 @@ public final class CraftServer implements Server { } public void savePlayers() { - server.savePlayers(); + playerList.savePlayers(); } public void configureDbConfig(ServerConfig config) { @@ -946,7 +952,7 @@ public final class CraftServer implements Server { } public boolean getOnlineMode() { - return console.getOnlineMode(); + return online.value; } public boolean getAllowFlight() { @@ -1059,24 +1065,24 @@ public final class CraftServer implements Server { @SuppressWarnings("unchecked") public Set getIPBans() { - return server.getIPBans().getEntries().keySet(); + return playerList.getIPBans().getEntries().keySet(); } public void banIP(String address) { BanEntry entry = new BanEntry(address); - server.getIPBans().add(entry); - server.getIPBans().save(); + playerList.getIPBans().add(entry); + playerList.getIPBans().save(); } public void unbanIP(String address) { - server.getIPBans().remove(address); - server.getIPBans().save(); + playerList.getIPBans().remove(address); + playerList.getIPBans().save(); } public Set getBannedPlayers() { Set result = new HashSet(); - for (Object name : server.getNameBans().getEntries().keySet()) { + for (Object name : playerList.getNameBans().getEntries().keySet()) { result.add(getOfflinePlayer((String) name)); } @@ -1084,14 +1090,14 @@ public final class CraftServer implements Server { } public void setWhitelist(boolean value) { - server.hasWhitelist = value; + playerList.hasWhitelist = value; console.getPropertyManager().a("white-list", value); } public Set getWhitelistedPlayers() { Set result = new LinkedHashSet(); - for (Object name : server.getWhitelisted()) { + for (Object name : playerList.getWhitelisted()) { if (((String)name).length() == 0 || ((String)name).startsWith("#")) { continue; } @@ -1104,7 +1110,7 @@ public final class CraftServer implements Server { public Set getOperators() { Set result = new HashSet(); - for (Object name : server.getOPs()) { + for (Object name : playerList.getOPs()) { result.add(getOfflinePlayer((String) name)); } @@ -1112,7 +1118,7 @@ public final class CraftServer implements Server { } public void reloadWhitelist() { - server.reloadWhitelist(); + playerList.reloadWhitelist(); } public GameMode getDefaultGameMode() { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 19d891d7ba..2b81286ecc 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -222,7 +222,7 @@ public class CraftWorld implements World { } public boolean isChunkInUse(int x, int z) { - return world.getPlayerManager().isChunkInUse(x, z); + return world.getPlayerChunkMap().isChunkInUse(x, z); } public boolean loadChunk(int x, int z, boolean generate) { @@ -430,9 +430,9 @@ public class CraftWorld implements World { // Forces the client to update to the new time immediately for (Player p : getPlayers()) { CraftPlayer cp = (CraftPlayer) p; - if (cp.getHandle().netServerHandler == null) continue; + if (cp.getHandle().playerConnection == null) continue; - cp.getHandle().netServerHandler.sendPacket(new Packet4UpdateTime(cp.getHandle().world.getTime(), cp.getHandle().getPlayerTime())); + cp.getHandle().playerConnection.sendPacket(new Packet4UpdateTime(cp.getHandle().world.getTime(), cp.getHandle().getPlayerTime())); } } @@ -767,12 +767,12 @@ public class CraftWorld implements World { radius *= radius; for (Player player : getPlayers()) { - if (((CraftPlayer) player).getHandle().netServerHandler == null) continue; + if (((CraftPlayer) player).getHandle().playerConnection == null) continue; if (!location.getWorld().equals(player.getWorld())) continue; distance = (int) player.getLocation().distanceSquared(location); if (distance <= radius) { - ((CraftPlayer) player).getHandle().netServerHandler.sendPacket(packet); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); } } } diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java index e40c00a8b9..a6245248f9 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -72,6 +72,8 @@ public class CraftEnchantment extends Enchantment { return "OXYGEN"; case 6: return "WATER_WORKER"; + case 7: + return "THORNS"; case 16: return "DAMAGE_ALL"; case 17: diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 503c8a9adc..1a0d2faa56 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -148,6 +148,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { else { return new CraftHanging(server, (EntityHanging) entity); } } else if (entity instanceof EntityTNTPrimed) { return new CraftTNTPrimed(server, (EntityTNTPrimed) entity); } + else if (entity instanceof EntityFireworks) { return new CraftFirework(server, (EntityFireworks) entity); } throw new IllegalArgumentException("Unknown entity"); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java new file mode 100644 index 0000000000..78e5baa152 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java @@ -0,0 +1,28 @@ +package org.bukkit.craftbukkit.entity; + +import net.minecraft.server.EntityFireworks; + +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Firework; + +public class CraftFirework extends CraftEntity implements Firework { + + public CraftFirework(CraftServer server, EntityFireworks entity) { + super(server, entity); + } + + @Override + public EntityFireworks getHandle() { + return (EntityFireworks) entity; + } + + @Override + public String toString() { + return "CraftFirework"; + } + + public EntityType getType() { + return EntityType.FIREWORK; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java index c4bd959a97..9068a454c9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -229,7 +229,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { } private void openCustomInventory(Inventory inventory, EntityPlayer player, int windowType) { - if (player.netServerHandler == null) return; + if (player.playerConnection == null) return; Container container = new CraftContainer(inventory, this, player.nextContainerCounter()); container = CraftEventFactory.callInventoryOpenEvent(player, container); @@ -238,7 +238,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { String title = container.getBukkitView().getTitle(); int size = container.getBukkitView().getTopInventory().getSize(); - player.netServerHandler.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size)); + player.playerConnection.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size)); getHandle().activeContainer = container; getHandle().activeContainer.addSlotListener(player); } @@ -279,10 +279,10 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { public void openInventory(InventoryView inventory) { if (!(getHandle() instanceof EntityPlayer)) return; // TODO: NPC support? - if (((EntityPlayer) getHandle()).netServerHandler == null) return; + if (((EntityPlayer) getHandle()).playerConnection == null) return; if (getHandle().activeContainer != getHandle().defaultContainer) { // fire INVENTORY_CLOSE if one already open - ((EntityPlayer)getHandle()).netServerHandler.handleContainerClose(new Packet101CloseWindow(getHandle().activeContainer.windowId)); + ((EntityPlayer)getHandle()).playerConnection.handleContainerClose(new Packet101CloseWindow(getHandle().activeContainer.windowId)); } EntityPlayer player = (EntityPlayer) getHandle(); Container container; @@ -303,7 +303,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { int windowType = CraftContainer.getNotchInventoryType(type); String title = inventory.getTitle(); int size = inventory.getTopInventory().getSize(); - player.netServerHandler.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size)); + player.playerConnection.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size)); player.activeContainer = container; player.activeContainer.addSlotListener(player); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index 6bdfe3e72a..02b32cfa63 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -22,11 +22,11 @@ public class CraftItem extends CraftEntity implements Item { } public ItemStack getItemStack() { - return CraftItemStack.asCraftMirror(item.itemStack); + return CraftItemStack.asCraftMirror(item.getItemStack()); } public void setItemStack(ItemStack stack) { - item.itemStack = CraftItemStack.asNMSCopy(stack); + item.setItemStack(CraftItemStack.asNMSCopy(stack)); } public int getPickupDelay() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index eafce16fcb..ee41c37b08 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -255,8 +255,8 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().effects.remove(type.getId()); getHandle().updateEffects = true; if (getHandle() instanceof EntityPlayer) { - if (((EntityPlayer) getHandle()).netServerHandler == null) return; - ((EntityPlayer) getHandle()).netServerHandler.sendPacket(new Packet42RemoveMobEffect(getHandle().id, new MobEffect(type.getId(), 0, 0))); + if (((EntityPlayer) getHandle()).playerConnection == null) return; + ((EntityPlayer) getHandle()).playerConnection.sendPacket(new Packet42RemoveMobEffect(getHandle().id, new MobEffect(type.getId(), 0, 0))); } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 3c1ff7305b..750e950977 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -94,9 +94,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public InetSocketAddress getAddress() { - if (getHandle().netServerHandler == null) return null; + if (getHandle().playerConnection == null) return null; - SocketAddress addr = getHandle().netServerHandler.networkManager.getSocketAddress(); + SocketAddress addr = getHandle().playerConnection.networkManager.getSocketAddress(); if (addr instanceof InetSocketAddress) { return (InetSocketAddress) addr; } else { @@ -123,9 +123,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void sendRawMessage(String message) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; - getHandle().netServerHandler.sendPacket(new Packet3Chat(message)); + getHandle().playerConnection.sendPacket(new Packet3Chat(message)); } public void sendMessage(String message) { @@ -181,11 +181,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Packet201PlayerInfo packet = new Packet201PlayerInfo(name, true, getHandle().ping); for (int i = 0; i < server.getHandle().players.size(); ++i) { EntityPlayer entityplayer = (EntityPlayer) server.getHandle().players.get(i); - if (entityplayer.netServerHandler == null) continue; + if (entityplayer.playerConnection == null) continue; if (entityplayer.getBukkitEntity().canSee(this)) { - entityplayer.netServerHandler.sendPacket(oldpacket); - entityplayer.netServerHandler.sendPacket(packet); + entityplayer.playerConnection.sendPacket(oldpacket); + entityplayer.playerConnection.sendPacket(packet); } } } @@ -211,16 +211,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void kickPlayer(String message) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; - getHandle().netServerHandler.disconnect(message == null ? "" : message); + getHandle().playerConnection.disconnect(message == null ? "" : message); } public void setCompassTarget(Location loc) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; // Do not directly assign here, from the packethandler we'll assign it. - getHandle().netServerHandler.sendPacket(new Packet6SpawnPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); + getHandle().playerConnection.sendPacket(new Packet6SpawnPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); } public Location getCompassTarget() { @@ -228,9 +228,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void chat(String msg) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; - getHandle().netServerHandler.chat(msg, false); + getHandle().playerConnection.chat(msg, false); } public boolean performCommand(String command) { @@ -238,36 +238,36 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void playNote(Location loc, byte instrument, byte note) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; int id = getHandle().world.getTypeId(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); - getHandle().netServerHandler.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument, note)); + getHandle().playerConnection.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument, note)); } public void playNote(Location loc, Instrument instrument, Note note) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; int id = getHandle().world.getTypeId(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); - getHandle().netServerHandler.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument.getType(), note.getId())); + getHandle().playerConnection.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument.getType(), note.getId())); } public void playSound(Location loc, Sound sound, float volume, float pitch) { - if (loc == null || sound == null || getHandle().netServerHandler == null) return; + if (loc == null || sound == null || getHandle().playerConnection == null) return; double x = loc.getBlockX() + 0.5; double y = loc.getBlockY() + 0.5; double z = loc.getBlockZ() + 0.5; Packet62NamedSoundEffect packet = new Packet62NamedSoundEffect(CraftSound.getSound(sound), x, y, z, volume, pitch); - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } public void playEffect(Location loc, Effect effect, int data) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; int packetData = effect.getId(); Packet61WorldEvent packet = new Packet61WorldEvent(packetData, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, false); - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } public void playEffect(Location loc, Effect effect, T data) { @@ -286,17 +286,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void sendBlockChange(Location loc, int material, byte data) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; Packet53BlockChange packet = new Packet53BlockChange(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), ((CraftWorld) loc.getWorld()).getHandle()); packet.material = material; packet.data = data; - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) { - if (getHandle().netServerHandler == null) return false; + if (getHandle().playerConnection == null) return false; /* int x = loc.getBlockX(); @@ -320,7 +320,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Packet51MapChunk packet = new Packet51MapChunk(x, y, z, sx, sy, sz, data); - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); return true; */ @@ -329,7 +329,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void sendMap(MapView map) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; RenderData data = ((CraftMapView) map).render(this); for (int x = 0; x < 128; ++x) { @@ -339,7 +339,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { bytes[y + 3] = data.buffer[y * 128 + x]; } Packet131ItemData packet = new Packet131ItemData((short) Material.MAP.getId(), map.getId(), bytes); - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } } @@ -347,7 +347,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean teleport(Location location, PlayerTeleportEvent.TeleportCause cause) { EntityPlayer entity = getHandle(); - if (entity.netServerHandler == null || entity.netServerHandler.disconnected) { + if (entity.playerConnection == null || entity.playerConnection.disconnected) { return false; } @@ -378,7 +378,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Check if the fromWorld and toWorld are the same. if (fromWorld == toWorld) { - entity.netServerHandler.teleport(to); + entity.playerConnection.teleport(to); } else { // Close any foreign inventory if (getHandle().activeContainer != getHandle().defaultContainer){ @@ -460,14 +460,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } private void sendStatistic(int id, int amount) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; while (amount > Byte.MAX_VALUE) { sendStatistic(id, Byte.MAX_VALUE); amount -= Byte.MAX_VALUE; } - getHandle().netServerHandler.sendPacket(new Packet200Statistic(id, amount)); + getHandle().playerConnection.sendPacket(new Packet200Statistic(id, amount)); } public void setPlayerTime(long time, boolean relative) { @@ -520,7 +520,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setGameMode(GameMode mode) { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); @@ -533,14 +533,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return; } - getHandle().itemInWorldManager.setGameMode(EnumGamemode.a(mode.getValue())); - getHandle().netServerHandler.sendPacket(new Packet70Bed(3, mode.getValue())); + getHandle().playerInteractManager.setGameMode(EnumGamemode.a(mode.getValue())); + getHandle().playerConnection.sendPacket(new Packet70Bed(3, mode.getValue())); } } @Override public GameMode getGameMode() { - return GameMode.getByValue(getHandle().itemInWorldManager.getGameMode().a()); + return GameMode.getByValue(getHandle().playerInteractManager.getGameMode().a()); } public void giveExp(int exp) { @@ -624,7 +624,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void hidePlayer(Player player) { Validate.notNull(player, "hidden player cannot be null"); - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; if (equals(player)) return; if (hiddenPlayers.containsKey(player.getName())) return; hiddenPlayers.put(player.getName(), player); @@ -638,12 +638,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } //remove the hidden player from this player user list - getHandle().netServerHandler.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), false, 9999)); + getHandle().playerConnection.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), false, 9999)); } public void showPlayer(Player player) { Validate.notNull(player, "shown player cannot be null"); - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; if (equals(player)) return; if (!hiddenPlayers.containsKey(player.getName())) return; hiddenPlayers.remove(player.getName()); @@ -655,7 +655,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { entry.updatePlayer(getHandle()); } - getHandle().netServerHandler.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), true, getHandle().ping)); + getHandle().playerConnection.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), true, getHandle().ping)); } public boolean canSee(Player player) { @@ -771,14 +771,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void sendPluginMessage(Plugin source, String channel, byte[] message) { StandardMessenger.validatePluginMessage(server.getMessenger(), source, channel, message); - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; if (channels.contains(channel)) { Packet250CustomPayload packet = new Packet250CustomPayload(); packet.tag = channel; packet.length = message.length; packet.data = message; - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } } @@ -799,7 +799,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void sendSupportedChannels() { - if (getHandle().netServerHandler == null) return; + if (getHandle().playerConnection == null) return; Set listening = server.getMessenger().getIncomingChannels(); if (!listening.isEmpty()) { @@ -820,7 +820,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { packet.data = stream.toByteArray(); packet.length = packet.data.length; - getHandle().netServerHandler.sendPacket(packet); + getHandle().playerConnection.sendPacket(packet); } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 106db16e2d..9850ac7e2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -488,7 +488,7 @@ public class CraftEventFactory { public static Container callInventoryOpenEvent(EntityPlayer player, Container container) { if (player.activeContainer != player.defaultContainer) { // fire INVENTORY_CLOSE if one already open - player.netServerHandler.handleContainerClose(new Packet101CloseWindow(player.activeContainer.windowId)); + player.playerConnection.handleContainerClose(new Packet101CloseWindow(player.activeContainer.windowId)); } CraftServer server = ((WorldServer) player.world).getServer(); diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java index 0b86469bed..36aa6f8298 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java @@ -91,7 +91,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { } } // Build chunk section - csect[sec] = new ChunkSection(sec << 4, secBlkID, secExtBlkID); + csect[sec] = new ChunkSection(sec << 4, true, secBlkID, secExtBlkID); } } else { // Else check for byte-per-block section data @@ -107,7 +107,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { if (btypes[sec] == null) { continue; } - csect[sec] = new ChunkSection(sec << 4, btypes[sec], null); + csect[sec] = new ChunkSection(sec << 4, true, btypes[sec], null); } } else { // Else, fall back to pre 1.2 method @@ -137,7 +137,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { if (blk != 0) { // If non-empty if (cs == null) { // If no section yet, get one - cs = csect[sec] = new ChunkSection(sec << 4); + cs = csect[sec] = new ChunkSection(sec << 4, true); csbytes = cs.g(); } csbytes[(cy << 8) | (cz << 4) | cx] = blk; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java index 048451e1a1..1f136deefb 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java @@ -85,7 +85,7 @@ public class CraftContainer extends Container { setupSlots(top, bottom); } int size = getSize(); - player.getHandle().netServerHandler.sendPacket(new Packet100OpenWindow(this.windowId, type, cachedTitle, size)); + player.getHandle().playerConnection.sendPacket(new Packet100OpenWindow(this.windowId, type, cachedTitle, size)); player.updateInventory(); } return true; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 87709d73db..7c52e85389 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -36,8 +36,8 @@ import com.google.common.collect.ImmutableMap; *
  • void applyToItem(NBTTagCompound tag) *
  • boolean applicableTo(Material type) *

    - *
  • boolean notUncommon(CraftMetaItem meta) *
  • boolean equalsCommon(CraftMetaItem meta) + *
  • boolean notUncommon(CraftMetaItem meta) *

    *
  • boolean isEmpty() *
  • boolean is{Type}Empty() diff --git a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java index df09019056..90b2e6ac46 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java +++ b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java @@ -14,7 +14,7 @@ public class LazyPlayerSet extends LazyHashSet { if (reference != null) { throw new IllegalStateException("Reference already created!"); } - List players = MinecraftServer.getServer().getServerConfigurationManager().players; + List players = MinecraftServer.getServer().getPlayerList().players; HashSet reference = new HashSet(players.size()); for (EntityPlayer player : players) { reference.add(player.getBukkitEntity());