Updated to Minecraft version 1.4

This commit is contained in:
Dinnerbone 2011-03-31 21:40:00 +01:00
parent 0635f7c1b8
commit 87c36febeb
84 changed files with 1024 additions and 793 deletions

View File

@ -39,7 +39,7 @@
<dependency> <dependency>
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>minecraft-server</artifactId> <artifactId>minecraft-server</artifactId>
<version>1.3</version> <version>1.4</version>
<type>jar</type> <type>jar</type>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@ -1,8 +1,10 @@
package net.minecraft.server; package net.minecraft.server;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.event.block.BlockRedstoneEvent; import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockBloodStone extends Block { public class BlockBloodStone extends Block {
@ -17,8 +19,9 @@ public class BlockBloodStone extends Block {
CraftServer server = ((WorldServer) world).getServer(); CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k); org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower(); int power = block.getBlockPower();
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power); BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power);
server.getPluginManager().callEvent(eventRedstone); server.getPluginManager().callEvent(eventRedstone);
} }
} }
// Craftbukkit end // Craftbukkit end

View File

@ -78,7 +78,7 @@ public class BlockButton extends Block {
} }
if (flag) { if (flag) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }
} }
@ -86,7 +86,7 @@ public class BlockButton extends Block {
private boolean h(World world, int i, int j, int k) { private boolean h(World world, int i, int j, int k) {
if (!this.a(world, i, j, k)) { if (!this.a(world, i, j, k)) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
return false; return false;
} else { } else {

View File

@ -57,7 +57,7 @@ public class BlockCactus extends Block {
public void a(World world, int i, int j, int k, int l) { public void a(World world, int i, int j, int k, int l) {
if (!this.f(world, i, j, k)) { if (!this.f(world, i, j, k)) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }
} }

View File

@ -169,7 +169,7 @@ public class BlockDoor extends Block {
if (flag) { if (flag) {
if (!world.isStatic) { if (!world.isStatic) {
this.b_(world, i, j, k, i1); this.a_(world, i, j, k, i1);
} }
} else if (l > 0 && Block.byId[l].c()) { } else if (l > 0 && Block.byId[l].c()) {
boolean flag1 = world.p(i, j, k) || world.p(i, j + 1, k); boolean flag1 = world.p(i, j, k) || world.p(i, j + 1, k);

View File

@ -166,13 +166,13 @@ public class BlockFire extends Block {
if (!world.isEmpty(i, j, k)) { if (!world.isEmpty(i, j, k)) {
return 0; return 0;
} else { } else {
int l = this.g(world, i + 1, j, k, b0); int l = this.f(world, i + 1, j, k, b0);
l = this.g(world, i - 1, j, k, l); l = this.f(world, i - 1, j, k, l);
l = this.g(world, i, j - 1, k, l); l = this.f(world, i, j - 1, k, l);
l = this.g(world, i, j + 1, k, l); l = this.f(world, i, j + 1, k, l);
l = this.g(world, i, j, k - 1, l); l = this.f(world, i, j, k - 1, l);
l = this.g(world, i, j, k + 1, l); l = this.f(world, i, j, k + 1, l);
return l; return l;
} }
} }
@ -185,7 +185,7 @@ public class BlockFire extends Block {
return this.a[iblockaccess.getTypeId(i, j, k)] > 0; return this.a[iblockaccess.getTypeId(i, j, k)] > 0;
} }
public int g(World world, int i, int j, int k, int l) { public int f(World world, int i, int j, int k, int l) {
int i1 = this.a[world.getTypeId(i, j, k)]; int i1 = this.a[world.getTypeId(i, j, k)];
return i1 > l ? i1 : l; return i1 > l ? i1 : l;

View File

@ -2,11 +2,13 @@ package net.minecraft.server;
import java.util.Random; import java.util.Random;
// CraftBukkit Start
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.block.CraftBlock; import org.bukkit.craftbukkit.block.CraftBlock;
import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockFromToEvent;
// CraftBukkit end
public class BlockFlowing extends BlockFluids { public class BlockFlowing extends BlockFluids {
@ -47,11 +49,11 @@ public class BlockFlowing extends BlockFluids {
byte b1 = -100; byte b1 = -100;
this.a = 0; this.a = 0;
int j1 = this.f(world, i - 1, j, k, b1); int j1 = this.e(world, i - 1, j, k, b1);
j1 = this.f(world, i + 1, j, k, j1); j1 = this.e(world, i + 1, j, k, j1);
j1 = this.f(world, i, j, k - 1, j1); j1 = this.e(world, i, j, k - 1, j1);
j1 = this.f(world, i, j, k + 1, j1); j1 = this.e(world, i, j, k + 1, j1);
i1 = j1 + b0; i1 = j1 + b0;
if (i1 >= 8 || j1 < 0) { if (i1 >= 8 || j1 < 0) {
i1 = -1; i1 = -1;
@ -135,7 +137,7 @@ public class BlockFlowing extends BlockFluids {
} }
if (!event.isCancelled()) { if (!event.isCancelled()) {
this.g(world, i + currentFace.getModX(), j, k + currentFace.getModZ(), i1); this.f(world, i + currentFace.getModX(), j, k + currentFace.getModZ(), i1);
} }
} }
index++; index++;
@ -144,7 +146,7 @@ public class BlockFlowing extends BlockFluids {
} }
} }
private void g(World world, int i, int j, int k, int l) { private void f(World world, int i, int j, int k, int l) {
if (this.l(world, i, j, k)) { if (this.l(world, i, j, k)) {
int i1 = world.getTypeId(i, j, k); int i1 = world.getTypeId(i, j, k);
@ -152,7 +154,7 @@ public class BlockFlowing extends BlockFluids {
if (this.material == Material.LAVA) { if (this.material == Material.LAVA) {
this.h(world, i, j, k); this.h(world, i, j, k);
} else { } else {
Block.byId[i1].b_(world, i, j, k, world.getData(i, j, k)); Block.byId[i1].a_(world, i, j, k, world.getData(i, j, k));
} }
} }
@ -268,7 +270,7 @@ public class BlockFlowing extends BlockFluids {
} }
} }
protected int f(World world, int i, int j, int k, int l) { protected int e(World world, int i, int j, int k, int l) {
int i1 = this.g(world, i, j, k); int i1 = this.g(world, i, j, k);
if (i1 < 0) { if (i1 < 0) {

View File

@ -132,7 +132,7 @@ public class BlockLeaves extends BlockLeavesBase {
if (event.isCancelled()) return; if (event.isCancelled()) return;
// CraftBukkit end // CraftBukkit end
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }

View File

@ -79,7 +79,7 @@ public class BlockLever extends Block {
} }
if (flag) { if (flag) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }
} }
@ -87,7 +87,7 @@ public class BlockLever extends Block {
private boolean g(World world, int i, int j, int k) { private boolean g(World world, int i, int j, int k) {
if (!this.a(world, i, j, k)) { if (!this.a(world, i, j, k)) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
return false; return false;
} else { } else {

View File

@ -52,7 +52,7 @@ public class BlockPressurePlate extends Block {
} }
if (flag) { if (flag) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }
} }

View File

@ -1,8 +1,10 @@
package net.minecraft.server; package net.minecraft.server;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.event.block.BlockRedstoneEvent; import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockPumpkin extends Block { public class BlockPumpkin extends Block {
@ -58,8 +60,9 @@ public class BlockPumpkin extends Block {
CraftServer server = ((WorldServer) world).getServer(); CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k); org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower(); int power = block.getBlockPower();
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power); BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power);
server.getPluginManager().callEvent(eventRedstone); server.getPluginManager().callEvent(eventRedstone);
} }
} }
// Craftbukkit end // Craftbukkit end

View File

@ -21,7 +21,7 @@ public class BlockRedstoneTorch extends BlockTorch {
private boolean a(World world, int i, int j, int k, boolean flag) { private boolean a(World world, int i, int j, int k, boolean flag) {
if (flag) { if (flag) {
b.add(new RedstoneUpdateInfo(i, j, k, world.k())); b.add(new RedstoneUpdateInfo(i, j, k, world.l()));
} }
int l = 0; int l = 0;
@ -95,7 +95,7 @@ public class BlockRedstoneTorch extends BlockTorch {
public void a(World world, int i, int j, int k, Random random) { public void a(World world, int i, int j, int k, Random random) {
boolean flag = this.g(world, i, j, k); boolean flag = this.g(world, i, j, k);
while (b.size() > 0 && world.k() - ((RedstoneUpdateInfo) b.get(0)).d > 100L) { while (b.size() > 0 && world.l() - ((RedstoneUpdateInfo) b.get(0)).d > 100L) {
b.remove(0); b.remove(0);
} }

View File

@ -84,15 +84,15 @@ public class BlockRedstoneWire extends Block {
} }
if (j2 != l || j != i1 || k2 != j1) { if (j2 != l || j != i1 || k2 != j1) {
l1 = this.g(world, j2, j, k2, l1); l1 = this.f(world, j2, j, k2, l1);
} }
if (world.d(j2, j, k2) && !world.d(i, j + 1, k)) { if (world.d(j2, j, k2) && !world.d(i, j + 1, k)) {
if (j2 != l || j + 1 != i1 || k2 != j1) { if (j2 != l || j + 1 != i1 || k2 != j1) {
l1 = this.g(world, j2, j + 1, k2, l1); l1 = this.f(world, j2, j + 1, k2, l1);
} }
} else if (!world.d(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) { } else if (!world.d(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) {
l1 = this.g(world, j2, j - 1, k2, l1); l1 = this.f(world, j2, j - 1, k2, l1);
} }
} }
@ -144,7 +144,7 @@ public class BlockRedstoneWire extends Block {
} }
boolean flag1 = false; boolean flag1 = false;
int i3 = this.g(world, j2, j, k2, -1); int i3 = this.f(world, j2, j, k2, -1);
l1 = world.getData(i, j, k); l1 = world.getData(i, j, k);
if (l1 > 0) { if (l1 > 0) {
@ -155,7 +155,7 @@ public class BlockRedstoneWire extends Block {
this.a(world, j2, j, k2, i, j, k); this.a(world, j2, j, k2, i, j, k);
} }
i3 = this.g(world, j2, l2, k2, -1); i3 = this.f(world, j2, l2, k2, -1);
l1 = world.getData(i, j, k); l1 = world.getData(i, j, k);
if (l1 > 0) { if (l1 > 0) {
--l1; --l1;
@ -262,7 +262,8 @@ public class BlockRedstoneWire extends Block {
} }
} }
public int g(World world, int i, int j, int k, int l) { // Craftbukkit made public // Craftbukkit private-> public
public int f(World world, int i, int j, int k, int l) {
if (world.getTypeId(i, j, k) != this.id) { if (world.getTypeId(i, j, k) != this.id) {
return l; return l;
} else { } else {
@ -278,9 +279,9 @@ public class BlockRedstoneWire extends Block {
boolean flag = this.a(world, i, j, k); boolean flag = this.a(world, i, j, k);
if (!flag) { if (!flag) {
this.b_(world, i, j, k, i1); this.a_(world, i, j, k, i1);
world.e(i, j, k, 0); world.e(i, j, k, 0);
} else } else
// Craftbukkit // Craftbukkit
if ((Block.byId[l] != null && Block.byId[l].c()) || Block.DIODE_OFF.id == l || Block.DIODE_ON.id == l) { if ((Block.byId[l] != null && Block.byId[l].c()) || Block.DIODE_OFF.id == l || Block.DIODE_ON.id == l) {
this.g(world, i, j, k); this.g(world, i, j, k);

View File

@ -1,10 +1,13 @@
package net.minecraft.server; package net.minecraft.server;
import java.util.Random; import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.event.block.BlockRedstoneEvent; import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockSign extends BlockContainer { public class BlockSign extends BlockContainer {
@ -99,21 +102,21 @@ public class BlockSign extends BlockContainer {
} }
if (flag) { if (flag) {
this.b_(world, i, j, k, world.getData(i, j, k)); this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0); world.e(i, j, k, 0);
} }
super.a(world, i, j, k, l); super.a(world, i, j, k, l);
// Craftbukkit start // CraftBukkit start
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].c()) { if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].c()) {
CraftWorld craftWorld = ((WorldServer) world).getWorld(); CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer(); CraftServer server = ((WorldServer) world).getServer();
Block block = craftWorld.getBlockAt(i, j, k); Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower(); int power = block.getBlockPower();
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power); BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power);
server.getPluginManager().callEvent(eventRedstone); server.getPluginManager().callEvent(eventRedstone);
} }
// Craftbukkit end // CraftBukkit end
} }
} }

View File

@ -2,12 +2,12 @@ package net.minecraft.server;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
// CraftBukkit start // CraftBukkit start
import java.util.Iterator;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
// CraftBukkit end // CraftBukkit end
@ -90,7 +90,7 @@ public class Chunk {
int i1; int i1;
for (i1 = j << 11 | k << 7; l > 0 && Block.q[this.b[i1 + l - 1]] == 0; --l) { for (i1 = j << 11 | k << 7; l > 0 && Block.q[this.b[i1 + l - 1] & 255] == 0; --l) {
; ;
} }
@ -104,7 +104,7 @@ public class Chunk {
int k1 = 127; int k1 = 127;
do { do {
j1 -= Block.q[this.b[i1 + k1]]; j1 -= Block.q[this.b[i1 + k1] & 255];
if (j1 > 0) { if (j1 > 0) {
this.f.a(j, k1, k, j1); this.f.a(j, k1, k, j1);
} }
@ -159,7 +159,7 @@ public class Chunk {
i1 = j; i1 = j;
} }
for (int j1 = i << 11 | k << 7; i1 > 0 && Block.q[this.b[j1 + i1 - 1]] == 0; --i1) { for (int j1 = i << 11 | k << 7; i1 > 0 && Block.q[this.b[j1 + i1 - 1] & 255] == 0; --i1) {
; ;
} }
@ -231,7 +231,7 @@ public class Chunk {
} }
public int a(int i, int j, int k) { public int a(int i, int j, int k) {
return this.b[i << 11 | k << 7 | j]; return this.b[i << 11 | k << 7 | j] & 255;
} }
public boolean a(int i, int j, int k, int l, int i1) { public boolean a(int i, int j, int k, int l, int i1) {
@ -245,14 +245,14 @@ public class Chunk {
int l1 = this.j * 16 + i; int l1 = this.j * 16 + i;
int i2 = this.k * 16 + k; int i2 = this.k * 16 + k;
this.b[i << 11 | k << 7 | j] = b0; this.b[i << 11 | k << 7 | j] = (byte) (b0 & 255);
if (k1 != 0 && !this.d.isStatic) { if (k1 != 0 && !this.d.isStatic) {
Block.byId[k1].b(this.d, l1, j, i2); Block.byId[k1].b(this.d, l1, j, i2);
} }
this.e.a(i, j, k, i1); this.e.a(i, j, k, i1);
if (!this.d.m.e) { if (!this.d.m.e) {
if (Block.q[b0] != 0) { if (Block.q[b0 & 255] != 0) {
if (j >= j1) { if (j >= j1) {
this.g(i, j + 1, k); this.g(i, j + 1, k);
} }
@ -286,13 +286,13 @@ public class Chunk {
int k1 = this.j * 16 + i; int k1 = this.j * 16 + i;
int l1 = this.k * 16 + k; int l1 = this.k * 16 + k;
this.b[i << 11 | k << 7 | j] = b0; this.b[i << 11 | k << 7 | j] = (byte) (b0 & 255);
if (j1 != 0) { if (j1 != 0) {
Block.byId[j1].b(this.d, k1, j, l1); Block.byId[j1].b(this.d, k1, j, l1);
} }
this.e.a(i, j, k, 0); this.e.a(i, j, k, 0);
if (Block.q[b0] != 0) { if (Block.q[b0 & 255] != 0) {
if (j >= i1) { if (j >= i1) {
this.g(i, j + 1, k); this.g(i, j + 1, k);
} }
@ -555,10 +555,10 @@ public class Chunk {
return false; return false;
} else { } else {
if (flag) { if (flag) {
if (this.q && this.d.k() != this.r) { if (this.q && this.d.l() != this.r) {
return true; return true;
} }
} else if (this.q && this.d.k() >= this.r + 600L) { } else if (this.q && this.d.l() >= this.r + 600L) {
return true; return true;
} }
@ -612,10 +612,20 @@ public class Chunk {
} }
public Random a(long i) { public Random a(long i) {
return new Random(this.d.j() + (long) (this.j * this.j * 4987142) + (long) (this.j * 5947611) + (long) (this.k * this.k) * 4392871L + (long) (this.k * 389711) ^ i); return new Random(this.d.k() + (long) (this.j * this.j * 4987142) + (long) (this.j * 5947611) + (long) (this.k * this.k) * 4392871L + (long) (this.k * 389711) ^ i);
} }
public boolean g() { public boolean g() {
return false; return false;
} }
public void h() {
for (int i = 0; i < this.b.length; ++i) {
byte b0 = this.b[i];
if (b0 != 0 && Block.byId[b0 & 255] == null) {
this.b[i] = 0;
}
}
}
} }

View File

@ -19,13 +19,16 @@ import org.bukkit.event.world.ChunkUnloadEvent;
// CraftBukkit end // CraftBukkit end
public class ChunkProviderServer implements IChunkProvider { public class ChunkProviderServer implements IChunkProvider {
public LongHashset a = new LongHashset(); // CraftBukkit
public Chunk b; // CraftBukkit // CraftBukkit start
public IChunkProvider c; // CraftBukkit public LongHashset a = new LongHashset();
public Chunk b;
public IChunkProvider c;
private IChunkLoader d; private IChunkLoader d;
public LongHashtable<Chunk> e = new LongHashtable<Chunk>(); // CraftBukkit public LongHashtable<Chunk> e = new LongHashtable<Chunk>();
public List f = new ArrayList(); // CraftBukkit public List f = new ArrayList();
public WorldServer g; // CraftBukkit public WorldServer g;
// CraftBukkit end
public ChunkProviderServer(WorldServer worldserver, IChunkLoader ichunkloader, IChunkProvider ichunkprovider) { public ChunkProviderServer(WorldServer worldserver, IChunkLoader ichunkloader, IChunkProvider ichunkprovider) {
this.b = new EmptyChunk(worldserver, new byte['\u8000'], 0, 0); this.b = new EmptyChunk(worldserver, new byte['\u8000'], 0, 0);
@ -38,8 +41,8 @@ public class ChunkProviderServer implements IChunkProvider {
return this.e.containsKey(i, j); // CraftBukkit return this.e.containsKey(i, j); // CraftBukkit
} }
public void c(int i, int j) { public void d(int i, int j) {
ChunkCoordinates chunkcoordinates = this.g.l(); ChunkCoordinates chunkcoordinates = this.g.m();
int k = i * 16 + 8 - chunkcoordinates.a; int k = i * 16 + 8 - chunkcoordinates.a;
int l = j * 16 + 8 - chunkcoordinates.c; int l = j * 16 + 8 - chunkcoordinates.c;
short short1 = 128; short short1 = 128;
@ -49,7 +52,7 @@ public class ChunkProviderServer implements IChunkProvider {
} }
} }
public Chunk d(int i, int j) { public Chunk c(int i, int j) {
// CraftBukkit start // CraftBukkit start
this.a.remove(i, j); this.a.remove(i, j);
Chunk chunk = (Chunk) this.e.get(i, j); Chunk chunk = (Chunk) this.e.get(i, j);
@ -105,9 +108,10 @@ public class ChunkProviderServer implements IChunkProvider {
} }
public Chunk b(int i, int j) { public Chunk b(int i, int j) {
Chunk chunk = (Chunk) this.e.get(i, j); // CraftBukkit // CraftBukkit start
Chunk chunk = (Chunk) this.e.get(i, j);
chunk = chunk == null ? (this.g.r ? this.d(i, j) : this.b) : chunk; chunk = chunk == null ? (this.g.r ? this.c(i, j) : this.b) : chunk;
if (chunk == this.b) return chunk; if (chunk == this.b) return chunk;
if (i != chunk.j || j != chunk.k) { if (i != chunk.j || j != chunk.k) {
MinecraftServer.a.info("Chunk (" + chunk.j + ", " + chunk.k +") stored at (" + i + ", " + j + ")"); MinecraftServer.a.info("Chunk (" + chunk.j + ", " + chunk.k +") stored at (" + i + ", " + j + ")");
@ -117,9 +121,11 @@ public class ChunkProviderServer implements IChunkProvider {
x.printStackTrace(); x.printStackTrace();
} }
return chunk; return chunk;
// CraftBukkit end
} }
public Chunk e(int i, int j) { // CraftBukkit - private->public // CraftBukkit - private->public
public Chunk e(int i, int j) {
if (this.d == null) { if (this.d == null) {
return null; return null;
} else { } else {
@ -127,7 +133,7 @@ public class ChunkProviderServer implements IChunkProvider {
Chunk chunk = this.d.a(this.g, i, j); Chunk chunk = this.d.a(this.g, i, j);
if (chunk != null) { if (chunk != null) {
chunk.r = this.g.k(); chunk.r = this.g.l();
} }
return chunk; return chunk;
@ -138,7 +144,8 @@ public class ChunkProviderServer implements IChunkProvider {
} }
} }
public void a(Chunk chunk) { // CraftBukkit - private->public // CraftBukkit - private->public
public void a(Chunk chunk) {
if (this.d != null) { if (this.d != null) {
try { try {
this.d.b(this.g, chunk); this.d.b(this.g, chunk);
@ -148,10 +155,11 @@ public class ChunkProviderServer implements IChunkProvider {
} }
} }
public void b(Chunk chunk) { // CraftBukkit - private->public // CraftBukkit - private->public
public void b(Chunk chunk) {
if (this.d != null) { if (this.d != null) {
try { try {
chunk.r = this.g.k(); chunk.r = this.g.l();
this.d.a(this.g, chunk); this.d.a(this.g, chunk);
} catch (Exception ioexception) { // CraftBukkit - IOException -> Exception } catch (Exception ioexception) { // CraftBukkit - IOException -> Exception
ioexception.printStackTrace(); ioexception.printStackTrace();

View File

@ -81,10 +81,10 @@ public class ConsoleCommandHandler {
int i; int i;
if (s.toLowerCase().startsWith("kick ")) { if (s.toLowerCase().startsWith("kick ")) {
// CraftBukkit - Start - Add kick message compatibility // CraftBukkit start - Add kick message compatibility
String[] parts = s.split(" "); String[] parts = s.split(" ");
s2 = ( parts.length >= 2 ) ? parts[1] : ""; s2 = ( parts.length >= 2 ) ? parts[1] : "";
// CraftBukkit - End // CraftBukkit end
entityplayer = null; entityplayer = null;
for (i = 0; i < serverconfigurationmanager.b.size(); ++i) { for (i = 0; i < serverconfigurationmanager.b.size(); ++i) {

View File

@ -1,12 +1,12 @@
package net.minecraft.server; package net.minecraft.server;
import java.text.SimpleDateFormat;
import java.util.logging.ConsoleHandler; import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler; import java.util.logging.FileHandler;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
// CraftBukkit start // CraftBukkit start
import java.text.SimpleDateFormat;
import java.util.logging.Handler; import java.util.logging.Handler;
import org.bukkit.craftbukkit.util.ShortConsoleLogFormatter; import org.bukkit.craftbukkit.util.ShortConsoleLogFormatter;
import org.bukkit.craftbukkit.util.TerminalConsoleHandler; import org.bukkit.craftbukkit.util.TerminalConsoleHandler;
@ -24,17 +24,17 @@ public class ConsoleLogManager {
ConsoleLogFormatter consolelogformatter = new ConsoleLogFormatter(); ConsoleLogFormatter consolelogformatter = new ConsoleLogFormatter();
a.setUseParentHandlers(false); a.setUseParentHandlers(false);
ConsoleHandler consolehandler = new TerminalConsoleHandler(server.reader); // Craftbukkit
// CraftBukkit start // CraftBukkit start
ConsoleHandler consolehandler = new TerminalConsoleHandler(server.reader);
for (Handler handler: global.getHandlers()) { for (Handler handler: global.getHandlers()) {
global.removeHandler(handler); global.removeHandler(handler);
} }
// CraftBukkit end
consolehandler.setFormatter(new ShortConsoleLogFormatter(server)); // Craftbukkit consolehandler.setFormatter(new ShortConsoleLogFormatter(server));
global.addHandler(consolehandler);
// CraftBukkit end
a.addHandler(consolehandler); a.addHandler(consolehandler);
global.addHandler(consolehandler); // CraftBukkit
try { try {
FileHandler filehandler = new FileHandler("server.log", true); FileHandler filehandler = new FileHandler("server.log", true);

View File

@ -21,8 +21,8 @@ public abstract class Entity {
private static int entityCount = 0; private static int entityCount = 0;
public int id; public int id;
public double aB; public double aC;
public boolean aC; public boolean aD;
public Entity passenger; public Entity passenger;
public Entity vehicle; public Entity vehicle;
public World world; public World world;
@ -41,18 +41,17 @@ public abstract class Entity {
public float lastPitch; public float lastPitch;
public final AxisAlignedBB boundingBox; public final AxisAlignedBB boundingBox;
public boolean onGround; public boolean onGround;
public boolean aV;
public boolean aW; public boolean aW;
public boolean aX; public boolean aX;
public boolean aY; public boolean aY;
public boolean aZ; public boolean aZ;
public boolean ba;
public boolean dead; public boolean dead;
public float height; public float height;
public float length; public float length;
public float width; public float width;
public float be;
public float bf; public float bf;
protected boolean bg; public float bg;
protected float fallDistance; protected float fallDistance;
private int b; private int b;
public double bi; public double bi;
@ -83,20 +82,19 @@ public abstract class Entity {
public Entity(World world) { public Entity(World world) {
this.id = entityCount++; this.id = entityCount++;
this.aB = 1.0D; this.aC = 1.0D;
this.aC = false; this.aD = false;
this.boundingBox = AxisAlignedBB.a(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D); this.boundingBox = AxisAlignedBB.a(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D);
this.onGround = false; this.onGround = false;
this.aX = false;
this.aY = false; this.aY = false;
this.aZ = true; this.aZ = false;
this.ba = true;
this.dead = false; this.dead = false;
this.height = 0.0F; this.height = 0.0F;
this.length = 0.6F; this.length = 0.6F;
this.width = 1.8F; this.width = 1.8F;
this.be = 0.0F;
this.bf = 0.0F; this.bf = 0.0F;
this.bg = true; this.bg = 0.0F;
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
this.b = 1; this.b = 1;
this.bl = 0.0F; this.bl = 0.0F;
@ -124,7 +122,7 @@ public abstract class Entity {
protected abstract void a(); protected abstract void a();
public DataWatcher O() { public DataWatcher T() {
return this.datawatcher; return this.datawatcher;
} }
@ -136,11 +134,11 @@ public abstract class Entity {
return this.id; return this.id;
} }
public void C() { public void D() {
this.dead = true; this.dead = true;
} }
protected void a(float f, float f1) { protected void b(float f, float f1) {
this.length = f; this.length = f;
this.width = f1; this.width = f1;
} }
@ -161,16 +159,16 @@ public abstract class Entity {
} }
public void f_() { public void f_() {
this.H(); this.L();
} }
public void H() { public void L() {
if (this.vehicle != null && this.vehicle.dead) { if (this.vehicle != null && this.vehicle.dead) {
this.vehicle = null; this.vehicle = null;
} }
++this.ticksLived; ++this.ticksLived;
this.be = this.bf; this.bf = this.bg;
this.lastX = this.locX; this.lastX = this.locX;
this.lastY = this.locY; this.lastY = this.locY;
this.lastZ = this.locZ; this.lastZ = this.locZ;
@ -245,12 +243,12 @@ public abstract class Entity {
} }
} }
if (this.Q()) { if (this.V()) {
this.P(); this.U();
} }
if (this.locY < -64.0D) { if (this.locY < -64.0D) {
this.M(); this.R();
} }
if (!this.world.isStatic) { if (!this.world.isStatic) {
@ -261,7 +259,7 @@ public abstract class Entity {
this.justCreated = false; this.justCreated = false;
} }
protected void P() { protected void U() {
if (!this.by) { if (!this.by) {
// CraftBukkit start -- TODO: this event spams! // CraftBukkit start -- TODO: this event spams!
if (this instanceof EntityLiving) { if (this instanceof EntityLiving) {
@ -299,8 +297,8 @@ public abstract class Entity {
} }
} }
protected void M() { protected void R() {
this.C(); this.D();
} }
public boolean b(double d0, double d1, double d2) { public boolean b(double d0, double d1, double d2) {
@ -323,7 +321,7 @@ public abstract class Entity {
double d6 = d1; double d6 = d1;
double d7 = d2; double d7 = d2;
AxisAlignedBB axisalignedbb = this.boundingBox.b(); AxisAlignedBB axisalignedbb = this.boundingBox.b();
boolean flag = this.onGround && this.U(); boolean flag = this.onGround && this.Z();
if (flag) { if (flag) {
double d8; double d8;
@ -356,7 +354,7 @@ public abstract class Entity {
} }
this.boundingBox.d(0.0D, d1, 0.0D); this.boundingBox.d(0.0D, d1, 0.0D);
if (!this.aZ && d6 != d1) { if (!this.ba && d6 != d1) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -371,7 +369,7 @@ public abstract class Entity {
} }
this.boundingBox.d(d0, 0.0D, 0.0D); this.boundingBox.d(d0, 0.0D, 0.0D);
if (!this.aZ && d5 != d0) { if (!this.ba && d5 != d0) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -382,7 +380,7 @@ public abstract class Entity {
} }
this.boundingBox.d(0.0D, 0.0D, d2); this.boundingBox.d(0.0D, 0.0D, d2);
if (!this.aZ && d7 != d2) { if (!this.ba && d7 != d2) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -410,7 +408,7 @@ public abstract class Entity {
} }
this.boundingBox.d(0.0D, d1, 0.0D); this.boundingBox.d(0.0D, d1, 0.0D);
if (!this.aZ && d6 != d1) { if (!this.ba && d6 != d1) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -421,7 +419,7 @@ public abstract class Entity {
} }
this.boundingBox.d(d0, 0.0D, 0.0D); this.boundingBox.d(d0, 0.0D, 0.0D);
if (!this.aZ && d5 != d0) { if (!this.ba && d5 != d0) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -432,7 +430,7 @@ public abstract class Entity {
} }
this.boundingBox.d(0.0D, 0.0D, d2); this.boundingBox.d(0.0D, 0.0D, d2);
if (!this.aZ && d7 != d2) { if (!this.ba && d7 != d2) {
d2 = 0.0D; d2 = 0.0D;
d1 = 0.0D; d1 = 0.0D;
d0 = 0.0D; d0 = 0.0D;
@ -451,10 +449,10 @@ public abstract class Entity {
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D; this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
this.locY = this.boundingBox.b + (double) this.height - (double) this.bl; this.locY = this.boundingBox.b + (double) this.height - (double) this.bl;
this.locZ = (this.boundingBox.c + this.boundingBox.f) / 2.0D; this.locZ = (this.boundingBox.c + this.boundingBox.f) / 2.0D;
this.aV = d5 != d0 || d7 != d2; this.aW = d5 != d0 || d7 != d2;
this.aW = d6 != d1; this.aX = d6 != d1;
this.onGround = d6 != d1 && d6 < 0.0D; this.onGround = d6 != d1 && d6 < 0.0D;
this.aX = this.aV || this.aW; this.aY = this.aW || this.aX;
this.a(d1, this.onGround); this.a(d1, this.onGround);
if (d5 != d0) { if (d5 != d0) {
this.motX = 0.0D; this.motX = 0.0D;
@ -475,7 +473,7 @@ public abstract class Entity {
int j1; int j1;
// CraftBukkit start // CraftBukkit start
if ((this.aV) && (getBukkitEntity() instanceof Vehicle)) { if ((this.aW) && (getBukkitEntity() instanceof Vehicle)) {
Vehicle vehicle = (Vehicle) getBukkitEntity(); Vehicle vehicle = (Vehicle) getBukkitEntity();
org.bukkit.World wrld = ((WorldServer) world).getWorld(); org.bukkit.World wrld = ((WorldServer) world).getWorld();
org.bukkit.block.Block block = wrld.getBlockAt(MathHelper.b(locX), MathHelper.b(locY - 0.20000000298023224D - (double) this.height), MathHelper.b(locZ)); org.bukkit.block.Block block = wrld.getBlockAt(MathHelper.b(locX), MathHelper.b(locY - 0.20000000298023224D - (double) this.height), MathHelper.b(locZ));
@ -495,13 +493,13 @@ public abstract class Entity {
} }
// CraftBukkit end // CraftBukkit end
if (this.bg && !flag) { if (this.l() && !flag) {
this.bf = (float) ((double) this.bf + (double) MathHelper.a(d9 * d9 + d10 * d10) * 0.6D); this.bg = (float) ((double) this.bg + (double) MathHelper.a(d9 * d9 + d10 * d10) * 0.6D);
l = MathHelper.b(this.locX); l = MathHelper.b(this.locX);
i1 = MathHelper.b(this.locY - 0.20000000298023224D - (double) this.height); i1 = MathHelper.b(this.locY - 0.20000000298023224D - (double) this.height);
j1 = MathHelper.b(this.locZ); j1 = MathHelper.b(this.locZ);
k = this.world.getTypeId(l, i1, j1); k = this.world.getTypeId(l, i1, j1);
if (this.bf > (float) this.b && k > 0) { if (this.bg > (float) this.b && k > 0) {
++this.b; ++this.b;
StepSound stepsound = Block.byId[k].stepSound; StepSound stepsound = Block.byId[k].stepSound;
@ -572,6 +570,10 @@ public abstract class Entity {
} }
} }
protected boolean l() {
return true;
}
protected void a(double d0, boolean flag) { protected void a(double d0, boolean flag) {
if (flag) { if (flag) {
if (this.fallDistance > 0.0F) { if (this.fallDistance > 0.0F) {
@ -599,7 +601,7 @@ public abstract class Entity {
EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone); EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled() || event.getDamage() == 0) {
return; return;
} }
@ -617,7 +619,7 @@ public abstract class Entity {
} }
public boolean a(Material material) { public boolean a(Material material) {
double d0 = this.locY + (double) this.p(); double d0 = this.locY + (double) this.q();
int i = MathHelper.b(this.locX); int i = MathHelper.b(this.locX);
int j = MathHelper.d((float) MathHelper.b(d0)); int j = MathHelper.d((float) MathHelper.b(d0));
int k = MathHelper.b(this.locZ); int k = MathHelper.b(this.locZ);
@ -633,11 +635,11 @@ public abstract class Entity {
} }
} }
public float p() { public float q() {
return 0.0F; return 0.0F;
} }
public boolean Q() { public boolean V() {
return this.world.a(this.boundingBox.b(-0.10000000149011612D, -0.4000000059604645D, -0.10000000149011612D), Material.LAVA); return this.world.a(this.boundingBox.b(-0.10000000149011612D, -0.4000000059604645D, -0.10000000149011612D), Material.LAVA);
} }
@ -767,12 +769,12 @@ public abstract class Entity {
this.motZ += d2; this.motZ += d2;
} }
protected void R() { protected void W() {
this.aY = true; this.aZ = true;
} }
public boolean a(Entity entity, int i) { public boolean a(Entity entity, int i) {
this.R(); this.W();
return false; return false;
} }
@ -787,7 +789,7 @@ public abstract class Entity {
public void c(Entity entity, int i) {} public void c(Entity entity, int i) {}
public boolean c(NBTTagCompound nbttagcompound) { public boolean c(NBTTagCompound nbttagcompound) {
String s = this.S(); String s = this.X();
if (!this.dead && s != null) { if (!this.dead && s != null) {
nbttagcompound.a("id", s); nbttagcompound.a("id", s);
@ -868,7 +870,7 @@ public abstract class Entity {
this.b(nbttagcompound); this.b(nbttagcompound);
} }
protected final String S() { protected final String X() {
return EntityTypes.b(this); return EntityTypes.b(this);
} }
@ -920,13 +922,13 @@ public abstract class Entity {
return entityitem; return entityitem;
} }
public boolean J() { public boolean N() {
return !this.dead; return !this.dead;
} }
public boolean D() { public boolean E() {
int i = MathHelper.b(this.locX); int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.locY + (double) this.p()); int j = MathHelper.b(this.locY + (double) this.q());
int k = MathHelper.b(this.locZ); int k = MathHelper.b(this.locZ);
return this.world.d(i, j, k); return this.world.d(i, j, k);
@ -940,7 +942,7 @@ public abstract class Entity {
return null; return null;
} }
public void x() { public void o_() {
if (this.vehicle.dead) { if (this.vehicle.dead) {
this.vehicle = null; this.vehicle = null;
} else { } else {
@ -995,10 +997,10 @@ public abstract class Entity {
} }
public void h_() { public void h_() {
this.passenger.a(this.locX, this.locY + this.k() + this.passenger.B(), this.locZ); this.passenger.a(this.locX, this.locY + this.k() + this.passenger.C(), this.locZ);
} }
public double B() { public double C() {
return (double) this.height; return (double) this.height;
} }
@ -1072,21 +1074,21 @@ public abstract class Entity {
} }
} }
public Vec3D N() { public Vec3D S() {
return null; return null;
} }
public void T() {} public void Y() {}
public ItemStack[] k_() { public ItemStack[] k_() {
return null; return null;
} }
public boolean U() { public boolean Z() {
return this.d(1); return this.d(1);
} }
public void b(boolean flag) { public void e(boolean flag) {
this.a(1, flag); this.a(1, flag);
} }

View File

@ -23,12 +23,12 @@ public class EntityArrow extends Entity {
public EntityArrow(World world) { public EntityArrow(World world) {
super(world); super(world);
this.a(0.5F, 0.5F); this.b(0.5F, 0.5F);
} }
public EntityArrow(World world, double d0, double d1, double d2) { public EntityArrow(World world, double d0, double d1, double d2) {
super(world); super(world);
this.a(0.5F, 0.5F); this.b(0.5F, 0.5F);
this.a(d0, d1, d2); this.a(d0, d1, d2);
this.height = 0.0F; this.height = 0.0F;
} }
@ -36,8 +36,8 @@ public class EntityArrow extends Entity {
public EntityArrow(World world, EntityLiving entityliving) { public EntityArrow(World world, EntityLiving entityliving) {
super(world); super(world);
this.b = entityliving; this.b = entityliving;
this.a(0.5F, 0.5F); this.b(0.5F, 0.5F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch); this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D; this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
@ -92,7 +92,7 @@ public class EntityArrow extends Entity {
if (i == this.f) { if (i == this.f) {
++this.h; ++this.h;
if (this.h == 1200) { if (this.h == 1200) {
this.C(); this.D();
} }
return; return;
@ -180,7 +180,7 @@ public class EntityArrow extends Entity {
if (stick) { if (stick) {
// CraftBukkit end // CraftBukkit end
this.world.a(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F)); this.world.a(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.C(); this.D();
} else { } else {
this.motX *= -0.10000000149011612D; this.motX *= -0.10000000149011612D;
this.motY *= -0.10000000149011612D; this.motY *= -0.10000000149011612D;
@ -274,7 +274,7 @@ public class EntityArrow extends Entity {
if (this.g && this.b == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) { if (this.g && this.b == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F); this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1); entityhuman.b(this, 1);
this.C(); this.D();
} }
} }
} }

View File

@ -12,8 +12,8 @@ import org.bukkit.event.vehicle.VehicleDamageEvent;
import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleEnterEvent;
import org.bukkit.event.vehicle.VehicleEntityCollisionEvent; import org.bukkit.event.vehicle.VehicleEntityCollisionEvent;
import org.bukkit.event.vehicle.VehicleMoveEvent; import org.bukkit.event.vehicle.VehicleMoveEvent;
// CraftBukkit end
import org.bukkit.event.vehicle.VehicleUpdateEvent; import org.bukkit.event.vehicle.VehicleUpdateEvent;
// CraftBukkit end
public class EntityBoat extends Entity { public class EntityBoat extends Entity {
@ -26,9 +26,10 @@ public class EntityBoat extends Entity {
private double g; private double g;
private double h; private double h;
private double i; private double i;
public double maxSpeed = 0.4D; // CraftBukkit
// CraftBukkit start // CraftBukkit start
public double maxSpeed = 0.4D;
public void h(Entity entity) { public void h(Entity entity) {
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
Vehicle vehicle = (Vehicle) this.getBukkitEntity(); Vehicle vehicle = (Vehicle) this.getBukkitEntity();
@ -50,10 +51,13 @@ public class EntityBoat extends Entity {
this.a = 0; this.a = 0;
this.b = 0; this.b = 0;
this.c = 1; this.c = 1;
this.aC = true; this.aD = true;
this.a(1.5F, 0.6F); this.b(1.5F, 0.6F);
this.height = this.width / 2.0F; this.height = this.width / 2.0F;
this.bg = false; }
protected boolean l() {
return false;
} }
protected void a() {} protected void a() {}
@ -110,7 +114,7 @@ public class EntityBoat extends Entity {
this.c = -this.c; this.c = -this.c;
this.b = 10; this.b = 10;
this.a += i * 10; this.a += i * 10;
this.R(); this.W();
if (this.a > 40) { if (this.a > 40) {
int j; int j;
@ -122,7 +126,7 @@ public class EntityBoat extends Entity {
this.a(Item.STICK.id, 1, 0.0F); this.a(Item.STICK.id, 1, 0.0F);
} }
this.C(); this.D();
} }
return true; return true;
@ -266,9 +270,9 @@ public class EntityBoat extends Entity {
} }
} }
if (this.aV && d5 > 0.15D) { if (this.aW && d5 > 0.15D) {
if (!this.world.isStatic) { if (!this.world.isStatic) {
this.C(); this.D();
int k; int k;
@ -354,7 +358,7 @@ public class EntityBoat extends Entity {
double d0 = Math.cos((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D; double d0 = Math.cos((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D;
double d1 = Math.sin((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D; double d1 = Math.sin((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D;
this.passenger.a(this.locX + d0, this.locY + this.k() + this.passenger.B(), this.locZ + d1); this.passenger.a(this.locX + d0, this.locY + this.k() + this.passenger.C(), this.locZ + d1);
} }
} }

View File

@ -12,7 +12,7 @@ public class EntityCow extends EntityAnimal {
public EntityCow(World world) { public EntityCow(World world) {
super(world); super(world);
this.texture = "/mob/cow.png"; this.texture = "/mob/cow.png";
this.a(0.9F, 1.3F); this.b(0.9F, 1.3F);
} }
public void a(NBTTagCompound nbttagcompound) { public void a(NBTTagCompound nbttagcompound) {

View File

@ -9,22 +9,27 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end // CraftBukkit end
public class EntityCreature extends EntityLiving { public class EntityCreature extends EntityLiving {
// CraftBukkit start - both public
public PathEntity a; // CraftBukkit - public public PathEntity a;
public Entity d; // CraftBukkit - public public Entity d;
// CraftBukkit end
protected boolean e = false; protected boolean e = false;
public EntityCreature(World world) { public EntityCreature(World world) {
super(world); super(world);
} }
protected boolean u() {
return false;
}
protected void c_() { protected void c_() {
this.e = false; this.e = this.u();
float f = 16.0F; float f = 16.0F;
if (this.d == null) { if (this.d == null) {
// CraftBukkit start // CraftBukkit start
Entity target = this.l(); Entity target = this.m();
if (target != null) { if (target != null) {
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), TargetReason.CLOSEST_PLAYER); EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), TargetReason.CLOSEST_PLAYER);
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
@ -42,7 +47,7 @@ public class EntityCreature extends EntityLiving {
if (this.d != null) { if (this.d != null) {
this.a = this.world.a(this, this.d, f); this.a = this.world.a(this, this.d, f);
} }
} else if (!this.d.J()) { } else if (!this.d.N()) {
// CraftBukkit start // CraftBukkit start
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.TARGET_DIED); EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.TARGET_DIED);
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
@ -66,7 +71,7 @@ public class EntityCreature extends EntityLiving {
if (!this.e && this.d != null && (this.a == null || this.random.nextInt(20) == 0)) { if (!this.e && this.d != null && (this.a == null || this.random.nextInt(20) == 0)) {
this.a = this.world.a(this, this.d, f); this.a = this.world.a(this, this.d, f);
} else if (this.a == null && this.random.nextInt(80) == 0 || this.random.nextInt(80) == 0) { } else if (!this.e && (this.a == null && this.random.nextInt(80) == 0 || this.random.nextInt(80) == 0)) {
boolean flag = false; boolean flag = false;
int i = -1; int i = -1;
int j = -1; int j = -1;
@ -95,7 +100,7 @@ public class EntityCreature extends EntityLiving {
int l1 = MathHelper.b(this.boundingBox.b); int l1 = MathHelper.b(this.boundingBox.b);
boolean flag1 = this.g_(); boolean flag1 = this.g_();
boolean flag2 = this.Q(); boolean flag2 = this.V();
this.pitch = 0.0F; this.pitch = 0.0F;
if (this.a != null && this.random.nextInt(100) != 0) { if (this.a != null && this.random.nextInt(100) != 0) {
@ -155,10 +160,10 @@ public class EntityCreature extends EntityLiving {
} }
if (this.d != null) { if (this.d != null) {
this.b(this.d, 30.0F); this.a(this.d, 30.0F, 30.0F);
} }
if (this.aV) { if (this.aW) {
this.ax = true; this.ax = true;
} }
@ -177,7 +182,7 @@ public class EntityCreature extends EntityLiving {
return 0.0F; return 0.0F;
} }
protected Entity l() { protected Entity m() {
return null; return null;
} }
@ -188,4 +193,20 @@ public class EntityCreature extends EntityLiving {
return super.b() && this.a(i, j, k) >= 0.0F; return super.b() && this.a(i, j, k) >= 0.0F;
} }
public boolean z() {
return this.a != null;
}
public void a(PathEntity pathentity) {
this.a = pathentity;
}
public Entity A() {
return this.d;
}
public void c(Entity entity) {
this.d = entity;
}
} }

View File

@ -32,7 +32,7 @@ public class EntityCreeper extends EntityMonster {
public void f_() { public void f_() {
this.b = this.a; this.b = this.a;
if (this.world.isStatic) { if (this.world.isStatic) {
int i = this.r(); int i = this.v();
if (i > 0 && this.a == 0) { if (i > 0 && this.a == 0) {
this.world.a(this, "random.fuse", 1.0F, 0.5F); this.world.a(this, "random.fuse", 1.0F, 0.5F);
@ -67,7 +67,7 @@ public class EntityCreeper extends EntityMonster {
} }
protected void a(Entity entity, float f) { protected void a(Entity entity, float f) {
int i = this.r(); int i = this.v();
if ((i > 0 || f >= 3.0F) && (i <= 0 || f >= 7.0F)) { if ((i > 0 || f >= 3.0F) && (i <= 0 || f >= 7.0F)) {
this.e(-1); this.e(-1);
@ -91,7 +91,7 @@ public class EntityCreeper extends EntityMonster {
if (!event.isCancelled()) { if (!event.isCancelled()) {
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire()); this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.C(); this.D();
} else { } else {
this.a = 0; this.a = 0;
} }
@ -106,7 +106,7 @@ public class EntityCreeper extends EntityMonster {
return Item.SULPHUR.id; return Item.SULPHUR.id;
} }
private int r() { private int v() {
return this.datawatcher.a(16); return this.datawatcher.a(16);
} }

View File

@ -27,7 +27,7 @@ public class EntityEgg extends Entity {
public EntityEgg(World world) { public EntityEgg(World world) {
super(world); super(world);
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
} }
protected void a() {} protected void a() {}
@ -35,8 +35,8 @@ public class EntityEgg extends Entity {
public EntityEgg(World world, EntityLiving entityliving) { public EntityEgg(World world, EntityLiving entityliving) {
super(world); super(world);
this.g = entityliving; this.g = entityliving;
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch); this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D; this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
@ -53,7 +53,7 @@ public class EntityEgg extends Entity {
public EntityEgg(World world, double d0, double d1, double d2) { public EntityEgg(World world, double d0, double d1, double d2) {
super(world); super(world);
this.h = 0; this.h = 0;
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.a(d0, d1, d2); this.a(d0, d1, d2);
this.height = 0.0F; this.height = 0.0F;
} }
@ -95,7 +95,7 @@ public class EntityEgg extends Entity {
if (i == this.e) { if (i == this.e) {
++this.h; ++this.h;
if (this.h == 1200) { if (this.h == 1200) {
this.C(); this.D();
} }
return; return;
@ -261,7 +261,7 @@ public class EntityEgg extends Entity {
this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D); this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D);
} }
this.C(); this.D();
} }
this.locX += this.motX; this.locX += this.motX;
@ -331,7 +331,7 @@ public class EntityEgg extends Entity {
if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) { if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F); this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1); entityhuman.b(this, 1);
this.C(); this.D();
} }
} }
} }

View File

@ -28,7 +28,7 @@ public class EntityFireball extends Entity {
public EntityFireball(World world) { public EntityFireball(World world) {
super(world); super(world);
this.a(1.0F, 1.0F); this.b(1.0F, 1.0F);
} }
protected void a() {} protected void a() {}
@ -36,7 +36,7 @@ public class EntityFireball extends Entity {
public EntityFireball(World world, EntityLiving entityliving, double d0, double d1, double d2) { public EntityFireball(World world, EntityLiving entityliving, double d0, double d1, double d2) {
super(world); super(world);
this.j = entityliving; this.j = entityliving;
this.a(1.0F, 1.0F); this.b(1.0F, 1.0F);
this.c(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch); this.c(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.a(this.locX, this.locY, this.locZ); this.a(this.locX, this.locY, this.locZ);
this.height = 0.0F; this.height = 0.0F;
@ -64,7 +64,7 @@ public class EntityFireball extends Entity {
if (i == this.h) { if (i == this.h) {
++this.k; ++this.k;
if (this.k == 1200) { if (this.k == 1200) {
this.C(); this.D();
} }
return; return;
@ -155,7 +155,7 @@ public class EntityFireball extends Entity {
if (!event.isCancelled()) { if (!event.isCancelled()) {
// give 'this' instead of (Entity) null so we know what causes the damage // give 'this' instead of (Entity) null so we know what causes the damage
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire()); this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.C(); this.D();
} }
// CraftBukkit end // CraftBukkit end
} }
@ -230,9 +230,9 @@ public class EntityFireball extends Entity {
} }
public boolean a(Entity entity, int i) { public boolean a(Entity entity, int i) {
this.R(); this.W();
if (entity != null) { if (entity != null) {
Vec3D vec3d = entity.N(); Vec3D vec3d = entity.S();
if (vec3d != null) { if (vec3d != null) {
this.motX = vec3d.a; this.motX = vec3d.a;

View File

@ -31,7 +31,7 @@ public class EntityFish extends Entity {
public EntityFish(World world) { public EntityFish(World world) {
super(world); super(world);
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
} }
protected void a() {} protected void a() {}
@ -40,7 +40,7 @@ public class EntityFish extends Entity {
super(world); super(world);
this.b = entityhuman; this.b = entityhuman;
this.b.hookedFish = this; this.b.hookedFish = this;
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.c(entityhuman.locX, entityhuman.locY + 1.62D - (double) entityhuman.height, entityhuman.locZ, entityhuman.yaw, entityhuman.pitch); this.c(entityhuman.locX, entityhuman.locY + 1.62D - (double) entityhuman.height, entityhuman.locZ, entityhuman.yaw, entityhuman.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D; this.locY -= 0.10000000149011612D;
@ -101,10 +101,10 @@ public class EntityFish extends Entity {
this.c(this.yaw, this.pitch); this.c(this.yaw, this.pitch);
} else { } else {
if (!this.world.isStatic) { if (!this.world.isStatic) {
ItemStack itemstack = this.b.z(); ItemStack itemstack = this.b.A();
if (this.b.dead || !this.b.J() || itemstack == null || itemstack.a() != Item.FISHING_ROD || this.g(this.b) > 1024.0D) { if (this.b.dead || !this.b.N() || itemstack == null || itemstack.a() != Item.FISHING_ROD || this.g(this.b) > 1024.0D) {
this.C(); this.D();
this.b.hookedFish = null; this.b.hookedFish = null;
return; return;
} }
@ -131,7 +131,7 @@ public class EntityFish extends Entity {
if (i == this.g) { if (i == this.g) {
++this.i; ++this.i;
if (this.i == 1200) { if (this.i == 1200) {
this.C(); this.D();
} }
return; return;
@ -247,7 +247,7 @@ public class EntityFish extends Entity {
this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F; this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F;
float f2 = 0.92F; float f2 = 0.92F;
if (this.onGround || this.aV) { if (this.onGround || this.aW) {
f2 = 0.5F; f2 = 0.5F;
} }
@ -354,6 +354,7 @@ public class EntityFish extends Entity {
entityitem.motY = d6 * d9 + (double) MathHelper.a(d8) * 0.08D; entityitem.motY = d6 * d9 + (double) MathHelper.a(d8) * 0.08D;
entityitem.motZ = d7 * d9; entityitem.motZ = d7 * d9;
this.world.a((Entity) entityitem); this.world.a((Entity) entityitem);
this.b.a(StatisticList.x, 1);
b0 = 1; b0 = 1;
} }
@ -361,7 +362,7 @@ public class EntityFish extends Entity {
b0 = 2; b0 = 2;
} }
this.C(); this.D();
this.b.hookedFish = null; this.b.hookedFish = null;
return b0; return b0;
} }

View File

@ -1,5 +1,6 @@
package net.minecraft.server; package net.minecraft.server;
import java.util.Iterator;
import java.util.List; import java.util.List;
// CraftBukkit start // CraftBukkit start
@ -37,7 +38,8 @@ public abstract class EntityHuman extends EntityLiving {
private int sleepTicks; private int sleepTicks;
public float z; public float z;
public float A; public float A;
private int d = 0; private ChunkCoordinates d;
private int e = 0;
public EntityFish hookedFish = null; public EntityFish hookedFish = null;
public EntityHuman(World world) { public EntityHuman(World world) {
@ -45,7 +47,7 @@ public abstract class EntityHuman extends EntityLiving {
this.defaultContainer = new ContainerPlayer(this.inventory, !world.isStatic); this.defaultContainer = new ContainerPlayer(this.inventory, !world.isStatic);
this.activeContainer = this.defaultContainer; this.activeContainer = this.defaultContainer;
this.height = 1.62F; this.height = 1.62F;
ChunkCoordinates chunkcoordinates = world.l(); ChunkCoordinates chunkcoordinates = world.m();
this.c((double) chunkcoordinates.a + 0.5D, (double) (chunkcoordinates.b + 1), (double) chunkcoordinates.c + 0.5D, 0.0F, 0.0F); this.c((double) chunkcoordinates.a + 0.5D, (double) (chunkcoordinates.b + 1), (double) chunkcoordinates.c + 0.5D, 0.0F, 0.0F);
this.health = 20; this.health = 20;
@ -61,16 +63,16 @@ public abstract class EntityHuman extends EntityLiving {
} }
public void f_() { public void f_() {
if (this.E()) { if (this.F()) {
++this.sleepTicks; ++this.sleepTicks;
if (this.sleepTicks > 100) { if (this.sleepTicks > 100) {
this.sleepTicks = 100; this.sleepTicks = 100;
} }
if (!this.l()) { if (!this.m()) {
this.a(true, true); this.a(true, true, false);
} else if (!this.world.isStatic && this.world.c()) { } else if (!this.world.isStatic && this.world.d()) {
this.a(false, true); this.a(false, true, true);
} }
} else if (this.sleepTicks > 0) { } else if (this.sleepTicks > 0) {
++this.sleepTicks; ++this.sleepTicks;
@ -81,7 +83,7 @@ public abstract class EntityHuman extends EntityLiving {
super.f_(); super.f_();
if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.b(this)) { if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.b(this)) {
this.t(); this.u();
this.activeContainer = this.defaultContainer; this.activeContainer = this.defaultContainer;
} }
@ -120,18 +122,19 @@ public abstract class EntityHuman extends EntityLiving {
this.w += d0 * 0.25D; this.w += d0 * 0.25D;
this.y += d2 * 0.25D; this.y += d2 * 0.25D;
this.x += d1 * 0.25D; this.x += d1 * 0.25D;
this.a(StatisticList.j, 1);
} }
protected boolean w() { protected boolean p_() {
return this.health <= 0 || this.E(); return this.health <= 0 || this.F();
} }
protected void t() { protected void u() {
this.activeContainer = this.defaultContainer; this.activeContainer = this.defaultContainer;
} }
public void x() { public void o_() {
super.x(); super.o_();
this.n = this.o; this.n = this.o;
this.o = 0.0F; this.o = 0.0F;
} }
@ -150,14 +153,14 @@ public abstract class EntityHuman extends EntityLiving {
this.V = (float) this.q / 8.0F; this.V = (float) this.q / 8.0F;
} }
public void q() { public void r() {
if (this.world.j == 0 && this.health < 20 && this.ticksLived % 20 * 12 == 0) { if (this.world.j == 0 && this.health < 20 && this.ticksLived % 20 * 12 == 0) {
this.b(1); this.b(1);
} }
this.inventory.e(); this.inventory.f();
this.n = this.o; this.n = this.o;
super.q(); super.r();
float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ); float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ);
// CraftBukkit -- Math -> TrigMath // CraftBukkit -- Math -> TrigMath
float f1 = (float) TrigMath.atan(-this.motY * 0.20000000298023224D) * 15.0F; float f1 = (float) TrigMath.atan(-this.motY * 0.20000000298023224D) * 15.0F;
@ -197,14 +200,14 @@ public abstract class EntityHuman extends EntityLiving {
public void a(Entity entity) { public void a(Entity entity) {
super.a(entity); super.a(entity);
this.a(0.2F, 0.2F); this.b(0.2F, 0.2F);
this.a(this.locX, this.locY, this.locZ); this.a(this.locX, this.locY, this.locZ);
this.motY = 0.10000000149011612D; this.motY = 0.10000000149011612D;
if (this.name.equals("Notch")) { if (this.name.equals("Notch")) {
this.a(new ItemStack(Item.APPLE, 1), true); this.a(new ItemStack(Item.APPLE, 1), true);
} }
this.inventory.g(); this.inventory.h();
if (entity != null) { if (entity != null) {
this.motX = (double) (-MathHelper.b((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F); this.motX = (double) (-MathHelper.b((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
this.motZ = (double) (-MathHelper.a((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F); this.motZ = (double) (-MathHelper.a((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
@ -213,13 +216,19 @@ public abstract class EntityHuman extends EntityLiving {
} }
this.height = 0.1F; this.height = 0.1F;
this.a(StatisticList.u, 1);
} }
public void c(Entity entity, int i) { public void c(Entity entity, int i) {
this.m += i; this.m += i;
if (entity instanceof EntityHuman) {
this.a(StatisticList.w, 1);
} else {
this.a(StatisticList.v, 1);
}
} }
public void y() { public void z() {
this.a(this.inventory.a(this.inventory.c, 1), false); this.a(this.inventory.a(this.inventory.c, 1), false);
} }
@ -229,7 +238,7 @@ public abstract class EntityHuman extends EntityLiving {
public void a(ItemStack itemstack, boolean flag) { public void a(ItemStack itemstack, boolean flag) {
if (itemstack != null) { if (itemstack != null) {
EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY - 0.30000001192092896D + (double) this.p(), this.locZ, itemstack); EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY - 0.30000001192092896D + (double) this.q(), this.locZ, itemstack);
entityitem.c = 40; entityitem.c = 40;
float f = 0.1F; float f = 0.1F;
@ -273,6 +282,7 @@ public abstract class EntityHuman extends EntityLiving {
// CraftBukkit end // CraftBukkit end
this.a(entityitem); this.a(entityitem);
this.a(StatisticList.r, 1);
} }
} }
@ -308,7 +318,11 @@ public abstract class EntityHuman extends EntityLiving {
this.sleepTicks = nbttagcompound.d("SleepTimer"); this.sleepTicks = nbttagcompound.d("SleepTimer");
if (this.sleeping) { if (this.sleeping) {
this.b = new ChunkCoordinates(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)); this.b = new ChunkCoordinates(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ));
this.a(true, true); this.a(true, true, false);
}
if (nbttagcompound.b("SpawnX") && nbttagcompound.b("SpawnY") && nbttagcompound.b("SpawnZ")) {
this.d = new ChunkCoordinates(nbttagcompound.e("SpawnX"), nbttagcompound.e("SpawnY"), nbttagcompound.e("SpawnZ"));
} }
} }
@ -318,6 +332,11 @@ public abstract class EntityHuman extends EntityLiving {
nbttagcompound.a("Dimension", this.dimension); nbttagcompound.a("Dimension", this.dimension);
nbttagcompound.a("Sleeping", this.sleeping); nbttagcompound.a("Sleeping", this.sleeping);
nbttagcompound.a("SleepTimer", (short) this.sleepTicks); nbttagcompound.a("SleepTimer", (short) this.sleepTicks);
if (this.d != null) {
nbttagcompound.a("SpawnX", this.d.a);
nbttagcompound.a("SpawnY", this.d.b);
nbttagcompound.a("SpawnZ", this.d.c);
}
} }
public void a(IInventory iinventory) {} public void a(IInventory iinventory) {}
@ -326,7 +345,7 @@ public abstract class EntityHuman extends EntityLiving {
public void b(Entity entity, int i) {} public void b(Entity entity, int i) {}
public float p() { public float q() {
return 0.12F; return 0.12F;
} }
@ -339,8 +358,8 @@ public abstract class EntityHuman extends EntityLiving {
if (this.health <= 0) { if (this.health <= 0) {
return false; return false;
} else { } else {
if (this.E()) { if (this.F()) {
this.a(true, true); this.a(true, true, false);
} }
if (entity instanceof EntityMonster || entity instanceof EntityArrow) { if (entity instanceof EntityMonster || entity instanceof EntityArrow) {
@ -357,35 +376,73 @@ public abstract class EntityHuman extends EntityLiving {
} }
} }
// CraftBukkit start - this is here instead of EntityMonster because EntityLiving(s) that aren't monsters if (i == 0) {
// also damage the player in this way. For example, EntitySlime. return false;
if (entity instanceof EntityLiving) { } else {
CraftServer server = ((WorldServer) this.world).getServer(); Object object = entity;
org.bukkit.entity.Entity damager = entity.getBukkitEntity();
org.bukkit.entity.Entity damagee = this.getBukkitEntity();
DamageCause damageType = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (entity instanceof EntityArrow && ((EntityArrow) entity).b != null) {
return false; object = ((EntityArrow) entity).b;
} }
i = event.getDamage(); // CraftBukkit start - this is here instead of EntityMonster because EntityLiving(s) that aren't monsters
} // also damage the player in this way. For example, EntitySlime.
// CraftBukkit end if (object instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity damager = ((Entity) object).getBukkitEntity();
org.bukkit.entity.Entity damagee = this.getBukkitEntity();
DamageCause damageType = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i);
server.getPluginManager().callEvent(event);
return i == 0 ? false : super.a(entity, i); if (event.isCancelled() || event.getDamage() == 0) {
return false;
}
i = event.getDamage();
// CraftBukkit end
this.a((EntityLiving) object, false);
}
this.a(StatisticList.t, i);
return super.a(entity, i);
}
}
}
protected void a(EntityLiving entityliving, boolean flag) {
if (!(entityliving instanceof EntityCreeper) && !(entityliving instanceof EntityGhast)) {
if (entityliving instanceof EntityWolf) {
EntityWolf entitywolf = (EntityWolf) entityliving;
if (entitywolf.y() && this.name.equals(entitywolf.v())) {
return;
}
}
List list = this.world.a(EntityWolf.class, AxisAlignedBB.b(this.locX, this.locY, this.locZ, this.locX + 1.0D, this.locY + 1.0D, this.locZ + 1.0D).b(16.0D, 4.0D, 16.0D));
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
EntityWolf entitywolf1 = (EntityWolf) entity;
if (entitywolf1.y() && entitywolf1.A() == null && this.name.equals(entitywolf1.v()) && (!flag || !entitywolf1.w())) {
entitywolf1.b(false);
entitywolf1.c(entityliving);
}
}
} }
} }
protected void c(int i) { protected void c(int i) {
int j = 25 - this.inventory.f(); int j = 25 - this.inventory.g();
int k = i * j + this.d; int k = i * j + this.e;
this.inventory.c(i); this.inventory.c(i);
i = k / 25; i = k / 25;
this.d = k % 25; this.e = k % 25;
super.c(i); super.c(i);
} }
@ -397,31 +454,31 @@ public abstract class EntityHuman extends EntityLiving {
public void c(Entity entity) { public void c(Entity entity) {
if (!entity.a(this)) { if (!entity.a(this)) {
ItemStack itemstack = this.z(); ItemStack itemstack = this.A();
if (itemstack != null && entity instanceof EntityLiving) { if (itemstack != null && entity instanceof EntityLiving) {
itemstack.b((EntityLiving) entity); itemstack.a((EntityLiving) entity);
if (itemstack.count <= 0) { if (itemstack.count <= 0) {
itemstack.a(this); itemstack.a(this);
this.A(); this.B();
} }
} }
} }
} }
public ItemStack z() { public ItemStack A() {
return this.inventory.b(); return this.inventory.b();
} }
public void A() { public void B() {
this.inventory.a(this.inventory.c, (ItemStack) null); this.inventory.a(this.inventory.c, (ItemStack) null);
} }
public double B() { public double C() {
return (double) (this.height - 0.5F); return (double) (this.height - 0.5F);
} }
public void r() { public void m_() {
this.q = -1; this.q = -1;
this.p = true; this.p = true;
} }
@ -440,7 +497,7 @@ public abstract class EntityHuman extends EntityLiving {
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i); EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled() || event.getDamage() == 0) {
return; return;
} }
@ -449,40 +506,48 @@ public abstract class EntityHuman extends EntityLiving {
// CraftBukkit end // CraftBukkit end
entity.a(this, i); entity.a(this, i);
ItemStack itemstack = this.z(); ItemStack itemstack = this.A();
if (itemstack != null && entity instanceof EntityLiving) { if (itemstack != null && entity instanceof EntityLiving) {
itemstack.a((EntityLiving) entity); itemstack.a((EntityLiving) entity, this);
if (itemstack.count <= 0) { if (itemstack.count <= 0) {
itemstack.a(this); itemstack.a(this);
this.A(); this.B();
} }
} }
if (entity instanceof EntityLiving) {
if (entity.N()) {
this.a((EntityLiving) entity, true);
}
this.a(StatisticList.s, i);
}
} }
} }
public void a(ItemStack itemstack) {} public void a(ItemStack itemstack) {}
public void C() { public void D() {
super.C(); super.D();
this.defaultContainer.a(this); this.defaultContainer.a(this);
if (this.activeContainer != null) { if (this.activeContainer != null) {
this.activeContainer.a(this); this.activeContainer.a(this);
} }
} }
public boolean D() { public boolean E() {
return !this.sleeping && super.D(); return !this.sleeping && super.E();
} }
public boolean a(int i, int j, int k) { public EnumBedError a(int i, int j, int k) {
if (!this.E() && this.J()) { if (!this.F() && this.N()) {
if (this.world.m.c) { if (this.world.m.c) {
return false; return EnumBedError.NOT_POSSIBLE_HERE;
} else if (this.world.c()) { } else if (this.world.d()) {
return false; return EnumBedError.NOT_POSSIBLE_NOW;
} else if (Math.abs(this.locX - (double) i) <= 3.0D && Math.abs(this.locY - (double) j) <= 2.0D && Math.abs(this.locZ - (double) k) <= 3.0D) { } else if (Math.abs(this.locX - (double) i) <= 3.0D && Math.abs(this.locY - (double) j) <= 2.0D && Math.abs(this.locZ - (double) k) <= 3.0D) {
this.a(0.2F, 0.2F); this.b(0.2F, 0.2F);
this.height = 0.2F; this.height = 0.2F;
if (this.world.f(i, j, k)) { if (this.world.f(i, j, k)) {
int l = this.world.getData(i, j, k); int l = this.world.getData(i, j, k);
@ -518,15 +583,15 @@ public abstract class EntityHuman extends EntityLiving {
this.b = new ChunkCoordinates(i, j, k); this.b = new ChunkCoordinates(i, j, k);
this.motX = this.motZ = this.motY = 0.0D; this.motX = this.motZ = this.motY = 0.0D;
if (!this.world.isStatic) { if (!this.world.isStatic) {
this.world.o(); this.world.q();
} }
return true; return EnumBedError.OK;
} else { } else {
return false; return EnumBedError.TOO_FAR_AWAY;
} }
} else { } else {
return false; return EnumBedError.OTHER_PROBLEM;
} }
} }
@ -551,21 +616,25 @@ public abstract class EntityHuman extends EntityLiving {
} }
} }
public void a(boolean flag, boolean flag1) { public void a(boolean flag, boolean flag1, boolean flag2) {
this.a(0.6F, 1.8F); this.b(0.6F, 1.8F);
this.l_(); this.l_();
ChunkCoordinates chunkcoordinates = this.b; ChunkCoordinates chunkcoordinates = this.b;
ChunkCoordinates chunkcoordinates1 = this.b;
if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c) == Block.BED.id) { if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c) == Block.BED.id) {
BlockBed.a(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, false); BlockBed.a(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, false);
ChunkCoordinates chunkcoordinates1 = BlockBed.g(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, 0); chunkcoordinates1 = BlockBed.f(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, 0);
if (chunkcoordinates1 == null) {
chunkcoordinates1 = new ChunkCoordinates(chunkcoordinates.a, chunkcoordinates.b + 1, chunkcoordinates.c);
}
this.a((double) ((float) chunkcoordinates1.a + 0.5F), (double) ((float) chunkcoordinates1.b + this.height + 0.1F), (double) ((float) chunkcoordinates1.c + 0.5F)); this.a((double) ((float) chunkcoordinates1.a + 0.5F), (double) ((float) chunkcoordinates1.b + this.height + 0.1F), (double) ((float) chunkcoordinates1.c + 0.5F));
} }
this.sleeping = false; this.sleeping = false;
if (!this.world.isStatic && flag1) { if (!this.world.isStatic && flag1) {
this.world.o(); this.world.q();
} }
if (flag) { if (flag) {
@ -573,19 +642,107 @@ public abstract class EntityHuman extends EntityLiving {
} else { } else {
this.sleepTicks = 100; this.sleepTicks = 100;
} }
if (flag2) {
this.a(this.b);
}
} }
private boolean l() { private boolean m() {
return this.world.getTypeId(this.b.a, this.b.b, this.b.c) == Block.BED.id; return this.world.getTypeId(this.b.a, this.b.b, this.b.c) == Block.BED.id;
} }
public boolean E() { public static ChunkCoordinates a(World world, ChunkCoordinates chunkcoordinates) {
return this.sleeping; IChunkProvider ichunkprovider = world.n();
ichunkprovider.c(chunkcoordinates.a - 3 >> 4, chunkcoordinates.c - 3 >> 4);
ichunkprovider.c(chunkcoordinates.a + 3 >> 4, chunkcoordinates.c - 3 >> 4);
ichunkprovider.c(chunkcoordinates.a - 3 >> 4, chunkcoordinates.c + 3 >> 4);
ichunkprovider.c(chunkcoordinates.a + 3 >> 4, chunkcoordinates.c + 3 >> 4);
if (world.getTypeId(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c) != Block.BED.id) {
return null;
} else {
ChunkCoordinates chunkcoordinates1 = BlockBed.f(world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, 0);
return chunkcoordinates1;
}
} }
public boolean F() { public boolean F() {
return this.sleeping;
}
public boolean G() {
return this.sleeping && this.sleepTicks >= 100; return this.sleeping && this.sleepTicks >= 100;
} }
public void a(String s) {} public void a(String s) {}
public ChunkCoordinates H() {
return this.d;
}
public void a(ChunkCoordinates chunkcoordinates) {
if (chunkcoordinates != null) {
this.d = new ChunkCoordinates(chunkcoordinates);
} else {
this.d = null;
}
}
public void a(Statistic statistic, int i) {}
protected void I() {
super.I();
this.a(StatisticList.q, 1);
}
public void a(float f, float f1) {
double d0 = this.locX;
double d1 = this.locY;
double d2 = this.locZ;
super.a(f, f1);
this.g(this.locX - d0, this.locY - d1, this.locZ - d2);
}
private void g(double d0, double d1, double d2) {
int i;
if (this.a(Material.WATER)) {
i = Math.round(MathHelper.a(d0 * d0 + d1 * d1 + d2 * d2) * 100.0F);
if (i > 0) {
this.a(StatisticList.p, i);
}
} else if (this.g_()) {
i = Math.round(MathHelper.a(d0 * d0 + d2 * d2) * 100.0F);
if (i > 0) {
this.a(StatisticList.l, i);
}
} else if (this.n()) {
if (d1 > 0.0D) {
this.a(StatisticList.n, (int) Math.round(d1 * 100.0D));
}
} else if (this.onGround) {
i = Math.round(MathHelper.a(d0 * d0 + d2 * d2) * 100.0F);
if (i > 0) {
this.a(StatisticList.k, i);
}
} else {
i = Math.round(MathHelper.a(d0 * d0 + d2 * d2) * 100.0F);
if (i > 25) {
this.a(StatisticList.o, i);
}
}
}
protected void a(float f) {
if (f >= 2.0F) {
this.a(StatisticList.m, (int) Math.round((double) f * 100.0D));
}
super.a(f);
}
public void J() {}
} }

View File

@ -17,7 +17,7 @@ public class EntityItem extends Entity {
public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) { public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) {
super(world); super(world);
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.height = this.width / 2.0F; this.height = this.width / 2.0F;
this.a(d0, d1, d2); this.a(d0, d1, d2);
this.a = itemstack; this.a = itemstack;
@ -25,12 +25,15 @@ public class EntityItem extends Entity {
this.motX = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D)); this.motX = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D));
this.motY = 0.20000000298023224D; this.motY = 0.20000000298023224D;
this.motZ = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D)); this.motZ = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D));
this.bg = false; }
protected boolean l() {
return false;
} }
public EntityItem(World world) { public EntityItem(World world) {
super(world); super(world);
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.height = this.width / 2.0F; this.height = this.width / 2.0F;
} }
@ -76,7 +79,7 @@ public class EntityItem extends Entity {
++this.e; ++this.e;
++this.b; ++this.b;
if (this.b >= 6000) { if (this.b >= 6000) {
this.C(); this.D();
} }
} }
@ -167,10 +170,10 @@ public class EntityItem extends Entity {
} }
public boolean a(Entity entity, int i) { public boolean a(Entity entity, int i) {
this.R(); this.W();
this.f -= i; this.f -= i;
if (this.f <= 0) { if (this.f <= 0) {
this.C(); this.D();
} }
return false; return false;
@ -203,7 +206,7 @@ public class EntityItem extends Entity {
if (!event.isCancelled() && entityhuman.inventory.a(this.a)) { if (!event.isCancelled() && entityhuman.inventory.a(this.a)) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F); this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, i); entityhuman.b(this, i);
this.C(); this.D();
} }
} }
// CraftBukkit end // CraftBukkit end

View File

@ -69,11 +69,11 @@ public abstract class EntityLiving extends Entity {
protected float ay = 0.0F; protected float ay = 0.0F;
protected float az = 0.7F; protected float az = 0.7F;
private Entity b; private Entity b;
private int c = 0; protected int aA = 0;
public EntityLiving(World world) { public EntityLiving(World world) {
super(world); super(world);
this.aC = true; this.aD = true;
this.E = (float) (Math.random() + 1.0D) * 0.01F; this.E = (float) (Math.random() + 1.0D) * 0.01F;
this.a(this.locX, this.locY, this.locZ); this.a(this.locX, this.locY, this.locZ);
this.D = (float) Math.random() * 12398.0F; this.D = (float) Math.random() * 12398.0F;
@ -84,7 +84,7 @@ public abstract class EntityLiving extends Entity {
protected void a() {} protected void a() {}
public boolean e(Entity entity) { public boolean e(Entity entity) {
return this.world.a(Vec3D.b(this.locX, this.locY + (double) this.p(), this.locZ), Vec3D.b(entity.locX, entity.locY + (double) entity.p(), entity.locZ)) == null; return this.world.a(Vec3D.b(this.locX, this.locY + (double) this.q(), this.locZ), Vec3D.b(entity.locX, entity.locY + (double) entity.q(), entity.locZ)) == null;
} }
public boolean d_() { public boolean d_() {
@ -95,7 +95,7 @@ public abstract class EntityLiving extends Entity {
return !this.dead; return !this.dead;
} }
public float p() { public float q() {
return this.width * 0.85F; return this.width * 0.85F;
} }
@ -103,7 +103,7 @@ public abstract class EntityLiving extends Entity {
return 80; return 80;
} }
public void G() { public void K() {
String s = this.e(); String s = this.e();
if (s != null) { if (s != null) {
@ -111,15 +111,15 @@ public abstract class EntityLiving extends Entity {
} }
} }
public void H() { public void L() {
this.U = this.V; this.U = this.V;
super.H(); super.L();
if (this.random.nextInt(1000) < this.a++) { if (this.random.nextInt(1000) < this.a++) {
this.a = -this.c(); this.a = -this.c();
this.G(); this.K();
} }
if (this.J() && this.D()) { if (this.N() && this.E()) {
// CraftBukkit start // CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity victim = this.getBukkitEntity(); org.bukkit.entity.Entity victim = this.getBukkitEntity();
@ -129,7 +129,7 @@ public abstract class EntityLiving extends Entity {
EntityDamageEvent event = new EntityDamageEvent(victim, damageType, damage); EntityDamageEvent event = new EntityDamageEvent(victim, damageType, damage);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage()); this.a((Entity) null, event.getDamage());
} }
// CraftBukkit end // CraftBukkit end
@ -141,7 +141,7 @@ public abstract class EntityLiving extends Entity {
int i; int i;
if (this.J() && this.a(Material.WATER) && !this.b_()) { if (this.N() && this.a(Material.WATER) && !this.b_()) {
--this.airTicks; --this.airTicks;
if (this.airTicks == -20) { if (this.airTicks == -20) {
this.airTicks = 0; this.airTicks = 0;
@ -163,7 +163,7 @@ public abstract class EntityLiving extends Entity {
EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone); EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage()); this.a((Entity) null, event.getDamage());
} }
// CraftBukkit end // CraftBukkit end
@ -190,8 +190,8 @@ public abstract class EntityLiving extends Entity {
if (this.health <= 0) { if (this.health <= 0) {
++this.deathTicks; ++this.deathTicks;
if (this.deathTicks > 20) { if (this.deathTicks > 20) {
this.L(); this.Q();
this.C(); this.D();
for (i = 0; i < 20; ++i) { for (i = 0; i < 20; ++i) {
double d0 = this.random.nextGaussian() * 0.02D; double d0 = this.random.nextGaussian() * 0.02D;
@ -209,7 +209,7 @@ public abstract class EntityLiving extends Entity {
this.lastPitch = this.pitch; this.lastPitch = this.pitch;
} }
public void I() { public void M() {
for (int i = 0; i < 20; ++i) { for (int i = 0; i < 20; ++i) {
double d0 = this.random.nextGaussian() * 0.02D; double d0 = this.random.nextGaussian() * 0.02D;
double d1 = this.random.nextGaussian() * 0.02D; double d1 = this.random.nextGaussian() * 0.02D;
@ -220,15 +220,15 @@ public abstract class EntityLiving extends Entity {
} }
} }
public void x() { public void o_() {
super.x(); super.o_();
this.H = this.I; this.H = this.I;
this.I = 0.0F; this.I = 0.0F;
} }
public void f_() { public void f_() {
super.f_(); super.f_();
this.q(); this.r();
double d0 = this.locX - this.lastX; double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ; double d1 = this.locZ - this.lastZ;
float f = MathHelper.a(d0 * d0 + d1 * d1); float f = MathHelper.a(d0 * d0 + d1 * d1);
@ -323,8 +323,8 @@ public abstract class EntityLiving extends Entity {
this.J += f2; this.J += f2;
} }
protected void a(float f, float f1) { protected void b(float f, float f1) {
super.a(f, f1); super.b(f, f1);
} }
public void b(int i) { public void b(int i) {
@ -368,7 +368,7 @@ public abstract class EntityLiving extends Entity {
this.aa = 0.0F; this.aa = 0.0F;
if (flag) { if (flag) {
this.world.a(this, (byte) 2); this.world.a(this, (byte) 2);
this.R(); this.W();
if (entity != null) { if (entity != null) {
double d0 = entity.locX - this.locX; double d0 = entity.locX - this.locX;
@ -436,19 +436,19 @@ public abstract class EntityLiving extends Entity {
} }
public void a(Entity entity) { public void a(Entity entity) {
if (this.R > 0 && entity != null) { if (this.R >= 0 && entity != null) {
entity.c(this, this.R); entity.c(this, this.R);
} }
this.af = true; this.af = true;
if (!this.world.isStatic) { if (!this.world.isStatic) {
this.o(); this.p();
} }
this.world.a(this, (byte) 3); this.world.a(this, (byte) 3);
} }
protected void o() { protected void p() {
int i = this.h(); int i = this.h();
// CraftBukkit start - whole method // CraftBukkit start - whole method
@ -487,7 +487,7 @@ public abstract class EntityLiving extends Entity {
EntityDamageEvent event = new EntityDamageEvent(victim, damageType, i); EntityDamageEvent event = new EntityDamageEvent(victim, damageType, i);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage()); this.a((Entity) null, event.getDamage());
} }
// CraftBukkit end // CraftBukkit end
@ -502,7 +502,7 @@ public abstract class EntityLiving extends Entity {
} }
} }
public void b(float f, float f1) { public void a(float f, float f1) {
double d0; double d0;
if (this.g_()) { if (this.g_()) {
@ -513,10 +513,10 @@ public abstract class EntityLiving extends Entity {
this.motY *= 0.800000011920929D; this.motY *= 0.800000011920929D;
this.motZ *= 0.800000011920929D; this.motZ *= 0.800000011920929D;
this.motY -= 0.02D; this.motY -= 0.02D;
if (this.aV && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) { if (this.aW && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
this.motY = 0.30000001192092896D; this.motY = 0.30000001192092896D;
} }
} else if (this.Q()) { } else if (this.V()) {
d0 = this.locY; d0 = this.locY;
this.a(f, f1, 0.02F); this.a(f, f1, 0.02F);
this.c(this.motX, this.motY, this.motZ); this.c(this.motX, this.motY, this.motZ);
@ -524,7 +524,7 @@ public abstract class EntityLiving extends Entity {
this.motY *= 0.5D; this.motY *= 0.5D;
this.motZ *= 0.5D; this.motZ *= 0.5D;
this.motY -= 0.02D; this.motY -= 0.02D;
if (this.aV && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) { if (this.aW && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
this.motY = 0.30000001192092896D; this.motY = 0.30000001192092896D;
} }
} else { } else {
@ -552,15 +552,19 @@ public abstract class EntityLiving extends Entity {
} }
} }
if (this.m()) { if (this.n()) {
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
if (this.motY < -0.15D) { if (this.motY < -0.15D) {
this.motY = -0.15D; this.motY = -0.15D;
} }
if (this.Z() && this.motY < 0.0D) {
this.motY = 0.0D;
}
} }
this.c(this.motX, this.motY, this.motZ); this.c(this.motX, this.motY, this.motZ);
if (this.aV && this.m()) { if (this.aW && this.n()) {
this.motY = 0.2D; this.motY = 0.2D;
} }
@ -583,7 +587,7 @@ public abstract class EntityLiving extends Entity {
this.ak += this.aj; this.ak += this.aj;
} }
public boolean m() { public boolean n() {
int i = MathHelper.b(this.locX); int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.boundingBox.b); int j = MathHelper.b(this.boundingBox.b);
int k = MathHelper.b(this.locZ); int k = MathHelper.b(this.locZ);
@ -609,7 +613,7 @@ public abstract class EntityLiving extends Entity {
this.attackTicks = nbttagcompound.d("AttackTime"); this.attackTicks = nbttagcompound.d("AttackTime");
} }
public boolean J() { public boolean N() {
return !this.dead && this.health > 0; return !this.dead && this.health > 0;
} }
@ -617,7 +621,7 @@ public abstract class EntityLiving extends Entity {
return false; return false;
} }
public void q() { public void r() {
if (this.al > 0) { if (this.al > 0) {
double d0 = this.locX + (this.am - this.locX) / (double) this.al; double d0 = this.locX + (this.am - this.locX) / (double) this.al;
double d1 = this.locY + (this.an - this.locY) / (double) this.al; double d1 = this.locY + (this.an - this.locY) / (double) this.al;
@ -640,7 +644,7 @@ public abstract class EntityLiving extends Entity {
this.c(this.yaw, this.pitch); this.c(this.yaw, this.pitch);
} }
if (this.w()) { if (this.p_()) {
this.ax = false; this.ax = false;
this.au = 0.0F; this.au = 0.0F;
this.av = 0.0F; this.av = 0.0F;
@ -650,7 +654,7 @@ public abstract class EntityLiving extends Entity {
} }
boolean flag = this.g_(); boolean flag = this.g_();
boolean flag1 = this.Q(); boolean flag1 = this.V();
if (this.ax) { if (this.ax) {
if (flag) { if (flag) {
@ -658,14 +662,14 @@ public abstract class EntityLiving extends Entity {
} else if (flag1) { } else if (flag1) {
this.motY += 0.03999999910593033D; this.motY += 0.03999999910593033D;
} else if (this.onGround) { } else if (this.onGround) {
this.K(); this.I();
} }
} }
this.au *= 0.98F; this.au *= 0.98F;
this.av *= 0.98F; this.av *= 0.98F;
this.aw *= 0.9F; this.aw *= 0.9F;
this.b(this.au, this.av); this.a(this.au, this.av);
List list = this.world.b((Entity) this, this.boundingBox.b(0.20000000298023224D, 0.0D, 0.20000000298023224D)); List list = this.world.b((Entity) this, this.boundingBox.b(0.20000000298023224D, 0.0D, 0.20000000298023224D));
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
@ -679,33 +683,37 @@ public abstract class EntityLiving extends Entity {
} }
} }
protected boolean w() { protected boolean p_() {
return this.health <= 0; return this.health <= 0;
} }
protected void K() { protected void I() {
this.motY = 0.41999998688697815D; this.motY = 0.41999998688697815D;
} }
protected boolean s() {
return true;
}
protected void c_() { protected void c_() {
++this.at; ++this.at;
EntityHuman entityhuman = this.world.a(this, -1.0D); EntityHuman entityhuman = this.world.a(this, -1.0D);
if (entityhuman != null) { if (this.s() && entityhuman != null) {
double d0 = entityhuman.locX - this.locX; double d0 = entityhuman.locX - this.locX;
double d1 = entityhuman.locY - this.locY; double d1 = entityhuman.locY - this.locY;
double d2 = entityhuman.locZ - this.locZ; double d2 = entityhuman.locZ - this.locZ;
double d3 = d0 * d0 + d1 * d1 + d2 * d2; double d3 = d0 * d0 + d1 * d1 + d2 * d2;
if (d3 > 16384.0D) { if (d3 > 16384.0D) {
this.C(); this.D();
} }
if (this.at > 600 && this.random.nextInt(800) == 0) { if (this.at > 600 && this.random.nextInt(800) == 0) {
if (d3 < 1024.0D) { if (d3 < 1024.0D) {
this.at = 0; this.at = 0;
} else { } else {
this.C(); this.D();
} }
} }
} }
@ -718,15 +726,15 @@ public abstract class EntityLiving extends Entity {
entityhuman = this.world.a(this, (double) f); entityhuman = this.world.a(this, (double) f);
if (entityhuman != null) { if (entityhuman != null) {
this.b = entityhuman; this.b = entityhuman;
this.c = 10 + this.random.nextInt(20); this.aA = 10 + this.random.nextInt(20);
} else { } else {
this.aw = (this.random.nextFloat() - 0.5F) * 20.0F; this.aw = (this.random.nextFloat() - 0.5F) * 20.0F;
} }
} }
if (this.b != null) { if (this.b != null) {
this.b(this.b, 10.0F); this.a(this.b, 10.0F, (float) this.n_());
if (this.c-- <= 0 || this.b.dead || this.b.g(this) > (double) (f * f)) { if (this.aA-- <= 0 || this.b.dead || this.b.g(this) > (double) (f * f)) {
this.b = null; this.b = null;
} }
} else { } else {
@ -739,14 +747,18 @@ public abstract class EntityLiving extends Entity {
} }
boolean flag = this.g_(); boolean flag = this.g_();
boolean flag1 = this.Q(); boolean flag1 = this.V();
if (flag || flag1) { if (flag || flag1) {
this.ax = this.random.nextFloat() < 0.8F; this.ax = this.random.nextFloat() < 0.8F;
} }
} }
public void b(Entity entity, float f) { protected int n_() {
return 10;
}
public void a(Entity entity, float f, float f1) {
double d0 = entity.locX - this.locX; double d0 = entity.locX - this.locX;
double d1 = entity.locZ - this.locZ; double d1 = entity.locZ - this.locZ;
double d2; double d2;
@ -754,17 +766,25 @@ public abstract class EntityLiving extends Entity {
if (entity instanceof EntityLiving) { if (entity instanceof EntityLiving) {
EntityLiving entityliving = (EntityLiving) entity; EntityLiving entityliving = (EntityLiving) entity;
d2 = entityliving.locY + (double) entityliving.p() - (this.locY + (double) this.p()); d2 = this.locY + (double) this.q() - (entityliving.locY + (double) entityliving.q());
} else { } else {
d2 = (entity.boundingBox.b + entity.boundingBox.e) / 2.0D - (this.locY + (double) this.p()); d2 = (entity.boundingBox.b + entity.boundingBox.e) / 2.0D - (this.locY + (double) this.q());
} }
double d3 = (double) MathHelper.a(d0 * d0 + d1 * d1); double d3 = (double) MathHelper.a(d0 * d0 + d1 * d1);
float f1 = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - 90.0F; float f2 = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
float f2 = (float) (Math.atan2(d2, d3) * 180.0D / 3.1415927410125732D); float f3 = (float) (Math.atan2(d2, d3) * 180.0D / 3.1415927410125732D);
this.pitch = -this.b(this.pitch, f2, f); this.pitch = -this.b(this.pitch, f3, f1);
this.yaw = this.b(this.yaw, f1, f); this.yaw = this.b(this.yaw, f2, f);
}
public boolean O() {
return this.b != null;
}
public Entity P() {
return this.b;
} }
private float b(float f, float f1, float f2) { private float b(float f, float f1, float f2) {
@ -789,13 +809,13 @@ public abstract class EntityLiving extends Entity {
return f + f3; return f + f3;
} }
public void L() {} public void Q() {}
public boolean b() { public boolean b() {
return this.world.a(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox); return this.world.a(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox);
} }
protected void M() { protected void R() {
// CraftBukkit start // CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
DamageCause damageType = EntityDamageEvent.DamageCause.VOID; DamageCause damageType = EntityDamageEvent.DamageCause.VOID;
@ -805,7 +825,7 @@ public abstract class EntityLiving extends Entity {
EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(damager, damagee, damageType, damageDone); EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(damager, damagee, damageType, damageDone);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled() || event.getDamage() == 0) {
return; return;
} }
damageDone = event.getDamage(); damageDone = event.getDamage();
@ -813,7 +833,7 @@ public abstract class EntityLiving extends Entity {
// CraftBukkit end // CraftBukkit end
} }
public Vec3D N() { public Vec3D S() {
return this.b(1.0F); return this.b(1.0F);
} }
@ -845,7 +865,7 @@ public abstract class EntityLiving extends Entity {
return 4; return 4;
} }
public boolean E() { public boolean F() {
return false; return false;
} }
} }

View File

@ -51,10 +51,13 @@ public class EntityMinecart extends Entity implements IInventory {
this.b = 0; this.b = 0;
this.c = 1; this.c = 1;
this.i = false; this.i = false;
this.aC = true; this.aD = true;
this.a(0.98F, 0.7F); this.b(0.98F, 0.7F);
this.height = this.width / 2.0F; this.height = this.width / 2.0F;
this.bg = false; }
protected boolean l() {
return false;
} }
protected void a() {} protected void a() {}
@ -114,7 +117,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.c = -this.c; this.c = -this.c;
this.b = 10; this.b = 10;
this.R(); this.W();
this.a += i * 10; this.a += i * 10;
if (this.a > 40) { if (this.a > 40) {
this.a(Item.MINECART.id, 1, 0.0F); this.a(Item.MINECART.id, 1, 0.0F);
@ -124,7 +127,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.a(Block.FURNACE.id, 1, 0.0F); this.a(Block.FURNACE.id, 1, 0.0F);
} }
this.C(); this.D();
} }
return true; return true;
@ -137,8 +140,8 @@ public class EntityMinecart extends Entity implements IInventory {
return !this.dead; return !this.dead;
} }
public void C() { public void D() {
for (int i = 0; i < this.m_(); ++i) { for (int i = 0; i < this.q_(); ++i) {
ItemStack itemstack = this.c_(i); ItemStack itemstack = this.c_(i);
if (itemstack != null) { if (itemstack != null) {
@ -165,7 +168,7 @@ public class EntityMinecart extends Entity implements IInventory {
} }
} }
super.C(); super.D();
} }
public void f_() { public void f_() {
@ -593,7 +596,7 @@ public class EntityMinecart extends Entity implements IInventory {
} else if (this.d == 1) { } else if (this.d == 1) {
NBTTagList nbttaglist = nbttagcompound.l("Items"); NBTTagList nbttaglist = nbttagcompound.l("Items");
this.h = new ItemStack[this.m_()]; this.h = new ItemStack[this.q_()];
for (int i = 0; i < nbttaglist.c(); ++i) { for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i); NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -692,7 +695,7 @@ public class EntityMinecart extends Entity implements IInventory {
} }
} }
public int m_() { public int q_() {
return 27; return 27;
} }
@ -723,8 +726,8 @@ public class EntityMinecart extends Entity implements IInventory {
public void a(int i, ItemStack itemstack) { public void a(int i, ItemStack itemstack) {
this.h[i] = itemstack; this.h[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) { if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.n_(); itemstack.count = this.r_();
} }
} }
@ -732,11 +735,11 @@ public class EntityMinecart extends Entity implements IInventory {
return "Minecart"; return "Minecart";
} }
public int n_() { public int r_() {
return 64; return 64;
} }
public void h() {} public void i() {}
public boolean a(EntityHuman entityhuman) { public boolean a(EntityHuman entityhuman) {
if (this.d == 0) { if (this.d == 0) {

View File

@ -20,24 +20,24 @@ public class EntityMonster extends EntityCreature implements IMonster {
this.health = 20; this.health = 20;
} }
public void q() { public void r() {
float f = this.c(1.0F); float f = this.c(1.0F);
if (f > 0.5F) { if (f > 0.5F) {
this.at += 2; this.at += 2;
} }
super.q(); super.r();
} }
public void f_() { public void f_() {
super.f_(); super.f_();
if (this.world.j == 0) { if (this.world.j == 0) {
this.C(); this.D();
} }
} }
protected Entity l() { protected Entity m() {
EntityHuman entityhuman = this.world.a(this, 16.0D); EntityHuman entityhuman = this.world.a(this, 16.0D);
return entityhuman != null && this.e(entityhuman) ? entityhuman : null; return entityhuman != null && this.e(entityhuman) ? entityhuman : null;
@ -77,7 +77,7 @@ public class EntityMonster extends EntityCreature implements IMonster {
} }
protected void a(Entity entity, float f) { protected void a(Entity entity, float f) {
if ((double) f < 1.5D && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) { if (this.attackTicks <= 0 && f < 2.0F && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) {
this.attackTicks = 20; this.attackTicks = 20;
// CraftBukkit start - this is still duplicated here and EntityHuman because it's possible for an EntityMonster // CraftBukkit start - this is still duplicated here and EntityHuman because it's possible for an EntityMonster
// to damage another EntityMonster, and we want to catch those events. // to damage another EntityMonster, and we want to catch those events.
@ -91,7 +91,7 @@ public class EntityMonster extends EntityCreature implements IMonster {
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, this.c); EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, this.c);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled() && event.getDamage() != 0) {
entity.a(this, event.getDamage()); entity.a(this, event.getDamage());
} }
return; return;

View File

@ -46,12 +46,12 @@ public class EntityPigZombie extends EntityZombie {
this.a = nbttagcompound.d("Anger"); this.a = nbttagcompound.d("Anger");
} }
protected Entity l() { protected Entity m() {
return this.a == 0 ? null : super.l(); return this.a == 0 ? null : super.m();
} }
public void q() { public void r() {
super.q(); super.r();
} }
public boolean a(Entity entity, int i) { public boolean a(Entity entity, int i) {
@ -64,17 +64,17 @@ public class EntityPigZombie extends EntityZombie {
if (entity1 instanceof EntityPigZombie) { if (entity1 instanceof EntityPigZombie) {
EntityPigZombie entitypigzombie = (EntityPigZombie) entity1; EntityPigZombie entitypigzombie = (EntityPigZombie) entity1;
entitypigzombie.c(entity); entitypigzombie.d(entity);
} }
} }
this.c(entity); this.d(entity);
} }
return super.a(entity, i); return super.a(entity, i);
} }
private void c(Entity entity) { private void d(Entity entity) {
// CraftBukkit start // CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer(); CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity bukkitTarget = null; org.bukkit.entity.Entity bukkitTarget = null;

View File

@ -33,7 +33,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public EntityPlayer(MinecraftServer minecraftserver, World world, String s, ItemInWorldManager iteminworldmanager) { public EntityPlayer(MinecraftServer minecraftserver, World world, String s, ItemInWorldManager iteminworldmanager) {
super(world); super(world);
ChunkCoordinates chunkcoordinates = world.l(); ChunkCoordinates chunkcoordinates = world.m();
int i = chunkcoordinates.a; int i = chunkcoordinates.a;
int j = chunkcoordinates.c; int j = chunkcoordinates.c;
int k = chunkcoordinates.b; int k = chunkcoordinates.b;
@ -60,7 +60,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public Location compassTarget; public Location compassTarget;
// CraftBukkit end // CraftBukkit end
public void l() { public void m() {
this.activeContainer.a((ICrafting) this); this.activeContainer.a((ICrafting) this);
} }
@ -72,7 +72,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.height = 0.0F; this.height = 0.0F;
} }
public float p() { public float q() {
return 1.62F; return 1.62F;
} }
@ -195,8 +195,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
} }
} }
public void q() { public void r() {
super.q(); super.r();
} }
public void b(Entity entity, int i) { public void b(Entity entity, int i) {
@ -214,7 +214,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.activeContainer.a(); this.activeContainer.a();
} }
public void r() { public void m_() {
if (!this.p) { if (!this.p) {
this.q = -1; this.q = -1;
this.p = true; this.p = true;
@ -222,23 +222,24 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
} }
} }
public void s() {} public void t() {}
public boolean a(int i, int j, int k) { public EnumBedError a(int i, int j, int k) {
if (super.a(i, j, k)) { EnumBedError enumbederror = super.a(i, j, k);
if (enumbederror == EnumBedError.OK) {
this.b.k.a(this, new Packet17(this, 0, i, j, k)); this.b.k.a(this, new Packet17(this, 0, i, j, k));
return true;
} else {
return false;
} }
return enumbederror;
} }
public void a(boolean flag, boolean flag1) { public void a(boolean flag, boolean flag1, boolean flag2) {
if (this.E()) { if (this.F()) {
this.b.k.b(this, new Packet18ArmAnimation(this, 3)); this.b.k.b(this, new Packet18ArmAnimation(this, 3));
} }
super.a(flag, flag1); super.a(flag, flag1, flag2);
this.a.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); this.a.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
} }
@ -263,12 +264,12 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
super.a(d0, flag); super.a(d0, flag);
} }
private void V() { private void aa() {
this.bH = this.bH % 100 + 1; this.bH = this.bH % 100 + 1;
} }
public void b(int i, int j, int k) { public void b(int i, int j, int k) {
this.V(); this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 1, "Crafting", 9))); this.a.b((Packet) (new Packet100OpenWindow(this.bH, 1, "Crafting", 9)));
this.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k); this.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k);
this.activeContainer.f = this.bH; this.activeContainer.f = this.bH;
@ -276,24 +277,24 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
} }
public void a(IInventory iinventory) { public void a(IInventory iinventory) {
this.V(); this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 0, iinventory.c(), iinventory.m_()))); this.a.b((Packet) (new Packet100OpenWindow(this.bH, 0, iinventory.c(), iinventory.q_())));
this.activeContainer = new ContainerChest(this.inventory, iinventory); this.activeContainer = new ContainerChest(this.inventory, iinventory);
this.activeContainer.f = this.bH; this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this); this.activeContainer.a((ICrafting) this);
} }
public void a(TileEntityFurnace tileentityfurnace) { public void a(TileEntityFurnace tileentityfurnace) {
this.V(); this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 2, tileentityfurnace.c(), tileentityfurnace.m_()))); this.a.b((Packet) (new Packet100OpenWindow(this.bH, 2, tileentityfurnace.c(), tileentityfurnace.q_())));
this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace); this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace);
this.activeContainer.f = this.bH; this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this); this.activeContainer.a((ICrafting) this);
} }
public void a(TileEntityDispenser tileentitydispenser) { public void a(TileEntityDispenser tileentitydispenser) {
this.V(); this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 3, tileentitydispenser.c(), tileentitydispenser.m_()))); this.a.b((Packet) (new Packet100OpenWindow(this.bH, 3, tileentitydispenser.c(), tileentitydispenser.q_())));
this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser); this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser);
this.activeContainer.f = this.bH; this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this); this.activeContainer.a((ICrafting) this);
@ -309,7 +310,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(Container container, List list) { public void a(Container container, List list) {
this.a.b((Packet) (new Packet104WindowItems(container.f, list))); this.a.b((Packet) (new Packet104WindowItems(container.f, list)));
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.i()))); this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.j())));
} }
public void a(Container container, int i, int j) { public void a(Container container, int i, int j) {
@ -318,18 +319,18 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(ItemStack itemstack) {} public void a(ItemStack itemstack) {}
public void t() {
this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f)));
this.v();
}
public void u() { public void u() {
if (!this.h) { this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f)));
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.i()))); this.w();
}
} }
public void v() { public void v() {
if (!this.h) {
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.j())));
}
}
public void w() {
this.activeContainer.a((EntityHuman) this); this.activeContainer.a((EntityHuman) this);
this.activeContainer = this.defaultContainer; this.activeContainer = this.defaultContainer;
} }
@ -338,7 +339,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.au = f; this.au = f;
this.av = f1; this.av = f1;
this.ax = flag; this.ax = flag;
this.b(flag1); this.e(flag1);
this.pitch = f2; this.pitch = f2;
this.yaw = f3; this.yaw = f3;
} }

View File

@ -32,8 +32,8 @@ public class EntitySkeleton extends EntityMonster {
return "mob.skeletonhurt"; return "mob.skeletonhurt";
} }
public void q() { public void r() {
if (this.world.c()) { if (this.world.d()) {
float f = this.c(1.0F); float f = this.c(1.0F);
if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
@ -51,7 +51,7 @@ public class EntitySkeleton extends EntityMonster {
} }
} }
super.q(); super.r();
} }
protected void a(Entity entity, float f) { protected void a(Entity entity, float f) {
@ -89,7 +89,7 @@ public class EntitySkeleton extends EntityMonster {
return Item.ARROW.id; return Item.ARROW.id;
} }
protected void o() { protected void p() {
// CraftBukkit start - whole method // CraftBukkit start - whole method
List<org.bukkit.inventory.ItemStack> loot = new ArrayList<org.bukkit.inventory.ItemStack>(); List<org.bukkit.inventory.ItemStack> loot = new ArrayList<org.bukkit.inventory.ItemStack>();

View File

@ -23,7 +23,7 @@ public class EntitySnowball extends Entity {
public EntitySnowball(World world) { public EntitySnowball(World world) {
super(world); super(world);
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
} }
protected void a() {} protected void a() {}
@ -31,8 +31,8 @@ public class EntitySnowball extends Entity {
public EntitySnowball(World world, EntityLiving entityliving) { public EntitySnowball(World world, EntityLiving entityliving) {
super(world); super(world);
this.g = entityliving; this.g = entityliving;
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch); this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D; this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
@ -49,7 +49,7 @@ public class EntitySnowball extends Entity {
public EntitySnowball(World world, double d0, double d1, double d2) { public EntitySnowball(World world, double d0, double d1, double d2) {
super(world); super(world);
this.h = 0; this.h = 0;
this.a(0.25F, 0.25F); this.b(0.25F, 0.25F);
this.a(d0, d1, d2); this.a(d0, d1, d2);
this.height = 0.0F; this.height = 0.0F;
} }
@ -91,7 +91,7 @@ public class EntitySnowball extends Entity {
if (i == this.e) { if (i == this.e) {
++this.h; ++this.h;
if (this.h == 1200) { if (this.h == 1200) {
this.C(); this.D();
} }
return; return;
@ -182,7 +182,7 @@ public class EntitySnowball extends Entity {
this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D); this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D);
} }
this.C(); this.D();
} }
this.locX += this.motX; this.locX += this.motX;
@ -252,7 +252,7 @@ public class EntitySnowball extends Entity {
if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) { if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F); this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1); entityhuman.b(this, 1);
this.C(); this.D();
} }
} }
} }

View File

@ -5,14 +5,14 @@ import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason; import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit stop // CraftBukkit end
public class EntitySpider extends EntityMonster { public class EntitySpider extends EntityMonster {
public EntitySpider(World world) { public EntitySpider(World world) {
super(world); super(world);
this.texture = "/mob/spider.png"; this.texture = "/mob/spider.png";
this.a(1.4F, 0.9F); this.b(1.4F, 0.9F);
this.az = 0.8F; this.az = 0.8F;
} }
@ -20,7 +20,11 @@ public class EntitySpider extends EntityMonster {
return (double) this.width * 0.75D - 0.5D; return (double) this.width * 0.75D - 0.5D;
} }
protected Entity l() { protected boolean l() {
return false;
}
protected Entity m() {
float f = this.c(1.0F); float f = this.c(1.0F);
if (f < 0.5F) { if (f < 0.5F) {
@ -91,7 +95,7 @@ public class EntitySpider extends EntityMonster {
return Item.STRING.id; return Item.STRING.id;
} }
public boolean m() { public boolean n() {
return this.aV; return this.aW;
} }
} }

View File

@ -13,8 +13,8 @@ public class EntityTNTPrimed extends Entity {
public EntityTNTPrimed(World world) { public EntityTNTPrimed(World world) {
super(world); super(world);
this.a = 0; this.a = 0;
this.aC = true; this.aD = true;
this.a(0.98F, 0.98F); this.b(0.98F, 0.98F);
this.height = this.width / 2.0F; this.height = this.width / 2.0F;
} }
@ -26,7 +26,6 @@ public class EntityTNTPrimed extends Entity {
this.motX = (double) (-MathHelper.a(f * 3.1415927F / 180.0F) * 0.02F); this.motX = (double) (-MathHelper.a(f * 3.1415927F / 180.0F) * 0.02F);
this.motY = 0.20000000298023224D; this.motY = 0.20000000298023224D;
this.motZ = (double) (-MathHelper.b(f * 3.1415927F / 180.0F) * 0.02F); this.motZ = (double) (-MathHelper.b(f * 3.1415927F / 180.0F) * 0.02F);
this.bg = false;
this.a = 80; this.a = 80;
this.lastX = d0; this.lastX = d0;
this.lastY = d1; this.lastY = d1;
@ -35,6 +34,10 @@ public class EntityTNTPrimed extends Entity {
protected void a() {} protected void a() {}
protected boolean l() {
return false;
}
public boolean d_() { public boolean d_() {
return !this.dead; return !this.dead;
} }
@ -57,7 +60,7 @@ public class EntityTNTPrimed extends Entity {
if (this.a-- <= 0) { if (this.a-- <= 0) {
// CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event. // CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event.
this.h(); this.h();
this.C(); this.D();
// CraftBukkit end // CraftBukkit end
} else { } else {
this.world.a("smoke", this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D); this.world.a("smoke", this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D);

View File

@ -17,6 +17,7 @@ public class EntityTracker {
this.d = minecraftserver.f.a(); this.d = minecraftserver.f.a();
} }
// CraftBukkit -- synchronized
public synchronized void a(Entity entity) { public synchronized void a(Entity entity) {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
this.a(entity, 512, 2); this.a(entity, 512, 2);
@ -61,6 +62,7 @@ public class EntityTracker {
this.a(entity, i, j, false); this.a(entity, i, j, false);
} }
// CraftBukkit -- synchronized
public synchronized void a(Entity entity, int i, int j, boolean flag) { public synchronized void a(Entity entity, int i, int j, boolean flag) {
if (i > this.d) { if (i > this.d) {
i = this.d; i = this.d;
@ -78,6 +80,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit -- synchronized
public synchronized void b(Entity entity) { public synchronized void b(Entity entity) {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity; EntityPlayer entityplayer = (EntityPlayer) entity;
@ -98,6 +101,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit -- synchronized
public synchronized void a() { public synchronized void a() {
ArrayList arraylist = new ArrayList(); ArrayList arraylist = new ArrayList();
Iterator iterator = this.a.iterator(); Iterator iterator = this.a.iterator();
@ -126,6 +130,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit -- synchronized
public synchronized void a(Entity entity, Packet packet) { public synchronized void a(Entity entity, Packet packet) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.b.a(entity.id); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.b.a(entity.id);
@ -134,6 +139,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit -- synchronized
public synchronized void b(Entity entity, Packet packet) { public synchronized void b(Entity entity, Packet packet) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.b.a(entity.id); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.b.a(entity.id);
@ -142,6 +148,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit -- synchronized
public synchronized void a(EntityPlayer entityplayer) { public synchronized void a(EntityPlayer entityplayer) {
Iterator iterator = this.a.iterator(); Iterator iterator = this.a.iterator();

View File

@ -102,7 +102,7 @@ public class EntityTrackerEntry {
this.a((Packet) object); this.a((Packet) object);
} }
DataWatcher datawatcher = this.a.O(); DataWatcher datawatcher = this.a.T();
if (datawatcher.a()) { if (datawatcher.a()) {
this.b((Packet) (new Packet40EntityMetadata(this.a.id, datawatcher))); this.b((Packet) (new Packet40EntityMetadata(this.a.id, datawatcher)));
@ -120,9 +120,9 @@ public class EntityTrackerEntry {
} }
} }
if (this.a.aY) { if (this.a.aZ) {
this.b((Packet) (new Packet28EntityVelocity(this.a))); this.b((Packet) (new Packet28EntityVelocity(this.a)));
this.a.aY = false; this.a.aZ = false;
} }
} }

View File

@ -14,8 +14,8 @@ public class EntityZombie extends EntityMonster {
this.c = 5; this.c = 5;
} }
public void q() { public void r() {
if (this.world.c()) { if (this.world.d()) {
float f = this.c(1.0F); float f = this.c(1.0F);
if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
@ -31,7 +31,7 @@ public class EntityZombie extends EntityMonster {
} }
} }
super.q(); super.r();
} }
protected String e() { protected String e() {

View File

@ -2,7 +2,7 @@ package net.minecraft.server;
public interface IInventory { public interface IInventory {
int m_(); int q_();
ItemStack c_(int i); ItemStack c_(int i);
@ -12,9 +12,9 @@ public interface IInventory {
String c(); String c();
int n_(); int r_();
void h(); void i();
boolean a_(EntityHuman entityhuman); boolean a_(EntityHuman entityhuman);

View File

@ -12,7 +12,7 @@ public class InventoryCraftResult implements IInventory {
public InventoryCraftResult() {} public InventoryCraftResult() {}
public int m_() { public int q_() {
return 1; return 1;
} }
@ -39,11 +39,11 @@ public class InventoryCraftResult implements IInventory {
this.a[i] = itemstack; this.a[i] = itemstack;
} }
public int n_() { public int r_() {
return 64; return 64;
} }
public void h() {} public void i() {}
public boolean a_(EntityHuman entityhuman) { public boolean a_(EntityHuman entityhuman) {
return true; return true;

View File

@ -20,12 +20,12 @@ public class InventoryCrafting implements IInventory {
this.b = i; this.b = i;
} }
public int m_() { public int q_() {
return this.a.length; return this.a.length;
} }
public ItemStack c_(int i) { public ItemStack c_(int i) {
return i >= this.m_() ? null : this.a[i]; return i >= this.q_() ? null : this.a[i];
} }
public ItemStack b(int i, int j) { public ItemStack b(int i, int j) {
@ -70,11 +70,11 @@ public class InventoryCrafting implements IInventory {
this.c.a((IInventory) this); this.c.a((IInventory) this);
} }
public int n_() { public int r_() {
return 64; return 64;
} }
public void h() {} public void i() {}
public boolean a_(EntityHuman entityhuman) { public boolean a_(EntityHuman entityhuman) {
return true; return true;

View File

@ -8,7 +8,7 @@ public class InventoryLargeChest implements IInventory {
// CraftBukkit start // CraftBukkit start
public ItemStack[] getContents() { public ItemStack[] getContents() {
ItemStack[] result = new ItemStack[m_()]; ItemStack[] result = new ItemStack[q_()];
for (int i = 0; i < result.length; i++) { for (int i = 0; i < result.length; i++) {
result[i] = c_(i); result[i] = c_(i);
} }
@ -22,8 +22,8 @@ public class InventoryLargeChest implements IInventory {
this.c = iinventory1; this.c = iinventory1;
} }
public int m_() { public int q_() {
return this.b.m_() + this.c.m_(); return this.b.q_() + this.c.q_();
} }
public String c() { public String c() {
@ -31,28 +31,28 @@ public class InventoryLargeChest implements IInventory {
} }
public ItemStack c_(int i) { public ItemStack c_(int i) {
return i >= this.b.m_() ? this.c.c_(i - this.b.m_()) : this.b.c_(i); return i >= this.b.q_() ? this.c.c_(i - this.b.q_()) : this.b.c_(i);
} }
public ItemStack a(int i, int j) { public ItemStack a(int i, int j) {
return i >= this.b.m_() ? this.c.a(i - this.b.m_(), j) : this.b.a(i, j); return i >= this.b.q_() ? this.c.a(i - this.b.q_(), j) : this.b.a(i, j);
} }
public void a(int i, ItemStack itemstack) { public void a(int i, ItemStack itemstack) {
if (i >= this.b.m_()) { if (i >= this.b.q_()) {
this.c.a(i - this.b.m_(), itemstack); this.c.a(i - this.b.q_(), itemstack);
} else { } else {
this.b.a(i, itemstack); this.b.a(i, itemstack);
} }
} }
public int n_() { public int r_() {
return this.b.n_(); return this.b.r_();
} }
public void h() { public void i() {
this.b.h(); this.b.i();
this.c.h(); this.c.i();
} }
public boolean a_(EntityHuman entityhuman) { public boolean a_(EntityHuman entityhuman) {

View File

@ -5,9 +5,9 @@ public class InventoryPlayer implements IInventory {
public ItemStack[] a = new ItemStack[36]; public ItemStack[] a = new ItemStack[36];
public ItemStack[] b = new ItemStack[4]; public ItemStack[] b = new ItemStack[4];
public int c = 0; public int c = 0;
public EntityHuman e; // CraftBukkit - private->public public EntityHuman d; // CraftBukkit - private->public
private ItemStack f; private ItemStack f;
public boolean d = false; public boolean e = false;
// CraftBukkit start // CraftBukkit start
public ItemStack[] getContents() { public ItemStack[] getContents() {
@ -20,15 +20,15 @@ public class InventoryPlayer implements IInventory {
// CraftBukkit end // CraftBukkit end
public InventoryPlayer(EntityHuman entityhuman) { public InventoryPlayer(EntityHuman entityhuman) {
this.e = entityhuman; this.d = entityhuman;
} }
public ItemStack b() { public ItemStack b() {
if (this.c < this.a.length) { return this.c < 9 && this.c >= 0 ? this.a[this.c] : null;
return this.a[this.c]; }
} else {
return null; public static int e() {
} return 9;
} }
private int d(int i) { private int d(int i) {
@ -43,7 +43,7 @@ public class InventoryPlayer implements IInventory {
private int c(ItemStack itemstack) { private int c(ItemStack itemstack) {
for (int i = 0; i < this.a.length; ++i) { for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null && this.a[i].id == itemstack.id && this.a[i].c() && this.a[i].count < this.a[i].b() && this.a[i].count < this.n_() && (!this.a[i].e() || this.a[i].h() == itemstack.h())) { if (this.a[i] != null && this.a[i].id == itemstack.id && this.a[i].c() && this.a[i].count < this.a[i].b() && this.a[i].count < this.r_() && (!this.a[i].e() || this.a[i].h() == itemstack.h())) {
return i; return i;
} }
} }
@ -51,7 +51,7 @@ public class InventoryPlayer implements IInventory {
return -1; return -1;
} }
private int j() { private int k() {
for (int i = 0; i < this.a.length; ++i) { for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] == null) { if (this.a[i] == null) {
return i; return i;
@ -67,7 +67,7 @@ public class InventoryPlayer implements IInventory {
int k = this.c(itemstack); int k = this.c(itemstack);
if (k < 0) { if (k < 0) {
k = this.j(); k = this.k();
} }
if (k < 0) { if (k < 0) {
@ -83,8 +83,8 @@ public class InventoryPlayer implements IInventory {
l = this.a[k].b() - this.a[k].count; l = this.a[k].b() - this.a[k].count;
} }
if (l > this.n_() - this.a[k].count) { if (l > this.r_() - this.a[k].count) {
l = this.n_() - this.a[k].count; l = this.r_() - this.a[k].count;
} }
if (l == 0) { if (l == 0) {
@ -98,7 +98,7 @@ public class InventoryPlayer implements IInventory {
} }
} }
public void e() { public void f() {
for (int i = 0; i < this.a.length; ++i) { for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null && this.a[i].b > 0) { if (this.a[i] != null && this.a[i].b > 0) {
--this.a[i].b; --this.a[i].b;
@ -128,7 +128,7 @@ public class InventoryPlayer implements IInventory {
} }
} }
int i = this.j(); int i = this.k();
if (i >= 0) { if (i >= 0) {
this.a[i] = itemstack; this.a[i] = itemstack;
@ -234,7 +234,7 @@ public class InventoryPlayer implements IInventory {
} }
} }
public int m_() { public int q_() {
return this.a.length + 4; return this.a.length + 4;
} }
@ -253,7 +253,7 @@ public class InventoryPlayer implements IInventory {
return "Inventory"; return "Inventory";
} }
public int n_() { public int r_() {
return 64; return 64;
} }
@ -273,7 +273,7 @@ public class InventoryPlayer implements IInventory {
} }
} }
public int f() { public int g() {
int i = 0; int i = 0;
int j = 0; int j = 0;
int k = 0; int k = 0;
@ -302,47 +302,47 @@ public class InventoryPlayer implements IInventory {
public void c(int i) { public void c(int i) {
for (int j = 0; j < this.b.length; ++j) { for (int j = 0; j < this.b.length; ++j) {
if (this.b[j] != null && this.b[j].a() instanceof ItemArmor) { if (this.b[j] != null && this.b[j].a() instanceof ItemArmor) {
this.b[j].b(i); this.b[j].a(i, this.d);
if (this.b[j].count == 0) { if (this.b[j].count == 0) {
this.b[j].a(this.e); this.b[j].a(this.d);
this.b[j] = null; this.b[j] = null;
} }
} }
} }
} }
public void g() { public void h() {
int i; int i;
for (i = 0; i < this.a.length; ++i) { for (i = 0; i < this.a.length; ++i) {
if (this.a[i] != null) { if (this.a[i] != null) {
this.e.a(this.a[i], true); this.d.a(this.a[i], true);
this.a[i] = null; this.a[i] = null;
} }
} }
for (i = 0; i < this.b.length; ++i) { for (i = 0; i < this.b.length; ++i) {
if (this.b[i] != null) { if (this.b[i] != null) {
this.e.a(this.b[i], true); this.d.a(this.b[i], true);
this.b[i] = null; this.b[i] = null;
} }
} }
} }
public void h() { public void i() {
this.d = true; this.e = true;
} }
public void b(ItemStack itemstack) { public void b(ItemStack itemstack) {
this.f = itemstack; this.f = itemstack;
this.e.a(itemstack); this.d.a(itemstack);
} }
public ItemStack i() { public ItemStack j() {
return this.f; return this.f;
} }
public boolean a_(EntityHuman entityhuman) { public boolean a_(EntityHuman entityhuman) {
return this.e.dead ? false : entityhuman.g(this.e) <= 64.0D; return this.d.dead ? false : entityhuman.g(this.d) <= 64.0D;
} }
} }

View File

@ -108,6 +108,6 @@ public class ItemBlock extends Item {
} }
public String a() { public String a() {
return Block.byId[this.a].e(); return Block.byId[this.a].f();
} }
} }

View File

@ -15,7 +15,6 @@ public class ItemBucket extends Item {
public ItemBucket(int i, int j) { public ItemBucket(int i, int j) {
super(i); super(i);
this.maxStackSize = 1; this.maxStackSize = 1;
this.durability = 64;
this.a = j; this.a = j;
} }

View File

@ -14,7 +14,6 @@ public class ItemDoor extends Item {
public ItemDoor(int i, Material material) { public ItemDoor(int i, Material material) {
super(i); super(i);
this.a = material; this.a = material;
this.durability = 64;
this.maxStackSize = 1; this.maxStackSize = 1;
} }

View File

@ -17,7 +17,7 @@ public class ItemFlintAndSteel extends Item {
public ItemFlintAndSteel(int i) { public ItemFlintAndSteel(int i) {
super(i); super(i);
this.maxStackSize = 1; this.maxStackSize = 1;
this.durability = 64; this.d(64);
} }
public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) { public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) {
@ -63,7 +63,7 @@ public class ItemFlintAndSteel extends Item {
boolean preventFire = eventIgnite.isCancelled(); boolean preventFire = eventIgnite.isCancelled();
if (preventFire) { if (preventFire) {
itemstack.b(1); itemstack.a(1, entityhuman);
return false; return false;
} }
// CraftBukkit end // CraftBukkit end
@ -83,7 +83,7 @@ public class ItemFlintAndSteel extends Item {
// CraftBukkit end // CraftBukkit end
} }
itemstack.b(1); itemstack.a(1, entityhuman);
return true; return true;
} }
} }

View File

@ -12,7 +12,7 @@ public class ItemHoe extends Item {
public ItemHoe(int i, EnumToolMaterial enumtoolmaterial) { public ItemHoe(int i, EnumToolMaterial enumtoolmaterial) {
super(i); super(i);
this.maxStackSize = 1; this.maxStackSize = 1;
this.durability = enumtoolmaterial.a(); this.d(enumtoolmaterial.a());
} }
public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) { public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) {
@ -40,7 +40,7 @@ public class ItemHoe extends Item {
} }
// CraftBukkit end // CraftBukkit end
itemstack.b(1); itemstack.a(1, entityhuman);
if (world.k.nextInt(8) == 0 && i1 == Block.GRASS.id) { if (world.k.nextInt(8) == 0 && i1 == Block.GRASS.id) {
byte b0 = 1; byte b0 = 1;

View File

@ -16,38 +16,36 @@ public class ItemInWorldManager {
public EntityHuman a; public EntityHuman a;
private float c = 0.0F; private float c = 0.0F;
private int d; private int d;
private int e = 0; private int e;
private float f = 0.0F; private int f;
private int g; private int g;
private int h; private int h;
private int i; private boolean i;
private int j; private int j;
private boolean k; private int k;
private int l; private int l;
private int m; private int m;
private int n;
private int o;
public ItemInWorldManager(World world) { public ItemInWorldManager(World world) {
this.b = world; this.b = world;
} }
public void a() { public void a() {
++this.j; ++this.h;
if (this.k) { if (this.i) {
int i = this.j - this.o; int i = this.h - this.m;
int j = this.b.getTypeId(this.l, this.m, this.n); int j = this.b.getTypeId(this.j, this.k, this.l);
if (j != 0) { if (j != 0) {
Block block = Block.byId[j]; Block block = Block.byId[j];
float f = block.a(this.a) * (float) (i + 1); float f = block.a(this.a) * (float) (i + 1);
if (f >= 1.0F) { if (f >= 1.0F) {
this.k = false; this.i = false;
this.d(this.l, this.m, this.n); this.d(this.j, this.k, this.l);
} }
} else { } else {
this.k = false; this.i = false;
} }
} }
} }
@ -100,15 +98,15 @@ public class ItemInWorldManager {
// CraftBukkit end // CraftBukkit end
this.d(i, j, k); this.d(i, j, k);
} else { } else {
this.g = i; this.e = i;
this.h = j; this.f = j;
this.i = k; this.g = k;
} }
} }
public void b(int i, int j, int k) { public void b(int i, int j, int k) {
if (i == this.g && j == this.h && k == this.i) { if (i == this.e && j == this.f && k == this.g) {
int l = this.j - this.d; int l = this.h - this.d;
int i1 = this.b.getTypeId(i, j, k); int i1 = this.b.getTypeId(i, j, k);
if (i1 != 0) { if (i1 != 0) {
@ -117,12 +115,12 @@ public class ItemInWorldManager {
if (f >= 1.0F) { if (f >= 1.0F) {
this.d(i, j, k); this.d(i, j, k);
} else if (!this.k) { } else if (!this.i) {
this.k = true; this.i = true;
this.l = i; this.j = i;
this.m = j; this.k = j;
this.n = k; this.l = k;
this.o = this.d; this.m = this.d;
} }
} }
// CraftBukkit start -- force blockreset to client // CraftBukkit start -- force blockreset to client
@ -166,18 +164,18 @@ public class ItemInWorldManager {
int l = this.b.getTypeId(i, j, k); int l = this.b.getTypeId(i, j, k);
int i1 = this.b.getData(i, j, k); int i1 = this.b.getData(i, j, k);
boolean flag = this.c(i, j, k); boolean flag = this.c(i, j, k);
ItemStack itemstack = this.a.z(); ItemStack itemstack = this.a.A();
if (itemstack != null) { if (itemstack != null) {
itemstack.a(l, i, j, k); itemstack.a(l, i, j, k, this.a);
if (itemstack.count == 0) { if (itemstack.count == 0) {
itemstack.a(this.a); itemstack.a(this.a);
this.a.A(); this.a.B();
} }
} }
if (flag && this.a.b(Block.byId[l])) { if (flag && this.a.b(Block.byId[l])) {
Block.byId[l].a_(this.b, i, j, k, i1); Block.byId[l].a(this.b, this.a, i, j, k, i1);
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b))); ((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b)));
} }
@ -186,7 +184,6 @@ public class ItemInWorldManager {
public boolean a(EntityHuman entityhuman, World world, ItemStack itemstack) { public boolean a(EntityHuman entityhuman, World world, ItemStack itemstack) {
int i = itemstack.count; int i = itemstack.count;
ItemStack itemstack1 = itemstack.a(world, entityhuman); ItemStack itemstack1 = itemstack.a(world, entityhuman);
if (itemstack1 == itemstack && (itemstack1 == null || itemstack1.count == i)) { if (itemstack1 == itemstack && (itemstack1 == null || itemstack1.count == i)) {

View File

@ -11,7 +11,6 @@ public class ItemSign extends Item {
public ItemSign(int i) { public ItemSign(int i) {
super(i); super(i);
this.durability = 64;
this.maxStackSize = 1; this.maxStackSize = 1;
} }

View File

@ -53,7 +53,13 @@ public final class ItemStack {
} }
public boolean a(EntityHuman entityhuman, World world, int i, int j, int k, int l) { public boolean a(EntityHuman entityhuman, World world, int i, int j, int k, int l) {
return this.a().a(this, entityhuman, world, i, j, k, l); boolean flag = this.a().a(this, entityhuman, world, i, j, k, l);
if (flag) {
entityhuman.a(StatisticList.A[this.id], 1);
}
return flag;
} }
public float a(Block block) { public float a(Block block) {
@ -109,10 +115,14 @@ public final class ItemStack {
return Item.byId[this.id].d(); return Item.byId[this.id].d();
} }
public void b(int i) { public void a(int i, Entity entity) {
if (this.d()) { if (this.d()) {
this.damage += i; this.damage += i;
if (this.damage > this.i()) { if (this.damage > this.i()) {
if (entity instanceof EntityHuman) {
((EntityHuman) entity).a(StatisticList.B[this.id], 1);
}
--this.count; --this.count;
if (this.count < 0) { if (this.count < 0) {
this.count = 0; this.count = 0;
@ -123,12 +133,20 @@ public final class ItemStack {
} }
} }
public void a(EntityLiving entityliving) { public void a(EntityLiving entityliving, EntityHuman entityhuman) {
Item.byId[this.id].a(this, entityliving); boolean flag = Item.byId[this.id].a(this, entityliving, (EntityLiving) entityhuman);
if (flag) {
entityhuman.a(StatisticList.A[this.id], 1);
}
} }
public void a(int i, int j, int k, int l) { public void a(int i, int j, int k, int l, EntityHuman entityhuman) {
Item.byId[this.id].a(this, i, j, k, l); boolean flag = Item.byId[this.id].a(this, i, j, k, l, entityhuman);
if (flag) {
entityhuman.a(StatisticList.A[this.id], 1);
}
} }
public int a(Entity entity) { public int a(Entity entity) {
@ -141,8 +159,8 @@ public final class ItemStack {
public void a(EntityHuman entityhuman) {} public void a(EntityHuman entityhuman) {}
public void b(EntityLiving entityliving) { public void a(EntityLiving entityliving) {
Item.byId[this.id].b(this, entityliving); Item.byId[this.id].a(this, entityliving);
} }
public ItemStack j() { public ItemStack j() {

View File

@ -9,6 +9,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -82,7 +83,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
System.setErr(new PrintStream(new LoggerOutputStream(a, Level.SEVERE), true)); System.setErr(new PrintStream(new LoggerOutputStream(a, Level.SEVERE), true));
// CraftBukkit end // CraftBukkit end
a.info("Starting minecraft server version Beta 1.3"); a.info("Starting minecraft server version Beta 1.4");
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
a.warning("**** NOT ENOUGH RAM!"); a.warning("**** NOT ENOUGH RAM!");
a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
@ -126,9 +127,19 @@ public class MinecraftServer implements Runnable, ICommandListener {
this.k = new EntityTracker(this); this.k = new EntityTracker(this);
long j = System.nanoTime(); long j = System.nanoTime();
String s1 = this.d.a("level-name", "world"); String s1 = this.d.a("level-name", "world");
String s2 = this.d.a("level-seed", "");
long k = (new Random()).nextLong();
if (s2.length() > 0) {
try {
k = Long.parseLong(s2);
} catch (NumberFormatException numberformatexception) {
k = (long) s2.hashCode();
}
}
a.info("Preparing level \"" + s1 + "\""); a.info("Preparing level \"" + s1 + "\"");
this.a((Convertable) (new WorldLoaderServer(new File("."))), s1); this.a(new WorldLoaderServer(new File(".")), s1, k);
// CraftBukkit start // CraftBukkit start
long elapsed = System.nanoTime() - j; long elapsed = System.nanoTime() - j;
@ -139,7 +150,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
return true; return true;
} }
private void a(Convertable convertable, String s) { private void a(Convertable convertable, String s, long i) {
if (convertable.a(s)) { if (convertable.a(s)) {
a.info("Converting map!"); a.info("Converting map!");
convertable.a(s, new ConvertProgressUpdater(this)); convertable.a(s, new ConvertProgressUpdater(this));
@ -148,7 +159,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
a.info("Preparing start region"); a.info("Preparing start region");
// CraftBukkit start // CraftBukkit start
WorldServer world = new WorldServer(this, new ServerNBTManager(new File("."), s, true), s, this.d.a("hellworld", false) ? -1 : 0); WorldServer world = new WorldServer(this, new ServerNBTManager(new File("."), s, true), s, this.d.a("hellworld", false) ? -1 : 0, i);
world.a(new WorldManager(this, world)); world.a(new WorldManager(this, world));
world.j = this.d.a("spawn-monsters", true) ? 1 : 0; world.j = this.d.a("spawn-monsters", true) ? 1 : 0;
world.a(this.d.a("spawn-monsters", true), this.m); world.a(this.d.a("spawn-monsters", true), this.m);
@ -157,30 +168,30 @@ public class MinecraftServer implements Runnable, ICommandListener {
// CraftBukkit end // CraftBukkit end
short short1 = 196; short short1 = 196;
long i = System.currentTimeMillis(); long j = System.currentTimeMillis();
ChunkCoordinates chunkcoordinates = worlds.get(0).l(); // CraftBukkit ChunkCoordinates chunkcoordinates = worlds.get(0).m(); // CraftBukkit
for (int j = -short1; j <= short1 && this.p; j += 16) { for (int k = -short1; k <= short1 && this.p; k += 16) {
for (int k = -short1; k <= short1 && this.p; k += 16) { for (int l = -short1; l <= short1 && this.p; l += 16) {
long l = System.currentTimeMillis(); long i1 = System.currentTimeMillis();
if (l < i) { if (i1 < j) {
i = l; j = i1;
} }
if (l > i + 1000L) { if (i1 > j + 1000L) {
int i1 = (short1 * 2 + 1) * (short1 * 2 + 1); int j1 = (short1 * 2 + 1) * (short1 * 2 + 1);
int j1 = (j + short1) * (short1 * 2 + 1) + k + 1; int k1 = (k + short1) * (short1 * 2 + 1) + l + 1;
this.a("Preparing spawn area", j1 * 100 / i1); this.a("Preparing spawn area", k1 * 100 / j1);
i = l; j = i1;
} }
// CraftBukkit start // CraftBukkit start
for (WorldServer worldserver: worlds) { for (WorldServer worldserver: worlds) {
world.u.d(chunkcoordinates.a + j >> 4, chunkcoordinates.c + k >> 4); world.u.c(chunkcoordinates.a + k >> 4, chunkcoordinates.c + l >> 4);
while (world.e() && this.p) { while (world.f() && this.p) {
; ;
} }
} }
@ -210,7 +221,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
// CraftBukkit start // CraftBukkit start
for (WorldServer world: worlds) { for (WorldServer world: worlds) {
world.a(true, (IProgressUpdate) null); world.a(true, (IProgressUpdate) null);
world.r(); world.t();
WorldSaveEvent event = new WorldSaveEvent( world.getWorld() ); WorldSaveEvent event = new WorldSaveEvent( world.getWorld() );
server.getPluginManager().callEvent( event ); server.getPluginManager().callEvent( event );
@ -263,7 +274,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
j += l; j += l;
i = k; i = k;
// CraftBukkit - TODO - Replace with loop? // CraftBukkit - TODO - Replace with loop?
if (this.worlds.size() > 0 && this.worlds.get(0).q()) { if (this.worlds.size() > 0 && this.worlds.get(0).s()) {
this.h(); this.h();
j = 0L; j = 0L;
} else { } else {
@ -338,20 +349,20 @@ public class MinecraftServer implements Runnable, ICommandListener {
if (this.h % 20 == 0) { if (this.h % 20 == 0) {
for (int i = 0; i < this.f.b.size(); ++i) { for (int i = 0; i < this.f.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.f.b.get(i); EntityPlayer entityplayer = (EntityPlayer) this.f.b.get(i);
entityplayer.a.b((Packet) (new Packet4UpdateTime(entityplayer.world.k()))); entityplayer.a.b((Packet) (new Packet4UpdateTime(entityplayer.world.l())));
} }
} }
((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h); ((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h);
for (WorldServer world: worlds) { for (WorldServer world: worlds) {
world.g(); world.h();
while (world.e()) { while (world.f()) {
; ;
} }
world.d(); world.e();
} }
// CraftBukkit end // CraftBukkit end
this.c.a(); this.c.a();
@ -406,6 +417,10 @@ public class MinecraftServer implements Runnable, ICommandListener {
a.info(s); a.info(s);
} }
public void c(String s) {
a.warning(s);
}
public String c() { public String c() {
return "CONSOLE"; return "CONSOLE";
} }

View File

@ -57,8 +57,8 @@ public class NetLoginHandler extends NetHandler {
public void a(Packet1Login packet1login) { public void a(Packet1Login packet1login) {
this.g = packet1login.b; this.g = packet1login.b;
if (packet1login.a != 9) { if (packet1login.a != 10) {
if (packet1login.a > 9) { if (packet1login.a > 10) {
this.a("Outdated server!"); this.a("Outdated server!");
} else { } else {
this.a("Outdated client!"); this.a("Outdated client!");
@ -80,17 +80,17 @@ public class NetLoginHandler extends NetHandler {
NetServerHandler netserverhandler = new NetServerHandler(this.e, this.b, entityplayer); NetServerHandler netserverhandler = new NetServerHandler(this.e, this.b, entityplayer);
// CraftBukkit start // CraftBukkit start
ChunkCoordinates chunkcoordinates = entityplayer.world.l(); ChunkCoordinates chunkcoordinates = entityplayer.world.m();
netserverhandler.b((Packet) (new Packet1Login("", "", entityplayer.id, entityplayer.world.j(), (byte) entityplayer.world.m.g))); netserverhandler.b((Packet) (new Packet1Login("", "", entityplayer.id, entityplayer.world.k(), (byte) entityplayer.world.m.g)));
netserverhandler.b((Packet) (new Packet6SpawnPosition(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c))); netserverhandler.b((Packet) (new Packet6SpawnPosition(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c)));
// this.e.f.a((Packet) (new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game."))); // CraftBukkit - message moved to join event // this.e.f.a((Packet) (new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game."))); // CraftBukkit - message moved to join event
this.e.f.a(entityplayer); this.e.f.a(entityplayer);
netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
this.e.c.a(netserverhandler); this.e.c.a(netserverhandler);
netserverhandler.b((Packet) (new Packet4UpdateTime(entityplayer.world.k()))); netserverhandler.b((Packet) (new Packet4UpdateTime(entityplayer.world.l())));
// CraftBukkit end // CraftBukkit end
entityplayer.l(); entityplayer.m();
} }
this.c = true; this.c = true;

View File

@ -248,7 +248,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
double d8 = d4 * d4 + d6 * d6 + d7 * d7; double d8 = d4 * d4 + d6 * d6 + d7 * d7;
boolean flag1 = false; boolean flag1 = false;
if (d8 > 0.0625D && !this.e.E()) { if (d8 > 0.0625D && !this.e.F()) {
flag1 = true; flag1 = true;
a.warning(this.e.name + " moved wrongly!"); a.warning(this.e.name + " moved wrongly!");
System.out.println("Got position " + d1 + ", " + d2 + ", " + d3); System.out.println("Got position " + d1 + ", " + d2 + ", " + d3);
@ -259,7 +259,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit // CraftBukkit
boolean flag2 = this.e.world.a(this.e, this.e.boundingBox.b().e((double) f4, (double) f4, (double) f4)).size() == 0; boolean flag2 = this.e.world.a(this.e, this.e.boundingBox.b().e((double) f4, (double) f4, (double) f4)).size() == 0;
if (flag && (flag1 || !flag2) && !this.e.E()) { if (flag && (flag1 || !flag2) && !this.e.F()) {
this.a(this.i, this.j, this.k, f2, f3); this.a(this.i, this.j, this.k, f2, f3);
return; return;
} }
@ -311,7 +311,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
public void a(Packet14BlockDig packet14blockdig) { public void a(Packet14BlockDig packet14blockdig) {
if (packet14blockdig.e == 4) { if (packet14blockdig.e == 4) {
this.e.y(); this.e.z();
} else { } else {
// CraftBukkit // CraftBukkit
boolean flag = ((WorldServer) this.e.world).v = this.d.f.h(this.e.name); boolean flag = ((WorldServer) this.e.world).v = this.d.f.h(this.e.name);
@ -341,7 +341,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
} }
// CraftBukkit // CraftBukkit
ChunkCoordinates chunkcoordinates = this.e.world.l(); ChunkCoordinates chunkcoordinates = this.e.world.m();
int l = (int) MathHelper.e((float) (i - chunkcoordinates.a)); int l = (int) MathHelper.e((float) (i - chunkcoordinates.a));
int i1 = (int) MathHelper.e((float) (k - chunkcoordinates.c)); int i1 = (int) MathHelper.e((float) (k - chunkcoordinates.c));
@ -429,7 +429,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int l = packet15place.d; int l = packet15place.d;
// CraftBukkit // CraftBukkit
ChunkCoordinates chunkcoordinates = this.e.world.l(); ChunkCoordinates chunkcoordinates = this.e.world.m();
int i1 = (int) MathHelper.e((float) (i - chunkcoordinates.a)); int i1 = (int) MathHelper.e((float) (i - chunkcoordinates.a));
int j1 = (int) MathHelper.e((float) (k - chunkcoordinates.c)); int j1 = (int) MathHelper.e((float) (k - chunkcoordinates.c));
@ -525,17 +525,6 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
public void a(Packet16BlockItemSwitch packet16blockitemswitch) { public void a(Packet16BlockItemSwitch packet16blockitemswitch) {
// CraftBukkit start // CraftBukkit start
if (packet16blockitemswitch.a < 0 || packet16blockitemswitch.a > 8) {
server.getLogger().severe(
"Player " + getPlayer().getName() + "/" + getPlayer().getAddress().toString() +
" just sent an invalid ItemInHandIndex: " + packet16blockitemswitch.a +
" - very likely a crashing exploit attempt. Recommend ban, and sending a package of joy their way."
);
this.b(new Packet1Login("", "", 0, 0, (byte)0));
this.a("Exploits.");
return;
}
PlayerItemHeldEvent event = new PlayerItemHeldEvent(getPlayer(), e.inventory.c, packet16blockitemswitch.a); PlayerItemHeldEvent event = new PlayerItemHeldEvent(getPlayer(), e.inventory.c, packet16blockitemswitch.a);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
// CraftBukkit end // CraftBukkit end
@ -639,7 +628,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (this.d.f.h(this.e.name)) { if (this.d.f.h(this.e.name)) {
s1 = s.substring(1); s1 = s.substring(1);
a.info(this.e.name + " issued server command: " + s1); a.info(this.e.name + " issued server command: " + s1);
this.d.a(s1, (ICommandListener) this); this.d.a(s1, this);
} else { } else {
s1 = s.substring(1); s1 = s.substring(1);
a.info(this.e.name + " tried command: " + s1); a.info(this.e.name + " tried command: " + s1);
@ -678,7 +667,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
// CraftBukkit end // CraftBukkit end
this.e.r(); this.e.m_();
} }
} }
@ -695,11 +684,11 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit: Set Sneaking // CraftBukkit: Set Sneaking
if (packet19entityaction.b == 1) { if (packet19entityaction.b == 1) {
this.e.b(true); this.e.e(true);
} else if (packet19entityaction.b == 2) { } else if (packet19entityaction.b == 2) {
this.e.b(false); this.e.e(false);
} else if (packet19entityaction.b == 3) { } else if (packet19entityaction.b == 3) {
this.e.a(false, true); this.e.a(false, true, true);
this.l = false; this.l = false;
} }
} }
@ -745,7 +734,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
} }
public void a(Packet101CloseWindow packet101closewindow) { public void a(Packet101CloseWindow packet101closewindow) {
this.e.v(); this.e.w();
} }
public void a(Packet102WindowClick packet102windowclick) { public void a(Packet102WindowClick packet102windowclick) {
@ -756,7 +745,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
this.e.a.b((Packet) (new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true))); this.e.a.b((Packet) (new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)));
this.e.h = true; this.e.h = true;
this.e.activeContainer.a(); this.e.activeContainer.a();
this.e.u(); this.e.v();
this.e.h = false; this.e.h = false;
} else { } else {
this.m.put(Integer.valueOf(this.e.activeContainer.f), Short.valueOf(packet102windowclick.d)); this.m.put(Integer.valueOf(this.e.activeContainer.f), Short.valueOf(packet102windowclick.d));
@ -765,7 +754,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
ArrayList arraylist = new ArrayList(); ArrayList arraylist = new ArrayList();
for (int i = 0; i < this.e.activeContainer.e.size(); ++i) { for (int i = 0; i < this.e.activeContainer.e.size(); ++i) {
arraylist.add(((Slot) this.e.activeContainer.e.get(i)).b()); arraylist.add(((Slot) this.e.activeContainer.e.get(i)).a());
} }
this.e.a(this.e.activeContainer, arraylist); this.e.a(this.e.activeContainer, arraylist);
@ -786,15 +775,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (this.e.world.f(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c)) { if (this.e.world.f(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c)) {
TileEntity tileentity = this.e.world.getTileEntity(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c); TileEntity tileentity = this.e.world.getTileEntity(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c);
if (tileentity instanceof TileEntitySign) { if (tileentity instanceof TileEntitySign) {
TileEntitySign sign = (TileEntitySign)tileentity; TileEntitySign tileentitysign = (TileEntitySign)tileentity;
if (!sign.fresh) { if (!tileentitysign.a()) {
int x = packet130updatesign.a; this.d.c("Player " + this.e.name + " just tried to change non-editable sign");
int y = packet130updatesign.b;
int z = packet130updatesign.c;
server.getLogger().severe("Player " + getPlayer().getName() + "/" + getPlayer().getAddress().toString() + " just tried to change the sign text at " +
x + "," + y + "," + z + " - very likely an exploit attempt. Recommend ban, and sending a package of joy their way.");
this.b(new Packet1Login("", "", 0, 0, (byte)0));
this.a("Exploits.");
return; return;
} }
} }
@ -803,34 +786,34 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int i; int i;
int j; int j;
for (i = 0; i < 4; ++i) { for (j = 0; j < 4; ++j) {
boolean flag = true; boolean flag = true;
if (packet130updatesign.d[i].length() > 15) { if (packet130updatesign.d[j].length() > 15) {
flag = false; flag = false;
} else { } else {
for (j = 0; j < packet130updatesign.d[i].length(); ++j) { for (i = 0; i < packet130updatesign.d[j].length(); ++i) {
if (FontAllowedCharacters.a.indexOf(packet130updatesign.d[i].charAt(j)) < 0) { if (FontAllowedCharacters.a.indexOf(packet130updatesign.d[j].charAt(i)) < 0) {
flag = false; flag = false;
} }
} }
} }
if (!flag) { if (!flag) {
packet130updatesign.d[i] = "!?"; packet130updatesign.d[j] = "!?";
} }
} }
if (tileentity instanceof TileEntitySign) { if (tileentity instanceof TileEntitySign) {
i = packet130updatesign.a; j = packet130updatesign.a;
int k = packet130updatesign.b; int k = packet130updatesign.b;
j = packet130updatesign.c; i = packet130updatesign.c;
TileEntitySign tileentitysign = (TileEntitySign) tileentity; TileEntitySign tileentitysign1 = (TileEntitySign) tileentity;
// CraftBukkit start - SIGN_CHANGE hook // CraftBukkit start - SIGN_CHANGE hook
Player player = server.getPlayer(this.e); Player player = server.getPlayer(this.e);
SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(i, k, j), server.getPlayer(this.e), packet130updatesign.d); SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(j, k, j), server.getPlayer(this.e), packet130updatesign.d);
server.getPluginManager().callEvent(event); server.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
@ -839,19 +822,17 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
for (int l = 0; l < 4; ++l) { for (int l = 0; l < 4; ++l) {
event.setLine(l, ""); event.setLine(l, "");
} }
} else {
tileentitysign.fresh = false;
} }
// CraftBukkit end // CraftBukkit end
for (int l = 0; l < 4; ++l) { for (int l = 0; l < 4; ++l) {
tileentitysign.a[l] = event.getLine(l); tileentitysign1.a[l] = event.getLine(l);
// CraftBukkit // CraftBukkit
} }
tileentitysign.h(); tileentitysign1.i();
// CraftBukkit // CraftBukkit
this.e.world.g(i, k, j); this.e.world.g(j, k, j);
} }
} }
} }

View File

@ -5,6 +5,7 @@ import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.net.SocketException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -46,6 +47,11 @@ public class NetworkManager {
try { try {
socket.setSoTimeout(30000); socket.setSoTimeout(30000);
socket.setTrafficClass(24); socket.setTrafficClass(24);
} catch (SocketException socketexception) {
System.err.println(socketexception.getMessage());
}
try {
this.h = new DataInputStream(socket.getInputStream()); this.h = new DataInputStream(socket.getInputStream());
this.i = new DataOutputStream(socket.getOutputStream()); this.i = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) { } catch (IOException ex) {

View File

@ -67,8 +67,6 @@ public abstract class Packet {
boolean flag = false; boolean flag = false;
Packet packet = null; Packet packet = null;
datainputstream.mark(16384);
int i; int i;
try { try {
@ -85,7 +83,6 @@ public abstract class Packet {
packet.a(datainputstream); packet.a(datainputstream);
} catch (EOFException eofexception) { } catch (EOFException eofexception) {
System.out.println("Reached end of stream"); System.out.println("Reached end of stream");
datainputstream.reset();
return null; return null;
} }
@ -217,6 +214,7 @@ public abstract class Packet {
b(53, Packet53BlockChange.class); b(53, Packet53BlockChange.class);
b(54, Packet54PlayNoteBlock.class); b(54, Packet54PlayNoteBlock.class);
b(60, Packet60Explosion.class); b(60, Packet60Explosion.class);
b(70, Packet70Bed.class);
b(100, Packet100OpenWindow.class); b(100, Packet100OpenWindow.class);
b(101, Packet101CloseWindow.class); b(101, Packet101CloseWindow.class);
//b(102, Packet102WindowClick.class); //b(102, Packet102WindowClick.class);

View File

@ -30,7 +30,7 @@ class PlayerInstance {
this.e = new ChunkCoordIntPair(i, j); this.e = new ChunkCoordIntPair(i, j);
// CraftBukkit // CraftBukkit
playermanager.world.u.d(i, j); playermanager.world.u.c(i, j);
} }
public void a(EntityPlayer entityplayer) { public void a(EntityPlayer entityplayer) {
@ -58,7 +58,7 @@ class PlayerInstance {
} }
// CraftBukkit // CraftBukkit
((WorldServer) entityplayer.world).u.c(this.c, this.d); ((WorldServer) entityplayer.world).u.d(this.c, this.d);
} }
entityplayer.f.remove(this.e); entityplayer.f.remove(this.e);

View File

@ -72,7 +72,7 @@ public class ServerConfigurationManager {
public void a(WorldServer worldserver) { public void a(WorldServer worldserver) {
// CraftBukkit start // CraftBukkit start
if (this.n == null) { if (this.n == null) {
this.n = worldserver.m().d(); this.n = worldserver.o().d();
} }
// CraftBukkit end // CraftBukkit end
} }
@ -85,7 +85,7 @@ public class ServerConfigurationManager {
this.b.add(entityplayer); this.b.add(entityplayer);
this.n.b(entityplayer); this.n.b(entityplayer);
// CraftBukkit start // CraftBukkit start
((WorldServer) entityplayer.world).u.d((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4); ((WorldServer) entityplayer.world).u.c((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4);
while (entityplayer.world.a(entityplayer, entityplayer.boundingBox).size() != 0) { while (entityplayer.world.a(entityplayer, entityplayer.boundingBox).size() != 0) {
entityplayer.a(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ); entityplayer.a(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ);
@ -173,12 +173,25 @@ public class ServerConfigurationManager {
((WorldServer) entityplayer.world).manager.b(entityplayer); ((WorldServer) entityplayer.world).manager.b(entityplayer);
this.b.remove(entityplayer); this.b.remove(entityplayer);
entityplayer.world.e(entityplayer); entityplayer.world.e(entityplayer);
ChunkCoordinates chunkcoordinates = entityplayer.H();
EntityPlayer entityplayer1 = new EntityPlayer(this.c, entityplayer.world, entityplayer.name, new ItemInWorldManager(entityplayer.world)); EntityPlayer entityplayer1 = new EntityPlayer(this.c, entityplayer.world, entityplayer.name, new ItemInWorldManager(entityplayer.world));
entityplayer1.id = entityplayer.id; entityplayer1.id = entityplayer.id;
entityplayer1.a = entityplayer.a; entityplayer1.a = entityplayer.a;
entityplayer1.displayName = entityplayer.displayName; // CraftBukkit entityplayer1.displayName = entityplayer.displayName; // CraftBukkit
entityplayer1.compassTarget = entityplayer.compassTarget; // CraftBukkit entityplayer1.compassTarget = entityplayer.compassTarget; // CraftBukkit
if (chunkcoordinates != null) {
ChunkCoordinates chunkcoordinates1 = EntityHuman.a(entityplayer.world, chunkcoordinates);
if (chunkcoordinates1 != null) {
entityplayer1.c((double) ((float) chunkcoordinates1.a + 0.5F), (double) ((float) chunkcoordinates1.b + 0.1F), (double) ((float) chunkcoordinates1.c + 0.5F), 0.0F, 0.0F);
entityplayer1.a(chunkcoordinates);
} else {
entityplayer1.a.b((Packet) (new Packet70Bed(0)));
}
}
((WorldServer) entityplayer.world).u.d((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4); ((WorldServer) entityplayer.world).u.d((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);
while (entityplayer.world.a(entityplayer1, entityplayer1.boundingBox).size() != 0) { while (entityplayer.world.a(entityplayer1, entityplayer1.boundingBox).size() != 0) {
@ -206,12 +219,12 @@ public class ServerConfigurationManager {
entityplayer1.a.b((Packet) (new Packet9Respawn())); entityplayer1.a.b((Packet) (new Packet9Respawn()));
entityplayer1.a.a(entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch); entityplayer1.a.a(entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch);
// CraftBukkit start // CraftBukkit start
((WorldServer) entityplayer1.world).manager.a(entityplayer1);
entityplayer.world.a(entityplayer1); entityplayer.world.a(entityplayer1);
((WorldServer) entityplayer1.world).manager.a(entityplayer1);
// CraftBukkit end // CraftBukkit end
this.b.add(entityplayer1); this.b.add(entityplayer1);
entityplayer1.l(); entityplayer1.m();
entityplayer1.s(); entityplayer1.t();
return entityplayer1; return entityplayer1;
} }

View File

@ -15,29 +15,29 @@ public class Slot {
this.c = k; this.c = k;
} }
public void a() { public void a(ItemStack itemstack) {
this.c(); this.b();
} }
public boolean a(ItemStack itemstack) { public boolean b(ItemStack itemstack) {
return true; return true;
} }
public ItemStack b() { public ItemStack a() {
return this.e.c_(this.d); return this.e.c_(this.d);
} }
public void b(ItemStack itemstack) { public void c(ItemStack itemstack) {
this.e.a(this.d, itemstack); this.e.a(this.d, itemstack);
this.c(); this.b();
} }
public void c() { public void b() {
this.e.h(); this.e.i();
} }
public int d() { public int c() {
return this.e.n_(); return this.e.r_();
} }
public ItemStack a(int i) { public ItemStack a(int i) {
@ -47,4 +47,8 @@ public class Slot {
public boolean a(IInventory iinventory, int i) { public boolean a(IInventory iinventory, int i) {
return iinventory == this.e && i == this.d; return iinventory == this.e && i == this.d;
} }
public boolean d() {
return false;
}
} }

View File

@ -23,7 +23,7 @@ public class ThreadCommandReader extends Thread {
ConsoleReader reader = a.reader; ConsoleReader reader = a.reader;
String line = null; String line = null;
while ((!this.a.g) && (MinecraftServer.a(this.a)) && ((line = reader.readLine(">", null)) != null)) { while ((!this.a.g) && (MinecraftServer.a(this.a)) && ((line = reader.readLine(">", null)) != null)) {
this.a.a(line, (ICommandListener) this.a); this.a.a(line, this.a);
} }
} catch (IOException ex) { } catch (IOException ex) {
Logger.getLogger(ThreadCommandReader.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(ThreadCommandReader.class.getName()).log(Level.SEVERE, null, ex);

View File

@ -1,37 +0,0 @@
package net.minecraft.server;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
class ThreadLoginVerifier extends Thread {
final Packet1Login a;
final NetLoginHandler b;
ThreadLoginVerifier(NetLoginHandler netloginhandler, Packet1Login packet1login) {
this.b = netloginhandler;
this.a = packet1login;
}
public void run() {
try {
String s = NetLoginHandler.a(this.b);
// Craftbukkit
URL url = new URL("http://www.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(this.a.b, "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8"));
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream()));
String s1 = bufferedreader.readLine();
bufferedreader.close();
if (s1.equals("YES")) {
NetLoginHandler.a(this.b, this.a);
} else {
this.b.a("Failed to verify username!");
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
}

View File

@ -12,7 +12,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
public TileEntityChest() {} public TileEntityChest() {}
public int m_() { public int q_() {
return 27; return 27;
} }
@ -27,7 +27,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
if (this.a[i].count <= j) { if (this.a[i].count <= j) {
itemstack = this.a[i]; itemstack = this.a[i];
this.a[i] = null; this.a[i] = null;
this.h(); this.i();
return itemstack; return itemstack;
} else { } else {
itemstack = this.a[i].a(j); itemstack = this.a[i].a(j);
@ -35,7 +35,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
this.a[i] = null; this.a[i] = null;
} }
this.h(); this.i();
return itemstack; return itemstack;
} }
} else { } else {
@ -45,11 +45,11 @@ public class TileEntityChest extends TileEntity implements IInventory {
public void a(int i, ItemStack itemstack) { public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack; this.a[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) { if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.n_(); itemstack.count = this.r_();
} }
this.h(); this.i();
} }
public String c() { public String c() {
@ -60,7 +60,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
super.a(nbttagcompound); super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items"); NBTTagList nbttaglist = nbttagcompound.l("Items");
this.a = new ItemStack[this.m_()]; this.a = new ItemStack[this.q_()];
for (int i = 0; i < nbttaglist.c(); ++i) { for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i); NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -89,7 +89,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist); nbttagcompound.a("Items", (NBTBase) nbttaglist);
} }
public int n_() { public int r_() {
return 64; return 64;
} }

View File

@ -15,7 +15,7 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
public TileEntityDispenser() {} public TileEntityDispenser() {}
public int m_() { public int q_() {
return 9; return 9;
} }
@ -30,7 +30,7 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
if (this.a[i].count <= j) { if (this.a[i].count <= j) {
itemstack = this.a[i]; itemstack = this.a[i];
this.a[i] = null; this.a[i] = null;
this.h(); this.i();
return itemstack; return itemstack;
} else { } else {
itemstack = this.a[i].a(j); itemstack = this.a[i].a(j);
@ -38,7 +38,7 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
this.a[i] = null; this.a[i] = null;
} }
this.h(); this.i();
return itemstack; return itemstack;
} }
} else { } else {
@ -66,11 +66,11 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
public void a(int i, ItemStack itemstack) { public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack; this.a[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) { if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.n_(); itemstack.count = this.r_();
} }
this.h(); this.i();
} }
public String c() { public String c() {
@ -81,7 +81,7 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
super.a(nbttagcompound); super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items"); NBTTagList nbttaglist = nbttagcompound.l("Items");
this.a = new ItemStack[this.m_()]; this.a = new ItemStack[this.q_()];
for (int i = 0; i < nbttaglist.c(); ++i) { for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i); NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -110,7 +110,7 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist); nbttagcompound.a("Items", (NBTBase) nbttaglist);
} }
public int n_() { public int r_() {
return 64; return 64;
} }

View File

@ -15,7 +15,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
public TileEntityFurnace() {} public TileEntityFurnace() {}
public int m_() { public int q_() {
return this.h.length; return this.h.length;
} }
@ -46,8 +46,8 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
public void a(int i, ItemStack itemstack) { public void a(int i, ItemStack itemstack) {
this.h[i] = itemstack; this.h[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) { if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.n_(); itemstack.count = this.r_();
} }
} }
@ -59,7 +59,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
super.a(nbttagcompound); super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items"); NBTTagList nbttaglist = nbttagcompound.l("Items");
this.h = new ItemStack[this.m_()]; this.h = new ItemStack[this.q_()];
for (int i = 0; i < nbttaglist.c(); ++i) { for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i); NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -94,7 +94,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist); nbttagcompound.a("Items", (NBTBase) nbttaglist);
} }
public int n_() { public int r_() {
return 64; return 64;
} }
@ -111,7 +111,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
} }
if (!this.d.isStatic) { if (!this.d.isStatic) {
if (this.a == 0 && this.i()) { if (this.a == 0 && this.h()) {
this.b = this.a = this.a(this.h[1]); this.b = this.a = this.a(this.h[1]);
if (this.a > 0) { if (this.a > 0) {
flag1 = true; flag1 = true;
@ -124,7 +124,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
} }
} }
if (this.f() && this.i()) { if (this.f() && this.h()) {
++this.c; ++this.c;
if (this.c == 200) { if (this.c == 200) {
this.c = 0; this.c = 0;
@ -142,22 +142,22 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
} }
if (flag1) { if (flag1) {
this.h(); this.i();
} }
} }
private boolean i() { private boolean h() {
if (this.h[0] == null) { if (this.h[0] == null) {
return false; return false;
} else { } else {
ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id); ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id);
return itemstack == null ? false : (this.h[2] == null ? true : (!this.h[2].a(itemstack) ? false : (this.h[2].count < this.n_() && this.h[2].count < this.h[2].b() ? true : this.h[2].count < itemstack.b()))); return itemstack == null ? false : (this.h[2] == null ? true : (!this.h[2].a(itemstack) ? false : (this.h[2].count < this.r_() && this.h[2].count < this.h[2].b() ? true : this.h[2].count < itemstack.b())));
} }
} }
public void g() { public void g() {
if (this.i()) { if (this.h()) {
ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id); ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id);
if (this.h[2] == null) { if (this.h[2] == null) {

View File

@ -80,7 +80,7 @@ public class TileEntityMobSpawner extends TileEntity {
this.d.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D); this.d.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D);
} }
entityliving.I(); entityliving.M();
this.c(); this.c();
} }
} }

View File

@ -1,40 +0,0 @@
package net.minecraft.server;
public class TileEntitySign extends TileEntity {
public String[] a = new String[] { "", "", "", ""};
public int b = -1;
public boolean fresh = true; // Craftbukkit
public TileEntitySign() {}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
nbttagcompound.a("Text1", this.a[0]);
nbttagcompound.a("Text2", this.a[1]);
nbttagcompound.a("Text3", this.a[2]);
nbttagcompound.a("Text4", this.a[3]);
}
public void a(NBTTagCompound nbttagcompound) {
fresh = false; // Craftbukkit
super.a(nbttagcompound);
for (int i = 0; i < 4; ++i) {
this.a[i] = nbttagcompound.i("Text" + (i + 1));
if (this.a[i].length() > 15) {
this.a[i] = this.a[i].substring(0, 15);
}
}
}
public Packet e() {
String[] astring = new String[4];
for (int i = 0; i < 4; ++i) {
astring[i] = this.a[i];
}
return new Packet130UpdateSign(this.e, this.f, this.g, astring);
}
}

View File

@ -84,21 +84,10 @@ public class World implements IBlockAccess {
this.m.a(this); this.m.a(this);
this.o = this.b(); this.o = this.b();
if (flag) { if (flag) {
this.r = true; this.c();
int j = 0;
byte b0 = 64;
int k;
for (k = 0; !this.m.a(j, k); k += this.k.nextInt(64) - this.k.nextInt(64)) {
j += this.k.nextInt(64) - this.k.nextInt(64);
}
this.q.a(j, b0, k);
this.r = false;
} }
this.f(); this.g();
} }
protected IChunkProvider b() { protected IChunkProvider b() {
@ -107,6 +96,21 @@ public class World implements IBlockAccess {
return new ChunkProviderLoadOrGenerate(this, ichunkloader, this.m.c()); return new ChunkProviderLoadOrGenerate(this, ichunkloader, this.m.c());
} }
protected void c() {
this.r = true;
int i = 0;
byte b0 = 64;
int j;
for (j = 0; !this.m.a(i, j); j += this.k.nextInt(64) - this.k.nextInt(64)) {
i += this.k.nextInt(64) - this.k.nextInt(64);
}
this.q.a(i, b0, j);
this.r = false;
}
public int a(int i, int j) { public int a(int i, int j) {
int k; int k;
@ -123,7 +127,7 @@ public class World implements IBlockAccess {
iprogressupdate.a("Saving level"); iprogressupdate.a("Saving level");
} }
this.r(); this.t();
if (iprogressupdate != null) { if (iprogressupdate != null) {
iprogressupdate.b("Saving chunks"); iprogressupdate.b("Saving chunks");
} }
@ -132,8 +136,8 @@ public class World implements IBlockAccess {
} }
} }
private void r() { private void t() {
this.i(); this.j();
this.p.a(this.q, this.d); this.p.a(this.q, this.d);
} }
@ -530,7 +534,7 @@ public class World implements IBlockAccess {
return this.m.f[this.j(i, j, k)]; return this.m.f[this.j(i, j, k)];
} }
public boolean c() { public boolean d() {
return this.e < 4; return this.e < 4;
} }
@ -731,7 +735,7 @@ public class World implements IBlockAccess {
EntityHuman entityhuman = (EntityHuman) entity; EntityHuman entityhuman = (EntityHuman) entity;
this.d.add(entityhuman); this.d.add(entityhuman);
this.o(); this.q();
} }
this.c(i, j).a(entity); this.c(i, j).a(entity);
@ -762,18 +766,18 @@ public class World implements IBlockAccess {
entity.b((Entity) null); entity.b((Entity) null);
} }
entity.C(); entity.D();
if (entity instanceof EntityHuman) { if (entity instanceof EntityHuman) {
this.d.remove((EntityHuman) entity); this.d.remove((EntityHuman) entity);
this.o(); this.q();
} }
} }
public void e(Entity entity) { public void e(Entity entity) {
entity.C(); entity.D();
if (entity instanceof EntityHuman) { if (entity instanceof EntityHuman) {
this.d.remove((EntityHuman) entity); this.d.remove((EntityHuman) entity);
this.o(); this.q();
} }
int i = entity.chunkX; int i = entity.chunkX;
@ -900,7 +904,7 @@ public class World implements IBlockAccess {
} }
} }
public void d() { public void e() {
this.b.removeAll(this.v); this.b.removeAll(this.v);
int i; int i;
@ -974,7 +978,7 @@ public class World implements IBlockAccess {
entity.lastPitch = entity.pitch; entity.lastPitch = entity.pitch;
if (flag && entity.bA) { if (flag && entity.bA) {
if (entity.vehicle != null) { if (entity.vehicle != null) {
entity.x(); entity.o_();
} else { } else {
entity.f_(); entity.f_();
} }
@ -1034,7 +1038,7 @@ public class World implements IBlockAccess {
for (int i = 0; i < list.size(); ++i) { for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i); Entity entity = (Entity) list.get(i);
if (!entity.dead && entity.aC) { if (!entity.dead && entity.aD) {
return false; return false;
} }
} }
@ -1268,7 +1272,7 @@ public class World implements IBlockAccess {
return block == null ? false : block.a(); return block == null ? false : block.a();
} }
public boolean e() { public boolean f() {
if (this.C >= 50) { if (this.C >= 50) {
return false; return false;
} else { } else {
@ -1345,7 +1349,7 @@ public class World implements IBlockAccess {
} }
} }
public void f() { public void g() {
int i = this.a(1.0F); int i = this.a(1.0F);
if (i != this.e) { if (i != this.e) {
@ -1358,10 +1362,10 @@ public class World implements IBlockAccess {
this.E = flag1; this.E = flag1;
} }
public void g() { public void h() {
long i; long i;
if (this.q()) { if (this.s()) {
boolean flag = false; boolean flag = false;
if (this.D && this.j >= 1) { if (this.D && this.j >= 1) {
@ -1371,7 +1375,7 @@ public class World implements IBlockAccess {
if (!flag) { if (!flag) {
i = this.q.f() + 24000L; i = this.q.f() + 24000L;
this.q.a(i - i % 24000L); this.q.a(i - i % 24000L);
this.p(); this.r();
} }
} }
@ -1399,10 +1403,10 @@ public class World implements IBlockAccess {
this.q.a(i); this.q.a(i);
this.a(false); this.a(false);
this.h(); this.i();
} }
protected void h() { protected void i() {
this.F.clear(); this.F.clear();
int i; int i;
@ -1465,10 +1469,10 @@ public class World implements IBlockAccess {
j1 = l & 15; j1 = l & 15;
k1 = l >> 8 & 15; k1 = l >> 8 & 15;
l1 = l >> 16 & 127; l1 = l >> 16 & 127;
byte b1 = chunk.b[j1 << 11 | k1 << 7 | l1]; int i2 = chunk.b[j1 << 11 | k1 << 7 | l1] & 255;
if (Block.n[b1]) { if (Block.n[i2]) {
Block.byId[b1].a(this, j1 + i, l1, k1 + j, this.k); Block.byId[i2].a(this, j1 + i, l1, k1 + j, this.k);
} }
} }
} }
@ -1692,6 +1696,16 @@ public class World implements IBlockAccess {
return entityhuman; return entityhuman;
} }
public EntityHuman a(String s) {
for (int i = 0; i < this.d.size(); ++i) {
if (s.equals(((EntityHuman) this.d.get(i)).name)) {
return (EntityHuman) this.d.get(i);
}
}
return null;
}
public byte[] c(int i, int j, int k, int l, int i1, int j1) { public byte[] c(int i, int j, int k, int l, int i1, int j1) {
byte[] abyte = new byte[l * i1 * j1 * 5 / 2]; byte[] abyte = new byte[l * i1 * j1 * 5 / 2];
int k1 = i >> 4; int k1 = i >> 4;
@ -1741,7 +1755,7 @@ public class World implements IBlockAccess {
return abyte; return abyte;
} }
public void i() { public void j() {
this.p.b(); this.p.b();
} }
@ -1749,15 +1763,15 @@ public class World implements IBlockAccess {
this.q.a(i); this.q.a(i);
} }
public long j() { public long k() {
return this.q.b(); return this.q.b();
} }
public long k() { public long l() {
return this.q.f(); return this.q.f();
} }
public ChunkCoordinates l() { public ChunkCoordinates m() {
return new ChunkCoordinates(this.q.c(), this.q.d(), this.q.e()); return new ChunkCoordinates(this.q.c(), this.q.d(), this.q.e());
} }
@ -1767,6 +1781,10 @@ public class World implements IBlockAccess {
public void a(Entity entity, byte b0) {} public void a(Entity entity, byte b0) {}
public IChunkProvider n() {
return this.o;
}
public void d(int i, int j, int k, int l, int i1) { public void d(int i, int j, int k, int l, int i1) {
int j1 = this.getTypeId(i, j, k); int j1 = this.getTypeId(i, j, k);
@ -1775,42 +1793,42 @@ public class World implements IBlockAccess {
} }
} }
public IDataManager m() { public IDataManager o() {
return this.p; return this.p;
} }
public WorldData n() { public WorldData p() {
return this.q; return this.q;
} }
public void o() { public void q() {
this.A = !this.d.isEmpty(); this.A = !this.d.isEmpty();
Iterator iterator = this.d.iterator(); Iterator iterator = this.d.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
EntityHuman entityhuman = (EntityHuman) iterator.next(); EntityHuman entityhuman = (EntityHuman) iterator.next();
if (!entityhuman.E()) { if (!entityhuman.F()) {
this.A = false; this.A = false;
break; break;
} }
} }
} }
protected void p() { protected void r() {
this.A = false; this.A = false;
Iterator iterator = this.d.iterator(); Iterator iterator = this.d.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
EntityHuman entityhuman = (EntityHuman) iterator.next(); EntityHuman entityhuman = (EntityHuman) iterator.next();
if (entityhuman.E()) { if (entityhuman.F()) {
entityhuman.a(false, false); entityhuman.a(false, false, false);
} }
} }
} }
public boolean q() { public boolean s() {
if (this.A && !this.isStatic) { if (this.A && !this.isStatic) {
Iterator iterator = this.d.iterator(); Iterator iterator = this.d.iterator();
@ -1822,7 +1840,7 @@ public class World implements IBlockAccess {
} }
entityhuman = (EntityHuman) iterator.next(); entityhuman = (EntityHuman) iterator.next();
} while (entityhuman.F()); } while (entityhuman.G());
return false; return false;
} else { } else {

View File

@ -19,8 +19,8 @@ public class WorldServer extends World implements BlockChangeDelegate {
private EntityList y = new EntityList(); private EntityList y = new EntityList();
public PlayerManager manager; // CraftBukkit public PlayerManager manager; // CraftBukkit
public WorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, String s, int i) { public WorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, String s, int i, long j) {
super(idatamanager, s, (new Random()).nextLong(), WorldProvider.a(i)); super(idatamanager, s, j, WorldProvider.a(i));
this.x = minecraftserver; this.x = minecraftserver;
// CraftBukkit start // CraftBukkit start
@ -44,7 +44,7 @@ public class WorldServer extends World implements BlockChangeDelegate {
public void a(Entity entity, boolean flag) { public void a(Entity entity, boolean flag) {
// CraftBukkit start -- We prevent spawning in general, so this butchering is not needed // CraftBukkit start -- We prevent spawning in general, so this butchering is not needed
//if (!this.x.m && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) { //if (!this.x.m && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
// entity.C(); // entity.D();
//} //}
// CraftBukkit end // CraftBukkit end
@ -128,7 +128,7 @@ public class WorldServer extends World implements BlockChangeDelegate {
this.x.f.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1)); this.x.f.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1));
} }
public void r() { public void t() {
this.p.e(); this.p.e();
} }
} }

View File

@ -9,6 +9,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import jline.ConsoleReader; import jline.ConsoleReader;
@ -36,7 +37,7 @@ import org.bukkit.craftbukkit.scheduler.CraftScheduler;
public final class CraftServer implements Server { public final class CraftServer implements Server {
private final String serverName = "Craftbukkit"; private final String serverName = "Craftbukkit";
private final String serverVersion; private final String serverVersion;
private final String protocolVersion = "1.3"; private final String protocolVersion = "1.4";
private final PluginManager pluginManager = new SimplePluginManager(this); private final PluginManager pluginManager = new SimplePluginManager(this);
private final BukkitScheduler scheduler = new CraftScheduler(this); private final BukkitScheduler scheduler = new CraftScheduler(this);
private final CommandMap commandMap = new SimpleCommandMap(this); private final CommandMap commandMap = new SimpleCommandMap(this);
@ -269,6 +270,10 @@ public final class CraftServer implements Server {
} }
public World createWorld(String name, World.Environment environment) { public World createWorld(String name, World.Environment environment) {
return createWorld(name, environment, (new Random()).nextLong());
}
public World createWorld(String name, World.Environment environment, long seed) {
File folder = new File(name); File folder = new File(name);
World world = getWorld(name); World world = getWorld(name);
@ -286,7 +291,7 @@ public final class CraftServer implements Server {
converter.a(name, new ConvertProgressUpdater(console)); converter.a(name, new ConvertProgressUpdater(console));
} }
WorldServer internal = new WorldServer(console, new ServerNBTManager(new File("."), name, true), name, environment == World.Environment.NETHER ? -1 : 0); WorldServer internal = new WorldServer(console, new ServerNBTManager(new File("."), name, true), name, environment == World.Environment.NETHER ? -1 : 0, seed);
internal.a(new WorldManager(console, internal)); internal.a(new WorldManager(console, internal));
internal.j = 1; internal.j = 1;
@ -312,10 +317,10 @@ public final class CraftServer implements Server {
i = l; i = l;
} }
ChunkCoordinates chunkcoordinates = internal.l(); ChunkCoordinates chunkcoordinates = internal.m();
internal.u.d(chunkcoordinates.a + j >> 4, chunkcoordinates.c + k >> 4); internal.u.d(chunkcoordinates.a + j >> 4, chunkcoordinates.c + k >> 4);
while (internal.e()) { while (internal.f()) {
; ;
} }
} }

View File

@ -66,7 +66,7 @@ public class CraftWorld implements World {
} }
public Location getSpawnLocation() { public Location getSpawnLocation() {
ChunkCoordinates spawn = world.l(); ChunkCoordinates spawn = world.m();
return new Location(this, spawn.a, spawn.b, spawn.c); return new Location(this, spawn.a, spawn.b, spawn.c);
} }
@ -80,7 +80,7 @@ public class CraftWorld implements World {
} }
public Chunk getChunkAt(int x, int z) { public Chunk getChunkAt(int x, int z) {
return this.provider.d(x,z).bukkitChunk; return this.provider.c(x, z).bukkitChunk;
} }
public Chunk getChunkAt(Block block) { public Chunk getChunkAt(Block block) {
@ -124,7 +124,7 @@ public class CraftWorld implements World {
return false; return false;
} }
provider.c(x, z); provider.d(x, z);
return true; return true;
} }
@ -214,7 +214,7 @@ public class CraftWorld implements World {
public boolean loadChunk(int x, int z, boolean generate) { public boolean loadChunk(int x, int z, boolean generate) {
if (generate) { if (generate) {
// Use the default variant of loadChunk when generate == true. // Use the default variant of loadChunk when generate == true.
return provider.d(x, z) != null; return provider.c(x, z) != null;
} }
provider.a.remove(x, z); provider.a.remove(x, z);
@ -524,7 +524,7 @@ public class CraftWorld implements World {
public void save() { public void save() {
// Writes level.dat // Writes level.dat
world.r(); world.t();
// Saves all chunks/regions // Saves all chunks/regions
world.o.a(true, null); world.o.a(true, null);

View File

@ -387,12 +387,12 @@ public class CraftBlock implements Block {
int power = 0; int power = 0;
BlockRedstoneWire wire = (BlockRedstoneWire) net.minecraft.server.Block.REDSTONE_WIRE; BlockRedstoneWire wire = (BlockRedstoneWire) net.minecraft.server.Block.REDSTONE_WIRE;
net.minecraft.server.World world = chunk.getHandle().d; net.minecraft.server.World world = chunk.getHandle().d;
if ((face == BlockFace.DOWN || face == BlockFace.SELF) && world.i(x, y - 1, z, 0)) power = wire.g(world, x, y - 1, z, power); if ((face == BlockFace.DOWN || face == BlockFace.SELF) && world.i(x, y - 1, z, 0)) power = wire.f(world, x, y - 1, z, power);
if ((face == BlockFace.UP || face == BlockFace.SELF) && world.i(x, y + 1, z, 1)) power = wire.g(world, x, y + 1, z, power); if ((face == BlockFace.UP || face == BlockFace.SELF) && world.i(x, y + 1, z, 1)) power = wire.f(world, x, y + 1, z, power);
if ((face == BlockFace.EAST || face == BlockFace.SELF) && world.i(x, y, z - 1, 2)) power = wire.g(world, x, y, z - 1, power); if ((face == BlockFace.EAST || face == BlockFace.SELF) && world.i(x, y, z - 1, 2)) power = wire.f(world, x, y, z - 1, power);
if ((face == BlockFace.WEST || face == BlockFace.SELF) && world.i(x, y, z + 1, 3)) power = wire.g(world, x, y, z + 1, power); if ((face == BlockFace.WEST || face == BlockFace.SELF) && world.i(x, y, z + 1, 3)) power = wire.f(world, x, y, z + 1, power);
if ((face == BlockFace.NORTH || face == BlockFace.SELF) && world.i(x - 1, y, z, 4)) power = wire.g(world, x - 1, y, z, power); if ((face == BlockFace.NORTH || face == BlockFace.SELF) && world.i(x - 1, y, z, 4)) power = wire.f(world, x - 1, y, z, power);
if ((face == BlockFace.SOUTH || face == BlockFace.SELF) && world.i(x + 1, y, z, 5)) power = wire.g(world, x + 1, y, z, power); if ((face == BlockFace.SOUTH || face == BlockFace.SELF) && world.i(x + 1, y, z, 5)) power = wire.f(world, x + 1, y, z, power);
return power > 0 ? power : (face == BlockFace.SELF ? isBlockIndirectlyPowered() : isBlockFaceIndirectlyPowered(face)) ? 15 : 0; return power > 0 ? power : (face == BlockFace.SELF ? isBlockIndirectlyPowered() : isBlockFaceIndirectlyPowered(face)) ? 15 : 0;
} }

View File

@ -32,7 +32,7 @@ public class CraftChest extends CraftBlockState implements Chest {
boolean result = super.update(force); boolean result = super.update(force);
if (result) { if (result) {
chest.h(); chest.i();
} }
return result; return result;

View File

@ -49,7 +49,7 @@ public class CraftDispenser extends CraftBlockState implements Dispenser {
boolean result = super.update(force); boolean result = super.update(force);
if (result) { if (result) {
dispenser.h(); dispenser.i();
} }
return result; return result;

View File

@ -32,7 +32,7 @@ public class CraftFurnace extends CraftBlockState implements Furnace {
boolean result = super.update(force); boolean result = super.update(force);
if (result) { if (result) {
furnace.h(); furnace.i();
} }
return result; return result;

View File

@ -33,7 +33,7 @@ public class CraftSign extends CraftBlockState implements Sign {
boolean result = super.update(force); boolean result = super.update(force);
if (result) { if (result) {
sign.h(); sign.i();
} }
return result; return result;

View File

@ -158,7 +158,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
newEntity.health = entity.health; newEntity.health = entity.health;
newEntity.fireTicks = entity.fireTicks; newEntity.fireTicks = entity.fireTicks;
newEntity.inventory = entity.inventory; newEntity.inventory = entity.inventory;
newEntity.inventory.e = newEntity; newEntity.inventory.d = newEntity;
newEntity.activeContainer = entity.activeContainer; newEntity.activeContainer = entity.activeContainer;
newEntity.defaultContainer = entity.defaultContainer; newEntity.defaultContainer = entity.defaultContainer;
newEntity.locX = location.getX(); newEntity.locX = location.getX();
@ -194,14 +194,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
public void setSneaking(boolean sneak) { public void setSneaking(boolean sneak) {
getHandle().b(sneak); getHandle().e(sneak);
} }
public boolean isSneaking() { public boolean isSneaking() {
return getHandle().U(); return getHandle().Z();
} }
public void updateInventory() { public void updateInventory() {
getHandle().l(); getHandle().m();
} }
} }

View File

@ -22,7 +22,7 @@ public class CraftSheep extends CraftAnimals implements Sheep {
} }
public DyeColor getColor() { public DyeColor getColor() {
return DyeColor.getByData((byte) getHandle().n()); return DyeColor.getByData((byte) getHandle().o());
} }
public void setColor(DyeColor color) { public void setColor(DyeColor color) {

View File

@ -21,7 +21,7 @@ public class CraftSlime extends CraftLivingEntity implements Slime {
} }
public int getSize() { public int getSize() {
return getHandle().c; return getHandle().m();
} }
public void setSize(int size) { public void setSize(int size) {

View File

@ -50,7 +50,7 @@ public class CraftEventFactory {
if (spawnSize <= 0) return true; if (spawnSize <= 0) return true;
if (player.isOp()) return true; if (player.isOp()) return true;
ChunkCoordinates chunkcoordinates = worldServer.l(); ChunkCoordinates chunkcoordinates = worldServer.m();
int distanceFromSpawn = (int) Math.max(Math.abs(x - chunkcoordinates.a), Math.abs(z - chunkcoordinates.c)); int distanceFromSpawn = (int) Math.max(Math.abs(x - chunkcoordinates.a), Math.abs(z - chunkcoordinates.c));
return distanceFromSpawn > spawnSize; return distanceFromSpawn > spawnSize;

View File

@ -19,7 +19,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
public int getSize() { public int getSize() {
return getInventory().m_(); return getInventory().q_();
} }
public String getName() { public String getName() {
@ -290,7 +290,7 @@ public class CraftInventory implements org.bukkit.inventory.Inventory {
} }
private int getMaxItemStack() { private int getMaxItemStack() {
return getInventory().n_(); return getInventory().r_();
} }
public void remove(int materialId) { public void remove(int materialId) {

View File

@ -20,6 +20,6 @@ public class CraftSlot implements org.bukkit.inventory.Slot {
} }
public ItemStack getItem() { public ItemStack getItem() {
return new CraftItemStack( slot.b() ); return new CraftItemStack( slot.a() );
} }
} }