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>
<groupId>org.bukkit</groupId>
<artifactId>minecraft-server</artifactId>
<version>1.3</version>
<version>1.4</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

View File

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

View File

@ -78,7 +78,7 @@ public class BlockButton extends Block {
}
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);
}
}
@ -86,7 +86,7 @@ public class BlockButton extends Block {
private boolean h(World world, int i, int j, int 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);
return false;
} 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) {
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);
}
}

View File

@ -169,7 +169,7 @@ public class BlockDoor extends Block {
if (flag) {
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()) {
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)) {
return 0;
} 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.g(world, i, j - 1, k, l);
l = this.g(world, i, j + 1, k, l);
l = this.g(world, i, j, k - 1, l);
l = this.g(world, i, j, k + 1, l);
l = this.f(world, i - 1, j, k, l);
l = this.f(world, i, j - 1, k, l);
l = this.f(world, i, j + 1, k, l);
l = this.f(world, i, j, k - 1, l);
l = this.f(world, i, j, k + 1, l);
return l;
}
}
@ -185,7 +185,7 @@ public class BlockFire extends Block {
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)];
return i1 > l ? i1 : l;

View File

@ -2,11 +2,13 @@ package net.minecraft.server;
import java.util.Random;
// CraftBukkit Start
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.block.CraftBlock;
import org.bukkit.event.block.BlockFromToEvent;
// CraftBukkit end
public class BlockFlowing extends BlockFluids {
@ -47,11 +49,11 @@ public class BlockFlowing extends BlockFluids {
byte b1 = -100;
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.f(world, i, j, k - 1, j1);
j1 = this.f(world, i, j, k + 1, j1);
j1 = this.e(world, i + 1, j, k, j1);
j1 = this.e(world, i, j, k - 1, j1);
j1 = this.e(world, i, j, k + 1, j1);
i1 = j1 + b0;
if (i1 >= 8 || j1 < 0) {
i1 = -1;
@ -135,7 +137,7 @@ public class BlockFlowing extends BlockFluids {
}
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++;
@ -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)) {
int i1 = world.getTypeId(i, j, k);
@ -152,7 +154,7 @@ public class BlockFlowing extends BlockFluids {
if (this.material == Material.LAVA) {
this.h(world, i, j, k);
} 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);
if (i1 < 0) {

View File

@ -132,7 +132,7 @@ public class BlockLeaves extends BlockLeavesBase {
if (event.isCancelled()) return;
// 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);
}

View File

@ -79,7 +79,7 @@ public class BlockLever extends Block {
}
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);
}
}
@ -87,7 +87,7 @@ public class BlockLever extends Block {
private boolean g(World world, int i, int j, int 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);
return false;
} else {

View File

@ -52,7 +52,7 @@ public class BlockPressurePlate extends Block {
}
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);
}
}

View File

@ -1,8 +1,10 @@
package net.minecraft.server;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockPumpkin extends Block {
@ -58,8 +60,9 @@ public class BlockPumpkin extends Block {
CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower();
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power);
server.getPluginManager().callEvent(eventRedstone);
server.getPluginManager().callEvent(eventRedstone);
}
}
// 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) {
if (flag) {
b.add(new RedstoneUpdateInfo(i, j, k, world.k()));
b.add(new RedstoneUpdateInfo(i, j, k, world.l()));
}
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) {
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);
}

View File

