Updated to Minecraft version 1.4
Dieser Commit ist enthalten in:
Ursprung
0635f7c1b8
Commit
87c36febeb
2
pom.xml
2
pom.xml
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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() {}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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>();
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -108,6 +108,6 @@ public class ItemBlock extends Item {
|
||||
}
|
||||
|
||||
public String a() {
|
||||
return Block.byId[this.a].e();
|
||||
return Block.byId[this.a].f();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)) {
|
||||
|
@ -11,7 +11,6 @@ public class ItemSign extends Item {
|
||||
|
||||
public ItemSign(int i) {
|
||||
super(i);
|
||||
this.durability = 64;
|
||||
this.maxStackSize = 1;
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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";
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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 {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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()) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class CraftChest extends CraftBlockState implements Chest {
|
||||
boolean result = super.update(force);
|
||||
|
||||
if (result) {
|
||||
chest.h();
|
||||
chest.i();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -49,7 +49,7 @@ public class CraftDispenser extends CraftBlockState implements Dispenser {
|
||||
boolean result = super.update(force);
|
||||
|
||||
if (result) {
|
||||
dispenser.h();
|
||||
dispenser.i();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -32,7 +32,7 @@ public class CraftFurnace extends CraftBlockState implements Furnace {
|
||||
boolean result = super.update(force);
|
||||
|
||||
if (result) {
|
||||
furnace.h();
|
||||
furnace.i();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -33,7 +33,7 @@ public class CraftSign extends CraftBlockState implements Sign {
|
||||
boolean result = super.update(force);
|
||||
|
||||
if (result) {
|
||||
sign.h();
|
||||
sign.i();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren