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

Update CraftBukkit to Minecraft 1.5.1

Dieser Commit ist enthalten in:
Travis Watkins 2013-03-20 15:09:23 -05:00
Ursprung 6aaa1e83df
Commit 696543cf3f
21 geänderte Dateien mit 307 neuen und 231 gelöschten Zeilen

Datei anzeigen

@ -4,7 +4,7 @@
<groupId>org.bukkit</groupId> <groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId> <artifactId>craftbukkit</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.5-R0.1-SNAPSHOT</version> <version>1.5.1-R0.1-SNAPSHOT</version>
<name>CraftBukkit</name> <name>CraftBukkit</name>
<url>http://www.bukkit.org</url> <url>http://www.bukkit.org</url>
@ -12,8 +12,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<api.version>unknown</api.version> <api.version>unknown</api.version>
<junit.version>4.11</junit.version> <junit.version>4.11</junit.version>
<minecraft.version>1.5</minecraft.version> <minecraft.version>1.5.1</minecraft.version>
<minecraft_version>1_5_R1</minecraft_version> <minecraft_version>1_5_R2</minecraft_version>
</properties> </properties>
<scm> <scm>

Datei anzeigen

@ -159,6 +159,8 @@ public class BlockDispenser extends BlockContainer {
} }
} }
} }
world.m(i, j, k, l);
} }
super.remove(world, i, j, k, l, i1); super.remove(world, i, j, k, l, i1);

Datei anzeigen

@ -148,7 +148,7 @@ public class ContainerAnvil extends Container {
int k2 = l1 - k1; int k2 = l1 - k1;
boolean flag1 = enchantment.canEnchant(itemstack); boolean flag1 = enchantment.canEnchant(itemstack);
if (this.n.abilities.canInstantlyBuild) { if (this.n.abilities.canInstantlyBuild || itemstack.id == ItemEnchantedBook.ENCHANTED_BOOK.id) {
flag1 = true; flag1 = true;
} }

Datei anzeigen

@ -48,7 +48,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
System.setErr(new PrintStream(new LoggerOutputStream(this.getLogger().getLogger(), Level.SEVERE), true)); System.setErr(new PrintStream(new LoggerOutputStream(this.getLogger().getLogger(), Level.SEVERE), true));
// CraftBukkit end // CraftBukkit end
this.getLogger().info("Starting minecraft server version 1.5"); this.getLogger().info("Starting minecraft server version 1.5.1");
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
this.getLogger().warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); this.getLogger().warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
} }

Datei anzeigen

