diff options
author | Dinnerbone <dinnerbone@dinnerbone.com> | 2011-02-21 21:27:01 +0000 |
---|---|---|
committer | Dinnerbone <dinnerbone@dinnerbone.com> | 2011-02-21 21:27:01 +0000 |
commit | 67cf646014fa6336c7df4abefe85a2dec447d699 (patch) | |
tree | 7bbc19980b6a7a642c49d4cc108fcd7e39fd9e33 /src/main/java/net/minecraft/server | |
parent | a59149c2083f6b2ded3d5d23aa7d78f5201a5c0a (diff) | |
parent | 30d1a5d3fd4f5a6d682646f4ee2e790433884c6a (diff) | |
download | craftbukkit-67cf646014fa6336c7df4abefe85a2dec447d699.tar craftbukkit-67cf646014fa6336c7df4abefe85a2dec447d699.tar.gz craftbukkit-67cf646014fa6336c7df4abefe85a2dec447d699.tar.lz craftbukkit-67cf646014fa6336c7df4abefe85a2dec447d699.tar.xz craftbukkit-67cf646014fa6336c7df4abefe85a2dec447d699.zip |
Merge branch 'master' of github.com:Bukkit/CraftBukkit
Diffstat (limited to 'src/main/java/net/minecraft/server')
12 files changed, 87 insertions, 39 deletions
diff --git a/src/main/java/net/minecraft/server/BlockButton.java b/src/main/java/net/minecraft/server/BlockButton.java index 1002c9c9..f20a8818 100644 --- a/src/main/java/net/minecraft/server/BlockButton.java +++ b/src/main/java/net/minecraft/server/BlockButton.java @@ -167,7 +167,7 @@ public class BlockButton extends Block { if (j1 == 0) { return true; } else { - //Allow the lever to change the current + //Allow the button to change the current int old = (j1 != 8) ? 1 : 0; int current = (j1 == 8) ? 1 : 0; BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, old, current); @@ -243,6 +243,15 @@ public class BlockButton extends Block { int l = world.getData(i, j, k); if ((l & 8) != 0) { + // Craftbukkit start + CraftWorld craftWorld = ((WorldServer) world).getWorld(); + CraftServer server = ((WorldServer) world).getServer(); + CraftBlock block = (CraftBlock) craftWorld.getBlockAt(i, j, k); + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, 1, 0); + server.getPluginManager().callEvent(eventRedstone); + if (eventRedstone.getNewCurrent() > 0) return; + // Craftbukkit end + world.c(i, j, k, l & 7); world.h(i, j, k, this.id); int i1 = l & 7; diff --git a/src/main/java/net/minecraft/server/BlockPressurePlate.java b/src/main/java/net/minecraft/server/BlockPressurePlate.java index 90f0a749..7fedf6ce 100644 --- a/src/main/java/net/minecraft/server/BlockPressurePlate.java +++ b/src/main/java/net/minecraft/server/BlockPressurePlate.java @@ -4,7 +4,8 @@ import java.util.List; import java.util.Random; // CraftBukkit start -import org.bukkit.block.BlockFace;import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.block.BlockFace; +import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.block.CraftBlock; import org.bukkit.craftbukkit.entity.CraftLivingEntity; @@ -115,6 +116,15 @@ public class BlockPressurePlate extends Block { flag1 = true; } + // Craftbukkit start + CraftWorld craftWorld = ((WorldServer) world).getWorld(); + CraftServer server = ((WorldServer) world).getServer(); + CraftBlock block = (CraftBlock) craftWorld.getBlockAt(i, j, k); + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, flag ? 1 : 0, flag1 ? 1 : 0); + server.getPluginManager().callEvent(eventRedstone); + flag1 = eventRedstone.getNewCurrent() > 0; + // Craftbukkit end + if (flag1 && !flag) { world.c(i, j, k, 1); world.h(i, j, k, this.id); diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index e37db53f..ef81adf9 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; import java.util.Random; +import org.bukkit.craftbukkit.CraftWorld; + public class Chunk { public static boolean a; @@ -44,7 +46,11 @@ public class Chunk { } // CraftBukkit start - bukkitChunk = new org.bukkit.craftbukkit.CraftChunk( this ); + CraftWorld cw = ((WorldServer) world).getWorld(); + bukkitChunk = (cw == null) ? null:cw.popPreservedChunk( i, j ); + if (bukkitChunk == null) { + bukkitChunk = new org.bukkit.craftbukkit.CraftChunk( this ); + } } public org.bukkit.Chunk bukkitChunk; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java index 53b69ef3..8b2b44bd 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -10,15 +10,16 @@ import java.util.Set; // CraftBukkit start import org.bukkit.Location; +import org.bukkit.Server; import org.bukkit.craftbukkit.CraftChunk; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.Player; import org.bukkit.event.Event.Type; import org.bukkit.event.world.ChunkLoadEvent; +import org.bukkit.event.world.ChunkUnloadEvent; // CraftBukkit end public class ChunkProviderServer implements IChunkProvider { - public LongHashset a = new LongHashset(); // CraftBukkit private Chunk b; private IChunkProvider c; @@ -39,7 +40,7 @@ public class ChunkProviderServer implements IChunkProvider { return this.e.containsKey(i, j); } // CraftBukkit end - + public void c(int i, int j) { int k = i * 16 + 8 - this.g.spawnX; int l = j * 16 + 8 - this.g.spawnZ; @@ -197,16 +198,23 @@ public class ChunkProviderServer implements IChunkProvider { public boolean a() { if (!this.g.C) { // CraftBukkit start + Server server = g.getServer(); while (!this.a.isEmpty()) { long chunkcoordinates = this.a.popFirst(); Chunk chunk = e.get(chunkcoordinates); if (chunk == null) continue; - chunk.e(); - this.b(chunk); - this.a(chunk); - this.a.remove(chunkcoordinates); - this.e.remove(chunkcoordinates); - this.f.remove(chunk); + + ChunkUnloadEvent cue = new ChunkUnloadEvent(Type.CHUNK_UNLOADED, chunk.bukkitChunk); + server.getPluginManager().callEvent(cue); + if (!cue.isCancelled()) { + g.getWorld().preserveChunk( (CraftChunk) chunk.bukkitChunk ); + + chunk.e(); + this.b(chunk); + this.a(chunk); + this.e.remove(chunkcoordinates); + this.f.remove(chunk); + } } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java index c867b32c..49b4c7a2 100644 --- a/src/main/java/net/minecraft/server/EntityCreature.java +++ b/src/main/java/net/minecraft/server/EntityCreature.java @@ -4,6 +4,7 @@ package net.minecraft.server; import org.bukkit.craftbukkit.entity.CraftMonster; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.TrigMath; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -118,7 +119,7 @@ public class EntityCreature extends EntityLiving { double d1 = vec3d.a - this.locX; double d2 = vec3d.c - this.locZ; double d3 = vec3d.b - (double) l1; - float f4 = (float) (Math.atan2(d2, d1) * 180.0D / 3.1415927410125732D) - 90.0F; + float f4 = (float) (TrigMath.atan2(d2, d1) * 180.0D / 3.1415927410125732D) - 90.0F; float f5 = f4 - this.yaw; for (this.by = this.bC; f5 < -180.0F; f5 += 360.0F) { diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java index 2e3e7177..66bae6e1 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -4,6 +4,7 @@ import java.util.List; // CraftBukkit start import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.TrigMath; import org.bukkit.craftbukkit.entity.CraftItemDrop; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -124,7 +125,7 @@ public abstract class EntityHuman extends EntityLiving { this.as = this.at; super.o(); float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ); - float f1 = (float) Math.atan(-this.motY * 0.20000000298023224D) * 15.0F; + float f1 = (float) TrigMath.atan(-this.motY * 0.20000000298023224D) * 15.0F; if (f > 0.1F) { f = 0.1F; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index 366f8f1e..c2c371db 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -10,6 +10,7 @@ import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.inventory.CraftItemStack; +import org.bukkit.craftbukkit.TrigMath; import org.bukkit.event.Event.Type; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -236,7 +237,7 @@ public abstract class EntityLiving extends Entity { if (f > 0.05F) { f3 = 1.0F; f2 = f * 3.0F; - f1 = (float) Math.atan2(d1, d0) * 180.0F / 3.1415927F - 90.0F; + f1 = (float) TrigMath.atan2(d1, d0) * 180.0F / 3.1415927F - 90.0F; } if (this.aY > 0.0F) { diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java index 3eb7bcc9..e5734447 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -29,9 +29,8 @@ public class Explosion { public Entity e; public float f; public Set g = new HashSet(); - // Craftbukkit start - public boolean wasCanceled = false; - // Craftbukkit end + + public boolean wasCanceled = false; // Craftbukkit public Explosion(World world, Entity entity, double d0, double d1, double d2, float f) { this.i = world; @@ -240,7 +239,7 @@ public class Explosion { } if (i1 > 0) { - Block.byId[i1].a(this.i, j, k, l, this.i.getData(j, k, l), 0.3F); + Block.byId[i1].a(this.i, j, k, l, this.i.getData(j, k, l), event.getYield()); // Craftbukkit this.i.e(j, k, l, 0); Block.byId[i1].a_(this.i, j, k, l); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 6f16c45c..f3c4c97d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -185,7 +185,7 @@ public class MinecraftServer implements ICommandListener, Runnable { // Craftbukkit start for (WorldServer world : worlds) { world.a(true, (IProgressUpdate) null); - + Event worldSaved = new WorldEvent( Event.Type.WORLD_SAVED, world.getWorld() ); server.getPluginManager().callEvent( worldSaved ); } @@ -310,14 +310,14 @@ public class MinecraftServer implements ICommandListener, Runnable { } ((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h); - + for (WorldServer world : worlds) { world.f(); while (world.d()) { ; } - + world.c(); } // Craftbukkit end @@ -366,11 +366,11 @@ public class MinecraftServer implements ICommandListener, Runnable { // Craftbukkit start for (WorldServer world : worlds) { world.a(true, (IProgressUpdate) null); - + Event worldSaved = new WorldEvent( Event.Type.WORLD_SAVED, world.getWorld() ); server.getPluginManager().callEvent( worldSaved ); } - + this.f.d(); // Craftbukkit end @@ -398,11 +398,11 @@ public class MinecraftServer implements ICommandListener, Runnable { s2 = s.substring(s.indexOf(" ")).trim(); this.f.e(s2); this.a(s1, "Opping " + s2); - this.f.a(s2, "§eYou are now op!"); + this.f.a(s2, "\u00A7eYou are now op!"); } else if (s.toLowerCase().startsWith("deop ")) { s2 = s.substring(s.indexOf(" ")).trim(); this.f.f(s2); - this.f.a(s2, "§eYou are no longer op!"); + this.f.a(s2, "\u00A7eYou are no longer op!"); this.a(s1, "De-opping " + s2); } else if (s.toLowerCase().startsWith("ban-ip ")) { s2 = s.substring(s.indexOf(" ")).trim(); @@ -507,14 +507,14 @@ public class MinecraftServer implements ICommandListener, Runnable { } else if (s.toLowerCase().startsWith("say ")) { s = s.substring(s.indexOf(" ")).trim(); a.info("[" + s1 + "] " + s); - this.f.a((Packet) (new Packet3Chat("§d[Server] " + s))); + this.f.a((Packet) (new Packet3Chat("\u00A7d[Server] " + s))); } else if (s.toLowerCase().startsWith("tell ")) { astring = s.split(" "); if (astring.length >= 3) { s = s.substring(s.indexOf(" ")).trim(); s = s.substring(s.indexOf(" ")).trim(); a.info("[" + s1 + "->" + astring[1] + "] " + s); - s = "§7" + s1 + " whispers " + s; + s = "\u00A77" + s1 + " whispers " + s; a.info(s); if (!this.f.a(astring[1], (Packet) (new Packet3Chat(s)))) { icommandlistener.b("There\'s no player by that name online."); @@ -554,7 +554,7 @@ public class MinecraftServer implements ICommandListener, Runnable { private void a(String s, String s1) { String s2 = s + ": " + s1; - this.f.i("§7(" + s2 + ")"); + this.f.i("\u00A77(" + s2 + ")"); a.info(s2); } diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/NetLoginHandler.java index 6347e389..0714d8ce 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/NetLoginHandler.java @@ -82,7 +82,7 @@ public class NetLoginHandler extends NetHandler { // Craftbukkit start netserverhandler.b((Packet) (new Packet1Login("", "", entityplayer.id, entityplayer.world.u, (byte) entityplayer.world.q.g))); netserverhandler.b((Packet) (new Packet6SpawnPosition(entityplayer.world.spawnX, entityplayer.world.spawnY, entityplayer.world.spawnZ))); - this.e.f.a((Packet) (new Packet3Chat("§e" + entityplayer.name + " joined the game."))); + this.e.f.a((Packet) (new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game."))); this.e.f.a(entityplayer); netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); this.e.c.a(netserverhandler); diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index bca70f50..7713d24b 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -17,6 +17,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.TextWrapper; import org.bukkit.entity.Player; import org.bukkit.event.Event.Type; import org.bukkit.event.block.BlockDamageEvent; @@ -82,7 +83,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { public void a(String s) { // CraftBukkit start - String leaveMessage = "§e" + this.e.name + " left the game."; + String leaveMessage = "\u00A7e" + this.e.name + " left the game."; PlayerKickEvent kickEvent = new PlayerKickEvent(org.bukkit.event.Event.Type.PLAYER_KICK, server.getPlayer(this.e), s, leaveMessage); server.getPluginManager().callEvent(kickEvent); if (kickEvent.isCancelled()) { @@ -550,7 +551,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { public void a(String s, Object[] aobject) { a.info(this.e.name + " lost connection: " + s); - this.d.f.a((Packet) (new Packet3Chat("§e" + this.e.name + " left the game."))); + this.d.f.a((Packet) (new Packet3Chat("\u00A7e" + this.e.name + " left the game."))); this.d.f.c(this.e); this.c = true; } @@ -593,7 +594,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { // CraftBukkit end } } - + // CraftBukkit start public boolean chat(String msg) { if (msg.startsWith("/")) { @@ -608,12 +609,14 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (event.isCancelled()) { return true; } - // CraftBukkit end a.info(msg); - this.d.f.a((Packet) (new Packet3Chat(msg))); + for (final String line: TextWrapper.wrapText(msg)) { + this.d.f.a((Packet) (new Packet3Chat(line))); + } + // CraftBukkit end } - + return false; } // CraftBukkit end @@ -622,7 +625,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { // CraftBukkit start CraftPlayer player = getPlayer(); - PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, player, s); + PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND_PREPROCESS, player, s); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; @@ -641,6 +644,14 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (targetPluginFound) { return; } + + // Legacy command handler + event = new PlayerChatEvent(Type.PLAYER_COMMAND, player, s); + server.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + s = event.getMessage(); player = (CraftPlayer) event.getPlayer(); EntityPlayer e = player.getHandle(); @@ -658,10 +669,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (astring.length >= 3) { s = s.substring(s.indexOf(" ")).trim(); s = s.substring(s.indexOf(" ")).trim(); - s = "§7" + this.e.name + " whispers " + s; + s = "\u00A77" + this.e.name + " whispers " + s; a.info(s + " to " + astring[1]); if (!this.d.f.a(astring[1], (Packet) (new Packet3Chat(s)))) { - this.b((Packet) (new Packet3Chat("§cThere\'s no player by that name online."))); + this.b((Packet) (new Packet3Chat("\u00A7cThere\'s no player by that name online."))); } } } else { @@ -718,7 +729,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } public void b(String s) { - this.b((Packet) (new Packet3Chat("§7" + s))); + this.b((Packet) (new Packet3Chat("\u00A77" + s))); } public String c() { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 3275e369..9844892c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -834,6 +834,8 @@ public class World implements IBlockAccess { type = MobType.SPIDER; } else if (entity instanceof EntityZombie) { type = MobType.ZOMBIE; + } else if (entity instanceof EntitySlime) { + type = MobType.SLIME; } if (type != null) { |