@ -84,15 +84,15 @@ public class BlockRedstoneWire extends Block {
}
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 (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)) {
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;
int i3 = this.g(world, j2, j, k2, -1);
int i3 = this.f(world, j2, j, k2, -1);
l1 = world.getData(i, j, k);
if (l1 > 0) {
@ -155,7 +155,7 @@ public class BlockRedstoneWire extends Block {
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);
if (l1 > 0) {
--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) {
return l;
} else {
@ -278,9 +279,9 @@ public class BlockRedstoneWire extends Block {
boolean flag = this.a(world, i, j, k);
if (!flag) {
this.b_(world, i, j, k, i1);
this.a_(world, i, j, k, i1);
world.e(i, j, k, 0);
} else
} else
// Craftbukkit
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);

View File

@ -1,10 +1,13 @@
package net.minecraft.server;
import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockSign extends BlockContainer {
@ -99,21 +102,21 @@ public class BlockSign extends BlockContainer {
}
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);
}
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()) {
CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer();
Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower();
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.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
// CraftBukkit start
import java.util.Iterator;
import org.bukkit.Location;
import org.bukkit.craftbukkit.CraftWorld;
// CraftBukkit end
@ -90,7 +90,7 @@ public class Chunk {
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;
do {
j1 -= Block.q[this.b[i1 + k1]];
j1 -= Block.q[this.b[i1 + k1] & 255];
if (j1 > 0) {
this.f.a(j, k1, k, j1);
}
@ -159,7 +159,7 @@ public class Chunk {
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) {
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) {
@ -245,14 +245,14 @@ public class Chunk {
int l1 = this.j * 16 + i;
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) {
Block.byId[k1].b(this.d, l1, j, i2);
}
this.e.a(i, j, k, i1);
if (!this.d.m.e) {
if (Block.q[b0] != 0) {
if (Block.q[b0 & 255] != 0) {
if (j >= j1) {
this.g(i, j + 1, k);
}
@ -286,13 +286,13 @@ public class Chunk {
int k1 = this.j * 16 + i;
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) {
Block.byId[j1].b(this.d, k1, j, l1);
}
this.e.a(i, j, k, 0);
if (Block.q[b0] != 0) {
if (Block.q[b0 & 255] != 0) {
if (j >= i1) {
this.g(i, j + 1, k);
}
@ -555,10 +555,10 @@ public class Chunk {
return false;
} else {
if (flag) {
if (this.q && this.d.k() != this.r) {
if (this.q && this.d.l() != this.r) {
return true;
}
} else if (this.q && this.d.k() >= this.r + 600L) {
} else if (this.q && this.d.l() >= this.r + 600L) {
return true;
}
@ -612,10 +612,20 @@ public class Chunk {
}
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() {
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
public class ChunkProviderServer implements IChunkProvider {
public LongHashset a = new LongHashset(); // CraftBukkit
public Chunk b; // CraftBukkit
public IChunkProvider c; // CraftBukkit
// CraftBukkit start
public LongHashset a = new LongHashset();
public Chunk b;
public IChunkProvider c;
private IChunkLoader d;
public LongHashtable<Chunk> e = new LongHashtable<Chunk>(); // CraftBukkit
public List f = new ArrayList(); // CraftBukkit
public WorldServer g; // CraftBukkit
public LongHashtable<Chunk> e = new LongHashtable<Chunk>();
public List f = new ArrayList();
public WorldServer g;
// CraftBukkit end
public ChunkProviderServer(WorldServer worldserver, IChunkLoader ichunkloader, IChunkProvider ichunkprovider) {
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
}
public void c(int i, int j) {
ChunkCoordinates chunkcoordinates = this.g.l();
public void d(int i, int j) {
ChunkCoordinates chunkcoordinates = this.g.m();
int k = i * 16 + 8 - chunkcoordinates.a;
int l = j * 16 + 8 - chunkcoordinates.c;
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
this.a.remove(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) {
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 (i != chunk.j || j != chunk.k) {
MinecraftServer.a.info("Chunk (" + chunk.j + ", " + chunk.k +") stored at (" + i + ", " + j + ")");
@ -117,9 +121,11 @@ public class ChunkProviderServer implements IChunkProvider {
x.printStackTrace();
}
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) {
return null;
} else {
@ -127,7 +133,7 @@ public class ChunkProviderServer implements IChunkProvider {
Chunk chunk = this.d.a(this.g, i, j);
if (chunk != null) {
chunk.r = this.g.k();
chunk.r = this.g.l();
}
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) {
try {
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) {
try {
chunk.r = this.g.k();
chunk.r = this.g.l();
this.d.a(this.g, chunk);
} catch (Exception ioexception) { // CraftBukkit - IOException -> Exception
ioexception.printStackTrace();

View File

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

View File

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

View File

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

View File

@ -23,12 +23,12 @@ public class EntityArrow extends Entity {
public EntityArrow(World 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) {
super(world);
this.a(0.5F, 0.5F);
this.b(0.5F, 0.5F);
this.a(d0, d1, d2);
this.height = 0.0F;
}
@ -36,8 +36,8 @@ public class EntityArrow extends Entity {
public EntityArrow(World world, EntityLiving entityliving) {
super(world);
this.b = entityliving;
this.a(0.5F, 0.5F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.b(0.5F, 0.5F);
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.locY -= 0.10000000149011612D;
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) {
++this.h;
if (this.h == 1200) {
this.C();
this.D();
}
return;
@ -180,7 +180,7 @@ public class EntityArrow extends Entity {
if (stick) {
// CraftBukkit end
this.world.a(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.C();
this.D();
} else {
this.motX *= -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))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
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.VehicleEntityCollisionEvent;
import org.bukkit.event.vehicle.VehicleMoveEvent;
// CraftBukkit end
import org.bukkit.event.vehicle.VehicleUpdateEvent;
// CraftBukkit end
public class EntityBoat extends Entity {
@ -26,9 +26,10 @@ public class EntityBoat extends Entity {
private double g;
private double h;
private double i;
public double maxSpeed = 0.4D; // CraftBukkit
// CraftBukkit start
public double maxSpeed = 0.4D;
public void h(Entity entity) {
CraftServer server = ((WorldServer) this.world).getServer();
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
@ -50,10 +51,13 @@ public class EntityBoat extends Entity {
this.a = 0;
this.b = 0;
this.c = 1;
this.aC = true;
this.a(1.5F, 0.6F);
this.aD = true;
this.b(1.5F, 0.6F);
this.height = this.width / 2.0F;
this.bg = false;
}
protected boolean l() {
return false;
}
protected void a() {}
@ -110,7 +114,7 @@ public class EntityBoat extends Entity {
this.c = -this.c;
this.b = 10;
this.a += i * 10;
this.R();
this.W();
if (this.a > 40) {
int j;
@ -122,7 +126,7 @@ public class EntityBoat extends Entity {
this.a(Item.STICK.id, 1, 0.0F);
}
this.C();
this.D();
}
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) {
this.C();
this.D();
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 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) {
super(world);
this.texture = "/mob/cow.png";
this.a(0.9F, 1.3F);
this.b(0.9F, 1.3F);
}
public void a(NBTTagCompound nbttagcompound) {

View File

@ -9,22 +9,27 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
public class EntityCreature extends EntityLiving {
public PathEntity a; // CraftBukkit - public
public Entity d; // CraftBukkit - public
// CraftBukkit start - both public
public PathEntity a;
public Entity d;
// CraftBukkit end
protected boolean e = false;
public EntityCreature(World world) {
super(world);
}
protected boolean u() {
return false;
}
protected void c_() {
this.e = false;
this.e = this.u();
float f = 16.0F;
if (this.d == null) {
// CraftBukkit start
Entity target = this.l();
Entity target = this.m();
if (target != null) {
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), TargetReason.CLOSEST_PLAYER);
CraftServer server = ((WorldServer) this.world).getServer();
@ -42,7 +47,7 @@ public class EntityCreature extends EntityLiving {
if (this.d != null) {
this.a = this.world.a(this, this.d, f);
}
} else if (!this.d.J()) {
} else if (!this.d.N()) {
// CraftBukkit start
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.TARGET_DIED);
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)) {
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;
int i = -1;
int j = -1;
@ -95,7 +100,7 @@ public class EntityCreature extends EntityLiving {
int l1 = MathHelper.b(this.boundingBox.b);
boolean flag1 = this.g_();
boolean flag2 = this.Q();
boolean flag2 = this.V();
this.pitch = 0.0F;
if (this.a != null && this.random.nextInt(100) != 0) {
@ -155,10 +160,10 @@ public class EntityCreature extends EntityLiving {
}
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;
}
@ -177,7 +182,7 @@ public class EntityCreature extends EntityLiving {
return 0.0F;
}
protected Entity l() {
protected Entity m() {
return null;
}
@ -188,4 +193,20 @@ public class EntityCreature extends EntityLiving {
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_() {
this.b = this.a;
if (this.world.isStatic) {
int i = this.r();
int i = this.v();
if (i > 0 && this.a == 0) {
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) {
int i = this.r();
int i = this.v();
if ((i > 0 || f >= 3.0F) && (i <= 0 || f >= 7.0F)) {
this.e(-1);
@ -91,7 +91,7 @@ public class EntityCreeper extends EntityMonster {
if (!event.isCancelled()) {
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.C();
this.D();
} else {
this.a = 0;
}
@ -106,7 +106,7 @@ public class EntityCreeper extends EntityMonster {
return Item.SULPHUR.id;
}
private int r() {
private int v() {
return this.datawatcher.a(16);
}

View File

@ -27,7 +27,7 @@ public class EntityEgg extends Entity {
public EntityEgg(World world) {
super(world);
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
}
protected void a() {}
@ -35,8 +35,8 @@ public class EntityEgg extends Entity {
public EntityEgg(World world, EntityLiving entityliving) {
super(world);
this.g = entityliving;
this.a(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.b(0.25F, 0.25F);
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.locY -= 0.10000000149011612D;
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) {
super(world);
this.h = 0;
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
this.a(d0, d1, d2);
this.height = 0.0F;
}
@ -95,7 +95,7 @@ public class EntityEgg extends Entity {
if (i == this.e) {
++this.h;
if (this.h == 1200) {
this.C();
this.D();
}
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.C();
this.D();
}
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))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1);
this.C();
this.D();
}
}
}

View File

@ -28,7 +28,7 @@ public class EntityFireball extends Entity {
public EntityFireball(World world) {
super(world);
this.a(1.0F, 1.0F);
this.b(1.0F, 1.0F);
}
protected void a() {}
@ -36,7 +36,7 @@ public class EntityFireball extends Entity {
public EntityFireball(World world, EntityLiving entityliving, double d0, double d1, double d2) {
super(world);
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.a(this.locX, this.locY, this.locZ);
this.height = 0.0F;
@ -64,7 +64,7 @@ public class EntityFireball extends Entity {
if (i == this.h) {
++this.k;
if (this.k == 1200) {
this.C();
this.D();
}
return;
@ -155,7 +155,7 @@ public class EntityFireball extends Entity {
if (!event.isCancelled()) {
// 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.C();
this.D();
}
// CraftBukkit end
}
@ -230,9 +230,9 @@ public class EntityFireball extends Entity {
}
public boolean a(Entity entity, int i) {
this.R();
this.W();
if (entity != null) {
Vec3D vec3d = entity.N();
Vec3D vec3d = entity.S();
if (vec3d != null) {
this.motX = vec3d.a;

View File

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

View File

@ -1,5 +1,6 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -37,7 +38,8 @@ public abstract class EntityHuman extends EntityLiving {
private int sleepTicks;
public float z;
public float A;
private int d = 0;
private ChunkCoordinates d;
private int e = 0;
public EntityFish hookedFish = null;
public EntityHuman(World world) {
@ -45,7 +47,7 @@ public abstract class EntityHuman extends EntityLiving {
this.defaultContainer = new ContainerPlayer(this.inventory, !world.isStatic);
this.activeContainer = this.defaultContainer;
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.health = 20;
@ -61,16 +63,16 @@ public abstract class EntityHuman extends EntityLiving {
}
public void f_() {
if (this.E()) {
if (this.F()) {
++this.sleepTicks;
if (this.sleepTicks > 100) {
this.sleepTicks = 100;
}
if (!this.l()) {
this.a(true, true);
} else if (!this.world.isStatic && this.world.c()) {
this.a(false, true);
if (!this.m()) {
this.a(true, true, false);
} else if (!this.world.isStatic && this.world.d()) {
this.a(false, true, true);
}
} else if (this.sleepTicks > 0) {
++this.sleepTicks;
@ -81,7 +83,7 @@ public abstract class EntityHuman extends EntityLiving {
super.f_();
if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.b(this)) {
this.t();
this.u();
this.activeContainer = this.defaultContainer;
}
@ -120,18 +122,19 @@ public abstract class EntityHuman extends EntityLiving {
this.w += d0 * 0.25D;
this.y += d2 * 0.25D;
this.x += d1 * 0.25D;
this.a(StatisticList.j, 1);
}
protected boolean w() {
return this.health <= 0 || this.E();
protected boolean p_() {
return this.health <= 0 || this.F();
}
protected void t() {
protected void u() {
this.activeContainer = this.defaultContainer;
}
public void x() {
super.x();
public void o_() {
super.o_();
this.n = this.o;
this.o = 0.0F;
}
@ -150,14 +153,14 @@ public abstract class EntityHuman extends EntityLiving {
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) {
this.b(1);
}
this.inventory.e();
this.inventory.f();
this.n = this.o;
super.q();
super.r();
float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ);
// CraftBukkit -- Math -> TrigMath
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) {
super.a(entity);
this.a(0.2F, 0.2F);
this.b(0.2F, 0.2F);
this.a(this.locX, this.locY, this.locZ);
this.motY = 0.10000000149011612D;
if (this.name.equals("Notch")) {
this.a(new ItemStack(Item.APPLE, 1), true);
}
this.inventory.g();
this.inventory.h();
if (entity != null) {
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);
@ -213,13 +216,19 @@ public abstract class EntityHuman extends EntityLiving {
}
this.height = 0.1F;
this.a(StatisticList.u, 1);
}
public void c(Entity entity, int 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);
}
@ -229,7 +238,7 @@ public abstract class EntityHuman extends EntityLiving {
public void a(ItemStack itemstack, boolean flag) {
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;
float f = 0.1F;
@ -273,6 +282,7 @@ public abstract class EntityHuman extends EntityLiving {
// CraftBukkit end
this.a(entityitem);
this.a(StatisticList.r, 1);
}
}
@ -308,7 +318,11 @@ public abstract class EntityHuman extends EntityLiving {
this.sleepTicks = nbttagcompound.d("SleepTimer");
if (this.sleeping) {
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("Sleeping", this.sleeping);
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) {}
@ -326,7 +345,7 @@ public abstract class EntityHuman extends EntityLiving {
public void b(Entity entity, int i) {}
public float p() {
public float q() {
return 0.12F;
}
@ -339,8 +358,8 @@ public abstract class EntityHuman extends EntityLiving {
if (this.health <= 0) {
return false;
} else {
if (this.E()) {
this.a(true, true);
if (this.F()) {
this.a(true, true, false);
}
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
// also damage the player in this way. For example, EntitySlime.
if (entity instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
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 (i == 0) {
return false;
} else {
Object object = entity;
if (event.isCancelled()) {
return false;
if (entity instanceof EntityArrow && ((EntityArrow) entity).b != null) {
object = ((EntityArrow) entity).b;
}
i = event.getDamage();
}
// CraftBukkit end
// 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.
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) {
int j = 25 - this.inventory.f();
int k = i * j + this.d;
int j = 25 - this.inventory.g();
int k = i * j + this.e;
this.inventory.c(i);
i = k / 25;
this.d = k % 25;
this.e = k % 25;
super.c(i);
}
@ -397,31 +454,31 @@ public abstract class EntityHuman extends EntityLiving {
public void c(Entity entity) {
if (!entity.a(this)) {
ItemStack itemstack = this.z();
ItemStack itemstack = this.A();
if (itemstack != null && entity instanceof EntityLiving) {
itemstack.b((EntityLiving) entity);
itemstack.a((EntityLiving) entity);
if (itemstack.count <= 0) {
itemstack.a(this);
this.A();
this.B();
}
}
}
}
public ItemStack z() {
public ItemStack A() {
return this.inventory.b();
}
public void A() {
public void B() {
this.inventory.a(this.inventory.c, (ItemStack) null);
}
public double B() {
public double C() {
return (double) (this.height - 0.5F);
}
public void r() {
public void m_() {
this.q = -1;
this.p = true;
}
@ -440,7 +497,7 @@ public abstract class EntityHuman extends EntityLiving {
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
if (event.isCancelled() || event.getDamage() == 0) {
return;
}
@ -449,40 +506,48 @@ public abstract class EntityHuman extends EntityLiving {
// CraftBukkit end
entity.a(this, i);
ItemStack itemstack = this.z();
ItemStack itemstack = this.A();
if (itemstack != null && entity instanceof EntityLiving) {
itemstack.a((EntityLiving) entity);
itemstack.a((EntityLiving) entity, this);
if (itemstack.count <= 0) {
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 C() {
super.C();
public void D() {
super.D();
this.defaultContainer.a(this);
if (this.activeContainer != null) {
this.activeContainer.a(this);
}
}
public boolean D() {
return !this.sleeping && super.D();
public boolean E() {
return !this.sleeping && super.E();
}
public boolean a(int i, int j, int k) {
if (!this.E() && this.J()) {
public EnumBedError a(int i, int j, int k) {
if (!this.F() && this.N()) {
if (this.world.m.c) {
return false;
} else if (this.world.c()) {
return false;
return EnumBedError.NOT_POSSIBLE_HERE;
} else if (this.world.d()) {
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) {
this.a(0.2F, 0.2F);
this.b(0.2F, 0.2F);
this.height = 0.2F;
if (this.world.f(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.motX = this.motZ = this.motY = 0.0D;
if (!this.world.isStatic) {
this.world.o();
this.world.q();
}
return true;
return EnumBedError.OK;
} else {
return false;
return EnumBedError.TOO_FAR_AWAY;
}
} else {
return false;
return EnumBedError.OTHER_PROBLEM;
}
}
@ -551,21 +616,25 @@ public abstract class EntityHuman extends EntityLiving {
}
}
public void a(boolean flag, boolean flag1) {
this.a(0.6F, 1.8F);
public void a(boolean flag, boolean flag1, boolean flag2) {
this.b(0.6F, 1.8F);
this.l_();
ChunkCoordinates chunkcoordinates = this.b;
ChunkCoordinates chunkcoordinates1 = this.b;
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);
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.sleeping = false;
if (!this.world.isStatic && flag1) {
this.world.o();
this.world.q();
}
if (flag) {
@ -573,19 +642,107 @@ public abstract class EntityHuman extends EntityLiving {
} else {
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;
}
public boolean E() {
return this.sleeping;
public static ChunkCoordinates a(World world, ChunkCoordinates chunkcoordinates) {
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() {
return this.sleeping;
}
public boolean G() {
return this.sleeping && this.sleepTicks >= 100;
}
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) {
super(world);
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
this.height = this.width / 2.0F;
this.a(d0, d1, d2);
this.a = itemstack;
@ -25,12 +25,15 @@ public class EntityItem extends Entity {
this.motX = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D));
this.motY = 0.20000000298023224D;
this.motZ = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D));
this.bg = false;
}
protected boolean l() {
return false;
}
public EntityItem(World world) {
super(world);
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
this.height = this.width / 2.0F;
}
@ -76,7 +79,7 @@ public class EntityItem extends Entity {
++this.e;
++this.b;
if (this.b >= 6000) {
this.C();
this.D();
}
}
@ -167,10 +170,10 @@ public class EntityItem extends Entity {
}
public boolean a(Entity entity, int i) {
this.R();
this.W();
this.f -= i;
if (this.f <= 0) {
this.C();
this.D();
}
return false;
@ -203,7 +206,7 @@ public class EntityItem extends Entity {
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);
entityhuman.b(this, i);
this.C();
this.D();
}
}
// CraftBukkit end

View File

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

View File

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

View File

@ -20,24 +20,24 @@ public class EntityMonster extends EntityCreature implements IMonster {
this.health = 20;
}
public void q() {
public void r() {
float f = this.c(1.0F);
if (f > 0.5F) {
this.at += 2;
}
super.q();
super.r();
}
public void f_() {
super.f_();
if (this.world.j == 0) {
this.C();
this.D();
}
}
protected Entity l() {
protected Entity m() {
EntityHuman entityhuman = this.world.a(this, 16.0D);
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) {
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;
// 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.
@ -91,7 +91,7 @@ public class EntityMonster extends EntityCreature implements IMonster {
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, this.c);
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
if (!event.isCancelled() && event.getDamage() != 0) {
entity.a(this, event.getDamage());
}
return;

View File

@ -46,12 +46,12 @@ public class EntityPigZombie extends EntityZombie {
this.a = nbttagcompound.d("Anger");
}
protected Entity l() {
return this.a == 0 ? null : super.l();
protected Entity m() {
return this.a == 0 ? null : super.m();
}
public void q() {
super.q();
public void r() {
super.r();
}
public boolean a(Entity entity, int i) {
@ -64,17 +64,17 @@ public class EntityPigZombie extends EntityZombie {
if (entity1 instanceof EntityPigZombie) {
EntityPigZombie entitypigzombie = (EntityPigZombie) entity1;
entitypigzombie.c(entity);
entitypigzombie.d(entity);
}
}
this.c(entity);
this.d(entity);
}
return super.a(entity, i);
}
private void c(Entity entity) {
private void d(Entity entity) {
// CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer();
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) {
super(world);
ChunkCoordinates chunkcoordinates = world.l();
ChunkCoordinates chunkcoordinates = world.m();
int i = chunkcoordinates.a;
int j = chunkcoordinates.c;
int k = chunkcoordinates.b;
@ -60,7 +60,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public Location compassTarget;
// CraftBukkit end
public void l() {
public void m() {
this.activeContainer.a((ICrafting) this);
}
@ -72,7 +72,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.height = 0.0F;
}
public float p() {
public float q() {
return 1.62F;
}
@ -195,8 +195,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
}
public void q() {
super.q();
public void r() {
super.r();
}
public void b(Entity entity, int i) {
@ -214,7 +214,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.activeContainer.a();
}
public void r() {
public void m_() {
if (!this.p) {
this.q = -1;
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) {
if (super.a(i, j, k)) {
public EnumBedError a(int i, int j, int k) {
EnumBedError enumbederror = super.a(i, j, k);
if (enumbederror == EnumBedError.OK) {
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) {
if (this.E()) {
public void a(boolean flag, boolean flag1, boolean flag2) {
if (this.F()) {
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);
}
@ -263,12 +264,12 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
super.a(d0, flag);
}
private void V() {
private void aa() {
this.bH = this.bH % 100 + 1;
}
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.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k);
this.activeContainer.f = this.bH;
@ -276,24 +277,24 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public void a(IInventory iinventory) {
this.V();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 0, iinventory.c(), iinventory.m_())));
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 0, iinventory.c(), iinventory.q_())));
this.activeContainer = new ContainerChest(this.inventory, iinventory);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
}
public void a(TileEntityFurnace tileentityfurnace) {
this.V();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 2, tileentityfurnace.c(), tileentityfurnace.m_())));
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 2, tileentityfurnace.c(), tileentityfurnace.q_())));
this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
}
public void a(TileEntityDispenser tileentitydispenser) {
this.V();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 3, tileentitydispenser.c(), tileentitydispenser.m_())));
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 3, tileentitydispenser.c(), tileentitydispenser.q_())));
this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
@ -309,7 +310,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(Container container, List 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) {
@ -318,18 +319,18 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(ItemStack itemstack) {}
public void t() {
this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f)));
this.v();
}
public void u() {
if (!this.h) {
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.i())));
}
this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f)));
this.w();
}
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 = this.defaultContainer;
}
@ -338,7 +339,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.au = f;
this.av = f1;
this.ax = flag;
this.b(flag1);
this.e(flag1);
this.pitch = f2;
this.yaw = f3;
}

View File

@ -32,8 +32,8 @@ public class EntitySkeleton extends EntityMonster {
return "mob.skeletonhurt";
}
public void q() {
if (this.world.c()) {
public void r() {
if (this.world.d()) {
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) {
@ -51,7 +51,7 @@ public class EntitySkeleton extends EntityMonster {
}
}
super.q();
super.r();
}
protected void a(Entity entity, float f) {
@ -89,7 +89,7 @@ public class EntitySkeleton extends EntityMonster {
return Item.ARROW.id;
}
protected void o() {
protected void p() {
// CraftBukkit start - whole method
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) {
super(world);
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
}
protected void a() {}
@ -31,8 +31,8 @@ public class EntitySnowball extends Entity {
public EntitySnowball(World world, EntityLiving entityliving) {
super(world);
this.g = entityliving;
this.a(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.p(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.b(0.25F, 0.25F);
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.locY -= 0.10000000149011612D;
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) {
super(world);
this.h = 0;
this.a(0.25F, 0.25F);
this.b(0.25F, 0.25F);
this.a(d0, d1, d2);
this.height = 0.0F;
}
@ -91,7 +91,7 @@ public class EntitySnowball extends Entity {
if (i == this.e) {
++this.h;
if (this.h == 1200) {
this.C();
this.D();
}
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.C();
this.D();
}
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))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
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.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit stop
// CraftBukkit end
public class EntitySpider extends EntityMonster {
public EntitySpider(World world) {
super(world);
this.texture = "/mob/spider.png";
this.a(1.4F, 0.9F);
this.b(1.4F, 0.9F);
this.az = 0.8F;
}
@ -20,7 +20,11 @@ public class EntitySpider extends EntityMonster {
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);
if (f < 0.5F) {
@ -91,7 +95,7 @@ public class EntitySpider extends EntityMonster {
return Item.STRING.id;
}
public boolean m() {
return this.aV;
public boolean n() {
return this.aW;
}
}

View File

@ -13,8 +13,8 @@ public class EntityTNTPrimed extends Entity {
public EntityTNTPrimed(World world) {
super(world);
this.a = 0;
this.aC = true;
this.a(0.98F, 0.98F);
this.aD = true;
this.b(0.98F, 0.98F);
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.motY = 0.20000000298023224D;
this.motZ = (double) (-MathHelper.b(f * 3.1415927F / 180.0F) * 0.02F);
this.bg = false;
this.a = 80;
this.lastX = d0;
this.lastY = d1;
@ -35,6 +34,10 @@ public class EntityTNTPrimed extends Entity {
protected void a() {}
protected boolean l() {
return false;
}
public boolean d_() {
return !this.dead;
}
@ -57,7 +60,7 @@ public class EntityTNTPrimed extends Entity {
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.
this.h();
this.C();
this.D();
// CraftBukkit end
} else {
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();
}
// CraftBukkit -- synchronized
public synchronized void a(Entity entity) {
if (entity instanceof EntityPlayer) {
this.a(entity, 512, 2);
@ -61,6 +62,7 @@ public class EntityTracker {
this.a(entity, i, j, false);
}
// CraftBukkit -- synchronized
public synchronized void a(Entity entity, int i, int j, boolean flag) {
if (i > this.d) {
i = this.d;
@ -78,6 +80,7 @@ public class EntityTracker {
}
}
// CraftBukkit -- synchronized
public synchronized void b(Entity entity) {
if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity;
@ -98,6 +101,7 @@ public class EntityTracker {
}
}
// CraftBukkit -- synchronized
public synchronized void a() {
ArrayList arraylist = new ArrayList();
Iterator iterator = this.a.iterator();
@ -126,6 +130,7 @@ public class EntityTracker {
}
}
// CraftBukkit -- synchronized
public synchronized void a(Entity entity, Packet packet) {
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) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.b.a(entity.id);
@ -142,6 +148,7 @@ public class EntityTracker {
}
}
// CraftBukkit -- synchronized
public synchronized void a(EntityPlayer entityplayer) {
Iterator iterator = this.a.iterator();

View File

@ -102,7 +102,7 @@ public class EntityTrackerEntry {
this.a((Packet) object);
}
DataWatcher datawatcher = this.a.O();
DataWatcher datawatcher = this.a.T();
if (datawatcher.a()) {
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.a.aY = false;
this.a.aZ = false;
}
}

View File

@ -14,8 +14,8 @@ public class EntityZombie extends EntityMonster {
this.c = 5;
}
public void q() {
if (this.world.c()) {
public void r() {
if (this.world.d()) {
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) {
@ -31,7 +31,7 @@ public class EntityZombie extends EntityMonster {
}
}
super.q();
super.r();
}
protected String e() {

View File

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

View File

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

View File

@ -20,12 +20,12 @@ public class InventoryCrafting implements IInventory {
this.b = i;
}
public int m_() {
public int q_() {
return this.a.length;
}
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) {
@ -70,11 +70,11 @@ public class InventoryCrafting implements IInventory {
this.c.a((IInventory) this);
}
public int n_() {
public int r_() {
return 64;
}
public void h() {}
public void i() {}
public boolean a_(EntityHuman entityhuman) {
return true;

View File

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

View File

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

View File

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

View File

@ -17,7 +17,7 @@ public class ItemFlintAndSteel extends Item {
public ItemFlintAndSteel(int i) {
super(i);
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) {
@ -63,7 +63,7 @@ public class ItemFlintAndSteel extends Item {
boolean preventFire = eventIgnite.isCancelled();
if (preventFire) {
itemstack.b(1);
itemstack.a(1, entityhuman);
return false;
}
// CraftBukkit end
@ -83,7 +83,7 @@ public class ItemFlintAndSteel extends Item {
// CraftBukkit end
}
itemstack.b(1);
itemstack.a(1, entityhuman);
return true;
}
}

View File

@ -12,7 +12,7 @@ public class ItemHoe extends Item {
public ItemHoe(int i, EnumToolMaterial enumtoolmaterial) {
super(i);
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) {
@ -40,7 +40,7 @@ public class ItemHoe extends Item {
}
// CraftBukkit end
itemstack.b(1);
itemstack.a(1, entityhuman);
if (world.k.nextInt(8) == 0 && i1 == Block.GRASS.id) {
byte b0 = 1;

View File

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

View File

@ -11,7 +11,6 @@ public class ItemSign extends Item {
public ItemSign(int i) {
super(i);
this.durability = 64;
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) {
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) {
@ -109,10 +115,14 @@ public final class ItemStack {
return Item.byId[this.id].d();
}
public void b(int i) {
public void a(int i, Entity entity) {
if (this.d()) {
this.damage += i;
if (this.damage > this.i()) {
if (entity instanceof EntityHuman) {
((EntityHuman) entity).a(StatisticList.B[this.id], 1);
}
--this.count;
if (this.count < 0) {
this.count = 0;
@ -123,12 +133,20 @@ public final class ItemStack {
}
}
public void a(EntityLiving entityliving) {
Item.byId[this.id].a(this, entityliving);
public void a(EntityLiving entityliving, EntityHuman entityhuman) {
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) {
Item.byId[this.id].a(this, i, j, k, l);
public void a(int i, int j, int k, int l, EntityHuman entityhuman) {
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) {
@ -141,8 +159,8 @@ public final class ItemStack {
public void a(EntityHuman entityhuman) {}
public void b(EntityLiving entityliving) {
Item.byId[this.id].b(this, entityliving);
public void a(EntityLiving entityliving) {
Item.byId[this.id].a(this, entityliving);
}
public ItemStack j() {

View File

@ -9,6 +9,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
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));
// 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) {
a.warning("**** NOT ENOUGH RAM!");
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);
long j = System.nanoTime();
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 + "\"");
this.a((Convertable) (new WorldLoaderServer(new File("."))), s1);
this.a(new WorldLoaderServer(new File(".")), s1, k);
// CraftBukkit start
long elapsed = System.nanoTime() - j;
@ -139,7 +150,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
return true;
}
private void a(Convertable convertable, String s) {
private void a(Convertable convertable, String s, long i) {
if (convertable.a(s)) {
a.info("Converting map!");
convertable.a(s, new ConvertProgressUpdater(this));
@ -148,7 +159,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
a.info("Preparing start region");
// 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.j = this.d.a("spawn-monsters", true) ? 1 : 0;
world.a(this.d.a("spawn-monsters", true), this.m);
@ -157,30 +168,30 @@ public class MinecraftServer implements Runnable, ICommandListener {
// CraftBukkit end
short short1 = 196;
long i = System.currentTimeMillis();
ChunkCoordinates chunkcoordinates = worlds.get(0).l(); // CraftBukkit
long j = System.currentTimeMillis();
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) {
long l = System.currentTimeMillis();
for (int k = -short1; k <= short1 && this.p; k += 16) {
for (int l = -short1; l <= short1 && this.p; l += 16) {
long i1 = System.currentTimeMillis();
if (l < i) {
i = l;
if (i1 < j) {
j = i1;
}
if (l > i + 1000L) {
int i1 = (short1 * 2 + 1) * (short1 * 2 + 1);
int j1 = (j + short1) * (short1 * 2 + 1) + k + 1;
if (i1 > j + 1000L) {
int j1 = (short1 * 2 + 1) * (short1 * 2 + 1);
int k1 = (k + short1) * (short1 * 2 + 1) + l + 1;
this.a("Preparing spawn area", j1 * 100 / i1);
i = l;
this.a("Preparing spawn area", k1 * 100 / j1);
j = i1;
}
// CraftBukkit start
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
for (WorldServer world: worlds) {
world.a(true, (IProgressUpdate) null);
world.r();
world.t();
WorldSaveEvent event = new WorldSaveEvent( world.getWorld() );
server.getPluginManager().callEvent( event );
@ -263,7 +274,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
j += l;
i = k;
// 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();
j = 0L;
} else {
@ -338,20 +349,20 @@ public class MinecraftServer implements Runnable, ICommandListener {
if (this.h % 20 == 0) {
for (int i = 0; i < this.f.b.size(); ++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);
for (WorldServer world: worlds) {
world.g();
world.h();
while (world.e()) {
while (world.f()) {
;
}
world.d();
world.e();
}
// CraftBukkit end
this.c.a();
@ -406,6 +417,10 @@ public class MinecraftServer implements Runnable, ICommandListener {
a.info(s);
}
public void c(String s) {
a.warning(s);
}
public String c() {
return "CONSOLE";
}

View File

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

View File

@ -248,7 +248,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
double d8 = d4 * d4 + d6 * d6 + d7 * d7;
boolean flag1 = false;
if (d8 > 0.0625D && !this.e.E()) {
if (d8 > 0.0625D && !this.e.F()) {
flag1 = true;
a.warning(this.e.name + " moved wrongly!");
System.out.println("Got position " + d1 + ", " + d2 + ", " + d3);
@ -259,7 +259,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit
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);
return;
}
@ -311,7 +311,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
public void a(Packet14BlockDig packet14blockdig) {
if (packet14blockdig.e == 4) {
this.e.y();
this.e.z();
} else {
// CraftBukkit
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
ChunkCoordinates chunkcoordinates = this.e.world.l();
ChunkCoordinates chunkcoordinates = this.e.world.m();
int l = (int) MathHelper.e((float) (i - chunkcoordinates.a));
int i1 = (int) MathHelper.e((float) (k - chunkcoordinates.c));
@ -429,7 +429,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int l = packet15place.d;
// CraftBukkit
ChunkCoordinates chunkcoordinates = this.e.world.l();
ChunkCoordinates chunkcoordinates = this.e.world.m();
int i1 = (int) MathHelper.e((float) (i - chunkcoordinates.a));
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) {
// 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);
server.getPluginManager().callEvent(event);
// CraftBukkit end
@ -639,7 +628,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (this.d.f.h(this.e.name)) {
s1 = s.substring(1);
a.info(this.e.name + " issued server command: " + s1);
this.d.a(s1, (ICommandListener) this);
this.d.a(s1, this);
} else {
s1 = s.substring(1);
a.info(this.e.name + " tried command: " + s1);
@ -678,7 +667,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
server.getPluginManager().callEvent(event);
// CraftBukkit end
this.e.r();
this.e.m_();
}
}
@ -695,11 +684,11 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit: Set Sneaking
if (packet19entityaction.b == 1) {
this.e.b(true);
this.e.e(true);
} else if (packet19entityaction.b == 2) {
this.e.b(false);
this.e.e(false);
} else if (packet19entityaction.b == 3) {
this.e.a(false, true);
this.e.a(false, true, true);
this.l = false;
}
}
@ -745,7 +734,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
}
public void a(Packet101CloseWindow packet101closewindow) {
this.e.v();
this.e.w();
}
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.h = true;
this.e.activeContainer.a();
this.e.u();
this.e.v();
this.e.h = false;
} else {
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();
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);
@ -786,15 +775,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (this.e.world.f(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c)) {
TileEntity tileentity = this.e.world.getTileEntity(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c);
if (tileentity instanceof TileEntitySign) {
TileEntitySign sign = (TileEntitySign)tileentity;
if (!sign.fresh) {
int x = packet130updatesign.a;
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.");
TileEntitySign tileentitysign = (TileEntitySign)tileentity;
if (!tileentitysign.a()) {
this.d.c("Player " + this.e.name + " just tried to change non-editable sign");
return;
}
}
@ -803,34 +786,34 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int i;
int j;
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
boolean flag = true;
if (packet130updatesign.d[i].length() > 15) {
if (packet130updatesign.d[j].length() > 15) {
flag = false;
} else {
for (j = 0; j < packet130updatesign.d[i].length(); ++j) {
if (FontAllowedCharacters.a.indexOf(packet130updatesign.d[i].charAt(j)) < 0) {
for (i = 0; i < packet130updatesign.d[j].length(); ++i) {
if (FontAllowedCharacters.a.indexOf(packet130updatesign.d[j].charAt(i)) < 0) {
flag = false;
}
}
}
if (!flag) {
packet130updatesign.d[i] = "!?";
packet130updatesign.d[j] = "!?";
}
}
if (tileentity instanceof TileEntitySign) {
i = packet130updatesign.a;
j = packet130updatesign.a;
int k = packet130updatesign.b;
j = packet130updatesign.c;
TileEntitySign tileentitysign = (TileEntitySign) tileentity;
i = packet130updatesign.c;
TileEntitySign tileentitysign1 = (TileEntitySign) tileentity;
// CraftBukkit start - SIGN_CHANGE hook
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);
if (event.isCancelled()) {
@ -839,19 +822,17 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
for (int l = 0; l < 4; ++l) {
event.setLine(l, "");
}
} else {
tileentitysign.fresh = false;
}
// CraftBukkit end
for (int l = 0; l < 4; ++l) {
tileentitysign.a[l] = event.getLine(l);
tileentitysign1.a[l] = event.getLine(l);
// CraftBukkit
}
tileentitysign.h();
tileentitysign1.i();
// 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.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -46,6 +47,11 @@ public class NetworkManager {
try {
socket.setSoTimeout(30000);
socket.setTrafficClass(24);
} catch (SocketException socketexception) {
System.err.println(socketexception.getMessage());
}
try {
this.h = new DataInputStream(socket.getInputStream());
this.i = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {

View File

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

View File

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

View File

@ -72,7 +72,7 @@ public class ServerConfigurationManager {
public void a(WorldServer worldserver) {
// CraftBukkit start
if (this.n == null) {
this.n = worldserver.m().d();
this.n = worldserver.o().d();
}
// CraftBukkit end
}
@ -85,7 +85,7 @@ public class ServerConfigurationManager {
this.b.add(entityplayer);
this.n.b(entityplayer);
// 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) {
entityplayer.a(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ);
@ -173,12 +173,25 @@ public class ServerConfigurationManager {
((WorldServer) entityplayer.world).manager.b(entityplayer);
this.b.remove(entityplayer);
entityplayer.world.e(entityplayer);
ChunkCoordinates chunkcoordinates = entityplayer.H();
EntityPlayer entityplayer1 = new EntityPlayer(this.c, entityplayer.world, entityplayer.name, new ItemInWorldManager(entityplayer.world));
entityplayer1.id = entityplayer.id;
entityplayer1.a = entityplayer.a;
entityplayer1.displayName = entityplayer.displayName; // 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);
while (entityplayer.world.a(entityplayer1, entityplayer1.boundingBox).size() != 0) {
@ -206,12 +219,12 @@ public class ServerConfigurationManager {
entityplayer1.a.b((Packet) (new Packet9Respawn()));
entityplayer1.a.a(entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch);
// CraftBukkit start
((WorldServer) entityplayer1.world).manager.a(entityplayer1);
entityplayer.world.a(entityplayer1);
((WorldServer) entityplayer1.world).manager.a(entityplayer1);
// CraftBukkit end
this.b.add(entityplayer1);
entityplayer1.l();
entityplayer1.s();
entityplayer1.m();
entityplayer1.t();
return entityplayer1;
}

View File

@ -15,29 +15,29 @@ public class Slot {
this.c = k;
}
public void a() {
this.c();
public void a(ItemStack itemstack) {
this.b();
}
public boolean a(ItemStack itemstack) {
public boolean b(ItemStack itemstack) {
return true;
}
public ItemStack b() {
public ItemStack a() {
return this.e.c_(this.d);
}
public void b(ItemStack itemstack) {
public void c(ItemStack itemstack) {
this.e.a(this.d, itemstack);
this.c();
this.b();
}
public void c() {
this.e.h();
public void b() {
this.e.i();
}
public int d() {
return this.e.n_();
public int c() {
return this.e.r_();
}
public ItemStack a(int i) {
@ -47,4 +47,8 @@ public class Slot {
public boolean a(IInventory iinventory, int i) {
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;
String line = 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) {
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 int m_() {
public int q_() {
return 27;
}
@ -27,7 +27,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
if (this.a[i].count <= j) {
itemstack = this.a[i];
this.a[i] = null;
this.h();
this.i();
return itemstack;
} else {
itemstack = this.a[i].a(j);
@ -35,7 +35,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
this.a[i] = null;
}
this.h();
this.i();
return itemstack;
}
} else {
@ -45,11 +45,11 @@ public class TileEntityChest extends TileEntity implements IInventory {
public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) {
itemstack.count = this.n_();
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
}
this.h();
this.i();
}
public String c() {
@ -60,7 +60,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
super.a(nbttagcompound);
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) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -89,7 +89,7 @@ public class TileEntityChest extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist);
}
public int n_() {
public int r_() {
return 64;
}

View File

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

View File

@ -15,7 +15,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
public TileEntityFurnace() {}
public int m_() {
public int q_() {
return this.h.length;
}
@ -46,8 +46,8 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
public void a(int i, ItemStack itemstack) {
this.h[i] = itemstack;
if (itemstack != null && itemstack.count > this.n_()) {
itemstack.count = this.n_();
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
}
}
@ -59,7 +59,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
super.a(nbttagcompound);
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) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
@ -94,7 +94,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist);
}
public int n_() {
public int r_() {
return 64;
}
@ -111,7 +111,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
}
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]);
if (this.a > 0) {
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;
if (this.c == 200) {
this.c = 0;
@ -142,22 +142,22 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
}
if (flag1) {
this.h();
this.i();
}
}
private boolean i() {
private boolean h() {
if (this.h[0] == null) {
return false;
} else {
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() {
if (this.i()) {
if (this.h()) {
ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id);
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);
}
entityliving.I();
entityliving.M();
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.o = this.b();
if (flag) {
this.r = true;
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.c();
}
this.f();
this.g();
}
protected IChunkProvider b() {
@ -107,6 +96,21 @@ public class World implements IBlockAccess {
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) {
int k;
@ -123,7 +127,7 @@ public class World implements IBlockAccess {
iprogressupdate.a("Saving level");
}
this.r();
this.t();
if (iprogressupdate != null) {
iprogressupdate.b("Saving chunks");
}
@ -132,8 +136,8 @@ public class World implements IBlockAccess {
}
}
private void r() {
this.i();
private void t() {
this.j();
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)];
}
public boolean c() {
public boolean d() {
return this.e < 4;
}
@ -731,7 +735,7 @@ public class World implements IBlockAccess {
EntityHuman entityhuman = (EntityHuman) entity;
this.d.add(entityhuman);
this.o();
this.q();
}
this.c(i, j).a(entity);
@ -762,18 +766,18 @@ public class World implements IBlockAccess {
entity.b((Entity) null);
}
entity.C();
entity.D();
if (entity instanceof EntityHuman) {
this.d.remove((EntityHuman) entity);
this.o();
this.q();
}
}
public void e(Entity entity) {
entity.C();
entity.D();
if (entity instanceof EntityHuman) {
this.d.remove((EntityHuman) entity);
this.o();
this.q();
}
int i = entity.chunkX;
@ -900,7 +904,7 @@ public class World implements IBlockAccess {
}
}
public void d() {
public void e() {
this.b.removeAll(this.v);
int i;
@ -974,7 +978,7 @@ public class World implements IBlockAccess {
entity.lastPitch = entity.pitch;
if (flag && entity.bA) {
if (entity.vehicle != null) {
entity.x();
entity.o_();
} else {
entity.f_();
}
@ -1034,7 +1038,7 @@ public class World implements IBlockAccess {
for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i);
if (!entity.dead && entity.aC) {
if (!entity.dead && entity.aD) {
return false;
}
}
@ -1268,7 +1272,7 @@ public class World implements IBlockAccess {
return block == null ? false : block.a();
}
public boolean e() {
public boolean f() {
if (this.C >= 50) {
return false;
} else {
@ -1345,7 +1349,7 @@ public class World implements IBlockAccess {
}
}
public void f() {
public void g() {
int i = this.a(1.0F);
if (i != this.e) {
@ -1358,10 +1362,10 @@ public class World implements IBlockAccess {
this.E = flag1;
}
public void g() {
public void h() {
long i;
if (this.q()) {
if (this.s()) {
boolean flag = false;
if (this.D && this.j >= 1) {
@ -1371,7 +1375,7 @@ public class World implements IBlockAccess {
if (!flag) {
i = this.q.f() + 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.a(false);
this.h();
this.i();
}
protected void h() {
protected void i() {
this.F.clear();
int i;
@ -1465,10 +1469,10 @@ public class World implements IBlockAccess {
j1 = l & 15;
k1 = l >> 8 & 15;
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]) {
Block.byId[b1].a(this, j1 + i, l1, k1 + j, this.k);
if (Block.n[i2]) {
Block.byId[i2].a(this, j1 + i, l1, k1 + j, this.k);
}
}
}
@ -1692,6 +1696,16 @@ public class World implements IBlockAccess {
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) {
byte[] abyte = new byte[l * i1 * j1 * 5 / 2];
int k1 = i >> 4;
@ -1741,7 +1755,7 @@ public class World implements IBlockAccess {
return abyte;
}
public void i() {
public void j() {
this.p.b();
}
@ -1749,15 +1763,15 @@ public class World implements IBlockAccess {
this.q.a(i);
}
public long j() {
public long k() {
return this.q.b();
}
public long k() {
public long l() {
return this.q.f();
}
public ChunkCoordinates l() {
public ChunkCoordinates m() {
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 IChunkProvider n() {
return this.o;
}
public void d(int i, int j, int k, int l, int i1) {
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;
}
public WorldData n() {
public WorldData p() {
return this.q;
}
public void o() {
public void q() {
this.A = !this.d.isEmpty();
Iterator iterator = this.d.iterator();
while (iterator.hasNext()) {
EntityHuman entityhuman = (EntityHuman) iterator.next();
if (!entityhuman.E()) {
if (!entityhuman.F()) {
this.A = false;
break;
}
}
}
protected void p() {
protected void r() {
this.A = false;
Iterator iterator = this.d.iterator();
while (iterator.hasNext()) {
EntityHuman entityhuman = (EntityHuman) iterator.next();
if (entityhuman.E()) {
entityhuman.a(false, false);
if (entityhuman.F()) {
entityhuman.a(false, false, false);
}
}
}
public boolean q() {
public boolean s() {
if (this.A && !this.isStatic) {
Iterator iterator = this.d.iterator();
@ -1822,7 +1840,7 @@ public class World implements IBlockAccess {
}
entityhuman = (EntityHuman) iterator.next();
} while (entityhuman.F());
} while (entityhuman.G());
return false;
} else {

View File

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

View File

@ -9,6 +9,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import jline.ConsoleReader;
@ -36,7 +37,7 @@ import org.bukkit.craftbukkit.scheduler.CraftScheduler;
public final class CraftServer implements Server {
private final String serverName = "Craftbukkit";
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 BukkitScheduler scheduler = new CraftScheduler(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) {
return createWorld(name, environment, (new Random()).nextLong());
}
public World createWorld(String name, World.Environment environment, long seed) {
File folder = new File(name);
World world = getWorld(name);
@ -286,7 +291,7 @@ public final class CraftServer implements Server {
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.j = 1;
@ -312,10 +317,10 @@ public final class CraftServer implements Server {
i = l;
}
ChunkCoordinates chunkcoordinates = internal.l();
ChunkCoordinates chunkcoordinates = internal.m();
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() {
ChunkCoordinates spawn = world.l();
ChunkCoordinates spawn = world.m();
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) {
return this.provider.d(x,z).bukkitChunk;
return this.provider.c(x, z).bukkitChunk;
}
public Chunk getChunkAt(Block block) {
@ -124,7 +124,7 @@ public class CraftWorld implements World {
return false;
}
provider.c(x, z);
provider.d(x, z);
return true;
}
@ -214,7 +214,7 @@ public class CraftWorld implements World {
public boolean loadChunk(int x, int z, boolean generate) {
if (generate) {
// 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);
@ -524,7 +524,7 @@ public class CraftWorld implements World {
public void save() {
// Writes level.dat
world.r();
world.t();
// Saves all chunks/regions
world.o.a(true, null);

View File

@ -387,12 +387,12 @@ public class CraftBlock implements Block {
int power = 0;
BlockRedstoneWire wire = (BlockRedstoneWire) net.minecraft.server.Block.REDSTONE_WIRE;
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.UP || face == BlockFace.SELF) && world.i(x, y + 1, z, 1)) power = wire.g(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.WEST || face == BlockFace.SELF) && world.i(x, y, z + 1, 3)) power = wire.g(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.SOUTH || face == BlockFace.SELF) && world.i(x + 1, y, z, 5)) power = wire.g(world, x + 1, y, 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.f(world, x, y + 1, z, 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.f(world, x, y, z + 1, 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.f(world, x + 1, y, z, power);
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);
if (result) {
chest.h();
chest.i();
}
return result;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -50,7 +50,7 @@ public class CraftEventFactory {
if (spawnSize <= 0) 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));
return distanceFromSpawn > spawnSize;

View File

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

View File

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