@ -57,28 +57,28 @@ public class DedicatedServerConnectionThread extends Thread {
while (this.e.a) { while (this.e.a) {
try { try {
Socket socket = this.d.accept(); Socket socket = this.d.accept();
InetAddress inetaddress = socket.getInetAddress();
long i = System.currentTimeMillis();
HashMap hashmap = this.b;
// CraftBukkit start // CraftBukkit start - connection throttle
InetAddress address = socket.getInetAddress();
long currentTime = System.currentTimeMillis();
if (((MinecraftServer) this.e.d()).server == null) { if (((MinecraftServer) this.e.d()).server == null) {
socket.close(); socket.close();
continue; continue;
} }
connectionThrottle = ((MinecraftServer) this.e.d()).server.getConnectionThrottle(); connectionThrottle = ((MinecraftServer) this.e.d()).server.getConnectionThrottle();
// CraftBukkit end
synchronized (this.b) { synchronized (this.b) {
if (this.b.containsKey(inetaddress) && !b(inetaddress) && i - ((Long) this.b.get(inetaddress)).longValue() < connectionThrottle) { if (this.b.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - ((Long) this.b.get(address)).longValue() < connectionThrottle) {
this.b.put(inetaddress, Long.valueOf(i)); this.b.put(address, Long.valueOf(currentTime));
socket.close(); socket.close();
continue; continue;
} }
this.b.put(inetaddress, Long.valueOf(i)); this.b.put(address, Long.valueOf(currentTime));
} }
// CraftBukkit end
PendingConnection pendingconnection = new PendingConnection(this.e.d(), socket, "Connection #" + this.c++); PendingConnection pendingconnection = new PendingConnection(this.e.d(), socket, "Connection #" + this.c++);
@ -103,10 +103,6 @@ public class DedicatedServerConnectionThread extends Thread {
} }
} }
private static boolean b(InetAddress inetaddress) {
return "127.0.0.1".equals(inetaddress.getHostAddress());
}
public void a(InetAddress inetaddress) { public void a(InetAddress inetaddress) {
if (inetaddress != null) { if (inetaddress != null) {
HashMap hashmap = this.b; HashMap hashmap = this.b;

Datei anzeigen

@ -88,7 +88,7 @@ public abstract class Entity {
public int ticksLived; public int ticksLived;
public int maxFireTicks; public int maxFireTicks;
public int fireTicks; // CraftBukkit - private -> public public int fireTicks; // CraftBukkit - private -> public
protected boolean ae; protected boolean inWater;
public int noDamageTicks; public int noDamageTicks;
private boolean justCreated; private boolean justCreated;
protected boolean fireProof; protected boolean fireProof;
@ -137,7 +137,7 @@ public abstract class Entity {
this.ticksLived = 0; this.ticksLived = 0;
this.maxFireTicks = 1; this.maxFireTicks = 1;
this.fireTicks = 0; this.fireTicks = 0;
this.ae = false; this.inWater = false;
this.noDamageTicks = 0; this.noDamageTicks = 0;
this.justCreated = true; this.justCreated = true;
this.fireProof = false; this.fireProof = false;
@ -819,16 +819,16 @@ public abstract class Entity {
} }
public boolean F() { public boolean F() {
return this.ae || this.world.F(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) || this.world.F(MathHelper.floor(this.locX), MathHelper.floor(this.locY + (double) this.length), MathHelper.floor(this.locZ)); return this.inWater || this.world.F(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) || this.world.F(MathHelper.floor(this.locX), MathHelper.floor(this.locY + (double) this.length), MathHelper.floor(this.locZ));
} }
public boolean G() { public boolean G() {
return this.ae; return this.inWater;
} }
public boolean H() { public boolean H() {
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.world.a(this.boundingBox.grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D, 0.001D, 0.001D), Material.WATER, this)) {
if (!this.ae && !this.justCreated) { if (!this.inWater && !this.justCreated) {
float f = MathHelper.sqrt(this.motX * this.motX * 0.20000000298023224D + this.motY * this.motY + this.motZ * this.motZ * 0.20000000298023224D) * 0.2F; 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) { if (f > 1.0F) {
@ -856,13 +856,13 @@ public abstract class Entity {
} }
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
this.ae = true; this.inWater = true;
this.fireTicks = 0; this.fireTicks = 0;
} else { } else {
this.ae = false; this.inWater = false;
} }
return this.ae; return this.inWater;
} }
public boolean a(Material material) { public boolean a(Material material) {

Datei anzeigen

@ -430,7 +430,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex {
int j2 = this.world.getTypeId(k1, l1, i2); int j2 = this.world.getTypeId(k1, l1, i2);
if (j2 != 0) { if (j2 != 0) {
if (j2 != Block.OBSIDIAN.id && j2 != Block.WHITESTONE.id && j2 != Block.BEDROCK.id) { if (j2 != Block.OBSIDIAN.id && j2 != Block.WHITESTONE.id && j2 != Block.BEDROCK.id && this.world.getGameRules().getBoolean("mobGriefing")) {
// CraftBukkit start - add blocks to list rather than destroying them // CraftBukkit start - add blocks to list rather than destroying them
// flag1 = this.world.setAir(k1, l1, i2) || flag1; // flag1 = this.world.setAir(k1, l1, i2) || flag1;
flag1 = true; flag1 = true;

Datei anzeigen

@ -436,11 +436,11 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void c(Entity entity, int i) { public void c(Entity entity, int i) {
this.addScore(i); this.addScore(i);
Collection collection = this.getScoreboard().a(IObjective.e); Collection collection = this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.e);
if (entity instanceof EntityHuman) { if (entity instanceof EntityHuman) {
this.a(StatisticList.A, 1); this.a(StatisticList.A, 1);
collection.addAll(this.getScoreboard().a(IObjective.d)); collection.addAll(this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.d));
} else { } else {
this.a(StatisticList.z, 1); this.a(StatisticList.z, 1);
} }
@ -449,9 +449,9 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
while (iterator.hasNext()) { while (iterator.hasNext()) {
ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next();
ScoreboardScore scoreboardscore = this.getScoreboard().a(this.getLocalizedName(), scoreboardobjective); ScoreboardScore scoreboardscore = this.getScoreboard().getPlayerScoreForObjective(this.getLocalizedName(), scoreboardobjective);
scoreboardscore.a(); scoreboardscore.incrementScore();
} }
} }
@ -690,7 +690,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
ScoreboardTeam scoreboardteam = this.getScoreboardTeam(); ScoreboardTeam scoreboardteam = this.getScoreboardTeam();
ScoreboardTeam scoreboardteam1 = entityhuman.getScoreboardTeam(); ScoreboardTeam scoreboardteam1 = entityhuman.getScoreboardTeam();
return scoreboardteam != scoreboardteam1 ? true : (scoreboardteam != null ? scoreboardteam.g() : true); return scoreboardteam != scoreboardteam1 ? true : (scoreboardteam != null ? scoreboardteam.allowFriendlyFire() : true);
} }
protected void a(EntityLiving entityliving, boolean flag) { protected void a(EntityLiving entityliving, boolean flag) {
@ -1490,10 +1490,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
} }
public ScoreboardTeam getScoreboardTeam() { public ScoreboardTeam getScoreboardTeam() {
return this.getScoreboard().i(this.name); return this.getScoreboard().getPlayerTeam(this.name);
} }
public String getScoreboardDisplayName() { public String getScoreboardDisplayName() {
return ScoreboardTeam.a(this.getScoreboardTeam(), this.name); return ScoreboardTeam.getPlayerDisplayName(this.getScoreboardTeam(), this.name);
} }
} }

Datei anzeigen

@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.concurrent.Callable;
// CraftBukkit start // CraftBukkit start
import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.event.CraftEventFactory;
@ -1686,13 +1687,26 @@ public abstract class EntityLiving extends Entity {
Integer integer = (Integer) iterator.next(); Integer integer = (Integer) iterator.next();
MobEffect mobeffect = (MobEffect) this.effects.get(integer); MobEffect mobeffect = (MobEffect) this.effects.get(integer);
if (!mobeffect.tick(this)) { try {
if (!this.world.isStatic) { if (!mobeffect.tick(this)) {
iterator.remove(); if (!this.world.isStatic) {
this.c(mobeffect); iterator.remove();
this.c(mobeffect);
}
} else if (mobeffect.getDuration() % 600 == 0) {
this.b(mobeffect);
} }
} else if (mobeffect.getDuration() % 600 == 0) { } catch (Throwable throwable) {
this.b(mobeffect); CrashReport crashreport = CrashReport.a(throwable, "Ticking mob effect instance");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Mob effect being ticked");
crashreportsystemdetails.a("Effect Name", (Callable) (new CrashReportEffectName(this, mobeffect)));
crashreportsystemdetails.a("Effect ID", (Callable) (new CrashReportEffectID(this, mobeffect)));
crashreportsystemdetails.a("Effect Duration", (Callable) (new CrashReportEffectDuration(this, mobeffect)));
crashreportsystemdetails.a("Effect Amplifier", (Callable) (new CrashReportEffectAmplifier(this, mobeffect)));
crashreportsystemdetails.a("Effect is Splash", (Callable) (new CrashReportEffectSplash(this, mobeffect)));
crashreportsystemdetails.a("Effect is Ambient", (Callable) (new CrashReportEffectAmbient(this, mobeffect)));
throw new ReportedException(crashreport);
} }
} }

Datei anzeigen

@ -201,13 +201,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void setHealth(int i) { public void setHealth(int i) {
super.setHealth(i); super.setHealth(i);
Collection collection = this.getScoreboard().a(IObjective.f); Collection collection = this.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.f);
Iterator iterator = collection.iterator(); Iterator iterator = collection.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next();
this.getScoreboard().a(this.getLocalizedName(), scoreboardobjective).a(Arrays.asList(new EntityHuman[] { this})); this.getScoreboard().getPlayerScoreForObjective(this.getLocalizedName(), scoreboardobjective).updateForList(Arrays.asList(new EntityHuman[] { this}));
} }
} }
@ -304,14 +304,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.closeInventory(); this.closeInventory();
// CraftBukkit end // CraftBukkit end
Collection collection = this.world.getScoreboard().a(IObjective.c); Collection collection = this.world.getScoreboard().getObjectivesForCriteria(IScoreboardCriteria.c);
Iterator iterator = collection.iterator(); Iterator iterator = collection.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next();
ScoreboardScore scoreboardscore = this.getScoreboard().a(this.getLocalizedName(), scoreboardobjective); ScoreboardScore scoreboardscore = this.getScoreboard().getPlayerScoreForObjective(this.getLocalizedName(), scoreboardobjective);
scoreboardscore.a(); scoreboardscore.incrementScore();
} }
EntityLiving entityliving = this.bN(); EntityLiving entityliving = this.bN();

Datei anzeigen

@ -133,7 +133,7 @@ public class EntitySquid extends EntityWaterAnimal {
++this.bC; ++this.bC;
if (this.bC > 100) { if (this.bC > 100) {
this.bO = this.bP = this.bQ = 0.0F; this.bO = this.bP = this.bQ = 0.0F;
} else if (this.random.nextInt(50) == 0 || !this.ae || this.bO == 0.0F && this.bP == 0.0F && this.bQ == 0.0F) { } else if (this.random.nextInt(50) == 0 || !this.inWater || this.bO == 0.0F && this.bP == 0.0F && this.bQ == 0.0F) {
float f = this.random.nextFloat() * 3.1415927F * 2.0F; float f = this.random.nextFloat() * 3.1415927F * 2.0F;
this.bO = MathHelper.cos(f) * 0.2F; this.bO = MathHelper.cos(f) * 0.2F;

Datei anzeigen

@ -18,8 +18,7 @@ public class EntityTracker {
this.d = worldserver.getMinecraftServer().getPlayerList().a(); this.d = worldserver.getMinecraftServer().getPlayerList().a();
} }
// CraftBukkit - synchronized public void track(Entity entity) {
public synchronized void track(Entity entity) {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
this.addEntity(entity, 512, 2); this.addEntity(entity, 512, 2);
EntityPlayer entityplayer = (EntityPlayer) entity; EntityPlayer entityplayer = (EntityPlayer) entity;
@ -89,8 +88,7 @@ public class EntityTracker {
this.addEntity(entity, i, j, false); this.addEntity(entity, i, j, false);
} }
// CraftBukkit - synchronized public void addEntity(Entity entity, int i, int j, boolean flag) {
public synchronized void addEntity(Entity entity, int i, int j, boolean flag) {
if (i > this.d) { if (i > this.d) {
i = this.d; i = this.d;
} }
@ -98,13 +96,13 @@ public class EntityTracker {
try { try {
if (this.trackedEntities.b(entity.id)) { if (this.trackedEntities.b(entity.id)) {
throw new IllegalStateException("Entity is already tracked!"); throw new IllegalStateException("Entity is already tracked!");
} else {
EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag);
this.b.add(entitytrackerentry);
this.trackedEntities.a(entity.id, entitytrackerentry);
entitytrackerentry.scanPlayers(this.world.players);
} }
EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag);
this.b.add(entitytrackerentry);
this.trackedEntities.a(entity.id, entitytrackerentry);
entitytrackerentry.scanPlayers(this.world.players);
} catch (Throwable throwable) { } catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Adding entity to track"); CrashReport crashreport = CrashReport.a(throwable, "Adding entity to track");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity To Track"); CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity To Track");
@ -112,12 +110,20 @@ public class EntityTracker {
crashreportsystemdetails.a("Tracking range", (i + " blocks")); crashreportsystemdetails.a("Tracking range", (i + " blocks"));
crashreportsystemdetails.a("Update interval", (Callable) (new CrashReportEntityTrackerUpdateInterval(this, j))); crashreportsystemdetails.a("Update interval", (Callable) (new CrashReportEntityTrackerUpdateInterval(this, j)));
entity.a(crashreportsystemdetails); entity.a(crashreportsystemdetails);
throw new ReportedException(crashreport); CrashReportSystemDetails crashreportsystemdetails1 = crashreport.a("Entity That Is Already Tracked");
((EntityTrackerEntry) this.trackedEntities.get(entity.id)).tracker.a(crashreportsystemdetails1);
try {
throw new ReportedException(crashreport);
} catch (ReportedException reportedexception) {
System.err.println("\"Silently\" catching entity tracking error.");
reportedexception.printStackTrace();
}
} }
} }
// CraftBukkit - synchronized public void untrackEntity(Entity entity) {
public synchronized void untrackEntity(Entity entity) {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity; EntityPlayer entityplayer = (EntityPlayer) entity;
Iterator iterator = this.b.iterator(); Iterator iterator = this.b.iterator();
@ -137,8 +143,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit - synchronized public void updatePlayers() {
public synchronized void updatePlayers() {
ArrayList arraylist = new ArrayList(); ArrayList arraylist = new ArrayList();
Iterator iterator = this.b.iterator(); Iterator iterator = this.b.iterator();
@ -165,8 +170,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit - synchronized public void a(Entity entity, Packet packet) {
public synchronized void a(Entity entity, Packet packet) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.trackedEntities.get(entity.id); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.trackedEntities.get(entity.id);
if (entitytrackerentry != null) { if (entitytrackerentry != null) {
@ -174,8 +178,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit - synchronized public void sendPacketToEntity(Entity entity, Packet packet) {
public synchronized void sendPacketToEntity(Entity entity, Packet packet) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.trackedEntities.get(entity.id); EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) this.trackedEntities.get(entity.id);
if (entitytrackerentry != null) { if (entitytrackerentry != null) {
@ -183,8 +186,7 @@ public class EntityTracker {
} }
} }
// CraftBukkit - synchronized public void untrackPlayer(EntityPlayer entityplayer) {
public synchronized void untrackPlayer(EntityPlayer entityplayer) {
Iterator iterator = this.b.iterator(); Iterator iterator = this.b.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {

Datei anzeigen

@ -132,22 +132,24 @@ public class EntityTrackerEntry {
} }
// CraftBukkit end // CraftBukkit end
if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128 && this.u <= 400 && !this.w) { if (this.m > 0) {
if (flag && flag1) { if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128 && this.u <= 400 && !this.w) {
object = new Packet33RelEntityMoveLook(this.tracker.id, (byte) j1, (byte) k1, (byte) l1, (byte) l, (byte) i1); if (flag && flag1) {
} else if (flag) { object = new Packet33RelEntityMoveLook(this.tracker.id, (byte) j1, (byte) k1, (byte) l1, (byte) l, (byte) i1);
object = new Packet31RelEntityMove(this.tracker.id, (byte) j1, (byte) k1, (byte) l1); } else if (flag) {
} else if (flag1) { object = new Packet31RelEntityMove(this.tracker.id, (byte) j1, (byte) k1, (byte) l1);
object = new Packet32EntityLook(this.tracker.id, (byte) l, (byte) i1); } else if (flag1) {
object = new Packet32EntityLook(this.tracker.id, (byte) l, (byte) i1);
}
} else {
this.u = 0;
// CraftBukkit start - refresh list of who can see a player before sending teleport packet
if (this.tracker instanceof EntityPlayer) {
this.scanPlayers(new java.util.ArrayList(this.trackedPlayers));
}
// CraftBukkit end
object = new Packet34EntityTeleport(this.tracker.id, i, j, k, (byte) l, (byte) i1);
} }
} else {
this.u = 0;
// CraftBukkit start - refresh list of who can see a player before sending teleport packet
if (this.tracker instanceof EntityPlayer) {
this.scanPlayers(new java.util.ArrayList(this.trackedPlayers));
}
// CraftBukkit end
object = new Packet34EntityTeleport(this.tracker.id, i, j, k, (byte) l, (byte) i1);
} }
if (this.isMoving) { if (this.isMoving) {

Datei anzeigen

@ -746,7 +746,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
} }
public String getVersion() { public String getVersion() {
return "1.5"; return "1.5.1";
} }
public int y() { public int y() {

Datei anzeigen

@ -120,10 +120,10 @@ public abstract class Packet {
// CraftBukkit start // CraftBukkit start
catch (java.net.SocketTimeoutException exception) { catch (java.net.SocketTimeoutException exception) {
iconsolelogmanager.severe("Read timed out"); iconsolelogmanager.info("Read timed out");
return null; return null;
} catch (java.net.SocketException exception) { } catch (java.net.SocketException exception) {
iconsolelogmanager.severe("Connection reset"); iconsolelogmanager.info("Connection reset");
return null; return null;
} }
// CraftBukkit end // CraftBukkit end

Datei anzeigen

@ -129,7 +129,7 @@ public abstract class PlayerList {
protected void a(ScoreboardServer scoreboardserver, EntityPlayer entityplayer) { protected void a(ScoreboardServer scoreboardserver, EntityPlayer entityplayer) {
HashSet hashset = new HashSet(); HashSet hashset = new HashSet();
Iterator iterator = scoreboardserver.g().iterator(); Iterator iterator = scoreboardserver.getTeams().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
ScoreboardTeam scoreboardteam = (ScoreboardTeam) iterator.next(); ScoreboardTeam scoreboardteam = (ScoreboardTeam) iterator.next();
@ -138,10 +138,10 @@ public abstract class PlayerList {
} }
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
ScoreboardObjective scoreboardobjective = scoreboardserver.a(i); ScoreboardObjective scoreboardobjective = scoreboardserver.getObjectiveForSlot(i);
if (scoreboardobjective != null && !hashset.contains(scoreboardobjective)) { if (scoreboardobjective != null && !hashset.contains(scoreboardobjective)) {
List list = scoreboardserver.d(scoreboardobjective); List list = scoreboardserver.getScoreboardScorePacketsForObjective(scoreboardobjective);
Iterator iterator1 = list.iterator(); Iterator iterator1 = list.iterator();
while (iterator1.hasNext()) { while (iterator1.hasNext()) {
@ -845,7 +845,7 @@ public abstract class PlayerList {
} }
ScoreboardTeam scoreboardteam = entityplayer.getScoreboardTeam(); ScoreboardTeam scoreboardteam = entityplayer.getScoreboardTeam();
String s2 = scoreboardteam == null ? "" : scoreboardteam.b(); String s2 = scoreboardteam == null ? "" : scoreboardteam.getName();
if (flag1 == s1.equalsIgnoreCase(s2)) { if (flag1 == s1.equalsIgnoreCase(s2)) {
continue; continue;
@ -904,15 +904,15 @@ public abstract class PlayerList {
} }
Scoreboard scoreboard = entityhuman.getScoreboard(); Scoreboard scoreboard = entityhuman.getScoreboard();
ScoreboardObjective scoreboardobjective = scoreboard.b(s); ScoreboardObjective scoreboardobjective = scoreboard.getObjective(s);
if (scoreboardobjective == null) { if (scoreboardobjective == null) {
return false; return false;
} }
ScoreboardScore scoreboardscore = entityhuman.getScoreboard().a(entityhuman.getLocalizedName(), scoreboardobjective); ScoreboardScore scoreboardscore = entityhuman.getScoreboard().getPlayerScoreForObjective(entityhuman.getLocalizedName(), scoreboardobjective);
i = scoreboardscore.c(); i = scoreboardscore.getScore();
if (i < ((Integer) entry.getValue()).intValue() && flag) { if (i < ((Integer) entry.getValue()).intValue() && flag) {
return false; return false;
} }

Datei anzeigen

@ -10,11 +10,13 @@ import org.bukkit.event.inventory.BrewEvent;
public class TileEntityBrewingStand extends TileEntity implements IWorldInventory { public class TileEntityBrewingStand extends TileEntity implements IWorldInventory {
public ItemStack[] items = new ItemStack[4]; // CraftBukkit private -> public private static final int[] a = new int[] { 3};
public int brewTime; // CraftBukkit private -> public private static final int[] b = new int[] { 0, 1, 2};
private int c; public ItemStack[] items = new ItemStack[4]; // CraftBukkit - private -> public
private int d; public int brewTime; // CraftBukkit - private -> public
private String e; private int e;
private int f;
private String g;
public TileEntityBrewingStand() {} public TileEntityBrewingStand() {}
@ -44,15 +46,15 @@ public class TileEntityBrewingStand extends TileEntity implements IWorldInventor
// CraftBukkit end // CraftBukkit end
public String getName() { public String getName() {
return this.c() ? this.e : "container.brewing"; return this.c() ? this.g : "container.brewing";
} }
public boolean c() { public boolean c() {
return this.e != null && this.e.length() > 0; return this.g != null && this.g.length() > 0;
} }
public void a(String s) { public void a(String s) {
this.e = s; this.g = s;
} }
public int getSize() { public int getSize() {
@ -68,19 +70,19 @@ public class TileEntityBrewingStand extends TileEntity implements IWorldInventor
} else if (!this.l()) { } else if (!this.l()) {
this.brewTime = 0; this.brewTime = 0;
this.update(); this.update();
} else if (this.d != this.items[3].id) { } else if (this.f != this.items[3].id) {
this.brewTime = 0; this.brewTime = 0;
this.update(); this.update();
} }
} else if (this.l()) { } else if (this.l()) {
this.brewTime = 400; this.brewTime = 400;
this.d = this.items[3].id; this.f = this.items[3].id;
} }
int i = this.j(); int i = this.j();
if (i != this.c) { if (i != this.e) {
this.c = i; this.e = i;
this.world.setData(this.x, this.y, this.z, i, 2); this.world.setData(this.x, this.y, this.z, i, 2);
} }
@ -190,7 +192,7 @@ public class TileEntityBrewingStand extends TileEntity implements IWorldInventor
this.brewTime = nbttagcompound.getShort("BrewTime"); this.brewTime = nbttagcompound.getShort("BrewTime");
if (nbttagcompound.hasKey("CustomName")) { if (nbttagcompound.hasKey("CustomName")) {
this.e = nbttagcompound.getString("CustomName"); this.g = nbttagcompound.getString("CustomName");
} }
} }
@ -211,7 +213,7 @@ public class TileEntityBrewingStand extends TileEntity implements IWorldInventor
nbttagcompound.set("Items", nbttaglist); nbttagcompound.set("Items", nbttaglist);
if (this.c()) { if (this.c()) {
nbttagcompound.setString("CustomName", this.e); nbttagcompound.setString("CustomName", this.g);
} }
} }
@ -275,11 +277,15 @@ public class TileEntityBrewingStand extends TileEntity implements IWorldInventor
return i; return i;
} }
public int c(int i) { public int[] getSlotsForFace(int i) {
return i == 1 ? 3 : 0; return i == 1 ? a : b;
} }
public int d(int i) { public boolean canPlaceItemThroughFace(int i, ItemStack itemstack, int j) {
return i == 1 ? 1 : 3; return this.b(i, itemstack);
}
public boolean canTakeItemThroughFace(int i, ItemStack itemstack, int j) {
return true;
} }
} }

Datei anzeigen

@ -12,11 +12,14 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
public class TileEntityFurnace extends TileEntity implements IWorldInventory { public class TileEntityFurnace extends TileEntity implements IWorldInventory {
private static final int[] d = new int[] { 0};
private static final int[] e = new int[] { 2, 1};
private static final int[] f = new int[] { 1};
private ItemStack[] items = new ItemStack[3]; private ItemStack[] items = new ItemStack[3];
public int burnTime = 0; public int burnTime = 0;
public int ticksForCurrentFuel = 0; public int ticksForCurrentFuel = 0;
public int cookTime = 0; public int cookTime = 0;
private String e; private String h;
// CraftBukkit start // CraftBukkit start
private int lastTick = (int) (System.currentTimeMillis() / 50); private int lastTick = (int) (System.currentTimeMillis() / 50);
@ -94,15 +97,15 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
} }
public String getName() { public String getName() {
return this.c() ? this.e : "container.furnace"; return this.c() ? this.h : "container.furnace";
} }
public boolean c() { public boolean c() {
return this.e != null && this.e.length() > 0; return this.h != null && this.h.length() > 0;
} }
public void a(String s) { public void a(String s) {
this.e = s; this.h = s;
} }
public void a(NBTTagCompound nbttagcompound) { public void a(NBTTagCompound nbttagcompound) {
@ -124,7 +127,7 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
this.cookTime = nbttagcompound.getShort("CookTime"); this.cookTime = nbttagcompound.getShort("CookTime");
this.ticksForCurrentFuel = fuelTime(this.items[1]); this.ticksForCurrentFuel = fuelTime(this.items[1]);
if (nbttagcompound.hasKey("CustomName")) { if (nbttagcompound.hasKey("CustomName")) {
this.e = nbttagcompound.getString("CustomName"); this.h = nbttagcompound.getString("CustomName");
} }
} }
@ -146,7 +149,7 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
nbttagcompound.set("Items", nbttaglist); nbttagcompound.set("Items", nbttaglist);
if (this.c()) { if (this.c()) {
nbttagcompound.setString("CustomName", this.e); nbttagcompound.setString("CustomName", this.h);
} }
} }
@ -319,11 +322,15 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
return i == 2 ? false : (i == 1 ? isFuel(itemstack) : true); return i == 2 ? false : (i == 1 ? isFuel(itemstack) : true);
} }
public int c(int i) { public int[] getSlotsForFace(int i) {
return i == 0 ? 2 : (i == 1 ? 0 : 1); return i == 0 ? e : (i == 1 ? d : f);
} }
public int d(int i) { public boolean canPlaceItemThroughFace(int i, ItemStack itemstack, int j) {
return 1; return this.b(i, itemstack);
}
public boolean canTakeItemThroughFace(int i, ItemStack itemstack, int j) {
return j != 0 || i != 1 || itemstack.id == Item.BUCKET.id;
} }
} }

Datei anzeigen

@ -39,7 +39,6 @@ public class TileEntityHopper extends TileEntity implements IHopper {
} }
// CraftBukkit end // CraftBukkit end
public TileEntityHopper() {} public TileEntityHopper() {}
public void a(NBTTagCompound nbttagcompound) { public void a(NBTTagCompound nbttagcompound) {
@ -176,7 +175,7 @@ public class TileEntityHopper extends TileEntity implements IHopper {
public boolean j() { public boolean j() {
if (this.world != null && !this.world.isStatic) { if (this.world != null && !this.world.isStatic) {
if (!this.l() && BlockHopper.d(this.p())) { if (!this.l() && BlockHopper.d(this.p())) {
boolean flag = this.u() | a((IHopper) this); boolean flag = this.u() | suckInItems(this);
if (flag) { if (flag) {
this.c(8); this.c(8);
@ -192,71 +191,83 @@ public class TileEntityHopper extends TileEntity implements IHopper {
} }
private boolean u() { private boolean u() {
int i = a(this, -1); IInventory iinventory = this.v();
boolean flag = false;
if (i > -1) { if (iinventory == null) {
IInventory iinventory = this.v(); return false;
} else {
for (int i = 0; i < this.getSize(); ++i) {
if (this.getItem(i) != null) {
ItemStack itemstack = this.getItem(i).cloneItemStack();
ItemStack itemstack1 = addItem(iinventory, this.splitStack(i, 1), Facing.OPPOSITE_FACING[BlockHopper.c(this.p())]);
if (iinventory != null) { if (itemstack1 == null || itemstack1.count == 0) {
ItemStack itemstack = this.getItem(i).cloneItemStack(); iinventory.update();
ItemStack itemstack1 = a(iinventory, this.splitStack(i, 1), Facing.OPPOSITE_FACING[BlockHopper.c(this.p())]); return true;
}
if (itemstack1 != null && itemstack1.count != 0) {
this.setItem(i, itemstack); this.setItem(i, itemstack);
} else {
flag |= true;
iinventory.update();
} }
} }
}
return flag; return false;
}
} }
public static boolean a(IHopper ihopper) { public static boolean suckInItems(IHopper ihopper) {
boolean flag = false; IInventory iinventory = getSourceInventory(ihopper);
IInventory iinventory = b(ihopper);
if (iinventory != null) { if (iinventory != null) {
byte b0 = 0; byte b0 = 0;
int i = 0;
int j = iinventory.getSize();
if (iinventory instanceof IWorldInventory && b0 > -1) { if (iinventory instanceof IWorldInventory && b0 > -1) {
IWorldInventory iworldinventory = (IWorldInventory) iinventory; IWorldInventory iworldinventory = (IWorldInventory) iinventory;
int[] aint = iworldinventory.getSlotsForFace(b0);
i = iworldinventory.c(b0); for (int i = 0; i < aint.length; ++i) {
j = Math.min(j, i + iworldinventory.d(b0)); if (tryTakeInItemFromSlot(ihopper, iinventory, aint[i], b0)) {
} return true;
}
}
} else {
int j = iinventory.getSize();
for (int k = i; k < j && !flag; ++k) { for (int k = 0; k < j; ++k) {
ItemStack itemstack = iinventory.getItem(k); if (tryTakeInItemFromSlot(ihopper, iinventory, k, b0)) {
return true;
if (itemstack != null) {
ItemStack itemstack1 = itemstack.cloneItemStack();
ItemStack itemstack2 = a(ihopper, iinventory.splitStack(k, 1), -1);
if (itemstack2 != null && itemstack2.count != 0) {
iinventory.setItem(k, itemstack1);
} else {
flag |= true;
iinventory.update();
} }
} }
} }
} else { } else {
EntityItem entityitem = a(ihopper.getWorld(), ihopper.aA(), ihopper.aB() + 1.0D, ihopper.aC()); EntityItem entityitem = getEntityItemAt(ihopper.getWorld(), ihopper.aA(), ihopper.aB() + 1.0D, ihopper.aC());
if (entityitem != null) { if (entityitem != null) {
flag |= a((IInventory) ihopper, entityitem); return addEntityItem(ihopper, entityitem);
} }
} }
return flag; return false;
} }
public static boolean a(IInventory iinventory, EntityItem entityitem) { private static boolean tryTakeInItemFromSlot(IHopper ihopper, IInventory iinventory, int i, int j) {
ItemStack itemstack = iinventory.getItem(i);
if (itemstack != null && canTakeItemFromInventory(iinventory, itemstack, i, j)) {
ItemStack itemstack1 = itemstack.cloneItemStack();
ItemStack itemstack2 = addItem(ihopper, iinventory.splitStack(i, 1), -1);
if (itemstack2 == null || itemstack2.count == 0) {
iinventory.update();
return true;
}
iinventory.setItem(i, itemstack1);
}
return false;
}
public static boolean addEntityItem(IInventory iinventory, EntityItem entityitem) {
boolean flag = false; boolean flag = false;
if (entityitem == null) { if (entityitem == null) {
@ -271,7 +282,7 @@ public class TileEntityHopper extends TileEntity implements IHopper {
// CraftBukkit end // CraftBukkit end
ItemStack itemstack = entityitem.getItemStack().cloneItemStack(); ItemStack itemstack = entityitem.getItemStack().cloneItemStack();
ItemStack itemstack1 = a(iinventory, itemstack, -1); ItemStack itemstack1 = addItem(iinventory, itemstack, -1);
if (itemstack1 != null && itemstack1.count != 0) { if (itemstack1 != null && itemstack1.count != 0) {
entityitem.setItemStack(itemstack1); entityitem.setItemStack(itemstack1);
@ -284,63 +295,19 @@ public class TileEntityHopper extends TileEntity implements IHopper {
} }
} }
public static int a(IInventory iinventory, int i) { public static ItemStack addItem(IInventory iinventory, ItemStack itemstack, int i) {
int j = 0;
int k = iinventory.getSize();
if (iinventory instanceof IWorldInventory && i > -1) { if (iinventory instanceof IWorldInventory && i > -1) {
IWorldInventory iworldinventory = (IWorldInventory) iinventory; IWorldInventory iworldinventory = (IWorldInventory) iinventory;
int[] aint = iworldinventory.getSlotsForFace(i);
j = iworldinventory.c(i); for (int j = 0; j < aint.length && itemstack != null && itemstack.count > 0; ++j) {
k = Math.min(k, j + iworldinventory.d(i)); itemstack = tryMoveInItem(iinventory, itemstack, aint[j], i);
}
for (int l = j; l < k; ++l) {
if (iinventory.getItem(l) != null) {
return l;
} }
} } else {
int k = iinventory.getSize();
return -1; for (int l = 0; l < k && itemstack != null && itemstack.count > 0; ++l) {
} itemstack = tryMoveInItem(iinventory, itemstack, l, i);
public static ItemStack a(IInventory iinventory, ItemStack itemstack, int i) {
int j = 0;
int k = iinventory.getSize();
if (iinventory instanceof IWorldInventory && i > -1) {
IWorldInventory iworldinventory = (IWorldInventory) iinventory;
j = iworldinventory.c(i);
k = Math.min(k, j + iworldinventory.d(i));
}
for (int l = j; l < k && itemstack != null && itemstack.count > 0; ++l) {
ItemStack itemstack1 = iinventory.getItem(l);
if (iinventory.b(l, itemstack)) {
boolean flag = false;
if (itemstack1 == null) {
iinventory.setItem(l, itemstack);
itemstack = null;
flag = true;
} else if (a(itemstack1, itemstack)) {
int i1 = itemstack.getMaxStackSize() - itemstack1.count;
int j1 = Math.min(itemstack.count, i1);
itemstack.count -= j1;
itemstack1.count += j1;
flag = j1 > 0;
}
if (flag) {
if (iinventory instanceof TileEntityHopper) {
((TileEntityHopper) iinventory).c(8);
}
iinventory.update();
}
} }
} }
@ -351,40 +318,76 @@ public class TileEntityHopper extends TileEntity implements IHopper {
return itemstack; return itemstack;
} }
private static boolean canPlaceItemInInventory(IInventory iinventory, ItemStack itemstack, int i, int j) {
return !iinventory.b(i, itemstack) ? false : !(iinventory instanceof IWorldInventory) || ((IWorldInventory) iinventory).canPlaceItemThroughFace(i, itemstack, j);
}
private static boolean canTakeItemFromInventory(IInventory iinventory, ItemStack itemstack, int i, int j) {
return !(iinventory instanceof IWorldInventory) || ((IWorldInventory) iinventory).canTakeItemThroughFace(i, itemstack, j);
}
private static ItemStack tryMoveInItem(IInventory iinventory, ItemStack itemstack, int i, int j) {
ItemStack itemstack1 = iinventory.getItem(i);
if (canPlaceItemInInventory(iinventory, itemstack, i, j)) {
boolean flag = false;
if (itemstack1 == null) {
iinventory.setItem(i, itemstack);
itemstack = null;
flag = true;
} else if (canMergeItems(itemstack1, itemstack)) {
int k = itemstack.getMaxStackSize() - itemstack1.count;
int l = Math.min(itemstack.count, k);
itemstack.count -= l;
itemstack1.count += l;
flag = l > 0;
}
if (flag) {
if (iinventory instanceof TileEntityHopper) {
((TileEntityHopper) iinventory).c(8);
}
iinventory.update();
}
}
return itemstack;
}
private IInventory v() { private IInventory v() {
int i = BlockHopper.c(this.p()); int i = BlockHopper.c(this.p());
return b(this.getWorld(), (double) (this.x + Facing.b[i]), (double) (this.y + Facing.c[i]), (double) (this.z + Facing.d[i])); return getInventoryAt(this.getWorld(), (double) (this.x + Facing.b[i]), (double) (this.y + Facing.c[i]), (double) (this.z + Facing.d[i]));
} }
public static IInventory b(IHopper ihopper) { public static IInventory getSourceInventory(IHopper ihopper) {
return b(ihopper.getWorld(), ihopper.aA(), ihopper.aB() + 1.0D, ihopper.aC()); return getInventoryAt(ihopper.getWorld(), ihopper.aA(), ihopper.aB() + 1.0D, ihopper.aC());
} }
public static EntityItem a(World world, double d0, double d1, double d2) { public static EntityItem getEntityItemAt(World world, double d0, double d1, double d2) {
List list = world.a(EntityItem.class, AxisAlignedBB.a().a(d0, d1, d2, d0 + 1.0D, d1 + 1.0D, d2 + 1.0D), IEntitySelector.a); List list = world.a(EntityItem.class, AxisAlignedBB.a().a(d0, d1, d2, d0 + 1.0D, d1 + 1.0D, d2 + 1.0D), IEntitySelector.a);
return list.size() > 0 ? (EntityItem) list.get(0) : null; return list.size() > 0 ? (EntityItem) list.get(0) : null;
} }
public static IInventory b(World world, double d0, double d1, double d2) { public static IInventory getInventoryAt(World world, double d0, double d1, double d2) {
IInventory iinventory = null; IInventory iinventory = null;
int i = MathHelper.floor(d0); int i = MathHelper.floor(d0);
int j = MathHelper.floor(d1); int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2); int k = MathHelper.floor(d2);
TileEntity tileentity = world.getTileEntity(i, j, k);
if (iinventory == null) { if (tileentity != null && tileentity instanceof IInventory) {
TileEntity tileentity = world.getTileEntity(i, j, k); iinventory = (IInventory) tileentity;
if (iinventory instanceof TileEntityChest) {
int l = world.getTypeId(i, j, k);
Block block = Block.byId[l];
if (tileentity != null && tileentity instanceof IInventory) { if (block instanceof BlockChest) {
iinventory = (IInventory) tileentity; iinventory = ((BlockChest) block).g_(world, i, j, k);
if (iinventory instanceof TileEntityChest) {
int l = world.getTypeId(i, j, k);
Block block = Block.byId[l];
if (block instanceof BlockChest) {
iinventory = ((BlockChest) block).g_(world, i, j, k);
}
} }
} }
} }
@ -400,7 +403,7 @@ public class TileEntityHopper extends TileEntity implements IHopper {
return iinventory; return iinventory;
} }
private static boolean a(ItemStack itemstack, ItemStack itemstack1) { private static boolean canMergeItems(ItemStack itemstack, ItemStack itemstack1) {
return itemstack.id != itemstack1.id ? false : (itemstack.getData() != itemstack1.getData() ? false : (itemstack.count > itemstack.getMaxStackSize() ? false : ItemStack.equals(itemstack, itemstack1))); return itemstack.id != itemstack1.id ? false : (itemstack.getData() != itemstack1.getData() ? false : (itemstack.count > itemstack.getMaxStackSize() ? false : ItemStack.equals(itemstack, itemstack1)));
} }

Datei anzeigen

@ -0,0 +1,40 @@
package net.minecraft.server;
public class TileEntityRecordPlayer extends TileEntity {
private ItemStack record;
public TileEntityRecordPlayer() {}
public void a(NBTTagCompound nbttagcompound) {
super.a(nbttagcompound);
if (nbttagcompound.hasKey("RecordItem")) {
this.setRecord(ItemStack.createStack(nbttagcompound.getCompound("RecordItem")));
} else if (nbttagcompound.getInt("Record") > 0) {
this.setRecord(new ItemStack(nbttagcompound.getInt("Record"), 1, 0));
}
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
if (this.getRecord() != null) {
nbttagcompound.setCompound("RecordItem", this.getRecord().save(new NBTTagCompound()));
nbttagcompound.setInt("Record", this.getRecord().id);
}
}
public ItemStack getRecord() {
return this.record;
}
public void setRecord(ItemStack itemstack) {
// CraftBukkit start - There can only be one
if (itemstack != null) {
itemstack.count = 1;
}
// CraftBukkit end
this.record = itemstack;
this.update();
}
}

Datei anzeigen

@ -1814,7 +1814,11 @@ public abstract class World implements IBlockAccess {
public boolean w(int i, int j, int k) { public boolean w(int i, int j, int k) {
Block block = Block.byId[this.getTypeId(i, j, k)]; Block block = Block.byId[this.getTypeId(i, j, k)];
return block == null ? false : (block.material.k() && block.b() ? true : (block instanceof BlockStairs ? (this.getData(i, j, k) & 4) == 4 : (block instanceof BlockStepAbstract ? (this.getData(i, j, k) & 8) == 8 : (block instanceof BlockHopper ? true : (block instanceof BlockSnow ? (this.getData(i, j, k) & 7) == 7 : false))))); return this.a(block, this.getData(i, j, k));
}
public boolean a(Block block, int i) {
return block == null ? false : (block.material.k() && block.b() ? true : (block instanceof BlockStairs ? (i & 4) == 4 : (block instanceof BlockStepAbstract ? (i & 8) == 8 : (block instanceof BlockHopper ? true : (block instanceof BlockSnow ? (i & 7) == 7 : false)))));
} }
public boolean c(int i, int j, int k, boolean flag) { public boolean c(int i, int j, int k, boolean flag) {
@ -2403,7 +2407,7 @@ public abstract class World implements IBlockAccess {
int l1 = i + l; int l1 = i + l;
int i2 = j + l; int i2 = j + l;
int j2 = k + l; int j2 = k + l;
ChunkCache chunkcache = new ChunkCache(this, i1, j1, k1, l1, i2, j2); ChunkCache chunkcache = new ChunkCache(this, i1, j1, k1, l1, i2, j2, 0);
PathEntity pathentity = (new Pathfinder(chunkcache, flag, flag1, flag2, flag3)).a(entity, entity1, f); PathEntity pathentity = (new Pathfinder(chunkcache, flag, flag1, flag2, flag3)).a(entity, entity1, f);
this.methodProfiler.b(); this.methodProfiler.b();
@ -2422,7 +2426,7 @@ public abstract class World implements IBlockAccess {
int k2 = l + k1; int k2 = l + k1;
int l2 = i1 + k1; int l2 = i1 + k1;
int i3 = j1 + k1; int i3 = j1 + k1;
ChunkCache chunkcache = new ChunkCache(this, l1, i2, j2, k2, l2, i3); ChunkCache chunkcache = new ChunkCache(this, l1, i2, j2, k2, l2, i3, 0);
PathEntity pathentity = (new Pathfinder(chunkcache, flag, flag1, flag2, flag3)).a(entity, i, j, k, f); PathEntity pathentity = (new Pathfinder(chunkcache, flag, flag1, flag2, flag3)).a(entity, i, j, k, f);
this.methodProfiler.b(); this.methodProfiler.b();