3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-12-18 20:40:08 +01:00

Update CraftBukkit to Minecraft 1.4.4.

Dieser Commit ist enthalten in:
Travis Watkins 2012-11-06 06:05:28 -06:00
Ursprung a0c3b4f9d1
Commit 7f7192f8fd
169 geänderte Dateien mit 3295 neuen und 2774 gelöschten Zeilen

Datei anzeigen

@ -4,7 +4,7 @@
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<packaging>jar</packaging>
<version>1.4.2-R0.3-SNAPSHOT</version>
<version>1.4.4-R0.1-SNAPSHOT</version>
<name>CraftBukkit</name>
<url>http://www.bukkit.org</url>
@ -51,14 +51,14 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.4.2-R0.3-SNAPSHOT</version>
<version>1.4.4-R0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>minecraft-server</artifactId>
<version>1.4.2</version>
<version>1.4.4</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

Datei anzeigen

@ -377,14 +377,14 @@ public class Block {
int l1 = this.getDropType(l, world.random, i1);
if (l1 > 0) {
this.a(world, i, j, k, new ItemStack(l1, 1, this.getDropData(l)));
this.b(world, i, j, k, new ItemStack(l1, 1, this.getDropData(l)));
}
}
}
}
}
protected void a(World world, int i, int j, int k, ItemStack itemstack) {
protected void b(World world, int i, int j, int k, ItemStack itemstack) {
if (!world.isStatic && world.getGameRules().getBoolean("doTileDrops")) {
float f = 0.7F;
double d0 = (double) (world.random.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
@ -540,7 +540,9 @@ public class Block {
public void b(World world, int i, int j, int k, Entity entity) {}
public void postPlace(World world, int i, int j, int k, int l, float f, float f1, float f2) {}
public int getPlacedData(World world, int i, int j, int k, int l, float f, float f1, float f2, int i1) {
return i1;
}
public void attack(World world, int i, int j, int k, EntityHuman entityhuman) {}
@ -595,7 +597,7 @@ public class Block {
ItemStack itemstack = this.f_(l);
if (itemstack != null) {
this.a(world, i, j, k, itemstack);
this.b(world, i, j, k, itemstack);
}
} else {
int i1 = EnchantmentManager.getBonusBlockLootEnchantmentLevel(entityhuman);
@ -628,6 +630,8 @@ public class Block {
public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {}
public void postPlace(World world, int i, int j, int k, int l) {}
public Block b(String s) {
this.name = "tile." + s;
return this;
@ -669,7 +673,7 @@ public class Block {
public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) {}
public void g(World world, int i, int j, int k, int l) {}
public void h(World world, int i, int j, int k, int l) {}
public void f(World world, int i, int j, int k) {}
@ -677,6 +681,10 @@ public class Block {
return true;
}
public boolean a(Explosion explosion) {
return true;
}
static {
Item.byId[WOOL.id] = (new ItemCloth(WOOL.id - 256)).b("cloth");
Item.byId[LOG.id] = (new ItemMultiTexture(LOG.id - 256, LOG, BlockLog.a)).b("log");

Datei anzeigen

@ -33,35 +33,35 @@ public class BlockButton extends Block {
}
public boolean canPlace(World world, int i, int j, int k, int l) {
return l == 2 && world.s(i, j, k + 1) ? true : (l == 3 && world.s(i, j, k - 1) ? true : (l == 4 && world.s(i + 1, j, k) ? true : l == 5 && world.s(i - 1, j, k)));
return l == 2 && world.t(i, j, k + 1) ? true : (l == 3 && world.t(i, j, k - 1) ? true : (l == 4 && world.t(i + 1, j, k) ? true : l == 5 && world.t(i - 1, j, k)));
}
public boolean canPlace(World world, int i, int j, int k) {
return world.s(i - 1, j, k) ? true : (world.s(i + 1, j, k) ? true : (world.s(i, j, k - 1) ? true : world.s(i, j, k + 1)));
return world.t(i - 1, j, k) ? true : (world.t(i + 1, j, k) ? true : (world.t(i, j, k - 1) ? true : world.t(i, j, k + 1)));
}
public void postPlace(World world, int i, int j, int k, int l, float f, float f1, float f2) {
int i1 = world.getData(i, j, k);
int j1 = i1 & 8;
public int getPlacedData(World world, int i, int j, int k, int l, float f, float f1, float f2, int i1) {
int j1 = world.getData(i, j, k);
int k1 = j1 & 8;
i1 &= 7;
if (l == 2 && world.s(i, j, k + 1)) {
i1 = 4;
} else if (l == 3 && world.s(i, j, k - 1)) {
i1 = 3;
} else if (l == 4 && world.s(i + 1, j, k)) {
i1 = 2;
} else if (l == 5 && world.s(i - 1, j, k)) {
i1 = 1;
j1 &= 7;
if (l == 2 && world.t(i, j, k + 1)) {
j1 = 4;
} else if (l == 3 && world.t(i, j, k - 1)) {
j1 = 3;
} else if (l == 4 && world.t(i + 1, j, k)) {
j1 = 2;
} else if (l == 5 && world.t(i - 1, j, k)) {
j1 = 1;
} else {
i1 = this.l(world, i, j, k);
j1 = this.l(world, i, j, k);
}
world.setData(i, j, k, i1 + j1);
return j1 + k1;
}
private int l(World world, int i, int j, int k) {
return world.s(i - 1, j, k) ? 1 : (world.s(i + 1, j, k) ? 2 : (world.s(i, j, k - 1) ? 3 : (world.s(i, j, k + 1) ? 4 : 1)));
return world.t(i - 1, j, k) ? 1 : (world.t(i + 1, j, k) ? 2 : (world.t(i, j, k - 1) ? 3 : (world.t(i, j, k + 1) ? 4 : 1)));
}
public void doPhysics(World world, int i, int j, int k, int l) {
@ -69,19 +69,19 @@ public class BlockButton extends Block {
int i1 = world.getData(i, j, k) & 7;
boolean flag = false;
if (!world.s(i - 1, j, k) && i1 == 1) {
if (!world.t(i - 1, j, k) && i1 == 1) {
flag = true;
}
if (!world.s(i + 1, j, k) && i1 == 2) {
if (!world.t(i + 1, j, k) && i1 == 2) {
flag = true;
}
if (!world.s(i, j, k - 1) && i1 == 3) {
if (!world.t(i, j, k - 1) && i1 == 3) {
flag = true;
}
if (!world.s(i, j, k + 1) && i1 == 4) {
if (!world.t(i, j, k + 1) && i1 == 4) {
flag = true;
}

Datei anzeigen

@ -1,5 +1,7 @@
package net.minecraft.server;
import java.util.Random;
import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit
public class BlockCommand extends BlockContainer {
@ -28,19 +30,26 @@ public class BlockCommand extends BlockContainer {
// CraftBukkit end
if (eventRedstone.getNewCurrent() > 0 && !(eventRedstone.getOldCurrent() > 0)) { // CraftBukkit
TileEntity tileentity = world.getTileEntity(i, j, k);
if (tileentity != null && tileentity instanceof TileEntityCommand) {
((TileEntityCommand) tileentity).a(world);
}
world.setRawData(i, j, k, i1 | 1);
world.a(i, j, k, this.id, this.r_());
} else if (!(eventRedstone.getNewCurrent() > 0) && eventRedstone.getOldCurrent() > 0) { // CraftBukkit
world.setRawData(i, j, k, i1 & -2);
}
}
}
public void b(World world, int i, int j, int k, Random random) {
TileEntity tileentity = world.getTileEntity(i, j, k);
if (tileentity != null && tileentity instanceof TileEntityCommand) {
((TileEntityCommand) tileentity).a(world);
}
}
public int r_() {
return 1;
}
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman, int l, float f, float f1, float f2) {
TileEntityCommand tileentitycommand = (TileEntityCommand) world.getTileEntity(i, j, k);

Datei anzeigen

@ -110,7 +110,7 @@ public class BlockCrops extends BlockFlower {
for (int k1 = 0; k1 < j1; ++k1) {
if (world.random.nextInt(15) <= l) {
this.a(world, i, j, k, new ItemStack(this.h(), 1, 0));
this.b(world, i, j, k, new ItemStack(this.h(), 1, 0));
}
}
}

Datei anzeigen

@ -159,7 +159,7 @@ public class BlockDoor extends Block {
flag = true;
}
if (!world.t(i, j - 1, k)) {
if (!world.v(i, j - 1, k)) {
world.setTypeId(i, j, k, 0);
flag = true;
if (world.getTypeId(i, j + 1, k) == this.id) {
@ -210,7 +210,7 @@ public class BlockDoor extends Block {
}
public boolean canPlace(World world, int i, int j, int k) {
return j >= 255 ? false : world.t(i, j - 1, k) && super.canPlace(world, i, j, k) && super.canPlace(world, i, j + 1, k);
return j >= 255 ? false : world.v(i, j - 1, k) && super.canPlace(world, i, j, k) && super.canPlace(world, i, j + 1, k);
}
public int q_() {
@ -235,4 +235,10 @@ public class BlockDoor extends Block {
return i1 & 7 | (flag ? 8 : 0) | (flag1 ? 16 : 0);
}
public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) {
if (entityhuman.abilities.canInstantlyBuild && (l & 8) != 0 && world.getTypeId(i, j - 1, k) == this.id) {
world.setTypeId(i, j - 1, k, 0);
}
}
}

Datei anzeigen

@ -56,30 +56,31 @@ public class BlockDragonEgg extends Block {
private void n(World world, int i, int j, int k) {
if (world.getTypeId(i, j, k) == this.id) {
if (!world.isStatic) {
for (int l = 0; l < 1000; ++l) {
int i1 = i + world.random.nextInt(16) - world.random.nextInt(16);
int j1 = j + world.random.nextInt(8) - world.random.nextInt(8);
int k1 = k + world.random.nextInt(16) - world.random.nextInt(16);
for (int l = 0; l < 1000; ++l) {
int i1 = i + world.random.nextInt(16) - world.random.nextInt(16);
int j1 = j + world.random.nextInt(8) - world.random.nextInt(8);
int k1 = k + world.random.nextInt(16) - world.random.nextInt(16);
if (world.getTypeId(i1, j1, k1) == 0) {
// CraftBukkit start
org.bukkit.block.Block from = world.getWorld().getBlockAt(i, j, k);
org.bukkit.block.Block to = world.getWorld().getBlockAt(i1, j1, k1);
BlockFromToEvent event = new BlockFromToEvent(from, to);
org.bukkit.Bukkit.getPluginManager().callEvent(event);
if (world.getTypeId(i1, j1, k1) == 0) {
// CraftBukkit start
org.bukkit.block.Block from = world.getWorld().getBlockAt(i, j, k);
org.bukkit.block.Block to = world.getWorld().getBlockAt(i1, j1, k1);
BlockFromToEvent event = new BlockFromToEvent(from, to);
org.bukkit.Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
if (event.isCancelled()) {
return;
}
i1 = event.getToBlock().getX();
j1 = event.getToBlock().getY();
k1 = event.getToBlock().getZ();
// CraftBukkit end
i1 = event.getToBlock().getX();
j1 = event.getToBlock().getY();
k1 = event.getToBlock().getZ();
// CraftBukkit end
if (!world.isStatic) {
world.setTypeIdAndData(i1, j1, k1, this.id, world.getData(i, j, k));
world.setTypeId(i, j, k, 0);
} else {
short short1 = 128;
for (int l1 = 0; l1 < short1; ++l1) {
@ -93,16 +94,16 @@ public class BlockDragonEgg extends Block {
world.addParticle("portal", d1, d2, d3, (double) f, (double) f1, (double) f2);
}
return;
}
return;
}
}
}
}
public int r_() {
return 3;
return 5;
}
public boolean c() {

Datei anzeigen

@ -77,7 +77,7 @@ public class BlockFire extends Block {
fireExtinguished(world, i, j, k); // CraftBukkit - invalid place location
}
if (!flag && world.M() && (world.B(i, j, k) || world.B(i - 1, j, k) || world.B(i + 1, j, k) || world.B(i, j, k - 1) || world.B(i, j, k + 1))) {
if (!flag && world.N() && (world.D(i, j, k) || world.D(i - 1, j, k) || world.D(i + 1, j, k) || world.D(i, j, k - 1) || world.D(i, j, k + 1))) {
fireExtinguished(world, i, j, k); // CraftBukkit - extinguished by rain
} else {
int l = world.getData(i, j, k);
@ -88,13 +88,13 @@ public class BlockFire extends Block {
world.a(i, j, k, this.id, this.r_() + random.nextInt(10));
if (!flag && !this.l(world, i, j, k)) {
if (!world.t(i, j - 1, k) || l > 3) {
if (!world.v(i, j - 1, k) || l > 3) {
world.setTypeId(i, j, k, 0);
}
} else if (!flag && !this.d((IBlockAccess) world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0) {
fireExtinguished(world, i, j, k); // CraftBukkit - burn out
} else {
boolean flag1 = world.C(i, j, k);
boolean flag1 = world.E(i, j, k);
byte b0 = 0;
if (flag1) {
@ -135,7 +135,7 @@ public class BlockFire extends Block {
j2 /= 2;
}
if (j2 > 0 && random.nextInt(l1) <= j2 && (!world.M() || !world.B(i1, k1, j1)) && !world.B(i1 - 1, k1, k) && !world.B(i1 + 1, k1, j1) && !world.B(i1, k1, j1 - 1) && !world.B(i1, k1, j1 + 1)) {
if (j2 > 0 && random.nextInt(l1) <= j2 && (!world.N() || !world.D(i1, k1, j1)) && !world.D(i1 - 1, k1, k) && !world.D(i1 + 1, k1, j1) && !world.D(i1, k1, j1 - 1) && !world.D(i1, k1, j1 + 1)) {
int k2 = l + random.nextInt(5) / 4;
if (k2 > 15) {
@ -197,7 +197,7 @@ public class BlockFire extends Block {
}
// CraftBukkit end
if (random.nextInt(i1 + 10) < 5 && !world.B(i, j, k)) {
if (random.nextInt(i1 + 10) < 5 && !world.D(i, j, k)) {
int k1 = i1 + random.nextInt(5) / 4;
if (k1 > 15) {
@ -251,18 +251,18 @@ public class BlockFire extends Block {
}
public boolean canPlace(World world, int i, int j, int k) {
return world.t(i, j - 1, k) || this.l(world, i, j, k);
return world.v(i, j - 1, k) || this.l(world, i, j, k);
}
public void doPhysics(World world, int i, int j, int k, int l) {
if (!world.t(i, j - 1, k) && !this.l(world, i, j, k)) {
if (!world.v(i, j - 1, k) && !this.l(world, i, j, k)) {
fireExtinguished(world, i, j, k); // CraftBukkit - fuel block gone
}
}
public void onPlace(World world, int i, int j, int k) {
if (world.worldProvider.dimension > 0 || world.getTypeId(i, j - 1, k) != Block.OBSIDIAN.id || !Block.PORTAL.i_(world, i, j, k)) {
if (!world.t(i, j - 1, k) && !this.l(world, i, j, k)) {
if (!world.v(i, j - 1, k) && !this.l(world, i, j, k)) {
fireExtinguished(world, i, j, k); // CraftBukkit - fuel block broke
} else {
world.a(i, j, k, this.id, this.r_() + world.random.nextInt(10));

Datei anzeigen

@ -18,7 +18,7 @@ public class BlockIce extends BlockHalfTransparant {
ItemStack itemstack = this.f_(l);
if (itemstack != null) {
this.a(world, i, j, k, itemstack);
this.b(world, i, j, k, itemstack);
}
} else {
if (world.worldProvider.e) {

Datei anzeigen

@ -153,19 +153,19 @@ public class BlockLeaves extends BlockTransparant {
if (world.random.nextInt(b0) == 0) {
int j1 = this.getDropType(l, world.random, i1);
this.a(world, i, j, k, new ItemStack(j1, 1, this.getDropData(l)));
this.b(world, i, j, k, new ItemStack(j1, 1, this.getDropData(l)));
}
if ((l & 3) == 0 && world.random.nextInt(200) == 0) {
this.a(world, i, j, k, new ItemStack(Item.APPLE, 1, 0));
this.b(world, i, j, k, new ItemStack(Item.APPLE, 1, 0));
}
}
}
public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) {
if (!world.isStatic && entityhuman.bP() != null && entityhuman.bP().id == Item.SHEARS.id) {
if (!world.isStatic && entityhuman.bT() != null && entityhuman.bT().id == Item.SHEARS.id) {
entityhuman.a(StatisticList.C[this.id], 1);
this.a(world, i, j, k, new ItemStack(Block.LEAVES.id, 1, l & 3));
this.b(world, i, j, k, new ItemStack(Block.LEAVES.id, 1, l & 3));
} else {
super.a(world, entityhuman, i, j, k, l);
}

Datei anzeigen

@ -26,49 +26,43 @@ public class BlockLever extends Block {
}
public boolean canPlace(World world, int i, int j, int k, int l) {
return l == 0 && world.s(i, j + 1, k) ? true : (l == 1 && world.t(i, j - 1, k) ? true : (l == 2 && world.s(i, j, k + 1) ? true : (l == 3 && world.s(i, j, k - 1) ? true : (l == 4 && world.s(i + 1, j, k) ? true : l == 5 && world.s(i - 1, j, k)))));
return l == 0 && world.t(i, j + 1, k) ? true : (l == 1 && world.v(i, j - 1, k) ? true : (l == 2 && world.t(i, j, k + 1) ? true : (l == 3 && world.t(i, j, k - 1) ? true : (l == 4 && world.t(i + 1, j, k) ? true : l == 5 && world.t(i - 1, j, k)))));
}
public boolean canPlace(World world, int i, int j, int k) {
return world.s(i - 1, j, k) ? true : (world.s(i + 1, j, k) ? true : (world.s(i, j, k - 1) ? true : (world.s(i, j, k + 1) ? true : (world.t(i, j - 1, k) ? true : world.s(i, j + 1, k)))));
return world.t(i - 1, j, k) ? true : (world.t(i + 1, j, k) ? true : (world.t(i, j, k - 1) ? true : (world.t(i, j, k + 1) ? true : (world.v(i, j - 1, k) ? true : world.t(i, j + 1, k)))));
}
public void postPlace(World world, int i, int j, int k, int l, float f, float f1, float f2) {
int i1 = world.getData(i, j, k);
public int getPlacedData(World world, int i, int j, int k, int l, float f, float f1, float f2, int i1) {
int j1 = i1 & 8;
int k1 = i1 & 7;
i1 &= 7;
i1 = -1;
if (l == 0 && world.s(i, j + 1, k)) {
i1 = world.random.nextBoolean() ? 0 : 7;
k1 = -1;
if (l == 0 && world.t(i, j + 1, k)) {
k1 = world.random.nextBoolean() ? 0 : 7;
}
if (l == 1 && world.t(i, j - 1, k)) {
i1 = 5 + world.random.nextInt(2);
if (l == 1 && world.v(i, j - 1, k)) {
k1 = 5 + world.random.nextInt(2);
}
if (l == 2 && world.s(i, j, k + 1)) {
i1 = 4;
if (l == 2 && world.t(i, j, k + 1)) {
k1 = 4;
}
if (l == 3 && world.s(i, j, k - 1)) {
i1 = 3;
if (l == 3 && world.t(i, j, k - 1)) {
k1 = 3;
}
if (l == 4 && world.s(i + 1, j, k)) {
i1 = 2;
if (l == 4 && world.t(i + 1, j, k)) {
k1 = 2;
}
if (l == 5 && world.s(i - 1, j, k)) {
i1 = 1;
if (l == 5 && world.t(i - 1, j, k)) {
k1 = 1;
}
if (i1 == -1) {
this.c(world, i, j, k, world.getData(i, j, k), 0);
world.setTypeId(i, j, k, 0);
} else {
world.setData(i, j, k, i1 + j1);
}
return k1 + j1;
}
public static int d(int i) {
@ -101,35 +95,35 @@ public class BlockLever extends Block {
int i1 = world.getData(i, j, k) & 7;
boolean flag = false;
if (!world.s(i - 1, j, k) && i1 == 1) {
if (!world.t(i - 1, j, k) && i1 == 1) {
flag = true;
}
if (!world.s(i + 1, j, k) && i1 == 2) {
if (!world.t(i + 1, j, k) && i1 == 2) {
flag = true;
}
if (!world.s(i, j, k - 1) && i1 == 3) {
if (!world.t(i, j, k - 1) && i1 == 3) {
flag = true;
}
if (!world.s(i, j, k + 1) && i1 == 4) {
if (!world.t(i, j, k + 1) && i1 == 4) {
flag = true;
}
if (!world.t(i, j - 1, k) && i1 == 5) {
if (!world.v(i, j - 1, k) && i1 == 5) {
flag = true;
}
if (!world.t(i, j - 1, k) && i1 == 6) {
if (!world.v(i, j - 1, k) && i1 == 6) {
flag = true;
}
if (!world.s(i, j + 1, k) && i1 == 0) {
if (!world.t(i, j + 1, k) && i1 == 0) {
flag = true;
}
if (!world.s(i, j + 1, k) && i1 == 7) {
if (!world.t(i, j + 1, k) && i1 == 7) {
flag = true;
}

Datei anzeigen

@ -89,7 +89,7 @@ public class BlockMushroom extends BlockFlower {
if (j >= 0 && j < 256) {
int l = world.getTypeId(i, j - 1, k);
return l == Block.MYCEL.id || world.k(i, j, k) < 13 && this.d_(l);
return l == Block.MYCEL.id || world.l(i, j, k) < 13 && this.d_(l);
} else {
return false;
}

Datei anzeigen

@ -51,7 +51,7 @@ public class BlockNetherWart extends BlockFlower {
}
for (int k1 = 0; k1 < j1; ++k1) {
this.a(world, i, j, k, new ItemStack(Item.NETHER_STALK));
this.b(world, i, j, k, new ItemStack(Item.NETHER_STALK));
}
}
}

Datei anzeigen

@ -68,7 +68,7 @@ public class BlockPiston extends Block {
if (flag && !f(l)) {
// CraftBukkit start
int length = h(world, i, j, k, i1);
int length = i(world, i, j, k, i1);
if (length >= 0) {
org.bukkit.block.Block block = world.getWorld().getBlockAt(i, j, k);
BlockPistonExtendEvent event = new BlockPistonExtendEvent(block, length, CraftBlock.notchToBlockFace(i1));
@ -109,7 +109,7 @@ public class BlockPiston extends Block {
}
if (l == 0) {
if (this.i(world, i, j, k, i1)) {
if (this.j(world, i, j, k, i1)) {
world.setData(i, j, k, i1 | 8);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "tile.piston.out", 0.5F, world.random.nextFloat() * 0.25F + 0.6F);
} else {
@ -268,7 +268,7 @@ public class BlockPiston extends Block {
}
// CraftBukkit - boolean -> int return
private static int h(World world, int i, int j, int k, int l) {
private static int i(World world, int i, int j, int k, int l) {
int i1 = i + Facing.b[l];
int j1 = j + Facing.c[l];
int k1 = k + Facing.d[l];
@ -305,7 +305,7 @@ public class BlockPiston extends Block {
}
}
private boolean i(World world, int i, int j, int k, int l) {
private boolean j(World world, int i, int j, int k, int l) {
int i1 = i + Facing.b[l];
int j1 = j + Facing.c[l];
int k1 = k + Facing.d[l];

Datei anzeigen

@ -19,15 +19,15 @@ public class BlockPortal extends BlockHalfTransparant {
if (world.worldProvider.d() && random.nextInt(2000) < world.difficulty) {
int l;
for (l = j; !world.t(i, l, k) && l > 0; --l) {
for (l = j; !world.v(i, l, k) && l > 0; --l) {
;
}
if (l > 0 && !world.s(i, l + 1, k)) {
if (l > 0 && !world.t(i, l + 1, k)) {
Entity entity = ItemMonsterEgg.a(world, 57, (double) i + 0.5D, (double) l + 1.1D, (double) k + 0.5D);
if (entity != null) {
entity.an = entity.ab();
entity.portalCooldown = entity.ab();
}
}
}

Datei anzeigen

@ -44,13 +44,13 @@ public class BlockPressurePlate extends Block {
}
public boolean canPlace(World world, int i, int j, int k) {
return world.t(i, j - 1, k) || BlockFence.c(world.getTypeId(i, j - 1, k));
return world.v(i, j - 1, k) || BlockFence.c(world.getTypeId(i, j - 1, k));
}
public void doPhysics(World world, int i, int j, int k, int l) {
boolean flag = false;
if (!world.t(i, j - 1, k) && !BlockFence.c(world.getTypeId(i, j - 1, k))) {
if (!world.v(i, j - 1, k) && !BlockFence.c(world.getTypeId(i, j - 1, k))) {
flag = true;
}

Datei anzeigen

@ -101,7 +101,7 @@ public class BlockPumpkin extends BlockDirectional {
public boolean canPlace(World world, int i, int j, int k) {
int l = world.getTypeId(i, j, k);
return (l == 0 || Block.byId[l].material.isReplaceable()) && world.t(i, j - 1, k);
return (l == 0 || Block.byId[l].material.isReplaceable()) && world.v(i, j - 1, k);
}
public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {

Datei anzeigen

@ -105,27 +105,27 @@ public class BlockRedstoneOre extends Block {
double d2 = (double) ((float) j + random.nextFloat());
double d3 = (double) ((float) k + random.nextFloat());
if (l == 0 && !world.r(i, j + 1, k)) {
if (l == 0 && !world.s(i, j + 1, k)) {
d2 = (double) (j + 1) + d0;
}
if (l == 1 && !world.r(i, j - 1, k)) {
if (l == 1 && !world.s(i, j - 1, k)) {
d2 = (double) (j + 0) - d0;
}
if (l == 2 && !world.r(i, j, k + 1)) {
if (l == 2 && !world.s(i, j, k + 1)) {
d3 = (double) (k + 1) + d0;
}
if (l == 3 && !world.r(i, j, k - 1)) {
if (l == 3 && !world.s(i, j, k - 1)) {
d3 = (double) (k + 0) - d0;
}
if (l == 4 && !world.r(i + 1, j, k)) {
if (l == 4 && !world.s(i + 1, j, k)) {
d1 = (double) (i + 1) + d0;
}
if (l == 5 && !world.r(i - 1, j, k)) {
if (l == 5 && !world.s(i - 1, j, k)) {
d1 = (double) (i + 0) - d0;
}

Datei anzeigen

@ -2,7 +2,6 @@ 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;
@ -23,15 +22,16 @@ public class BlockRedstoneTorch extends BlockTorch {
b.put(world, new ArrayList());
}
List list = (List) b.get(world);
if (flag) {
((List) b.get(world)).add(new RedstoneUpdateInfo(i, j, k, world.getTime()));
list.add(new RedstoneUpdateInfo(i, j, k, world.getTime()));
}
int l = 0;
Iterator iterator = ((List) b.get(world)).iterator();
while (iterator.hasNext()) {
RedstoneUpdateInfo redstoneupdateinfo = (RedstoneUpdateInfo) iterator.next();
for (int i1 = 0; i1 < list.size(); ++i1) {
RedstoneUpdateInfo redstoneupdateinfo = (RedstoneUpdateInfo) list.get(i1);
if (redstoneupdateinfo.a == i && redstoneupdateinfo.b == j && redstoneupdateinfo.c == k) {
++l;

Datei anzeigen

@ -2,7 +2,6 @@ package net.minecraft.server;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
@ -39,7 +38,7 @@ public class BlockRedstoneWire extends Block {
}
public boolean canPlace(World world, int i, int j, int k) {
return world.t(i, j - 1, k) || world.getTypeId(i, j - 1, k) == Block.GLOWSTONE.id;
return world.v(i, j - 1, k) || world.getTypeId(i, j - 1, k) == Block.GLOWSTONE.id;
}
private void l(World world, int i, int j, int k) {
@ -47,10 +46,9 @@ public class BlockRedstoneWire extends Block {
ArrayList arraylist = new ArrayList(this.b);
this.b.clear();
Iterator iterator = arraylist.iterator();
while (iterator.hasNext()) {
ChunkPosition chunkposition = (ChunkPosition) iterator.next();
for (int l = 0; l < arraylist.size(); ++l) {
ChunkPosition chunkposition = (ChunkPosition) arraylist.get(l);
world.applyPhysics(chunkposition.x, chunkposition.y, chunkposition.z, this.id);
}
@ -94,11 +92,11 @@ public class BlockRedstoneWire extends Block {
l1 = this.getPower(world, j2, j, k2, l1);
}
if (world.s(j2, j, k2) && !world.s(i, j + 1, k)) {
if (world.t(j2, j, k2) && !world.t(i, j + 1, k)) {
if (j2 != l || j + 1 != i1 || k2 != j1) {
l1 = this.getPower(world, j2, j + 1, k2, l1);
}
} else if (!world.s(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) {
} else if (!world.t(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) {
l1 = this.getPower(world, j2, j - 1, k2, l1);
}
}
@ -146,7 +144,7 @@ public class BlockRedstoneWire extends Block {
++k2;
}
if (world.s(j2, j, k2)) {
if (world.t(j2, j, k2)) {
l2 += 2;
}
@ -208,25 +206,25 @@ public class BlockRedstoneWire extends Block {
this.n(world, i + 1, j, k);
this.n(world, i, j, k - 1);
this.n(world, i, j, k + 1);
if (world.s(i - 1, j, k)) {
if (world.t(i - 1, j, k)) {
this.n(world, i - 1, j + 1, k);
} else {
this.n(world, i - 1, j - 1, k);
}
if (world.s(i + 1, j, k)) {
if (world.t(i + 1, j, k)) {
this.n(world, i + 1, j + 1, k);
} else {
this.n(world, i + 1, j - 1, k);
}
if (world.s(i, j, k - 1)) {
if (world.t(i, j, k - 1)) {
this.n(world, i, j + 1, k - 1);
} else {
this.n(world, i, j - 1, k - 1);
}
if (world.s(i, j, k + 1)) {
if (world.t(i, j, k + 1)) {
this.n(world, i, j + 1, k + 1);
} else {
this.n(world, i, j - 1, k + 1);
@ -248,25 +246,25 @@ public class BlockRedstoneWire extends Block {
this.n(world, i + 1, j, k);
this.n(world, i, j, k - 1);
this.n(world, i, j, k + 1);
if (world.s(i - 1, j, k)) {
if (world.t(i - 1, j, k)) {
this.n(world, i - 1, j + 1, k);
} else {
this.n(world, i - 1, j - 1, k);
}
if (world.s(i + 1, j, k)) {
if (world.t(i + 1, j, k)) {
this.n(world, i + 1, j + 1, k);
} else {
this.n(world, i + 1, j - 1, k);
}
if (world.s(i, j, k - 1)) {
if (world.t(i, j, k - 1)) {
this.n(world, i, j + 1, k - 1);
} else {
this.n(world, i, j - 1, k - 1);
}
if (world.s(i, j, k + 1)) {
if (world.t(i, j, k + 1)) {
this.n(world, i, j + 1, k + 1);
} else {
this.n(world, i, j - 1, k + 1);
@ -317,25 +315,25 @@ public class BlockRedstoneWire extends Block {
} else if (l == 1) {
return true;
} else {
boolean flag = g(iblockaccess, i - 1, j, k, 1) || !iblockaccess.s(i - 1, j, k) && g(iblockaccess, i - 1, j - 1, k, -1);
boolean flag1 = g(iblockaccess, i + 1, j, k, 3) || !iblockaccess.s(i + 1, j, k) && g(iblockaccess, i + 1, j - 1, k, -1);
boolean flag2 = g(iblockaccess, i, j, k - 1, 2) || !iblockaccess.s(i, j, k - 1) && g(iblockaccess, i, j - 1, k - 1, -1);
boolean flag3 = g(iblockaccess, i, j, k + 1, 0) || !iblockaccess.s(i, j, k + 1) && g(iblockaccess, i, j - 1, k + 1, -1);
boolean flag = g(iblockaccess, i - 1, j, k, 1) || !iblockaccess.t(i - 1, j, k) && g(iblockaccess, i - 1, j - 1, k, -1);
boolean flag1 = g(iblockaccess, i + 1, j, k, 3) || !iblockaccess.t(i + 1, j, k) && g(iblockaccess, i + 1, j - 1, k, -1);
boolean flag2 = g(iblockaccess, i, j, k - 1, 2) || !iblockaccess.t(i, j, k - 1) && g(iblockaccess, i, j - 1, k - 1, -1);
boolean flag3 = g(iblockaccess, i, j, k + 1, 0) || !iblockaccess.t(i, j, k + 1) && g(iblockaccess, i, j - 1, k + 1, -1);
if (!iblockaccess.s(i, j + 1, k)) {
if (iblockaccess.s(i - 1, j, k) && g(iblockaccess, i - 1, j + 1, k, -1)) {
if (!iblockaccess.t(i, j + 1, k)) {
if (iblockaccess.t(i - 1, j, k) && g(iblockaccess, i - 1, j + 1, k, -1)) {
flag = true;
}
if (iblockaccess.s(i + 1, j, k) && g(iblockaccess, i + 1, j + 1, k, -1)) {
if (iblockaccess.t(i + 1, j, k) && g(iblockaccess, i + 1, j + 1, k, -1)) {
flag1 = true;
}
if (iblockaccess.s(i, j, k - 1) && g(iblockaccess, i, j + 1, k - 1, -1)) {
if (iblockaccess.t(i, j, k - 1) && g(iblockaccess, i, j + 1, k - 1, -1)) {
flag2 = true;
}
if (iblockaccess.s(i, j, k + 1) && g(iblockaccess, i, j + 1, k + 1, -1)) {
if (iblockaccess.t(i, j, k + 1) && g(iblockaccess, i, j + 1, k + 1, -1)) {
flag3 = true;
}
}

Datei anzeigen

@ -57,7 +57,7 @@ public class BlockSand extends Block {
protected void a(EntityFallingBlock entityfallingblock) {}
public int r_() {
return 3;
return 5;
}
public static boolean canFall(World world, int i, int j, int k) {

Datei anzeigen

@ -71,7 +71,7 @@ public class BlockSkull extends BlockContainer {
public int getDropData(World world, int i, int j, int k) {
TileEntity tileentity = world.getTileEntity(i, j, k);
return tileentity != null && tileentity instanceof TileEntitySkull ? ((TileEntitySkull) tileentity).a() : super.getDropData(world, i, j, k);
return tileentity != null && tileentity instanceof TileEntitySkull ? ((TileEntitySkull) tileentity).getSkullType() : super.getDropData(world, i, j, k);
}
public int getDropData(int i) {
@ -94,7 +94,15 @@ public class BlockSkull extends BlockContainer {
if (!world.isStatic) {
/* CraftBukkit start - don't special code dropping the item
if ((i1 & 8) == 0) {
this.a(world, i, j, k, new ItemStack(Item.SKULL.id, 1, this.getDropData(world, i, j, k)));
ItemStack itemstack = new ItemStack(Item.SKULL.id, 1, this.getDropData(world, i, j, k));
TileEntitySkull tileentityskull = (TileEntitySkull) world.getTileEntity(i, j, k);
if (tileentityskull.getSkullType() == 3 && tileentityskull.getExtraType() != null && tileentityskull.getExtraType().length() > 0) {
itemstack.setTag(new NBTTagCompound());
itemstack.getTag().setString("SkullOwner", tileentityskull.getExtraType());
}
this.b(world, i, j, k, itemstack);
}
// CraftBukkit end */
@ -107,7 +115,7 @@ public class BlockSkull extends BlockContainer {
}
public void a(World world, int i, int j, int k, TileEntitySkull tileentityskull) {
if (tileentityskull.a() == 1 && j >= 2) {
if (tileentityskull.getSkullType() == 1 && j >= 2 && world.difficulty > 0) {
int l = Block.SOUL_SAND.id;
int i1;
@ -195,7 +203,7 @@ public class BlockSkull extends BlockContainer {
} else {
TileEntity tileentity = world.getTileEntity(i, j, k);
return tileentity != null && tileentity instanceof TileEntitySkull ? ((TileEntitySkull) tileentity).a() == l : false;
return tileentity != null && tileentity instanceof TileEntitySkull ? ((TileEntitySkull) tileentity).getSkullType() == l : false;
}
}
}

Datei anzeigen

@ -56,7 +56,7 @@ public class BlockSnow extends Block {
public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) {
int i1 = Item.SNOW_BALL.id;
this.a(world, i, j, k, new ItemStack(i1, 1, 0));
this.b(world, i, j, k, new ItemStack(i1, 1, 0));
world.setTypeId(i, j, k, 0);
entityhuman.a(StatisticList.C[this.id], 1);
}

Datei anzeigen

@ -31,7 +31,7 @@ public class BlockSoil extends Block {
}
public void b(World world, int i, int j, int k, Random random) {
if (!this.n(world, i, j, k) && !world.B(i, j + 1, k)) {
if (!this.n(world, i, j, k) && !world.D(i, j + 1, k)) {
int l = world.getData(i, j, k);
if (l > 0) {
@ -71,7 +71,7 @@ public class BlockSoil extends Block {
for (int i1 = k - b0; i1 <= k + b0; ++i1) {
int j1 = world.getTypeId(l, j + 1, i1);
if (j1 == Block.CROPS.id || j1 == Block.MELON_STEM.id || j1 == Block.PUMPKIN_STEM.id) {
if (j1 == Block.CROPS.id || j1 == Block.MELON_STEM.id || j1 == Block.PUMPKIN_STEM.id || j1 == Block.POTATOES.id || j1 == Block.CARROTS.id) {
return true;
}
}

Datei anzeigen

@ -161,7 +161,7 @@ public class BlockStem extends BlockFlower {
for (int j1 = 0; j1 < 3; ++j1) {
if (world.random.nextInt(15) <= l) {
this.a(world, i, j, k, new ItemStack(item));
this.b(world, i, j, k, new ItemStack(item));
}
}
}

Datei anzeigen

@ -53,7 +53,7 @@ public class BlockTNT extends Block {
}
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman, int l, float f, float f1, float f2) {
if (entityhuman.bP() != null && entityhuman.bP().id == Item.FLINT_AND_STEEL.id) {
if (entityhuman.bT() != null && entityhuman.bT().id == Item.FLINT_AND_STEEL.id) {
this.postBreak(world, i, j, k, 1);
world.setTypeId(i, j, k, 0);
return true;
@ -72,4 +72,8 @@ public class BlockTNT extends Block {
}
}
}
public boolean a(Explosion explosion) {
return false;
}
}

Datei anzeigen

@ -152,33 +152,30 @@ public class BlockTrapdoor extends Block {
return super.a(world, i, j, k, vec3d, vec3d1);
}
public void postPlace(World world, int i, int j, int k, int l, float f, float f1, float f2) {
int i1 = 0;
public int getPlacedData(World world, int i, int j, int k, int l, float f, float f1, float f2, int i1) {
int j1 = 0;
if (l == 2) {
i1 = 0;
j1 = 0;
}
if (l == 3) {
i1 = 1;
j1 = 1;
}
if (l == 4) {
i1 = 2;
j1 = 2;
}
if (l == 5) {
i1 = 3;
j1 = 3;
}
int j1 = Block.TRAP_DOOR.id;
if (l != 1 && l != 0 && f1 > 0.5F) {
i1 |= 8;
j1 |= 8;
}
world.setTypeIdAndData(i, j, k, j1, i1);
doPhysics(world, i, j, k, Block.REDSTONE_WIRE.id); // CraftBukkit
return j1;
}
public boolean canPlace(World world, int i, int j, int k, int l) {
@ -217,7 +214,7 @@ public class BlockTrapdoor extends Block {
} else {
Block block = Block.byId[i];
return block != null && block.material.k() && block.b() || block == Block.GLOWSTONE;
return block != null && block.material.k() && block.b() || block == Block.GLOWSTONE || block instanceof BlockStepAbstract || block instanceof BlockStairs;
}
}
}

Datei anzeigen

@ -41,7 +41,7 @@ public class BlockTripwire extends Block {
public void doPhysics(World world, int i, int j, int k, int l) {
int i1 = world.getData(i, j, k);
boolean flag = (i1 & 2) == 2;
boolean flag1 = !world.t(i, j - 1, k);
boolean flag1 = !world.v(i, j - 1, k);
if (flag != flag1) {
this.c(world, i, j, k, i1, 0);
@ -64,7 +64,7 @@ public class BlockTripwire extends Block {
}
public void onPlace(World world, int i, int j, int k) {
int l = world.t(i, j - 1, k) ? 0 : 2;
int l = world.v(i, j - 1, k) ? 0 : 2;
world.setData(i, j, k, l);
this.d(world, i, j, k, l);
@ -76,7 +76,7 @@ public class BlockTripwire extends Block {
public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) {
if (!world.isStatic) {
if (entityhuman.bP() != null && entityhuman.bP().id == Item.SHEARS.id) {
if (entityhuman.bT() != null && entityhuman.bT().id == Item.SHEARS.id) {
world.setData(i, j, k, l | 8);
}
}

Datei anzeigen

@ -33,14 +33,14 @@ public class BlockTripwireHook extends Block {
}
public boolean canPlace(World world, int i, int j, int k, int l) {
return l == 2 && world.s(i, j, k + 1) ? true : (l == 3 && world.s(i, j, k - 1) ? true : (l == 4 && world.s(i + 1, j, k) ? true : l == 5 && world.s(i - 1, j, k)));
return l == 2 && world.t(i, j, k + 1) ? true : (l == 3 && world.t(i, j, k - 1) ? true : (l == 4 && world.t(i + 1, j, k) ? true : l == 5 && world.t(i - 1, j, k)));
}
public boolean canPlace(World world, int i, int j, int k) {
return world.s(i - 1, j, k) ? true : (world.s(i + 1, j, k) ? true : (world.s(i, j, k - 1) ? true : world.s(i, j, k + 1)));
return world.t(i - 1, j, k) ? true : (world.t(i + 1, j, k) ? true : (world.t(i, j, k - 1) ? true : world.t(i, j, k + 1)));
}
public void postPlace(World world, int i, int j, int k, int l, float f, float f1, float f2) {
public int getPlacedData(World world, int i, int j, int k, int l, float f, float f1, float f2, int i1) {
byte b0 = 0;
if (l == 2 && world.b(i, j, k + 1, true)) {
@ -59,7 +59,11 @@ public class BlockTripwireHook extends Block {
b0 = 3;
}
this.a(world, i, j, k, this.id, b0, false, -1, 0);
return b0;
}
public void postPlace(World world, int i, int j, int k, int l) {
this.a(world, i, j, k, this.id, l, false, -1, 0);
}
public void doPhysics(World world, int i, int j, int k, int l) {
@ -69,19 +73,19 @@ public class BlockTripwireHook extends Block {
int j1 = i1 & 3;
boolean flag = false;
if (!world.s(i - 1, j, k) && j1 == 3) {
if (!world.t(i - 1, j, k) && j1 == 3) {
flag = true;
}
if (!world.s(i + 1, j, k) && j1 == 1) {
if (!world.t(i + 1, j, k) && j1 == 1) {
flag = true;
}
if (!world.s(i, j, k - 1) && j1 == 0) {
if (!world.t(i, j, k - 1) && j1 == 0) {
flag = true;
}
if (!world.s(i, j, k + 1) && j1 == 2) {
if (!world.t(i, j, k + 1) && j1 == 2) {
flag = true;
}
@ -99,7 +103,7 @@ public class BlockTripwireHook extends Block {
boolean flag2 = (i1 & 8) == 8;
boolean flag3 = l == Block.TRIPWIRE_SOURCE.id;
boolean flag4 = false;
boolean flag5 = !world.t(i, j - 1, k);
boolean flag5 = !world.v(i, j - 1, k);
int i2 = Direction.a[l1];
int j2 = Direction.b[l1];
int k2 = 0;

Datei anzeigen

@ -159,7 +159,7 @@ public class Chunk {
if (chunksection != null) {
chunksection.c(j, i1 & 15, k, l);
this.world.n((this.x << 4) + j, i1, (this.z << 4) + k);
this.world.o((this.x << 4) + j, i1, (this.z << 4) + k);
}
}
@ -277,7 +277,7 @@ public class Chunk {
chunksection = this.sections[l1 >> 4];
if (chunksection != null) {
chunksection.c(i, l1 & 15, k, 15);
this.world.n((this.x << 4) + i, l1, (this.z << 4) + k);
this.world.o((this.x << 4) + i, l1, (this.z << 4) + k);
}
}
} else {
@ -285,7 +285,7 @@ public class Chunk {
chunksection = this.sections[l1 >> 4];
if (chunksection != null) {
chunksection.c(i, l1 & 15, k, 0);
this.world.n((this.x << 4) + i, l1, (this.z << 4) + k);
this.world.o((this.x << 4) + i, l1, (this.z << 4) + k);
}
}
}
@ -395,7 +395,7 @@ public class Chunk {
int k2 = this.z * 16 + k;
if (l1 != 0 && !this.world.isStatic) {
Block.byId[l1].g(this.world, j2, j, k2, i2);
Block.byId[l1].h(this.world, j2, j, k2, i2);
}
chunksection.a(i, j & 15, k, l);
@ -403,7 +403,7 @@ public class Chunk {
if (!this.world.isStatic) {
Block.byId[l1].remove(this.world, j2, j, k2, l1, i2);
} else if (Block.byId[l1] instanceof BlockContainer && l1 != l) {
this.world.q(j2, j, k2);
this.world.r(j2, j, k2);
}
}
@ -659,13 +659,9 @@ public class Chunk {
public void addEntities() {
this.d = true;
this.world.a(this.tileEntities.values());
List[] alist = this.entitySlices;
int i = alist.length;
for (int j = 0; j < i; ++j) {
List list = alist[j];
this.world.a(list);
for (int i = 0; i < this.entitySlices.length; ++i) {
this.world.a(this.entitySlices[i]);
}
}
@ -679,12 +675,9 @@ public class Chunk {
this.world.a(tileentity);
}
List[] alist = this.entitySlices;
int i = alist.length;
for (int j = 0; j < i; ++j) {
for (int i = 0; i < this.entitySlices.length; ++i) {
// CraftBukkit start
java.util.Iterator<Object> iter = this.entitySlices[j].iterator();
java.util.Iterator<Object> iter = this.entitySlices[i].iterator();
while (iter.hasNext()) {
Entity entity = (Entity) iter.next();
int cx = Location.locToBlock(entity.locX) >> 4;
@ -698,9 +691,7 @@ public class Chunk {
}
// CraftBukkit end
List list = alist[j];
this.world.b(list);
this.world.b(this.entitySlices[i]);
}
}
@ -722,18 +713,17 @@ public class Chunk {
for (int k = i; k <= j; ++k) {
List list1 = this.entitySlices[k];
Iterator iterator = list1.iterator();
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (int l = 0; l < list1.size(); ++l) {
Entity entity1 = (Entity) list1.get(l);
if (entity1 != entity && entity1.boundingBox.a(axisalignedbb)) {
list.add(entity1);
Entity[] aentity = entity1.ao();
if (aentity != null) {
for (int l = 0; l < aentity.length; ++l) {
entity1 = aentity[l];
for (int i1 = 0; i1 < aentity.length; ++i1) {
entity1 = aentity[i1];
if (entity1 != entity && entity1.boundingBox.a(axisalignedbb)) {
list.add(entity1);
}
@ -762,10 +752,9 @@ public class Chunk {
for (int k = i; k <= j; ++k) {
List list1 = this.entitySlices[k];
Iterator iterator = list1.iterator();
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
for (int l = 0; l < list1.size(); ++l) {
Entity entity = (Entity) list1.get(l);
if (oclass.isAssignableFrom(entity.getClass()) && entity.boundingBox.a(axisalignedbb) && (ientityselector == null || ientityselector.a(entity))) {
list.add(entity);
@ -916,30 +905,30 @@ public class Chunk {
if (this.sections[j] == null && (k1 == 0 || k1 == 15 || k == 0 || k == 15 || l == 0 || l == 15) || this.sections[j] != null && this.sections[j].a(k, k1, l) == 0) {
if (Block.lightEmission[this.world.getTypeId(i1, l1 - 1, j1)] > 0) {
this.world.x(i1, l1 - 1, j1);
this.world.z(i1, l1 - 1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1 + 1, j1)] > 0) {
this.world.x(i1, l1 + 1, j1);
this.world.z(i1, l1 + 1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1 - 1, l1, j1)] > 0) {
this.world.x(i1 - 1, l1, j1);
this.world.z(i1 - 1, l1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1 + 1, l1, j1)] > 0) {
this.world.x(i1 + 1, l1, j1);
this.world.z(i1 + 1, l1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1, j1 - 1)] > 0) {
this.world.x(i1, l1, j1 - 1);
this.world.z(i1, l1, j1 - 1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1, j1 + 1)] > 0) {
this.world.x(i1, l1, j1 + 1);
this.world.z(i1, l1, j1 + 1);
}
this.world.x(i1, l1, j1);
this.world.z(i1, l1, j1);
}
}
}

Datei anzeigen

@ -92,7 +92,17 @@ public class ChunkProviderServer implements IChunkProvider {
if (this.chunkProvider == null) {
chunk = this.emptyChunk;
} else {
chunk = this.chunkProvider.getOrCreateChunk(i, j);
try {
chunk = this.chunkProvider.getOrCreateChunk(i, j);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Exception generating new chunk");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Chunk to be generated");
crashreportsystemdetails.a("Location", String.format("%d,%d", new Object[] { Integer.valueOf(i), Integer.valueOf(j)}));
crashreportsystemdetails.a("Position hash", Long.valueOf(LongHash.toLong(i, j)));
crashreportsystemdetails.a("Generator", this.chunkProvider.getName());
throw new ReportedException(crashreport);
}
}
newChunk = true; // CraftBukkit
}
@ -218,10 +228,12 @@ public class ChunkProviderServer implements IChunkProvider {
public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) {
int i = 0;
Iterator iterator = this.chunks.values().iterator(); // CraftBukkit
// CraftBukkit start
Iterator iterator = this.chunks.values().iterator();
while (iterator.hasNext()) {
Chunk chunk = (Chunk) iterator.next();
// CraftBukkit end
if (flag) {
this.saveChunkNOP(chunk);

Datei anzeigen

@ -29,13 +29,9 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
synchronized (this.c) {
if (this.b.contains(chunkcoordintpair)) {
Iterator iterator = this.a.iterator();
while (iterator.hasNext()) {
PendingChunkToSave pendingchunktosave = (PendingChunkToSave) iterator.next();
if (pendingchunktosave.a.equals(chunkcoordintpair)) {
nbttagcompound = pendingchunktosave.b;
for (int k = 0; k < this.a.size(); ++k) {
if (((PendingChunkToSave) this.a.get(k)).a.equals(chunkcoordintpair)) {
nbttagcompound = ((PendingChunkToSave) this.a.get(k)).b;
break;
}
}
@ -79,7 +75,7 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
public void a(World world, Chunk chunk) {
// CraftBukkit start - "handle" exception
try {
world.C();
world.D();
} catch (ExceptionWorldConflict ex) {
ex.printStackTrace();
}

Datei anzeigen

@ -2,7 +2,6 @@ package net.minecraft.server;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@ -13,10 +12,10 @@ import org.bukkit.inventory.InventoryView;
public abstract class Container {
public List a = new ArrayList();
public List b = new ArrayList();
public List c = new ArrayList();
public int windowId = 0;
private short e = 0;
private short a = 0;
protected List listeners = new ArrayList();
private Set f = new HashSet();
@ -35,9 +34,9 @@ public abstract class Container {
public Container() {}
protected Slot a(Slot slot) {
slot.g = this.b.size();
this.b.add(slot);
this.a.add(null);
slot.g = this.c.size();
this.c.add(slot);
this.b.add(null);
return slot;
}
@ -53,31 +52,25 @@ public abstract class Container {
public List a() {
ArrayList arraylist = new ArrayList();
Iterator iterator = this.b.iterator();
while (iterator.hasNext()) {
Slot slot = (Slot) iterator.next();
arraylist.add(slot.getItem());
for (int i = 0; i < this.c.size(); ++i) {
arraylist.add(((Slot) this.c.get(i)).getItem());
}
return arraylist;
}
public void b() {
for (int i = 0; i < this.b.size(); ++i) {
ItemStack itemstack = ((Slot) this.b.get(i)).getItem();
ItemStack itemstack1 = (ItemStack) this.a.get(i);
for (int i = 0; i < this.c.size(); ++i) {
ItemStack itemstack = ((Slot) this.c.get(i)).getItem();
ItemStack itemstack1 = (ItemStack) this.b.get(i);
if (!ItemStack.matches(itemstack1, itemstack)) {
itemstack1 = itemstack == null ? null : itemstack.cloneItemStack();
this.a.set(i, itemstack1);
Iterator iterator = this.listeners.iterator();
this.b.set(i, itemstack1);
while (iterator.hasNext()) {
ICrafting icrafting = (ICrafting) iterator.next();
icrafting.a(this, i, itemstack1);
for (int j = 0; j < this.listeners.size(); ++j) {
((ICrafting) this.listeners.get(j)).a(this, i, itemstack1);
}
}
}
@ -88,27 +81,23 @@ public abstract class Container {
}
public Slot a(IInventory iinventory, int i) {
Iterator iterator = this.b.iterator();
for (int j = 0; j < this.c.size(); ++j) {
Slot slot = (Slot) this.c.get(j);
Slot slot;
do {
if (!iterator.hasNext()) {
return null;
if (slot.a(iinventory, i)) {
return slot;
}
}
slot = (Slot) iterator.next();
} while (!slot.a(iinventory, i));
return slot;
return null;
}
public Slot getSlot(int i) {
return (Slot) this.b.get(i);
return (Slot) this.c.get(i);
}
public ItemStack b(EntityHuman entityhuman, int i) {
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
return slot != null ? slot.getItem() : null;
}
@ -143,7 +132,7 @@ public abstract class Container {
}
}
} else if (k == 1) {
slot = (Slot) this.b.get(i);
slot = (Slot) this.c.get(i);
if (slot != null && slot.a(entityhuman)) {
itemstack1 = this.b(entityhuman, i);
if (itemstack1 != null) {
@ -160,7 +149,7 @@ public abstract class Container {
return null;
}
slot = (Slot) this.b.get(i);
slot = (Slot) this.c.get(i);
if (slot != null) {
itemstack1 = slot.getItem();
ItemStack itemstack3 = playerinventory.getCarried();
@ -235,7 +224,7 @@ public abstract class Container {
}
}
} else if (k == 2 && j >= 0 && j < 9) {
slot = (Slot) this.b.get(i);
slot = (Slot) this.c.get(i);
if (slot.a(entityhuman)) {
itemstack1 = playerinventory.getItem(j);
boolean flag = itemstack1 == null || slot.inventory == playerinventory && slot.isAllowed(itemstack1);
@ -264,8 +253,8 @@ public abstract class Container {
slot.set(itemstack1);
}
}
} else if (k == 3 && entityhuman.abilities.canInstantlyBuild && playerinventory.getCarried() == null && i > 0) {
slot = (Slot) this.b.get(i);
} else if (k == 3 && entityhuman.abilities.canInstantlyBuild && playerinventory.getCarried() == null && i >= 0) {
slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
itemstack1 = slot.getItem().cloneItemStack();
itemstack1.count = itemstack1.getMaxStackSize();
@ -280,7 +269,7 @@ public abstract class Container {
this.clickItem(i, j, 1, entityhuman);
}
public void a(EntityHuman entityhuman) {
public void b(EntityHuman entityhuman) {
PlayerInventory playerinventory = entityhuman.inventory;
if (playerinventory.getCarried() != null) {
@ -297,7 +286,7 @@ public abstract class Container {
this.getSlot(i).set(itemstack);
}
public boolean b(EntityHuman entityhuman) {
public boolean c(EntityHuman entityhuman) {
return !this.f.contains(entityhuman);
}
@ -309,7 +298,7 @@ public abstract class Container {
}
}
public abstract boolean c(EntityHuman entityhuman);
public abstract boolean a(EntityHuman entityhuman);
protected boolean a(ItemStack itemstack, int i, int j, boolean flag) {
boolean flag1 = false;
@ -324,7 +313,7 @@ public abstract class Container {
if (itemstack.isStackable()) {
while (itemstack.count > 0 && (!flag && k < j || flag && k >= i)) {
slot = (Slot) this.b.get(k);
slot = (Slot) this.c.get(k);
itemstack1 = slot.getItem();
if (itemstack1 != null && itemstack1.id == itemstack.id && (!itemstack.usesData() || itemstack.getData() == itemstack1.getData()) && ItemStack.equals(itemstack, itemstack1)) {
int l = itemstack1.count + itemstack.count;
@ -358,7 +347,7 @@ public abstract class Container {
}
while (!flag && k < j || flag && k >= i) {
slot = (Slot) this.b.get(k);
slot = (Slot) this.c.get(k);
itemstack1 = slot.getItem();
if (itemstack1 == null) {
slot.set(itemstack.cloneItemStack());

Datei anzeigen

@ -17,7 +17,7 @@ public class ContainerAnvil extends Container {
private int i;
private int j;
private int k;
public int e = 0;
public int a = 0;
private int l = 0;
private String m;
private final EntityHuman n;
@ -60,14 +60,14 @@ public class ContainerAnvil extends Container {
public void d() {
ItemStack itemstack = this.g.getItem(0);
this.e = 0;
this.a = 0;
int i = 0;
byte b0 = 0;
int j = 0;
if (itemstack == null) {
this.f.setItem(0, (ItemStack) null);
this.e = 0;
this.a = 0;
} else {
ItemStack itemstack1 = itemstack.cloneItemStack();
ItemStack itemstack2 = this.g.getItem(1);
@ -87,7 +87,7 @@ public class ContainerAnvil extends Container {
l = Math.min(itemstack1.i(), itemstack1.k() / 4);
if (l <= 0) {
this.f.setItem(0, (ItemStack) null);
this.e = 0;
this.a = 0;
return;
}
@ -102,7 +102,7 @@ public class ContainerAnvil extends Container {
} else {
if (itemstack1.id != itemstack2.id || !itemstack1.f()) {
this.f.setItem(0, (ItemStack) null);
this.e = 0;
this.a = 0;
return;
}
@ -240,17 +240,17 @@ public class ContainerAnvil extends Container {
}
}
this.e = k + i;
this.a = k + i;
if (i <= 0) {
itemstack1 = null;
}
if (j == i && j > 0 && this.e >= 40) {
if (j == i && j > 0 && this.a >= 40) {
//System.out.println("Naming an item only, cost too high; giving discount to cap cost to 39 levels"); // CraftBukkit -remove debug
this.e = 39;
this.a = 39;
}
if (this.e >= 40 && !this.n.abilities.canInstantlyBuild) {
if (this.a >= 40 && !this.n.abilities.canInstantlyBuild) {
itemstack1 = null;
}
@ -261,7 +261,7 @@ public class ContainerAnvil extends Container {
}
if (itemstack1.s()) {
i1 -= 5;
i1 -= 9;
}
if (i1 < 0) {
@ -280,11 +280,11 @@ public class ContainerAnvil extends Container {
public void addSlotListener(ICrafting icrafting) {
super.addSlotListener(icrafting);
icrafting.setContainerData(this, 0, this.e);
icrafting.setContainerData(this, 0, this.a);
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
if (!this.h.isStatic) {
for (int i = 0; i < this.g.getSize(); ++i) {
ItemStack itemstack = this.g.splitWithoutUpdate(i);
@ -296,14 +296,14 @@ public class ContainerAnvil extends Container {
}
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.h.getTypeId(this.i, this.j, this.k) != Block.ANVIL.id ? false : entityhuman.e((double) this.i + 0.5D, (double) this.j + 0.5D, (double) this.k + 0.5D) <= 64.0D;
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();

Datei anzeigen

@ -8,7 +8,7 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView;
public class ContainerBeacon extends Container {
private TileEntityBeacon e;
private TileEntityBeacon a;
private final SlotBeacon f;
private int g;
private int h;
@ -20,7 +20,7 @@ public class ContainerBeacon extends Container {
public ContainerBeacon(PlayerInventory playerinventory, TileEntityBeacon tileentitybeacon) {
player = playerinventory; // CraftBukkit
this.e = tileentitybeacon;
this.a = tileentitybeacon;
this.a(this.f = new SlotBeacon(this, tileentitybeacon, 0, 136, 110));
byte b0 = 36;
short short1 = 137;
@ -54,17 +54,17 @@ public class ContainerBeacon extends Container {
}
public TileEntityBeacon d() {
return this.e;
return this.a;
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.e.a(entityhuman);
return this.a.a_(entityhuman);
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();
@ -114,7 +114,7 @@ public class ContainerBeacon extends Container {
return bukkitEntity;
}
CraftInventory inventory = new CraftInventoryBeacon(this.e);
CraftInventory inventory = new CraftInventoryBeacon(this.a);
bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), inventory, this);
return bukkitEntity;
}

Datei anzeigen

@ -1,7 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
// CraftBukkit start
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
@ -45,10 +43,9 @@ public class ContainerBrewingStand extends Container {
public void b() {
super.b();
Iterator iterator = this.listeners.iterator();
while (iterator.hasNext()) {
ICrafting icrafting = (ICrafting) iterator.next();
for (int i = 0; i < this.listeners.size(); ++i) {
ICrafting icrafting = (ICrafting) this.listeners.get(i);
if (this.g != this.brewingStand.x_()) {
icrafting.setContainerData(this, 0, this.brewingStand.x_());
@ -58,14 +55,14 @@ public class ContainerBrewingStand extends Container {
this.g = this.brewingStand.x_();
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.brewingStand.a(entityhuman);
return this.brewingStand.a_(entityhuman);
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();

Datei anzeigen

@ -62,21 +62,21 @@ public class ContainerChest extends Container {
}
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.container.a(entityhuman);
return this.container.a_(entityhuman);
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();
itemstack = itemstack1.cloneItemStack();
if (i < this.f * 9) {
if (!this.a(itemstack1, this.f * 9, this.b.size(), true)) {
if (!this.a(itemstack1, this.f * 9, this.c.size(), true)) {
return null;
}
} else if (!this.a(itemstack1, 0, this.f * 9, false)) {
@ -93,8 +93,12 @@ public class ContainerChest extends Container {
return itemstack;
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
this.container.f();
}
public IInventory d() {
return this.container;
}
}

Datei anzeigen

@ -40,14 +40,14 @@ public class ContainerDispenser extends Container {
}
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.items.a(entityhuman);
return this.items.a_(entityhuman);
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();

Datei anzeigen

@ -65,10 +65,9 @@ public class ContainerEnchantTable extends Container {
public void b() {
super.b();
Iterator iterator = this.listeners.iterator();
while (iterator.hasNext()) {
ICrafting icrafting = (ICrafting) iterator.next();
for (int i = 0; i < this.listeners.size(); ++i) {
ICrafting icrafting = (ICrafting) this.listeners.get(i);
icrafting.setContainerData(this, 0, this.costs[0]);
icrafting.setContainerData(this, 1, this.costs[1]);
@ -191,8 +190,8 @@ public class ContainerEnchantTable extends Container {
}
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
if (!this.world.isStatic) {
ItemStack itemstack = this.enchantSlots.splitWithoutUpdate(0);
@ -202,14 +201,14 @@ public class ContainerEnchantTable extends Container {
}
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.world.getTypeId(this.x, this.y, this.z) != Block.ENCHANTMENT_TABLE.id ? false : entityhuman.e((double) this.x + 0.5D, (double) this.y + 0.5D, (double) this.z + 0.5D) <= 64.0D;
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();
@ -220,15 +219,15 @@ public class ContainerEnchantTable extends Container {
return null;
}
} else {
if (((Slot) this.b.get(0)).d() || !((Slot) this.b.get(0)).isAllowed(itemstack1)) {
if (((Slot) this.c.get(0)).d() || !((Slot) this.c.get(0)).isAllowed(itemstack1)) {
return null;
}
if (itemstack1.hasTag() && itemstack1.count == 1) {
((Slot) this.b.get(0)).set(itemstack1.cloneItemStack());
((Slot) this.c.get(0)).set(itemstack1.cloneItemStack());
itemstack1.count = 0;
} else if (itemstack1.count >= 1) {
((Slot) this.b.get(0)).set(new ItemStack(itemstack1.id, 1, itemstack1.getData()));
((Slot) this.c.get(0)).set(new ItemStack(itemstack1.id, 1, itemstack1.getData()));
--itemstack1.count;
}
}

Datei anzeigen

@ -1,7 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
// CraftBukkit start
import org.bukkit.craftbukkit.inventory.CraftInventoryFurnace;
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
@ -58,10 +56,9 @@ public class ContainerFurnace extends Container {
public void b() {
super.b();
Iterator iterator = this.listeners.iterator();
while (iterator.hasNext()) {
ICrafting icrafting = (ICrafting) iterator.next();
for (int i = 0; i < this.listeners.size(); ++i) {
ICrafting icrafting = (ICrafting) this.listeners.get(i);
if (this.f != this.furnace.cookTime) {
icrafting.setContainerData(this, 0, this.furnace.cookTime);
@ -81,14 +78,14 @@ public class ContainerFurnace extends Container {
this.h = this.furnace.ticksForCurrentFuel;
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.furnace.a(entityhuman);
return this.furnace.a_(entityhuman);
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();

Datei anzeigen

@ -64,13 +64,13 @@ public class ContainerMerchant extends Container {
this.f.c(i);
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
return this.merchant.m_() == entityhuman;
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();
@ -110,10 +110,10 @@ public class ContainerMerchant extends Container {
return itemstack;
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
this.merchant.a_((EntityHuman) null);
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
this.merchant.b_((EntityHuman) null);
super.b(entityhuman);
if (!this.g.isStatic) {
ItemStack itemstack = this.f.splitWithoutUpdate(0);

Datei anzeigen

@ -65,8 +65,8 @@ public class ContainerPlayer extends Container {
// CraftBukkit end
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
for (int i = 0; i < 4; ++i) {
ItemStack itemstack = this.craftInventory.splitWithoutUpdate(i);
@ -79,13 +79,13 @@ public class ContainerPlayer extends Container {
this.resultInventory.setItem(0, (ItemStack) null);
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
return true;
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();
@ -105,7 +105,7 @@ public class ContainerPlayer extends Container {
if (!this.a(itemstack1, 9, 45, false)) {
return null;
}
} else if (itemstack.getItem() instanceof ItemArmor && !((Slot) this.b.get(5 + ((ItemArmor) itemstack.getItem()).a)).d()) {
} else if (itemstack.getItem() instanceof ItemArmor && !((Slot) this.c.get(5 + ((ItemArmor) itemstack.getItem()).a)).d()) {
int j = 5 + ((ItemArmor) itemstack.getItem()).a;
if (!this.a(itemstack1, j, j + 1, false)) {

Datei anzeigen

@ -67,8 +67,8 @@ public class ContainerWorkbench extends Container {
// CraftBukkit end
}
public void a(EntityHuman entityhuman) {
super.a(entityhuman);
public void b(EntityHuman entityhuman) {
super.b(entityhuman);
if (!this.g.isStatic) {
for (int i = 0; i < 9; ++i) {
ItemStack itemstack = this.craftInventory.splitWithoutUpdate(i);
@ -80,14 +80,14 @@ public class ContainerWorkbench extends Container {
}
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (!this.checkReachable) return true; // CraftBukkit
return this.g.getTypeId(this.h, this.i, this.j) != Block.WORKBENCH.id ? false : entityhuman.e((double) this.h + 0.5D, (double) this.i + 0.5D, (double) this.j + 0.5D) <= 64.0D;
}
public ItemStack b(EntityHuman entityhuman, int i) {
ItemStack itemstack = null;
Slot slot = (Slot) this.b.get(i);
Slot slot = (Slot) this.c.get(i);
if (slot != null && slot.d()) {
ItemStack itemstack1 = slot.getItem();

Datei anzeigen

@ -47,7 +47,7 @@ public class ControllerMove {
float f = (float) (org.bukkit.craftbukkit.TrigMath.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
this.a.yaw = this.a(this.a.yaw, f, 30.0F);
this.a.e(this.e * this.a.by());
this.a.e(this.e * this.a.bB());
if (d2 > 0.0D && d0 * d0 + d1 * d1 < 1.0D) {
this.a.getControllerJump().a();
}

Datei anzeigen

@ -3,7 +3,6 @@ package net.minecraft.server;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
@ -142,16 +141,12 @@ public class CraftingManager {
int i = 0;
int j = 0;
int k = 0;
int l;
if (aobject[i] instanceof String[]) {
String[] astring = (String[]) ((String[]) aobject[i++]);
String[] astring1 = astring;
l = astring.length;
for (int i1 = 0; i1 < l; ++i1) {
String s1 = astring1[i1];
for (int l = 0; l < astring.length; ++l) {
String s1 = astring[l];
++k;
j = s1.length();
@ -186,13 +181,13 @@ public class CraftingManager {
ItemStack[] aitemstack = new ItemStack[j * k];
for (l = 0; l < j * k; ++l) {
char c0 = s.charAt(l);
for (int i1 = 0; i1 < j * k; ++i1) {
char c0 = s.charAt(i1);
if (hashmap.containsKey(Character.valueOf(c0))) {
aitemstack[l] = ((ItemStack) hashmap.get(Character.valueOf(c0))).cloneItemStack();
aitemstack[i1] = ((ItemStack) hashmap.get(Character.valueOf(c0))).cloneItemStack();
} else {
aitemstack[l] = null;
aitemstack[i1] = null;
}
}
@ -229,7 +224,9 @@ public class CraftingManager {
ItemStack itemstack = null;
ItemStack itemstack1 = null;
for (int j = 0; j < inventorycrafting.getSize(); ++j) {
int j;
for (j = 0; j < inventorycrafting.getSize(); ++j) {
ItemStack itemstack2 = inventorycrafting.getItem(j);
if (itemstack2 != null) {
@ -267,23 +264,19 @@ public class CraftingManager {
return result;
// CraftBukkit end
} else {
Iterator iterator = this.recipes.iterator();
for (j = 0; j < this.recipes.size(); ++j) {
IRecipe irecipe = (IRecipe) this.recipes.get(j);
IRecipe irecipe;
do {
if (!iterator.hasNext()) {
return null;
if (irecipe.a(inventorycrafting, world)) {
// CraftBukkit start - INVENTORY_PRE_CRAFT event
inventorycrafting.currentRecipe = irecipe;
ItemStack result = irecipe.a(inventorycrafting);
return CraftEventFactory.callPreCraftEvent(inventorycrafting, result, lastCraftView, false);
// CraftBukkit end
}
}
irecipe = (IRecipe) iterator.next();
} while (!irecipe.a(inventorycrafting, world));
// CraftBukkit start - INVENTORY_PRE_CRAFT event
inventorycrafting.currentRecipe = irecipe;
ItemStack result = irecipe.a(inventorycrafting);
return CraftEventFactory.callPreCraftEvent(inventorycrafting, result, lastCraftView, false);
// CraftBukkit end
return null;
}
}

Datei anzeigen

@ -6,11 +6,10 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -19,40 +18,29 @@ public class CrashReport {
private final String a;
private final Throwable b;
private final Map c = new LinkedHashMap();
private File d = null;
private final CrashReportSystemDetails c = new CrashReportSystemDetails(this, "System Details");
private final List d = new ArrayList();
private File e = null;
private boolean f = true;
private StackTraceElement[] g = new StackTraceElement[0];
public CrashReport(String s, Throwable throwable) {
this.a = s;
this.b = throwable;
this.g();
this.h();
}
private void g() {
this.a("Minecraft Version", (Callable) (new CrashReportVersion(this)));
this.a("Operating System", (Callable) (new CrashReportOperatingSystem(this)));
this.a("Java Version", (Callable) (new CrashReportJavaVersion(this)));
this.a("Java VM Version", (Callable) (new CrashReportJavaVMVersion(this)));
this.a("Memory", (Callable) (new CrashReportMemory(this)));
this.a("JVM Flags", (Callable) (new CrashReportJVMFlags(this)));
this.a("AABB Pool Size", (Callable) (new CrashReportAABBPoolSize(this)));
this.a("CraftBukkit Information", (Callable) (new org.bukkit.craftbukkit.CraftCrashReport())); // CraftBukkit
}
public void a(String s, Callable callable) {
try {
this.a(s, callable.call());
} catch (Throwable throwable) {
this.a(s, throwable);
}
}
public void a(String s, Object object) {
this.c.put(s, object == null ? "null" : object.toString());
}
public void a(String s, Throwable throwable) {
this.a(s, ("~ERROR~ " + throwable.getClass().getSimpleName() + ": " + throwable.getMessage()));
private void h() {
this.c.a("Minecraft Version", (Callable) (new CrashReportVersion(this)));
this.c.a("Operating System", (Callable) (new CrashReportOperatingSystem(this)));
this.c.a("Java Version", (Callable) (new CrashReportJavaVersion(this)));
this.c.a("Java VM Version", (Callable) (new CrashReportJavaVMVersion(this)));
this.c.a("Memory", (Callable) (new CrashReportMemory(this)));
this.c.a("JVM Flags", (Callable) (new CrashReportJVMFlags(this)));
this.c.a("AABB Pool Size", (Callable) (new CrashReportAABBPoolSize(this)));
this.c.a("Suspicious classes", (Callable) (new CrashReportSuspiciousClasses(this)));
this.c.a("IntCache", (Callable) (new CrashReportIntCacheSize(this)));
this.c.a("CraftBukkit Information", (Callable) (new org.bukkit.craftbukkit.CraftCrashReport())); // CraftBukkit
}
public String a() {
@ -64,20 +52,32 @@ public class CrashReport {
}
public void a(StringBuilder stringbuilder) {
boolean flag = true;
if (this.g != null && this.g.length > 0) {
stringbuilder.append("-- Head --\n");
stringbuilder.append("Stacktrace:\n");
StackTraceElement[] astacktraceelement = this.g;
int i = astacktraceelement.length;
for (Iterator iterator = this.c.entrySet().iterator(); iterator.hasNext(); flag = false) {
Entry entry = (Entry) iterator.next();
for (int j = 0; j < i; ++j) {
StackTraceElement stacktraceelement = astacktraceelement[j];
if (!flag) {
stringbuilder.append("\t").append("at ").append(stacktraceelement.toString());
stringbuilder.append("\n");
}
stringbuilder.append("- ");
stringbuilder.append((String) entry.getKey());
stringbuilder.append(": ");
stringbuilder.append((String) entry.getValue());
stringbuilder.append("\n");
}
Iterator iterator = this.d.iterator();
while (iterator.hasNext()) {
CrashReportSystemDetails crashreportsystemdetails = (CrashReportSystemDetails) iterator.next();
crashreportsystemdetails.a(stringbuilder);
stringbuilder.append("\n\n");
}
this.c.a(stringbuilder);
}
public String d() {
@ -112,7 +112,7 @@ public class CrashReport {
stringbuilder.append("---- Minecraft Crash Report ----\n");
stringbuilder.append("// ");
stringbuilder.append(h());
stringbuilder.append(i());
stringbuilder.append("\n\n");
stringbuilder.append("Time: ");
stringbuilder.append((new SimpleDateFormat()).format(new Date()));
@ -121,15 +121,19 @@ public class CrashReport {
stringbuilder.append(this.a);
stringbuilder.append("\n\n");
stringbuilder.append(this.d());
stringbuilder.append("\n");
stringbuilder.append("Relevant Details:");
stringbuilder.append("\n");
stringbuilder.append("\n\nA detailed walkthrough of the error, its code path and all known details is as follows:\n");
for (int i = 0; i < 87; ++i) {
stringbuilder.append("-");
}
stringbuilder.append("\n\n");
this.a(stringbuilder);
return stringbuilder.toString();
}
public boolean a(File file1) {
if (this.d != null) {
if (this.e != null) {
return false;
} else {
if (file1.getParentFile() != null) {
@ -141,7 +145,7 @@ public class CrashReport {
filewriter.write(this.e());
filewriter.close();
this.d = file1;
this.e = file1;
return true;
} catch (Throwable throwable) {
Logger.getLogger("Minecraft").log(Level.SEVERE, "Could not save crash report to " + file1, throwable);
@ -150,8 +154,49 @@ public class CrashReport {
}
}
private static String h() {
String[] astring = new String[] { "Who set us up the TNT?", "Everything\'s going to plan. No, really, that was supposed to happen.", "Uh... Did I do that?", "Oops.", "Why did you do that?", "I feel sad now :(", "My bad.", "I\'m sorry, Dave.", "I let you down. Sorry :(", "On the bright side, I bought you a teddy bear!", "Daisy, daisy...", "Oh - I know what I did wrong!", "Hey, that tickles! Hehehe!", "I blame Dinnerbone.", "You should try our sister game, Minceraft!", "Don\'t be sad. I\'ll do better next time, I promise!", "Don\'t be sad, have a hug! <3", "I just don\'t know what went wrong :(", "Shall we play a game?", "Quite honestly, I wouldn\'t worry myself about that.", "I bet Cylons wouldn\'t have this problem.", "Sorry :(", "Surprise! Haha. Well, this is awkward.", "Would you like a cupcake?", "Hi. I\'m Minecraft, and I\'m a crashaholic.", "Ooh. Shiny.", "This doesn\'t make any sense!", "Why is it breaking :("};
public CrashReportSystemDetails g() {
return this.c;
}
public CrashReportSystemDetails a(String s) {
return this.a(s, 1);
}
public CrashReportSystemDetails a(String s, int i) {
CrashReportSystemDetails crashreportsystemdetails = new CrashReportSystemDetails(this, s);
if (this.f) {
int j = crashreportsystemdetails.a(i);
StackTraceElement[] astacktraceelement = this.b.getStackTrace();
StackTraceElement stacktraceelement = null;
StackTraceElement stacktraceelement1 = null;
if (astacktraceelement != null && astacktraceelement.length - j < astacktraceelement.length) {
stacktraceelement = astacktraceelement[astacktraceelement.length - j];
if (astacktraceelement.length + 1 - j < astacktraceelement.length) {
stacktraceelement1 = astacktraceelement[astacktraceelement.length + 1 - j];
}
}
this.f = crashreportsystemdetails.a(stacktraceelement, stacktraceelement1);
if (j > 0 && !this.d.isEmpty()) {
CrashReportSystemDetails crashreportsystemdetails1 = (CrashReportSystemDetails) this.d.get(this.d.size() - 1);
crashreportsystemdetails1.b(j);
} else if (astacktraceelement != null && astacktraceelement.length >= j) {
this.g = new StackTraceElement[astacktraceelement.length - j];
System.arraycopy(astacktraceelement, 0, this.g, 0, this.g.length);
} else {
this.f = false;
}
}
this.d.add(crashreportsystemdetails);
return crashreportsystemdetails;
}
private static String i() {
String[] astring = new String[] { "Who set us up the TNT?", "Everything\'s going to plan. No, really, that was supposed to happen.", "Uh... Did I do that?", "Oops.", "Why did you do that?", "I feel sad now :(", "My bad.", "I\'m sorry, Dave.", "I let you down. Sorry :(", "On the bright side, I bought you a teddy bear!", "Daisy, daisy...", "Oh - I know what I did wrong!", "Hey, that tickles! Hehehe!", "I blame Dinnerbone.", "You should try our sister game, Minceraft!", "Don\'t be sad. I\'ll do better next time, I promise!", "Don\'t be sad, have a hug! <3", "I just don\'t know what went wrong :(", "Shall we play a game?", "Quite honestly, I wouldn\'t worry myself about that.", "I bet Cylons wouldn\'t have this problem.", "Sorry :(", "Surprise! Haha. Well, this is awkward.", "Would you like a cupcake?", "Hi. I\'m Minecraft, and I\'m a crashaholic.", "Ooh. Shiny.", "This doesn\'t make any sense!", "Why is it breaking :(", "Don\'t do that.", "Ouch. That hurt :(", "You\'re mean.", "This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]", "There are four lights!"};
try {
return astring[(int) (System.nanoTime() % (long) astring.length)];
@ -159,4 +204,16 @@ public class CrashReport {
return "Witty comment unavailable :(";
}
}
public static CrashReport a(Throwable throwable, String s) {
CrashReport crashreport;
if (throwable instanceof ReportedException) {
crashreport = ((ReportedException) throwable).a();
} else {
crashreport = new CrashReport(s, throwable);
}
return crashreport;
}
}

Datei anzeigen

@ -47,7 +47,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
System.setErr(new PrintStream(new LoggerOutputStream(log, Level.SEVERE), true));
// CraftBukkit end
log.info("Starting minecraft server version 1.4.2");
log.info("Starting minecraft server version 1.4.4");
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
log.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
}
@ -67,6 +67,12 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false));
this.setTexturePack(this.propertyManager.getString("texture-pack", ""));
this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server"));
if (this.propertyManager.getInt("difficulty", 1) < 0) {
this.propertyManager.a("difficulty", Integer.valueOf(0));
} else if (this.propertyManager.getInt("difficulty", 1) > 3) {
this.propertyManager.a("difficulty", Integer.valueOf(3));
}
this.generateStructures = this.propertyManager.getBoolean("generate-structures", true);
int i = this.propertyManager.getInt("gamemode", EnumGamemode.SURVIVAL.a());
@ -203,7 +209,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
public CrashReport b(CrashReport crashreport) {
crashreport = super.b(crashreport);
crashreport.a("Type", (Callable) (new CrashReportType(this)));
crashreport.g().a("Is Modded", (Callable) (new CrashReportModded(this)));
crashreport.g().a("Type", (Callable) (new CrashReportType(this)));
return crashreport;
}

Datei anzeigen

@ -27,9 +27,9 @@ public class DedicatedServerConnectionThread extends Thread {
public DedicatedServerConnectionThread(ServerConnection serverconnection, InetAddress inetaddress, int i) throws IOException { // CraftBukkit - added throws
super("Listen thread");
this.f = serverconnection;
this.g = inetaddress;
this.h = i;
this.e = new ServerSocket(i, 0, inetaddress);
this.g = inetaddress == null ? this.e.getInetAddress() : inetaddress;
this.e.setPerformancePreferences(0, 2, 1);
}
@ -44,7 +44,7 @@ public class DedicatedServerConnectionThread extends Thread {
netloginhandler.c();
} catch (Exception exception) {
netloginhandler.disconnect("Internal server error");
a.log(Level.WARNING, "Failed to handle packet: " + exception, exception);
a.log(Level.WARNING, "Failed to handle packet for " + netloginhandler.getName() + ": " + exception, exception);
}
if (netloginhandler.c) {

Datei anzeigen

@ -79,4 +79,14 @@ public abstract class Enchantment {
this.name = s;
return this;
}
public String a() {
return "enchantment." + this.name;
}
public String c(int i) {
String s = LocaleI18n.get(this.a());
return s + " " + LocaleI18n.get("enchantment.level." + i);
}
}

Datei anzeigen

@ -1,8 +1,8 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
// CraftBukkit start
import java.util.UUID;
@ -90,11 +90,12 @@ public abstract class Entity {
public int ak;
public boolean al;
public boolean am;
public int an;
public int portalCooldown;
protected boolean ao;
private int h;
public int dimension;
protected int aq;
private boolean invulnerable;
public EnumEntitySize ar;
public UUID uniqueId = UUID.randomUUID(); // CraftBukkit
public boolean valid = false; // CraftBukkit
@ -132,6 +133,7 @@ public abstract class Entity {
this.datawatcher = new DataWatcher();
this.ah = false;
this.aq = 0;
this.invulnerable = false;
this.ar = EnumEntitySize.SIZE_2;
this.world = world;
this.setPosition(0.0D, 0.0D, 0.0D);
@ -244,14 +246,15 @@ public abstract class Entity {
int i;
if (!this.world.isStatic && this.world instanceof WorldServer) {
this.world.methodProfiler.a("portal");
MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer();
i = this.z();
if (this.ao) {
if (minecraftserver.getAllowNether()) {
if (true || minecraftserver.getAllowNether()) { // CraftBukkit
if (this.vehicle == null && this.h++ >= i) {
this.h = i;
this.an = this.ab();
this.portalCooldown = this.ab();
byte b0;
if (this.world.worldProvider.dimension == -1) {
@ -275,59 +278,26 @@ public abstract class Entity {
}
}
if (this.an > 0) {
--this.an;
if (this.portalCooldown > 0) {
--this.portalCooldown;
}
}
int j;
this.world.methodProfiler.b();
}
if (this.isSprinting() && !this.H()) {
int k = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.locX);
i = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height);
j = MathHelper.floor(this.locZ);
int l = this.world.getTypeId(k, i, j);
int k = MathHelper.floor(this.locZ);
int l = this.world.getTypeId(j, i, k);
if (l > 0) {
this.world.addParticle("tilecrack_" + l, this.locX + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, this.boundingBox.b + 0.1D, this.locZ + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, -this.motX * 4.0D, 1.5D, -this.motZ * 4.0D);
this.world.addParticle("tilecrack_" + l + "_" + this.world.getData(j, i, k), this.locX + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, this.boundingBox.b + 0.1D, this.locZ + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, -this.motX * 4.0D, 1.5D, -this.motZ * 4.0D);
}
}
if (this.I()) {
if (!this.ad && !this.justCreated) {
float f = MathHelper.sqrt(this.motX * this.motX * 0.20000000298023224D + this.motY * this.motY + this.motZ * this.motZ * 0.20000000298023224D) * 0.2F;
if (f > 1.0F) {
f = 1.0F;
}
this.world.makeSound(this, "liquid.splash", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f1 = (float) MathHelper.floor(this.boundingBox.b);
float f2;
float f3;
for (j = 0; (float) j < 1.0F + this.width * 20.0F; ++j) {
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("bubble", this.locX + (double) f3, (double) (f1 + 1.0F), this.locZ + (double) f2, this.motX, this.motY - (double) (this.random.nextFloat() * 0.2F), this.motZ);
}
for (j = 0; (float) j < 1.0F + this.width * 20.0F; ++j) {
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("splash", this.locX + (double) f3, (double) (f1 + 1.0F), this.locZ + (double) f2, this.motX, this.motY, this.motZ);
}
}
this.fallDistance = 0.0F;
this.ad = true;
this.fireTicks = 0;
} else {
this.ad = false;
}
this.I();
if (this.world.isStatic) {
this.fireTicks = 0;
} else if (this.fireTicks > 0) {
@ -517,10 +487,8 @@ public abstract class Entity {
List list = this.world.getCubes(this, this.boundingBox.a(d0, d1, d2));
AxisAlignedBB axisalignedbb1;
for (Iterator iterator = list.iterator(); iterator.hasNext(); d1 = axisalignedbb1.b(this.boundingBox, d1)) {
axisalignedbb1 = (AxisAlignedBB) iterator.next();
for (int i = 0; i < list.size(); ++i) {
d1 = ((AxisAlignedBB) list.get(i)).b(this.boundingBox, d1);
}
this.boundingBox.d(0.0D, d1, 0.0D);
@ -532,11 +500,10 @@ public abstract class Entity {
boolean flag1 = this.onGround || d7 != d1 && d7 < 0.0D;
AxisAlignedBB axisalignedbb2;
Iterator iterator1;
int j;
for (iterator1 = list.iterator(); iterator1.hasNext(); d0 = axisalignedbb2.a(this.boundingBox, d0)) {
axisalignedbb2 = (AxisAlignedBB) iterator1.next();
for (j = 0; j < list.size(); ++j) {
d0 = ((AxisAlignedBB) list.get(j)).a(this.boundingBox, d0);
}
this.boundingBox.d(d0, 0.0D, 0.0D);
@ -546,8 +513,8 @@ public abstract class Entity {
d0 = 0.0D;
}
for (iterator1 = list.iterator(); iterator1.hasNext(); d2 = axisalignedbb2.c(this.boundingBox, d2)) {
axisalignedbb2 = (AxisAlignedBB) iterator1.next();
for (j = 0; j < list.size(); ++j) {
d2 = ((AxisAlignedBB) list.get(j)).c(this.boundingBox, d2);
}
this.boundingBox.d(0.0D, 0.0D, d2);
@ -560,6 +527,7 @@ public abstract class Entity {
double d10;
double d11;
double d12;
int k;
if (this.X > 0.0F && flag1 && (flag || this.W < 0.05F) && (d6 != d0 || d8 != d2)) {
d10 = d0;
@ -568,16 +536,13 @@ public abstract class Entity {
d0 = d6;
d1 = (double) this.X;
d2 = d8;
AxisAlignedBB axisalignedbb3 = this.boundingBox.clone();
AxisAlignedBB axisalignedbb1 = this.boundingBox.clone();
this.boundingBox.c(axisalignedbb);
list = this.world.getCubes(this, this.boundingBox.a(d6, d1, d8));
Iterator iterator2;
AxisAlignedBB axisalignedbb4;
for (iterator2 = list.iterator(); iterator2.hasNext(); d1 = axisalignedbb4.b(this.boundingBox, d1)) {
axisalignedbb4 = (AxisAlignedBB) iterator2.next();
for (k = 0; k < list.size(); ++k) {
d1 = ((AxisAlignedBB) list.get(k)).b(this.boundingBox, d1);
}
this.boundingBox.d(0.0D, d1, 0.0D);
@ -587,8 +552,8 @@ public abstract class Entity {
d0 = 0.0D;
}
for (iterator2 = list.iterator(); iterator2.hasNext(); d0 = axisalignedbb4.a(this.boundingBox, d0)) {
axisalignedbb4 = (AxisAlignedBB) iterator2.next();
for (k = 0; k < list.size(); ++k) {
d0 = ((AxisAlignedBB) list.get(k)).a(this.boundingBox, d0);
}
this.boundingBox.d(d0, 0.0D, 0.0D);
@ -598,8 +563,8 @@ public abstract class Entity {
d0 = 0.0D;
}
for (iterator2 = list.iterator(); iterator2.hasNext(); d2 = axisalignedbb4.c(this.boundingBox, d2)) {
axisalignedbb4 = (AxisAlignedBB) iterator2.next();
for (k = 0; k < list.size(); ++k) {
d2 = ((AxisAlignedBB) list.get(k)).c(this.boundingBox, d2);
}
this.boundingBox.d(0.0D, 0.0D, d2);
@ -616,8 +581,8 @@ public abstract class Entity {
} else {
d1 = (double) (-this.X);
for (iterator2 = list.iterator(); iterator2.hasNext(); d1 = axisalignedbb4.b(this.boundingBox, d1)) {
axisalignedbb4 = (AxisAlignedBB) iterator2.next();
for (k = 0; k < list.size(); ++k) {
d1 = ((AxisAlignedBB) list.get(k)).b(this.boundingBox, d1);
}
this.boundingBox.d(0.0D, d1, 0.0D);
@ -627,7 +592,7 @@ public abstract class Entity {
d0 = d10;
d1 = d11;
d2 = d12;
this.boundingBox.c(axisalignedbb3);
this.boundingBox.c(axisalignedbb1);
} else {
double d13 = this.boundingBox.b - (double) ((int) this.boundingBox.b);
@ -684,22 +649,27 @@ public abstract class Entity {
// CraftBukkit end
if (this.f_() && !flag && this.vehicle == null) {
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height);
int k = MathHelper.floor(this.locZ);
int l = this.world.getTypeId(i, j, k);
int l = MathHelper.floor(this.locX);
if (l == 0 && this.world.getTypeId(i, j - 1, k) == Block.FENCE.id) {
l = this.world.getTypeId(i, j - 1, k);
k = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height);
int i1 = MathHelper.floor(this.locZ);
int j1 = this.world.getTypeId(l, k, i1);
if (j1 == 0) {
int k1 = this.world.e(l, k - 1, i1);
if (k1 == 11 || k1 == 32 || k1 == 21) {
j1 = this.world.getTypeId(l, k - 1, i1);
}
}
if (l != Block.LADDER.id) {
if (j1 != Block.LADDER.id) {
d11 = 0.0D;
}
this.Q = (float) ((double) this.Q + (double) MathHelper.sqrt(d10 * d10 + d12 * d12) * 0.6D);
this.R = (float) ((double) this.R + (double) MathHelper.sqrt(d10 * d10 + d11 * d11 + d12 * d12) * 0.6D);
if (this.R > (float) this.c && l > 0) {
if (this.R > (float) this.c && j1 > 0) {
this.c = (int) this.R + 1;
if (this.H()) {
float f = MathHelper.sqrt(this.motX * this.motX * 0.20000000298023224D + this.motY * this.motY + this.motZ * this.motZ * 0.20000000298023224D) * 0.35F;
@ -708,11 +678,11 @@ public abstract class Entity {
f = 1.0F;
}
this.world.makeSound(this, "liquid.swim", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.makeSound("liquid.swim", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
}
this.a(i, j, k, l);
Block.byId[l].b(this.world, i, j, k, this);
this.a(l, k, i1, j1);
Block.byId[j1].b(this.world, l, k, i1, this);
}
}
@ -741,7 +711,7 @@ public abstract class Entity {
}
if (flag2 && this.fireTicks > 0) {
this.world.makeSound(this, "random.fizz", 0.7F, 1.6F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.makeSound("random.fizz", 0.7F, 1.6F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.fireTicks = -this.maxFireTicks;
}
@ -777,12 +747,16 @@ public abstract class Entity {
if (this.world.getTypeId(i, j + 1, k) == Block.SNOW.id) {
stepsound = Block.SNOW.stepSound;
this.world.makeSound(this, stepsound.getName(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
this.makeSound(stepsound.getStepSound(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
} else if (!Block.byId[l].material.isLiquid()) {
this.world.makeSound(this, stepsound.getName(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
this.makeSound(stepsound.getStepSound(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
}
}
protected void makeSound(String s, float f, float f1) {
this.world.makeSound(this, s, f, f1);
}
protected boolean f_() {
return true;
}
@ -833,7 +807,7 @@ public abstract class Entity {
}
public boolean G() {
return this.ad || this.world.B(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ));
return this.ad || this.world.D(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) || this.world.D(MathHelper.floor(this.locX), MathHelper.floor(this.locY + (double) this.length), MathHelper.floor(this.locZ));
}
public boolean H() {
@ -841,7 +815,42 @@ public abstract class Entity {
}
public boolean I() {
return this.world.a(this.boundingBox.grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D, 0.001D, 0.001D), Material.WATER, this);
if (this.world.a(this.boundingBox.grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D, 0.001D, 0.001D), Material.WATER, this)) {
if (!this.ad && !this.justCreated) {
float f = MathHelper.sqrt(this.motX * this.motX * 0.20000000298023224D + this.motY * this.motY + this.motZ * this.motZ * 0.20000000298023224D) * 0.2F;
if (f > 1.0F) {
f = 1.0F;
}
this.makeSound("liquid.splash", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f1 = (float) MathHelper.floor(this.boundingBox.b);
int i;
float f2;
float f3;
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("bubble", this.locX + (double) f2, (double) (f1 + 1.0F), this.locZ + (double) f3, this.motX, this.motY - (double) (this.random.nextFloat() * 0.2F), this.motZ);
}
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("splash", this.locX + (double) f2, (double) (f1 + 1.0F), this.locZ + (double) f3, this.motX, this.motY, this.motZ);
}
}
this.fallDistance = 0.0F;
this.ad = true;
this.fireTicks = 0;
} else {
this.ad = false;
}
return this.ad;
}
public boolean a(Material material) {
@ -897,7 +906,7 @@ public abstract class Entity {
double d0 = (this.boundingBox.e - this.boundingBox.b) * 0.66D;
int k = MathHelper.floor(this.locY - (double) this.height + d0);
return this.world.o(i, k, j);
return this.world.p(i, k, j);
} else {
return 0.0F;
}
@ -977,7 +986,7 @@ public abstract class Entity {
return d0 * d0 + d1 * d1 + d2 * d2;
}
public void b_(EntityHuman entityhuman) {}
public void c_(EntityHuman entityhuman) {}
public void collide(Entity entity) {
if (entity.passenger != this && entity.vehicle != this) {
@ -1019,8 +1028,12 @@ public abstract class Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
this.K();
return false;
if (this.isInvulnerable()) {
return false;
} else {
this.K();
return false;
}
}
public boolean L() {
@ -1046,83 +1059,55 @@ public abstract class Entity {
}
public void d(NBTTagCompound nbttagcompound) {
nbttagcompound.set("Pos", this.a(new double[] { this.locX, this.locY + (double) this.W, this.locZ}));
nbttagcompound.set("Motion", this.a(new double[] { this.motX, this.motY, this.motZ}));
try {
nbttagcompound.set("Pos", this.a(new double[] { this.locX, this.locY + (double) this.W, this.locZ}));
nbttagcompound.set("Motion", this.a(new double[] { this.motX, this.motY, this.motZ}));
// CraftBukkit start - checking for NaN pitch/yaw and resetting to zero
// TODO: make sure this is the best way to address this.
if (Float.isNaN(this.yaw)) {
this.yaw = 0;
// CraftBukkit start - checking for NaN pitch/yaw and resetting to zero
// TODO: make sure this is the best way to address this.
if (Float.isNaN(this.yaw)) {
this.yaw = 0;
}
if (Float.isNaN(this.pitch)) {
this.pitch = 0;
}
// CraftBukkit end
nbttagcompound.set("Rotation", this.a(new float[] { this.yaw, this.pitch}));
nbttagcompound.setFloat("FallDistance", this.fallDistance);
nbttagcompound.setShort("Fire", (short) this.fireTicks);
nbttagcompound.setShort("Air", (short) this.getAirTicks());
nbttagcompound.setBoolean("OnGround", this.onGround);
nbttagcompound.setInt("Dimension", this.dimension);
nbttagcompound.setBoolean("Invulnerable", this.invulnerable);
nbttagcompound.setInt("PortalCooldown", this.portalCooldown);
// CraftBukkit start
nbttagcompound.setLong("WorldUUIDLeast", this.world.getDataManager().getUUID().getLeastSignificantBits());
nbttagcompound.setLong("WorldUUIDMost", this.world.getDataManager().getUUID().getMostSignificantBits());
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits());
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits());
// CraftBukkit end
this.b(nbttagcompound);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Saving entity NBT");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being saved");
this.a(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
if (Float.isNaN(this.pitch)) {
this.pitch = 0;
}
// CraftBukkit end
nbttagcompound.set("Rotation", this.a(new float[] { this.yaw, this.pitch}));
nbttagcompound.setFloat("FallDistance", this.fallDistance);
nbttagcompound.setShort("Fire", (short) this.fireTicks);
nbttagcompound.setShort("Air", (short) this.getAirTicks());
nbttagcompound.setBoolean("OnGround", this.onGround);
nbttagcompound.setInt("Dimension", this.dimension);
// CraftBukkit start
nbttagcompound.setLong("WorldUUIDLeast", this.world.getDataManager().getUUID().getLeastSignificantBits());
nbttagcompound.setLong("WorldUUIDMost", this.world.getDataManager().getUUID().getMostSignificantBits());
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits());
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits());
// CraftBukkit end
this.b(nbttagcompound);
}
public void e(NBTTagCompound nbttagcompound) {
NBTTagList nbttaglist = nbttagcompound.getList("Pos");
NBTTagList nbttaglist1 = nbttagcompound.getList("Motion");
NBTTagList nbttaglist2 = nbttagcompound.getList("Rotation");
try {
NBTTagList nbttaglist = nbttagcompound.getList("Pos");
NBTTagList nbttaglist1 = nbttagcompound.getList("Motion");
NBTTagList nbttaglist2 = nbttagcompound.getList("Rotation");
this.motX = ((NBTTagDouble) nbttaglist1.get(0)).data;
this.motY = ((NBTTagDouble) nbttaglist1.get(1)).data;
this.motZ = ((NBTTagDouble) nbttaglist1.get(2)).data;
/* CraftBukkit start - moved section down
if (Math.abs(this.motX) > 10.0D) {
this.motX = 0.0D;
}
if (Math.abs(this.motY) > 10.0D) {
this.motY = 0.0D;
}
if (Math.abs(this.motZ) > 10.0D) {
this.motZ = 0.0D;
}
// CraftBukkit end */
this.lastX = this.T = this.locX = ((NBTTagDouble) nbttaglist.get(0)).data;
this.lastY = this.U = this.locY = ((NBTTagDouble) nbttaglist.get(1)).data;
this.lastZ = this.V = this.locZ = ((NBTTagDouble) nbttaglist.get(2)).data;
this.lastYaw = this.yaw = ((NBTTagFloat) nbttaglist2.get(0)).data;
this.lastPitch = this.pitch = ((NBTTagFloat) nbttaglist2.get(1)).data;
this.fallDistance = nbttagcompound.getFloat("FallDistance");
this.fireTicks = nbttagcompound.getShort("Fire");
this.setAirTicks(nbttagcompound.getShort("Air"));
this.onGround = nbttagcompound.getBoolean("OnGround");
this.dimension = nbttagcompound.getInt("Dimension");
this.setPosition(this.locX, this.locY, this.locZ);
// CraftBukkit start
long least = nbttagcompound.getLong("UUIDLeast");
long most = nbttagcompound.getLong("UUIDMost");
if (least != 0L && most != 0L) {
this.uniqueId = new UUID(most, least);
}
// CraftBukkit end
this.b(this.yaw, this.pitch);
this.a(nbttagcompound);
// CraftBukkit start - exempt Vehicles from notch's sanity check
if (!(this.getBukkitEntity() instanceof Vehicle)) {
this.motX = ((NBTTagDouble) nbttaglist1.get(0)).data;
this.motY = ((NBTTagDouble) nbttaglist1.get(1)).data;
this.motZ = ((NBTTagDouble) nbttaglist1.get(2)).data;
/* CraftBukkit start - moved section down
if (Math.abs(this.motX) > 10.0D) {
this.motX = 0.0D;
}
@ -1134,32 +1119,80 @@ public abstract class Entity {
if (Math.abs(this.motZ) > 10.0D) {
this.motZ = 0.0D;
}
}
// CraftBukkit end
// CraftBukkit end */
// CraftBukkit start - reset world
if (this instanceof EntityPlayer) {
Server server = Bukkit.getServer();
org.bukkit.World bworld = null;
this.lastX = this.T = this.locX = ((NBTTagDouble) nbttaglist.get(0)).data;
this.lastY = this.U = this.locY = ((NBTTagDouble) nbttaglist.get(1)).data;
this.lastZ = this.V = this.locZ = ((NBTTagDouble) nbttaglist.get(2)).data;
this.lastYaw = this.yaw = ((NBTTagFloat) nbttaglist2.get(0)).data;
this.lastPitch = this.pitch = ((NBTTagFloat) nbttaglist2.get(1)).data;
this.fallDistance = nbttagcompound.getFloat("FallDistance");
this.fireTicks = nbttagcompound.getShort("Fire");
this.setAirTicks(nbttagcompound.getShort("Air"));
this.onGround = nbttagcompound.getBoolean("OnGround");
this.dimension = nbttagcompound.getInt("Dimension");
this.invulnerable = nbttagcompound.getBoolean("Invulnerable");
this.portalCooldown = nbttagcompound.getInt("PortalCooldown");
this.setPosition(this.locX, this.locY, this.locZ);
// TODO: Remove World related checks, replaced with WorldUID.
String worldName = nbttagcompound.getString("World");
// CraftBukkit start
long least = nbttagcompound.getLong("UUIDLeast");
long most = nbttagcompound.getLong("UUIDMost");
if (nbttagcompound.hasKey("WorldUUIDMost") && nbttagcompound.hasKey("WorldUUIDLeast")) {
UUID uid = new UUID(nbttagcompound.getLong("WorldUUIDMost"), nbttagcompound.getLong("WorldUUIDLeast"));
bworld = server.getWorld(uid);
} else {
bworld = server.getWorld(worldName);
if (least != 0L && most != 0L) {
this.uniqueId = new UUID(most, least);
}
// CraftBukkit end
if (bworld == null) {
EntityPlayer entityPlayer = (EntityPlayer) this;
bworld = ((org.bukkit.craftbukkit.CraftServer) server).getServer().getWorldServer(entityPlayer.dimension).getWorld();
this.b(this.yaw, this.pitch);
this.a(nbttagcompound);
// CraftBukkit start - exempt Vehicles from notch's sanity check
if (!(this.getBukkitEntity() instanceof Vehicle)) {
if (Math.abs(this.motX) > 10.0D) {
this.motX = 0.0D;
}
if (Math.abs(this.motY) > 10.0D) {
this.motY = 0.0D;
}
if (Math.abs(this.motZ) > 10.0D) {
this.motZ = 0.0D;
}
}
// CraftBukkit end
this.spawnIn(bworld == null ? null : ((CraftWorld) bworld).getHandle());
// CraftBukkit start - reset world
if (this instanceof EntityPlayer) {
Server server = Bukkit.getServer();
org.bukkit.World bworld = null;
// TODO: Remove World related checks, replaced with WorldUID.
String worldName = nbttagcompound.getString("World");
if (nbttagcompound.hasKey("WorldUUIDMost") && nbttagcompound.hasKey("WorldUUIDLeast")) {
UUID uid = new UUID(nbttagcompound.getLong("WorldUUIDMost"), nbttagcompound.getLong("WorldUUIDLeast"));
bworld = server.getWorld(uid);
} else {
bworld = server.getWorld(worldName);
}
if (bworld == null) {
EntityPlayer entityPlayer = (EntityPlayer) this;
bworld = ((org.bukkit.craftbukkit.CraftServer) server).getServer().getWorldServer(entityPlayer.dimension).getWorld();
}
this.spawnIn(bworld == null ? null : ((CraftWorld) bworld).getHandle());
}
// CraftBukkit end
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Loading entity NBT");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being loaded");
this.a(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
// CraftBukkit end
}
protected final String Q() {
@ -1227,7 +1260,7 @@ public abstract class Entity {
int k = MathHelper.floor(this.locY + (double) this.getHeadHeight() + (double) f1);
int l = MathHelper.floor(this.locZ + (double) f2);
if (this.world.s(j, k, l)) {
if (this.world.t(j, k, l)) {
return true;
}
}
@ -1235,7 +1268,7 @@ public abstract class Entity {
return false;
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
return false;
}
@ -1300,7 +1333,7 @@ public abstract class Entity {
}
public void V() {
if (!(this.passenger instanceof EntityHuman) || !((EntityHuman) this.passenger).bS()) {
if (!(this.passenger instanceof EntityHuman) || !((EntityHuman) this.passenger).bW()) {
this.passenger.T = this.T;
this.passenger.U = this.U + this.X() + this.passenger.W();
this.passenger.V = this.V;
@ -1403,12 +1436,12 @@ public abstract class Entity {
AxisAlignedBB axisalignedbb = this.boundingBox.c(d3, 1.0D, d4);
if (this.world.a(axisalignedbb).isEmpty()) {
if (this.world.t(i, (int) this.locY, j)) {
if (this.world.v(i, (int) this.locY, j)) {
this.setPositionRotation(this.locX + d3, this.locY + 1.0D, this.locZ + d4, this.yaw, this.pitch);
return;
}
if (this.world.t(i, (int) this.locY - 1, j) || this.world.getMaterial(i, (int) this.locY - 1, j) == Material.WATER) {
if (this.world.v(i, (int) this.locY - 1, j) || this.world.getMaterial(i, (int) this.locY - 1, j) == Material.WATER) {
d0 = this.locX + d3;
d1 = this.locY + 1.0D;
d2 = this.locZ + d4;
@ -1430,8 +1463,8 @@ public abstract class Entity {
}
public void aa() {
if (this.an > 0) {
this.an = this.ab();
if (this.portalCooldown > 0) {
this.portalCooldown = this.ab();
} else {
double d0 = this.lastX - this.locX;
double d1 = this.lastZ - this.locZ;
@ -1445,7 +1478,7 @@ public abstract class Entity {
}
public int ab() {
return 500;
return 900;
}
public ItemStack[] getEquipment() {
@ -1559,15 +1592,18 @@ public abstract class Entity {
double d3 = d0 - (double) i;
double d4 = d1 - (double) j;
double d5 = d2 - (double) k;
List list = this.world.a(this.boundingBox);
if (this.world.s(i, j, k)) {
boolean flag = !this.world.s(i - 1, j, k);
boolean flag1 = !this.world.s(i + 1, j, k);
boolean flag2 = !this.world.s(i, j - 1, k);
boolean flag3 = !this.world.s(i, j + 1, k);
boolean flag4 = !this.world.s(i, j, k - 1);
boolean flag5 = !this.world.s(i, j, k + 1);
byte b0 = -1;
if (list.isEmpty() && !this.world.u(i, j, k)) {
return false;
} else {
boolean flag = !this.world.u(i - 1, j, k);
boolean flag1 = !this.world.u(i + 1, j, k);
boolean flag2 = !this.world.u(i, j - 1, k);
boolean flag3 = !this.world.u(i, j + 1, k);
boolean flag4 = !this.world.u(i, j, k - 1);
boolean flag5 = !this.world.u(i, j, k + 1);
byte b0 = 3;
double d6 = 9999.0D;
if (flag && d3 < d6) {
@ -1580,11 +1616,6 @@ public abstract class Entity {
b0 = 1;
}
if (flag2 && d4 < d6) {
d6 = d4;
b0 = 2;
}
if (flag3 && 1.0D - d4 < d6) {
d6 = 1.0D - d4;
b0 = 3;
@ -1627,8 +1658,6 @@ public abstract class Entity {
}
return true;
} else {
return false;
}
}
@ -1663,11 +1692,19 @@ public abstract class Entity {
return true;
}
public boolean j(Entity entity) {
return false;
}
public String toString() {
return String.format("%s[\'%s\'/%d, l=\'%s\', x=%.2f, y=%.2f, z=%.2f]", new Object[] { this.getClass().getSimpleName(), this.getLocalizedName(), Integer.valueOf(this.id), this.world == null ? "~NULL~" : this.world.getWorldData().getName(), Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ)});
}
public void j(Entity entity) {
public boolean isInvulnerable() {
return this.invulnerable;
}
public void k(Entity entity) {
this.setPositionRotation(entity.locX, entity.locY, entity.locZ, entity.yaw, entity.pitch);
}
@ -1676,12 +1713,13 @@ public abstract class Entity {
entity.d(nbttagcompound);
this.e(nbttagcompound);
this.an = entity.an;
this.portalCooldown = entity.portalCooldown;
this.aq = entity.aq;
}
public void b(int i) {
if (false && !this.world.isStatic && !this.dead) { // CraftBukkit - disable entity portal support for now.
this.world.methodProfiler.a("changeDimension");
MinecraftServer minecraftserver = MinecraftServer.getServer();
int j = this.dimension;
WorldServer worldserver = minecraftserver.getWorldServer(j);
@ -1690,7 +1728,9 @@ public abstract class Entity {
this.dimension = i;
this.world.kill(this);
this.dead = false;
this.world.methodProfiler.a("reposition");
minecraftserver.getServerConfigurationManager().a(this, j, worldserver, worldserver1);
this.world.methodProfiler.c("reloading");
Entity entity = EntityTypes.createEntityByName(EntityTypes.b(this), worldserver1);
if (entity != null) {
@ -1699,8 +1739,10 @@ public abstract class Entity {
}
this.dead = true;
this.world.methodProfiler.b();
worldserver.i();
worldserver1.i();
this.world.methodProfiler.b();
}
}
@ -1719,4 +1761,13 @@ public abstract class Entity {
public boolean au() {
return false;
}
public void a(CrashReportSystemDetails crashreportsystemdetails) {
crashreportsystemdetails.a("Entity Type", (Callable) (new CrashReportEntityType(this)));
crashreportsystemdetails.a("Entity ID", Integer.valueOf(this.id));
crashreportsystemdetails.a("Name", this.getLocalizedName());
crashreportsystemdetails.a("Exact location", String.format("%.2f, %.2f, %.2f", new Object[] { Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ)}));
crashreportsystemdetails.a("Block location", CrashReportSystemDetails.a(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)));
crashreportsystemdetails.a("Momentum", String.format("%.2f, %.2f, %.2f", new Object[] { Double.valueOf(this.motX), Double.valueOf(this.motY), Double.valueOf(this.motZ)}));
}
}

Datei anzeigen

@ -7,6 +7,28 @@ public abstract class EntityAgeable extends EntityCreature {
super(world);
}
public abstract EntityAgeable createChild(EntityAgeable entityageable);
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.MONSTER_EGG.id && !this.world.isStatic) {
Class oclass = EntityTypes.a(itemstack.getData());
if (oclass != null && oclass.isAssignableFrom(this.getClass())) {
EntityAgeable entityageable = this.createChild(this);
if (entityageable != null) {
entityageable.setAge(-24000);
entityageable.setPositionRotation(this.locX, this.locY, this.locZ, 0.0F, 0.0F);
this.world.addEntity(entityageable);
}
}
}
return super.a(entityhuman);
}
protected void a() {
super.a();
this.datawatcher.a(12, new Integer(0));

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -167,12 +166,12 @@ public class EntityArrow extends Entity implements IProjectile {
Entity entity = null;
List list = this.world.getEntities(this, this.boundingBox.a(this.motX, this.motY, this.motZ).grow(1.0D, 1.0D, 1.0D));
double d0 = 0.0D;
Iterator iterator = list.iterator();
int l;
float f1;
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (l = 0; l < list.size(); ++l) {
Entity entity1 = (Entity) list.get(l);
if (entity1.L() && (entity1 != this.shooter || this.as >= 5)) {
f1 = 0.3F;
@ -204,10 +203,10 @@ public class EntityArrow extends Entity implements IProjectile {
// CraftBukkit end
if (movingobjectposition.entity != null) {
f2 = MathHelper.sqrt(this.motX * this.motX + this.motY * this.motY + this.motZ * this.motZ);
int l = MathHelper.f((double) f2 * this.damage);
int i1 = MathHelper.f((double) f2 * this.damage);
if (this.d()) {
l += this.random.nextInt(l / 2 + 2);
i1 += this.random.nextInt(i1 / 2 + 2);
}
DamageSource damagesource = null;
@ -219,7 +218,7 @@ public class EntityArrow extends Entity implements IProjectile {
}
// CraftBukkit start - moved damage call
if (movingobjectposition.entity.damageEntity(damagesource, l)) {
if (movingobjectposition.entity.damageEntity(damagesource, i1)) {
if (this.isBurning() && (!(movingobjectposition.entity instanceof EntityPlayer) || this.world.pvpMode)) { // CraftBukkit - abide by pvp setting if destination is a player.
EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity(), 5);
org.bukkit.Bukkit.getPluginManager().callEvent(combustEvent);
@ -230,9 +229,14 @@ public class EntityArrow extends Entity implements IProjectile {
// CraftBukkit end
}
// if (movingobjectposition.entity.damageEntity(damagesource, l)) { // CraftBukkit - moved up
// if (movingobjectposition.entity.damageEntity(damagesource, i1)) { // CraftBukkit - moved up
if (movingobjectposition.entity instanceof EntityLiving) {
++((EntityLiving) movingobjectposition.entity).bk;
if (!this.world.isStatic) {
EntityLiving entityliving = (EntityLiving) movingobjectposition.entity;
entityliving.r(entityliving.bJ() + 1);
}
if (this.au > 0) {
float f3 = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ);
@ -242,7 +246,7 @@ public class EntityArrow extends Entity implements IProjectile {
}
}
this.world.makeSound(this, "random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.makeSound("random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.die();
} else {
this.motX *= -0.10000000149011612D;
@ -265,16 +269,19 @@ public class EntityArrow extends Entity implements IProjectile {
this.locX -= this.motX / (double) f2 * 0.05000000074505806D;
this.locY -= this.motY / (double) f2 * 0.05000000074505806D;
this.locZ -= this.motZ / (double) f2 * 0.05000000074505806D;
this.world.makeSound(this, "random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.makeSound("random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.inGround = true;
this.shake = 7;
this.e(false);
if (this.g != 0) {
Block.byId[this.g].a(this.world, this.d, this.e, this.f, this);
}
}
}
if (this.d()) {
for (int i1 = 0; i1 < 4; ++i1) {
this.world.addParticle("crit", this.locX + this.motX * (double) i1 / 4.0D, this.locY + this.motY * (double) i1 / 4.0D, this.locZ + this.motZ * (double) i1 / 4.0D, -this.motX, -this.motY + 0.2D, -this.motZ);
for (l = 0; l < 4; ++l) {
this.world.addParticle("crit", this.locX + this.motX * (double) l / 4.0D, this.locY + this.motY * (double) l / 4.0D, this.locZ + this.motZ * (double) l / 4.0D, -this.motX, -this.motY + 0.2D, -this.motZ);
}
}
@ -355,7 +362,7 @@ public class EntityArrow extends Entity implements IProjectile {
}
}
public void b_(EntityHuman entityhuman) {
public void c_(EntityHuman entityhuman) {
if (!this.world.isStatic && this.inGround && this.shake <= 0) {
// CraftBukkit start
ItemStack itemstack = new ItemStack(Item.ARROW);
@ -378,7 +385,7 @@ public class EntityArrow extends Entity implements IProjectile {
}
if (flag) {
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
this.makeSound("random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, 1);
this.die();
}

Datei anzeigen

@ -22,15 +22,15 @@ public class EntityBlaze extends EntityMonster {
this.datawatcher.a(16, new Byte((byte) 0));
}
protected String aW() {
protected String aY() {
return "mob.blaze.breathe";
}
protected String aX() {
protected String aZ() {
return "mob.blaze.hit";
}
protected String aY() {
protected String ba() {
return "mob.blaze.death";
}
@ -73,7 +73,7 @@ public class EntityBlaze extends EntityMonster {
protected void a(Entity entity, float f) {
if (this.attackTicks <= 0 && f < 2.0F && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) {
this.attackTicks = 20;
this.l(entity);
this.m(entity);
} else if (f < 30.0F) {
double d0 = entity.locX - this.locX;
double d1 = entity.boundingBox.b + (double) (entity.length / 2.0F) - (this.locY + (double) (this.length / 2.0F));

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -93,7 +92,9 @@ public class EntityBoat extends Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (!this.world.isStatic && !this.dead) {
if (this.isInvulnerable()) {
return false;
} else if (!this.world.isStatic && !this.dead) {
// CraftBukkit start
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
org.bukkit.entity.Entity attacker = (damagesource.getEntity() == null) ? null : damagesource.getEntity().getBukkitEntity();
@ -356,12 +357,11 @@ public class EntityBoat extends Entity {
if (!this.world.isStatic) {
List list = this.world.getEntities(this, this.boundingBox.grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
int l;
if (list != null && !list.isEmpty()) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
for (l = 0; l < list.size(); ++l) {
Entity entity = (Entity) list.get(l);
if (entity != this.passenger && entity.M() && entity instanceof EntityBoat) {
entity.collide(this);
@ -369,7 +369,7 @@ public class EntityBoat extends Entity {
}
}
for (int l = 0; l < 4; ++l) {
for (l = 0; l < 4; ++l) {
int i1 = MathHelper.floor(this.locX + ((double) (l % 2) - 0.5D) * 0.8D);
int j1 = MathHelper.floor(this.locZ + ((double) (l / 2) - 0.5D) * 0.8D);
@ -408,7 +408,7 @@ public class EntityBoat extends Entity {
protected void a(NBTTagCompound nbttagcompound) {}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (this.passenger != null && this.passenger instanceof EntityHuman && this.passenger != entityhuman) {
return true;
} else {

Datei anzeigen

@ -27,7 +27,7 @@ public class EntityChicken extends EntityAnimal {
this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -59,7 +59,7 @@ public class EntityChicken extends EntityAnimal {
this.e += this.i * 2.0F;
if (!this.isBaby() && !this.world.isStatic && --this.j <= 0) {
this.world.makeSound(this, "mob.chicken.plop", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.makeSound("mob.chicken.plop", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.b(Item.EGG.id, 1);
this.j = this.random.nextInt(6000) + 6000;
}
@ -67,20 +67,20 @@ public class EntityChicken extends EntityAnimal {
protected void a(float f) {}
protected String aW() {
protected String aY() {
return "mob.chicken.say";
}
protected String aX() {
protected String aZ() {
return "mob.chicken.hurt";
}
protected String aY() {
protected String ba() {
return "mob.chicken.hurt";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.chicken.step", 0.15F, 1.0F);
this.makeSound("mob.chicken.step", 0.15F, 1.0F);
}
protected int getLootId() {
@ -106,11 +106,15 @@ public class EntityChicken extends EntityAnimal {
// CraftBukkit end
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityChicken b(EntityAgeable entityageable) {
return new EntityChicken(this.world);
}
public boolean c(ItemStack itemstack) {
return itemstack != null && itemstack.getItem() instanceof ItemSeeds;
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -22,7 +22,7 @@ public class EntityCow extends EntityAnimal {
this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -30,23 +30,23 @@ public class EntityCow extends EntityAnimal {
return 10;
}
protected String aW() {
protected String aY() {
return "mob.cow.say";
}
protected String aX() {
protected String aZ() {
return "mob.cow.hurt";
}
protected String aY() {
protected String ba() {
return "mob.cow.hurt";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.cow.step", 0.15F, 1.0F);
this.makeSound("mob.cow.step", 0.15F, 1.0F);
}
protected float aV() {
protected float aX() {
return 0.4F;
}
@ -75,7 +75,7 @@ public class EntityCow extends EntityAnimal {
// CraftBukkit end
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.BUCKET.id) {
@ -96,11 +96,15 @@ public class EntityCow extends EntityAnimal {
return true;
} else {
return super.c(entityhuman);
return super.a(entityhuman);
}
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityCow b(EntityAgeable entityageable) {
return new EntityCow(this.world);
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -20,7 +20,7 @@ public abstract class EntityCreature extends EntityLiving {
return false;
}
protected void bk() {
protected void bn() {
this.world.methodProfiler.a("ai");
if (this.c > 0) {
--this.c;
@ -52,7 +52,7 @@ public abstract class EntityCreature extends EntityLiving {
} else if (this.target.isAlive()) {
float f1 = this.target.d((Entity) this);
if (this.m(this.target)) {
if (this.n(this.target)) {
this.a(this.target, f1);
}
} else {
@ -73,7 +73,7 @@ public abstract class EntityCreature extends EntityLiving {
this.world.methodProfiler.b();
if (!this.b && this.target != null && (this.pathEntity == null || this.random.nextInt(20) == 0)) {
this.pathEntity = this.world.findPath(this, this.target, f, true, false, false, true);
} else if (!this.b && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.c > 0) && this.bC < 100) {
} else if (!this.b && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.c > 0) && this.bA < 100) {
this.i();
}
@ -97,7 +97,7 @@ public abstract class EntityCreature extends EntityLiving {
}
}
this.bG = false;
this.bE = false;
if (vec3d != null) {
double d1 = vec3d.c - this.locX;
double d2 = vec3d.e - this.locZ;
@ -106,7 +106,7 @@ public abstract class EntityCreature extends EntityLiving {
float f2 = (float) (org.bukkit.craftbukkit.TrigMath.atan2(d2, d1) * 180.0D / 3.1415927410125732D) - 90.0F;
float f3 = MathHelper.g(f2 - this.yaw);
this.bE = this.bI;
this.bC = this.bG;
if (f3 > 30.0F) {
f3 = 30.0F;
}
@ -123,12 +123,12 @@ public abstract class EntityCreature extends EntityLiving {
this.yaw = (float) (Math.atan2(d5, d4) * 180.0D / 3.1415927410125732D) - 90.0F;
f3 = (f4 - this.yaw + 90.0F) * 3.1415927F / 180.0F;
this.bD = -MathHelper.sin(f3) * this.bE * 1.0F;
this.bE = MathHelper.cos(f3) * this.bE * 1.0F;
this.bB = -MathHelper.sin(f3) * this.bC * 1.0F;
this.bC = MathHelper.cos(f3) * this.bC * 1.0F;
}
if (d3 > 0.0D) {
this.bG = true;
this.bE = true;
}
}
@ -137,16 +137,16 @@ public abstract class EntityCreature extends EntityLiving {
}
if (this.positionChanged && !this.k()) {
this.bG = true;
this.bE = true;
}
if (this.random.nextFloat() < 0.8F && (flag || flag1)) {
this.bG = true;
this.bE = true;
}
this.world.methodProfiler.b();
} else {
super.bk();
super.bn();
this.pathEntity = null;
}
}
@ -215,10 +215,10 @@ public abstract class EntityCreature extends EntityLiving {
this.target = entity;
}
public float by() {
float f = super.by();
public float bB() {
float f = super.bB();
if (this.c > 0 && !this.bb()) {
if (this.c > 0 && !this.be()) {
f *= 2.0F;
}

Datei anzeigen

@ -27,12 +27,12 @@ public class EntityCreeper extends EntityMonster {
this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, false));
}
public boolean bb() {
public boolean be() {
return true;
}
public int as() {
return this.aF() == null ? 3 : 3 + (this.health - 1);
return this.aG() == null ? 3 : 3 + (this.health - 1);
}
protected void a(float f) {
@ -81,7 +81,7 @@ public class EntityCreeper extends EntityMonster {
int i = this.o();
if (i > 0 && this.fuseTicks == 0) {
this.world.makeSound(this, "random.fuse", 1.0F, 0.5F);
this.makeSound("random.fuse", 1.0F, 0.5F);
}
this.fuseTicks += i;
@ -112,19 +112,21 @@ public class EntityCreeper extends EntityMonster {
super.j_();
}
protected String aX() {
protected String aZ() {
return "mob.creeper.say";
}
protected String aY() {
protected String ba() {
return "mob.creeper.death";
}
public void die(DamageSource damagesource) {
// CraftBukkit start - rearranged the method (super call to end, drop to dropDeathLoot)
if (damagesource.getEntity() instanceof EntitySkeleton) {
// this.b(Item.RECORD_1.id + this.random.nextInt(10), 1); // CraftBukkit
this.record = Item.RECORD_1.id + this.random.nextInt(10);
int i = Item.RECORD_1.id + this.random.nextInt(Item.RECORD_12.id - Item.RECORD_1.id + 1);
// this.b(i, 1); // CraftBukkit
this.record = i;
}
super.die(damagesource);
@ -159,7 +161,7 @@ public class EntityCreeper extends EntityMonster {
}
// CraftBukkit end
public boolean l(Entity entity) {
public boolean m(Entity entity) {
return true;
}

Datei anzeigen

@ -18,13 +18,12 @@ public class EntityDamageSourceIndirect extends EntityDamageSource {
}
public String getLocalizedDeathMessage(EntityHuman entityhuman) {
// CraftBukkit start
String source = (this.owner == null) ? "Herobrine" : this.owner.getLocalizedName();
return LocaleI18n.get("death." + this.translationIndex, new Object[] { entityhuman.name, source});
return LocaleI18n.get("death." + this.translationIndex, new Object[] { entityhuman.name, this.owner == null ? this.r.getLocalizedName() : this.owner.getLocalizedName()});
}
// CraftBukkit start
public Entity getProximateDamageSource() {
return super.getEntity();
// CraftBukkit end
}
// CraftBukkit end
}

Datei anzeigen

@ -23,7 +23,7 @@ public class EntityEgg extends EntityProjectile {
protected void a(MovingObjectPosition movingobjectposition) {
if (movingobjectposition.entity != null) {
movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.shooter), 0);
movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.getShooter()), 0);
}
// CraftBukkit start
@ -35,8 +35,9 @@ public class EntityEgg extends EntityProjectile {
EntityType hatchingType = EntityType.CHICKEN;
if (this.shooter instanceof EntityPlayer) {
Player player = (this.shooter == null) ? null : (Player) this.shooter.getBukkitEntity();
Entity shooter = this.getShooter();
if (shooter instanceof EntityPlayer) {
Player player = (shooter == null) ? null : (Player) shooter.getBukkitEntity();
PlayerEggThrowEvent event = new PlayerEggThrowEvent(player, (org.bukkit.entity.Egg) this.getBukkitEntity(), hatching, (byte) numHatching, hatchingType);
this.world.getServer().getPluginManager().callEvent(event);

Datei anzeigen

@ -46,22 +46,26 @@ public class EntityEnderCrystal extends Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (!this.dead && !this.world.isStatic) {
// CraftBukkit start - All non-living entities need this
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, damagesource, i)) {
return false;
}
// CraftBukkit end
if (this.isInvulnerable()) {
return false;
} else {
if (!this.dead && !this.world.isStatic) {
// CraftBukkit start - All non-living entities need this
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, damagesource, i)) {
return false;
}
// CraftBukkit end
this.b = 0;
if (this.b <= 0) {
this.die();
if (!this.world.isStatic) {
this.world.explode(this, this.locX, this.locY, this.locZ, 6.0F, true); // CraftBukkit - (Entity) null -> this
this.b = 0;
if (this.b <= 0) {
this.die();
if (!this.world.isStatic) {
this.world.explode(this, this.locX, this.locY, this.locZ, 6.0F, true); // CraftBukkit - (Entity) null -> this
}
}
}
}
return true;
return true;
}
}
}

Datei anzeigen

@ -25,20 +25,20 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
public EntityComplexPart h;
public EntityComplexPart i;
public EntityComplexPart j;
public EntityComplexPart bI;
public EntityComplexPart bJ;
public EntityComplexPart bK;
public EntityComplexPart bL;
public EntityComplexPart bM;
public float bN = 0.0F;
public float bO = 0.0F;
public boolean bP = false;
public boolean bQ = false;
private Entity bT;
public int bR = 0;
public EntityEnderCrystal bS = null;
public float bL = 0.0F;
public float bM = 0.0F;
public boolean bN = false;
public boolean bO = false;
private Entity bR;
public int bP = 0;
public EntityEnderCrystal bQ = null;
public EntityEnderDragon(World world) {
super(world);
this.children = new EntityComplexPart[] { this.g = new EntityComplexPart(this, "head", 6.0F, 6.0F), this.h = new EntityComplexPart(this, "body", 8.0F, 8.0F), this.i = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.j = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bK = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bL = new EntityComplexPart(this, "wing", 4.0F, 4.0F), this.bM = new EntityComplexPart(this, "wing", 4.0F, 4.0F)};
this.children = new EntityComplexPart[] { this.g = new EntityComplexPart(this, "head", 6.0F, 6.0F), this.h = new EntityComplexPart(this, "body", 8.0F, 8.0F), this.i = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.j = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bI = new EntityComplexPart(this, "tail", 4.0F, 4.0F), this.bJ = new EntityComplexPart(this, "wing", 4.0F, 4.0F), this.bK = new EntityComplexPart(this, "wing", 4.0F, 4.0F)};
this.setHealth(this.getMaxHealth());
this.texture = "/mob/enderdragon/ender.png";
this.a(16.0F, 8.0F);
@ -84,14 +84,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
if (!this.world.isStatic) {
this.datawatcher.watch(16, Integer.valueOf(this.health));
} else {
f = MathHelper.cos(this.bO * 3.1415927F * 2.0F);
f1 = MathHelper.cos(this.bN * 3.1415927F * 2.0F);
f = MathHelper.cos(this.bM * 3.1415927F * 2.0F);
f1 = MathHelper.cos(this.bL * 3.1415927F * 2.0F);
if (f1 <= -0.3F && f >= -0.3F) {
this.world.b(this.locX, this.locY, this.locZ, "mob.enderdragon.wings", 5.0F, 0.8F + this.random.nextFloat() * 0.3F);
}
}
this.bN = this.bO;
this.bL = this.bM;
float f2;
if (this.health <= 0) {
@ -103,10 +103,10 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
this.h();
f = 0.2F / (MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 10.0F + 1.0F);
f *= (float) Math.pow(2.0D, this.motY);
if (this.bQ) {
this.bO += f * 0.5F;
if (this.bO) {
this.bM += f * 0.5F;
} else {
this.bO += f;
this.bM += f;
}
this.yaw = MathHelper.g(this.yaw);
@ -130,14 +130,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
float f3;
if (this.world.isStatic) {
if (this.bu > 0) {
d0 = this.locX + (this.bv - this.locX) / (double) this.bu;
d1 = this.locY + (this.bw - this.locY) / (double) this.bu;
d2 = this.locZ + (this.bx - this.locZ) / (double) this.bu;
d3 = MathHelper.g(this.by - (double) this.yaw);
this.yaw = (float) ((double) this.yaw + d3 / (double) this.bu);
this.pitch = (float) ((double) this.pitch + (this.bz - (double) this.pitch) / (double) this.bu);
--this.bu;
if (this.bs > 0) {
d0 = this.locX + (this.bt - this.locX) / (double) this.bs;
d1 = this.locY + (this.bu - this.locY) / (double) this.bs;
d2 = this.locZ + (this.bv - this.locZ) / (double) this.bs;
d3 = MathHelper.g(this.bw - (double) this.yaw);
this.yaw = (float) ((double) this.yaw + d3 / (double) this.bs);
this.pitch = (float) ((double) this.pitch + (this.bx - (double) this.pitch) / (double) this.bs);
--this.bs;
this.setPosition(d0, d1, d2);
this.b(this.yaw, this.pitch);
}
@ -146,9 +146,9 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
d1 = this.b - this.locY;
d2 = this.c - this.locZ;
d3 = d0 * d0 + d1 * d1 + d2 * d2;
if (this.bT != null) {
this.a = this.bT.locX;
this.c = this.bT.locZ;
if (this.bR != null) {
this.a = this.bR.locX;
this.c = this.bR.locZ;
double d4 = this.a - this.locX;
double d5 = this.c - this.locZ;
double d6 = Math.sqrt(d4 * d4 + d5 * d5);
@ -158,13 +158,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
d7 = 10.0D;
}
this.b = this.bT.boundingBox.b + d7;
this.b = this.bR.boundingBox.b + d7;
} else {
this.a += this.random.nextGaussian() * 2.0D;
this.c += this.random.nextGaussian() * 2.0D;
}
if (this.bP || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.G) {
if (this.bN || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.G) {
this.i();
}
@ -199,7 +199,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
f4 = 0.0F;
}
this.bF *= 0.8F;
this.bD *= 0.8F;
float f5 = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 1.0F + 1.0F;
double d10 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 1.0D + 1.0D;
@ -207,13 +207,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
d10 = 40.0D;
}
this.bF = (float) ((double) this.bF + d9 * (0.699999988079071D / d10 / (double) f5));
this.yaw += this.bF * 0.1F;
this.bD = (float) ((double) this.bD + d9 * (0.699999988079071D / d10 / (double) f5));
this.yaw += this.bD * 0.1F;
float f6 = (float) (2.0D / (d10 + 1.0D));
float f7 = 0.06F;
this.a(0.0F, -1.0F, f7 * (f4 * f6 + (1.0F - f6)));
if (this.bQ) {
if (this.bO) {
this.move(this.motX * 0.800000011920929D, this.motY * 0.800000011920929D, this.motZ * 0.800000011920929D);
} else {
this.move(this.motX, this.motY, this.motZ);
@ -232,13 +232,13 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
this.g.width = this.g.length = 3.0F;
this.i.width = this.i.length = 2.0F;
this.j.width = this.j.length = 2.0F;
this.bK.width = this.bK.length = 2.0F;
this.bI.width = this.bI.length = 2.0F;
this.h.length = 3.0F;
this.h.width = 5.0F;
this.bL.length = 2.0F;
this.bL.width = 4.0F;
this.bM.length = 3.0F;
this.bM.width = 4.0F;
this.bJ.length = 2.0F;
this.bJ.width = 4.0F;
this.bK.length = 3.0F;
this.bK.width = 4.0F;
f1 = (float) (this.a(5, 1.0F)[1] - this.a(10, 1.0F)[1]) * 10.0F / 180.0F * 3.1415927F;
f2 = MathHelper.cos(f1);
float f9 = -MathHelper.sin(f1);
@ -248,21 +248,21 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
this.h.j_();
this.h.setPositionRotation(this.locX + (double) (f11 * 0.5F), this.locY, this.locZ - (double) (f12 * 0.5F), 0.0F, 0.0F);
this.bL.j_();
this.bL.setPositionRotation(this.locX + (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ + (double) (f11 * 4.5F), 0.0F, 0.0F);
this.bM.j_();
this.bM.setPositionRotation(this.locX - (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ - (double) (f11 * 4.5F), 0.0F, 0.0F);
this.bJ.j_();
this.bJ.setPositionRotation(this.locX + (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ + (double) (f11 * 4.5F), 0.0F, 0.0F);
this.bK.j_();
this.bK.setPositionRotation(this.locX - (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ - (double) (f11 * 4.5F), 0.0F, 0.0F);
if (!this.world.isStatic && this.hurtTicks == 0) {
this.a(this.world.getEntities(this, this.bL.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D)));
this.a(this.world.getEntities(this, this.bM.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D)));
this.a(this.world.getEntities(this, this.bJ.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D)));
this.a(this.world.getEntities(this, this.bK.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D)));
this.b(this.world.getEntities(this, this.g.boundingBox.grow(1.0D, 1.0D, 1.0D)));
}
double[] adouble = this.a(5, 1.0F);
double[] adouble1 = this.a(0, 1.0F);
f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.bF * 0.01F);
float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.bF * 0.01F);
f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.bD * 0.01F);
float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.bD * 0.01F);
this.g.j_();
this.g.setPositionRotation(this.locX + (double) (f3 * 5.5F * f2), this.locY + (adouble1[1] - adouble[1]) * 1.0D + (double) (f9 * 5.5F), this.locZ - (double) (f13 * 5.5F * f2), 0.0F, 0.0F);
@ -279,7 +279,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
if (j == 2) {
entitycomplexpart = this.bK;
entitycomplexpart = this.bI;
}
double[] adouble2 = this.a(12 + j * 2, 1.0F);
@ -294,19 +294,19 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
if (!this.world.isStatic) {
this.bQ = this.a(this.g.boundingBox) | this.a(this.h.boundingBox);
this.bO = this.a(this.g.boundingBox) | this.a(this.h.boundingBox);
}
}
}
private void h() {
if (this.bS != null) {
if (this.bS.dead) {
if (this.bQ != null) {
if (this.bQ.dead) {
if (!this.world.isStatic) {
this.a(this.g, DamageSource.EXPLOSION, 10);
}
this.bS = null;
this.bQ = null;
} else if (this.ticksLived % 10 == 0 && this.health < this.getMaxHealth()) {
// CraftBukkit start
EntityRegainHealthEvent event = new EntityRegainHealthEvent(this.getBukkitEntity(), 1, EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL);
@ -336,7 +336,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
}
this.bS = entityendercrystal;
this.bQ = entityendercrystal;
}
}
@ -359,10 +359,8 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
private void b(List list) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i);
if (entity instanceof EntityLiving) {
// CraftBukkit start - throw damage events when the dragon attacks
@ -384,9 +382,9 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
private void i() {
this.bP = false;
this.bN = false;
if (this.random.nextInt(2) == 0 && !this.world.players.isEmpty()) {
this.bT = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size()));
this.bR = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size()));
} else {
boolean flag = false;
@ -403,7 +401,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
flag = d0 * d0 + d1 * d1 + d2 * d2 > 100.0D;
} while (!flag);
this.bT = null;
this.bR = null;
}
}
@ -484,7 +482,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
this.a = this.locX + (double) (f1 * 5.0F) + (double) ((this.random.nextFloat() - 0.5F) * 2.0F);
this.b = this.locY + (double) (this.random.nextFloat() * 3.0F) + 1.0D;
this.c = this.locZ - (double) (f2 * 5.0F) + (double) ((this.random.nextFloat() - 0.5F) * 2.0F);
this.bT = null;
this.bR = null;
if (damagesource.getEntity() instanceof EntityHuman || damagesource == DamageSource.EXPLOSION) {
this.dealDamage(damagesource, i);
}
@ -500,9 +498,9 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
return super.damageEntity(damagesource, i);
}
protected void aO() {
++this.bR;
if (this.bR >= 180 && this.bR <= 200) {
protected void aP() {
++this.bP;
if (this.bP >= 180 && this.bP <= 200) {
float f = (this.random.nextFloat() - 0.5F) * 8.0F;
float f1 = (this.random.nextFloat() - 0.5F) * 4.0F;
float f2 = (this.random.nextFloat() - 0.5F) * 8.0F;
@ -514,7 +512,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
int j;
if (!this.world.isStatic) {
if (this.bR > 150 && this.bR % 5 == 0) {
if (this.bP > 150 && this.bP % 5 == 0) {
i = expToDrop / 12; // CraftBukkit - drop experience as dragon falls from sky. use experience drop from death event. This is now set in getExpReward()
while (i > 0) {
@ -524,14 +522,14 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
}
}
if (this.bR == 1) {
if (this.bP == 1) {
this.world.e(1018, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
}
}
this.move(0.0D, 0.10000000149011612D, 0.0D);
this.aw = this.yaw += 20.0F;
if (this.bR == 200 && !this.world.isStatic) {
if (this.bP == 200 && !this.world.isStatic) {
i = expToDrop - 10 * (expToDrop / 12); // CraftBukkit - drop the remaining experience
while (i > 0) {
@ -611,7 +609,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
BlockEnderPortal.a = false;
}
protected void bh() {}
protected void bk() {}
public Entity[] ao() {
return this.children;
@ -625,15 +623,15 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
return this.world;
}
protected String aW() {
protected String aY() {
return "mob.enderdragon.growl";
}
protected String aX() {
protected String aZ() {
return "mob.enderdragon.hit";
}
protected float aV() {
protected float aX() {
return 5.0F;
}

Datei anzeigen

@ -18,7 +18,7 @@ public class EntityEnderPearl extends EntityProjectile {
protected void a(MovingObjectPosition movingobjectposition) {
if (movingobjectposition.entity != null) {
movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.shooter), 0);
movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.getShooter()), 0);
}
for (int i = 0; i < 32; ++i) {
@ -26,8 +26,8 @@ public class EntityEnderPearl extends EntityProjectile {
}
if (!this.world.isStatic) {
if (this.shooter != null && this.shooter instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) this.shooter;
if (this.getShooter() != null && this.getShooter() instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) this.getShooter();
if (!entityplayer.netServerHandler.disconnected && entityplayer.world == this.world) {
// CraftBukkit start
@ -41,7 +41,7 @@ public class EntityEnderPearl extends EntityProjectile {
if (!teleEvent.isCancelled() && !entityplayer.netServerHandler.disconnected) {
entityplayer.netServerHandler.teleport(teleEvent.getTo());
this.shooter.fallDistance = 0.0F;
this.getShooter().fallDistance = 0.0F;
EntityDamageByEntityEvent damageEvent = new EntityDamageByEntityEvent(this.getBukkitEntity(), player, EntityDamageByEntityEvent.DamageCause.FALL, 5);
Bukkit.getPluginManager().callEvent(damageEvent);

Datei anzeigen

@ -15,7 +15,7 @@ public class EntityEnderman extends EntityMonster {
public EntityEnderman(World world) {
super(world);
this.texture = "/mob/enderman.png";
this.bI = 0.2F;
this.bG = 0.2F;
this.a(0.6F, 2.9F);
this.X = 1.0F;
}
@ -78,7 +78,7 @@ public class EntityEnderman extends EntityMonster {
vec3d1 = vec3d1.a();
double d1 = vec3d.b(vec3d1);
return d1 > 1.0D - 0.025D / d0 ? entityhuman.m(this) : false;
return d1 > 1.0D - 0.025D / d0 ? entityhuman.n(this) : false;
}
}
@ -87,7 +87,7 @@ public class EntityEnderman extends EntityMonster {
this.damageEntity(DamageSource.DROWN, 1);
}
this.bI = this.target != null ? 6.5F : 0.3F;
this.bG = this.target != null ? 6.5F : 0.3F;
int i;
if (!this.world.isStatic && this.world.getGameRules().getBoolean("mobGriefing")) {
@ -135,10 +135,10 @@ public class EntityEnderman extends EntityMonster {
this.world.addParticle("portal", this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length - 0.25D, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, (this.random.nextDouble() - 0.5D) * 2.0D, -this.random.nextDouble(), (this.random.nextDouble() - 0.5D) * 2.0D);
}
if (this.world.t() && !this.world.isStatic) {
if (this.world.u() && !this.world.isStatic) {
float f = this.c(1.0F);
if (f > 0.5F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
if (f > 0.5F && this.world.k(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
this.target = null;
this.f(false);
this.m();
@ -151,7 +151,7 @@ public class EntityEnderman extends EntityMonster {
this.m();
}
this.bG = false;
this.bE = false;
if (this.target != null) {
this.a(this.target, 100.0F, 100.0F);
}
@ -159,14 +159,14 @@ public class EntityEnderman extends EntityMonster {
if (!this.world.isStatic && this.isAlive()) {
if (this.target != null) {
if (this.target instanceof EntityHuman && this.d((EntityHuman) this.target)) {
this.bD = this.bE = 0.0F;
this.bI = 0.0F;
this.bB = this.bC = 0.0F;
this.bG = 0.0F;
if (this.target.e((Entity) this) < 16.0D) {
this.m();
}
this.e = 0;
} else if (this.target.e((Entity) this) > 256.0D && this.e++ >= 30 && this.o(this.target)) {
} else if (this.target.e((Entity) this) > 256.0D && this.e++ >= 30 && this.p(this.target)) {
this.e = 0;
}
} else {
@ -186,7 +186,7 @@ public class EntityEnderman extends EntityMonster {
return this.j(d0, d1, d2);
}
protected boolean o(Entity entity) {
protected boolean p(Entity entity) {
Vec3D vec3d = this.world.getVec3DPool().create(this.locX - entity.locX, this.boundingBox.b + (double) (this.length / 2.0F) - entity.locY + (double) entity.getHeadHeight(), this.locZ - entity.locZ);
vec3d = vec3d.a();
@ -262,20 +262,20 @@ public class EntityEnderman extends EntityMonster {
}
this.world.makeSound(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F);
this.world.makeSound(this, "mob.endermen.portal", 1.0F, 1.0F);
this.makeSound("mob.endermen.portal", 1.0F, 1.0F);
return true;
}
}
protected String aW() {
protected String aY() {
return this.q() ? "mob.endermen.scream" : "mob.endermen.idle";
}
protected String aX() {
protected String aZ() {
return "mob.endermen.hit";
}
protected String aY() {
protected String ba() {
return "mob.endermen.death";
}
@ -317,7 +317,9 @@ public class EntityEnderman extends EntityMonster {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (damagesource instanceof EntityDamageSourceIndirect) {
if (this.isInvulnerable()) {
return false;
} else if (damagesource instanceof EntityDamageSourceIndirect) {
for (int j = 0; j < 64; ++j) {
if (this.m()) {
return true;

Datei anzeigen

@ -53,7 +53,7 @@ public class EntityExperienceOrb extends Entity {
this.motY = 0.20000000298023224D;
this.motX = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.motZ = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.world.makeSound(this, "random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
this.makeSound("random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
}
this.i(this.locX, (this.boundingBox.b + this.boundingBox.e) / 2.0D, this.locZ);
@ -123,13 +123,17 @@ public class EntityExperienceOrb extends Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
this.K();
this.d -= i;
if (this.d <= 0) {
this.die();
}
if (this.isInvulnerable()) {
return false;
} else {
this.K();
this.d -= i;
if (this.d <= 0) {
this.die();
}
return false;
return false;
}
}
public void b(NBTTagCompound nbttagcompound) {
@ -144,11 +148,11 @@ public class EntityExperienceOrb extends Entity {
this.value = nbttagcompound.getShort("Value");
}
public void b_(EntityHuman entityhuman) {
public void c_(EntityHuman entityhuman) {
if (!this.world.isStatic) {
if (this.c == 0 && entityhuman.bU == 0) {
entityhuman.bU = 2;
this.world.makeSound(this, "random.orb", 0.1F, 0.5F * ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.8F));
if (this.c == 0 && entityhuman.bR == 0) {
entityhuman.bR = 2;
this.makeSound("random.orb", 0.1F, 0.5F * ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.8F));
entityhuman.receive(this, 1);
entityhuman.giveExp(CraftEventFactory.callPlayerExpChangeEvent(entityhuman, this.value).getAmount()); // CraftBukkit - this.value to event.getAmount()
this.die();

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
import org.bukkit.event.entity.ProjectileHitEvent; // CraftBukkit
@ -105,10 +104,9 @@ public abstract class EntityFireball extends Entity {
Entity entity = null;
List list = this.world.getEntities(this, this.boundingBox.a(this.motX, this.motY, this.motZ).grow(1.0D, 1.0D, 1.0D));
double d0 = 0.0D;
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.L() && (!entity1.i(this.shooter) || this.as >= 25)) {
float f = 0.3F;
@ -169,7 +167,7 @@ public abstract class EntityFireball extends Entity {
float f2 = this.c();
if (this.H()) {
for (int j = 0; j < 4; ++j) {
for (int k = 0; k < 4; ++k) {
float f3 = 0.25F;
this.world.addParticle("bubble", this.locX - this.motX * (double) f3, this.locY - this.motY * (double) f3, this.locZ - this.motZ * (double) f3, this.motX, this.motY, this.motZ);
@ -230,26 +228,30 @@ public abstract class EntityFireball extends Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
this.K();
if (damagesource.getEntity() != null) {
Vec3D vec3d = damagesource.getEntity().Z();
if (vec3d != null) {
this.motX = vec3d.c;
this.motY = vec3d.d;
this.motZ = vec3d.e;
this.dirX = this.motX * 0.1D;
this.dirY = this.motY * 0.1D;
this.dirZ = this.motZ * 0.1D;
}
if (damagesource.getEntity() instanceof EntityLiving) {
this.shooter = (EntityLiving) damagesource.getEntity();
}
return true;
} else {
if (this.isInvulnerable()) {
return false;
} else {
this.K();
if (damagesource.getEntity() != null) {
Vec3D vec3d = damagesource.getEntity().Z();
if (vec3d != null) {
this.motX = vec3d.c;
this.motY = vec3d.d;
this.motZ = vec3d.e;
this.dirX = this.motX * 0.1D;
this.dirY = this.motY * 0.1D;
this.dirZ = this.motZ * 0.1D;
}
if (damagesource.getEntity() instanceof EntityLiving) {
this.shooter = (EntityLiving) damagesource.getEntity();
}
return true;
} else {
return false;
}
}
}

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -93,7 +92,7 @@ public class EntityFishingHook extends Entity {
this.b(this.yaw, this.pitch);
} else {
if (!this.world.isStatic) {
ItemStack itemstack = this.owner.bP();
ItemStack itemstack = this.owner.bT();
if (this.owner.dead || !this.owner.isAlive() || itemstack == null || itemstack.getItem() != Item.FISHING_ROD || this.e(this.owner) > 1024.0D) {
this.die();
@ -152,12 +151,11 @@ public class EntityFishingHook extends Entity {
Entity entity = null;
List list = this.world.getEntities(this, this.boundingBox.a(this.motX, this.motY, this.motZ).grow(1.0D, 1.0D, 1.0D));
double d4 = 0.0D;
Iterator iterator = list.iterator();
double d5;
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.L() && (entity1 != this.owner || this.j >= 5)) {
float f = 0.3F;
@ -221,9 +219,9 @@ public class EntityFishingHook extends Entity {
byte b0 = 5;
double d6 = 0.0D;
for (int j = 0; j < b0; ++j) {
double d7 = this.boundingBox.b + (this.boundingBox.e - this.boundingBox.b) * (double) (j + 0) / (double) b0 - 0.125D + 0.125D;
double d8 = this.boundingBox.b + (this.boundingBox.e - this.boundingBox.b) * (double) (j + 1) / (double) b0 - 0.125D + 0.125D;
for (int k = 0; k < b0; ++k) {
double d7 = this.boundingBox.b + (this.boundingBox.e - this.boundingBox.b) * (double) (k + 0) / (double) b0 - 0.125D + 0.125D;
double d8 = this.boundingBox.b + (this.boundingBox.e - this.boundingBox.b) * (double) (k + 1) / (double) b0 - 0.125D + 0.125D;
AxisAlignedBB axisalignedbb1 = AxisAlignedBB.a().a(this.boundingBox.a, d7, this.boundingBox.c, this.boundingBox.d, d8, this.boundingBox.f);
if (this.world.b(axisalignedbb1, Material.WATER)) {
@ -237,27 +235,27 @@ public class EntityFishingHook extends Entity {
} else {
short short1 = 500;
if (this.world.B(MathHelper.floor(this.locX), MathHelper.floor(this.locY) + 1, MathHelper.floor(this.locZ))) {
if (this.world.D(MathHelper.floor(this.locX), MathHelper.floor(this.locY) + 1, MathHelper.floor(this.locZ))) {
short1 = 300;
}
if (this.random.nextInt(short1) == 0) {
this.as = this.random.nextInt(30) + 10;
this.motY -= 0.20000000298023224D;
this.world.makeSound(this, "random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.makeSound("random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f3 = (float) MathHelper.floor(this.boundingBox.b);
float f4;
int k;
int l;
float f5;
for (k = 0; (float) k < 1.0F + this.width * 20.0F; ++k) {
for (l = 0; (float) l < 1.0F + this.width * 20.0F; ++l) {
f5 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f4 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("bubble", this.locX + (double) f5, (double) (f3 + 1.0F), this.locZ + (double) f4, this.motX, this.motY - (double) (this.random.nextFloat() * 0.2F), this.motZ);
}
for (k = 0; (float) k < 1.0F + this.width * 20.0F; ++k) {
for (l = 0; (float) l < 1.0F + this.width * 20.0F; ++l) {
f5 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
f4 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
this.world.addParticle("splash", this.locX + (double) f5, (double) (f3 + 1.0F), this.locZ + (double) f4, this.motX, this.motY, this.motZ);

Datei anzeigen

@ -26,7 +26,9 @@ public class EntityGhast extends EntityFlying implements IMonster {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if ("fireball".equals(damagesource.l()) && damagesource.getEntity() instanceof EntityHuman) {
if (this.isInvulnerable()) {
return false;
} else if ("fireball".equals(damagesource.l()) && damagesource.getEntity() instanceof EntityHuman) {
super.damageEntity(damagesource, 1000);
((EntityHuman) damagesource.getEntity()).a((Statistic) AchievementList.y);
return true;
@ -51,12 +53,12 @@ public class EntityGhast extends EntityFlying implements IMonster {
this.texture = b0 == 1 ? "/mob/ghast_fire.png" : "/mob/ghast.png";
}
protected void bk() {
protected void bn() {
if (!this.world.isStatic && this.world.difficulty == 0) {
this.die();
}
this.bh();
this.bk();
this.f = this.g;
double d0 = this.c - this.locX;
double d1 = this.d - this.locY;
@ -128,7 +130,7 @@ public class EntityGhast extends EntityFlying implements IMonster {
double d7 = this.target.locZ - this.locZ;
this.aw = this.yaw = -((float) Math.atan2(d5, d7)) * 180.0F / 3.1415927F;
if (this.m(this.target)) {
if (this.n(this.target)) {
if (this.g == 10) {
this.world.a((EntityHuman) null, 1007, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
}
@ -182,15 +184,15 @@ public class EntityGhast extends EntityFlying implements IMonster {
return true;
}
protected String aW() {
protected String aY() {
return "mob.ghast.moan";
}
protected String aX() {
protected String aZ() {
return "mob.ghast.scream";
}
protected String aY() {
protected String ba() {
return "mob.ghast.death";
}
@ -219,7 +221,7 @@ public class EntityGhast extends EntityFlying implements IMonster {
// CraftBukkit end
}
protected float aV() {
protected float aX() {
return 10.0F;
}
@ -227,7 +229,7 @@ public class EntityGhast extends EntityFlying implements IMonster {
return this.random.nextInt(20) == 0 && super.canSpawn() && this.world.difficulty > 0;
}
public int bs() {
public int bv() {
return 1;
}
}

Datei anzeigen

@ -203,50 +203,58 @@ public abstract class EntityHanging extends Entity {
return true;
}
public boolean j(Entity entity) {
return entity instanceof EntityHuman ? this.damageEntity(DamageSource.playerAttack((EntityHuman) entity), 0) : false;
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (!this.dead && !this.world.isStatic) {
// CraftBukkit start
HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.DEFAULT);
PaintingBreakEvent paintingEvent = null;
if (damagesource.getEntity() != null) {
event = new HangingBreakByEntityEvent((Hanging) this.getBukkitEntity(), damagesource.getEntity() == null ? null : damagesource.getEntity().getBukkitEntity());
if (this.isInvulnerable()) {
return false;
} else {
if (!this.dead && !this.world.isStatic) {
// CraftBukkit start
HangingBreakEvent event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.DEFAULT);
PaintingBreakEvent paintingEvent = null;
if (damagesource.getEntity() != null) {
event = new HangingBreakByEntityEvent((Hanging) this.getBukkitEntity(), damagesource.getEntity() == null ? null : damagesource.getEntity().getBukkitEntity());
if (this instanceof EntityPainting) {
// Fire old painting event until it can be removed
paintingEvent = new org.bukkit.event.painting.PaintingBreakByEntityEvent((Painting) this.getBukkitEntity(), damagesource.getEntity() == null ? null : damagesource.getEntity().getBukkitEntity());
if (this instanceof EntityPainting) {
// Fire old painting event until it can be removed
paintingEvent = new org.bukkit.event.painting.PaintingBreakByEntityEvent((Painting) this.getBukkitEntity(), damagesource.getEntity() == null ? null : damagesource.getEntity().getBukkitEntity());
}
} else if (damagesource == DamageSource.EXPLOSION || damagesource == DamageSource.EXPLOSION2) {
event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.EXPLOSION);
}
} else if (damagesource == DamageSource.EXPLOSION || damagesource == DamageSource.EXPLOSION2) {
event = new HangingBreakEvent((Hanging) this.getBukkitEntity(), HangingBreakEvent.RemoveCause.EXPLOSION);
this.world.getServer().getPluginManager().callEvent(event);
if (paintingEvent != null) {
paintingEvent.setCancelled(event.isCancelled());
this.world.getServer().getPluginManager().callEvent(paintingEvent);
}
if (dead || event.isCancelled() || (paintingEvent != null && paintingEvent.isCancelled())) {
return true;
}
// CraftBukkit end
this.die();
this.K();
EntityHuman entityhuman = null;
if (damagesource.getEntity() instanceof EntityHuman) {
entityhuman = (EntityHuman) damagesource.getEntity();
}
if (entityhuman != null && entityhuman.abilities.canInstantlyBuild) {
return true;
}
this.h();
}
this.world.getServer().getPluginManager().callEvent(event);
if (paintingEvent != null) {
paintingEvent.setCancelled(event.isCancelled());
this.world.getServer().getPluginManager().callEvent(paintingEvent);
}
if (dead || event.isCancelled() || (paintingEvent != null && paintingEvent.isCancelled())) {
return true;
}
// CraftBukkit end
this.die();
this.K();
EntityHuman entityhuman = null;
if (damagesource.getEntity() instanceof EntityHuman) {
entityhuman = (EntityHuman) damagesource.getEntity();
}
if (entityhuman != null && entityhuman.abilities.canInstantlyBuild) {
return true;
}
this.h();
return true;
}
return true;
}
public void move(double d0, double d1, double d2) {

Datei anzeigen

@ -20,19 +20,18 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public Container defaultContainer;
public Container activeContainer;
protected FoodMetaData foodData = new FoodMetaData();
protected int bO = 0;
public byte bP = 0;
public int bQ = 0;
public float bR;
public float bS;
protected int bM = 0;
public byte bN = 0;
public float bO;
public float bP;
public String name;
public int bU = 0;
public int bR = 0;
public double bS;
public double bT;
public double bU;
public double bV;
public double bW;
public double bX;
public double bY;
public double bZ;
public double ca;
// CraftBukkit start
public boolean sleeping; // protected -> public
public boolean fauxSleeping;
@ -43,10 +42,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
// CraftBukkit end
public ChunkCoordinates cc;
public ChunkCoordinates bZ;
public int sleepTicks; // CraftBukkit - private -> public
public float cd;
public float ce;
public float ca;
public float cb;
private ChunkCoordinates c;
private boolean d;
private ChunkCoordinates e;
@ -57,8 +56,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public float exp;
private ItemStack f;
private int g;
protected float cj = 0.1F;
protected float ck = 0.02F;
protected float cg = 0.1F;
protected float ch = 0.02F;
private int h = 0;
public EntityFishingHook hookedFish = null;
@ -84,21 +83,22 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
super.a();
this.datawatcher.a(16, Byte.valueOf((byte) 0));
this.datawatcher.a(17, Byte.valueOf((byte) 0));
this.datawatcher.a(18, Integer.valueOf(0));
}
public boolean bI() {
public boolean bM() {
return this.f != null;
}
public void bK() {
public void bO() {
if (this.f != null) {
this.f.b(this.world, this, this.g);
}
this.bL();
this.bP();
}
public void bL() {
public void bP() {
this.f = null;
this.g = 0;
if (!this.world.isStatic) {
@ -106,8 +106,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
public boolean be() {
return this.bI() && Item.byId[this.f.id].d_(this.f) == EnumAnimation.d;
public boolean bh() {
return this.bM() && Item.byId[this.f.id].d_(this.f) == EnumAnimation.d;
}
public void j_() {
@ -123,12 +123,12 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.n();
}
} else {
this.bL();
this.bP();
}
}
if (this.bU > 0) {
--this.bU;
if (this.bR > 0) {
--this.bR;
}
if (this.isSleeping()) {
@ -140,7 +140,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
if (!this.world.isStatic) {
if (!this.j()) {
this.a(true, true, false);
} else if (this.world.t()) {
} else if (this.world.u()) {
this.a(false, true, true);
}
}
@ -152,7 +152,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
super.j_();
if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.c(this)) {
if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.a(this)) {
this.closeInventory();
this.activeContainer = this.defaultContainer;
}
@ -161,41 +161,41 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.extinguish();
}
this.bV = this.bY;
this.bW = this.bZ;
this.bX = this.ca;
double d0 = this.locX - this.bY;
double d1 = this.locY - this.bZ;
double d2 = this.locZ - this.ca;
this.bS = this.bV;
this.bT = this.bW;
this.bU = this.bX;
double d0 = this.locX - this.bV;
double d1 = this.locY - this.bW;
double d2 = this.locZ - this.bX;
double d3 = 10.0D;
if (d0 > d3) {
this.bV = this.bY = this.locX;
this.bS = this.bV = this.locX;
}
if (d2 > d3) {
this.bX = this.ca = this.locZ;
this.bU = this.bX = this.locZ;
}
if (d1 > d3) {
this.bW = this.bZ = this.locY;
this.bT = this.bW = this.locY;
}
if (d0 < -d3) {
this.bV = this.bY = this.locX;
this.bS = this.bV = this.locX;
}
if (d2 < -d3) {
this.bX = this.ca = this.locZ;
this.bU = this.bX = this.locZ;
}
if (d1 < -d3) {
this.bW = this.bZ = this.locY;
this.bT = this.bW = this.locY;
}
this.bY += d0 * 0.25D;
this.ca += d2 * 0.25D;
this.bZ += d1 * 0.25D;
this.bV += d0 * 0.25D;
this.bX += d2 * 0.25D;
this.bW += d1 * 0.25D;
this.a(StatisticList.k, 1);
if (this.vehicle == null) {
this.e = null;
@ -214,9 +214,13 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return 10;
}
protected void makeSound(String s, float f, float f1) {
this.world.a(this, s, f, f1);
}
protected void c(ItemStack itemstack, int i) {
if (itemstack.n() == EnumAnimation.c) {
this.world.makeSound(this, "random.drink", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
this.makeSound("random.drink", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
}
if (itemstack.n() == EnumAnimation.b) {
@ -233,7 +237,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.world.addParticle("iconcrack_" + itemstack.getItem().id, vec3d1.c, vec3d1.d, vec3d1.e, vec3d.c, vec3d.d + 0.05D, vec3d.e);
}
this.world.makeSound(this, "random.eat", 0.5F + 0.5F * (float) this.random.nextInt(2), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.makeSound("random.eat", 0.5F + 0.5F * (float) this.random.nextInt(2), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
}
@ -250,11 +254,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
this.bL();
this.bP();
}
}
protected boolean bd() {
protected boolean bg() {
return this.getHealth() <= 0 || this.isSleeping();
}
@ -271,8 +275,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
float f1 = this.pitch;
super.U();
this.bR = this.bS;
this.bS = 0.0F;
this.bO = this.bP;
this.bP = 0.0F;
this.k(this.locX - d0, this.locY - d1, this.locZ - d2);
if (this.vehicle instanceof EntityPig) {
this.pitch = f1;
@ -281,13 +285,13 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
protected void bk() {
this.bl();
protected void bn() {
this.bo();
}
public void c() {
if (this.bO > 0) {
--this.bO;
if (this.bM > 0) {
--this.bM;
}
if (this.world.difficulty == 0 && this.getHealth() < this.getMaxHealth() && this.ticksLived % 20 * 12 == 0) {
@ -296,13 +300,13 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
this.inventory.j();
this.bR = this.bS;
this.bO = this.bP;
super.c();
this.aM = this.abilities.b();
this.aN = this.ck;
this.aN = this.ch;
if (this.isSprinting()) {
this.aM = (float) ((double) this.aM + (double) this.abilities.b() * 0.3D);
this.aN = (float) ((double) this.aN + (double) this.ck * 0.3D);
this.aN = (float) ((double) this.aN + (double) this.ch * 0.3D);
}
float f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ);
@ -321,27 +325,39 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
f1 = 0.0F;
}
this.bS += (f - this.bS) * 0.4F;
this.bP += (f - this.bP) * 0.4F;
this.ba += (f1 - this.ba) * 0.8F;
if (this.getHealth() > 0) {
List list = this.world.getEntities(this, this.boundingBox.grow(1.0D, 0.0D, 1.0D));
List list = this.world.getEntities(this, this.boundingBox.grow(1.0D, 0.5D, 1.0D));
if (list != null) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i);
if (!entity.dead) {
this.q(entity);
this.r(entity);
}
}
}
}
}
private void q(Entity entity) {
entity.b_(this);
private void r(Entity entity) {
entity.c_(this);
}
public int getScore() {
return this.datawatcher.getInt(18);
}
public void setScore(int i) {
this.datawatcher.watch(18, Integer.valueOf(i));
}
public void addScore(int i) {
int j = this.getScore();
this.datawatcher.watch(18, Integer.valueOf(j + i));
}
public void die(DamageSource damagesource) {
@ -369,7 +385,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
public void c(Entity entity, int i) {
this.bQ += i;
this.addScore(i);
if (entity instanceof EntityHuman) {
this.a(StatisticList.A, 1);
} else {
@ -377,7 +393,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
public EntityItem bN() {
public EntityItem bR() {
return this.a(this.inventory.splitStack(this.inventory.itemInHandIndex, 1), false);
}
@ -479,8 +495,9 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.exp = nbttagcompound.getFloat("XpP");
this.expLevel = nbttagcompound.getInt("XpLevel");
this.expTotal = nbttagcompound.getInt("XpTotal");
this.setScore(nbttagcompound.getInt("Score"));
if (this.sleeping) {
this.cc = new ChunkCoordinates(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ));
this.bZ = new ChunkCoordinates(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ));
this.a(true, true, false);
}
@ -513,6 +530,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
nbttagcompound.setFloat("XpP", this.exp);
nbttagcompound.setInt("XpLevel", this.expLevel);
nbttagcompound.setInt("XpTotal", this.expTotal);
nbttagcompound.setInt("Score", this.getScore());
if (this.c != null) {
nbttagcompound.setInt("SpawnX", this.c.x);
nbttagcompound.setInt("SpawnY", this.c.y);
@ -543,10 +561,12 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (this.abilities.isInvulnerable && !damagesource.ignoresInvulnerability()) {
if (this.isInvulnerable()) {
return false;
} else if (this.abilities.isInvulnerable && !damagesource.ignoresInvulnerability()) {
return false;
} else {
this.bC = 0;
this.bA = 0;
if (this.getHealth() <= 0) {
return false;
} else {
@ -646,11 +666,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.inventory.g(i);
}
public int aU() {
public int aW() {
return this.inventory.k();
}
public float bO() {
public float bS() {
int i = 0;
ItemStack[] aitemstack = this.inventory.armor;
int j = aitemstack.length;
@ -667,8 +687,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
protected void d(DamageSource damagesource, int i) {
if (!this.invulnerable) {
if (!damagesource.ignoresArmor() && this.be()) {
if (!this.isInvulnerable()) {
if (!damagesource.ignoresArmor() && this.bh()) {
i = 1 + i >> 1;
}
@ -693,11 +713,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void d(ItemStack itemstack) {}
public boolean o(Entity entity) {
if (entity.c(this)) {
public boolean p(Entity entity) {
if (entity.a(this)) {
return true;
} else {
ItemStack itemstack = this.bP();
ItemStack itemstack = this.bT();
if (itemstack != null && entity instanceof EntityLiving) {
if (this.abilities.canInstantlyBuild) {
@ -707,7 +727,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
if (itemstack.a((EntityLiving) entity)) {
// CraftBukkit - bypass infinite items; <= 0 -> == 0
if (itemstack.count == 0 && !this.abilities.canInstantlyBuild) {
this.bQ();
this.bU();
}
return true;
@ -718,11 +738,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
public ItemStack bP() {
public ItemStack bT() {
return this.inventory.getItemInHand();
}
public void bQ() {
public void bU() {
this.inventory.setItem(this.inventory.itemInHandIndex, (ItemStack) null);
}
@ -732,98 +752,108 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void attack(Entity entity) {
if (entity.aq()) {
int i = this.inventory.a(entity);
if (!entity.j(this)) {
int i = this.inventory.a(entity);
if (this.hasEffect(MobEffectList.INCREASE_DAMAGE)) {
i += 3 << this.getEffect(MobEffectList.INCREASE_DAMAGE).getAmplifier();
}
if (this.hasEffect(MobEffectList.WEAKNESS)) {
i -= 2 << this.getEffect(MobEffectList.WEAKNESS).getAmplifier();
}
int j = 0;
int k = 0;
if (entity instanceof EntityLiving) {
k = EnchantmentManager.a((EntityLiving) this, (EntityLiving) entity);
j += EnchantmentManager.getKnockbackEnchantmentLevel(this, (EntityLiving) entity);
}
if (this.isSprinting()) {
++j;
}
if (i > 0 || k > 0) {
boolean flag = this.fallDistance > 0.0F && !this.onGround && !this.g_() && !this.H() && !this.hasEffect(MobEffectList.BLINDNESS) && this.vehicle == null && entity instanceof EntityLiving;
if (flag) {
i += this.random.nextInt(i / 2 + 2);
if (this.hasEffect(MobEffectList.INCREASE_DAMAGE)) {
i += 3 << this.getEffect(MobEffectList.INCREASE_DAMAGE).getAmplifier();
}
i += k;
boolean flag1 = entity.damageEntity(DamageSource.playerAttack(this), i);
// CraftBukkit start - Return when the damage fails so that the item will not lose durability
if (!flag1) {
return;
}
// CraftBukkit end
if (flag1) {
if (j > 0) {
entity.g((double) (-MathHelper.sin(this.yaw * 3.1415927F / 180.0F) * (float) j * 0.5F), 0.1D, (double) (MathHelper.cos(this.yaw * 3.1415927F / 180.0F) * (float) j * 0.5F));
this.motX *= 0.6D;
this.motZ *= 0.6D;
this.setSprinting(false);
}
if (flag) {
this.b(entity);
}
if (k > 0) {
this.c(entity);
}
if (i >= 18) {
this.a((Statistic) AchievementList.E);
}
this.k(entity);
if (this.hasEffect(MobEffectList.WEAKNESS)) {
i -= 2 << this.getEffect(MobEffectList.WEAKNESS).getAmplifier();
}
ItemStack itemstack = this.bP();
if (itemstack != null && entity instanceof EntityLiving) {
itemstack.a((EntityLiving) entity, this);
// CraftBukkit - bypass infinite items; <= 0 -> == 0
if (itemstack.count == 0) {
this.bQ();
}
}
int j = 0;
int k = 0;
if (entity instanceof EntityLiving) {
if (entity.isAlive()) {
this.a((EntityLiving) entity, true);
}
this.a(StatisticList.w, i);
int l = EnchantmentManager.getFireAspectEnchantmentLevel(this, (EntityLiving) entity);
if (l > 0 && flag1) {
// CraftBukkit start - raise a combust event when somebody hits with a fire enchanted item
EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity(), l * 4);
org.bukkit.Bukkit.getPluginManager().callEvent(combustEvent);
if (!combustEvent.isCancelled()) {
entity.setOnFire(combustEvent.getDuration());
}
// CraftBukkit end
}
k = EnchantmentManager.a((EntityLiving) this, (EntityLiving) entity);
j += EnchantmentManager.getKnockbackEnchantmentLevel(this, (EntityLiving) entity);
}
this.j(0.3F);
if (this.isSprinting()) {
++j;
}
if (i > 0 || k > 0) {
boolean flag = this.fallDistance > 0.0F && !this.onGround && !this.g_() && !this.H() && !this.hasEffect(MobEffectList.BLINDNESS) && this.vehicle == null && entity instanceof EntityLiving;
if (flag) {
i += this.random.nextInt(i / 2 + 2);
}
i += k;
boolean flag1 = false;
int l = EnchantmentManager.getFireAspectEnchantmentLevel(this);
if (entity instanceof EntityLiving && l > 0 && !entity.isBurning()) {
flag1 = true;
entity.setOnFire(1);
}
boolean flag2 = entity.damageEntity(DamageSource.playerAttack(this), i);
// CraftBukkit start - Return when the damage fails so that the item will not lose durability
if (!flag2) {
return;
}
// CraftBukkit end
if (flag2) {
if (j > 0) {
entity.g((double) (-MathHelper.sin(this.yaw * 3.1415927F / 180.0F) * (float) j * 0.5F), 0.1D, (double) (MathHelper.cos(this.yaw * 3.1415927F / 180.0F) * (float) j * 0.5F));
this.motX *= 0.6D;
this.motZ *= 0.6D;
this.setSprinting(false);
}
if (flag) {
this.b(entity);
}
if (k > 0) {
this.c(entity);
}
if (i >= 18) {
this.a((Statistic) AchievementList.E);
}
this.l(entity);
}
ItemStack itemstack = this.bT();
if (itemstack != null && entity instanceof EntityLiving) {
itemstack.a((EntityLiving) entity, this);
// CraftBukkit - bypass infinite items; <= 0 -> == 0
if (itemstack.count == 0) {
this.bU();
}
}
if (entity instanceof EntityLiving) {
if (entity.isAlive()) {
this.a((EntityLiving) entity, true);
}
this.a(StatisticList.w, i);
if (l > 0 && flag2) {
// CraftBukkit start - raise a combust event when somebody hits with a fire enchanted item
EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity(), l * 4);
org.bukkit.Bukkit.getPluginManager().callEvent(combustEvent);
if (!combustEvent.isCancelled()) {
entity.setOnFire(combustEvent.getDuration());
}
// CraftBukkit end
} else if (flag1) {
entity.extinguish();
}
}
this.j(0.3F);
}
}
}
}
@ -834,9 +864,9 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void die() {
super.die();
this.defaultContainer.a(this);
this.defaultContainer.b(this);
if (this.activeContainer != null) {
this.activeContainer.a(this);
this.activeContainer.b(this);
}
}
@ -844,7 +874,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return !this.sleeping && super.inBlock();
}
public boolean bS() {
public boolean bW() {
return false;
}
@ -858,7 +888,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return EnumBedResult.NOT_POSSIBLE_HERE;
}
if (this.world.t()) {
if (this.world.u()) {
return EnumBedResult.NOT_POSSIBLE_NOW;
}
@ -914,7 +944,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
f = 0.9F;
}
this.u(i1);
this.x(i1);
this.setPosition((double) ((float) i + f), (double) ((float) j + 0.9375F), (double) ((float) k + f1));
} else {
this.setPosition((double) ((float) i + 0.5F), (double) ((float) j + 0.9375F), (double) ((float) k + 0.5F));
@ -922,7 +952,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.sleeping = true;
this.sleepTicks = 0;
this.cc = new ChunkCoordinates(i, j, k);
this.bZ = new ChunkCoordinates(i, j, k);
this.motX = this.motZ = this.motY = 0.0D;
if (!this.world.isStatic) {
this.world.everyoneSleeping();
@ -931,32 +961,32 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return EnumBedResult.OK;
}
private void u(int i) {
this.cd = 0.0F;
this.ce = 0.0F;
private void x(int i) {
this.ca = 0.0F;
this.cb = 0.0F;
switch (i) {
case 0:
this.ce = -1.8F;
this.cb = -1.8F;
break;
case 1:
this.cd = 1.8F;
this.ca = 1.8F;
break;
case 2:
this.ce = 1.8F;
this.cb = 1.8F;
break;
case 3:
this.cd = -1.8F;
this.ca = -1.8F;
}
}
public void a(boolean flag, boolean flag1, boolean flag2) {
this.a(0.6F, 1.8F);
this.e_();
ChunkCoordinates chunkcoordinates = this.cc;
ChunkCoordinates chunkcoordinates1 = this.cc;
ChunkCoordinates chunkcoordinates = this.bZ;
ChunkCoordinates chunkcoordinates1 = this.bZ;
if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) == Block.BED.id) {
BlockBed.a(this.world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, false);
@ -996,27 +1026,32 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
if (flag2) {
this.setRespawnPosition(this.cc, false);
this.setRespawnPosition(this.bZ, false);
}
}
private boolean j() {
return this.world.getTypeId(this.cc.x, this.cc.y, this.cc.z) == Block.BED.id;
return this.world.getTypeId(this.bZ.x, this.bZ.y, this.bZ.z) == Block.BED.id;
}
public static ChunkCoordinates getBed(World world, ChunkCoordinates chunkcoordinates, boolean flag) {
IChunkProvider ichunkprovider = world.H();
IChunkProvider ichunkprovider = world.I();
ichunkprovider.getChunkAt(chunkcoordinates.x - 3 >> 4, chunkcoordinates.z - 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x + 3 >> 4, chunkcoordinates.z - 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x - 3 >> 4, chunkcoordinates.z + 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x + 3 >> 4, chunkcoordinates.z + 3 >> 4);
if (world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) != Block.BED.id) {
return flag && world.isEmpty(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) && world.isEmpty(chunkcoordinates.x, chunkcoordinates.y + 1, chunkcoordinates.z) ? chunkcoordinates : null;
} else {
if (world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) == Block.BED.id) {
ChunkCoordinates chunkcoordinates1 = BlockBed.b(world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, 0);
return chunkcoordinates1;
} else {
Material material = world.getMaterial(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z);
Material material1 = world.getMaterial(chunkcoordinates.x, chunkcoordinates.y + 1, chunkcoordinates.z);
boolean flag1 = !material.isBuildable() && !material.isLiquid();
boolean flag2 = !material1.isBuildable() && !material1.isLiquid();
return flag && flag1 && flag2 ? chunkcoordinates : null;
}
}
@ -1065,8 +1100,8 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void a(Statistic statistic, int i) {}
protected void bf() {
super.bf();
protected void bi() {
super.bi();
this.a(StatisticList.u, 1);
if (this.isSprinting()) {
this.j(0.8F);
@ -1171,16 +1206,22 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
}
}
public void am() {
if (!this.abilities.isFlying) {
super.am();
}
}
public ItemStack q(int i) {
return this.inventory.f(i);
}
protected void bB() {}
protected void bE() {}
protected void bC() {}
protected void bF() {}
public void giveExp(int i) {
this.bQ += i;
this.addScore(i);
int j = Integer.MAX_VALUE - this.expTotal;
if (i > j) {
@ -1204,7 +1245,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
if (i > 0 && this.expLevel % 5 == 0 && (float) this.h < (float) this.ticksLived - 100.0F) {
float f = this.expLevel > 30 ? 1.0F : (float) this.expLevel / 30.0F;
this.world.makeSound(this, "random.levelup", f * 0.75F, 1.0F);
this.makeSound("random.levelup", f * 0.75F, 1.0F);
this.h = this.ticksLived;
}
}
@ -1229,7 +1270,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return (flag || this.foodData.c()) && !this.abilities.isInvulnerable;
}
public boolean ca() {
public boolean ce() {
return this.getHealth() > 0 && this.getHealth() < this.getMaxHealth();
}
@ -1249,13 +1290,20 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
} else {
int l = this.world.getTypeId(i, j, k);
if (l > 0 && this.bP() != null) {
if (l > 0) {
Block block = Block.byId[l];
ItemStack itemstack = this.bP();
if (itemstack.b(block) || itemstack.a(block) > 1.0F) {
if (block.material.q()) {
return true;
}
if (this.bT() != null) {
ItemStack itemstack = this.bT();
if (itemstack.b(block) || itemstack.a(block) > 1.0F) {
return true;
}
}
}
return false;
@ -1292,14 +1340,14 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
this.expLevel = entityhuman.expLevel;
this.expTotal = entityhuman.expTotal;
this.exp = entityhuman.exp;
this.bQ = entityhuman.bQ;
this.setScore(entityhuman.getScore());
this.aq = entityhuman.aq;
} else if (this.world.getGameRules().getBoolean("keepInventory")) {
this.inventory.b(entityhuman.inventory);
this.expLevel = entityhuman.expLevel;
this.expTotal = entityhuman.expTotal;
this.exp = entityhuman.exp;
this.bQ = entityhuman.bQ;
this.setScore(entityhuman.getScore());
}
this.enderChest = entityhuman.enderChest;
@ -1333,7 +1381,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
return i == 0 ? this.inventory.getItemInHand() : this.inventory.armor[i - 1];
}
public ItemStack bA() {
public ItemStack bD() {
return this.inventory.getItemInHand();
}

Datei anzeigen

@ -32,16 +32,16 @@ public class EntityIronGolem extends EntityGolem {
this.datawatcher.a(16, Byte.valueOf((byte) 0));
}
public boolean bb() {
public boolean be() {
return true;
}
protected void bj() {
protected void bm() {
if (--this.e <= 0) {
this.e = 70 + this.random.nextInt(50);
this.d = this.world.villages.getClosestVillage(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ), 32);
if (this.d == null) {
this.aK();
this.aL();
} else {
ChunkCoordinates chunkcoordinates = this.d.getCenter();
@ -49,7 +49,7 @@ public class EntityIronGolem extends EntityGolem {
}
}
super.bj();
super.bm();
}
public int getMaxHealth() {
@ -60,12 +60,12 @@ public class EntityIronGolem extends EntityGolem {
return i;
}
protected void n(Entity entity) {
if (entity instanceof IMonster && this.aA().nextInt(20) == 0) {
protected void o(Entity entity) {
if (entity instanceof IMonster && this.aB().nextInt(20) == 0) {
this.b((EntityLiving) entity);
}
super.n(entity);
super.o(entity);
}
public void c() {
@ -85,7 +85,7 @@ public class EntityIronGolem extends EntityGolem {
int l = this.world.getTypeId(i, j, k);
if (l > 0) {
this.world.addParticle("tilecrack_" + l, this.locX + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, this.boundingBox.b + 0.1D, this.locZ + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, 4.0D * ((double) this.random.nextFloat() - 0.5D), 0.5D, ((double) this.random.nextFloat() - 0.5D) * 4.0D);
this.world.addParticle("tilecrack_" + l + "_" + this.world.getData(i, j, k), this.locX + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, this.boundingBox.b + 0.1D, this.locZ + ((double) this.random.nextFloat() - 0.5D) * (double) this.width, 4.0D * ((double) this.random.nextFloat() - 0.5D), 0.5D, ((double) this.random.nextFloat() - 0.5D) * 4.0D);
}
}
}
@ -104,7 +104,7 @@ public class EntityIronGolem extends EntityGolem {
this.setPlayerCreated(nbttagcompound.getBoolean("PlayerCreated"));
}
public boolean l(Entity entity) {
public boolean m(Entity entity) {
this.f = 10;
this.world.broadcastEntityEffect(this, (byte) 4);
boolean flag = entity.damageEntity(DamageSource.mobAttack(this), 7 + this.random.nextInt(15));
@ -113,7 +113,7 @@ public class EntityIronGolem extends EntityGolem {
entity.motY += 0.4000000059604645D;
}
this.world.makeSound(this, "mob.irongolem.throw", 1.0F, 1.0F);
this.makeSound("mob.irongolem.throw", 1.0F, 1.0F);
return flag;
}
@ -126,20 +126,20 @@ public class EntityIronGolem extends EntityGolem {
this.world.broadcastEntityEffect(this, (byte) 11);
}
protected String aW() {
protected String aY() {
return "none";
}
protected String aX() {
protected String aZ() {
return "mob.irongolem.hit";
}
protected String aY() {
protected String ba() {
return "mob.irongolem.death";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.irongolem.walk", 1.0F, 1.0F);
this.makeSound("mob.irongolem.walk", 1.0F, 1.0F);
}
protected void dropDeathLoot(boolean flag, int i) {

Datei anzeigen

@ -59,7 +59,7 @@ public class EntityItem extends Entity {
this.lastY = this.locY;
this.lastZ = this.locZ;
this.motY -= 0.03999999910593033D;
this.i(this.locX, (this.boundingBox.b + this.boundingBox.e) / 2.0D, this.locZ);
this.Y = this.i(this.locX, (this.boundingBox.b + this.boundingBox.e) / 2.0D, this.locZ);
this.move(this.motX, this.motY, this.motZ);
boolean flag = (int) this.lastX != (int) this.locX || (int) this.lastY != (int) this.locY || (int) this.lastZ != (int) this.locZ;
@ -68,17 +68,11 @@ public class EntityItem extends Entity {
this.motY = 0.20000000298023224D;
this.motX = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.motZ = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.world.makeSound(this, "random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
this.makeSound("random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
}
if (!this.world.isStatic) {
Iterator iterator = this.world.a(EntityItem.class, this.boundingBox.grow(0.5D, 0.0D, 0.5D)).iterator();
while (iterator.hasNext()) {
EntityItem entityitem = (EntityItem) iterator.next();
this.a(entityitem);
}
this.d();
}
}
@ -112,32 +106,42 @@ public class EntityItem extends Entity {
}
}
private void d() {
Iterator iterator = this.world.a(EntityItem.class, this.boundingBox.grow(0.5D, 0.0D, 0.5D)).iterator();
while (iterator.hasNext()) {
EntityItem entityitem = (EntityItem) iterator.next();
this.a(entityitem);
}
}
public boolean a(EntityItem entityitem) {
if (entityitem == this) {
return false;
} else if (entityitem.isAlive() && this.isAlive()) {
if (entityitem.itemStack.getItem() != this.itemStack.getItem()) {
return false;
} else if (!entityitem.itemStack.hasTag() && !this.itemStack.hasTag()) {
if (entityitem.itemStack.getItem().l() && entityitem.itemStack.getData() != this.itemStack.getData()) {
return false;
} else if (entityitem.itemStack.count < this.itemStack.count) {
return entityitem.a(this);
} else if (entityitem.itemStack.count + this.itemStack.count > entityitem.itemStack.getMaxStackSize()) {
return false;
// CraftBukkit start - don't merge items with enchantments
} else if (entityitem.itemStack.hasEnchantments() || this.itemStack.hasEnchantments()) {
return false;
// CraftBukkit end
} else {
entityitem.itemStack.count += this.itemStack.count;
entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay);
entityitem.age = Math.min(entityitem.age, this.age);
this.die();
return true;
}
} else {
} else if (entityitem.itemStack.hasTag() ^ this.itemStack.hasTag()) {
return false;
} else if (entityitem.itemStack.hasTag() && !entityitem.itemStack.getTag().equals(this.itemStack.getTag())) {
return false;
} else if (entityitem.itemStack.getItem().l() && entityitem.itemStack.getData() != this.itemStack.getData()) {
return false;
} else if (entityitem.itemStack.count < this.itemStack.count) {
return entityitem.a(this);
} else if (entityitem.itemStack.count + this.itemStack.count > entityitem.itemStack.getMaxStackSize()) {
return false;
// CraftBukkit start - don't merge items with enchantments
} else if (entityitem.itemStack.hasEnchantments() || this.itemStack.hasEnchantments()) {
return false;
// CraftBukkit end
} else {
entityitem.itemStack.count += this.itemStack.count;
entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay);
entityitem.age = Math.min(entityitem.age, this.age);
this.die();
return true;
}
} else {
return false;
@ -157,13 +161,17 @@ public class EntityItem extends Entity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
this.K();
this.e -= i;
if (this.e <= 0) {
this.die();
}
if (this.isInvulnerable()) {
return false;
} else {
this.K();
this.e -= i;
if (this.e <= 0) {
this.die();
}
return false;
return false;
}
}
public void b(NBTTagCompound nbttagcompound) {
@ -185,7 +193,7 @@ public class EntityItem extends Entity {
}
}
public void b_(EntityHuman entityhuman) {
public void c_(EntityHuman entityhuman) {
if ((!this.world.isStatic) && (this.itemStack != null)) { // CraftBukkit - nullcheck
int i = this.itemStack.count;
@ -225,7 +233,7 @@ public class EntityItem extends Entity {
entityhuman.a((Statistic) AchievementList.z);
}
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
this.makeSound("random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, i);
if (this.itemStack.count <= 0) {
this.die();
@ -242,4 +250,11 @@ public class EntityItem extends Entity {
public boolean aq() {
return false;
}
public void b(int i) {
super.b(i);
if (!this.world.isStatic) {
this.d();
}
}
}

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
import org.bukkit.event.block.BlockIgniteEvent; // CraftBukkit
@ -35,7 +34,7 @@ public class EntityLightning extends EntityWeather {
this.c = this.random.nextInt(3) + 1;
// CraftBukkit
if (!isEffect && world.difficulty >= 2 && world.areChunksLoaded(MathHelper.floor(d0), MathHelper.floor(d1), MathHelper.floor(d2), 10)) {
if (!isEffect && !world.isStatic && world.difficulty >= 2 && world.areChunksLoaded(MathHelper.floor(d0), MathHelper.floor(d1), MathHelper.floor(d2), 10)) {
int i = MathHelper.floor(d0);
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
@ -86,7 +85,7 @@ public class EntityLightning extends EntityWeather {
this.lifeTicks = 1;
this.a = this.random.nextLong();
// CraftBukkit
if (!this.isEffect && this.world.areChunksLoaded(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ), 10)) {
if (!this.isEffect && !this.world.isStatic && this.world.areChunksLoaded(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ), 10)) {
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.locY);
int k = MathHelper.floor(this.locZ);
@ -105,15 +104,12 @@ public class EntityLightning extends EntityWeather {
}
}
if (this.lifeTicks >= 0 && !this.isEffect) { // CraftBukkit
if (!this.world.isStatic && this.lifeTicks >= 0 && !this.isEffect) { // CraftBukkit
double d0 = 3.0D;
// CraftBukkit start - switch to array copy of list to avoid CMEs
Object[] array = this.world.getEntities(this, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + 6.0D + d0, this.locZ + d0)).toArray();
Iterator iterator = com.google.common.collect.Iterators.forArray(array);
// CraftBukkit end
List list = this.world.getEntities(this, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + 6.0D + d0, this.locZ + d0));
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
for (int l = 0; l < list.size(); ++l) {
Entity entity = (Entity) list.get(l);
entity.a(this);
}

Datei-Diff unterdrückt, da er zu groß ist Diff laden

Datei anzeigen

@ -13,7 +13,7 @@ public class EntityMagmaCube extends EntitySlime {
return this.world.difficulty > 0 && this.world.b(this.boundingBox) && this.world.getCubes(this, this.boundingBox).isEmpty() && !this.world.containsLiquid(this.boundingBox);
}
public int aU() {
public int aW() {
return this.getSize() * 3;
}
@ -66,7 +66,7 @@ public class EntityMagmaCube extends EntitySlime {
this.b *= 0.9F;
}
protected void bf() {
protected void bi() {
this.motY = (double) (0.42F + (float) this.getSize() * 0.1F);
this.am = true;
}
@ -81,11 +81,11 @@ public class EntityMagmaCube extends EntitySlime {
return super.m() + 2;
}
protected String aX() {
protected String aZ() {
return "mob.slime." + (this.getSize() > 1 ? "big" : "small");
}
protected String aY() {
protected String ba() {
return "mob.slime." + (this.getSize() > 1 ? "big" : "small");
}

Datei anzeigen

@ -95,7 +95,7 @@ public class EntityMinecart extends Entity implements IInventory {
}
public AxisAlignedBB g(Entity entity) {
return entity.boundingBox;
return entity.M() ? entity.boundingBox : null;
}
public AxisAlignedBB E() {
@ -125,86 +125,90 @@ public class EntityMinecart extends Entity implements IInventory {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (!this.world.isStatic && !this.dead) {
// CraftBukkit start
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
org.bukkit.entity.Entity passenger = (damagesource.getEntity() == null) ? null : damagesource.getEntity().getBukkitEntity();
VehicleDamageEvent event = new VehicleDamageEvent(vehicle, passenger, i);
this.world.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return true;
}
i = event.getDamage();
// CraftBukkit end
this.i(-this.k());
this.h(10);
this.K();
this.setDamage(this.getDamage() + i * 10);
if (damagesource.getEntity() instanceof EntityHuman && ((EntityHuman) damagesource.getEntity()).abilities.canInstantlyBuild) {
this.setDamage(100);
}
if (this.getDamage() > 40) {
if (this.passenger != null) {
this.passenger.mount(this);
}
if (this.isInvulnerable()) {
return false;
} else {
if (!this.world.isStatic && !this.dead) {
// CraftBukkit start
VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, passenger);
this.world.getServer().getPluginManager().callEvent(destroyEvent);
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
org.bukkit.entity.Entity passenger = (damagesource.getEntity() == null) ? null : damagesource.getEntity().getBukkitEntity();
if (destroyEvent.isCancelled()) {
this.setDamage(40); // Maximize damage so this doesn't get triggered again right away
VehicleDamageEvent event = new VehicleDamageEvent(vehicle, passenger, i);
this.world.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return true;
}
i = event.getDamage();
// CraftBukkit end
this.die();
this.a(Item.MINECART.id, 1, 0.0F);
if (this.type == 1) {
EntityMinecart entityminecart = this;
this.i(-this.k());
this.h(10);
this.K();
this.setDamage(this.getDamage() + i * 10);
if (damagesource.getEntity() instanceof EntityHuman && ((EntityHuman) damagesource.getEntity()).abilities.canInstantlyBuild) {
this.setDamage(100);
}
for (int j = 0; j < entityminecart.getSize(); ++j) {
ItemStack itemstack = entityminecart.getItem(j);
if (itemstack != null) {
float f = this.random.nextFloat() * 0.8F + 0.1F;
float f1 = this.random.nextFloat() * 0.8F + 0.1F;
float f2 = this.random.nextFloat() * 0.8F + 0.1F;
while (itemstack.count > 0) {
int k = this.random.nextInt(21) + 10;
if (k > itemstack.count) {
k = itemstack.count;
}
itemstack.count -= k;
// CraftBukkit - include enchantments in the new itemstack
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, k, itemstack.getData(), itemstack.getEnchantments()));
float f3 = 0.05F;
entityitem.motX = (double) ((float) this.random.nextGaussian() * f3);
entityitem.motY = (double) ((float) this.random.nextGaussian() * f3 + 0.2F);
entityitem.motZ = (double) ((float) this.random.nextGaussian() * f3);
this.world.addEntity(entityitem);
}
}
if (this.getDamage() > 40) {
if (this.passenger != null) {
this.passenger.mount(this);
}
this.a(Block.CHEST.id, 1, 0.0F);
} else if (this.type == 2) {
this.a(Block.FURNACE.id, 1, 0.0F);
}
}
// CraftBukkit start
VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, passenger);
this.world.getServer().getPluginManager().callEvent(destroyEvent);
return true;
} else {
return true;
if (destroyEvent.isCancelled()) {
this.setDamage(40); // Maximize damage so this doesn't get triggered again right away
return true;
}
// CraftBukkit end
this.die();
this.a(Item.MINECART.id, 1, 0.0F);
if (this.type == 1) {
EntityMinecart entityminecart = this;
for (int j = 0; j < entityminecart.getSize(); ++j) {
ItemStack itemstack = entityminecart.getItem(j);
if (itemstack != null) {
float f = this.random.nextFloat() * 0.8F + 0.1F;
float f1 = this.random.nextFloat() * 0.8F + 0.1F;
float f2 = this.random.nextFloat() * 0.8F + 0.1F;
while (itemstack.count > 0) {
int k = this.random.nextInt(21) + 10;
if (k > itemstack.count) {
k = itemstack.count;
}
itemstack.count -= k;
// CraftBukkit - include enchantments in the new itemstack
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, k, itemstack.getData(), itemstack.getEnchantments()));
float f3 = 0.05F;
entityitem.motX = (double) ((float) this.random.nextGaussian() * f3);
entityitem.motY = (double) ((float) this.random.nextGaussian() * f3 + 0.2F);
entityitem.motZ = (double) ((float) this.random.nextGaussian() * f3);
this.world.addEntity(entityitem);
}
}
}
this.a(Block.CHEST.id, 1, 0.0F);
} else if (this.type == 2) {
this.a(Block.FURNACE.id, 1, 0.0F);
}
}
return true;
} else {
return true;
}
}
}
@ -322,6 +326,7 @@ public class EntityMinecart extends Entity implements IInventory {
int l = this.world.getTypeId(i, j, k);
if (BlockMinecartTrack.d(l)) {
this.fallDistance = 0.0F;
Vec3D vec3d = this.a(this.locX, this.locY, this.locZ);
int i1 = this.world.getData(i, j, k);
@ -536,15 +541,15 @@ public class EntityMinecart extends Entity implements IInventory {
this.motX += this.motX / d21 * d22;
this.motZ += this.motZ / d21 * d22;
} else if (i1 == 1) {
if (this.world.s(i - 1, j, k)) {
if (this.world.t(i - 1, j, k)) {
this.motX = 0.02D;
} else if (this.world.s(i + 1, j, k)) {
} else if (this.world.t(i + 1, j, k)) {
this.motX = -0.02D;
}
} else if (i1 == 0) {
if (this.world.s(i, j, k - 1)) {
if (this.world.t(i, j, k - 1)) {
this.motZ = 0.02D;
} else if (this.world.s(i, j, k + 1)) {
} else if (this.world.t(i, j, k + 1)) {
this.motZ = -0.02D;
}
}
@ -904,7 +909,7 @@ public class EntityMinecart extends Entity implements IInventory {
public void update() {}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
if (this.type == 0) {
if (this.passenger != null && this.passenger instanceof EntityHuman && this.passenger != entityhuman) {
return true;
@ -935,7 +940,7 @@ public class EntityMinecart extends Entity implements IInventory {
return true;
}
public boolean a(EntityHuman entityhuman) {
public boolean a_(EntityHuman entityhuman) {
return this.dead ? false : entityhuman.e(this) <= 64.0D;
}

Datei anzeigen

@ -10,11 +10,11 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
}
public void c() {
this.bl();
this.bo();
float f = this.c(1.0F);
if (f > 0.5F) {
this.bC += 2;
this.bA += 2;
}
super.c();
@ -30,11 +30,13 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
protected Entity findTarget() {
EntityHuman entityhuman = this.world.findNearbyVulnerablePlayer(this, 16.0D);
return entityhuman != null && this.m(entityhuman) ? entityhuman : null;
return entityhuman != null && this.n(entityhuman) ? entityhuman : null;
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (super.damageEntity(damagesource, i)) {
if (this.isInvulnerable()) {
return false;
} else if (super.damageEntity(damagesource, i)) {
Entity entity = damagesource.getEntity();
if (this.passenger != entity && this.vehicle != entity) {
@ -65,7 +67,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
}
}
public boolean l(Entity entity) {
public boolean m(Entity entity) {
int i = this.c(entity);
if (this.hasEffect(MobEffectList.INCREASE_DAMAGE)) {
@ -92,7 +94,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
this.motZ *= 0.6D;
}
int k = EnchantmentManager.getFireAspectEnchantmentLevel(this, (EntityLiving) entity);
int k = EnchantmentManager.getFireAspectEnchantmentLevel(this);
if (k > 0) {
entity.setOnFire(k * 4);
@ -105,12 +107,12 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
protected void a(Entity entity, float f) {
if (this.attackTicks <= 0 && f < 2.0F && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) {
this.attackTicks = 20;
this.l(entity);
this.m(entity);
}
}
public float a(int i, int j, int k) {
return 0.5F - this.world.o(i, j, k);
return 0.5F - this.world.p(i, j, k);
}
protected boolean i_() {
@ -123,7 +125,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster {
} else {
int l = this.world.getLightLevel(i, j, k);
if (this.world.L()) {
if (this.world.M()) {
int i1 = this.world.j;
this.world.j = 10;

Datei anzeigen

@ -10,7 +10,7 @@ public class EntityMushroomCow extends EntityCow {
this.a(0.9F, 1.3F);
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.BOWL.id && this.getAge() >= 0) {
@ -52,11 +52,19 @@ public class EntityMushroomCow extends EntityCow {
return true;
} else {
return super.c(entityhuman);
return super.a(entityhuman);
}
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityMushroomCow c(EntityAgeable entityageable) {
return new EntityMushroomCow(this.world);
}
public EntityCow b(EntityAgeable entityageable) {
return this.c(entityageable);
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.c(entityageable);
}
}

Datei anzeigen

@ -28,7 +28,7 @@ public class EntityOcelot extends EntityTameableAnimal {
this.datawatcher.a(18, Byte.valueOf((byte) 0));
}
public void bj() {
public void bm() {
if (this.getControllerMove().a()) {
float f = this.getControllerMove().b();
@ -48,11 +48,11 @@ public class EntityOcelot extends EntityTameableAnimal {
}
}
protected boolean bg() {
protected boolean bj() {
return !this.isTamed();
}
public boolean bb() {
public boolean be() {
return true;
}
@ -72,19 +72,19 @@ public class EntityOcelot extends EntityTameableAnimal {
this.setCatType(nbttagcompound.getInt("CatType"));
}
protected String aW() {
protected String aY() {
return this.isTamed() ? (this.r() ? "mob.cat.purr" : (this.random.nextInt(4) == 0 ? "mob.cat.purreow" : "mob.cat.meow")) : "";
}
protected String aX() {
protected String aZ() {
return "mob.cat.hitt";
}
protected String aY() {
protected String ba() {
return "mob.cat.hitt";
}
protected float aV() {
protected float aX() {
return 0.4F;
}
@ -92,20 +92,24 @@ public class EntityOcelot extends EntityTameableAnimal {
return Item.LEATHER.id;
}
public boolean l(Entity entity) {
public boolean m(Entity entity) {
return entity.damageEntity(DamageSource.mobAttack(this), 3);
}
public boolean damageEntity(DamageSource damagesource, int i) {
this.d.a(false);
return super.damageEntity(damagesource, i);
if (this.isInvulnerable()) {
return false;
} else {
this.d.a(false);
return super.damageEntity(damagesource, i);
}
}
protected void dropDeathLoot(boolean flag, int i) {
org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(this); // CraftBukkit - Call EntityDeathEvent
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (this.isTamed()) {
@ -139,10 +143,10 @@ public class EntityOcelot extends EntityTameableAnimal {
return true;
}
return super.c(entityhuman);
return super.a(entityhuman);
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityOcelot b(EntityAgeable entityageable) {
EntityOcelot entityocelot = new EntityOcelot(this.world);
if (this.isTamed()) {
@ -208,7 +212,7 @@ public class EntityOcelot extends EntityTameableAnimal {
return this.isTamed() ? "entity.Cat.name" : super.getLocalizedName();
}
public void bD() {
public void bG() {
if (this.world.random.nextInt(7) == 0) {
for (int i = 0; i < 2; ++i) {
EntityOcelot entityocelot = new EntityOcelot(this.world);
@ -219,4 +223,8 @@ public class EntityOcelot extends EntityTameableAnimal {
}
}
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -25,7 +25,7 @@ public class EntityPig extends EntityAnimal {
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -33,12 +33,12 @@ public class EntityPig extends EntityAnimal {
return 10;
}
protected void bi() {
super.bi();
protected void bl() {
super.bl();
}
public boolean bF() {
ItemStack itemstack = ((EntityHuman) this.passenger).bA();
public boolean bI() {
ItemStack itemstack = ((EntityHuman) this.passenger).bD();
return itemstack != null && itemstack.id == Item.CARROT_STICK.id;
}
@ -58,24 +58,24 @@ public class EntityPig extends EntityAnimal {
this.setSaddle(nbttagcompound.getBoolean("Saddle"));
}
protected String aW() {
return "mob.pig.say";
}
protected String aX() {
return "mob.pig.say";
}
protected String aY() {
return "mob.pig.say";
}
protected String aZ() {
return "mob.pig.say";
}
protected String ba() {
return "mob.pig.death";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.pig.step", 0.15F, 1.0F);
this.makeSound("mob.pig.step", 0.15F, 1.0F);
}
public boolean c(EntityHuman entityhuman) {
if (super.c(entityhuman)) {
public boolean a(EntityHuman entityhuman) {
if (super.a(entityhuman)) {
return true;
} else if (this.hasSaddle() && !this.world.isStatic && (this.passenger == null || this.passenger == entityhuman)) {
entityhuman.mount(this);
@ -146,7 +146,7 @@ public class EntityPig extends EntityAnimal {
}
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityPig b(EntityAgeable entityageable) {
return new EntityPig(this.world);
}
@ -157,4 +157,8 @@ public class EntityPig extends EntityAnimal {
public PathfinderGoalPassengerCarrotStick n() {
return this.d;
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -16,18 +15,18 @@ public class EntityPigZombie extends EntityZombie {
public EntityPigZombie(World world) {
super(world);
this.texture = "/mob/pigzombie.png";
this.bI = 0.5F;
this.bG = 0.5F;
this.fireProof = true;
}
protected boolean bb() {
protected boolean be() {
return false;
}
public void j_() {
this.bI = this.target != null ? 0.95F : 0.5F;
this.bG = this.target != null ? 0.95F : 0.5F;
if (this.soundDelay > 0 && --this.soundDelay == 0) {
this.world.makeSound(this, "mob.zombiepig.zpigangry", this.aV() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F);
this.makeSound("mob.zombiepig.zpigangry", this.aX() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F);
}
super.j_();
@ -52,29 +51,32 @@ public class EntityPigZombie extends EntityZombie {
}
public boolean damageEntity(DamageSource damagesource, int i) {
Entity entity = damagesource.getEntity();
if (this.isInvulnerable()) {
return false;
} else {
Entity entity = damagesource.getEntity();
if (entity instanceof EntityHuman) {
List list = this.world.getEntities(this, this.boundingBox.grow(32.0D, 32.0D, 32.0D));
Iterator iterator = list.iterator();
if (entity instanceof EntityHuman) {
List list = this.world.getEntities(this, this.boundingBox.grow(32.0D, 32.0D, 32.0D));
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1 instanceof EntityPigZombie) {
EntityPigZombie entitypigzombie = (EntityPigZombie) entity1;
if (entity1 instanceof EntityPigZombie) {
EntityPigZombie entitypigzombie = (EntityPigZombie) entity1;
entitypigzombie.o(entity);
entitypigzombie.p(entity);
}
}
this.p(entity);
}
this.o(entity);
return super.damageEntity(damagesource, i);
}
return super.damageEntity(damagesource, i);
}
private void o(Entity entity) {
private void p(Entity entity) {
// CraftBukkit start
org.bukkit.entity.Entity bukkitTarget = entity == null ? null : entity.getBukkitEntity();
@ -97,15 +99,15 @@ public class EntityPigZombie extends EntityZombie {
this.soundDelay = this.random.nextInt(40);
}
protected String aW() {
protected String aY() {
return "mob.zombiepig.zpig";
}
protected String aX() {
protected String aZ() {
return "mob.zombiepig.zpighurt";
}
protected String aY() {
protected String ba() {
return "mob.zombiepig.zpigdeath";
}
@ -140,7 +142,7 @@ public class EntityPigZombie extends EntityZombie {
// CraftBukkit end
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
return false;
}
@ -153,17 +155,17 @@ public class EntityPigZombie extends EntityZombie {
return Item.ROTTEN_FLESH.id;
}
protected void bB() {
protected void bE() {
this.setEquipment(0, new ItemStack(Item.GOLD_SWORD));
}
public void bD() {
super.bD();
public void bG() {
super.bG();
this.setVillager(false);
}
public int c(Entity entity) {
ItemStack itemstack = this.bA();
ItemStack itemstack = this.bD();
int i = 5;
if (itemstack != null) {

Datei anzeigen

@ -27,14 +27,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public double e;
public final List chunkCoordIntPairQueue = new LinkedList();
public final List removeQueue = new LinkedList();
private int cn = -99999999;
private int co = -99999999;
private boolean cp = true;
private int ck = -99999999;
private int cl = -99999999;
private boolean cm = true;
public int lastSentExp = -99999999; // CraftBukkit - private -> public
public int invulnerableTicks = 60; // CraftBukkit - private -> public
private int cs = 0;
private int ct = 0;
private boolean cu = true;
private int cp = 0;
private int cq = 0;
private boolean cr = true;
private int containerCounter = 0;
public boolean h;
public int ping;
@ -53,7 +53,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
super(world);
iteminworldmanager.player = this;
this.itemInWorldManager = iteminworldmanager;
this.cs = minecraftserver.getServerConfigurationManager().o();
this.cp = minecraftserver.getServerConfigurationManager().o();
ChunkCoordinates chunkcoordinates = world.getSpawn();
int i = chunkcoordinates.x;
int j = chunkcoordinates.z;
@ -136,15 +136,30 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.itemInWorldManager.a();
--this.invulnerableTicks;
this.activeContainer.b();
while (!this.removeQueue.isEmpty()) {
int i = Math.min(this.removeQueue.size(), 127);
int[] aint = new int[i];
Iterator iterator = this.removeQueue.iterator();
int j = 0;
while (iterator.hasNext() && j < i) {
aint[j++] = ((Integer) iterator.next()).intValue();
iterator.remove();
}
this.netServerHandler.sendPacket(new Packet29DestroyEntity(aint));
}
if (!this.chunkCoordIntPairQueue.isEmpty()) {
ArrayList arraylist = new ArrayList();
Iterator iterator = this.chunkCoordIntPairQueue.iterator();
Iterator iterator1 = this.chunkCoordIntPairQueue.iterator();
ArrayList arraylist1 = new ArrayList();
while (iterator.hasNext() && arraylist.size() < 5) {
ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
while (iterator1.hasNext() && arraylist.size() < 5) {
ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator1.next();
iterator.remove();
iterator1.remove();
if (chunkcoordintpair != null && this.world.isLoaded(chunkcoordintpair.x << 4, 0, chunkcoordintpair.z << 4)) {
arraylist.add(this.world.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z));
arraylist1.addAll(((WorldServer) this.world).getTileEntities(chunkcoordintpair.x * 16, 0, chunkcoordintpair.z * 16, chunkcoordintpair.x * 16 + 16, 256, chunkcoordintpair.z * 16 + 16));
@ -152,36 +167,25 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
if (!arraylist.isEmpty()) {
// CraftBukkit start - don't use map chunk bulk for now TODO: fix this
for (Object object : arraylist) {
this.netServerHandler.sendPacket(new Packet51MapChunk((Chunk) object, true, 0xffff));
}
// this.netServerHandler.sendPacket(new Packet56MapChunkBulk(arraylist));
// CraftBukkit end
this.netServerHandler.sendPacket(new Packet56MapChunkBulk(arraylist));
Iterator iterator1 = arraylist1.iterator();
Iterator iterator2 = arraylist1.iterator();
while (iterator1.hasNext()) {
TileEntity tileentity = (TileEntity) iterator1.next();
while (iterator2.hasNext()) {
TileEntity tileentity = (TileEntity) iterator2.next();
this.b(tileentity);
}
iterator2 = arraylist.iterator();
while (iterator2.hasNext()) {
Chunk chunk = (Chunk) iterator2.next();
this.p().getTracker().a(this, chunk);
}
}
}
if (!this.removeQueue.isEmpty()) {
int i = Math.min(this.removeQueue.size(), 127);
int[] aint = new int[i];
Iterator iterator2 = this.removeQueue.iterator();
int j = 0;
while (iterator2.hasNext() && j < i) {
aint[j++] = ((Integer) iterator2.next()).intValue();
iterator2.remove();
}
this.netServerHandler.sendPacket(new Packet29DestroyEntity(aint));
}
}
public void g() {
@ -199,11 +203,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
}
if (this.getHealth() != this.cn || this.co != this.foodData.a() || this.foodData.e() == 0.0F != this.cp) {
if (this.getHealth() != this.ck || this.cl != this.foodData.a() || this.foodData.e() == 0.0F != this.cm) {
this.netServerHandler.sendPacket(new Packet8UpdateHealth(this.getHealth(), this.foodData.a(), this.foodData.e()));
this.cn = this.getHealth();
this.co = this.foodData.a();
this.cp = this.foodData.e() == 0.0F;
this.ck = this.getHealth();
this.cl = this.foodData.a();
this.cm = this.foodData.e() == 0.0F;
}
if (this.expTotal != this.lastSentExp) {
@ -273,27 +277,34 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (this.invulnerableTicks > 0) {
if (this.isInvulnerable()) {
return false;
} else {
// CraftBukkit - this.server.getPvP() -> this.world.pvpMode
if (!this.world.pvpMode && damagesource instanceof EntityDamageSource) {
Entity entity = damagesource.getEntity();
boolean flag = this.server.T() && this.world.pvpMode && "fall".equals(damagesource.translationIndex);
if (entity instanceof EntityHuman) {
return false;
}
if (!flag && this.invulnerableTicks > 0) {
return false;
} else {
// CraftBukkit - this.server.getPvP() -> this.world.pvpMode
if (!this.world.pvpMode && damagesource instanceof EntityDamageSource) {
Entity entity = damagesource.getEntity();
if (entity instanceof EntityArrow) {
EntityArrow entityarrow = (EntityArrow) entity;
if (entityarrow.shooter instanceof EntityHuman) {
if (entity instanceof EntityHuman) {
return false;
}
}
}
return super.damageEntity(damagesource, i);
if (entity instanceof EntityArrow) {
EntityArrow entityarrow = (EntityArrow) entity;
if (entityarrow.shooter instanceof EntityHuman) {
return false;
}
}
}
return super.damageEntity(damagesource, i);
}
}
}
@ -324,14 +335,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.server.getServerConfigurationManager().changeDimension(this, i);
this.lastSentExp = -1;
this.cn = -1;
this.co = -1;
this.ck = -1;
this.cl = -1;
}
}
private void b(TileEntity tileentity) {
if (tileentity != null) {
Packet packet = tileentity.l();
Packet packet = tileentity.getUpdatePacket();
if (packet != null) {
this.netServerHandler.sendPacket(packet);
@ -350,7 +361,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
if (enumbedresult == EnumBedResult.OK) {
Packet17EntityLocationAction packet17entitylocationaction = new Packet17EntityLocationAction(this, 0, i, j, k);
this.p().getTracker().a(this, packet17entitylocationaction);
this.p().getTracker().a((Entity) this, (Packet) packet17entitylocationaction);
this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
this.netServerHandler.sendPacket(packet17entitylocationaction);
}
@ -573,7 +584,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public void k() {
this.activeContainer.a((EntityHuman) this);
this.activeContainer.b(this);
this.activeContainer = this.defaultContainer;
}
@ -605,7 +616,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public void m() {
this.cn = -99999999;
this.ck = -99999999;
this.lastSentExp = -1; // CraftBukkit - Added to reset
}
@ -631,8 +642,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void copyTo(EntityHuman entityhuman, boolean flag) {
super.copyTo(entityhuman, flag);
this.lastSentExp = -1;
this.cn = -1;
this.co = -1;
this.ck = -1;
this.cl = -1;
this.removeQueue.addAll(((EntityPlayer) entityhuman).removeQueue);
}
@ -702,11 +713,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
int i = 256 >> packet204localeandviewdistance.f();
if (i > 3 && i < 15) {
this.cs = i;
this.cp = i;
}
this.ct = packet204localeandviewdistance.g();
this.cu = packet204localeandviewdistance.h();
this.cq = packet204localeandviewdistance.g();
this.cr = packet204localeandviewdistance.h();
if (this.server.I() && this.server.H().equals(this.name)) {
this.server.c(packet204localeandviewdistance.i());
}
@ -719,7 +730,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public int getChatFlags() {
return this.ct;
return this.cq;
}
public void a(String s, int i) {
@ -739,10 +750,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public long getPlayerTime() {
if (this.relativeTime) {
// Adds timeOffset to the current server time.
return this.world.F() + this.timeOffset;
return this.world.getDayTime() + this.timeOffset;
} else {
// Adds timeOffset to the beginning of this day.
return this.world.F() - (this.world.F() % 24000) + this.timeOffset;
return this.world.getDayTime() - (this.world.getDayTime() % 24000) + this.timeOffset;
}
}

Datei anzeigen

@ -12,7 +12,7 @@ import org.bukkit.entity.LivingEntity;
public class EntityPotion extends EntityProjectile {
private ItemStack d;
private ItemStack c;
public EntityPotion(World world) {
super(world);
@ -24,12 +24,12 @@ public class EntityPotion extends EntityProjectile {
public EntityPotion(World world, EntityLiving entityliving, ItemStack itemstack) {
super(world, entityliving);
this.d = itemstack;
this.c = itemstack;
}
public EntityPotion(World world, double d0, double d1, double d2, ItemStack itemstack) {
super(world, d0, d1, d2);
this.d = itemstack;
this.c = itemstack;
}
protected float g() {
@ -45,24 +45,24 @@ public class EntityPotion extends EntityProjectile {
}
public void setPotionValue(int i) {
if (this.d == null) {
this.d = new ItemStack(Item.POTION, 1, 0);
if (this.c == null) {
this.c = new ItemStack(Item.POTION, 1, 0);
}
this.d.setData(i);
this.c.setData(i);
}
public int getPotionValue() {
if (this.d == null) {
this.d = new ItemStack(Item.POTION, 1, 0);
if (this.c == null) {
this.c = new ItemStack(Item.POTION, 1, 0);
}
return this.d.getData();
return this.c.getData();
}
protected void a(MovingObjectPosition movingobjectposition) {
if (!this.world.isStatic) {
List list = Item.POTION.l(this.d);
List list = Item.POTION.l(this.c);
if (list != null && !list.isEmpty()) {
AxisAlignedBB axisalignedbb = this.boundingBox.grow(4.0D, 2.0D, 4.0D);
@ -108,7 +108,7 @@ public class EntityPotion extends EntityProjectile {
int i = mobeffect.getEffectId();
// CraftBukkit start - abide by PVP settings
if (!this.world.pvpMode && entityliving instanceof EntityPlayer && entityliving != this.shooter) {
if (!this.world.pvpMode && entityliving instanceof EntityPlayer && entityliving != this.getShooter()) {
// Block SLOWER_MOVEMENT, SLOWER_DIG, HARM, BLINDNESS, HUNGER, WEAKNESS and POISON potions
if (i == 2 || i == 4 || i == 7 || i == 15 || i == 17 || i == 18 || i == 19) continue;
}
@ -116,7 +116,7 @@ public class EntityPotion extends EntityProjectile {
if (MobEffectList.byId[i].isInstant()) {
// CraftBukkit - added 'this'
MobEffectList.byId[i].applyInstantEffect(this.shooter, entityliving, mobeffect.getAmplifier(), d1, this);
MobEffectList.byId[i].applyInstantEffect(this.getShooter(), entityliving, mobeffect.getAmplifier(), d1, this);
} else {
int j = (int) (d1 * (double) mobeffect.getDuration() + 0.5D);
@ -138,20 +138,20 @@ public class EntityPotion extends EntityProjectile {
public void a(NBTTagCompound nbttagcompound) {
super.a(nbttagcompound);
if (nbttagcompound.hasKey("Potion")) {
this.d = ItemStack.a(nbttagcompound.getCompound("Potion"));
this.c = ItemStack.a(nbttagcompound.getCompound("Potion"));
} else {
this.setPotionValue(nbttagcompound.getInt("potionValue"));
}
if (this.d == null) {
if (this.c == null) {
this.die();
}
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
if (this.d != null) {
nbttagcompound.setCompound("Potion", this.d.save(new NBTTagCompound()));
if (this.c != null) {
nbttagcompound.setCompound("Potion", this.c.save(new NBTTagCompound()));
}
}
}

Datei anzeigen

@ -1,6 +1,5 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
import org.bukkit.event.entity.ProjectileHitEvent; // CraftBukkit
@ -13,9 +12,10 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
private int inBlockId = 0;
protected boolean inGround = false;
public int shake = 0;
public EntityLiving shooter; // CraftBukkit - protected -> public
private int h;
private int i = 0;
public EntityLiving shooter; // CraftBukkit - private -> public
public String shooterName = null; // CraftBukkit - private -> public
private int i;
private int j = 0;
public EntityProjectile(World world) {
super(world);
@ -44,7 +44,7 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
public EntityProjectile(World world, double d0, double d1, double d2) {
super(world);
this.h = 0;
this.i = 0;
this.a(0.25F, 0.25F);
this.setPosition(d0, d1, d2);
this.height = 0.0F;
@ -77,7 +77,7 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
this.lastYaw = this.yaw = (float) (Math.atan2(d0, d2) * 180.0D / 3.1415927410125732D);
this.lastPitch = this.pitch = (float) (Math.atan2(d1, (double) f3) * 180.0D / 3.1415927410125732D);
this.h = 0;
this.i = 0;
}
public void j_() {
@ -93,8 +93,8 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
int i = this.world.getTypeId(this.blockX, this.blockY, this.blockZ);
if (i == this.inBlockId) {
++this.h;
if (this.h == 1200) {
++this.i;
if (this.i == 1200) {
this.die();
}
@ -105,10 +105,10 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
this.motX *= (double) (this.random.nextFloat() * 0.2F);
this.motY *= (double) (this.random.nextFloat() * 0.2F);
this.motZ *= (double) (this.random.nextFloat() * 0.2F);
this.h = 0;
this.i = 0;
this.j = 0;
} else {
++this.i;
++this.j;
}
Vec3D vec3d = this.world.getVec3DPool().create(this.locX, this.locY, this.locZ);
@ -125,12 +125,12 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
Entity entity = null;
List list = this.world.getEntities(this, this.boundingBox.a(this.motX, this.motY, this.motZ).grow(1.0D, 1.0D, 1.0D));
double d0 = 0.0D;
Iterator iterator = list.iterator();
EntityLiving entityliving = this.getShooter();
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.L() && (entity1 != this.shooter || this.i >= 5)) {
if (entity1.L() && (entity1 != entityliving || this.j >= 5)) {
float f = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.grow((double) f, (double) f, (double) f);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -194,7 +194,7 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
float f3 = this.g();
if (this.H()) {
for (int j = 0; j < 4; ++j) {
for (int k = 0; k < 4; ++k) {
float f4 = 0.25F;
this.world.addParticle("bubble", this.locX - this.motX * (double) f4, this.locY - this.motY * (double) f4, this.locZ - this.motZ * (double) f4, this.motX, this.motY, this.motZ);
@ -223,6 +223,11 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
nbttagcompound.setByte("inTile", (byte) this.inBlockId);
nbttagcompound.setByte("shake", (byte) this.shake);
nbttagcompound.setByte("inGround", (byte) (this.inGround ? 1 : 0));
if ((this.shooterName == null || this.shooterName.length() == 0) && this.shooter != null && this.shooter instanceof EntityHuman) {
this.shooterName = this.shooter.getLocalizedName();
}
nbttagcompound.setString("ownerName", this.shooterName == null ? "" : this.shooterName);
}
public void a(NBTTagCompound nbttagcompound) {
@ -232,5 +237,17 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
this.inBlockId = nbttagcompound.getByte("inTile") & 255;
this.shake = nbttagcompound.getByte("shake") & 255;
this.inGround = nbttagcompound.getByte("inGround") == 1;
this.shooterName = nbttagcompound.getString("ownerName");
if (this.shooterName != null && this.shooterName.length() == 0) {
this.shooterName = null;
}
}
public EntityLiving getShooter() {
if (this.shooter == null && this.shooterName != null && this.shooterName.length() > 0) {
this.shooter = this.world.a(this.shooterName);
}
return this.shooter;
}
}

Datei anzeigen

@ -9,9 +9,10 @@ import org.bukkit.event.player.PlayerShearEntityEvent;
public class EntitySheep extends EntityAnimal {
public static final float[][] d = new float[][] { { 1.0F, 1.0F, 1.0F}, { 0.95F, 0.7F, 0.2F}, { 0.9F, 0.5F, 0.85F}, { 0.6F, 0.7F, 0.95F}, { 0.9F, 0.9F, 0.2F}, { 0.5F, 0.8F, 0.1F}, { 0.95F, 0.7F, 0.8F}, { 0.3F, 0.3F, 0.3F}, { 0.6F, 0.6F, 0.6F}, { 0.3F, 0.6F, 0.7F}, { 0.7F, 0.4F, 0.9F}, { 0.2F, 0.4F, 0.8F}, { 0.5F, 0.4F, 0.3F}, { 0.4F, 0.5F, 0.2F}, { 0.8F, 0.3F, 0.3F}, { 0.1F, 0.1F, 0.1F}};
private int e;
private PathfinderGoalEatTile f = new PathfinderGoalEatTile(this);
private final InventoryCrafting e = new InventoryCrafting(new ContainerSheepBreed(this), 2, 1);
public static final float[][] d = new float[][] { { 1.0F, 1.0F, 1.0F}, { 0.85F, 0.5F, 0.2F}, { 0.7F, 0.3F, 0.85F}, { 0.4F, 0.6F, 0.85F}, { 0.9F, 0.9F, 0.2F}, { 0.5F, 0.8F, 0.1F}, { 0.95F, 0.5F, 0.65F}, { 0.3F, 0.3F, 0.3F}, { 0.6F, 0.6F, 0.6F}, { 0.3F, 0.5F, 0.6F}, { 0.5F, 0.25F, 0.7F}, { 0.2F, 0.3F, 0.7F}, { 0.4F, 0.3F, 0.2F}, { 0.4F, 0.5F, 0.2F}, { 0.6F, 0.2F, 0.2F}, { 0.1F, 0.1F, 0.1F}};
private int f;
private PathfinderGoalEatTile g = new PathfinderGoalEatTile(this);
public EntitySheep(World world) {
super(world);
@ -25,24 +26,26 @@ public class EntitySheep extends EntityAnimal {
this.goalSelector.a(2, new PathfinderGoalBreed(this, f));
this.goalSelector.a(3, new PathfinderGoalTempt(this, 0.25F, Item.WHEAT.id, false));
this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 0.25F));
this.goalSelector.a(5, this.f);
this.goalSelector.a(5, this.g);
this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, f));
this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
this.e.setItem(0, new ItemStack(Item.INK_SACK, 1, 0));
this.e.setItem(1, new ItemStack(Item.INK_SACK, 1, 0));
}
protected boolean bb() {
protected boolean be() {
return true;
}
protected void bi() {
this.e = this.f.f();
super.bi();
protected void bl() {
this.f = this.g.f();
super.bl();
}
public void c() {
if (this.world.isStatic) {
this.e = Math.max(0, this.e - 1);
this.f = Math.max(0, this.f - 1);
}
super.c();
@ -73,7 +76,7 @@ public class EntitySheep extends EntityAnimal {
return Block.WOOL.id;
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.SHEARS.id && !this.isSheared() && !this.isBaby()) {
@ -100,10 +103,10 @@ public class EntitySheep extends EntityAnimal {
}
itemstack.damage(1, entityhuman);
this.world.makeSound(this, "mob.sheep.shear", 1.0F, 1.0F);
this.makeSound("mob.sheep.shear", 1.0F, 1.0F);
}
return super.c(entityhuman);
return super.a(entityhuman);
}
public void b(NBTTagCompound nbttagcompound) {
@ -118,20 +121,20 @@ public class EntitySheep extends EntityAnimal {
this.setColor(nbttagcompound.getByte("Color"));
}
protected String aW() {
return "mob.sheep.say";
}
protected String aX() {
return "mob.sheep.say";
}
protected String aY() {
return "mob.sheep.say";
}
protected String aZ() {
return "mob.sheep.say";
}
protected String ba() {
return "mob.sheep.say";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.sheep.step", 0.15F, 1.0F);
this.makeSound("mob.sheep.step", 0.15F, 1.0F);
}
public int getColor() {
@ -164,20 +167,16 @@ public class EntitySheep extends EntityAnimal {
return i < 5 ? 15 : (i < 10 ? 7 : (i < 15 ? 8 : (i < 18 ? 12 : (random.nextInt(500) == 0 ? 6 : 0))));
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
EntitySheep entitysheep = (EntitySheep) entityanimal;
public EntitySheep b(EntityAgeable entityageable) {
EntitySheep entitysheep = (EntitySheep) entityageable;
EntitySheep entitysheep1 = new EntitySheep(this.world);
int i = this.a(this, entitysheep);
if (this.random.nextBoolean()) {
entitysheep1.setColor(this.getColor());
} else {
entitysheep1.setColor(entitysheep.getColor());
}
entitysheep1.setColor(15 - i);
return entitysheep1;
}
public void aG() {
public void aH() {
// CraftBukkit start
SheepRegrowWoolEvent event = new SheepRegrowWoolEvent((org.bukkit.entity.Sheep) this.getBukkitEntity());
this.world.getServer().getPluginManager().callEvent(event);
@ -198,7 +197,33 @@ public class EntitySheep extends EntityAnimal {
}
}
public void bD() {
public void bG() {
this.setColor(a(this.world.random));
}
private int a(EntityAnimal entityanimal, EntityAnimal entityanimal1) {
int i = this.b(entityanimal);
int j = this.b(entityanimal1);
this.e.getItem(0).setData(i);
this.e.getItem(1).setData(j);
ItemStack itemstack = CraftingManager.getInstance().craft(this.e, ((EntitySheep) entityanimal).world);
int k;
if (itemstack != null && itemstack.getItem().id == Item.INK_SACK.id) {
k = itemstack.getData();
} else {
k = this.world.random.nextBoolean() ? i : j;
}
return k;
}
private int b(EntityAnimal entityanimal) {
return 15 - ((EntitySheep) entityanimal).getColor();
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -10,7 +10,7 @@ public class EntitySilverfish extends EntityMonster {
super(world);
this.texture = "/mob/silverfish.png";
this.a(0.3F, 0.7F);
this.bI = 0.6F;
this.bG = 0.6F;
}
public int getMaxHealth() {
@ -27,24 +27,28 @@ public class EntitySilverfish extends EntityMonster {
return this.world.findNearbyVulnerablePlayer(this, d0);
}
protected String aW() {
protected String aY() {
return "mob.silverfish.say";
}
protected String aX() {
protected String aZ() {
return "mob.silverfish.hit";
}
protected String aY() {
protected String ba() {
return "mob.silverfish.kill";
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (this.d <= 0 && (damagesource instanceof EntityDamageSource || damagesource == DamageSource.MAGIC)) {
this.d = 20;
}
if (this.isInvulnerable()) {
return false;
} else {
if (this.d <= 0 && (damagesource instanceof EntityDamageSource || damagesource == DamageSource.MAGIC)) {
this.d = 20;
}
return super.damageEntity(damagesource, i);
return super.damageEntity(damagesource, i);
}
}
protected void a(Entity entity, float f) {
@ -55,7 +59,7 @@ public class EntitySilverfish extends EntityMonster {
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.silverfish.step", 0.15F, 1.0F);
this.makeSound("mob.silverfish.step", 0.15F, 1.0F);
}
protected int getLootId() {
@ -67,8 +71,8 @@ public class EntitySilverfish extends EntityMonster {
super.j_();
}
protected void bk() {
super.bk();
protected void bn() {
super.bn();
if (!this.world.isStatic) {
int i;
int j;
@ -124,7 +128,7 @@ public class EntitySilverfish extends EntityMonster {
// CraftBukkit end
this.world.setTypeIdAndData(i + Facing.b[l1], j + Facing.c[l1], k + Facing.d[l1], Block.MONSTER_EGGS.id, BlockMonsterEggs.f(l));
this.aQ();
this.aR();
this.die();
} else {
this.i();

Datei anzeigen

@ -6,18 +6,24 @@ import org.bukkit.event.entity.EntityCombustEvent; // CraftBukkit
public class EntitySkeleton extends EntityMonster implements IRangedEntity {
private PathfinderGoalArrowAttack d = new PathfinderGoalArrowAttack(this, 0.25F, 60, 10.0F);
private PathfinderGoalMeleeAttack e = new PathfinderGoalMeleeAttack(this, EntityHuman.class, 0.31F, false);
public EntitySkeleton(World world) {
super(world);
this.texture = "/mob/skeleton.png";
this.bI = 0.25F;
this.bG = 0.25F;
this.goalSelector.a(1, new PathfinderGoalFloat(this));
this.goalSelector.a(2, new PathfinderGoalRestrictSun(this));
this.goalSelector.a(3, new PathfinderGoalFleeSun(this, this.bI));
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bI));
this.goalSelector.a(3, new PathfinderGoalFleeSun(this, this.bG));
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bG));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(6, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false));
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, 16.0F, 0, true));
if (world != null && !world.isStatic) {
this.m();
}
}
protected void a() {
@ -25,7 +31,7 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
this.datawatcher.a(13, new Byte((byte) 0));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -33,24 +39,24 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
return 20;
}
protected String aW() {
protected String aY() {
return "mob.skeleton.say";
}
protected String aX() {
protected String aZ() {
return "mob.skeleton.hurt";
}
protected String aY() {
protected String ba() {
return "mob.skeleton.death";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.skeleton.step", 0.15F, 1.0F);
this.makeSound("mob.skeleton.step", 0.15F, 1.0F);
}
public boolean l(Entity entity) {
if (super.l(entity)) {
public boolean m(Entity entity) {
if (super.m(entity)) {
if (this.getSkeletonType() == 1 && entity instanceof EntityLiving) {
((EntityLiving) entity).addEffect(new MobEffect(MobEffectList.WITHER.id, 200));
}
@ -63,7 +69,7 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
public int c(Entity entity) {
if (this.getSkeletonType() == 1) {
ItemStack itemstack = this.bA();
ItemStack itemstack = this.bD();
int i = 4;
if (itemstack != null) {
@ -81,10 +87,10 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
}
public void c() {
if (this.world.t() && !this.world.isStatic) {
if (this.world.u() && !this.world.isStatic) {
float f = this.c(1.0F);
if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ))) {
if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.world.k(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ))) {
boolean flag = true;
ItemStack itemstack = this.getEquipment(4);
@ -179,25 +185,29 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
return null;
}
protected void bB() {
super.bB();
protected void bE() {
super.bD();
this.setEquipment(0, new ItemStack(Item.BOW));
}
public void bD() {
if (this.world.worldProvider instanceof WorldProviderHell && this.aA().nextInt(5) > 0) {
this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bI, false));
public void bG() {
if (this.world.worldProvider instanceof WorldProviderHell && this.aB().nextInt(5) > 0) {
this.goalSelector.a(4, this.e);
this.setSkeletonType(1);
this.setEquipment(0, new ItemStack(Item.STONE_SWORD));
} else {
this.goalSelector.a(4, new PathfinderGoalArrowAttack(this, this.bI, 60, 10.0F));
this.bB();
this.bC();
this.goalSelector.a(4, this.d);
this.bE();
this.bF();
}
this.canPickUpLoot = this.random.nextFloat() < as[this.world.difficulty];
if (this.random.nextFloat() >= as[this.world.difficulty]) {
;
}
this.canPickUpLoot = true;
if (this.getEquipment(4) == null) {
Calendar calendar = this.world.S();
Calendar calendar = this.world.T();
if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31 && this.random.nextFloat() < 0.25F) {
this.setEquipment(4, new ItemStack(this.random.nextFloat() < 0.1F ? Block.JACK_O_LANTERN : Block.PUMPKIN));
@ -206,10 +216,22 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
}
}
public void m() {
this.goalSelector.a((PathfinderGoal) this.e);
this.goalSelector.a((PathfinderGoal) this.d);
ItemStack itemstack = this.bD();
if (itemstack != null && itemstack.id == Item.BOW.id) {
this.goalSelector.a(4, this.d);
} else {
this.goalSelector.a(4, this.e);
}
}
public void d(EntityLiving entityliving) {
EntityArrow entityarrow = new EntityArrow(this.world, this, entityliving, 1.6F, 12.0F);
int i = EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_DAMAGE.id, this.bA());
int j = EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_KNOCKBACK.id, this.bA());
int i = EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_DAMAGE.id, this.bD());
int j = EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_KNOCKBACK.id, this.bD());
if (i > 0) {
entityarrow.b(entityarrow.c() + (double) i * 0.5D + 0.5D);
@ -219,11 +241,11 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
entityarrow.a(j);
}
if (EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_FIRE.id, this.bA()) > 0 || this.getSkeletonType() == 1) {
if (EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_FIRE.id, this.bD()) > 0 || this.getSkeletonType() == 1) {
entityarrow.setOnFire(100);
}
this.world.makeSound(this, "random.bow", 1.0F, 1.0F / (this.aA().nextFloat() * 0.4F + 0.8F));
this.makeSound("random.bow", 1.0F, 1.0F / (this.aB().nextFloat() * 0.4F + 0.8F));
this.world.addEntity(entityarrow);
}
@ -249,15 +271,18 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
this.setSkeletonType(b0);
}
if (this.getSkeletonType() == 1) {
this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bI, false));
} else {
this.goalSelector.a(4, new PathfinderGoalArrowAttack(this, this.bI, 60, 10.0F));
}
this.m();
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
nbttagcompound.setByte("SkeletonType", (byte) this.getSkeletonType());
}
public void setEquipment(int i, ItemStack itemstack) {
super.setEquipment(i, itemstack);
if (!this.world.isStatic && i == 0) {
this.m();
}
}
}

Datei anzeigen

@ -24,6 +24,7 @@ public class EntitySlime extends EntityLiving implements IMonster {
this.datawatcher.a(16, new Byte((byte) 1));
}
// CraftBukkit - protected -> public
public void setSize(int i) {
this.datawatcher.watch(16, new Byte((byte) i));
this.a(0.6F * (float) i, 0.6F * (float) i);
@ -70,8 +71,10 @@ public class EntitySlime extends EntityLiving implements IMonster {
boolean flag = this.onGround;
super.j_();
int i;
if (this.onGround && !flag) {
int i = this.getSize();
i = this.getSize();
for (int j = 0; j < i * 8; ++j) {
float f = this.random.nextFloat() * 3.1415927F * 2.0F;
@ -83,7 +86,7 @@ public class EntitySlime extends EntityLiving implements IMonster {
}
if (this.o()) {
this.world.makeSound(this, this.n(), this.aV(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) / 0.8F);
this.makeSound(this.n(), this.aX(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) / 0.8F);
}
this.b = -0.5F;
@ -92,10 +95,14 @@ public class EntitySlime extends EntityLiving implements IMonster {
}
this.k();
if (this.world.isStatic) {
i = this.getSize();
this.a(0.6F * (float) i, 0.6F * (float) i);
}
}
protected void bk() {
this.bh();
protected void bn() {
this.bk();
EntityHuman entityhuman = this.world.findNearbyVulnerablePlayer(this, 16.0D); // CraftBukkit TODO: EntityTargetEvent
if (entityhuman != null) {
@ -108,17 +115,17 @@ public class EntitySlime extends EntityLiving implements IMonster {
this.jumpDelay /= 3;
}
this.bG = true;
this.bE = true;
if (this.q()) {
this.world.makeSound(this, this.n(), this.aV(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 0.8F);
this.makeSound(this.n(), this.aX(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 0.8F);
}
this.bD = 1.0F - this.random.nextFloat() * 2.0F;
this.bE = (float) (1 * this.getSize());
this.bB = 1.0F - this.random.nextFloat() * 2.0F;
this.bC = (float) (1 * this.getSize());
} else {
this.bG = false;
this.bE = false;
if (this.onGround) {
this.bD = this.bE = 0.0F;
this.bB = this.bC = 0.0F;
}
}
}
@ -167,12 +174,12 @@ public class EntitySlime extends EntityLiving implements IMonster {
super.die();
}
public void b_(EntityHuman entityhuman) {
public void c_(EntityHuman entityhuman) {
if (this.l()) {
int i = this.getSize();
if (this.m(entityhuman) && this.e(entityhuman) < 0.6D * (double) i * 0.6D * (double) i && entityhuman.damageEntity(DamageSource.mobAttack(this), this.m())) {
this.world.makeSound(this, "mob.attack", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
if (this.n(entityhuman) && this.e(entityhuman) < 0.6D * (double) i * 0.6D * (double) i && entityhuman.damageEntity(DamageSource.mobAttack(this), this.m())) {
this.makeSound("mob.attack", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
}
}
@ -185,11 +192,11 @@ public class EntitySlime extends EntityLiving implements IMonster {
return this.getSize();
}
protected String aX() {
protected String aZ() {
return "mob.slime." + (this.getSize() > 1 ? "big" : "small");
}
protected String aY() {
protected String ba() {
return "mob.slime." + (this.getSize() > 1 ? "big" : "small");
}
@ -217,11 +224,11 @@ public class EntitySlime extends EntityLiving implements IMonster {
}
}
protected float aV() {
protected float aX() {
return 0.4F * (float) this.getSize();
}
public int bm() {
public int bp() {
return 0;
}

Datei anzeigen

@ -19,7 +19,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 16.0F, 0, true, false, IMonster.a));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -102,7 +102,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
float f = MathHelper.sqrt(d0 * d0 + d2 * d2) * 0.2F;
entitysnowball.shoot(d0, d1 + (double) f, d2, 1.6F, 12.0F);
this.world.makeSound(this, "random.bow", 1.0F, 1.0F / (this.aA().nextFloat() * 0.4F + 0.8F));
this.makeSound("random.bow", 1.0F, 1.0F / (this.aB().nextFloat() * 0.4F + 0.8F));
this.world.addEntity(entitysnowball);
}
}

Datei anzeigen

@ -8,7 +8,7 @@ public class EntitySpider extends EntityMonster {
super(world);
this.texture = "/mob/spider.png";
this.a(1.4F, 0.9F);
this.bI = 0.8F;
this.bG = 0.8F;
}
protected void a() {
@ -43,20 +43,20 @@ public class EntitySpider extends EntityMonster {
}
}
protected String aW() {
return "mob.spider.say";
}
protected String aX() {
return "mob.spider.say";
}
protected String aY() {
return "mob.spider.say";
}
protected String aZ() {
return "mob.spider.say";
}
protected String ba() {
return "mob.spider.death";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.spider.step", 0.15F, 1.0F);
this.makeSound("mob.spider.step", 0.15F, 1.0F);
}
protected void a(Entity entity, float f) {
@ -149,12 +149,12 @@ public class EntitySpider extends EntityMonster {
this.datawatcher.watch(16, Byte.valueOf(b0));
}
public void bD() {
public void bG() {
if (this.world.random.nextInt(100) == 0) {
EntitySkeleton entityskeleton = new EntitySkeleton(this.world);
entityskeleton.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F);
entityskeleton.bD();
entityskeleton.bG();
this.world.addEntity(entityskeleton);
entityskeleton.mount(this);
}

Datei anzeigen

@ -11,38 +11,38 @@ public class EntitySquid extends EntityWaterAnimal {
public float h = 0.0F;
public float i = 0.0F;
public float j = 0.0F;
public float bK = 0.0F;
public float bI = 0.0F;
private float bJ = 0.0F;
private float bK = 0.0F;
private float bL = 0.0F;
private float bM = 0.0F;
private float bN = 0.0F;
private float bO = 0.0F;
private float bP = 0.0F;
private float bQ = 0.0F;
public EntitySquid(World world) {
super(world);
this.texture = "/mob/squid.png";
this.a(0.95F, 0.95F);
this.bM = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
this.bK = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
}
public int getMaxHealth() {
return 10;
}
protected String aW() {
return null;
}
protected String aX() {
return null;
}
protected String aY() {
return null;
}
protected float aV() {
protected String aZ() {
return null;
}
protected String ba() {
return null;
}
protected float aX() {
return 0.4F;
}
@ -72,12 +72,12 @@ public class EntitySquid extends EntityWaterAnimal {
this.e = this.d;
this.g = this.f;
this.i = this.h;
this.bK = this.j;
this.h += this.bM;
this.bI = this.j;
this.h += this.bK;
if (this.h > 6.2831855F) {
this.h -= 6.2831855F;
if (this.random.nextInt(10) == 0) {
this.bM = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
this.bK = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
}
}
@ -88,28 +88,28 @@ public class EntitySquid extends EntityWaterAnimal {
f = this.h / 3.1415927F;
this.j = MathHelper.sin(f * f * 3.1415927F) * 3.1415927F * 0.25F;
if ((double) f > 0.75D) {
this.bJ = 1.0F;
this.bL = 1.0F;
this.bN = 1.0F;
} else {
this.bN *= 0.8F;
this.bL *= 0.8F;
}
} else {
this.j = 0.0F;
this.bL *= 0.9F;
this.bN *= 0.99F;
this.bJ *= 0.9F;
this.bL *= 0.99F;
}
if (!this.world.isStatic) {
this.motX = (double) (this.bO * this.bL);
this.motY = (double) (this.bP * this.bL);
this.motZ = (double) (this.bQ * this.bL);
this.motX = (double) (this.bM * this.bJ);
this.motY = (double) (this.bN * this.bJ);
this.motZ = (double) (this.bO * this.bJ);
}
f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ);
// CraftBukkit - Math -> TrigMath
this.aw += (-((float) TrigMath.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F - this.aw) * 0.1F;
this.yaw = this.aw;
this.f += 3.1415927F * this.bN * 1.5F;
this.f += 3.1415927F * this.bL * 1.5F;
// CraftBukkit - Math -> TrigMath
this.d += (-((float) TrigMath.atan2((double) f, this.motY)) * 180.0F / 3.1415927F - this.d) * 0.1F;
} else {
@ -129,19 +129,19 @@ public class EntitySquid extends EntityWaterAnimal {
this.move(this.motX, this.motY, this.motZ);
}
protected void bk() {
++this.bC;
if (this.bC > 100) {
this.bO = this.bP = this.bQ = 0.0F;
} else if (this.random.nextInt(50) == 0 || !this.ad || this.bO == 0.0F && this.bP == 0.0F && this.bQ == 0.0F) {
protected void bn() {
++this.bA;
if (this.bA > 100) {
this.bM = this.bN = this.bO = 0.0F;
} else if (this.random.nextInt(50) == 0 || !this.ad || this.bM == 0.0F && this.bN == 0.0F && this.bO == 0.0F) {
float f = this.random.nextFloat() * 3.1415927F * 2.0F;
this.bO = MathHelper.cos(f) * 0.2F;
this.bP = -0.1F + this.random.nextFloat() * 0.2F;
this.bQ = MathHelper.sin(f) * 0.2F;
this.bM = MathHelper.cos(f) * 0.2F;
this.bN = -0.1F + this.random.nextFloat() * 0.2F;
this.bO = MathHelper.sin(f) * 0.2F;
}
this.bh();
this.bk();
}
public boolean canSpawn() {

Datei anzeigen

@ -139,18 +139,15 @@ public class EntityTracker {
}
}
iterator = arraylist.iterator();
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
EntityPlayer entityplayer1 = entityplayer;
for (int i = 0; i < arraylist.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) arraylist.get(i);
Iterator iterator1 = this.b.iterator();
while (iterator1.hasNext()) {
EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry) iterator1.next();
if (entitytrackerentry1.tracker != entityplayer1) {
entitytrackerentry1.updatePlayer(entityplayer1);
if (entitytrackerentry1.tracker != entityplayer) {
entitytrackerentry1.updatePlayer(entityplayer);
}
}
}
@ -184,4 +181,16 @@ public class EntityTracker {
entitytrackerentry.clear(entityplayer);
}
}
public void a(EntityPlayer entityplayer, Chunk chunk) {
Iterator iterator = this.b.iterator();
while (iterator.hasNext()) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next();
if (entitytrackerentry.tracker != entityplayer && entitytrackerentry.tracker.ai == chunk.x && entitytrackerentry.tracker.ak == chunk.z) {
entitytrackerentry.updatePlayer(entityplayer);
}
}
}
}

Datei anzeigen

@ -32,6 +32,7 @@ public class EntityTrackerEntry {
private boolean isMoving;
private int u = 0;
private Entity v;
private boolean w = false;
public boolean n = false;
public Set trackedPlayers = new HashSet();
@ -78,18 +79,18 @@ public class EntityTrackerEntry {
if (i5 != null && i5.getItem() instanceof ItemWorldMap) {
WorldMap i7 = Item.MAP.getSavedMap(i5, this.tracker.world);
Iterator i8 = list.iterator();
Iterator j0 = list.iterator();
while (i8.hasNext()) {
EntityHuman j0 = (EntityHuman) i8.next();
EntityPlayer j1 = (EntityPlayer) j0;
while (j0.hasNext()) {
EntityHuman j1 = (EntityHuman) j0.next();
EntityPlayer j2 = (EntityPlayer) j1;
i7.a(j1, i5);
if (j1.netServerHandler.lowPriorityCount() <= 5) {
Packet j2 = Item.MAP.c(i5, this.tracker.world, j1);
i7.a(j2, i5);
if (j2.netServerHandler.lowPriorityCount() <= 5) {
Packet j3 = Item.MAP.c(i5, this.tracker.world, j2);
if (j2 != null) {
j1.netServerHandler.sendPacket(j2);
if (j3 != null) {
j2.netServerHandler.sendPacket(j3);
}
}
}
@ -131,7 +132,7 @@ public class EntityTrackerEntry {
}
// CraftBukkit end
if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128 && this.u <= 400) {
if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128 && this.u <= 400 && !this.w) {
if (flag && flag1) {
object = new Packet33RelEntityMoveLook(this.tracker.id, (byte) j1, (byte) k1, (byte) l1, (byte) l, (byte) i1);
} else if (flag) {
@ -186,6 +187,8 @@ public class EntityTrackerEntry {
this.xRot = i1;
}
// CraftBukkit end */
this.w = false;
} else {
i = MathHelper.d(this.tracker.yaw * 256.0F / 360.0F);
j = MathHelper.d(this.tracker.pitch * 256.0F / 360.0F);
@ -200,6 +203,13 @@ public class EntityTrackerEntry {
this.xLoc = this.tracker.ar.a(this.tracker.locX);
this.yLoc = MathHelper.floor(this.tracker.locY * 32.0D);
this.zLoc = this.tracker.ar.a(this.tracker.locZ);
DataWatcher datawatcher2 = this.tracker.getDataWatcher();
if (datawatcher2.a()) {
this.broadcastIncludingSelf(new Packet40EntityMetadata(this.tracker.id, datawatcher2, false));
}
this.w = true;
}
i = MathHelper.d(this.tracker.ap() * 256.0F / 360.0F);
@ -355,12 +365,8 @@ public class EntityTrackerEntry {
}
public void scanPlayers(List list) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
EntityHuman entityhuman = (EntityHuman) iterator.next();
this.updatePlayer((EntityPlayer) entityhuman);
for (int i = 0; i < list.size(); ++i) {
this.updatePlayer((EntityPlayer) list.get(i));
}
}

Datei anzeigen

@ -11,10 +11,10 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
public EntityWitch(World world) {
super(world);
this.texture = "/mob/villager/witch.png";
this.bI = 0.25F;
this.bG = 0.25F;
this.goalSelector.a(1, new PathfinderGoalFloat(this));
this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bI, 60, 10.0F));
this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, this.bI));
this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bG, 60, 10.0F));
this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, this.bG));
this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(3, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false));
@ -26,15 +26,15 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
this.getDataWatcher().a(21, Byte.valueOf((byte) 0));
}
protected String aW() {
protected String aY() {
return "mob.witch.idle";
}
protected String aX() {
protected String aZ() {
return "mob.witch.hurt";
}
protected String aY() {
protected String ba() {
return "mob.witch.death";
}
@ -50,7 +50,7 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
return 26;
}
public boolean bb() {
public boolean be() {
return true;
}
@ -59,7 +59,7 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
if (this.m()) {
if (this.e-- <= 0) {
this.f(false);
ItemStack itemstack = this.bA();
ItemStack itemstack = this.bD();
this.setEquipment(0, (ItemStack) null);
if (itemstack != null && itemstack.id == Item.POTION.id) {
@ -83,15 +83,15 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
short1 = 16307;
} else if (this.random.nextFloat() < 0.05F && this.health < this.getMaxHealth()) {
short1 = 16341;
} else if (this.random.nextFloat() < 0.25F && this.aF() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.aF().e(this) > 121.0D) {
} else if (this.random.nextFloat() < 0.25F && this.aG() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.aG().e(this) > 121.0D) {
short1 = 16274;
} else if (this.random.nextFloat() < 0.25F && this.aF() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.aF().e(this) > 121.0D) {
} else if (this.random.nextFloat() < 0.25F && this.aG() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.aG().e(this) > 121.0D) {
short1 = 16274;
}
if (short1 > -1) {
this.setEquipment(0, new ItemStack(Item.POTION, 1, short1));
this.e = this.bA().m();
this.e = this.bD().m();
this.f(true);
}
}
@ -117,8 +117,8 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
return i;
}
public float by() {
float f = super.by();
public float bB() {
float f = super.bB();
if (this.m()) {
f *= 0.75F;

Datei anzeigen

@ -16,7 +16,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
private int[] h = new int[2];
private int[] i = new int[2];
private int j;
private static final IEntitySelector bK = new EntitySelectorNotUndead();
private static final IEntitySelector bI = new EntitySelectorNotUndead();
public EntityWither(World world) {
super(world);
@ -24,15 +24,15 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
this.texture = "/mob/wither.png";
this.a(0.9F, 4.0F);
this.fireProof = true;
this.bI = 0.6F;
this.bG = 0.6F;
this.getNavigation().e(true);
this.goalSelector.a(0, new PathfinderGoalFloat(this));
this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bI, 40, 20.0F));
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bI));
this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, this.bG, 40, 20.0F));
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, this.bG));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false));
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 30.0F, 0, false, false, bK));
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 30.0F, 0, false, false, bI));
this.bc = 50;
}
@ -52,19 +52,19 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
public void a(NBTTagCompound nbttagcompound) {
super.a(nbttagcompound);
this.s(nbttagcompound.getInt("Invul"));
this.t(nbttagcompound.getInt("Invul"));
this.datawatcher.watch(16, Integer.valueOf(this.health));
}
protected String aW() {
protected String aY() {
return "mob.wither.idle";
}
protected String aX() {
protected String aZ() {
return "mob.wither.hurt";
}
protected String aY() {
protected String ba() {
return "mob.wither.death";
}
@ -78,8 +78,8 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
double d1;
double d2;
if (!this.world.isStatic && this.t(0) > 0) {
Entity entity = this.world.getEntity(this.t(0));
if (!this.world.isStatic && this.u(0) > 0) {
Entity entity = this.world.getEntity(this.u(0));
if (entity != null) {
if (this.locY < entity.locY || !this.o() && this.locY < entity.locY + 5.0D) {
@ -118,7 +118,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
int j;
for (i = 0; i < 2; ++i) {
j = this.t(i + 1);
j = this.u(i + 1);
Entity entity1 = null;
if (j > 0) {
@ -126,9 +126,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
if (entity1 != null) {
d0 = this.u(i + 1);
d1 = this.v(i + 1);
d2 = this.w(i + 1);
d0 = this.v(i + 1);
d1 = this.w(i + 1);
d2 = this.x(i + 1);
double d4 = entity1.locX - d0;
double d5 = entity1.locY + (double) entity1.getHeadHeight() - d1;
double d6 = entity1.locZ - d2;
@ -146,9 +146,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
boolean flag = this.o();
for (j = 0; j < 3; ++j) {
double d8 = this.u(j);
double d9 = this.v(j);
double d10 = this.w(j);
double d8 = this.v(j);
double d9 = this.w(j);
double d10 = this.x(j);
this.world.addParticle("smoke", d8 + this.random.nextGaussian() * 0.30000001192092896D, d9 + this.random.nextGaussian() * 0.30000001192092896D, d10 + this.random.nextGaussian() * 0.30000001192092896D, 0.0D, 0.0D, 0.0D);
if (flag && this.world.random.nextInt(4) == 0) {
@ -163,7 +163,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
}
protected void bi() {
protected void bl() {
int i;
if (this.n() > 0) {
@ -181,12 +181,12 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
this.world.e(1013, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
}
this.s(i);
this.t(i);
if (this.ticksLived % 10 == 0) {
this.heal(10, EntityRegainHealthEvent.RegainReason.WITHER_SPAWN); // CraftBukkit
}
} else {
super.bi();
super.bl();
int j;
@ -210,11 +210,11 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
}
j = this.t(i);
j = this.u(i);
if (j > 0) {
Entity entity = this.world.getEntity(j);
if (entity != null && entity.isAlive() && this.e(entity) <= 900.0D && this.m(entity)) {
if (entity != null && entity.isAlive() && this.e(entity) <= 900.0D && this.n(entity)) {
this.a(i + 1, (EntityLiving) entity);
this.h[i - 1] = this.ticksLived + 40 + this.random.nextInt(20);
this.i[i - 1] = 0;
@ -222,7 +222,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
this.c(i, 0);
}
} else {
List list = this.world.a(EntityLiving.class, this.boundingBox.grow(20.0D, 8.0D, 20.0D), bK);
List list = this.world.a(EntityLiving.class, this.boundingBox.grow(20.0D, 8.0D, 20.0D), bI);
for (int i1 = 0; i1 < 10 && !list.isEmpty(); ++i1) {
EntityLiving entityliving = (EntityLiving) list.get(this.random.nextInt(list.size()));
@ -244,8 +244,8 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
}
if (this.aF() != null) {
this.c(0, this.aF().id);
if (this.aG() != null) {
this.c(0, this.aG().id);
} else {
this.c(0, 0);
}
@ -266,7 +266,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
int l2 = j1 + l1;
int i3 = this.world.getTypeId(j2, k2, l2);
if (i3 > 0 && i3 != Block.BEDROCK.id) {
if (i3 > 0 && i3 != Block.BEDROCK.id && i3 != Block.ENDER_PORTAL.id && i3 != Block.ENDER_PORTAL_FRAME.id) {
int j3 = this.world.getData(j2, k2, l2);
// CraftBukkit start
@ -297,17 +297,17 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
public void m() {
this.s(220);
this.t(220);
this.setHealth(this.getMaxHealth() / 3);
}
public void am() {}
public int aU() {
public int aW() {
return 4;
}
private double u(int i) {
private double v(int i) {
if (i <= 0) {
return this.locX;
} else {
@ -318,11 +318,11 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
}
private double v(int i) {
private double w(int i) {
return i <= 0 ? this.locY + 3.0D : this.locY + 2.2D;
}
private double w(int i) {
private double x(int i) {
if (i <= 0) {
return this.locZ;
} else {
@ -353,9 +353,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
private void a(int i, double d0, double d1, double d2, boolean flag) {
this.world.a((EntityHuman) null, 1014, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
double d3 = this.u(i);
double d4 = this.v(i);
double d5 = this.w(i);
double d3 = this.v(i);
double d4 = this.w(i);
double d5 = this.x(i);
double d6 = d0 - d3;
double d7 = d1 - d4;
double d8 = d2 - d5;
@ -376,7 +376,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
}
public boolean damageEntity(DamageSource damagesource, int i) {
if (damagesource == DamageSource.DROWN) {
if (this.isInvulnerable()) {
return false;
} else if (damagesource == DamageSource.DROWN) {
return false;
} else if (this.n() > 0) {
return false;
@ -415,8 +417,8 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
// CraftBukkit end
}
protected void bh() {
this.bC = 0;
protected void bk() {
this.bA = 0;
}
public boolean L() {
@ -431,7 +433,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
public void addEffect(MobEffect mobeffect) {}
protected boolean bb() {
protected boolean be() {
return true;
}
@ -443,11 +445,11 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
return this.datawatcher.getInt(20);
}
public void s(int i) {
public void t(int i) {
this.datawatcher.watch(20, Integer.valueOf(i));
}
public int t(int i) {
public int u(int i) {
return this.datawatcher.getInt(17 + i);
}

Datei anzeigen

@ -28,7 +28,7 @@ public class EntityWitherSkull extends EntityFireball {
public float a(Explosion explosion, Block block, int i, int j, int k) {
float f = super.a(explosion, block, i, j, k);
if (this.d() && block != Block.BEDROCK) {
if (this.d() && block != Block.BEDROCK && block != Block.ENDER_PORTAL && block != Block.ENDER_PORTAL_FRAME) {
f = Math.min(0.8F, f);
}

Datei anzeigen

@ -13,15 +13,15 @@ public class EntityWolf extends EntityTameableAnimal {
super(world);
this.texture = "/mob/wolf.png";
this.a(0.6F, 0.8F);
this.bI = 0.3F;
this.bG = 0.3F;
this.getNavigation().a(true);
this.goalSelector.a(1, new PathfinderGoalFloat(this));
this.goalSelector.a(2, this.d);
this.goalSelector.a(3, new PathfinderGoalLeapAtTarget(this, 0.4F));
this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, this.bI, true));
this.goalSelector.a(5, new PathfinderGoalFollowOwner(this, this.bI, 10.0F, 2.0F));
this.goalSelector.a(6, new PathfinderGoalBreed(this, this.bI));
this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, this.bI));
this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, this.bG, true));
this.goalSelector.a(5, new PathfinderGoalFollowOwner(this, this.bG, 10.0F, 2.0F));
this.goalSelector.a(6, new PathfinderGoalBreed(this, this.bG));
this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, this.bG));
this.goalSelector.a(8, new PathfinderGoalBeg(this, 8.0F));
this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(9, new PathfinderGoalRandomLookaround(this));
@ -31,7 +31,7 @@ public class EntityWolf extends EntityTameableAnimal {
this.targetSelector.a(4, new PathfinderGoalRandomTargetNonTamed(this, EntitySheep.class, 16.0F, 200, false));
}
public boolean bb() {
public boolean be() {
return true;
}
@ -42,7 +42,7 @@ public class EntityWolf extends EntityTameableAnimal {
}
}
protected void bj() {
protected void bm() {
this.datawatcher.watch(18, Integer.valueOf(this.getHealth()));
}
@ -58,7 +58,7 @@ public class EntityWolf extends EntityTameableAnimal {
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.wolf.step", 0.15F, 1.0F);
this.makeSound("mob.wolf.step", 0.15F, 1.0F);
}
public void b(NBTTagCompound nbttagcompound) {
@ -75,23 +75,23 @@ public class EntityWolf extends EntityTameableAnimal {
}
}
protected boolean bg() {
protected boolean bj() {
return this.isAngry();
}
protected String aW() {
protected String aY() {
return this.isAngry() ? "mob.wolf.growl" : (this.random.nextInt(3) == 0 ? (this.isTamed() && this.datawatcher.getInt(18) < 10 ? "mob.wolf.whine" : "mob.wolf.panting") : "mob.wolf.bark");
}
protected String aX() {
protected String aZ() {
return "mob.wolf.hurt";
}
protected String aY() {
protected String ba() {
return "mob.wolf.death";
}
protected float aV() {
protected float aX() {
return 0.4F;
}
@ -112,14 +112,14 @@ public class EntityWolf extends EntityTameableAnimal {
public void j_() {
super.j_();
this.f = this.e;
if (this.bI()) {
if (this.bM()) {
this.e += (1.0F - this.e) * 0.4F;
} else {
this.e += (0.0F - this.e) * 0.4F;
}
if (this.bI()) {
this.bJ = 10;
if (this.bM()) {
this.bH = 10;
}
if (this.G()) {
@ -129,7 +129,7 @@ public class EntityWolf extends EntityTameableAnimal {
this.j = 0.0F;
} else if ((this.g || this.h) && this.h) {
if (this.i == 0.0F) {
this.world.makeSound(this, "mob.wolf.shake", this.aV(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.makeSound("mob.wolf.shake", this.aX(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
this.j = this.i;
@ -159,28 +159,32 @@ public class EntityWolf extends EntityTameableAnimal {
return this.length * 0.8F;
}
public int bm() {
return this.isSitting() ? 20 : super.bm();
public int bp() {
return this.isSitting() ? 20 : super.bp();
}
public boolean damageEntity(DamageSource damagesource, int i) {
Entity entity = damagesource.getEntity();
if (this.isInvulnerable()) {
return false;
} else {
Entity entity = damagesource.getEntity();
this.d.a(false);
if (entity != null && !(entity instanceof EntityHuman) && !(entity instanceof EntityArrow)) {
i = (i + 1) / 2;
this.d.a(false);
if (entity != null && !(entity instanceof EntityHuman) && !(entity instanceof EntityArrow)) {
i = (i + 1) / 2;
}
return super.damageEntity(damagesource, i);
}
return super.damageEntity(damagesource, i);
}
public boolean l(Entity entity) {
public boolean m(Entity entity) {
int i = this.isTamed() ? 4 : 2;
return entity.damageEntity(DamageSource.mobAttack(this), i);
}
public boolean c(EntityHuman entityhuman) {
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (this.isTamed()) {
@ -205,7 +209,7 @@ public class EntityWolf extends EntityTameableAnimal {
if (i != this.getCollarColor()) {
this.setCollarColor(i);
if (!entityhuman.abilities.canInstantlyBuild && itemstack.count-- <= 0) {
if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count <= 0) {
entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null);
}
@ -216,7 +220,7 @@ public class EntityWolf extends EntityTameableAnimal {
if (entityhuman.name.equalsIgnoreCase(this.getOwnerName()) && !this.world.isStatic && !this.c(itemstack)) {
this.d.a(!this.isSitting());
this.bG = false;
this.bE = false;
this.setPathEntity((PathEntity) null);
}
} else if (itemstack != null && itemstack.id == Item.BONE.id && !this.isAngry()) {
@ -248,14 +252,14 @@ public class EntityWolf extends EntityTameableAnimal {
return true;
}
return super.c(entityhuman);
return super.a(entityhuman);
}
public boolean c(ItemStack itemstack) {
return itemstack == null ? false : (!(Item.byId[itemstack.id] instanceof ItemFood) ? false : ((ItemFood) Item.byId[itemstack.id]).i());
}
public int bs() {
public int bv() {
return 8;
}
@ -281,7 +285,7 @@ public class EntityWolf extends EntityTameableAnimal {
this.datawatcher.watch(20, Byte.valueOf((byte) (i & 15)));
}
public EntityAnimal createChild(EntityAnimal entityanimal) {
public EntityWolf b(EntityAgeable entityageable) {
EntityWolf entitywolf = new EntityWolf(this.world);
entitywolf.setOwnerName(this.getOwnerName());
@ -313,7 +317,11 @@ public class EntityWolf extends EntityTameableAnimal {
}
}
public boolean bI() {
public boolean bM() {
return this.datawatcher.getByte(19) == 1;
}
public EntityAgeable createChild(EntityAgeable entityageable) {
return this.b(entityageable);
}
}

Datei anzeigen

@ -11,15 +11,15 @@ public class EntityZombie extends EntityMonster {
public EntityZombie(World world) {
super(world);
this.texture = "/mob/zombie.png";
this.bI = 0.23F;
this.bG = 0.23F;
this.getNavigation().b(true);
this.goalSelector.a(0, new PathfinderGoalFloat(this));
this.goalSelector.a(1, new PathfinderGoalBreakDoor(this));
this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bI, false));
this.goalSelector.a(3, new PathfinderGoalMeleeAttack(this, EntityVillager.class, this.bI, true));
this.goalSelector.a(4, new PathfinderGoalMoveTowardsRestriction(this, this.bI));
this.goalSelector.a(5, new PathfinderGoalMoveThroughVillage(this, this.bI, false));
this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, this.bI));
this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, this.bG, false));
this.goalSelector.a(3, new PathfinderGoalMeleeAttack(this, EntityVillager.class, this.bG, true));
this.goalSelector.a(4, new PathfinderGoalMoveTowardsRestriction(this, this.bG));
this.goalSelector.a(5, new PathfinderGoalMoveThroughVillage(this, this.bG, false));
this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, this.bG));
this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false));
@ -27,8 +27,8 @@ public class EntityZombie extends EntityMonster {
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityVillager.class, 16.0F, 0, false));
}
public float by() {
return super.by() * (this.isBaby() ? 1.5F : 1.0F);
public float bB() {
return super.bB() * (this.isBaby() ? 1.5F : 1.0F);
}
protected void a() {
@ -42,8 +42,8 @@ public class EntityZombie extends EntityMonster {
return 20;
}
public int aU() {
int i = super.aU() + 2;
public int aW() {
int i = super.aW() + 2;
if (i > 20) {
i = 20;
@ -52,7 +52,7 @@ public class EntityZombie extends EntityMonster {
return i;
}
protected boolean bb() {
protected boolean be() {
return true;
}
@ -73,10 +73,10 @@ public class EntityZombie extends EntityMonster {
}
public void c() {
if (this.world.t() && !this.world.isStatic && !this.isBaby()) {
if (this.world.u() && !this.world.isStatic && !this.isBaby()) {
float f = this.c(1.0F);
if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ))) {
if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.world.k(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ))) {
boolean flag = true;
ItemStack itemstack = this.getEquipment(4);
@ -122,7 +122,7 @@ public class EntityZombie extends EntityMonster {
}
public int c(Entity entity) {
ItemStack itemstack = this.bA();
ItemStack itemstack = this.bD();
int i = 4;
if (itemstack != null) {
@ -132,20 +132,20 @@ public class EntityZombie extends EntityMonster {
return i;
}
protected String aW() {
protected String aY() {
return "mob.zombie.say";
}
protected String aX() {
protected String aZ() {
return "mob.zombie.hurt";
}
protected String aY() {
protected String ba() {
return "mob.zombie.death";
}
protected void a(int i, int j, int k, int l) {
this.world.makeSound(this, "mob.zombie.step", 0.15F, 1.0F);
this.makeSound("mob.zombie.step", 0.15F, 1.0F);
}
protected int getLootId() {
@ -171,8 +171,8 @@ public class EntityZombie extends EntityMonster {
}
// CraftBukkit end
protected void bB() {
super.bB();
protected void bE() {
super.bE();
if (this.random.nextFloat() < (this.world.difficulty == 3 ? 0.05F : 0.01F)) {
int i = this.random.nextInt(3);
@ -221,9 +221,9 @@ public class EntityZombie extends EntityMonster {
EntityZombie entityzombie = new EntityZombie(this.world);
entityzombie.j(entityliving);
entityzombie.k(entityliving);
this.world.kill(entityliving);
entityzombie.bD();
entityzombie.bG();
entityzombie.setVillager(true);
if (entityliving.isBaby()) {
entityzombie.setBaby(true);
@ -234,16 +234,16 @@ public class EntityZombie extends EntityMonster {
}
}
public void bD() {
public void bG() {
this.canPickUpLoot = this.random.nextFloat() < as[this.world.difficulty];
if (this.world.random.nextFloat() < 0.05F) {
this.setVillager(true);
}
this.bB();
this.bC();
this.bE();
this.bF();
if (this.getEquipment(4) == null) {
Calendar calendar = this.world.S();
Calendar calendar = this.world.T();
if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31 && this.random.nextFloat() < 0.25F) {
this.setEquipment(4, new ItemStack(this.random.nextFloat() < 0.1F ? Block.JACK_O_LANTERN : Block.PUMPKIN));
@ -252,8 +252,8 @@ public class EntityZombie extends EntityMonster {
}
}
public boolean c(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.bP();
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.bT();
if (itemstack != null && itemstack.getItem() == Item.GOLDEN_APPLE && itemstack.getData() == 0 && this.isVillager() && this.hasEffect(MobEffectList.WEAKNESS)) {
if (!entityhuman.abilities.canInstantlyBuild) {
@ -289,8 +289,8 @@ public class EntityZombie extends EntityMonster {
protected void p() {
EntityVillager entityvillager = new EntityVillager(this.world);
entityvillager.j(this);
entityvillager.bD();
entityvillager.k(this);
entityvillager.bG();
entityvillager.q();
if (this.isBaby()) {
entityvillager.setAge(-24000);

Datei anzeigen

@ -270,13 +270,17 @@ public class Explosion {
data = Block.SKULL.getDropData(this.world, i, j, k);
}
Block.byId[l].dropNaturally(this.world, i, j, k, data, event.getYield(), 0);
Block block = Block.byId[l];
if (block.a(this)) {
block.dropNaturally(this.world, i, j, k, data, event.getYield(), 0);
}
// CraftBukkit end
if (this.world.setRawTypeIdAndData(i, j, k, 0, 0, this.world.isStatic)) {
this.world.applyPhysics(i, j, k, 0);
}
Block.byId[l].wasExploded(this.world, i, j, k);
block.wasExploded(this.world, i, j, k);
}
}
}

Datei anzeigen

@ -44,7 +44,7 @@ public class FoodMetaData {
}
}
if (this.foodLevel >= 18 && entityhuman.ca()) {
if (this.foodLevel >= 18 && entityhuman.ce()) {
++this.foodTickTimer;
if (this.foodTickTimer >= 80) {
// CraftBukkit - added RegainReason

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen