diff --git a/minecraft_server/.classpath b/minecraft_server/.classpath new file mode 100644 index 0000000..ef38e05 --- /dev/null +++ b/minecraft_server/.classpath @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minecraft_server/.project b/minecraft_server/.project new file mode 100644 index 0000000..85c1741 --- /dev/null +++ b/minecraft_server/.project @@ -0,0 +1,53 @@ + + + Minecraft Server + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + libraries + 2 + $%7BPARENT-1-PROJECT_LOC%7D/libraries + + + + + -1002749744921918690 + + 9 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-src + + + + -1002749744921918689 + + 9 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-jars + + + + -1002749744921918688 + + 9 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-source + + + + diff --git a/minecraft_server/Server.launch b/minecraft_server/Server.launch new file mode 100644 index 0000000..9c41d48 --- /dev/null +++ b/minecraft_server/Server.launch @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/minecraft_server/jars/deobfuscated-source.jar b/minecraft_server/jars/deobfuscated-source.jar new file mode 100644 index 0000000..90c8d04 Binary files /dev/null and b/minecraft_server/jars/deobfuscated-source.jar differ diff --git a/minecraft_server/jars/deobfuscated.jar b/minecraft_server/jars/deobfuscated.jar new file mode 100644 index 0000000..c4df5e4 Binary files /dev/null and b/minecraft_server/jars/deobfuscated.jar differ diff --git a/minecraft_server/src/net/minecraft/server/MinecraftServer.java b/minecraft_server/src/net/minecraft/server/MinecraftServer.java new file mode 100644 index 0000000..2b48668 --- /dev/null +++ b/minecraft_server/src/net/minecraft/server/MinecraftServer.java @@ -0,0 +1,502 @@ +package net.minecraft.server; + +import java.awt.GraphicsEnvironment; +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import net.minecraft.src.AxisAlignedBB; +import net.minecraft.src.ConsoleLogManager; +import net.minecraft.src.EntityPlayerMP; +import net.minecraft.src.EntityTracker; +import net.minecraft.src.ICommandListener; +import net.minecraft.src.IProgressUpdate; +import net.minecraft.src.IUpdatePlayerListBox; +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import net.minecraft.src.NetworkListenThread; +import net.minecraft.src.Packet3Chat; +import net.minecraft.src.Packet4UpdateTime; +import net.minecraft.src.PropertyManager; +import net.minecraft.src.ServerCommand; +import net.minecraft.src.ServerConfigurationManager; +import net.minecraft.src.ServerGUI; +import net.minecraft.src.ThreadCommandReader; +import net.minecraft.src.ThreadServerApplication; +import net.minecraft.src.ThreadSleepForever; +import net.minecraft.src.Vec3D; +import net.minecraft.src.WorldManager; +import net.minecraft.src.WorldServer; + +public class MinecraftServer implements ICommandListener, Runnable { + public static Logger logger = Logger.getLogger("Minecraft"); + public static HashMap field_6037_b = new HashMap(); + public NetworkListenThread field_6036_c; + public PropertyManager propertyManagerObj; + public WorldServer worldMngr; + public ServerConfigurationManager configManager; + private boolean field_6025_n = true; + public boolean field_6032_g = false; + int field_9014_h = 0; + public String field_9013_i; + public int field_9012_j; + private List field_9010_p = new ArrayList(); + private List commands = Collections.synchronizedList(new ArrayList()); + public EntityTracker field_6028_k; + public boolean onlineMode; + public boolean noAnimals; + public boolean field_9011_n; + + public MinecraftServer() { + new ThreadSleepForever(this); + } + + private boolean func_6008_d() throws UnknownHostException { + ThreadCommandReader var1 = new ThreadCommandReader(this); + var1.setDaemon(true); + var1.start(); + ConsoleLogManager.init(); + logger.info("Starting minecraft server version 0.2.8"); + if(Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { + logger.warning("**** NOT ENOUGH RAM!"); + logger.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); + } + + logger.info("Loading properties"); + this.propertyManagerObj = new PropertyManager(new File("server.properties")); + String var2 = this.propertyManagerObj.getStringProperty("server-ip", ""); + this.onlineMode = this.propertyManagerObj.getBooleanProperty("online-mode", true); + this.noAnimals = this.propertyManagerObj.getBooleanProperty("spawn-animals", true); + this.field_9011_n = this.propertyManagerObj.getBooleanProperty("pvp", true); + InetAddress var3 = null; + if(var2.length() > 0) { + var3 = InetAddress.getByName(var2); + } + + int var4 = this.propertyManagerObj.getIntProperty("server-port", 25565); + logger.info("Starting Minecraft server on " + (var2.length() == 0 ? "*" : var2) + ":" + var4); + + try { + this.field_6036_c = new NetworkListenThread(this, var3, var4); + } catch (IOException var6) { + logger.warning("**** FAILED TO BIND TO PORT!"); + logger.log(Level.WARNING, "The exception was: " + var6.toString()); + logger.warning("Perhaps a server is already running on that port?"); + return false; + } + + if(!this.onlineMode) { + logger.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); + logger.warning("The server will make no attempt to authenticate usernames. Beware."); + logger.warning("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose."); + logger.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file."); + } + + this.configManager = new ServerConfigurationManager(this); + this.field_6028_k = new EntityTracker(this); + String var5 = this.propertyManagerObj.getStringProperty("level-name", "world"); + logger.info("Preparing level \"" + var5 + "\""); + this.func_6017_c(var5); + logger.info("Done! For help, type \"help\" or \"?\""); + return true; + } + + private void func_6017_c(String var1) { + logger.info("Preparing start region"); + this.worldMngr = new WorldServer(this, new File("."), var1, this.propertyManagerObj.getBooleanProperty("hellworld", false) ? -1 : 0); + this.worldMngr.func_4072_a(new WorldManager(this)); + this.worldMngr.monstersEnabled = this.propertyManagerObj.getBooleanProperty("spawn-monsters", true) ? 1 : 0; + this.configManager.setPlayerManager(this.worldMngr); + byte var2 = 10; + + for(int var3 = -var2; var3 <= var2; ++var3) { + this.func_6019_a("Preparing spawn area", (var3 + var2) * 100 / (var2 + var2 + 1)); + + for(int var4 = -var2; var4 <= var2; ++var4) { + if(!this.field_6025_n) { + return; + } + + this.worldMngr.A.loadChunk((this.worldMngr.spawnX >> 4) + var3, (this.worldMngr.spawnZ >> 4) + var4); + } + } + + this.func_6011_e(); + } + + private void func_6019_a(String var1, int var2) { + this.field_9013_i = var1; + this.field_9012_j = var2; + System.out.println(var1 + ": " + var2 + "%"); + } + + private void func_6011_e() { + this.field_9013_i = null; + this.field_9012_j = 0; + } + + private void saveServerWorld() { + logger.info("Saving chunks"); + this.worldMngr.func_485_a(true, (IProgressUpdate)null); + } + + private void func_6013_g() { + logger.info("Stopping server"); + if(this.configManager != null) { + this.configManager.savePlayerStates(); + } + + if(this.worldMngr != null) { + this.saveServerWorld(); + } + + } + + public void func_6016_a() { + this.field_6025_n = false; + } + + public void run() { + try { + if(this.func_6008_d()) { + long var1 = System.currentTimeMillis(); + long var3 = 0L; + + while(this.field_6025_n) { + long var5 = System.currentTimeMillis(); + long var7 = var5 - var1; + if(var7 > 2000L) { + logger.warning("Can\'t keep up! Did the system time change, or is the server overloaded?"); + var7 = 2000L; + } + + if(var7 < 0L) { + logger.warning("Time ran backwards! Did the system time change?"); + var7 = 0L; + } + + var3 += var7; + var1 = var5; + + while(var3 > 50L) { + var3 -= 50L; + this.func_6018_h(); + } + + Thread.sleep(1L); + } + } else { + while(this.field_6025_n) { + this.commandLineParser(); + + try { + Thread.sleep(10L); + } catch (InterruptedException var15) { + var15.printStackTrace(); + } + } + } + } catch (Exception var16) { + var16.printStackTrace(); + logger.log(Level.SEVERE, "Unexpected exception", var16); + + while(this.field_6025_n) { + this.commandLineParser(); + + try { + Thread.sleep(10L); + } catch (InterruptedException var14) { + var14.printStackTrace(); + } + } + } finally { + this.func_6013_g(); + this.field_6032_g = true; + System.exit(0); + } + + } + + private void func_6018_h() { + ArrayList var1 = new ArrayList(); + Iterator var2 = field_6037_b.keySet().iterator(); + + while(var2.hasNext()) { + String var3 = (String)var2.next(); + int var4 = ((Integer)field_6037_b.get(var3)).intValue(); + if(var4 > 0) { + field_6037_b.put(var3, Integer.valueOf(var4 - 1)); + } else { + var1.add(var3); + } + } + + int var6; + for(var6 = 0; var6 < var1.size(); ++var6) { + field_6037_b.remove(var1.get(var6)); + } + + AxisAlignedBB.clearBoundingBoxPool(); + Vec3D.initialize(); + ++this.field_9014_h; + if(this.field_9014_h % 20 == 0) { + this.configManager.sendPacketToAllPlayers(new Packet4UpdateTime(this.worldMngr.worldTime)); + } + + this.worldMngr.tick(); + + while(this.worldMngr.func_6156_d()) { + } + + this.worldMngr.func_459_b(); + this.field_6036_c.func_715_a(); + this.configManager.func_637_b(); + this.field_6028_k.func_607_a(); + + for(var6 = 0; var6 < this.field_9010_p.size(); ++var6) { + ((IUpdatePlayerListBox)this.field_9010_p.get(var6)).update(); + } + + try { + this.commandLineParser(); + } catch (Exception var5) { + logger.log(Level.WARNING, "Unexpected exception while parsing console command", var5); + } + + } + + public void addCommand(String var1, ICommandListener var2) { + this.commands.add(new ServerCommand(var1, var2)); + } + + public void commandLineParser() { + while(this.commands.size() > 0) { + ServerCommand var1 = (ServerCommand)this.commands.remove(0); + String var2 = var1.command; + ICommandListener var3 = var1.commandListener; + String var4 = var3.getUsername(); + if(!var2.toLowerCase().startsWith("help") && !var2.toLowerCase().startsWith("?")) { + if(var2.toLowerCase().startsWith("list")) { + var3.log("Connected players: " + this.configManager.getPlayerList()); + } else if(var2.toLowerCase().startsWith("stop")) { + this.func_6014_a(var4, "Stopping the server.."); + this.field_6025_n = false; + } else if(var2.toLowerCase().startsWith("save-all")) { + this.func_6014_a(var4, "Forcing save.."); + this.worldMngr.func_485_a(true, (IProgressUpdate)null); + this.func_6014_a(var4, "Save complete."); + } else if(var2.toLowerCase().startsWith("save-off")) { + this.func_6014_a(var4, "Disabling level saving.."); + this.worldMngr.field_816_A = true; + } else if(var2.toLowerCase().startsWith("save-on")) { + this.func_6014_a(var4, "Enabling level saving.."); + this.worldMngr.field_816_A = false; + } else { + String var11; + if(var2.toLowerCase().startsWith("op ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.opPlayer(var11); + this.func_6014_a(var4, "Opping " + var11); + this.configManager.sendChatMessageToPlayer(var11, "\u00a7eYou are now op!"); + } else if(var2.toLowerCase().startsWith("deop ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.deopPlayer(var11); + this.configManager.sendChatMessageToPlayer(var11, "\u00a7eYou are no longer op!"); + this.func_6014_a(var4, "De-opping " + var11); + } else if(var2.toLowerCase().startsWith("ban-ip ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.banIP(var11); + this.func_6014_a(var4, "Banning ip " + var11); + } else if(var2.toLowerCase().startsWith("pardon-ip ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.unbanIP(var11); + this.func_6014_a(var4, "Pardoning ip " + var11); + } else { + EntityPlayerMP var12; + if(var2.toLowerCase().startsWith("ban ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.banPlayer(var11); + this.func_6014_a(var4, "Banning " + var11); + var12 = this.configManager.getPlayerEntity(var11); + if(var12 != null) { + var12.field_421_a.func_43_c("Banned by admin"); + } + } else if(var2.toLowerCase().startsWith("pardon ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + this.configManager.unbanPlayer(var11); + this.func_6014_a(var4, "Pardoning " + var11); + } else if(var2.toLowerCase().startsWith("kick ")) { + var11 = var2.substring(var2.indexOf(" ")).trim(); + var12 = null; + + for(int var13 = 0; var13 < this.configManager.playerEntities.size(); ++var13) { + EntityPlayerMP var14 = (EntityPlayerMP)this.configManager.playerEntities.get(var13); + if(var14.username.equalsIgnoreCase(var11)) { + var12 = var14; + } + } + + if(var12 != null) { + var12.field_421_a.func_43_c("Kicked by admin"); + this.func_6014_a(var4, "Kicking " + var12.username); + } else { + var3.log("Can\'t find user " + var11 + ". No kick."); + } + } else { + String[] var5; + EntityPlayerMP var7; + if(var2.toLowerCase().startsWith("tp ")) { + var5 = var2.split(" "); + if(var5.length == 3) { + var12 = this.configManager.getPlayerEntity(var5[1]); + var7 = this.configManager.getPlayerEntity(var5[2]); + if(var12 == null) { + var3.log("Can\'t find user " + var5[1] + ". No tp."); + } else if(var7 == null) { + var3.log("Can\'t find user " + var5[2] + ". No tp."); + } else { + var12.field_421_a.func_41_a(var7.posX, var7.posY, var7.posZ, var7.rotationYaw, var7.rotationPitch); + this.func_6014_a(var4, "Teleporting " + var5[1] + " to " + var5[2] + "."); + } + } else { + var3.log("Syntax error, please provice a source and a target."); + } + } else if(var2.toLowerCase().startsWith("give ")) { + var5 = var2.split(" "); + if(var5.length != 3 && var5.length != 4) { + return; + } + + String var6 = var5[1]; + var7 = this.configManager.getPlayerEntity(var6); + if(var7 != null) { + try { + int var8 = Integer.parseInt(var5[2]); + if(Item.itemsList[var8] != null) { + this.func_6014_a(var4, "Giving " + var7.username + " some " + var8); + int var9 = 1; + if(var5.length > 3) { + var9 = this.func_6020_b(var5[3], 1); + } + + if(var9 < 1) { + var9 = 1; + } + + if(var9 > 64) { + var9 = 64; + } + + var7.func_161_a(new ItemStack(var8, var9)); + } else { + var3.log("There\'s no item with id " + var8); + } + } catch (NumberFormatException var10) { + var3.log("There\'s no item with id " + var5[2]); + } + } else { + var3.log("Can\'t find user " + var6); + } + } else if(var2.toLowerCase().startsWith("say ")) { + var2 = var2.substring(var2.indexOf(" ")).trim(); + logger.info("[" + var4 + "] " + var2); + this.configManager.sendPacketToAllPlayers(new Packet3Chat("\u00a7d[Server] " + var2)); + } else if(var2.toLowerCase().startsWith("tell ")) { + var5 = var2.split(" "); + if(var5.length >= 3) { + var2 = var2.substring(var2.indexOf(" ")).trim(); + var2 = var2.substring(var2.indexOf(" ")).trim(); + logger.info("[" + var4 + "->" + var5[1] + "] " + var2); + var2 = "\u00a77" + var4 + " whispers " + var2; + logger.info(var2); + if(!this.configManager.sendPacketToPlayer(var5[1], new Packet3Chat(var2))) { + var3.log("There\'s no player by that name online."); + } + } + } else { + logger.info("Unknown console command. Type \"help\" for help."); + } + } + } + } + } else { + var3.log("To run the server without a gui, start it like this:"); + var3.log(" java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui"); + var3.log("Console commands:"); + var3.log(" help or ? shows this message"); + var3.log(" kick removes a player from the server"); + var3.log(" ban bans a player from the server"); + var3.log(" pardon pardons a banned player so that they can connect again"); + var3.log(" ban-ip bans an IP address from the server"); + var3.log(" pardon-ip pardons a banned IP address so that they can connect again"); + var3.log(" op turns a player into an op"); + var3.log(" deop removes op status from a player"); + var3.log(" tp moves one player to the same location as another player"); + var3.log(" give [num] gives a player a resource"); + var3.log(" tell sends a private message to a player"); + var3.log(" stop gracefully stops the server"); + var3.log(" save-all forces a server-wide level save"); + var3.log(" save-off disables terrain saving (useful for backup scripts)"); + var3.log(" save-on re-enables terrain saving"); + var3.log(" list lists all currently connected players"); + var3.log(" say broadcasts a message to all players"); + } + } + + } + + private void func_6014_a(String var1, String var2) { + String var3 = var1 + ": " + var2; + this.configManager.sendChatMessageToAllPlayers("\u00a77(" + var3 + ")"); + logger.info(var3); + } + + private int func_6020_b(String var1, int var2) { + try { + return Integer.parseInt(var1); + } catch (NumberFormatException var4) { + return var2; + } + } + + public void func_6022_a(IUpdatePlayerListBox var1) { + this.field_9010_p.add(var1); + } + + public static void main(String[] var0) { + try { + MinecraftServer var1 = new MinecraftServer(); + if(!GraphicsEnvironment.isHeadless() && (var0.length <= 0 || !var0[0].equals("nogui"))) { + ServerGUI.initGui(var1); + } + + (new ThreadServerApplication("Server thread", var1)).start(); + } catch (Exception var2) { + logger.log(Level.SEVERE, "Failed to start the minecraft server", var2); + } + + } + + public File getFile(String var1) { + return new File(var1); + } + + public void log(String var1) { + logger.info(var1); + } + + public String getUsername() { + return "CONSOLE"; + } + + public static boolean func_6015_a(MinecraftServer var0) { + return var0.field_6025_n; + } +} diff --git a/minecraft_server/src/net/minecraft/src/AxisAlignedBB.java b/minecraft_server/src/net/minecraft/src/AxisAlignedBB.java new file mode 100644 index 0000000..66e970c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/AxisAlignedBB.java @@ -0,0 +1,340 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; + +public class AxisAlignedBB { + private static List boundingBoxes = new ArrayList(); + private static int numBoundingBoxesInUse = 0; + public double minX; + public double minY; + public double minZ; + public double maxX; + public double maxY; + public double maxZ; + + public static AxisAlignedBB getBoundingBox(double var0, double var2, double var4, double var6, double var8, double var10) { + return new AxisAlignedBB(var0, var2, var4, var6, var8, var10); + } + + public static void clearBoundingBoxPool() { + numBoundingBoxesInUse = 0; + } + + public static AxisAlignedBB getBoundingBoxFromPool(double var0, double var2, double var4, double var6, double var8, double var10) { + if(numBoundingBoxesInUse >= boundingBoxes.size()) { + boundingBoxes.add(getBoundingBox(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D)); + } + + return ((AxisAlignedBB)boundingBoxes.get(numBoundingBoxesInUse++)).setBounds(var0, var2, var4, var6, var8, var10); + } + + private AxisAlignedBB(double var1, double var3, double var5, double var7, double var9, double var11) { + this.minX = var1; + this.minY = var3; + this.minZ = var5; + this.maxX = var7; + this.maxY = var9; + this.maxZ = var11; + } + + public AxisAlignedBB setBounds(double var1, double var3, double var5, double var7, double var9, double var11) { + this.minX = var1; + this.minY = var3; + this.minZ = var5; + this.maxX = var7; + this.maxY = var9; + this.maxZ = var11; + return this; + } + + public AxisAlignedBB addCoord(double var1, double var3, double var5) { + double var7 = this.minX; + double var9 = this.minY; + double var11 = this.minZ; + double var13 = this.maxX; + double var15 = this.maxY; + double var17 = this.maxZ; + if(var1 < 0.0D) { + var7 += var1; + } + + if(var1 > 0.0D) { + var13 += var1; + } + + if(var3 < 0.0D) { + var9 += var3; + } + + if(var3 > 0.0D) { + var15 += var3; + } + + if(var5 < 0.0D) { + var11 += var5; + } + + if(var5 > 0.0D) { + var17 += var5; + } + + return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17); + } + + public AxisAlignedBB expands(double var1, double var3, double var5) { + double var7 = this.minX - var1; + double var9 = this.minY - var3; + double var11 = this.minZ - var5; + double var13 = this.maxX + var1; + double var15 = this.maxY + var3; + double var17 = this.maxZ + var5; + return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17); + } + + public AxisAlignedBB getOffsetBoundingBox(double var1, double var3, double var5) { + return getBoundingBoxFromPool(this.minX + var1, this.minY + var3, this.minZ + var5, this.maxX + var1, this.maxY + var3, this.maxZ + var5); + } + + public double func_710_a(AxisAlignedBB var1, double var2) { + if(var1.maxY > this.minY && var1.minY < this.maxY) { + if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) { + double var4; + if(var2 > 0.0D && var1.maxX <= this.minX) { + var4 = this.minX - var1.maxX; + if(var4 < var2) { + var2 = var4; + } + } + + if(var2 < 0.0D && var1.minX >= this.maxX) { + var4 = this.maxX - var1.minX; + if(var4 > var2) { + var2 = var4; + } + } + + return var2; + } else { + return var2; + } + } else { + return var2; + } + } + + public double func_701_b(AxisAlignedBB var1, double var2) { + if(var1.maxX > this.minX && var1.minX < this.maxX) { + if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) { + double var4; + if(var2 > 0.0D && var1.maxY <= this.minY) { + var4 = this.minY - var1.maxY; + if(var4 < var2) { + var2 = var4; + } + } + + if(var2 < 0.0D && var1.minY >= this.maxY) { + var4 = this.maxY - var1.minY; + if(var4 > var2) { + var2 = var4; + } + } + + return var2; + } else { + return var2; + } + } else { + return var2; + } + } + + public double func_709_c(AxisAlignedBB var1, double var2) { + if(var1.maxX > this.minX && var1.minX < this.maxX) { + if(var1.maxY > this.minY && var1.minY < this.maxY) { + double var4; + if(var2 > 0.0D && var1.maxZ <= this.minZ) { + var4 = this.minZ - var1.maxZ; + if(var4 < var2) { + var2 = var4; + } + } + + if(var2 < 0.0D && var1.minZ >= this.maxZ) { + var4 = this.maxZ - var1.minZ; + if(var4 > var2) { + var2 = var4; + } + } + + return var2; + } else { + return var2; + } + } else { + return var2; + } + } + + public boolean intersectsWith(AxisAlignedBB var1) { + return var1.maxX > this.minX && var1.minX < this.maxX ? (var1.maxY > this.minY && var1.minY < this.maxY ? var1.maxZ > this.minZ && var1.minZ < this.maxZ : false) : false; + } + + public AxisAlignedBB offset(double var1, double var3, double var5) { + this.minX += var1; + this.minY += var3; + this.minZ += var5; + this.maxX += var1; + this.maxY += var3; + this.maxZ += var5; + return this; + } + + public AxisAlignedBB func_694_e(double var1, double var3, double var5) { + double var7 = this.minX; + double var9 = this.minY; + double var11 = this.minZ; + double var13 = this.maxX; + double var15 = this.maxY; + double var17 = this.maxZ; + if(var1 < 0.0D) { + var7 -= var1; + } + + if(var1 > 0.0D) { + var13 -= var1; + } + + if(var3 < 0.0D) { + var9 -= var3; + } + + if(var3 > 0.0D) { + var15 -= var3; + } + + if(var5 < 0.0D) { + var11 -= var5; + } + + if(var5 > 0.0D) { + var17 -= var5; + } + + return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17); + } + + public AxisAlignedBB copy() { + return getBoundingBoxFromPool(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); + } + + public MovingObjectPosition func_706_a(Vec3D var1, Vec3D var2) { + Vec3D var3 = var1.getIntermediateWithXValue(var2, this.minX); + Vec3D var4 = var1.getIntermediateWithXValue(var2, this.maxX); + Vec3D var5 = var1.getIntermediateWithYValue(var2, this.minY); + Vec3D var6 = var1.getIntermediateWithYValue(var2, this.maxY); + Vec3D var7 = var1.getIntermediateWithZValue(var2, this.minZ); + Vec3D var8 = var1.getIntermediateWithZValue(var2, this.maxZ); + if(!this.isVecInYZ(var3)) { + var3 = null; + } + + if(!this.isVecInYZ(var4)) { + var4 = null; + } + + if(!this.isVecInXZ(var5)) { + var5 = null; + } + + if(!this.isVecInXZ(var6)) { + var6 = null; + } + + if(!this.isVecInXY(var7)) { + var7 = null; + } + + if(!this.isVecInXY(var8)) { + var8 = null; + } + + Vec3D var9 = null; + if(var3 != null && (var9 == null || var1.squareDistanceTo(var3) < var1.squareDistanceTo(var9))) { + var9 = var3; + } + + if(var4 != null && (var9 == null || var1.squareDistanceTo(var4) < var1.squareDistanceTo(var9))) { + var9 = var4; + } + + if(var5 != null && (var9 == null || var1.squareDistanceTo(var5) < var1.squareDistanceTo(var9))) { + var9 = var5; + } + + if(var6 != null && (var9 == null || var1.squareDistanceTo(var6) < var1.squareDistanceTo(var9))) { + var9 = var6; + } + + if(var7 != null && (var9 == null || var1.squareDistanceTo(var7) < var1.squareDistanceTo(var9))) { + var9 = var7; + } + + if(var8 != null && (var9 == null || var1.squareDistanceTo(var8) < var1.squareDistanceTo(var9))) { + var9 = var8; + } + + if(var9 == null) { + return null; + } else { + byte var10 = -1; + if(var9 == var3) { + var10 = 4; + } + + if(var9 == var4) { + var10 = 5; + } + + if(var9 == var5) { + var10 = 0; + } + + if(var9 == var6) { + var10 = 1; + } + + if(var9 == var7) { + var10 = 2; + } + + if(var9 == var8) { + var10 = 3; + } + + return new MovingObjectPosition(0, 0, 0, var10, var9); + } + } + + private boolean isVecInYZ(Vec3D var1) { + return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; + } + + private boolean isVecInXZ(Vec3D var1) { + return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; + } + + private boolean isVecInXY(Vec3D var1) { + return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY; + } + + public void setBB(AxisAlignedBB var1) { + this.minX = var1.minX; + this.minY = var1.minY; + this.minZ = var1.minZ; + this.maxX = var1.maxX; + this.maxY = var1.maxY; + this.maxZ = var1.maxZ; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Block.java b/minecraft_server/src/net/minecraft/src/Block.java new file mode 100644 index 0000000..618e47e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Block.java @@ -0,0 +1,455 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.Random; + +public class Block { + public static final StepSound soundPowderFootstep = new StepSound("stone", 1.0F, 1.0F); + public static final StepSound soundWoodFootstep = new StepSound("wood", 1.0F, 1.0F); + public static final StepSound soundGravelFootstep = new StepSound("gravel", 1.0F, 1.0F); + public static final StepSound soundGrassFootstep = new StepSound("grass", 1.0F, 1.0F); + public static final StepSound soundStoneFootstep = new StepSound("stone", 1.0F, 1.0F); + public static final StepSound soundMetalFootstep = new StepSound("stone", 1.0F, 1.5F); + public static final StepSound soundGlassFootstep = new StepSoundStone("stone", 1.0F, 1.0F); + public static final StepSound soundClothFootstep = new StepSound("cloth", 1.0F, 1.0F); + public static final StepSound soundSandFootstep = new StepSoundSand("sand", 1.0F, 1.0F); + public static final Block[] blocksList = new Block[256]; + public static final boolean[] tickOnLoad = new boolean[256]; + public static final boolean[] field_540_p = new boolean[256]; + public static final boolean[] isBlockContainer = new boolean[256]; + public static final int[] lightOpacity = new int[256]; + public static final boolean[] field_537_s = new boolean[256]; + public static final int[] lightValue = new int[256]; + public static final Block stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final BlockGrass grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep); + public static final Block dirt = (new BlockDirt(3, 2)).setHardness(0.5F).setStepSound(soundGravelFootstep); + public static final Block cobblestone = (new Block(4, 16, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block planks = (new Block(5, 4, Material.wood)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep); + public static final Block sapling = (new BlockSapling(6, 15)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final Block bedrock = (new Block(7, 17, Material.rock)).setHardness(-1.0F).setResistance(6000000.0F).setStepSound(soundStoneFootstep); + public static final Block waterStill = (new BlockFlowing(8, Material.water)).setHardness(100.0F).setLightOpacity(3); + public static final Block waterMoving = (new BlockStationary(9, Material.water)).setHardness(100.0F).setLightOpacity(3); + public static final Block lavaStill = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255); + public static final Block lavaMoving = (new BlockStationary(11, Material.lava)).setHardness(100.0F).setLightValue(1.0F).setLightOpacity(255); + public static final Block sand = (new BlockSand(12, 18)).setHardness(0.5F).setStepSound(soundSandFootstep); + public static final Block gravel = (new BlockGravel(13, 19)).setHardness(0.6F).setStepSound(soundGravelFootstep); + public static final Block oreGold = (new BlockOre(14, 32)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block oreIron = (new BlockOre(15, 33)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block oreCoal = (new BlockOre(16, 34)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block wood = (new BlockLog(17)).setHardness(2.0F).setStepSound(soundWoodFootstep); + public static final BlockLeaves leaves = (BlockLeaves)(new BlockLeaves(18, 52)).setHardness(0.2F).setLightOpacity(1).setStepSound(soundGrassFootstep); + public static final Block sponge = (new BlockSponge(19)).setHardness(0.6F).setStepSound(soundGrassFootstep); + public static final Block glass = (new BlockGlass(20, 49, Material.field_4216_o, false)).setHardness(0.3F).setStepSound(soundGlassFootstep); + public static final Block field_9042_N = null; + public static final Block field_9041_O = null; + public static final Block field_9040_P = null; + public static final Block field_9039_Q = null; + public static final Block field_9038_R = null; + public static final Block field_9037_S = null; + public static final Block field_9036_T = null; + public static final Block field_9034_U = null; + public static final Block field_9033_V = null; + public static final Block field_9032_W = null; + public static final Block field_9031_X = null; + public static final Block field_9030_Y = null; + public static final Block field_9029_Z = null; + public static final Block field_9049_aa = null; + public static final Block cloth = (new Block(35, 64, Material.field_4217_k)).setHardness(0.8F).setStepSound(soundClothFootstep); + public static final Block field_9048_ac = null; + public static final BlockFlower plantYellow = (BlockFlower)(new BlockFlower(37, 13)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final BlockFlower plantRed = (BlockFlower)(new BlockFlower(38, 12)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final BlockFlower mushroomBrown = (BlockFlower)(new BlockMushroom(39, 29)).setHardness(0.0F).setStepSound(soundGrassFootstep).setLightValue(2.0F / 16.0F); + public static final BlockFlower mushroomRed = (BlockFlower)(new BlockMushroom(40, 28)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final Block blockGold = (new BlockOreBlock(41, 39)).setHardness(3.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); + public static final Block blockSteel = (new BlockOreBlock(42, 38)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); + public static final Block stairDouble = (new BlockStep(43, true)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block stairSingle = (new BlockStep(44, false)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block brick = (new Block(45, 7, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block tnt = (new BlockTNT(46, 8)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final Block bookShelf = (new BlockBookshelf(47, 35)).setHardness(1.5F).setStepSound(soundWoodFootstep); + public static final Block cobblestoneMossy = (new Block(48, 36, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block obsidian = (new BlockObsidian(49, 37)).setHardness(10.0F).setResistance(2000.0F).setStepSound(soundStoneFootstep); + public static final Block torchWood = (new BlockTorch(50, 80)).setHardness(0.0F).setLightValue(15.0F / 16.0F).setStepSound(soundWoodFootstep); + public static final BlockFire fire = (BlockFire)((BlockFire)(new BlockFire(51, 31)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep)); + public static final Block mobSpawner = (new BlockMobSpawner(52, 65)).setHardness(5.0F).setStepSound(soundMetalFootstep); + public static final Block stairCompactPlanks = new BlockStairs(53, planks); + public static final Block crate = (new BlockChest(54)).setHardness(2.5F).setStepSound(soundWoodFootstep); + public static final Block redstoneWire = (new BlockRedstoneWire(55, 84)).setHardness(0.0F).setStepSound(soundPowderFootstep); + public static final Block oreDiamond = (new BlockOre(56, 50)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block blockDiamond = (new BlockOreBlock(57, 40)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); + public static final Block workbench = (new BlockWorkbench(58)).setHardness(2.5F).setStepSound(soundWoodFootstep); + public static final Block crops = (new BlockCrops(59, 88)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final Block tilledField = (new BlockSoil(60)).setHardness(0.6F).setStepSound(soundGravelFootstep); + public static final Block stoneOvenIdle = (new BlockFurnace(61, false)).setHardness(3.5F).setStepSound(soundStoneFootstep); + public static final Block stoneOvenActive = (new BlockFurnace(62, true)).setHardness(3.5F).setStepSound(soundStoneFootstep).setLightValue(14.0F / 16.0F); + public static final Block signPost = (new BlockSign(63, TileEntitySign.class, true)).setHardness(1.0F).setStepSound(soundWoodFootstep); + public static final Block doorWood = (new BlockDoor(64, Material.wood)).setHardness(3.0F).setStepSound(soundWoodFootstep); + public static final Block ladder = (new BlockLadder(65, 83)).setHardness(0.4F).setStepSound(soundWoodFootstep); + public static final Block minecartTrack = (new BlockMinecartTrack(66, 128)).setHardness(0.7F).setStepSound(soundMetalFootstep); + public static final Block stairCompactCobblestone = new BlockStairs(67, cobblestone); + public static final Block signWall = (new BlockSign(68, TileEntitySign.class, false)).setHardness(1.0F).setStepSound(soundWoodFootstep); + public static final Block lever = (new BlockLever(69, 96)).setHardness(0.5F).setStepSound(soundWoodFootstep); + public static final Block pressurePlateStone = (new BlockPressurePlate(70, stone.blockIndexInTexture, EnumMobType.mobs)).setHardness(0.5F).setStepSound(soundStoneFootstep); + public static final Block doorSteel = (new BlockDoor(71, Material.iron)).setHardness(5.0F).setStepSound(soundMetalFootstep); + public static final Block pressurePlatePlanks = (new BlockPressurePlate(72, planks.blockIndexInTexture, EnumMobType.everything)).setHardness(0.5F).setStepSound(soundWoodFootstep); + public static final Block oreRedstone = (new BlockRedstoneOre(73, 51, false)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block oreRedstoneGlowing = (new BlockRedstoneOre(74, 51, true)).setLightValue(10.0F / 16.0F).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); + public static final Block torchRedstoneIdle = (new BlockRedstoneTorch(75, 115, false)).setHardness(0.0F).setStepSound(soundWoodFootstep); + public static final Block torchRedstoneActive = (new BlockRedstoneTorch(76, 99, true)).setHardness(0.0F).setLightValue(0.5F).setStepSound(soundWoodFootstep); + public static final Block button = (new BlockButton(77, stone.blockIndexInTexture)).setHardness(0.5F).setStepSound(soundStoneFootstep); + public static final Block snow = (new BlockSnow(78, 66)).setHardness(0.1F).setStepSound(soundClothFootstep); + public static final Block ice = (new BlockIce(79, 67)).setHardness(0.5F).setLightOpacity(3).setStepSound(soundGlassFootstep); + public static final Block blockSnow = (new BlockSnowBlock(80, 66)).setHardness(0.2F).setStepSound(soundClothFootstep); + public static final Block cactus = (new BlockCactus(81, 70)).setHardness(0.4F).setStepSound(soundClothFootstep); + public static final Block blockClay = (new BlockClay(82, 72)).setHardness(0.6F).setStepSound(soundGravelFootstep); + public static final Block reed = (new BlockReed(83, 73)).setHardness(0.0F).setStepSound(soundGrassFootstep); + public static final Block jukebox = (new BlockJukeBox(84, 74)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); + public static final Block field_9050_aZ = (new BlockFence(85, 4)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep); + public static final Block pumpkin = (new BlockPumpkin(86, 102, false)).setHardness(1.0F).setStepSound(soundWoodFootstep); + public static final Block bloodStone = (new BlockBloodStone(87, 103)).setHardness(0.4F).setStepSound(soundStoneFootstep); + public static final Block slowSand = (new BlockSlowSand(88, 104)).setHardness(0.5F).setStepSound(soundSandFootstep); + public static final Block lightStone = (new BlockLightStone(89, 105, Material.field_4216_o)).setHardness(0.3F).setStepSound(soundGlassFootstep).setLightValue(1.0F); + public static final BlockPortal portal = (BlockPortal)((BlockPortal)(new BlockPortal(90, 14)).setHardness(-1.0F).setStepSound(soundGlassFootstep).setLightValue(12.0F / 16.0F)); + public static final Block field_9035_bf = (new BlockPumpkin(91, 102, true)).setHardness(1.0F).setStepSound(soundWoodFootstep).setLightValue(1.0F); + public int blockIndexInTexture; + public final int blockID; + protected float blockHardness; + protected float blockResistance; + public double minX; + public double minY; + public double minZ; + public double maxX; + public double maxY; + public double maxZ; + public StepSound stepSound; + public float field_554_bm; + public final Material blockMaterial; + public float slipperiness; + + protected Block(int var1, Material var2) { + this.stepSound = soundPowderFootstep; + this.field_554_bm = 1.0F; + this.slipperiness = 0.6F; + if(blocksList[var1] != null) { + throw new IllegalArgumentException("Slot " + var1 + " is already occupied by " + blocksList[var1] + " when adding " + this); + } else { + this.blockMaterial = var2; + blocksList[var1] = this; + this.blockID = var1; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + field_540_p[var1] = this.allowsAttachment(); + lightOpacity[var1] = this.allowsAttachment() ? 255 : 0; + field_537_s[var1] = this.unusedMethod(); + isBlockContainer[var1] = false; + } + } + + protected Block(int var1, int var2, Material var3) { + this(var1, var3); + this.blockIndexInTexture = var2; + } + + protected Block setStepSound(StepSound var1) { + this.stepSound = var1; + return this; + } + + protected Block setLightOpacity(int var1) { + lightOpacity[this.blockID] = var1; + return this; + } + + protected Block setLightValue(float var1) { + lightValue[this.blockID] = (int)(15.0F * var1); + return this; + } + + protected Block setResistance(float var1) { + this.blockResistance = var1 * 3.0F; + return this; + } + + private boolean unusedMethod() { + return false; + } + + protected Block setHardness(float var1) { + this.blockHardness = var1; + if(this.blockResistance < var1 * 5.0F) { + this.blockResistance = var1 * 5.0F; + } + + return this; + } + + protected void setTickOnLoad(boolean var1) { + tickOnLoad[this.blockID] = var1; + } + + public void setBlockBounds(float var1, float var2, float var3, float var4, float var5, float var6) { + this.minX = (double)var1; + this.minY = (double)var2; + this.minZ = (double)var3; + this.maxX = (double)var4; + this.maxY = (double)var5; + this.maxZ = (double)var6; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return var5 == 0 && this.minY > 0.0D ? true : (var5 == 1 && this.maxY < 1.0D ? true : (var5 == 2 && this.minZ > 0.0D ? true : (var5 == 3 && this.maxZ < 1.0D ? true : (var5 == 4 && this.minX > 0.0D ? true : (var5 == 5 && this.maxX < 1.0D ? true : !var1.doesBlockAllowAttachment(var2, var3, var4)))))); + } + + public int getBlockTextureFromSide(int var1) { + return this.blockIndexInTexture; + } + + public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) { + AxisAlignedBB var7 = this.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); + if(var7 != null && var5.intersectsWith(var7)) { + var6.add(var7); + } + + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)var3 + this.maxY, (double)var4 + this.maxZ); + } + + public boolean allowsAttachment() { + return true; + } + + public boolean canCollideCheck(int var1, boolean var2) { + return this.isCollidable(); + } + + public boolean isCollidable() { + return true; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + } + + public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + } + + public int tickRate() { + return 10; + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + } + + public int quantityDropped(Random var1) { + return 1; + } + + public int idDropped(int var1, Random var2) { + return this.blockID; + } + + public float func_254_a(EntityPlayer var1) { + return this.blockHardness < 0.0F ? 0.0F : (!var1.func_167_b(this) ? 1.0F / this.blockHardness / 100.0F : var1.getCurrentPlayerStrVsBlock(this) / this.blockHardness / 30.0F); + } + + public void dropBlockAsItem(World var1, int var2, int var3, int var4, int var5) { + this.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, 1.0F); + } + + public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) { + if(!var1.multiplayerWorld) { + int var7 = this.quantityDropped(var1.rand); + + for(int var8 = 0; var8 < var7; ++var8) { + if(var1.rand.nextFloat() <= var6) { + int var9 = this.idDropped(var5, var1.rand); + if(var9 > 0) { + float var10 = 0.7F; + double var11 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; + double var13 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; + double var15 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; + EntityItem var17 = new EntityItem(var1, (double)var2 + var11, (double)var3 + var13, (double)var4 + var15, new ItemStack(var9)); + var17.field_433_ad = 10; + var1.entityJoinedWorld(var17); + } + } + } + + } + } + + public float func_226_a(Entity var1) { + return this.blockResistance / 5.0F; + } + + public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { + this.setBlockBoundsBasedOnState(var1, var2, var3, var4); + var5 = var5.addVector((double)(-var2), (double)(-var3), (double)(-var4)); + var6 = var6.addVector((double)(-var2), (double)(-var3), (double)(-var4)); + Vec3D var7 = var5.getIntermediateWithXValue(var6, this.minX); + Vec3D var8 = var5.getIntermediateWithXValue(var6, this.maxX); + Vec3D var9 = var5.getIntermediateWithYValue(var6, this.minY); + Vec3D var10 = var5.getIntermediateWithYValue(var6, this.maxY); + Vec3D var11 = var5.getIntermediateWithZValue(var6, this.minZ); + Vec3D var12 = var5.getIntermediateWithZValue(var6, this.maxZ); + if(!this.isVecInsideYZBounds(var7)) { + var7 = null; + } + + if(!this.isVecInsideYZBounds(var8)) { + var8 = null; + } + + if(!this.isVecInsideXZBounds(var9)) { + var9 = null; + } + + if(!this.isVecInsideXZBounds(var10)) { + var10 = null; + } + + if(!this.isVecInsideXYBounds(var11)) { + var11 = null; + } + + if(!this.isVecInsideXYBounds(var12)) { + var12 = null; + } + + Vec3D var13 = null; + if(var7 != null && (var13 == null || var5.distanceTo(var7) < var5.distanceTo(var13))) { + var13 = var7; + } + + if(var8 != null && (var13 == null || var5.distanceTo(var8) < var5.distanceTo(var13))) { + var13 = var8; + } + + if(var9 != null && (var13 == null || var5.distanceTo(var9) < var5.distanceTo(var13))) { + var13 = var9; + } + + if(var10 != null && (var13 == null || var5.distanceTo(var10) < var5.distanceTo(var13))) { + var13 = var10; + } + + if(var11 != null && (var13 == null || var5.distanceTo(var11) < var5.distanceTo(var13))) { + var13 = var11; + } + + if(var12 != null && (var13 == null || var5.distanceTo(var12) < var5.distanceTo(var13))) { + var13 = var12; + } + + if(var13 == null) { + return null; + } else { + byte var14 = -1; + if(var13 == var7) { + var14 = 4; + } + + if(var13 == var8) { + var14 = 5; + } + + if(var13 == var9) { + var14 = 0; + } + + if(var13 == var10) { + var14 = 1; + } + + if(var13 == var11) { + var14 = 2; + } + + if(var13 == var12) { + var14 = 3; + } + + return new MovingObjectPosition(var2, var3, var4, var14, var13.addVector((double)var2, (double)var3, (double)var4)); + } + } + + private boolean isVecInsideYZBounds(Vec3D var1) { + return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; + } + + private boolean isVecInsideXZBounds(Vec3D var1) { + return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; + } + + private boolean isVecInsideXYBounds(Vec3D var1) { + return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY; + } + + public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3, var4); + return var5 == 0 || blocksList[var5].blockMaterial.getIsLiquid(); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + return false; + } + + public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { + } + + public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + } + + public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return false; + } + + public boolean canProvidePower() { + return false; + } + + public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + return false; + } + + public void func_12007_g(World var1, int var2, int var3, int var4, int var5) { + this.dropBlockAsItem(var1, var2, var3, var4, var5); + } + + public boolean canBlockStay(World var1, int var2, int var3, int var4) { + return true; + } + + public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) { + } + + static { + for(int var0 = 0; var0 < 256; ++var0) { + if(blocksList[var0] != null) { + Item.itemsList[var0] = new ItemBlock(var0 - 256); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockBloodStone.java b/minecraft_server/src/net/minecraft/src/BlockBloodStone.java new file mode 100644 index 0000000..4416764 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockBloodStone.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public class BlockBloodStone extends Block { + public BlockBloodStone(int var1, int var2) { + super(var1, var2, Material.rock); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockBookshelf.java b/minecraft_server/src/net/minecraft/src/BlockBookshelf.java new file mode 100644 index 0000000..35e3631 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockBookshelf.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockBookshelf extends Block { + public BlockBookshelf(int var1, int var2) { + super(var1, var2, Material.wood); + } + + public int getBlockTextureFromSide(int var1) { + return var1 <= 1 ? 4 : this.blockIndexInTexture; + } + + public int quantityDropped(Random var1) { + return 0; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockBreakable.java b/minecraft_server/src/net/minecraft/src/BlockBreakable.java new file mode 100644 index 0000000..aa20ce1 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockBreakable.java @@ -0,0 +1,19 @@ +package net.minecraft.src; + +public class BlockBreakable extends Block { + private boolean field_6084_a; + + protected BlockBreakable(int var1, int var2, Material var3, boolean var4) { + super(var1, var2, var3); + this.field_6084_a = var4; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockId(var2, var3, var4); + return !this.field_6084_a && var6 == this.blockID ? false : super.isSideInsideCoordinate(var1, var2, var3, var4, var5); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockButton.java b/minecraft_server/src/net/minecraft/src/BlockButton.java new file mode 100644 index 0000000..9053848 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockButton.java @@ -0,0 +1,225 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockButton extends Block { + protected BlockButton(int var1, int var2) { + super(var1, var2, Material.circuits); + this.setTickOnLoad(true); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public int tickRate() { + return 20; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2 - 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2 + 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 - 1) ? true : var1.doesBlockAllowAttachment(var2, var3, var4 + 1))); + } + + public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + int var7 = var6 & 8; + var6 &= 7; + if(var5 == 2 && var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var6 = 4; + } + + if(var5 == 3 && var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var6 = 3; + } + + if(var5 == 4 && var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var6 = 2; + } + + if(var5 == 5 && var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var6 = 1; + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + } else if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 2); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 3); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 4); + } + + this.func_322_g(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(this.func_322_g(var1, var2, var3, var4)) { + int var6 = var1.getBlockMetadata(var2, var3, var4) & 7; + boolean var7 = false; + if(!var1.doesBlockAllowAttachment(var2 - 1, var3, var4) && var6 == 1) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2 + 1, var3, var4) && var6 == 2) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 - 1) && var6 == 3) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 + 1) && var6 == 4) { + var7 = true; + } + + if(var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } + + } + + private boolean func_322_g(World var1, int var2, int var3, int var4) { + if(!this.canPlaceBlockAt(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + return false; + } else { + return true; + } + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + int var6 = var5 & 7; + boolean var7 = (var5 & 8) > 0; + float var8 = 6.0F / 16.0F; + float var9 = 10.0F / 16.0F; + float var10 = 3.0F / 16.0F; + float var11 = 2.0F / 16.0F; + if(var7) { + var11 = 1.0F / 16.0F; + } + + if(var6 == 1) { + this.setBlockBounds(0.0F, var8, 0.5F - var10, var11, var9, 0.5F + var10); + } else if(var6 == 2) { + this.setBlockBounds(1.0F - var11, var8, 0.5F - var10, 1.0F, var9, 0.5F + var10); + } else if(var6 == 3) { + this.setBlockBounds(0.5F - var10, var8, 0.0F, 0.5F + var10, var9, var11); + } else if(var6 == 4) { + this.setBlockBounds(0.5F - var10, var8, 1.0F - var11, 0.5F + var10, var9, 1.0F); + } + + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.blockActivated(var1, var2, var3, var4, var5); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + if(var1.multiplayerWorld) { + return true; + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + int var7 = var6 & 7; + int var8 = 8 - (var6 & 8); + if(var8 == 0) { + return true; + } else { + var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + var8); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, 0.6F); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + if(var7 == 1) { + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + } else if(var7 == 2) { + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + } else if(var7 == 3) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + } else if(var7 == 4) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } else { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + return true; + } + } + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + if((var5 & 8) > 0) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + int var6 = var5 & 7; + if(var6 == 1) { + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + } else if(var6 == 2) { + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + } else if(var6 == 3) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + } else if(var6 == 4) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } else { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + } + + super.onBlockRemoval(var1, var2, var3, var4); + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return (var1.getBlockMetadata(var2, var3, var4) & 8) > 0; + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) == 0) { + return false; + } else { + int var7 = var6 & 7; + return var7 == 5 && var5 == 1 ? true : (var7 == 4 && var5 == 2 ? true : (var7 == 3 && var5 == 3 ? true : (var7 == 2 && var5 == 4 ? true : var7 == 1 && var5 == 5))); + } + } + + public boolean canProvidePower() { + return true; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(!var1.multiplayerWorld) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) != 0) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 & 7); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + int var7 = var6 & 7; + if(var7 == 1) { + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + } else if(var7 == 2) { + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + } else if(var7 == 3) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + } else if(var7 == 4) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } else { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, 0.5F); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockCactus.java b/minecraft_server/src/net/minecraft/src/BlockCactus.java new file mode 100644 index 0000000..319818e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockCactus.java @@ -0,0 +1,73 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockCactus extends Block { + protected BlockCactus(int var1, int var2) { + super(var1, var2, Material.field_4214_u); + this.setTickOnLoad(true); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getBlockId(var2, var3 + 1, var4) == 0) { + int var6; + for(var6 = 1; var1.getBlockId(var2, var3 - var6, var4) == this.blockID; ++var6) { + } + + if(var6 < 3) { + int var7 = var1.getBlockMetadata(var2, var3, var4); + if(var7 == 15) { + var1.setBlockWithNotify(var2, var3 + 1, var4, this.blockID); + var1.setBlockMetadataWithNotify(var2, var3, var4, 0); + } else { + var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + 1); + } + } + } + + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + float var5 = 1.0F / 16.0F; + return AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var5), (double)var3, (double)((float)var4 + var5), (double)((float)(var2 + 1) - var5), (double)((float)(var3 + 1) - var5), (double)((float)(var4 + 1) - var5)); + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture); + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return !super.canPlaceBlockAt(var1, var2, var3, var4) ? false : this.canBlockStay(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(!this.canBlockStay(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public boolean canBlockStay(World var1, int var2, int var3, int var4) { + if(var1.getBlockMaterial(var2 - 1, var3, var4).func_216_a()) { + return false; + } else if(var1.getBlockMaterial(var2 + 1, var3, var4).func_216_a()) { + return false; + } else if(var1.getBlockMaterial(var2, var3, var4 - 1).func_216_a()) { + return false; + } else if(var1.getBlockMaterial(var2, var3, var4 + 1).func_216_a()) { + return false; + } else { + int var5 = var1.getBlockId(var2, var3 - 1, var4); + return var5 == Block.cactus.blockID || var5 == Block.sand.blockID; + } + } + + public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { + var5.attackEntity((Entity)null, 1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockChest.java b/minecraft_server/src/net/minecraft/src/BlockChest.java new file mode 100644 index 0000000..3a8290d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockChest.java @@ -0,0 +1,109 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockChest extends BlockContainer { + private Random field_656_a = new Random(); + + protected BlockChest(int var1) { + super(var1, Material.wood); + this.blockIndexInTexture = 26; + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture - 1 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture)); + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + int var5 = 0; + if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) { + ++var5; + } + + if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { + ++var5; + } + + if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) { + ++var5; + } + + if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) { + ++var5; + } + + return var5 > 1 ? false : (this.isThereANeighborChest(var1, var2 - 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2 + 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2, var3, var4 - 1) ? false : !this.isThereANeighborChest(var1, var2, var3, var4 + 1)))); + } + + private boolean isThereANeighborChest(World var1, int var2, int var3, int var4) { + return var1.getBlockId(var2, var3, var4) != this.blockID ? false : (var1.getBlockId(var2 - 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2 + 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2, var3, var4 - 1) == this.blockID ? true : var1.getBlockId(var2, var3, var4 + 1) == this.blockID))); + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + TileEntityChest var5 = (TileEntityChest)var1.getBlock(var2, var3, var4); + + for(int var6 = 0; var6 < var5.func_83_a(); ++var6) { + ItemStack var7 = var5.getStackInSlot(var6); + if(var7 != null) { + float var8 = this.field_656_a.nextFloat() * 0.8F + 0.1F; + float var9 = this.field_656_a.nextFloat() * 0.8F + 0.1F; + float var10 = this.field_656_a.nextFloat() * 0.8F + 0.1F; + + while(var7.stackSize > 0) { + int var11 = this.field_656_a.nextInt(21) + 10; + if(var11 > var7.stackSize) { + var11 = var7.stackSize; + } + + var7.stackSize -= var11; + EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(var7.itemID, var11, var7.itemDamage)); + float var13 = 0.05F; + var12.motionX = (double)((float)this.field_656_a.nextGaussian() * var13); + var12.motionY = (double)((float)this.field_656_a.nextGaussian() * var13 + 0.2F); + var12.motionZ = (double)((float)this.field_656_a.nextGaussian() * var13); + var1.entityJoinedWorld(var12); + } + } + } + + super.onBlockRemoval(var1, var2, var3, var4); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + Object var6 = (TileEntityChest)var1.getBlock(var2, var3, var4); + if(var1.doesBlockAllowAttachment(var2, var3 + 1, var4)) { + return true; + } else if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID && var1.doesBlockAllowAttachment(var2 - 1, var3 + 1, var4)) { + return true; + } else if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID && var1.doesBlockAllowAttachment(var2 + 1, var3 + 1, var4)) { + return true; + } else if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID && var1.doesBlockAllowAttachment(var2, var3 + 1, var4 - 1)) { + return true; + } else if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID && var1.doesBlockAllowAttachment(var2, var3 + 1, var4 + 1)) { + return true; + } else { + if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) { + var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlock(var2 - 1, var3, var4), (IInventory)var6); + } + + if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { + var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlock(var2 + 1, var3, var4)); + } + + if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) { + var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlock(var2, var3, var4 - 1), (IInventory)var6); + } + + if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) { + var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlock(var2, var3, var4 + 1)); + } + + var5.func_166_a((IInventory)var6); + return true; + } + } + + protected TileEntity func_294_a_() { + return new TileEntityChest(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockClay.java b/minecraft_server/src/net/minecraft/src/BlockClay.java new file mode 100644 index 0000000..0cb08f3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockClay.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockClay extends Block { + public BlockClay(int var1, int var2) { + super(var1, var2, Material.clay); + } + + public int idDropped(int var1, Random var2) { + return Item.clay.swiftedIndex; + } + + public int quantityDropped(Random var1) { + return 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockContainer.java b/minecraft_server/src/net/minecraft/src/BlockContainer.java new file mode 100644 index 0000000..93f4685 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockContainer.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +public abstract class BlockContainer extends Block { + protected BlockContainer(int var1, Material var2) { + super(var1, var2); + isBlockContainer[var1] = true; + } + + protected BlockContainer(int var1, int var2, Material var3) { + super(var1, var2, var3); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + super.onBlockAdded(var1, var2, var3, var4); + var1.func_473_a(var2, var3, var4, this.func_294_a_()); + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + super.onBlockRemoval(var1, var2, var3, var4); + var1.func_513_l(var2, var3, var4); + } + + protected abstract TileEntity func_294_a_(); +} diff --git a/minecraft_server/src/net/minecraft/src/BlockCrops.java b/minecraft_server/src/net/minecraft/src/BlockCrops.java new file mode 100644 index 0000000..8aa6755 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockCrops.java @@ -0,0 +1,98 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockCrops extends BlockFlower { + protected BlockCrops(int var1, int var2) { + super(var1, var2); + this.blockIndexInTexture = var2; + this.setTickOnLoad(true); + float var3 = 0.5F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.25F, 0.5F + var3); + } + + protected boolean canThisPlantGrowOnThisBlockID(int var1) { + return var1 == Block.tilledField.blockID; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + super.updateTick(var1, var2, var3, var4, var5); + if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 < 7) { + float var7 = this.getGrowthRate(var1, var2, var3, var4); + if(var5.nextInt((int)(100.0F / var7)) == 0) { + ++var6; + var1.setBlockMetadataWithNotify(var2, var3, var4, var6); + } + } + } + + } + + private float getGrowthRate(World var1, int var2, int var3, int var4) { + float var5 = 1.0F; + int var6 = var1.getBlockId(var2, var3, var4 - 1); + int var7 = var1.getBlockId(var2, var3, var4 + 1); + int var8 = var1.getBlockId(var2 - 1, var3, var4); + int var9 = var1.getBlockId(var2 + 1, var3, var4); + int var10 = var1.getBlockId(var2 - 1, var3, var4 - 1); + int var11 = var1.getBlockId(var2 + 1, var3, var4 - 1); + int var12 = var1.getBlockId(var2 + 1, var3, var4 + 1); + int var13 = var1.getBlockId(var2 - 1, var3, var4 + 1); + boolean var14 = var8 == this.blockID || var9 == this.blockID; + boolean var15 = var6 == this.blockID || var7 == this.blockID; + boolean var16 = var10 == this.blockID || var11 == this.blockID || var12 == this.blockID || var13 == this.blockID; + + for(int var17 = var2 - 1; var17 <= var2 + 1; ++var17) { + for(int var18 = var4 - 1; var18 <= var4 + 1; ++var18) { + int var19 = var1.getBlockId(var17, var3 - 1, var18); + float var20 = 0.0F; + if(var19 == Block.tilledField.blockID) { + var20 = 1.0F; + if(var1.getBlockMetadata(var17, var3 - 1, var18) > 0) { + var20 = 3.0F; + } + } + + if(var17 != var2 || var18 != var4) { + var20 /= 4.0F; + } + + var5 += var20; + } + } + + if(var16 || var14 && var15) { + var5 /= 2.0F; + } + + return var5; + } + + public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { + super.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5); + if(!var1.multiplayerWorld) { + for(int var6 = 0; var6 < 3; ++var6) { + if(var1.rand.nextInt(15) <= var5) { + float var7 = 0.7F; + float var8 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; + float var9 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; + float var10 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; + EntityItem var11 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(Item.seeds)); + var11.field_433_ad = 10; + var1.entityJoinedWorld(var11); + } + } + } + + } + + public int idDropped(int var1, Random var2) { + return var1 == 7 ? Item.wheat.swiftedIndex : -1; + } + + public int quantityDropped(Random var1) { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockDirt.java b/minecraft_server/src/net/minecraft/src/BlockDirt.java new file mode 100644 index 0000000..4deab61 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockDirt.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public class BlockDirt extends Block { + protected BlockDirt(int var1, int var2) { + super(var1, var2, Material.ground); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockDoor.java b/minecraft_server/src/net/minecraft/src/BlockDoor.java new file mode 100644 index 0000000..f62ca84 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockDoor.java @@ -0,0 +1,162 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockDoor extends Block { + protected BlockDoor(int var1, Material var2) { + super(var1, var2); + this.blockIndexInTexture = 97; + if(var2 == Material.iron) { + ++this.blockIndexInTexture; + } + + float var3 = 0.5F; + float var4 = 1.0F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var4, 0.5F + var3); + } + + public boolean allowsAttachment() { + return false; + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + this.setBlockBoundsBasedOnState(var1, var2, var3, var4); + return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + this.func_273_b(this.func_271_d(var1.getBlockMetadata(var2, var3, var4))); + } + + public void func_273_b(int var1) { + float var2 = 3.0F / 16.0F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); + if(var1 == 0) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2); + } + + if(var1 == 1) { + this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + if(var1 == 2) { + this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); + } + + if(var1 == 3) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F); + } + + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.blockActivated(var1, var2, var3, var4, var5); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + if(this.blockMaterial == Material.iron) { + return true; + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) != 0) { + if(var1.getBlockId(var2, var3 - 1, var4) == this.blockID) { + this.blockActivated(var1, var2, var3 - 1, var4, var5); + } + + return true; + } else { + if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) { + var1.setBlockMetadataWithNotify(var2, var3 + 1, var4, (var6 ^ 4) + 8); + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4); + var1.func_519_b(var2, var3 - 1, var4, var2, var3, var4); + if(Math.random() < 0.5D) { + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_open", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); + } else { + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_close", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); + } + + return true; + } + } + } + + public void func_272_a(World var1, int var2, int var3, int var4, boolean var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) != 0) { + if(var1.getBlockId(var2, var3 - 1, var4) == this.blockID) { + this.func_272_a(var1, var2, var3 - 1, var4, var5); + } + + } else { + boolean var7 = (var1.getBlockMetadata(var2, var3, var4) & 4) > 0; + if(var7 != var5) { + if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) { + var1.setBlockMetadataWithNotify(var2, var3 + 1, var4, (var6 ^ 4) + 8); + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4); + var1.func_519_b(var2, var3 - 1, var4, var2, var3, var4); + if(Math.random() < 0.5D) { + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_open", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); + } else { + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_close", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); + } + + } + } + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) != 0) { + if(var1.getBlockId(var2, var3 - 1, var4) != this.blockID) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + if(var5 > 0 && Block.blocksList[var5].canProvidePower()) { + this.onNeighborBlockChange(var1, var2, var3 - 1, var4, var5); + } + } else { + boolean var7 = false; + if(var1.getBlockId(var2, var3 + 1, var4) != this.blockID) { + var1.setBlockWithNotify(var2, var3, var4, 0); + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var1.setBlockWithNotify(var2, var3, var4, 0); + var7 = true; + if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) { + var1.setBlockWithNotify(var2, var3 + 1, var4, 0); + } + } + + if(var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var6); + } else if(var5 > 0 && Block.blocksList[var5].canProvidePower()) { + boolean var8 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4); + this.func_272_a(var1, var2, var3, var4, var8); + } + } + + } + + public int idDropped(int var1, Random var2) { + return (var1 & 8) != 0 ? 0 : (this.blockMaterial == Material.iron ? Item.doorSteel.swiftedIndex : Item.doorWood.swiftedIndex); + } + + public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { + this.setBlockBoundsBasedOnState(var1, var2, var3, var4); + return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); + } + + public int func_271_d(int var1) { + return (var1 & 4) == 0 ? var1 - 1 & 3 : var1 & 3; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var3 >= 127 ? false : var1.doesBlockAllowAttachment(var2, var3 - 1, var4) && super.canPlaceBlockAt(var1, var2, var3, var4) && super.canPlaceBlockAt(var1, var2, var3 + 1, var4); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFence.java b/minecraft_server/src/net/minecraft/src/BlockFence.java new file mode 100644 index 0000000..c4cd8d2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFence.java @@ -0,0 +1,21 @@ +package net.minecraft.src; + +import java.util.ArrayList; + +public class BlockFence extends Block { + public BlockFence(int var1, int var2) { + super(var1, var2, Material.wood); + } + + public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) { + var6.add(AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)var3 + 1.5D, (double)(var4 + 1))); + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.getBlockId(var2, var3 - 1, var4) == this.blockID ? false : (!var1.getBlockMaterial(var2, var3 - 1, var4).func_216_a() ? false : super.canPlaceBlockAt(var1, var2, var3, var4)); + } + + public boolean allowsAttachment() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFire.java b/minecraft_server/src/net/minecraft/src/BlockFire.java new file mode 100644 index 0000000..6fcab61 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFire.java @@ -0,0 +1,155 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockFire extends Block { + private int[] chanceToEncourageFire = new int[256]; + private int[] abilityToCatchFire = new int[256]; + + protected BlockFire(int var1, int var2) { + super(var1, var2, Material.fire); + this.setBurnRate(Block.planks.blockID, 5, 20); + this.setBurnRate(Block.wood.blockID, 5, 5); + this.setBurnRate(Block.leaves.blockID, 30, 60); + this.setBurnRate(Block.bookShelf.blockID, 30, 20); + this.setBurnRate(Block.tnt.blockID, 15, 100); + this.setBurnRate(Block.cloth.blockID, 30, 60); + this.setTickOnLoad(true); + } + + private void setBurnRate(int var1, int var2, int var3) { + this.chanceToEncourageFire[var1] = var2; + this.abilityToCatchFire[var1] = var3; + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public int quantityDropped(Random var1) { + return 0; + } + + public int tickRate() { + return 10; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + boolean var6 = var1.getBlockId(var2, var3 - 1, var4) == Block.bloodStone.blockID; + int var7 = var1.getBlockMetadata(var2, var3, var4); + if(var7 < 15) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + 1); + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + if(!var6 && !this.func_268_g(var1, var2, var3, var4)) { + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4) || var7 > 3) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } else if(!var6 && !this.canBlockCatchFire(var1, var2, var3 - 1, var4) && var7 == 15 && var5.nextInt(4) == 0) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } else { + if(var7 % 2 == 0 && var7 > 2) { + this.tryToCatchBlockOnFire(var1, var2 + 1, var3, var4, 300, var5); + this.tryToCatchBlockOnFire(var1, var2 - 1, var3, var4, 300, var5); + this.tryToCatchBlockOnFire(var1, var2, var3 - 1, var4, 250, var5); + this.tryToCatchBlockOnFire(var1, var2, var3 + 1, var4, 250, var5); + this.tryToCatchBlockOnFire(var1, var2, var3, var4 - 1, 300, var5); + this.tryToCatchBlockOnFire(var1, var2, var3, var4 + 1, 300, var5); + + for(int var8 = var2 - 1; var8 <= var2 + 1; ++var8) { + for(int var9 = var4 - 1; var9 <= var4 + 1; ++var9) { + for(int var10 = var3 - 1; var10 <= var3 + 4; ++var10) { + if(var8 != var2 || var10 != var3 || var9 != var4) { + int var11 = 100; + if(var10 > var3 + 1) { + var11 += (var10 - (var3 + 1)) * 100; + } + + int var12 = this.getChanceOfNeighborsEncouragingFire(var1, var8, var10, var9); + if(var12 > 0 && var5.nextInt(var11) <= var12) { + var1.setBlockWithNotify(var8, var10, var9, this.blockID); + } + } + } + } + } + } + + } + } + + private void tryToCatchBlockOnFire(World var1, int var2, int var3, int var4, int var5, Random var6) { + int var7 = this.abilityToCatchFire[var1.getBlockId(var2, var3, var4)]; + if(var6.nextInt(var5) < var7) { + boolean var8 = var1.getBlockId(var2, var3, var4) == Block.tnt.blockID; + if(var6.nextInt(2) == 0) { + var1.setBlockWithNotify(var2, var3, var4, this.blockID); + } else { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + if(var8) { + Block.tnt.onBlockDestroyedByPlayer(var1, var2, var3, var4, 0); + } + } + + } + + private boolean func_268_g(World var1, int var2, int var3, int var4) { + return this.canBlockCatchFire(var1, var2 + 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2 - 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 - 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 + 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3, var4 - 1) ? true : this.canBlockCatchFire(var1, var2, var3, var4 + 1))))); + } + + private int getChanceOfNeighborsEncouragingFire(World var1, int var2, int var3, int var4) { + byte var5 = 0; + if(var1.getBlockId(var2, var3, var4) != 0) { + return 0; + } else { + int var6 = this.getChanceToEncourageFire(var1, var2 + 1, var3, var4, var5); + var6 = this.getChanceToEncourageFire(var1, var2 - 1, var3, var4, var6); + var6 = this.getChanceToEncourageFire(var1, var2, var3 - 1, var4, var6); + var6 = this.getChanceToEncourageFire(var1, var2, var3 + 1, var4, var6); + var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 - 1, var6); + var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 + 1, var6); + return var6; + } + } + + public boolean isCollidable() { + return false; + } + + public boolean canBlockCatchFire(IBlockAccess var1, int var2, int var3, int var4) { + return this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)] > 0; + } + + public int getChanceToEncourageFire(World var1, int var2, int var3, int var4, int var5) { + int var6 = this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)]; + return var6 > var5 ? var6 : var5; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2, var3 - 1, var4) || this.func_268_g(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4) && !this.func_268_g(var1, var2, var3, var4)) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(var1.getBlockId(var2, var3 - 1, var4) != Block.obsidian.blockID || !Block.portal.tryToCreatePortal(var1, var2, var3, var4)) { + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4) && !this.func_268_g(var1, var2, var3, var4)) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } else { + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFlower.java b/minecraft_server/src/net/minecraft/src/BlockFlower.java new file mode 100644 index 0000000..c3e1abe --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFlower.java @@ -0,0 +1,50 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockFlower extends Block { + protected BlockFlower(int var1, int var2) { + super(var1, Material.plants); + this.blockIndexInTexture = var2; + this.setTickOnLoad(true); + float var3 = 0.2F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 3.0F, 0.5F + var3); + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); + } + + protected boolean canThisPlantGrowOnThisBlockID(int var1) { + return var1 == Block.grass.blockID || var1 == Block.dirt.blockID || var1 == Block.tilledField.blockID; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + this.func_276_g(var1, var2, var3, var4); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + this.func_276_g(var1, var2, var3, var4); + } + + protected final void func_276_g(World var1, int var2, int var3, int var4) { + if(!this.canBlockStay(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public boolean canBlockStay(World var1, int var2, int var3, int var4) { + return (var1.getBlockLightValue(var2, var3, var4) >= 8 || var1.canBlockSeeTheSky(var2, var3, var4)) && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFlowing.java b/minecraft_server/src/net/minecraft/src/BlockFlowing.java new file mode 100644 index 0000000..68d6f61 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFlowing.java @@ -0,0 +1,263 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockFlowing extends BlockFluids { + int field_659_a = 0; + boolean[] field_658_b = new boolean[4]; + int[] field_660_c = new int[4]; + + protected BlockFlowing(int var1, Material var2) { + super(var1, var2); + } + + private void func_15003_i(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + var1.func_470_a(var2, var3, var4, this.blockID + 1, var5); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.func_521_f(var2, var3, var4); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + int var6 = this.func_301_g(var1, var2, var3, var4); + byte var7 = 1; + if(this.blockMaterial == Material.lava && !var1.field_4272_q.field_6166_d) { + var7 = 2; + } + + boolean var8 = true; + int var10; + if(var6 > 0) { + byte var9 = -100; + this.field_659_a = 0; + int var12 = this.func_307_e(var1, var2 - 1, var3, var4, var9); + var12 = this.func_307_e(var1, var2 + 1, var3, var4, var12); + var12 = this.func_307_e(var1, var2, var3, var4 - 1, var12); + var12 = this.func_307_e(var1, var2, var3, var4 + 1, var12); + var10 = var12 + var7; + if(var10 >= 8 || var12 < 0) { + var10 = -1; + } + + if(this.func_301_g(var1, var2, var3 + 1, var4) >= 0) { + int var11 = this.func_301_g(var1, var2, var3 + 1, var4); + if(var11 >= 8) { + var10 = var11; + } else { + var10 = var11 + 8; + } + } + + if(this.field_659_a >= 2 && this.blockMaterial == Material.water) { + if(var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var10 = 0; + } else if(var1.getBlockMaterial(var2, var3 - 1, var4) == this.blockMaterial && var1.getBlockMetadata(var2, var3, var4) == 0) { + var10 = 0; + } + } + + if(this.blockMaterial == Material.lava && var6 < 8 && var10 < 8 && var10 > var6 && var5.nextInt(4) != 0) { + var10 = var6; + var8 = false; + } + + if(var10 != var6) { + var6 = var10; + if(var10 < 0) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } else { + var1.setBlockMetadataWithNotify(var2, var3, var4, var10); + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + } + } else if(var8) { + this.func_15003_i(var1, var2, var3, var4); + } + } else { + this.func_15003_i(var1, var2, var3, var4); + } + + if(this.func_312_l(var1, var2, var3 - 1, var4)) { + if(var6 >= 8) { + var1.func_507_b(var2, var3 - 1, var4, this.blockID, var6); + } else { + var1.func_507_b(var2, var3 - 1, var4, this.blockID, var6 + 8); + } + } else if(var6 >= 0 && (var6 == 0 || this.func_309_k(var1, var2, var3 - 1, var4))) { + boolean[] var13 = this.func_4035_j(var1, var2, var3, var4); + var10 = var6 + var7; + if(var6 >= 8) { + var10 = 1; + } + + if(var10 >= 8) { + return; + } + + if(var13[0]) { + this.func_311_f(var1, var2 - 1, var3, var4, var10); + } + + if(var13[1]) { + this.func_311_f(var1, var2 + 1, var3, var4, var10); + } + + if(var13[2]) { + this.func_311_f(var1, var2, var3, var4 - 1, var10); + } + + if(var13[3]) { + this.func_311_f(var1, var2, var3, var4 + 1, var10); + } + } + + } + + private void func_311_f(World var1, int var2, int var3, int var4, int var5) { + if(this.func_312_l(var1, var2, var3, var4)) { + int var6 = var1.getBlockId(var2, var3, var4); + if(var6 > 0) { + if(this.blockMaterial == Material.lava) { + this.func_300_h(var1, var2, var3, var4); + } else { + Block.blocksList[var6].dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + } + } + + var1.func_507_b(var2, var3, var4, this.blockID, var5); + } + + } + + private int func_4034_a(World var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = 1000; + + for(int var8 = 0; var8 < 4; ++var8) { + if((var8 != 0 || var6 != 1) && (var8 != 1 || var6 != 0) && (var8 != 2 || var6 != 3) && (var8 != 3 || var6 != 2)) { + int var9 = var2; + int var11 = var4; + if(var8 == 0) { + var9 = var2 - 1; + } + + if(var8 == 1) { + ++var9; + } + + if(var8 == 2) { + var11 = var4 - 1; + } + + if(var8 == 3) { + ++var11; + } + + if(!this.func_309_k(var1, var9, var3, var11) && (var1.getBlockMaterial(var9, var3, var11) != this.blockMaterial || var1.getBlockMetadata(var9, var3, var11) != 0)) { + if(!this.func_309_k(var1, var9, var3 - 1, var11)) { + return var5; + } + + if(var5 < 4) { + int var12 = this.func_4034_a(var1, var9, var3, var11, var5 + 1, var8); + if(var12 < var7) { + var7 = var12; + } + } + } + } + } + + return var7; + } + + private boolean[] func_4035_j(World var1, int var2, int var3, int var4) { + int var5; + int var6; + for(var5 = 0; var5 < 4; ++var5) { + this.field_660_c[var5] = 1000; + var6 = var2; + int var8 = var4; + if(var5 == 0) { + var6 = var2 - 1; + } + + if(var5 == 1) { + ++var6; + } + + if(var5 == 2) { + var8 = var4 - 1; + } + + if(var5 == 3) { + ++var8; + } + + if(!this.func_309_k(var1, var6, var3, var8) && (var1.getBlockMaterial(var6, var3, var8) != this.blockMaterial || var1.getBlockMetadata(var6, var3, var8) != 0)) { + if(!this.func_309_k(var1, var6, var3 - 1, var8)) { + this.field_660_c[var5] = 0; + } else { + this.field_660_c[var5] = this.func_4034_a(var1, var6, var3, var8, 1, var5); + } + } + } + + var5 = this.field_660_c[0]; + + for(var6 = 1; var6 < 4; ++var6) { + if(this.field_660_c[var6] < var5) { + var5 = this.field_660_c[var6]; + } + } + + for(var6 = 0; var6 < 4; ++var6) { + this.field_658_b[var6] = this.field_660_c[var6] == var5; + } + + return this.field_658_b; + } + + private boolean func_309_k(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3, var4); + if(var5 != Block.doorWood.blockID && var5 != Block.doorSteel.blockID && var5 != Block.signPost.blockID && var5 != Block.ladder.blockID && var5 != Block.reed.blockID) { + if(var5 == 0) { + return false; + } else { + Material var6 = Block.blocksList[var5].blockMaterial; + return var6.func_216_a(); + } + } else { + return true; + } + } + + protected int func_307_e(World var1, int var2, int var3, int var4, int var5) { + int var6 = this.func_301_g(var1, var2, var3, var4); + if(var6 < 0) { + return var5; + } else { + if(var6 == 0) { + ++this.field_659_a; + } + + if(var6 >= 8) { + var6 = 0; + } + + return var5 >= 0 && var6 >= var5 ? var5 : var6; + } + } + + private boolean func_312_l(World var1, int var2, int var3, int var4) { + Material var5 = var1.getBlockMaterial(var2, var3, var4); + return var5 == this.blockMaterial ? false : (var5 == Material.lava ? false : !this.func_309_k(var1, var2, var3, var4)); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + super.onBlockAdded(var1, var2, var3, var4); + if(var1.getBlockId(var2, var3, var4) == this.blockID) { + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFluids.java b/minecraft_server/src/net/minecraft/src/BlockFluids.java new file mode 100644 index 0000000..7161b77 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFluids.java @@ -0,0 +1,221 @@ +package net.minecraft.src; + +import java.util.Random; + +public abstract class BlockFluids extends Block { + protected BlockFluids(int var1, Material var2) { + super(var1, (var2 == Material.lava ? 14 : 12) * 16 + 13, var2); + float var3 = 0.0F; + float var4 = 0.0F; + this.setBlockBounds(0.0F + var4, 0.0F + var3, 0.0F + var4, 1.0F + var4, 1.0F + var3, 1.0F + var4); + this.setTickOnLoad(true); + } + + public static float setFluidHeight(int var0) { + if(var0 >= 8) { + var0 = 0; + } + + float var1 = (float)(var0 + 1) / 9.0F; + return var1; + } + + public int getBlockTextureFromSide(int var1) { + return var1 != 0 && var1 != 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture; + } + + protected int func_301_g(World var1, int var2, int var3, int var4) { + return var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial ? -1 : var1.getBlockMetadata(var2, var3, var4); + } + + protected int func_303_b(IBlockAccess var1, int var2, int var3, int var4) { + if(var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial) { + return -1; + } else { + int var5 = var1.getBlockMetadata(var2, var3, var4); + if(var5 >= 8) { + var5 = 0; + } + + return var5; + } + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canCollideCheck(int var1, boolean var2) { + return var2 && var1 == 0; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + Material var6 = var1.getBlockMaterial(var2, var3, var4); + return var6 == this.blockMaterial ? false : (var6 == Material.ice ? false : (var5 == 1 ? true : super.isSideInsideCoordinate(var1, var2, var3, var4, var5))); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public int idDropped(int var1, Random var2) { + return 0; + } + + public int quantityDropped(Random var1) { + return 0; + } + + private Vec3D func_298_c(IBlockAccess var1, int var2, int var3, int var4) { + Vec3D var5 = Vec3D.createVector(0.0D, 0.0D, 0.0D); + int var6 = this.func_303_b(var1, var2, var3, var4); + + for(int var7 = 0; var7 < 4; ++var7) { + int var8 = var2; + int var10 = var4; + if(var7 == 0) { + var8 = var2 - 1; + } + + if(var7 == 1) { + var10 = var4 - 1; + } + + if(var7 == 2) { + ++var8; + } + + if(var7 == 3) { + ++var10; + } + + int var11 = this.func_303_b(var1, var8, var3, var10); + int var12; + if(var11 < 0) { + if(!var1.getBlockMaterial(var8, var3, var10).func_218_c()) { + var11 = this.func_303_b(var1, var8, var3 - 1, var10); + if(var11 >= 0) { + var12 = var11 - (var6 - 8); + var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12)); + } + } + } else if(var11 >= 0) { + var12 = var11 - var6; + var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12)); + } + } + + if(var1.getBlockMetadata(var2, var3, var4) >= 8) { + boolean var13 = false; + if(var13 || this.isSideInsideCoordinate(var1, var2, var3, var4 - 1, 2)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2, var3, var4 + 1, 3)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2 - 1, var3, var4, 4)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2 + 1, var3, var4, 5)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2, var3 + 1, var4 - 1, 2)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2, var3 + 1, var4 + 1, 3)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2 - 1, var3 + 1, var4, 4)) { + var13 = true; + } + + if(var13 || this.isSideInsideCoordinate(var1, var2 + 1, var3 + 1, var4, 5)) { + var13 = true; + } + + if(var13) { + var5 = var5.normalize().addVector(0.0D, -6.0D, 0.0D); + } + } + + var5 = var5.normalize(); + return var5; + } + + public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { + Vec3D var7 = this.func_298_c(var1, var2, var3, var4); + var6.xCoord += var7.xCoord; + var6.yCoord += var7.yCoord; + var6.zCoord += var7.zCoord; + } + + public int tickRate() { + return this.blockMaterial == Material.water ? 5 : (this.blockMaterial == Material.lava ? 30 : 0); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + super.updateTick(var1, var2, var3, var4, var5); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + this.func_302_i(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + this.func_302_i(var1, var2, var3, var4); + } + + private void func_302_i(World var1, int var2, int var3, int var4) { + if(var1.getBlockId(var2, var3, var4) == this.blockID) { + if(this.blockMaterial == Material.lava) { + boolean var5 = false; + if(var5 || var1.getBlockMaterial(var2, var3, var4 - 1) == Material.water) { + var5 = true; + } + + if(var5 || var1.getBlockMaterial(var2, var3, var4 + 1) == Material.water) { + var5 = true; + } + + if(var5 || var1.getBlockMaterial(var2 - 1, var3, var4) == Material.water) { + var5 = true; + } + + if(var5 || var1.getBlockMaterial(var2 + 1, var3, var4) == Material.water) { + var5 = true; + } + + if(var5 || var1.getBlockMaterial(var2, var3 + 1, var4) == Material.water) { + var5 = true; + } + + if(var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 == 0) { + var1.setBlockWithNotify(var2, var3, var4, Block.obsidian.blockID); + } else if(var6 <= 4) { + var1.setBlockWithNotify(var2, var3, var4, Block.cobblestone.blockID); + } + + this.func_300_h(var1, var2, var3, var4); + } + } + + } + } + + protected void func_300_h(World var1, int var2, int var3, int var4) { + var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "random.fizz", 0.5F, 2.6F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.8F); + + for(int var5 = 0; var5 < 8; ++var5) { + var1.spawnParticle("largesmoke", (double)var2 + Math.random(), (double)var3 + 1.2D, (double)var4 + Math.random(), 0.0D, 0.0D, 0.0D); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockFurnace.java b/minecraft_server/src/net/minecraft/src/BlockFurnace.java new file mode 100644 index 0000000..a7070dc --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockFurnace.java @@ -0,0 +1,94 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockFurnace extends BlockContainer { + private final boolean field_655_a; + + protected BlockFurnace(int var1, boolean var2) { + super(var1, Material.rock); + this.field_655_a = var2; + this.blockIndexInTexture = 45; + } + + public int idDropped(int var1, Random var2) { + return Block.stoneOvenIdle.blockID; + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + super.onBlockAdded(var1, var2, var3, var4); + this.func_296_g(var1, var2, var3, var4); + } + + private void func_296_g(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3, var4 - 1); + int var6 = var1.getBlockId(var2, var3, var4 + 1); + int var7 = var1.getBlockId(var2 - 1, var3, var4); + int var8 = var1.getBlockId(var2 + 1, var3, var4); + byte var9 = 3; + if(Block.field_540_p[var5] && !Block.field_540_p[var6]) { + var9 = 3; + } + + if(Block.field_540_p[var6] && !Block.field_540_p[var5]) { + var9 = 2; + } + + if(Block.field_540_p[var7] && !Block.field_540_p[var8]) { + var9 = 5; + } + + if(Block.field_540_p[var8] && !Block.field_540_p[var7]) { + var9 = 4; + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var9); + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? Block.stone.blockID : (var1 == 0 ? Block.stone.blockID : (var1 == 3 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture)); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + TileEntityFurnace var6 = (TileEntityFurnace)var1.getBlock(var2, var3, var4); + var5.func_170_a(var6); + return true; + } + + public static void func_295_a(boolean var0, World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + TileEntity var6 = var1.getBlock(var2, var3, var4); + if(var0) { + var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenActive.blockID); + } else { + var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenIdle.blockID); + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var5); + var1.func_473_a(var2, var3, var4, var6); + } + + protected TileEntity func_294_a_() { + return new TileEntityFurnace(); + } + + public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) { + int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + if(var6 == 0) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 2); + } + + if(var6 == 1) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 5); + } + + if(var6 == 2) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 3); + } + + if(var6 == 3) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 4); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockGlass.java b/minecraft_server/src/net/minecraft/src/BlockGlass.java new file mode 100644 index 0000000..9101b2a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockGlass.java @@ -0,0 +1,13 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockGlass extends BlockBreakable { + public BlockGlass(int var1, int var2, Material var3, boolean var4) { + super(var1, var2, var3, var4); + } + + public int quantityDropped(Random var1) { + return 0; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockGrass.java b/minecraft_server/src/net/minecraft/src/BlockGrass.java new file mode 100644 index 0000000..bca87ca --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockGrass.java @@ -0,0 +1,33 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockGrass extends Block { + protected BlockGrass(int var1) { + super(var1, Material.ground); + this.blockIndexInTexture = 3; + this.setTickOnLoad(true); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getBlockLightValue(var2, var3 + 1, var4) < 4 && var1.getBlockMaterial(var2, var3 + 1, var4).getCanBlockGrass()) { + if(var5.nextInt(4) != 0) { + return; + } + + var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); + } else if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) { + int var6 = var2 + var5.nextInt(3) - 1; + int var7 = var3 + var5.nextInt(5) - 3; + int var8 = var4 + var5.nextInt(3) - 1; + if(var1.getBlockId(var6, var7, var8) == Block.dirt.blockID && var1.getBlockLightValue(var6, var7 + 1, var8) >= 4 && !var1.getBlockMaterial(var6, var7 + 1, var8).getCanBlockGrass()) { + var1.setBlockWithNotify(var6, var7, var8, Block.grass.blockID); + } + } + + } + + public int idDropped(int var1, Random var2) { + return Block.dirt.idDropped(0, var2); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockGravel.java b/minecraft_server/src/net/minecraft/src/BlockGravel.java new file mode 100644 index 0000000..9b56bb4 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockGravel.java @@ -0,0 +1,13 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockGravel extends BlockSand { + public BlockGravel(int var1, int var2) { + super(var1, var2); + } + + public int idDropped(int var1, Random var2) { + return var2.nextInt(10) == 0 ? Item.flint.swiftedIndex : this.blockID; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockIce.java b/minecraft_server/src/net/minecraft/src/BlockIce.java new file mode 100644 index 0000000..d48062b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockIce.java @@ -0,0 +1,35 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockIce extends BlockBreakable { + public BlockIce(int var1, int var2) { + super(var1, var2, Material.ice, false); + this.slipperiness = 0.98F; + this.setTickOnLoad(true); + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return super.isSideInsideCoordinate(var1, var2, var3, var4, 1 - var5); + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + Material var5 = var1.getBlockMaterial(var2, var3 - 1, var4); + if(var5.func_218_c() || var5.getIsLiquid()) { + var1.setBlockWithNotify(var2, var3, var4, Block.waterStill.blockID); + } + + } + + public int quantityDropped(Random var1) { + return 0; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11 - Block.lightOpacity[this.blockID]) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, Block.waterMoving.blockID); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockJukeBox.java b/minecraft_server/src/net/minecraft/src/BlockJukeBox.java new file mode 100644 index 0000000..d3e8cbc --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockJukeBox.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class BlockJukeBox extends Block { + protected BlockJukeBox(int var1, int var2) { + super(var1, var2, Material.wood); + } + + public int getBlockTextureFromSide(int var1) { + return this.blockIndexInTexture + (var1 == 1 ? 1 : 0); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 > 0) { + this.ejectRecord(var1, var2, var3, var4, var6); + return true; + } else { + return false; + } + } + + public void ejectRecord(World var1, int var2, int var3, int var4, int var5) { + var1.playRecord((String)null, var2, var3, var4); + var1.setBlockMetadataWithNotify(var2, var3, var4, 0); + int var6 = Item.record13.swiftedIndex + var5 - 1; + float var7 = 0.7F; + double var8 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; + double var10 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.2D + 0.6D; + double var12 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; + EntityItem var14 = new EntityItem(var1, (double)var2 + var8, (double)var3 + var10, (double)var4 + var12, new ItemStack(var6)); + var14.field_433_ad = 10; + var1.entityJoinedWorld(var14); + } + + public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) { + if(!var1.multiplayerWorld) { + if(var5 > 0) { + this.ejectRecord(var1, var2, var3, var4, var5); + } + + super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLadder.java b/minecraft_server/src/net/minecraft/src/BlockLadder.java new file mode 100644 index 0000000..b4e807d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLadder.java @@ -0,0 +1,91 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockLadder extends Block { + protected BlockLadder(int var1, int var2) { + super(var1, var2, Material.circuits); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + float var6 = 2.0F / 16.0F; + if(var5 == 2) { + this.setBlockBounds(0.0F, 0.0F, 1.0F - var6, 1.0F, 1.0F, 1.0F); + } + + if(var5 == 3) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var6); + } + + if(var5 == 4) { + this.setBlockBounds(1.0F - var6, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + if(var5 == 5) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, var6, 1.0F, 1.0F); + } + + return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2 - 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2 + 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 - 1) ? true : var1.doesBlockAllowAttachment(var2, var3, var4 + 1))); + } + + public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 == 0 || var5 == 2) && var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var6 = 2; + } + + if((var6 == 0 || var5 == 3) && var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var6 = 3; + } + + if((var6 == 0 || var5 == 4) && var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var6 = 4; + } + + if((var6 == 0 || var5 == 5) && var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var6 = 5; + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + boolean var7 = false; + if(var6 == 2 && var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var7 = true; + } + + if(var6 == 3 && var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var7 = true; + } + + if(var6 == 4 && var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var7 = true; + } + + if(var6 == 5 && var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var7 = true; + } + + if(!var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var6); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + } + + public int quantityDropped(Random var1) { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLeaves.java b/minecraft_server/src/net/minecraft/src/BlockLeaves.java new file mode 100644 index 0000000..46cfa28 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLeaves.java @@ -0,0 +1,116 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockLeaves extends BlockLeavesBase { + private int baseIndexInPNG; + private int field_663_c = 0; + + protected BlockLeaves(int var1, int var2) { + super(var1, var2, Material.field_4218_h, false); + this.baseIndexInPNG = var2; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(this == null) { + this.field_663_c = 0; + this.func_316_g(var1, var2, var3, var4); + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + } + } + + public void func_6089_e(World var1, int var2, int var3, int var4, int var5) { + if(var1.getBlockId(var2, var3, var4) == this.blockID) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 != 0 && var6 == var5 - 1) { + this.func_316_g(var1, var2, var3, var4); + } + } + } + + public void func_316_g(World var1, int var2, int var3, int var4) { + if(this == null) { + if(this.field_663_c++ < 100) { + int var5 = var1.getBlockMaterial(var2, var3 - 1, var4).func_216_a() ? 16 : 0; + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 == 0) { + var6 = 1; + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + } + + var5 = this.func_6090_f(var1, var2, var3 - 1, var4, var5); + var5 = this.func_6090_f(var1, var2, var3, var4 - 1, var5); + var5 = this.func_6090_f(var1, var2, var3, var4 + 1, var5); + var5 = this.func_6090_f(var1, var2 - 1, var3, var4, var5); + var5 = this.func_6090_f(var1, var2 + 1, var3, var4, var5); + int var7 = var5 - 1; + if(var7 < 10) { + var7 = 1; + } + + if(var7 != var6) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var7); + this.func_6089_e(var1, var2, var3 - 1, var4, var6); + this.func_6089_e(var1, var2, var3 + 1, var4, var6); + this.func_6089_e(var1, var2, var3, var4 - 1, var6); + this.func_6089_e(var1, var2, var3, var4 + 1, var6); + this.func_6089_e(var1, var2 - 1, var3, var4, var6); + this.func_6089_e(var1, var2 + 1, var3, var4, var6); + } + + } + } + } + + private int func_6090_f(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockId(var2, var3, var4); + if(var6 == Block.wood.blockID) { + return 16; + } else { + if(var6 == this.blockID) { + int var7 = var1.getBlockMetadata(var2, var3, var4); + if(var7 != 0 && var7 > var5) { + return var7; + } + } + + return var5; + } + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(this == null) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 == 0) { + this.field_663_c = 0; + this.func_316_g(var1, var2, var3, var4); + } else if(var6 == 1) { + this.func_6091_h(var1, var2, var3, var4); + } else if(var5.nextInt(10) == 0) { + this.func_316_g(var1, var2, var3, var4); + } + + } + } + + private void func_6091_h(World var1, int var2, int var3, int var4) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + public int quantityDropped(Random var1) { + return var1.nextInt(20) == 0 ? 1 : 0; + } + + public int idDropped(int var1, Random var2) { + return Block.sapling.blockID; + } + + public boolean allowsAttachment() { + return !this.graphicsLevel; + } + + public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { + super.onEntityWalking(var1, var2, var3, var4, var5); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLeavesBase.java b/minecraft_server/src/net/minecraft/src/BlockLeavesBase.java new file mode 100644 index 0000000..75ac015 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLeavesBase.java @@ -0,0 +1,19 @@ +package net.minecraft.src; + +public class BlockLeavesBase extends Block { + protected boolean graphicsLevel; + + protected BlockLeavesBase(int var1, int var2, Material var3, boolean var4) { + super(var1, var2, var3); + this.graphicsLevel = var4; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockId(var2, var3, var4); + return !this.graphicsLevel && var6 == this.blockID ? false : super.isSideInsideCoordinate(var1, var2, var3, var4, var5); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLever.java b/minecraft_server/src/net/minecraft/src/BlockLever.java new file mode 100644 index 0000000..aabef18 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLever.java @@ -0,0 +1,192 @@ +package net.minecraft.src; + +public class BlockLever extends Block { + protected BlockLever(int var1, int var2) { + super(var1, var2, Material.circuits); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2 - 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2 + 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 - 1) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 + 1) ? true : var1.doesBlockAllowAttachment(var2, var3 - 1, var4)))); + } + + public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + int var7 = var6 & 8; + var6 &= 7; + if(var5 == 1 && var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var6 = 5 + var1.rand.nextInt(2); + } + + if(var5 == 2 && var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var6 = 4; + } + + if(var5 == 3 && var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var6 = 3; + } + + if(var5 == 4 && var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var6 = 2; + } + + if(var5 == 5 && var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var6 = 1; + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + } else if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 2); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 3); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 4); + } else if(var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 5 + var1.rand.nextInt(2)); + } + + this.func_274_g(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(this.func_274_g(var1, var2, var3, var4)) { + int var6 = var1.getBlockMetadata(var2, var3, var4) & 7; + boolean var7 = false; + if(!var1.doesBlockAllowAttachment(var2 - 1, var3, var4) && var6 == 1) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2 + 1, var3, var4) && var6 == 2) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 - 1) && var6 == 3) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 + 1) && var6 == 4) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4) && var6 == 5) { + var7 = true; + } + + if(var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } + + } + + private boolean func_274_g(World var1, int var2, int var3, int var4) { + if(!this.canPlaceBlockAt(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + return false; + } else { + return true; + } + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4) & 7; + float var6 = 3.0F / 16.0F; + if(var5 == 1) { + this.setBlockBounds(0.0F, 0.2F, 0.5F - var6, var6 * 2.0F, 0.8F, 0.5F + var6); + } else if(var5 == 2) { + this.setBlockBounds(1.0F - var6 * 2.0F, 0.2F, 0.5F - var6, 1.0F, 0.8F, 0.5F + var6); + } else if(var5 == 3) { + this.setBlockBounds(0.5F - var6, 0.2F, 0.0F, 0.5F + var6, 0.8F, var6 * 2.0F); + } else if(var5 == 4) { + this.setBlockBounds(0.5F - var6, 0.2F, 1.0F - var6 * 2.0F, 0.5F + var6, 0.8F, 1.0F); + } else { + var6 = 0.25F; + this.setBlockBounds(0.5F - var6, 0.0F, 0.5F - var6, 0.5F + var6, 0.6F, 0.5F + var6); + } + + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.blockActivated(var1, var2, var3, var4, var5); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + if(var1.multiplayerWorld) { + return true; + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + int var7 = var6 & 7; + int var8 = 8 - (var6 & 8); + var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + var8); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, var8 > 0 ? 0.6F : 0.5F); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + if(var7 == 1) { + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + } else if(var7 == 2) { + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + } else if(var7 == 3) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + } else if(var7 == 4) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } else { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + + return true; + } + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + if((var5 & 8) > 0) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + int var6 = var5 & 7; + if(var6 == 1) { + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + } else if(var6 == 2) { + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + } else if(var6 == 3) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + } else if(var6 == 4) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } else { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + } + + super.onBlockRemoval(var1, var2, var3, var4); + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return (var1.getBlockMetadata(var2, var3, var4) & 8) > 0; + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if((var6 & 8) == 0) { + return false; + } else { + int var7 = var6 & 7; + return var7 == 5 && var5 == 1 ? true : (var7 == 4 && var5 == 2 ? true : (var7 == 3 && var5 == 3 ? true : (var7 == 2 && var5 == 4 ? true : var7 == 1 && var5 == 5))); + } + } + + public boolean canProvidePower() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLightStone.java b/minecraft_server/src/net/minecraft/src/BlockLightStone.java new file mode 100644 index 0000000..b33203c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLightStone.java @@ -0,0 +1,13 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockLightStone extends Block { + public BlockLightStone(int var1, int var2, Material var3) { + super(var1, var2, var3); + } + + public int idDropped(int var1, Random var2) { + return Item.lightStoneDust.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockLog.java b/minecraft_server/src/net/minecraft/src/BlockLog.java new file mode 100644 index 0000000..161c1ae --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockLog.java @@ -0,0 +1,22 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockLog extends Block { + protected BlockLog(int var1) { + super(var1, Material.wood); + this.blockIndexInTexture = 20; + } + + public int quantityDropped(Random var1) { + return 1; + } + + public int idDropped(int var1, Random var2) { + return Block.wood.blockID; + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? 21 : (var1 == 0 ? 21 : 20); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockMinecartTrack.java b/minecraft_server/src/net/minecraft/src/BlockMinecartTrack.java new file mode 100644 index 0000000..4779247 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockMinecartTrack.java @@ -0,0 +1,89 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockMinecartTrack extends Block { + protected BlockMinecartTrack(int var1, int var2) { + super(var1, var2, Material.circuits); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { + this.setBlockBoundsBasedOnState(var1, var2, var3, var4); + return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + if(var5 >= 2 && var5 <= 5) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 10.0F / 16.0F, 1.0F); + } else { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F); + } + + } + + public int quantityDropped(Random var1) { + return 1; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2, var3 - 1, var4); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(!var1.multiplayerWorld) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 15); + this.func_4038_g(var1, var2, var3, var4); + } + + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(!var1.multiplayerWorld) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + boolean var7 = false; + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var7 = true; + } + + if(var6 == 2 && !var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var7 = true; + } + + if(var6 == 3 && !var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var7 = true; + } + + if(var6 == 4 && !var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var7 = true; + } + + if(var6 == 5 && !var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var7 = true; + } + + if(var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } else if(var5 > 0 && Block.blocksList[var5].canProvidePower() && MinecartTrackLogic.func_600_a(new MinecartTrackLogic(this, var1, var2, var3, var4)) == 3) { + this.func_4038_g(var1, var2, var3, var4); + } + + } + } + + private void func_4038_g(World var1, int var2, int var3, int var4) { + if(!var1.multiplayerWorld) { + (new MinecartTrackLogic(this, var1, var2, var3, var4)).func_596_a(var1.isBlockIndirectlyGettingPowered(var2, var3, var4)); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockMobSpawner.java b/minecraft_server/src/net/minecraft/src/BlockMobSpawner.java new file mode 100644 index 0000000..7393e1b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockMobSpawner.java @@ -0,0 +1,25 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockMobSpawner extends BlockContainer { + protected BlockMobSpawner(int var1, int var2) { + super(var1, var2, Material.rock); + } + + protected TileEntity func_294_a_() { + return new TileEntityMobSpawner(); + } + + public int idDropped(int var1, Random var2) { + return 0; + } + + public int quantityDropped(Random var1) { + return 0; + } + + public boolean allowsAttachment() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockMushroom.java b/minecraft_server/src/net/minecraft/src/BlockMushroom.java new file mode 100644 index 0000000..7ea5402 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockMushroom.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +public class BlockMushroom extends BlockFlower { + protected BlockMushroom(int var1, int var2) { + super(var1, var2); + float var3 = 0.2F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3); + } + + protected boolean canThisPlantGrowOnThisBlockID(int var1) { + return Block.field_540_p[var1]; + } + + public boolean canBlockStay(World var1, int var2, int var3, int var4) { + return var1.getBlockLightValue(var2, var3, var4) <= 13 && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockObsidian.java b/minecraft_server/src/net/minecraft/src/BlockObsidian.java new file mode 100644 index 0000000..bb6bcf1 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockObsidian.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockObsidian extends BlockStone { + public BlockObsidian(int var1, int var2) { + super(var1, var2); + } + + public int quantityDropped(Random var1) { + return 1; + } + + public int idDropped(int var1, Random var2) { + return Block.obsidian.blockID; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockOre.java b/minecraft_server/src/net/minecraft/src/BlockOre.java new file mode 100644 index 0000000..663ff3c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockOre.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockOre extends Block { + public BlockOre(int var1, int var2) { + super(var1, var2, Material.rock); + } + + public int idDropped(int var1, Random var2) { + return this.blockID == Block.oreCoal.blockID ? Item.coal.swiftedIndex : (this.blockID == Block.oreDiamond.blockID ? Item.diamond.swiftedIndex : this.blockID); + } + + public int quantityDropped(Random var1) { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockOreBlock.java b/minecraft_server/src/net/minecraft/src/BlockOreBlock.java new file mode 100644 index 0000000..d8464b3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockOreBlock.java @@ -0,0 +1,12 @@ +package net.minecraft.src; + +public class BlockOreBlock extends Block { + public BlockOreBlock(int var1, int var2) { + super(var1, Material.iron); + this.blockIndexInTexture = var2; + } + + public int getBlockTextureFromSide(int var1) { + return this.blockIndexInTexture - 16; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockPortal.java b/minecraft_server/src/net/minecraft/src/BlockPortal.java new file mode 100644 index 0000000..fc03147 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockPortal.java @@ -0,0 +1,130 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockPortal extends BlockBreakable { + public BlockPortal(int var1, int var2) { + super(var1, var2, Material.field_4212_x, false); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + float var5; + float var6; + if(var1.getBlockId(var2 - 1, var3, var4) != this.blockID && var1.getBlockId(var2 + 1, var3, var4) != this.blockID) { + var5 = 2.0F / 16.0F; + var6 = 0.5F; + this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6); + } else { + var5 = 0.5F; + var6 = 2.0F / 16.0F; + this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6); + } + + } + + public boolean allowsAttachment() { + return false; + } + + public boolean tryToCreatePortal(World var1, int var2, int var3, int var4) { + byte var5 = 0; + byte var6 = 0; + if(var1.getBlockId(var2 - 1, var3, var4) == Block.obsidian.blockID || var1.getBlockId(var2 + 1, var3, var4) == Block.obsidian.blockID) { + var5 = 1; + } + + if(var1.getBlockId(var2, var3, var4 - 1) == Block.obsidian.blockID || var1.getBlockId(var2, var3, var4 + 1) == Block.obsidian.blockID) { + var6 = 1; + } + + System.out.println(var5 + ", " + var6); + if(var5 == var6) { + return false; + } else { + if(var1.getBlockId(var2 - var5, var3, var4 - var6) == 0) { + var2 -= var5; + var4 -= var6; + } + + int var7; + int var8; + for(var7 = -1; var7 <= 2; ++var7) { + for(var8 = -1; var8 <= 3; ++var8) { + boolean var9 = var7 == -1 || var7 == 2 || var8 == -1 || var8 == 3; + if(var7 != -1 && var7 != 2 || var8 != -1 && var8 != 3) { + int var10 = var1.getBlockId(var2 + var5 * var7, var3 + var8, var4 + var6 * var7); + if(var9) { + if(var10 != Block.obsidian.blockID) { + return false; + } + } else if(var10 != 0 && var10 != Block.fire.blockID) { + return false; + } + } + } + } + + var1.field_808_h = true; + + for(var7 = 0; var7 < 2; ++var7) { + for(var8 = 0; var8 < 3; ++var8) { + var1.setBlockWithNotify(var2 + var5 * var7, var3 + var8, var4 + var6 * var7, Block.portal.blockID); + } + } + + var1.field_808_h = false; + return true; + } + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + byte var6 = 0; + byte var7 = 1; + if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { + var6 = 1; + var7 = 0; + } + + int var8; + for(var8 = var3; var1.getBlockId(var2, var8 - 1, var4) == this.blockID; --var8) { + } + + if(var1.getBlockId(var2, var8 - 1, var4) != Block.obsidian.blockID) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } else { + int var9; + for(var9 = 1; var9 < 4 && var1.getBlockId(var2, var8 + var9, var4) == this.blockID; ++var9) { + } + + if(var9 == 3 && var1.getBlockId(var2, var8 + var9, var4) == Block.obsidian.blockID) { + boolean var10 = var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID; + boolean var11 = var1.getBlockId(var2, var3, var4 - 1) == this.blockID || var1.getBlockId(var2, var3, var4 + 1) == this.blockID; + if(var10 && var11) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } else if((var1.getBlockId(var2 + var6, var3, var4 + var7) != Block.obsidian.blockID || var1.getBlockId(var2 - var6, var3, var4 - var7) != this.blockID) && (var1.getBlockId(var2 - var6, var3, var4 - var7) != Block.obsidian.blockID || var1.getBlockId(var2 + var6, var3, var4 + var7) != this.blockID)) { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } else { + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return true; + } + + public int quantityDropped(Random var1) { + return 0; + } + + public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { + if(!var1.multiplayerWorld) { + var5.func_4042_C(); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockPressurePlate.java b/minecraft_server/src/net/minecraft/src/BlockPressurePlate.java new file mode 100644 index 0000000..1fd833c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockPressurePlate.java @@ -0,0 +1,140 @@ +package net.minecraft.src; + +import java.util.List; +import java.util.Random; + +public class BlockPressurePlate extends Block { + private EnumMobType triggerMobType; + + protected BlockPressurePlate(int var1, int var2, EnumMobType var3) { + super(var1, var2, Material.rock); + this.triggerMobType = var3; + this.setTickOnLoad(true); + float var4 = 1.0F / 16.0F; + this.setBlockBounds(var4, 0.0F, var4, 1.0F - var4, 0.03125F, 1.0F - var4); + } + + public int tickRate() { + return 20; + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2, var3 - 1, var4); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + boolean var6 = false; + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var6 = true; + } + + if(var6) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(!var1.multiplayerWorld) { + if(var1.getBlockMetadata(var2, var3, var4) != 0) { + this.func_318_g(var1, var2, var3, var4); + } + } + } + + public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { + if(!var1.multiplayerWorld) { + if(var1.getBlockMetadata(var2, var3, var4) != 1) { + this.func_318_g(var1, var2, var3, var4); + } + } + } + + private void func_318_g(World var1, int var2, int var3, int var4) { + boolean var5 = var1.getBlockMetadata(var2, var3, var4) == 1; + boolean var6 = false; + float var7 = 2.0F / 16.0F; + List var8 = null; + if(this.triggerMobType == EnumMobType.everything) { + var8 = var1.getEntitiesWithinAABBExcludingEntity((Entity)null, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7))); + } + + if(this.triggerMobType == EnumMobType.mobs) { + var8 = var1.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7))); + } + + if(this.triggerMobType == EnumMobType.players) { + var8 = var1.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7))); + } + + if(var8.size() > 0) { + var6 = true; + } + + if(var6 && !var5) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.1D, (double)var4 + 0.5D, "random.click", 0.3F, 0.6F); + } + + if(!var6 && var5) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 0); + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.1D, (double)var4 + 0.5D, "random.click", 0.3F, 0.5F); + } + + if(var6) { + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + if(var5 > 0) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + } + + super.onBlockRemoval(var1, var2, var3, var4); + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + boolean var5 = var1.getBlockMetadata(var2, var3, var4) == 1; + float var6 = 1.0F / 16.0F; + if(var5) { + this.setBlockBounds(var6, 0.0F, var6, 1.0F - var6, 0.03125F, 1.0F - var6); + } else { + this.setBlockBounds(var6, 0.0F, var6, 1.0F - var6, 1.0F / 16.0F, 1.0F - var6); + } + + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return var1.getBlockMetadata(var2, var3, var4) > 0; + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + return var1.getBlockMetadata(var2, var3, var4) == 0 ? false : var5 == 1; + } + + public boolean canProvidePower() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockPumpkin.java b/minecraft_server/src/net/minecraft/src/BlockPumpkin.java new file mode 100644 index 0000000..dcc2af1 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockPumpkin.java @@ -0,0 +1,30 @@ +package net.minecraft.src; + +public class BlockPumpkin extends Block { + private boolean field_4086_a; + + protected BlockPumpkin(int var1, int var2, boolean var3) { + super(var1, Material.field_4213_w); + this.blockIndexInTexture = var2; + this.setTickOnLoad(true); + this.field_4086_a = var3; + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture : (var1 == 3 ? this.blockIndexInTexture + 1 + 16 : this.blockIndexInTexture + 16)); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + super.onBlockAdded(var1, var2, var3, var4); + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3, var4); + return (var5 == 0 || Block.blocksList[var5].blockMaterial.getIsLiquid()) && var1.doesBlockAllowAttachment(var2, var3 - 1, var4); + } + + public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) { + int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + var1.setBlockMetadataWithNotify(var2, var3, var4, var6); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockRedstoneOre.java b/minecraft_server/src/net/minecraft/src/BlockRedstoneOre.java new file mode 100644 index 0000000..5899894 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockRedstoneOre.java @@ -0,0 +1,97 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockRedstoneOre extends Block { + private boolean field_665_a; + + public BlockRedstoneOre(int var1, int var2, boolean var3) { + super(var1, var2, Material.rock); + if(var3) { + this.setTickOnLoad(true); + } + + this.field_665_a = var3; + } + + public int tickRate() { + return 30; + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.func_321_g(var1, var2, var3, var4); + super.onBlockClicked(var1, var2, var3, var4, var5); + } + + public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { + this.func_321_g(var1, var2, var3, var4); + super.onEntityWalking(var1, var2, var3, var4, var5); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.func_321_g(var1, var2, var3, var4); + return super.blockActivated(var1, var2, var3, var4, var5); + } + + private void func_321_g(World var1, int var2, int var3, int var4) { + this.func_320_h(var1, var2, var3, var4); + if(this.blockID == Block.oreRedstone.blockID) { + var1.setBlockWithNotify(var2, var3, var4, Block.oreRedstoneGlowing.blockID); + } + + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(this.blockID == Block.oreRedstoneGlowing.blockID) { + var1.setBlockWithNotify(var2, var3, var4, Block.oreRedstone.blockID); + } + + } + + public int idDropped(int var1, Random var2) { + return Item.redstone.swiftedIndex; + } + + public int quantityDropped(Random var1) { + return 4 + var1.nextInt(2); + } + + private void func_320_h(World var1, int var2, int var3, int var4) { + Random var5 = var1.rand; + double var6 = 1.0D / 16.0D; + + for(int var8 = 0; var8 < 6; ++var8) { + double var9 = (double)((float)var2 + var5.nextFloat()); + double var11 = (double)((float)var3 + var5.nextFloat()); + double var13 = (double)((float)var4 + var5.nextFloat()); + if(var8 == 0 && !var1.doesBlockAllowAttachment(var2, var3 + 1, var4)) { + var11 = (double)(var3 + 1) + var6; + } + + if(var8 == 1 && !var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var11 = (double)(var3 + 0) - var6; + } + + if(var8 == 2 && !var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var13 = (double)(var4 + 1) + var6; + } + + if(var8 == 3 && !var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var13 = (double)(var4 + 0) - var6; + } + + if(var8 == 4 && !var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var9 = (double)(var2 + 1) + var6; + } + + if(var8 == 5 && !var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var9 = (double)(var2 + 0) - var6; + } + + if(var9 < (double)var2 || var9 > (double)(var2 + 1) || var11 < 0.0D || var11 > (double)(var3 + 1) || var13 < (double)var4 || var13 > (double)(var4 + 1)) { + var1.spawnParticle("reddust", var9, var11, var13, 0.0D, 0.0D, 0.0D); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockRedstoneTorch.java b/minecraft_server/src/net/minecraft/src/BlockRedstoneTorch.java new file mode 100644 index 0000000..232002b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockRedstoneTorch.java @@ -0,0 +1,126 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class BlockRedstoneTorch extends BlockTorch { + private boolean torchActive = false; + private static List torchUpdates = new ArrayList(); + + private boolean func_280_a(World var1, int var2, int var3, int var4, boolean var5) { + if(var5) { + torchUpdates.add(new RedstoneUpdateInfo(var2, var3, var4, var1.worldTime)); + } + + int var6 = 0; + + for(int var7 = 0; var7 < torchUpdates.size(); ++var7) { + RedstoneUpdateInfo var8 = (RedstoneUpdateInfo)torchUpdates.get(var7); + if(var8.field_775_a == var2 && var8.field_774_b == var3 && var8.field_777_c == var4) { + ++var6; + if(var6 >= 8) { + return true; + } + } + } + + return false; + } + + protected BlockRedstoneTorch(int var1, int var2, boolean var3) { + super(var1, var2); + this.torchActive = var3; + this.setTickOnLoad(true); + } + + public int tickRate() { + return 2; + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(var1.getBlockMetadata(var2, var3, var4) == 0) { + super.onBlockAdded(var1, var2, var3, var4); + } + + if(this.torchActive) { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } + + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + if(this.torchActive) { + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + } + + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + if(!this.torchActive) { + return false; + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + return var6 == 5 && var5 == 1 ? false : (var6 == 3 && var5 == 3 ? false : (var6 == 4 && var5 == 2 ? false : (var6 == 1 && var5 == 5 ? false : var6 != 2 || var5 != 4))); + } + } + + private boolean func_15001_g(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + return var5 == 5 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 - 1, var4, 0) ? true : (var5 == 3 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) ? true : (var5 == 4 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) ? true : (var5 == 1 && var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) ? true : var5 == 2 && var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5)))); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + boolean var6 = this.func_15001_g(var1, var2, var3, var4); + + while(torchUpdates.size() > 0 && var1.worldTime - ((RedstoneUpdateInfo)torchUpdates.get(0)).field_776_d > 100L) { + torchUpdates.remove(0); + } + + if(this.torchActive) { + if(var6) { + var1.func_507_b(var2, var3, var4, Block.torchRedstoneIdle.blockID, var1.getBlockMetadata(var2, var3, var4)); + if(this.func_280_a(var1, var2, var3, var4, true)) { + var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "random.fizz", 0.5F, 2.6F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.8F); + + for(int var7 = 0; var7 < 5; ++var7) { + double var8 = (double)var2 + var5.nextDouble() * 0.6D + 0.2D; + double var10 = (double)var3 + var5.nextDouble() * 0.6D + 0.2D; + double var12 = (double)var4 + var5.nextDouble() * 0.6D + 0.2D; + var1.spawnParticle("smoke", var8, var10, var12, 0.0D, 0.0D, 0.0D); + } + } + } + } else if(!var6 && !this.func_280_a(var1, var2, var3, var4, false)) { + var1.func_507_b(var2, var3, var4, Block.torchRedstoneActive.blockID, var1.getBlockMetadata(var2, var3, var4)); + } + + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + return var5 == 0 ? this.isPoweringTo(var1, var2, var3, var4, var5) : false; + } + + public int idDropped(int var1, Random var2) { + return Block.torchRedstoneActive.blockID; + } + + public boolean canProvidePower() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockRedstoneWire.java b/minecraft_server/src/net/minecraft/src/BlockRedstoneWire.java new file mode 100644 index 0000000..6ce3aff --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockRedstoneWire.java @@ -0,0 +1,286 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockRedstoneWire extends Block { + private boolean field_652_a = true; + + public BlockRedstoneWire(int var1, int var2) { + super(var1, var2, Material.circuits); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F / 16.0F, 1.0F); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2, var3 - 1, var4); + } + + private void func_292_g(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + int var6 = 0; + this.field_652_a = false; + boolean var7 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4); + this.field_652_a = true; + int var8; + int var9; + int var10; + if(var7) { + var6 = 15; + } else { + for(var8 = 0; var8 < 4; ++var8) { + var9 = var2; + var10 = var4; + if(var8 == 0) { + var9 = var2 - 1; + } + + if(var8 == 1) { + ++var9; + } + + if(var8 == 2) { + var10 = var4 - 1; + } + + if(var8 == 3) { + ++var10; + } + + var6 = this.func_290_f(var1, var9, var3, var10, var6); + if(var1.doesBlockAllowAttachment(var9, var3, var10) && !var1.doesBlockAllowAttachment(var2, var3 + 1, var4)) { + var6 = this.func_290_f(var1, var9, var3 + 1, var10, var6); + } else if(!var1.doesBlockAllowAttachment(var9, var3, var10)) { + var6 = this.func_290_f(var1, var9, var3 - 1, var10, var6); + } + } + + if(var6 > 0) { + --var6; + } else { + var6 = 0; + } + } + + if(var5 != var6) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var6); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + if(var6 > 0) { + --var6; + } + + for(var8 = 0; var8 < 4; ++var8) { + var9 = var2; + var10 = var4; + int var11 = var3 - 1; + if(var8 == 0) { + var9 = var2 - 1; + } + + if(var8 == 1) { + ++var9; + } + + if(var8 == 2) { + var10 = var4 - 1; + } + + if(var8 == 3) { + ++var10; + } + + if(var1.doesBlockAllowAttachment(var9, var3, var10)) { + var11 += 2; + } + + int var12 = this.func_290_f(var1, var9, var3, var10, -1); + if(var12 >= 0 && var12 != var6) { + this.func_292_g(var1, var9, var3, var10); + } + + var12 = this.func_290_f(var1, var9, var11, var10, -1); + if(var12 >= 0 && var12 != var6) { + this.func_292_g(var1, var9, var11, var10); + } + } + + if(var5 == 0 || var6 == 0) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + } + } + + } + + private void func_291_h(World var1, int var2, int var3, int var4) { + if(var1.getBlockId(var2, var3, var4) == this.blockID) { + var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + } + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + super.onBlockAdded(var1, var2, var3, var4); + if(!var1.multiplayerWorld) { + this.func_292_g(var1, var2, var3, var4); + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + this.func_291_h(var1, var2 - 1, var3, var4); + this.func_291_h(var1, var2 + 1, var3, var4); + this.func_291_h(var1, var2, var3, var4 - 1); + this.func_291_h(var1, var2, var3, var4 + 1); + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + this.func_291_h(var1, var2 - 1, var3 + 1, var4); + } else { + this.func_291_h(var1, var2 - 1, var3 - 1, var4); + } + + if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + this.func_291_h(var1, var2 + 1, var3 + 1, var4); + } else { + this.func_291_h(var1, var2 + 1, var3 - 1, var4); + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + this.func_291_h(var1, var2, var3 + 1, var4 - 1); + } else { + this.func_291_h(var1, var2, var3 - 1, var4 - 1); + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + this.func_291_h(var1, var2, var3 + 1, var4 + 1); + } else { + this.func_291_h(var1, var2, var3 - 1, var4 + 1); + } + + } + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + super.onBlockRemoval(var1, var2, var3, var4); + if(!var1.multiplayerWorld) { + var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID); + var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID); + this.func_292_g(var1, var2, var3, var4); + this.func_291_h(var1, var2 - 1, var3, var4); + this.func_291_h(var1, var2 + 1, var3, var4); + this.func_291_h(var1, var2, var3, var4 - 1); + this.func_291_h(var1, var2, var3, var4 + 1); + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + this.func_291_h(var1, var2 - 1, var3 + 1, var4); + } else { + this.func_291_h(var1, var2 - 1, var3 - 1, var4); + } + + if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + this.func_291_h(var1, var2 + 1, var3 + 1, var4); + } else { + this.func_291_h(var1, var2 + 1, var3 - 1, var4); + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + this.func_291_h(var1, var2, var3 + 1, var4 - 1); + } else { + this.func_291_h(var1, var2, var3 - 1, var4 - 1); + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + this.func_291_h(var1, var2, var3 + 1, var4 + 1); + } else { + this.func_291_h(var1, var2, var3 - 1, var4 + 1); + } + + } + } + + private int func_290_f(World var1, int var2, int var3, int var4, int var5) { + if(var1.getBlockId(var2, var3, var4) != this.blockID) { + return var5; + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + return var6 > var5 ? var6 : var5; + } + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(!var1.multiplayerWorld) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + boolean var7 = this.canPlaceBlockAt(var1, var2, var3, var4); + if(!var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var6); + var1.setBlockWithNotify(var2, var3, var4, 0); + } else { + this.func_292_g(var1, var2, var3, var4); + } + + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + } + } + + public int idDropped(int var1, Random var2) { + return Item.redstone.swiftedIndex; + } + + public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) { + return !this.field_652_a ? false : this.isPoweringTo(var1, var2, var3, var4, var5); + } + + public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) { + if(!this.field_652_a) { + return false; + } else if(var1.getBlockMetadata(var2, var3, var4) == 0) { + return false; + } else if(var5 == 1) { + return true; + } else { + boolean var6 = func_293_b(var1, var2 - 1, var3, var4) || !var1.doesBlockAllowAttachment(var2 - 1, var3, var4) && func_293_b(var1, var2 - 1, var3 - 1, var4); + boolean var7 = func_293_b(var1, var2 + 1, var3, var4) || !var1.doesBlockAllowAttachment(var2 + 1, var3, var4) && func_293_b(var1, var2 + 1, var3 - 1, var4); + boolean var8 = func_293_b(var1, var2, var3, var4 - 1) || !var1.doesBlockAllowAttachment(var2, var3, var4 - 1) && func_293_b(var1, var2, var3 - 1, var4 - 1); + boolean var9 = func_293_b(var1, var2, var3, var4 + 1) || !var1.doesBlockAllowAttachment(var2, var3, var4 + 1) && func_293_b(var1, var2, var3 - 1, var4 + 1); + if(!var1.doesBlockAllowAttachment(var2, var3 + 1, var4)) { + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4) && func_293_b(var1, var2 - 1, var3 + 1, var4)) { + var6 = true; + } + + if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4) && func_293_b(var1, var2 + 1, var3 + 1, var4)) { + var7 = true; + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1) && func_293_b(var1, var2, var3 + 1, var4 - 1)) { + var8 = true; + } + + if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1) && func_293_b(var1, var2, var3 + 1, var4 + 1)) { + var9 = true; + } + } + + return !var8 && !var7 && !var6 && !var9 && var5 >= 2 && var5 <= 5 ? true : (var5 == 2 && var8 && !var6 && !var7 ? true : (var5 == 3 && var9 && !var6 && !var7 ? true : (var5 == 4 && var6 && !var8 && !var9 ? true : var5 == 5 && var7 && !var8 && !var9))); + } + } + + public boolean canProvidePower() { + return this.field_652_a; + } + + public static boolean func_293_b(IBlockAccess var0, int var1, int var2, int var3) { + int var4 = var0.getBlockId(var1, var2, var3); + return var4 == Block.redstoneWire.blockID ? true : (var4 == 0 ? false : Block.blocksList[var4].canProvidePower()); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockReed.java b/minecraft_server/src/net/minecraft/src/BlockReed.java new file mode 100644 index 0000000..344c0e8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockReed.java @@ -0,0 +1,65 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockReed extends Block { + protected BlockReed(int var1, int var2) { + super(var1, Material.plants); + this.blockIndexInTexture = var2; + float var3 = 6.0F / 16.0F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 1.0F, 0.5F + var3); + this.setTickOnLoad(true); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getBlockId(var2, var3 + 1, var4) == 0) { + int var6; + for(var6 = 1; var1.getBlockId(var2, var3 - var6, var4) == this.blockID; ++var6) { + } + + if(var6 < 3) { + int var7 = var1.getBlockMetadata(var2, var3, var4); + if(var7 == 15) { + var1.setBlockWithNotify(var2, var3 + 1, var4, this.blockID); + var1.setBlockMetadataWithNotify(var2, var3, var4, 0); + } else { + var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + 1); + } + } + } + + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3 - 1, var4); + return var5 == this.blockID ? true : (var5 != Block.grass.blockID && var5 != Block.dirt.blockID ? false : (var1.getBlockMaterial(var2 - 1, var3 - 1, var4) == Material.water ? true : (var1.getBlockMaterial(var2 + 1, var3 - 1, var4) == Material.water ? true : (var1.getBlockMaterial(var2, var3 - 1, var4 - 1) == Material.water ? true : var1.getBlockMaterial(var2, var3 - 1, var4 + 1) == Material.water)))); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + this.func_4037_g(var1, var2, var3, var4); + } + + protected final void func_4037_g(World var1, int var2, int var3, int var4) { + if(!this.canBlockStay(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public boolean canBlockStay(World var1, int var2, int var3, int var4) { + return this.canPlaceBlockAt(var1, var2, var3, var4); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public int idDropped(int var1, Random var2) { + return Item.reed.swiftedIndex; + } + + public boolean allowsAttachment() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSand.java b/minecraft_server/src/net/minecraft/src/BlockSand.java new file mode 100644 index 0000000..b8eb3c7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSand.java @@ -0,0 +1,53 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSand extends Block { + public static boolean fallInstantly = false; + + public BlockSand(int var1, int var2) { + super(var1, var2, Material.sand); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + this.tryToFall(var1, var2, var3, var4); + } + + private void tryToFall(World var1, int var2, int var3, int var4) { + if(canFallBelow(var1, var2, var3 - 1, var4) && var3 >= 0) { + EntityFallingSand var8 = new EntityFallingSand(var1, (float)var2 + 0.5F, (float)var3 + 0.5F, (float)var4 + 0.5F, this.blockID); + if(fallInstantly) { + while(!var8.field_304_B) { + var8.onUpdate(); + } + } else { + var1.entityJoinedWorld(var8); + } + } + + } + + public int tickRate() { + return 3; + } + + public static boolean canFallBelow(World var0, int var1, int var2, int var3) { + int var4 = var0.getBlockId(var1, var2, var3); + if(var4 == 0) { + return true; + } else if(var4 == Block.fire.blockID) { + return true; + } else { + Material var5 = Block.blocksList[var4].blockMaterial; + return var5 == Material.water ? true : var5 == Material.lava; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSapling.java b/minecraft_server/src/net/minecraft/src/BlockSapling.java new file mode 100644 index 0000000..ccacbf0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSapling.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSapling extends BlockFlower { + protected BlockSapling(int var1, int var2) { + super(var1, var2); + float var3 = 0.4F; + this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + super.updateTick(var1, var2, var3, var4, var5); + if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9 && var5.nextInt(5) == 0) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 < 15) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + 1); + } else { + var1.setBlock(var2, var3, var4, 0); + Object var7 = new WorldGenTrees(); + if(var5.nextInt(10) == 0) { + var7 = new WorldGenBigTree(); + } + + if(!((WorldGenerator)var7).generate(var1, var5, var2, var3, var4)) { + var1.setBlock(var2, var3, var4, this.blockID); + } + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSign.java b/minecraft_server/src/net/minecraft/src/BlockSign.java new file mode 100644 index 0000000..6d58453 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSign.java @@ -0,0 +1,100 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSign extends BlockContainer { + private Class field_654_a; + private boolean field_653_b; + + protected BlockSign(int var1, Class var2, boolean var3) { + super(var1, Material.wood); + this.field_653_b = var3; + this.blockIndexInTexture = 4; + this.field_654_a = var2; + float var4 = 0.25F; + float var5 = 1.0F; + this.setBlockBounds(0.5F - var4, 0.0F, 0.5F - var4, 0.5F + var4, var5, 0.5F + var4); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + if(!this.field_653_b) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + float var6 = 9.0F / 32.0F; + float var7 = 25.0F / 32.0F; + float var8 = 0.0F; + float var9 = 1.0F; + float var10 = 2.0F / 16.0F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + if(var5 == 2) { + this.setBlockBounds(var8, var6, 1.0F - var10, var9, var7, 1.0F); + } + + if(var5 == 3) { + this.setBlockBounds(var8, var6, 0.0F, var9, var7, var10); + } + + if(var5 == 4) { + this.setBlockBounds(1.0F - var10, var6, var8, 1.0F, var7, var9); + } + + if(var5 == 5) { + this.setBlockBounds(0.0F, var6, var8, var10, var7, var9); + } + + } + } + + public boolean allowsAttachment() { + return false; + } + + protected TileEntity func_294_a_() { + try { + return (TileEntity)this.field_654_a.newInstance(); + } catch (Exception var2) { + throw new RuntimeException(var2); + } + } + + public int idDropped(int var1, Random var2) { + return Item.sign.swiftedIndex; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + boolean var6 = false; + if(this.field_653_b) { + if(!var1.getBlockMaterial(var2, var3 - 1, var4).func_216_a()) { + var6 = true; + } + } else { + int var7 = var1.getBlockMetadata(var2, var3, var4); + var6 = true; + if(var7 == 2 && var1.getBlockMaterial(var2, var3, var4 + 1).func_216_a()) { + var6 = false; + } + + if(var7 == 3 && var1.getBlockMaterial(var2, var3, var4 - 1).func_216_a()) { + var6 = false; + } + + if(var7 == 4 && var1.getBlockMaterial(var2 + 1, var3, var4).func_216_a()) { + var6 = false; + } + + if(var7 == 5 && var1.getBlockMaterial(var2 - 1, var3, var4).func_216_a()) { + var6 = false; + } + } + + if(var6) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSlowSand.java b/minecraft_server/src/net/minecraft/src/BlockSlowSand.java new file mode 100644 index 0000000..a0fbffa --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSlowSand.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +public class BlockSlowSand extends Block { + public BlockSlowSand(int var1, int var2) { + super(var1, var2, Material.sand); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + float var5 = 2.0F / 16.0F; + return AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)((float)(var3 + 1) - var5), (double)(var4 + 1)); + } + + public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { + var5.motionX *= 0.4D; + var5.motionZ *= 0.4D; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSnow.java b/minecraft_server/src/net/minecraft/src/BlockSnow.java new file mode 100644 index 0000000..f6620b2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSnow.java @@ -0,0 +1,71 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSnow extends Block { + protected BlockSnow(int var1, int var2) { + super(var1, var2, Material.snow); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F); + this.setTickOnLoad(true); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockId(var2, var3 - 1, var4); + return var5 != 0 && Block.blocksList[var5].allowsAttachment() ? var1.getBlockMaterial(var2, var3 - 1, var4).func_218_c() : false; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + this.func_275_g(var1, var2, var3, var4); + } + + private boolean func_275_g(World var1, int var2, int var3, int var4) { + if(!this.canPlaceBlockAt(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + return false; + } else { + return true; + } + } + + public void func_12007_g(World var1, int var2, int var3, int var4, int var5) { + int var6 = Item.snowball.swiftedIndex; + float var7 = 0.7F; + double var8 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; + double var10 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; + double var12 = (double)(var1.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; + EntityItem var14 = new EntityItem(var1, (double)var2 + var8, (double)var3 + var10, (double)var4 + var12, new ItemStack(var6)); + var14.field_433_ad = 10; + var1.entityJoinedWorld(var14); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + public int idDropped(int var1, Random var2) { + return Item.snowball.swiftedIndex; + } + + public int quantityDropped(Random var1) { + return 0; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + Material var6 = var1.getBlockMaterial(var2, var3, var4); + return var5 == 1 ? true : (var6 == this.blockMaterial ? false : super.isSideInsideCoordinate(var1, var2, var3, var4, var5)); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSnowBlock.java b/minecraft_server/src/net/minecraft/src/BlockSnowBlock.java new file mode 100644 index 0000000..0a4c7a6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSnowBlock.java @@ -0,0 +1,26 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSnowBlock extends Block { + protected BlockSnowBlock(int var1, int var2) { + super(var1, var2, Material.builtSnow); + this.setTickOnLoad(true); + } + + public int idDropped(int var1, Random var2) { + return Item.snowball.swiftedIndex; + } + + public int quantityDropped(Random var1) { + return 4; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSoil.java b/minecraft_server/src/net/minecraft/src/BlockSoil.java new file mode 100644 index 0000000..f53db8d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSoil.java @@ -0,0 +1,85 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockSoil extends Block { + protected BlockSoil(int var1) { + super(var1, Material.ground); + this.blockIndexInTexture = 87; + this.setTickOnLoad(true); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 15.0F / 16.0F, 1.0F); + this.setLightOpacity(255); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return AxisAlignedBB.getBoundingBoxFromPool((double)(var2 + 0), (double)(var3 + 0), (double)(var4 + 0), (double)(var2 + 1), (double)(var3 + 1), (double)(var4 + 1)); + } + + public boolean allowsAttachment() { + return false; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(var5.nextInt(5) == 0) { + if(this.func_283_h(var1, var2, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 7); + } else { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var6 > 0) { + var1.setBlockMetadataWithNotify(var2, var3, var4, var6 - 1); + } else if(!this.func_282_g(var1, var2, var3, var4)) { + var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); + } + } + } + + } + + public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { + if(var1.rand.nextInt(4) == 0) { + var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); + } + + } + + private boolean func_282_g(World var1, int var2, int var3, int var4) { + byte var5 = 0; + + for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { + for(int var7 = var4 - var5; var7 <= var4 + var5; ++var7) { + if(var1.getBlockId(var6, var3 + 1, var7) == Block.crops.blockID) { + return true; + } + } + } + + return false; + } + + private boolean func_283_h(World var1, int var2, int var3, int var4) { + for(int var5 = var2 - 4; var5 <= var2 + 4; ++var5) { + for(int var6 = var3; var6 <= var3 + 1; ++var6) { + for(int var7 = var4 - 4; var7 <= var4 + 4; ++var7) { + if(var1.getBlockMaterial(var5, var6, var7) == Material.water) { + return true; + } + } + } + } + + return false; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + Material var6 = var1.getBlockMaterial(var2, var3 + 1, var4); + if(var6.func_216_a()) { + var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); + } + + } + + public int idDropped(int var1, Random var2) { + return Block.dirt.idDropped(0, var2); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockSponge.java b/minecraft_server/src/net/minecraft/src/BlockSponge.java new file mode 100644 index 0000000..5e6c41d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockSponge.java @@ -0,0 +1,35 @@ +package net.minecraft.src; + +public class BlockSponge extends Block { + protected BlockSponge(int var1) { + super(var1, Material.sponge); + this.blockIndexInTexture = 48; + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + byte var5 = 2; + + for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { + for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) { + for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) { + if(var1.getBlockMaterial(var6, var7, var8) == Material.water) { + } + } + } + } + + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + byte var5 = 2; + + for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { + for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) { + for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) { + var1.notifyBlocksOfNeighborChange(var6, var7, var8, var1.getBlockId(var6, var7, var8)); + } + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockStairs.java b/minecraft_server/src/net/minecraft/src/BlockStairs.java new file mode 100644 index 0000000..b6b122e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockStairs.java @@ -0,0 +1,156 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.Random; + +public class BlockStairs extends Block { + private Block field_651_a; + + protected BlockStairs(int var1, Block var2) { + super(var1, var2.blockIndexInTexture, var2.blockMaterial); + this.field_651_a = var2; + this.setHardness(var2.blockHardness); + this.setResistance(var2.blockResistance / 3.0F); + this.setStepSound(var2.stepSound); + } + + public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); + } + + public boolean allowsAttachment() { + return false; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + return super.isSideInsideCoordinate(var1, var2, var3, var4, var5); + } + + public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) { + int var7 = var1.getBlockMetadata(var2, var3, var4); + if(var7 == 0) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + } else if(var7 == 1) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + } else if(var7 == 2) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + } else if(var7 == 3) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F); + super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); + } + + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { + this.field_651_a.onBlockClicked(var1, var2, var3, var4, var5); + } + + public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { + this.field_651_a.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5); + } + + public float func_226_a(Entity var1) { + return this.field_651_a.func_226_a(var1); + } + + public int idDropped(int var1, Random var2) { + return this.field_651_a.idDropped(var1, var2); + } + + public int quantityDropped(Random var1) { + return this.field_651_a.quantityDropped(var1); + } + + public int getBlockTextureFromSide(int var1) { + return this.field_651_a.getBlockTextureFromSide(var1); + } + + public int tickRate() { + return this.field_651_a.tickRate(); + } + + public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { + this.field_651_a.velocityToAddToEntity(var1, var2, var3, var4, var5, var6); + } + + public boolean isCollidable() { + return this.field_651_a.isCollidable(); + } + + public boolean canCollideCheck(int var1, boolean var2) { + return this.field_651_a.canCollideCheck(var1, var2); + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return this.field_651_a.canPlaceBlockAt(var1, var2, var3, var4); + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + this.onNeighborBlockChange(var1, var2, var3, var4, 0); + this.field_651_a.onBlockAdded(var1, var2, var3, var4); + } + + public void onBlockRemoval(World var1, int var2, int var3, int var4) { + this.field_651_a.onBlockRemoval(var1, var2, var3, var4); + } + + public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) { + this.field_651_a.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6); + } + + public void dropBlockAsItem(World var1, int var2, int var3, int var4, int var5) { + this.field_651_a.dropBlockAsItem(var1, var2, var3, var4, var5); + } + + public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { + this.field_651_a.onEntityWalking(var1, var2, var3, var4, var5); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + this.field_651_a.updateTick(var1, var2, var3, var4, var5); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + return this.field_651_a.blockActivated(var1, var2, var3, var4, var5); + } + + public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { + this.field_651_a.onBlockDestroyedByExplosion(var1, var2, var3, var4); + } + + public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) { + int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + if(var6 == 0) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 2); + } + + if(var6 == 1) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + } + + if(var6 == 2) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 3); + } + + if(var6 == 3) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 0); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockStationary.java b/minecraft_server/src/net/minecraft/src/BlockStationary.java new file mode 100644 index 0000000..2b5b3c9 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockStationary.java @@ -0,0 +1,57 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockStationary extends BlockFluids { + protected BlockStationary(int var1, Material var2) { + super(var1, var2); + this.setTickOnLoad(false); + if(var2 == Material.lava) { + this.setTickOnLoad(true); + } + + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + super.onNeighborBlockChange(var1, var2, var3, var4, var5); + if(var1.getBlockId(var2, var3, var4) == this.blockID) { + this.func_15002_i(var1, var2, var3, var4); + } + + } + + private void func_15002_i(World var1, int var2, int var3, int var4) { + int var5 = var1.getBlockMetadata(var2, var3, var4); + var1.field_808_h = true; + var1.func_470_a(var2, var3, var4, this.blockID - 1, var5); + var1.func_519_b(var2, var3, var4, var2, var3, var4); + var1.scheduleBlockUpdate(var2, var3, var4, this.blockID - 1); + var1.field_808_h = false; + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + if(this.blockMaterial == Material.lava) { + int var6 = var5.nextInt(3); + + for(int var7 = 0; var7 < var6; ++var7) { + var2 += var5.nextInt(3) - 1; + ++var3; + var4 += var5.nextInt(3) - 1; + int var8 = var1.getBlockId(var2, var3, var4); + if(var8 == 0) { + if(this.func_4033_j(var1, var2 - 1, var3, var4) || this.func_4033_j(var1, var2 + 1, var3, var4) || this.func_4033_j(var1, var2, var3, var4 - 1) || this.func_4033_j(var1, var2, var3, var4 + 1) || this.func_4033_j(var1, var2, var3 - 1, var4) || this.func_4033_j(var1, var2, var3 + 1, var4)) { + var1.setBlockWithNotify(var2, var3, var4, Block.fire.blockID); + return; + } + } else if(Block.blocksList[var8].blockMaterial.func_218_c()) { + return; + } + } + } + + } + + private boolean func_4033_j(World var1, int var2, int var3, int var4) { + return var1.getBlockMaterial(var2, var3, var4).getBurning(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockStep.java b/minecraft_server/src/net/minecraft/src/BlockStep.java new file mode 100644 index 0000000..14a8b34 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockStep.java @@ -0,0 +1,55 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockStep extends Block { + private boolean field_666_a; + + public BlockStep(int var1, boolean var2) { + super(var1, 6, Material.rock); + this.field_666_a = var2; + if(!var2) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + + this.setLightOpacity(255); + } + + public int getBlockTextureFromSide(int var1) { + return var1 <= 1 ? 6 : 5; + } + + public boolean allowsAttachment() { + return this.field_666_a; + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(this == Block.stairSingle) { + } + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(this != Block.stairSingle) { + super.onBlockAdded(var1, var2, var3, var4); + } + + int var5 = var1.getBlockId(var2, var3 - 1, var4); + if(var5 == stairSingle.blockID) { + var1.setBlockWithNotify(var2, var3, var4, 0); + var1.setBlockWithNotify(var2, var3 - 1, var4, Block.stairDouble.blockID); + } + + } + + public int idDropped(int var1, Random var2) { + return Block.stairSingle.blockID; + } + + public boolean isSideInsideCoordinate(IBlockAccess var1, int var2, int var3, int var4, int var5) { + if(this != Block.stairSingle) { + super.isSideInsideCoordinate(var1, var2, var3, var4, var5); + } + + return var5 == 1 ? true : (!super.isSideInsideCoordinate(var1, var2, var3, var4, var5) ? false : (var5 == 0 ? true : var1.getBlockId(var2, var3, var4) != this.blockID)); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockStone.java b/minecraft_server/src/net/minecraft/src/BlockStone.java new file mode 100644 index 0000000..5b460b7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockStone.java @@ -0,0 +1,13 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockStone extends Block { + public BlockStone(int var1, int var2) { + super(var1, var2, Material.rock); + } + + public int idDropped(int var1, Random var2) { + return Block.cobblestone.blockID; + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockTNT.java b/minecraft_server/src/net/minecraft/src/BlockTNT.java new file mode 100644 index 0000000..6f5fb9f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockTNT.java @@ -0,0 +1,39 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockTNT extends Block { + public BlockTNT(int var1, int var2) { + super(var1, var2, Material.tnt); + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 0 ? this.blockIndexInTexture + 2 : (var1 == 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(var5 > 0 && Block.blocksList[var5].canProvidePower() && var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) { + this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 0); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + + } + + public int quantityDropped(Random var1) { + return 0; + } + + public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { + EntityTNTPrimed var5 = new EntityTNTPrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F)); + var5.fuse = var1.rand.nextInt(var5.fuse / 4) + var5.fuse / 8; + var1.entityJoinedWorld(var5); + } + + public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { + if(!var1.multiplayerWorld) { + EntityTNTPrimed var6 = new EntityTNTPrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F)); + var1.entityJoinedWorld(var6); + var1.playSoundAtEntity(var6, "random.fuse", 1.0F, 1.0F); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockTorch.java b/minecraft_server/src/net/minecraft/src/BlockTorch.java new file mode 100644 index 0000000..3493a53 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockTorch.java @@ -0,0 +1,132 @@ +package net.minecraft.src; + +import java.util.Random; + +public class BlockTorch extends Block { + protected BlockTorch(int var1, int var2) { + super(var1, var2, Material.circuits); + this.setTickOnLoad(true); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { + return null; + } + + public boolean allowsAttachment() { + return false; + } + + public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { + return var1.doesBlockAllowAttachment(var2 - 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2 + 1, var3, var4) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 - 1) ? true : (var1.doesBlockAllowAttachment(var2, var3, var4 + 1) ? true : var1.doesBlockAllowAttachment(var2, var3 - 1, var4)))); + } + + public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + if(var5 == 1 && var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var6 = 5; + } + + if(var5 == 2 && var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var6 = 4; + } + + if(var5 == 3 && var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var6 = 3; + } + + if(var5 == 4 && var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var6 = 2; + } + + if(var5 == 5 && var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var6 = 1; + } + + var1.setBlockMetadataWithNotify(var2, var3, var4, var6); + } + + public void updateTick(World var1, int var2, int var3, int var4, Random var5) { + super.updateTick(var1, var2, var3, var4, var5); + if(var1.getBlockMetadata(var2, var3, var4) == 0) { + this.onBlockAdded(var1, var2, var3, var4); + } + + } + + public void onBlockAdded(World var1, int var2, int var3, int var4) { + if(var1.doesBlockAllowAttachment(var2 - 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 1); + } else if(var1.doesBlockAllowAttachment(var2 + 1, var3, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 2); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 - 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 3); + } else if(var1.doesBlockAllowAttachment(var2, var3, var4 + 1)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 4); + } else if(var1.doesBlockAllowAttachment(var2, var3 - 1, var4)) { + var1.setBlockMetadataWithNotify(var2, var3, var4, 5); + } + + this.func_279_g(var1, var2, var3, var4); + } + + public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { + if(this.func_279_g(var1, var2, var3, var4)) { + int var6 = var1.getBlockMetadata(var2, var3, var4); + boolean var7 = false; + if(!var1.doesBlockAllowAttachment(var2 - 1, var3, var4) && var6 == 1) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2 + 1, var3, var4) && var6 == 2) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 - 1) && var6 == 3) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3, var4 + 1) && var6 == 4) { + var7 = true; + } + + if(!var1.doesBlockAllowAttachment(var2, var3 - 1, var4) && var6 == 5) { + var7 = true; + } + + if(var7) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + } + } + + } + + private boolean func_279_g(World var1, int var2, int var3, int var4) { + if(!this.canPlaceBlockAt(var1, var2, var3, var4)) { + this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); + var1.setBlockWithNotify(var2, var3, var4, 0); + return false; + } else { + return true; + } + } + + public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { + int var7 = var1.getBlockMetadata(var2, var3, var4) & 7; + float var8 = 0.15F; + if(var7 == 1) { + this.setBlockBounds(0.0F, 0.2F, 0.5F - var8, var8 * 2.0F, 0.8F, 0.5F + var8); + } else if(var7 == 2) { + this.setBlockBounds(1.0F - var8 * 2.0F, 0.2F, 0.5F - var8, 1.0F, 0.8F, 0.5F + var8); + } else if(var7 == 3) { + this.setBlockBounds(0.5F - var8, 0.2F, 0.0F, 0.5F + var8, 0.8F, var8 * 2.0F); + } else if(var7 == 4) { + this.setBlockBounds(0.5F - var8, 0.2F, 1.0F - var8 * 2.0F, 0.5F + var8, 0.8F, 1.0F); + } else { + var8 = 0.1F; + this.setBlockBounds(0.5F - var8, 0.0F, 0.5F - var8, 0.5F + var8, 0.6F, 0.5F + var8); + } + + return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); + } +} diff --git a/minecraft_server/src/net/minecraft/src/BlockWorkbench.java b/minecraft_server/src/net/minecraft/src/BlockWorkbench.java new file mode 100644 index 0000000..3a25677 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/BlockWorkbench.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +public class BlockWorkbench extends Block { + protected BlockWorkbench(int var1) { + super(var1, Material.wood); + this.blockIndexInTexture = 59; + } + + public int getBlockTextureFromSide(int var1) { + return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? Block.planks.getBlockTextureFromSide(0) : (var1 != 2 && var1 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 1)); + } + + public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { + var5.func_174_A(); + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Chunk.java b/minecraft_server/src/net/minecraft/src/Chunk.java new file mode 100644 index 0000000..63ee72c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Chunk.java @@ -0,0 +1,575 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +public class Chunk { + public static boolean field_694_a; + public byte[] blocks; + public boolean field_692_c; + public World worldObj; + public NibbleArray data; + public NibbleArray skylightMap; + public NibbleArray blocklightMap; + public byte[] heightMap; + public int field_686_i; + public final int xPosition; + public final int zPosition; + public Map field_683_l; + public List[] entities; + public boolean isTerrainPopulated; + public boolean isModified; + public boolean field_679_p; + public boolean field_678_q; + public boolean field_677_r; + public long field_676_s; + + public Chunk(World var1, int var2, int var3) { + this.field_683_l = new HashMap(); + this.entities = new List[8]; + this.isTerrainPopulated = false; + this.isModified = false; + this.field_678_q = false; + this.field_677_r = false; + this.field_676_s = 0L; + this.worldObj = var1; + this.xPosition = var2; + this.zPosition = var3; + this.heightMap = new byte[256]; + + for(int var4 = 0; var4 < this.entities.length; ++var4) { + this.entities[var4] = new ArrayList(); + } + + } + + public Chunk(World var1, byte[] var2, int var3, int var4) { + this(var1, var3, var4); + this.blocks = var2; + this.data = new NibbleArray(var2.length); + this.skylightMap = new NibbleArray(var2.length); + this.blocklightMap = new NibbleArray(var2.length); + } + + public boolean func_351_a(int var1, int var2) { + return var1 == this.xPosition && var2 == this.zPosition; + } + + public int getHeightValue(int var1, int var2) { + return this.heightMap[var2 << 4 | var1] & 255; + } + + public void func_348_a() { + } + + public void func_353_b() { + int var1 = 127; + + int var2; + int var3; + for(var2 = 0; var2 < 16; ++var2) { + for(var3 = 0; var3 < 16; ++var3) { + this.heightMap[var3 << 4 | var2] = -128; + this.func_339_g(var2, 127, var3); + if((this.heightMap[var3 << 4 | var2] & 255) < var1) { + var1 = this.heightMap[var3 << 4 | var2] & 255; + } + } + } + + this.field_686_i = var1; + + for(var2 = 0; var2 < 16; ++var2) { + for(var3 = 0; var3 < 16; ++var3) { + this.func_333_c(var2, var3); + } + } + + this.isModified = true; + } + + public void func_4053_c() { + byte var1 = 32; + + for(int var2 = 0; var2 < 16; ++var2) { + for(int var3 = 0; var3 < 16; ++var3) { + int var4 = var2 << 11 | var3 << 7; + + int var5; + int var6; + for(var5 = 0; var5 < 128; ++var5) { + var6 = Block.lightValue[this.blocks[var4 + var5]]; + if(var6 > 0) { + this.blocklightMap.setNibble(var2, var5, var3, var6); + } + } + + var5 = 15; + + for(var6 = var1 - 2; var6 < 128 && var5 > 0; this.blocklightMap.setNibble(var2, var6, var3, var5)) { + ++var6; + byte var7 = this.blocks[var4 + var6]; + int var8 = Block.lightOpacity[var7]; + int var9 = Block.lightValue[var7]; + if(var8 == 0) { + var8 = 1; + } + + var5 -= var8; + if(var9 > var5) { + var5 = var9; + } + + if(var5 < 0) { + var5 = 0; + } + } + } + } + + this.worldObj.func_483_a(EnumSkyBlock.Block, this.xPosition * 16, var1 - 1, this.zPosition * 16, this.xPosition * 16 + 16, var1 + 1, this.zPosition * 16 + 16); + this.isModified = true; + } + + private void func_333_c(int var1, int var2) { + int var3 = this.getHeightValue(var1, var2); + int var4 = this.xPosition * 16 + var1; + int var5 = this.zPosition * 16 + var2; + this.func_355_f(var4 - 1, var5, var3); + this.func_355_f(var4 + 1, var5, var3); + this.func_355_f(var4, var5 - 1, var3); + this.func_355_f(var4, var5 + 1, var3); + } + + private void func_355_f(int var1, int var2, int var3) { + int var4 = this.worldObj.getHeightValue(var1, var2); + if(var4 > var3) { + this.worldObj.func_483_a(EnumSkyBlock.Sky, var1, var3, var2, var1, var4, var2); + } else if(var4 < var3) { + this.worldObj.func_483_a(EnumSkyBlock.Sky, var1, var4, var2, var1, var3, var2); + } + + this.isModified = true; + } + + private void func_339_g(int var1, int var2, int var3) { + int var4 = this.heightMap[var3 << 4 | var1] & 255; + int var5 = var4; + if(var2 > var4) { + var5 = var2; + } + + for(int var6 = var1 << 11 | var3 << 7; var5 > 0 && Block.lightOpacity[this.blocks[var6 + var5 - 1]] == 0; --var5) { + } + + if(var5 != var4) { + this.worldObj.func_498_f(var1, var3, var5, var4); + this.heightMap[var3 << 4 | var1] = (byte)var5; + int var7; + int var8; + int var9; + if(var5 < this.field_686_i) { + this.field_686_i = var5; + } else { + var7 = 127; + + for(var8 = 0; var8 < 16; ++var8) { + for(var9 = 0; var9 < 16; ++var9) { + if((this.heightMap[var9 << 4 | var8] & 255) < var7) { + var7 = this.heightMap[var9 << 4 | var8] & 255; + } + } + } + + this.field_686_i = var7; + } + + var7 = this.xPosition * 16 + var1; + var8 = this.zPosition * 16 + var3; + if(var5 < var4) { + for(var9 = var5; var9 < var4; ++var9) { + this.skylightMap.setNibble(var1, var9, var3, 15); + } + } else { + this.worldObj.func_483_a(EnumSkyBlock.Sky, var7, var4, var8, var7, var5, var8); + + for(var9 = var4; var9 < var5; ++var9) { + this.skylightMap.setNibble(var1, var9, var3, 0); + } + } + + var9 = 15; + + int var10; + for(var10 = var5; var5 > 0 && var9 > 0; this.skylightMap.setNibble(var1, var5, var3, var9)) { + --var5; + int var11 = Block.lightOpacity[this.getBlockID(var1, var5, var3)]; + if(var11 == 0) { + var11 = 1; + } + + var9 -= var11; + if(var9 < 0) { + var9 = 0; + } + } + + while(var5 > 0 && Block.lightOpacity[this.getBlockID(var1, var5 - 1, var3)] == 0) { + --var5; + } + + if(var5 != var10) { + this.worldObj.func_483_a(EnumSkyBlock.Sky, var7 - 1, var5, var8 - 1, var7 + 1, var10, var8 + 1); + } + + this.isModified = true; + } + } + + public int getBlockID(int var1, int var2, int var3) { + return this.blocks[var1 << 11 | var3 << 7 | var2]; + } + + public boolean setBlockIDWithMetadata(int var1, int var2, int var3, int var4, int var5) { + byte var6 = (byte)var4; + int var7 = this.heightMap[var3 << 4 | var1] & 255; + int var8 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255; + if(var8 == var4 && this.data.getNibble(var1, var2, var3) == var5) { + return false; + } else { + int var9 = this.xPosition * 16 + var1; + int var10 = this.zPosition * 16 + var3; + this.blocks[var1 << 11 | var3 << 7 | var2] = var6; + if(var8 != 0 && !this.worldObj.multiplayerWorld) { + Block.blocksList[var8].onBlockRemoval(this.worldObj, var9, var2, var10); + } + + this.data.setNibble(var1, var2, var3, var5); + if(!this.worldObj.field_4272_q.field_4306_c) { + if(Block.lightOpacity[var6] != 0) { + if(var2 >= var7) { + this.func_339_g(var1, var2 + 1, var3); + } + } else if(var2 == var7 - 1) { + this.func_339_g(var1, var2, var3); + } + + this.worldObj.func_483_a(EnumSkyBlock.Sky, var9, var2, var10, var9, var2, var10); + } + + this.worldObj.func_483_a(EnumSkyBlock.Block, var9, var2, var10, var9, var2, var10); + this.func_333_c(var1, var3); + if(var4 != 0) { + Block.blocksList[var4].onBlockAdded(this.worldObj, var9, var2, var10); + } + + this.data.setNibble(var1, var2, var3, var5); + this.isModified = true; + return true; + } + } + + public boolean setBlockID(int var1, int var2, int var3, int var4) { + byte var5 = (byte)var4; + int var6 = this.heightMap[var3 << 4 | var1] & 255; + int var7 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255; + if(var7 == var4) { + return false; + } else { + int var8 = this.xPosition * 16 + var1; + int var9 = this.zPosition * 16 + var3; + this.blocks[var1 << 11 | var3 << 7 | var2] = var5; + if(var7 != 0) { + Block.blocksList[var7].onBlockRemoval(this.worldObj, var8, var2, var9); + } + + this.data.setNibble(var1, var2, var3, 0); + if(Block.lightOpacity[var5] != 0) { + if(var2 >= var6) { + this.func_339_g(var1, var2 + 1, var3); + } + } else if(var2 == var6 - 1) { + this.func_339_g(var1, var2, var3); + } + + this.worldObj.func_483_a(EnumSkyBlock.Sky, var8, var2, var9, var8, var2, var9); + this.worldObj.func_483_a(EnumSkyBlock.Block, var8, var2, var9, var8, var2, var9); + this.func_333_c(var1, var3); + if(var4 != 0 && !this.worldObj.multiplayerWorld) { + Block.blocksList[var4].onBlockAdded(this.worldObj, var8, var2, var9); + } + + this.isModified = true; + return true; + } + } + + public int getBlockMetadata(int var1, int var2, int var3) { + return this.data.getNibble(var1, var2, var3); + } + + public void setBlockMetadata(int var1, int var2, int var3, int var4) { + this.isModified = true; + this.data.setNibble(var1, var2, var3, var4); + } + + public int getSavedLightValue(EnumSkyBlock var1, int var2, int var3, int var4) { + return var1 == EnumSkyBlock.Sky ? this.skylightMap.getNibble(var2, var3, var4) : (var1 == EnumSkyBlock.Block ? this.blocklightMap.getNibble(var2, var3, var4) : 0); + } + + public void setLightValue(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { + this.isModified = true; + if(var1 == EnumSkyBlock.Sky) { + this.skylightMap.setNibble(var2, var3, var4, var5); + } else { + if(var1 != EnumSkyBlock.Block) { + return; + } + + this.blocklightMap.setNibble(var2, var3, var4, var5); + } + + } + + public int getBlockLightValue(int var1, int var2, int var3, int var4) { + int var5 = this.skylightMap.getNibble(var1, var2, var3); + if(var5 > 0) { + field_694_a = true; + } + + var5 -= var4; + int var6 = this.blocklightMap.getNibble(var1, var2, var3); + if(var6 > var5) { + var5 = var6; + } + + return var5; + } + + public void addEntity(Entity var1) { + if(!this.field_678_q) { + this.field_677_r = true; + int var2 = MathHelper.floor_double(var1.posX / 16.0D); + int var3 = MathHelper.floor_double(var1.posZ / 16.0D); + if(var2 != this.xPosition || var3 != this.zPosition) { + System.out.println("Wrong location! " + var1); + Thread.dumpStack(); + } + + int var4 = MathHelper.floor_double(var1.posY / 16.0D); + if(var4 < 0) { + var4 = 0; + } + + if(var4 >= this.entities.length) { + var4 = this.entities.length - 1; + } + + var1.field_276_Z = true; + var1.field_307_aa = this.xPosition; + var1.field_305_ab = var4; + var1.field_303_ac = this.zPosition; + this.entities[var4].add(var1); + } + } + + public void func_350_b(Entity var1) { + this.func_332_a(var1, var1.field_305_ab); + } + + public void func_332_a(Entity var1, int var2) { + if(var2 < 0) { + var2 = 0; + } + + if(var2 >= this.entities.length) { + var2 = this.entities.length - 1; + } + + this.entities[var2].remove(var1); + } + + public boolean canBlockSeeTheSky(int var1, int var2, int var3) { + return var2 >= (this.heightMap[var3 << 4 | var1] & 255); + } + + public TileEntity func_338_d(int var1, int var2, int var3) { + ChunkPosition var4 = new ChunkPosition(var1, var2, var3); + TileEntity var5 = (TileEntity)this.field_683_l.get(var4); + if(var5 == null) { + int var6 = this.getBlockID(var1, var2, var3); + if(!Block.isBlockContainer[var6]) { + return null; + } + + BlockContainer var7 = (BlockContainer)Block.blocksList[var6]; + var7.onBlockAdded(this.worldObj, this.xPosition * 16 + var1, var2, this.zPosition * 16 + var3); + var5 = (TileEntity)this.field_683_l.get(var4); + } + + return var5; + } + + public void func_349_a(TileEntity var1) { + int var2 = var1.xCoord - this.xPosition * 16; + int var3 = var1.yCoord; + int var4 = var1.zCoord - this.zPosition * 16; + this.func_352_a(var2, var3, var4, var1); + } + + public void func_352_a(int var1, int var2, int var3, TileEntity var4) { + ChunkPosition var5 = new ChunkPosition(var1, var2, var3); + var4.worldObj = this.worldObj; + var4.xCoord = this.xPosition * 16 + var1; + var4.yCoord = var2; + var4.zCoord = this.zPosition * 16 + var3; + if(this.getBlockID(var1, var2, var3) != 0 && Block.blocksList[this.getBlockID(var1, var2, var3)] instanceof BlockContainer) { + if(this.field_692_c) { + if(this.field_683_l.get(var5) != null) { + this.worldObj.field_814_b.remove(this.field_683_l.get(var5)); + } + + this.worldObj.field_814_b.add(var4); + } + + this.field_683_l.put(var5, var4); + } else { + System.out.println("Attempted to place a tile entity where there was no entity tile!"); + } + } + + public void func_359_e(int var1, int var2, int var3) { + ChunkPosition var4 = new ChunkPosition(var1, var2, var3); + if(this.field_692_c) { + this.worldObj.field_814_b.remove(this.field_683_l.remove(var4)); + } + + } + + public void func_358_c() { + this.field_692_c = true; + this.worldObj.field_814_b.addAll(this.field_683_l.values()); + + for(int var1 = 0; var1 < this.entities.length; ++var1) { + this.worldObj.func_464_a(this.entities[var1]); + } + + } + + public void func_331_d() { + this.field_692_c = false; + this.worldObj.field_814_b.removeAll(this.field_683_l.values()); + + for(int var1 = 0; var1 < this.entities.length; ++var1) { + this.worldObj.func_461_b(this.entities[var1]); + } + + } + + public void func_336_e() { + this.isModified = true; + } + + public void getEntitiesWithinAABBForEntity(Entity var1, AxisAlignedBB var2, List var3) { + int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D); + int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D); + if(var4 < 0) { + var4 = 0; + } + + if(var5 >= this.entities.length) { + var5 = this.entities.length - 1; + } + + for(int var6 = var4; var6 <= var5; ++var6) { + List var7 = this.entities[var6]; + + for(int var8 = 0; var8 < var7.size(); ++var8) { + Entity var9 = (Entity)var7.get(var8); + if(var9 != var1 && var9.boundingBox.intersectsWith(var2)) { + var3.add(var9); + } + } + } + + } + + public void getEntitiesOfTypeWithinAAAB(Class var1, AxisAlignedBB var2, List var3) { + int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D); + int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D); + if(var4 < 0) { + var4 = 0; + } + + if(var5 >= this.entities.length) { + var5 = this.entities.length - 1; + } + + for(int var6 = var4; var6 <= var5; ++var6) { + List var7 = this.entities[var6]; + + for(int var8 = 0; var8 < var7.size(); ++var8) { + Entity var9 = (Entity)var7.get(var8); + if(var1.isAssignableFrom(var9.getClass()) && var9.boundingBox.intersectsWith(var2)) { + var3.add(var9); + } + } + } + + } + + public boolean func_347_a(boolean var1) { + return this.field_679_p ? false : (this.field_677_r && this.worldObj.worldTime != this.field_676_s ? true : this.isModified); + } + + public int func_340_a(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9; + int var10; + int var11; + int var12; + for(var9 = var2; var9 < var5; ++var9) { + for(var10 = var4; var10 < var7; ++var10) { + var11 = var9 << 11 | var10 << 7 | var3; + var12 = var6 - var3; + System.arraycopy(this.blocks, var11, var1, var8, var12); + var8 += var12; + } + } + + for(var9 = var2; var9 < var5; ++var9) { + for(var10 = var4; var10 < var7; ++var10) { + var11 = (var9 << 11 | var10 << 7 | var3) >> 1; + var12 = (var6 - var3) / 2; + System.arraycopy(this.data.data, var11, var1, var8, var12); + var8 += var12; + } + } + + for(var9 = var2; var9 < var5; ++var9) { + for(var10 = var4; var10 < var7; ++var10) { + var11 = (var9 << 11 | var10 << 7 | var3) >> 1; + var12 = (var6 - var3) / 2; + System.arraycopy(this.blocklightMap.data, var11, var1, var8, var12); + var8 += var12; + } + } + + for(var9 = var2; var9 < var5; ++var9) { + for(var10 = var4; var10 < var7; ++var10) { + var11 = (var9 << 11 | var10 << 7 | var3) >> 1; + var12 = (var6 - var3) / 2; + System.arraycopy(this.skylightMap.data, var11, var1, var8, var12); + var8 += var12; + } + } + + return var8; + } + + public Random func_334_a(long var1) { + return new Random(this.worldObj.randomSeed + (long)(this.xPosition * this.xPosition * 4987142) + (long)(this.xPosition * 5947611) + (long)(this.zPosition * this.zPosition) * 4392871L + (long)(this.zPosition * 389711) ^ var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkCache.java b/minecraft_server/src/net/minecraft/src/ChunkCache.java new file mode 100644 index 0000000..98add77 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkCache.java @@ -0,0 +1,58 @@ +package net.minecraft.src; + +public class ChunkCache implements IBlockAccess { + private int field_823_a; + private int field_822_b; + private Chunk[][] field_825_c; + private World worldObj; + + public ChunkCache(World var1, int var2, int var3, int var4, int var5, int var6, int var7) { + this.worldObj = var1; + this.field_823_a = var2 >> 4; + this.field_822_b = var4 >> 4; + int var8 = var5 >> 4; + int var9 = var7 >> 4; + this.field_825_c = new Chunk[var8 - this.field_823_a + 1][var9 - this.field_822_b + 1]; + + for(int var10 = this.field_823_a; var10 <= var8; ++var10) { + for(int var11 = this.field_822_b; var11 <= var9; ++var11) { + this.field_825_c[var10 - this.field_823_a][var11 - this.field_822_b] = var1.getChunkFromChunkCoords(var10, var11); + } + } + + } + + public int getBlockId(int var1, int var2, int var3) { + if(var2 < 0) { + return 0; + } else if(var2 >= 128) { + return 0; + } else { + int var4 = (var1 >> 4) - this.field_823_a; + int var5 = (var3 >> 4) - this.field_822_b; + return this.field_825_c[var4][var5].getBlockID(var1 & 15, var2, var3 & 15); + } + } + + public int getBlockMetadata(int var1, int var2, int var3) { + if(var2 < 0) { + return 0; + } else if(var2 >= 128) { + return 0; + } else { + int var4 = (var1 >> 4) - this.field_823_a; + int var5 = (var3 >> 4) - this.field_822_b; + return this.field_825_c[var4][var5].getBlockMetadata(var1 & 15, var2, var3 & 15); + } + } + + public Material getBlockMaterial(int var1, int var2, int var3) { + int var4 = this.getBlockId(var1, var2, var3); + return var4 == 0 ? Material.air : Block.blocksList[var4].blockMaterial; + } + + public boolean doesBlockAllowAttachment(int var1, int var2, int var3) { + Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)]; + return var4 == null ? false : var4.allowsAttachment(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkCoordIntPair.java b/minecraft_server/src/net/minecraft/src/ChunkCoordIntPair.java new file mode 100644 index 0000000..aa92fc9 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkCoordIntPair.java @@ -0,0 +1,28 @@ +package net.minecraft.src; + +public class ChunkCoordIntPair { + public int field_152_a; + public int field_151_b; + + public ChunkCoordIntPair(int var1, int var2) { + this.field_152_a = var1; + this.field_151_b = var2; + } + + public int hashCode() { + return this.field_152_a << 8 | this.field_151_b; + } + + public boolean equals(Object var1) { + ChunkCoordIntPair var2 = (ChunkCoordIntPair)var1; + return var2.field_152_a == this.field_152_a && var2.field_151_b == this.field_151_b; + } + + public double func_73_a(Entity var1) { + double var2 = (double)(this.field_152_a * 16 + 8); + double var4 = (double)(this.field_151_b * 16 + 8); + double var6 = var2 - var1.posX; + double var8 = var4 - var1.posZ; + return var6 * var6 + var8 * var8; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkCoordinates.java b/minecraft_server/src/net/minecraft/src/ChunkCoordinates.java new file mode 100644 index 0000000..24cbeb2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkCoordinates.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +final class ChunkCoordinates { + public final int field_529_a; + public final int field_528_b; + + public ChunkCoordinates(int var1, int var2) { + this.field_529_a = var1; + this.field_528_b = var2; + } + + public boolean equals(Object var1) { + if(!(var1 instanceof ChunkCoordinates)) { + return false; + } else { + ChunkCoordinates var2 = (ChunkCoordinates)var1; + return this.field_529_a == var2.field_529_a && this.field_528_b == var2.field_528_b; + } + } + + public int hashCode() { + return this.field_529_a << 16 ^ this.field_528_b; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkLoader.java b/minecraft_server/src/net/minecraft/src/ChunkLoader.java new file mode 100644 index 0000000..2bbb2cf --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkLoader.java @@ -0,0 +1,207 @@ +package net.minecraft.src; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Iterator; + +public class ChunkLoader implements IChunkLoader { + private File field_945_a; + private boolean field_944_b; + + public ChunkLoader(File var1, boolean var2) { + this.field_945_a = var1; + this.field_944_b = var2; + } + + private File func_665_a(int var1, int var2) { + String var3 = "c." + Integer.toString(var1, 36) + "." + Integer.toString(var2, 36) + ".dat"; + String var4 = Integer.toString(var1 & 63, 36); + String var5 = Integer.toString(var2 & 63, 36); + File var6 = new File(this.field_945_a, var4); + if(!var6.exists()) { + if(!this.field_944_b) { + return null; + } + + var6.mkdir(); + } + + var6 = new File(var6, var5); + if(!var6.exists()) { + if(!this.field_944_b) { + return null; + } + + var6.mkdir(); + } + + var6 = new File(var6, var3); + return !var6.exists() && !this.field_944_b ? null : var6; + } + + public Chunk func_659_a(World var1, int var2, int var3) throws IOException { + File var4 = this.func_665_a(var2, var3); + if(var4 != null && var4.exists()) { + try { + FileInputStream var5 = new FileInputStream(var4); + NBTTagCompound var6 = CompressedStreamTools.func_770_a(var5); + if(!var6.hasKey("Level")) { + System.out.println("Chunk file at " + var2 + "," + var3 + " is missing level data, skipping"); + return null; + } + + if(!var6.getCompoundTag("Level").hasKey("Blocks")) { + System.out.println("Chunk file at " + var2 + "," + var3 + " is missing block data, skipping"); + return null; + } + + Chunk var7 = func_664_a(var1, var6.getCompoundTag("Level")); + if(!var7.func_351_a(var2, var3)) { + System.out.println("Chunk file at " + var2 + "," + var3 + " is in the wrong location; relocating. (Expected " + var2 + ", " + var3 + ", got " + var7.xPosition + ", " + var7.zPosition + ")"); + var6.setInteger("xPos", var2); + var6.setInteger("zPos", var3); + var7 = func_664_a(var1, var6.getCompoundTag("Level")); + } + + return var7; + } catch (Exception var8) { + var8.printStackTrace(); + } + } + + return null; + } + + public void func_662_a(World var1, Chunk var2) throws IOException { + var1.func_476_g(); + File var3 = this.func_665_a(var2.xPosition, var2.zPosition); + if(var3.exists()) { + var1.sizeOnDisk -= var3.length(); + } + + try { + File var4 = new File(this.field_945_a, "tmp_chunk.dat"); + FileOutputStream var5 = new FileOutputStream(var4); + NBTTagCompound var6 = new NBTTagCompound(); + NBTTagCompound var7 = new NBTTagCompound(); + var6.setTag("Level", var7); + this.func_663_a(var2, var1, var7); + CompressedStreamTools.func_769_a(var6, var5); + var5.close(); + if(var3.exists()) { + var3.delete(); + } + + var4.renameTo(var3); + var1.sizeOnDisk += var3.length(); + } catch (Exception var8) { + var8.printStackTrace(); + } + + } + + public void func_663_a(Chunk var1, World var2, NBTTagCompound var3) { + var2.func_476_g(); + var3.setInteger("xPos", var1.xPosition); + var3.setInteger("zPos", var1.zPosition); + var3.setLong("LastUpdate", var2.worldTime); + var3.setByteArray("Blocks", var1.blocks); + var3.setByteArray("Data", var1.data.data); + var3.setByteArray("SkyLight", var1.skylightMap.data); + var3.setByteArray("BlockLight", var1.blocklightMap.data); + var3.setByteArray("HeightMap", var1.heightMap); + var3.setBoolean("TerrainPopulated", var1.isTerrainPopulated); + var1.field_677_r = false; + NBTTagList var4 = new NBTTagList(); + + Iterator var6; + NBTTagCompound var8; + for(int var5 = 0; var5 < var1.entities.length; ++var5) { + var6 = var1.entities[var5].iterator(); + + while(var6.hasNext()) { + Entity var7 = (Entity)var6.next(); + var1.field_677_r = true; + var8 = new NBTTagCompound(); + if(var7.func_95_c(var8)) { + var4.setTag(var8); + } + } + } + + var3.setTag("Entities", var4); + NBTTagList var9 = new NBTTagList(); + var6 = var1.field_683_l.values().iterator(); + + while(var6.hasNext()) { + TileEntity var10 = (TileEntity)var6.next(); + var8 = new NBTTagCompound(); + var10.writeToNBT(var8); + var9.setTag(var8); + } + + var3.setTag("TileEntities", var9); + } + + public static Chunk func_664_a(World var0, NBTTagCompound var1) { + int var2 = var1.getInteger("xPos"); + int var3 = var1.getInteger("zPos"); + Chunk var4 = new Chunk(var0, var2, var3); + var4.blocks = var1.getByteArray("Blocks"); + var4.data = new NibbleArray(var1.getByteArray("Data")); + var4.skylightMap = new NibbleArray(var1.getByteArray("SkyLight")); + var4.blocklightMap = new NibbleArray(var1.getByteArray("BlockLight")); + var4.heightMap = var1.getByteArray("HeightMap"); + var4.isTerrainPopulated = var1.getBoolean("TerrainPopulated"); + if(!var4.data.isValid()) { + var4.data = new NibbleArray(var4.blocks.length); + } + + if(var4.heightMap == null || !var4.skylightMap.isValid()) { + var4.heightMap = new byte[256]; + var4.skylightMap = new NibbleArray(var4.blocks.length); + var4.func_353_b(); + } + + if(!var4.blocklightMap.isValid()) { + var4.blocklightMap = new NibbleArray(var4.blocks.length); + var4.func_348_a(); + } + + NBTTagList var5 = var1.getTagList("Entities"); + if(var5 != null) { + for(int var6 = 0; var6 < var5.tagCount(); ++var6) { + NBTTagCompound var7 = (NBTTagCompound)var5.tagAt(var6); + Entity var8 = EntityList.func_566_a(var7, var0); + var4.field_677_r = true; + if(var8 != null) { + var4.addEntity(var8); + } + } + } + + NBTTagList var10 = var1.getTagList("TileEntities"); + if(var10 != null) { + for(int var11 = 0; var11 < var10.tagCount(); ++var11) { + NBTTagCompound var12 = (NBTTagCompound)var10.tagAt(var11); + TileEntity var9 = TileEntity.createAndLoadEntity(var12); + if(var9 != null) { + var4.func_349_a(var9); + } + } + } + + return var4; + } + + public void func_661_a() { + } + + public void func_660_b() { + } + + public void func_4104_b(World var1, Chunk var2) throws IOException { + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkPosition.java b/minecraft_server/src/net/minecraft/src/ChunkPosition.java new file mode 100644 index 0000000..d0772b5 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkPosition.java @@ -0,0 +1,26 @@ +package net.minecraft.src; + +public class ChunkPosition { + public final int field_846_a; + public final int field_845_b; + public final int field_847_c; + + public ChunkPosition(int var1, int var2, int var3) { + this.field_846_a = var1; + this.field_845_b = var2; + this.field_847_c = var3; + } + + public boolean equals(Object var1) { + if(!(var1 instanceof ChunkPosition)) { + return false; + } else { + ChunkPosition var2 = (ChunkPosition)var1; + return var2.field_846_a == this.field_846_a && var2.field_845_b == this.field_845_b && var2.field_847_c == this.field_847_c; + } + } + + public int hashCode() { + return this.field_846_a * 8976890 + this.field_845_b * 981131 + this.field_847_c; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkProviderGenerate.java b/minecraft_server/src/net/minecraft/src/ChunkProviderGenerate.java new file mode 100644 index 0000000..a10dba7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkProviderGenerate.java @@ -0,0 +1,546 @@ +package net.minecraft.src; + +import java.util.Random; + +public class ChunkProviderGenerate implements IChunkProvider { + private Random rand; + private NoiseGeneratorOctaves field_705_k; + private NoiseGeneratorOctaves field_704_l; + private NoiseGeneratorOctaves field_703_m; + private NoiseGeneratorOctaves field_702_n; + private NoiseGeneratorOctaves field_701_o; + public NoiseGeneratorOctaves field_715_a; + public NoiseGeneratorOctaves field_714_b; + public NoiseGeneratorOctaves field_713_c; + private World worldObj; + private double[] field_4224_q; + private double[] field_698_r = new double[256]; + private double[] field_697_s = new double[256]; + private double[] field_696_t = new double[256]; + private MapGenBase field_695_u = new MapGenCaves(); + private MobSpawnerBase[] biomesForGeneration; + double[] field_4229_d; + double[] field_4228_e; + double[] field_4227_f; + double[] field_4226_g; + double[] field_4225_h; + int[][] field_707_i = new int[32][32]; + private double[] field_4222_w; + + public ChunkProviderGenerate(World var1, long var2) { + this.worldObj = var1; + this.rand = new Random(var2); + this.field_705_k = new NoiseGeneratorOctaves(this.rand, 16); + this.field_704_l = new NoiseGeneratorOctaves(this.rand, 16); + this.field_703_m = new NoiseGeneratorOctaves(this.rand, 8); + this.field_702_n = new NoiseGeneratorOctaves(this.rand, 4); + this.field_701_o = new NoiseGeneratorOctaves(this.rand, 4); + this.field_715_a = new NoiseGeneratorOctaves(this.rand, 10); + this.field_714_b = new NoiseGeneratorOctaves(this.rand, 16); + this.field_713_c = new NoiseGeneratorOctaves(this.rand, 8); + } + + public void generateTerrain(int var1, int var2, byte[] var3, MobSpawnerBase[] var4, double[] var5) { + byte var6 = 4; + byte var7 = 64; + int var8 = var6 + 1; + byte var9 = 17; + int var10 = var6 + 1; + this.field_4224_q = this.func_4058_a(this.field_4224_q, var1 * var6, 0, var2 * var6, var8, var9, var10); + + for(int var11 = 0; var11 < var6; ++var11) { + for(int var12 = 0; var12 < var6; ++var12) { + for(int var13 = 0; var13 < 16; ++var13) { + double var14 = 0.125D; + double var16 = this.field_4224_q[((var11 + 0) * var10 + var12 + 0) * var9 + var13 + 0]; + double var18 = this.field_4224_q[((var11 + 0) * var10 + var12 + 1) * var9 + var13 + 0]; + double var20 = this.field_4224_q[((var11 + 1) * var10 + var12 + 0) * var9 + var13 + 0]; + double var22 = this.field_4224_q[((var11 + 1) * var10 + var12 + 1) * var9 + var13 + 0]; + double var24 = (this.field_4224_q[((var11 + 0) * var10 + var12 + 0) * var9 + var13 + 1] - var16) * var14; + double var26 = (this.field_4224_q[((var11 + 0) * var10 + var12 + 1) * var9 + var13 + 1] - var18) * var14; + double var28 = (this.field_4224_q[((var11 + 1) * var10 + var12 + 0) * var9 + var13 + 1] - var20) * var14; + double var30 = (this.field_4224_q[((var11 + 1) * var10 + var12 + 1) * var9 + var13 + 1] - var22) * var14; + + for(int var32 = 0; var32 < 8; ++var32) { + double var33 = 0.25D; + double var35 = var16; + double var37 = var18; + double var39 = (var20 - var16) * var33; + double var41 = (var22 - var18) * var33; + + for(int var43 = 0; var43 < 4; ++var43) { + int var44 = var43 + var11 * 4 << 11 | 0 + var12 * 4 << 7 | var13 * 8 + var32; + short var45 = 128; + double var46 = 0.25D; + double var48 = var35; + double var50 = (var37 - var35) * var46; + + for(int var52 = 0; var52 < 4; ++var52) { + double var53 = var5[(var11 * 4 + var43) * 16 + var12 * 4 + var52]; + int var55 = 0; + if(var13 * 8 + var32 < var7) { + if(var53 < 0.5D && var13 * 8 + var32 >= var7 - 1) { + var55 = Block.ice.blockID; + } else { + var55 = Block.waterMoving.blockID; + } + } + + if(var48 > 0.0D) { + var55 = Block.stone.blockID; + } + + var3[var44] = (byte)var55; + var44 += var45; + var48 += var50; + } + + var35 += var39; + var37 += var41; + } + + var16 += var24; + var18 += var26; + var20 += var28; + var22 += var30; + } + } + } + } + + } + + public void replaceBlocksForBiome(int var1, int var2, byte[] var3, MobSpawnerBase[] var4) { + byte var5 = 64; + double var6 = 1.0D / 32.0D; + this.field_698_r = this.field_702_n.func_648_a(this.field_698_r, (double)(var1 * 16), (double)(var2 * 16), 0.0D, 16, 16, 1, var6, var6, 1.0D); + this.field_697_s = this.field_702_n.func_648_a(this.field_697_s, (double)(var2 * 16), 109.0134D, (double)(var1 * 16), 16, 1, 16, var6, 1.0D, var6); + this.field_696_t = this.field_701_o.func_648_a(this.field_696_t, (double)(var1 * 16), (double)(var2 * 16), 0.0D, 16, 16, 1, var6 * 2.0D, var6 * 2.0D, var6 * 2.0D); + + for(int var8 = 0; var8 < 16; ++var8) { + for(int var9 = 0; var9 < 16; ++var9) { + MobSpawnerBase var10 = var4[var8 * 16 + var9]; + boolean var11 = this.field_698_r[var8 + var9 * 16] + this.rand.nextDouble() * 0.2D > 0.0D; + boolean var12 = this.field_697_s[var8 + var9 * 16] + this.rand.nextDouble() * 0.2D > 3.0D; + int var13 = (int)(this.field_696_t[var8 + var9 * 16] / 3.0D + 3.0D + this.rand.nextDouble() * 0.25D); + int var14 = -1; + byte var15 = var10.topBlock; + byte var16 = var10.fillerBlock; + + for(int var17 = 127; var17 >= 0; --var17) { + int var18 = (var8 * 16 + var9) * 128 + var17; + if(var17 <= 0 + this.rand.nextInt(5)) { + var3[var18] = (byte)Block.bedrock.blockID; + } else { + byte var19 = var3[var18]; + if(var19 == 0) { + var14 = -1; + } else if(var19 == Block.stone.blockID) { + if(var14 == -1) { + if(var13 <= 0) { + var15 = 0; + var16 = (byte)Block.stone.blockID; + } else if(var17 >= var5 - 4 && var17 <= var5 + 1) { + var15 = var10.topBlock; + var16 = var10.fillerBlock; + if(var12) { + var15 = 0; + } + + if(var12) { + var16 = (byte)Block.gravel.blockID; + } + + if(var11) { + var15 = (byte)Block.sand.blockID; + } + + if(var11) { + var16 = (byte)Block.sand.blockID; + } + } + + if(var17 < var5 && var15 == 0) { + var15 = (byte)Block.waterMoving.blockID; + } + + var14 = var13; + if(var17 >= var5 - 1) { + var3[var18] = var15; + } else { + var3[var18] = var16; + } + } else if(var14 > 0) { + --var14; + var3[var18] = var16; + } + } + } + } + } + } + + } + + public Chunk func_363_b(int var1, int var2) { + this.rand.setSeed((long)var1 * 341873128712L + (long)var2 * 132897987541L); + byte[] var3 = new byte[-Short.MIN_VALUE]; + Chunk var4 = new Chunk(this.worldObj, var3, var1, var2); + this.biomesForGeneration = this.worldObj.func_4077_a().loadBlockGeneratorData(this.biomesForGeneration, var1 * 16, var2 * 16, 16, 16); + double[] var5 = this.worldObj.func_4077_a().temperature; + this.generateTerrain(var1, var2, var3, this.biomesForGeneration, var5); + this.replaceBlocksForBiome(var1, var2, var3, this.biomesForGeneration); + this.field_695_u.func_667_a(this, this.worldObj, var1, var2, var3); + var4.func_353_b(); + return var4; + } + + private double[] func_4058_a(double[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var1 == null) { + var1 = new double[var5 * var6 * var7]; + } + + double var8 = 684.412D; + double var10 = 684.412D; + double[] var12 = this.worldObj.func_4077_a().temperature; + double[] var13 = this.worldObj.func_4077_a().humidity; + this.field_4226_g = this.field_715_a.func_4103_a(this.field_4226_g, var2, var4, var5, var7, 1.121D, 1.121D, 0.5D); + this.field_4225_h = this.field_714_b.func_4103_a(this.field_4225_h, var2, var4, var5, var7, 200.0D, 200.0D, 0.5D); + this.field_4229_d = this.field_703_m.func_648_a(this.field_4229_d, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8 / 80.0D, var10 / 160.0D, var8 / 80.0D); + this.field_4228_e = this.field_705_k.func_648_a(this.field_4228_e, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8); + this.field_4227_f = this.field_704_l.func_648_a(this.field_4227_f, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8); + int var14 = 0; + int var15 = 0; + int var16 = 16 / var5; + + for(int var17 = 0; var17 < var5; ++var17) { + int var18 = var17 * var16 + var16 / 2; + + for(int var19 = 0; var19 < var7; ++var19) { + int var20 = var19 * var16 + var16 / 2; + double var21 = var12[var18 * 16 + var20]; + double var23 = var13[var18 * 16 + var20] * var21; + double var25 = 1.0D - var23; + var25 *= var25; + var25 *= var25; + var25 = 1.0D - var25; + double var27 = (this.field_4226_g[var15] + 256.0D) / 512.0D; + var27 *= var25; + if(var27 > 1.0D) { + var27 = 1.0D; + } + + double var29 = this.field_4225_h[var15] / 8000.0D; + if(var29 < 0.0D) { + var29 = -var29 * 0.3D; + } + + var29 = var29 * 3.0D - 2.0D; + if(var29 < 0.0D) { + var29 /= 2.0D; + if(var29 < -1.0D) { + var29 = -1.0D; + } + + var29 /= 1.4D; + var29 /= 2.0D; + var27 = 0.0D; + } else { + if(var29 > 1.0D) { + var29 = 1.0D; + } + + var29 /= 8.0D; + } + + if(var27 < 0.0D) { + var27 = 0.0D; + } + + var27 += 0.5D; + var29 = var29 * (double)var6 / 16.0D; + double var31 = (double)var6 / 2.0D + var29 * 4.0D; + ++var15; + + for(int var33 = 0; var33 < var6; ++var33) { + double var34 = 0.0D; + double var36 = ((double)var33 - var31) * 12.0D / var27; + if(var36 < 0.0D) { + var36 *= 4.0D; + } + + double var38 = this.field_4228_e[var14] / 512.0D; + double var40 = this.field_4227_f[var14] / 512.0D; + double var42 = (this.field_4229_d[var14] / 10.0D + 1.0D) / 2.0D; + if(var42 < 0.0D) { + var34 = var38; + } else if(var42 > 1.0D) { + var34 = var40; + } else { + var34 = var38 + (var40 - var38) * var42; + } + + var34 -= var36; + if(var33 > var6 - 4) { + double var44 = (double)((float)(var33 - (var6 - 4)) / 3.0F); + var34 = var34 * (1.0D - var44) + -10.0D * var44; + } + + var1[var14] = var34; + ++var14; + } + } + } + + return var1; + } + + public boolean chunkExists(int var1, int var2) { + return true; + } + + public void populate(IChunkProvider var1, int var2, int var3) { + BlockSand.fallInstantly = true; + int var4 = var2 * 16; + int var5 = var3 * 16; + MobSpawnerBase var6 = this.worldObj.func_4077_a().func_4067_a(var4 + 16, var5 + 16); + this.rand.setSeed(this.worldObj.randomSeed); + long var7 = this.rand.nextLong() / 2L * 2L + 1L; + long var9 = this.rand.nextLong() / 2L * 2L + 1L; + this.rand.setSeed((long)var2 * var7 + (long)var3 * var9 ^ this.worldObj.randomSeed); + double var11 = 0.25D; + int var13; + int var14; + int var15; + if(this.rand.nextInt(4) == 0) { + var13 = var4 + this.rand.nextInt(16) + 8; + var14 = this.rand.nextInt(128); + var15 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenLakes(Block.waterMoving.blockID)).generate(this.worldObj, this.rand, var13, var14, var15); + } + + if(this.rand.nextInt(8) == 0) { + var13 = var4 + this.rand.nextInt(16) + 8; + var14 = this.rand.nextInt(this.rand.nextInt(120) + 8); + var15 = var5 + this.rand.nextInt(16) + 8; + if(var14 < 64 || this.rand.nextInt(10) == 0) { + (new WorldGenLakes(Block.lavaMoving.blockID)).generate(this.worldObj, this.rand, var13, var14, var15); + } + } + + int var16; + for(var13 = 0; var13 < 8; ++var13) { + var14 = var4 + this.rand.nextInt(16) + 8; + var15 = this.rand.nextInt(128); + var16 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenDungeons()).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 10; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(128); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenClay(32)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 20; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(128); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.dirt.blockID, 32)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 10; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(128); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.gravel.blockID, 32)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 20; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(128); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.oreCoal.blockID, 16)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 20; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(64); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.oreIron.blockID, 8)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 2; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(32); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.oreGold.blockID, 8)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 8; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(16); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.oreRedstone.blockID, 7)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + for(var13 = 0; var13 < 1; ++var13) { + var14 = var4 + this.rand.nextInt(16); + var15 = this.rand.nextInt(16); + var16 = var5 + this.rand.nextInt(16); + (new WorldGenMinable(Block.oreDiamond.blockID, 7)).generate(this.worldObj, this.rand, var14, var15, var16); + } + + var11 = 0.5D; + var13 = (int)((this.field_713_c.func_647_a((double)var4 * var11, (double)var5 * var11) / 8.0D + this.rand.nextDouble() * 4.0D + 4.0D) / 3.0D); + var14 = 0; + if(this.rand.nextInt(10) == 0) { + ++var14; + } + + if(var6 == MobSpawnerBase.forest) { + var14 += var13 + 5; + } + + if(var6 == MobSpawnerBase.rainforest) { + var14 += var13 + 5; + } + + if(var6 == MobSpawnerBase.seasonalForest) { + var14 += var13 + 2; + } + + if(var6 == MobSpawnerBase.taiga) { + var14 += var13 + 5; + } + + if(var6 == MobSpawnerBase.desert) { + var14 -= 20; + } + + if(var6 == MobSpawnerBase.tundra) { + var14 -= 20; + } + + if(var6 == MobSpawnerBase.plains) { + var14 -= 20; + } + + Object var24 = new WorldGenTrees(); + if(this.rand.nextInt(10) == 0) { + var24 = new WorldGenBigTree(); + } + + if(var6 == MobSpawnerBase.rainforest && this.rand.nextInt(3) == 0) { + var24 = new WorldGenBigTree(); + } + + int var17; + int var18; + for(var16 = 0; var16 < var14; ++var16) { + var17 = var4 + this.rand.nextInt(16) + 8; + var18 = var5 + this.rand.nextInt(16) + 8; + ((WorldGenerator)var24).func_420_a(1.0D, 1.0D, 1.0D); + ((WorldGenerator)var24).generate(this.worldObj, this.rand, var17, this.worldObj.getHeightValue(var17, var18), var18); + } + + int var19; + for(var16 = 0; var16 < 2; ++var16) { + var17 = var4 + this.rand.nextInt(16) + 8; + var18 = this.rand.nextInt(128); + var19 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenFlowers(Block.plantYellow.blockID)).generate(this.worldObj, this.rand, var17, var18, var19); + } + + if(this.rand.nextInt(2) == 0) { + var16 = var4 + this.rand.nextInt(16) + 8; + var17 = this.rand.nextInt(128); + var18 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenFlowers(Block.plantRed.blockID)).generate(this.worldObj, this.rand, var16, var17, var18); + } + + if(this.rand.nextInt(4) == 0) { + var16 = var4 + this.rand.nextInt(16) + 8; + var17 = this.rand.nextInt(128); + var18 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenFlowers(Block.mushroomBrown.blockID)).generate(this.worldObj, this.rand, var16, var17, var18); + } + + if(this.rand.nextInt(8) == 0) { + var16 = var4 + this.rand.nextInt(16) + 8; + var17 = this.rand.nextInt(128); + var18 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenFlowers(Block.mushroomRed.blockID)).generate(this.worldObj, this.rand, var16, var17, var18); + } + + for(var16 = 0; var16 < 10; ++var16) { + var17 = var4 + this.rand.nextInt(16) + 8; + var18 = this.rand.nextInt(128); + var19 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenReed()).generate(this.worldObj, this.rand, var17, var18, var19); + } + + if(this.rand.nextInt(32) == 0) { + var16 = var4 + this.rand.nextInt(16) + 8; + var17 = this.rand.nextInt(128); + var18 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenPumpkin()).generate(this.worldObj, this.rand, var16, var17, var18); + } + + var16 = 0; + if(var6 == MobSpawnerBase.desert) { + var16 += 10; + } + + int var20; + for(var17 = 0; var17 < var16; ++var17) { + var18 = var4 + this.rand.nextInt(16) + 8; + var19 = this.rand.nextInt(128); + var20 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenCactus()).generate(this.worldObj, this.rand, var18, var19, var20); + } + + for(var17 = 0; var17 < 50; ++var17) { + var18 = var4 + this.rand.nextInt(16) + 8; + var19 = this.rand.nextInt(this.rand.nextInt(120) + 8); + var20 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenLiquids(Block.waterStill.blockID)).generate(this.worldObj, this.rand, var18, var19, var20); + } + + for(var17 = 0; var17 < 20; ++var17) { + var18 = var4 + this.rand.nextInt(16) + 8; + var19 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(112) + 8) + 8); + var20 = var5 + this.rand.nextInt(16) + 8; + (new WorldGenLiquids(Block.lavaStill.blockID)).generate(this.worldObj, this.rand, var18, var19, var20); + } + + this.field_4222_w = this.worldObj.func_4077_a().getTemperatures(this.field_4222_w, var4 + 8, var5 + 8, 16, 16); + + for(var17 = var4 + 8; var17 < var4 + 8 + 16; ++var17) { + for(var18 = var5 + 8; var18 < var5 + 8 + 16; ++var18) { + var19 = var17 - (var4 + 8); + var20 = var18 - (var5 + 8); + int var21 = this.worldObj.func_4075_e(var17, var18); + double var22 = this.field_4222_w[var19 * 16 + var20] - (double)(var21 - 64) / 64.0D * 0.3D; + if(var22 < 0.5D && var21 > 0 && var21 < 128 && this.worldObj.getBlockId(var17, var21, var18) == 0 && this.worldObj.getBlockMaterial(var17, var21 - 1, var18).func_218_c() && this.worldObj.getBlockMaterial(var17, var21 - 1, var18) != Material.ice) { + this.worldObj.setBlockWithNotify(var17, var21, var18, Block.snow.blockID); + } + } + } + + BlockSand.fallInstantly = false; + } + + public boolean saveWorld(boolean var1, IProgressUpdate var2) { + return true; + } + + public boolean func_361_a() { + return false; + } + + public boolean func_364_b() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkProviderHell.java b/minecraft_server/src/net/minecraft/src/ChunkProviderHell.java new file mode 100644 index 0000000..8a440bf --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkProviderHell.java @@ -0,0 +1,370 @@ +package net.minecraft.src; + +import java.util.Random; + +public class ChunkProviderHell implements IChunkProvider { + private Random field_4241_h; + private NoiseGeneratorOctaves field_4240_i; + private NoiseGeneratorOctaves field_4239_j; + private NoiseGeneratorOctaves field_4238_k; + private NoiseGeneratorOctaves field_4237_l; + private NoiseGeneratorOctaves field_4236_m; + public NoiseGeneratorOctaves field_4248_a; + public NoiseGeneratorOctaves field_4247_b; + private World field_4235_n; + private double[] field_4234_o; + private double[] field_4233_p = new double[256]; + private double[] field_4232_q = new double[256]; + private double[] field_4231_r = new double[256]; + private MapGenBase field_4230_s = new MapGenCavesHell(); + double[] field_4246_c; + double[] field_4245_d; + double[] field_4244_e; + double[] field_4243_f; + double[] field_4242_g; + + public ChunkProviderHell(World var1, long var2) { + this.field_4235_n = var1; + this.field_4241_h = new Random(var2); + this.field_4240_i = new NoiseGeneratorOctaves(this.field_4241_h, 16); + this.field_4239_j = new NoiseGeneratorOctaves(this.field_4241_h, 16); + this.field_4238_k = new NoiseGeneratorOctaves(this.field_4241_h, 8); + this.field_4237_l = new NoiseGeneratorOctaves(this.field_4241_h, 4); + this.field_4236_m = new NoiseGeneratorOctaves(this.field_4241_h, 4); + this.field_4248_a = new NoiseGeneratorOctaves(this.field_4241_h, 10); + this.field_4247_b = new NoiseGeneratorOctaves(this.field_4241_h, 16); + } + + public void func_4062_a(int var1, int var2, byte[] var3) { + byte var4 = 4; + byte var5 = 32; + int var6 = var4 + 1; + byte var7 = 17; + int var8 = var4 + 1; + this.field_4234_o = this.func_4060_a(this.field_4234_o, var1 * var4, 0, var2 * var4, var6, var7, var8); + + for(int var9 = 0; var9 < var4; ++var9) { + for(int var10 = 0; var10 < var4; ++var10) { + for(int var11 = 0; var11 < 16; ++var11) { + double var12 = 0.125D; + double var14 = this.field_4234_o[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 0]; + double var16 = this.field_4234_o[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 0]; + double var18 = this.field_4234_o[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 0]; + double var20 = this.field_4234_o[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 0]; + double var22 = (this.field_4234_o[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 1] - var14) * var12; + double var24 = (this.field_4234_o[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 1] - var16) * var12; + double var26 = (this.field_4234_o[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 1] - var18) * var12; + double var28 = (this.field_4234_o[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 1] - var20) * var12; + + for(int var30 = 0; var30 < 8; ++var30) { + double var31 = 0.25D; + double var33 = var14; + double var35 = var16; + double var37 = (var18 - var14) * var31; + double var39 = (var20 - var16) * var31; + + for(int var41 = 0; var41 < 4; ++var41) { + int var42 = var41 + var9 * 4 << 11 | 0 + var10 * 4 << 7 | var11 * 8 + var30; + short var43 = 128; + double var44 = 0.25D; + double var46 = var33; + double var48 = (var35 - var33) * var44; + + for(int var50 = 0; var50 < 4; ++var50) { + int var51 = 0; + if(var11 * 8 + var30 < var5) { + var51 = Block.lavaMoving.blockID; + } + + if(var46 > 0.0D) { + var51 = Block.bloodStone.blockID; + } + + var3[var42] = (byte)var51; + var42 += var43; + var46 += var48; + } + + var33 += var37; + var35 += var39; + } + + var14 += var22; + var16 += var24; + var18 += var26; + var20 += var28; + } + } + } + } + + } + + public void func_4061_b(int var1, int var2, byte[] var3) { + byte var4 = 64; + double var5 = 1.0D / 32.0D; + this.field_4233_p = this.field_4237_l.func_648_a(this.field_4233_p, (double)(var1 * 16), (double)(var2 * 16), 0.0D, 16, 16, 1, var5, var5, 1.0D); + this.field_4232_q = this.field_4237_l.func_648_a(this.field_4232_q, (double)(var2 * 16), 109.0134D, (double)(var1 * 16), 16, 1, 16, var5, 1.0D, var5); + this.field_4231_r = this.field_4236_m.func_648_a(this.field_4231_r, (double)(var1 * 16), (double)(var2 * 16), 0.0D, 16, 16, 1, var5 * 2.0D, var5 * 2.0D, var5 * 2.0D); + + for(int var7 = 0; var7 < 16; ++var7) { + for(int var8 = 0; var8 < 16; ++var8) { + boolean var9 = this.field_4233_p[var7 + var8 * 16] + this.field_4241_h.nextDouble() * 0.2D > 0.0D; + boolean var10 = this.field_4232_q[var7 + var8 * 16] + this.field_4241_h.nextDouble() * 0.2D > 0.0D; + int var11 = (int)(this.field_4231_r[var7 + var8 * 16] / 3.0D + 3.0D + this.field_4241_h.nextDouble() * 0.25D); + int var12 = -1; + byte var13 = (byte)Block.bloodStone.blockID; + byte var14 = (byte)Block.bloodStone.blockID; + + for(int var15 = 127; var15 >= 0; --var15) { + int var16 = (var7 * 16 + var8) * 128 + var15; + if(var15 >= 127 - this.field_4241_h.nextInt(5)) { + var3[var16] = (byte)Block.bedrock.blockID; + } else if(var15 <= 0 + this.field_4241_h.nextInt(5)) { + var3[var16] = (byte)Block.bedrock.blockID; + } else { + byte var17 = var3[var16]; + if(var17 == 0) { + var12 = -1; + } else if(var17 == Block.bloodStone.blockID) { + if(var12 == -1) { + if(var11 <= 0) { + var13 = 0; + var14 = (byte)Block.bloodStone.blockID; + } else if(var15 >= var4 - 4 && var15 <= var4 + 1) { + var13 = (byte)Block.bloodStone.blockID; + var14 = (byte)Block.bloodStone.blockID; + if(var10) { + var13 = (byte)Block.gravel.blockID; + } + + if(var10) { + var14 = (byte)Block.bloodStone.blockID; + } + + if(var9) { + var13 = (byte)Block.slowSand.blockID; + } + + if(var9) { + var14 = (byte)Block.slowSand.blockID; + } + } + + if(var15 < var4 && var13 == 0) { + var13 = (byte)Block.lavaMoving.blockID; + } + + var12 = var11; + if(var15 >= var4 - 1) { + var3[var16] = var13; + } else { + var3[var16] = var14; + } + } else if(var12 > 0) { + --var12; + var3[var16] = var14; + } + } + } + } + } + } + + } + + public Chunk func_363_b(int var1, int var2) { + this.field_4241_h.setSeed((long)var1 * 341873128712L + (long)var2 * 132897987541L); + byte[] var3 = new byte[-Short.MIN_VALUE]; + this.func_4062_a(var1, var2, var3); + this.func_4061_b(var1, var2, var3); + this.field_4230_s.func_667_a(this, this.field_4235_n, var1, var2, var3); + Chunk var4 = new Chunk(this.field_4235_n, var3, var1, var2); + var4.func_353_b(); + var4.func_4053_c(); + return var4; + } + + private double[] func_4060_a(double[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var1 == null) { + var1 = new double[var5 * var6 * var7]; + } + + double var8 = 684.412D; + double var10 = 2053.236D; + this.field_4243_f = this.field_4248_a.func_648_a(this.field_4243_f, (double)var2, (double)var3, (double)var4, var5, 1, var7, 1.0D, 0.0D, 1.0D); + this.field_4242_g = this.field_4247_b.func_648_a(this.field_4242_g, (double)var2, (double)var3, (double)var4, var5, 1, var7, 100.0D, 0.0D, 100.0D); + this.field_4246_c = this.field_4238_k.func_648_a(this.field_4246_c, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8 / 80.0D, var10 / 60.0D, var8 / 80.0D); + this.field_4245_d = this.field_4240_i.func_648_a(this.field_4245_d, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8); + this.field_4244_e = this.field_4239_j.func_648_a(this.field_4244_e, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8); + int var12 = 0; + int var13 = 0; + double[] var14 = new double[var6]; + + int var15; + for(var15 = 0; var15 < var6; ++var15) { + var14[var15] = Math.cos((double)var15 * Math.PI * 6.0D / (double)var6) * 2.0D; + double var16 = (double)var15; + if(var15 > var6 / 2) { + var16 = (double)(var6 - 1 - var15); + } + + if(var16 < 4.0D) { + var16 = 4.0D - var16; + var14[var15] -= var16 * var16 * var16 * 10.0D; + } + } + + for(var15 = 0; var15 < var5; ++var15) { + for(int var36 = 0; var36 < var7; ++var36) { + double var17 = (this.field_4243_f[var13] + 256.0D) / 512.0D; + if(var17 > 1.0D) { + var17 = 1.0D; + } + + double var19 = 0.0D; + double var21 = this.field_4242_g[var13] / 8000.0D; + if(var21 < 0.0D) { + var21 = -var21; + } + + var21 = var21 * 3.0D - 3.0D; + if(var21 < 0.0D) { + var21 /= 2.0D; + if(var21 < -1.0D) { + var21 = -1.0D; + } + + var21 /= 1.4D; + var21 /= 2.0D; + var17 = 0.0D; + } else { + if(var21 > 1.0D) { + var21 = 1.0D; + } + + var21 /= 6.0D; + } + + var17 += 0.5D; + var21 = var21 * (double)var6 / 16.0D; + ++var13; + + for(int var23 = 0; var23 < var6; ++var23) { + double var24 = 0.0D; + double var26 = var14[var23]; + double var28 = this.field_4245_d[var12] / 512.0D; + double var30 = this.field_4244_e[var12] / 512.0D; + double var32 = (this.field_4246_c[var12] / 10.0D + 1.0D) / 2.0D; + if(var32 < 0.0D) { + var24 = var28; + } else if(var32 > 1.0D) { + var24 = var30; + } else { + var24 = var28 + (var30 - var28) * var32; + } + + var24 -= var26; + double var34; + if(var23 > var6 - 4) { + var34 = (double)((float)(var23 - (var6 - 4)) / 3.0F); + var24 = var24 * (1.0D - var34) + -10.0D * var34; + } + + if((double)var23 < var19) { + var34 = (var19 - (double)var23) / 4.0D; + if(var34 < 0.0D) { + var34 = 0.0D; + } + + if(var34 > 1.0D) { + var34 = 1.0D; + } + + var24 = var24 * (1.0D - var34) + -10.0D * var34; + } + + var1[var12] = var24; + ++var12; + } + } + } + + return var1; + } + + public boolean chunkExists(int var1, int var2) { + return true; + } + + public void populate(IChunkProvider var1, int var2, int var3) { + BlockSand.fallInstantly = true; + int var4 = var2 * 16; + int var5 = var3 * 16; + + int var6; + int var7; + int var8; + int var9; + for(var6 = 0; var6 < 8; ++var6) { + var7 = var4 + this.field_4241_h.nextInt(16) + 8; + var8 = this.field_4241_h.nextInt(120) + 4; + var9 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenHellLava(Block.lavaStill.blockID)).generate(this.field_4235_n, this.field_4241_h, var7, var8, var9); + } + + var6 = this.field_4241_h.nextInt(this.field_4241_h.nextInt(10) + 1) + 1; + + int var10; + for(var7 = 0; var7 < var6; ++var7) { + var8 = var4 + this.field_4241_h.nextInt(16) + 8; + var9 = this.field_4241_h.nextInt(120) + 4; + var10 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenFire()).generate(this.field_4235_n, this.field_4241_h, var8, var9, var10); + } + + var6 = this.field_4241_h.nextInt(this.field_4241_h.nextInt(10) + 1); + + for(var7 = 0; var7 < var6; ++var7) { + var8 = var4 + this.field_4241_h.nextInt(16) + 8; + var9 = this.field_4241_h.nextInt(120) + 4; + var10 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenLightStone1()).generate(this.field_4235_n, this.field_4241_h, var8, var9, var10); + } + + for(var7 = 0; var7 < 10; ++var7) { + var8 = var4 + this.field_4241_h.nextInt(16) + 8; + var9 = this.field_4241_h.nextInt(128); + var10 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenLightStone2()).generate(this.field_4235_n, this.field_4241_h, var8, var9, var10); + } + + if(this.field_4241_h.nextInt(1) == 0) { + var7 = var4 + this.field_4241_h.nextInt(16) + 8; + var8 = this.field_4241_h.nextInt(128); + var9 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenFlowers(Block.mushroomBrown.blockID)).generate(this.field_4235_n, this.field_4241_h, var7, var8, var9); + } + + if(this.field_4241_h.nextInt(1) == 0) { + var7 = var4 + this.field_4241_h.nextInt(16) + 8; + var8 = this.field_4241_h.nextInt(128); + var9 = var5 + this.field_4241_h.nextInt(16) + 8; + (new WorldGenFlowers(Block.mushroomRed.blockID)).generate(this.field_4235_n, this.field_4241_h, var7, var8, var9); + } + + BlockSand.fallInstantly = false; + } + + public boolean saveWorld(boolean var1, IProgressUpdate var2) { + return true; + } + + public boolean func_361_a() { + return false; + } + + public boolean func_364_b() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java b/minecraft_server/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java new file mode 100644 index 0000000..bf79737 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java @@ -0,0 +1,201 @@ +package net.minecraft.src; + +import java.io.IOException; + +public class ChunkProviderLoadOrGenerate implements IChunkProvider { + private Chunk field_723_c; + private IChunkProvider field_722_d; + private IChunkLoader field_721_e; + private Chunk[] chunks = new Chunk[1024]; + private World worldObj; + int field_717_a = -999999999; + int field_716_b = -999999999; + private Chunk field_718_h; + + public ChunkProviderLoadOrGenerate(World var1, IChunkLoader var2, IChunkProvider var3) { + this.field_723_c = new Chunk(var1, new byte[-Short.MIN_VALUE], 0, 0); + this.field_723_c.field_678_q = true; + this.field_723_c.field_679_p = true; + this.worldObj = var1; + this.field_721_e = var2; + this.field_722_d = var3; + } + + public boolean chunkExists(int var1, int var2) { + if(var1 == this.field_717_a && var2 == this.field_716_b && this.field_718_h != null) { + return true; + } else { + int var3 = var1 & 31; + int var4 = var2 & 31; + int var5 = var3 + var4 * 32; + return this.chunks[var5] != null && (this.chunks[var5] == this.field_723_c || this.chunks[var5].func_351_a(var1, var2)); + } + } + + public Chunk func_363_b(int var1, int var2) { + if(var1 == this.field_717_a && var2 == this.field_716_b && this.field_718_h != null) { + return this.field_718_h; + } else { + int var3 = var1 & 31; + int var4 = var2 & 31; + int var5 = var3 + var4 * 32; + if(!this.chunkExists(var1, var2)) { + if(this.chunks[var5] != null) { + this.chunks[var5].func_331_d(); + this.func_370_b(this.chunks[var5]); + this.func_371_a(this.chunks[var5]); + } + + Chunk var6 = this.func_4059_c(var1, var2); + if(var6 == null) { + if(this.field_722_d == null) { + var6 = this.field_723_c; + } else { + var6 = this.field_722_d.func_363_b(var1, var2); + } + } + + this.chunks[var5] = var6; + var6.func_4053_c(); + if(this.chunks[var5] != null) { + this.chunks[var5].func_358_c(); + } + + if(!this.chunks[var5].isTerrainPopulated && this.chunkExists(var1 + 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 + 1, var2)) { + this.populate(this, var1, var2); + } + + if(this.chunkExists(var1 - 1, var2) && !this.func_363_b(var1 - 1, var2).isTerrainPopulated && this.chunkExists(var1 - 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 - 1, var2)) { + this.populate(this, var1 - 1, var2); + } + + if(this.chunkExists(var1, var2 - 1) && !this.func_363_b(var1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 + 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 + 1, var2)) { + this.populate(this, var1, var2 - 1); + } + + if(this.chunkExists(var1 - 1, var2 - 1) && !this.func_363_b(var1 - 1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 - 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 - 1, var2)) { + this.populate(this, var1 - 1, var2 - 1); + } + } + + this.field_717_a = var1; + this.field_716_b = var2; + this.field_718_h = this.chunks[var5]; + return this.chunks[var5]; + } + } + + private Chunk func_4059_c(int var1, int var2) { + if(this.field_721_e == null) { + return null; + } else { + try { + Chunk var3 = this.field_721_e.func_659_a(this.worldObj, var1, var2); + if(var3 != null) { + var3.field_676_s = this.worldObj.worldTime; + } + + return var3; + } catch (Exception var4) { + var4.printStackTrace(); + return null; + } + } + } + + private void func_371_a(Chunk var1) { + if(this.field_721_e != null) { + try { + this.field_721_e.func_4104_b(this.worldObj, var1); + } catch (Exception var3) { + var3.printStackTrace(); + } + + } + } + + private void func_370_b(Chunk var1) { + if(this.field_721_e != null) { + try { + var1.field_676_s = this.worldObj.worldTime; + this.field_721_e.func_662_a(this.worldObj, var1); + } catch (IOException var3) { + var3.printStackTrace(); + } + + } + } + + public void populate(IChunkProvider var1, int var2, int var3) { + Chunk var4 = this.func_363_b(var2, var3); + if(!var4.isTerrainPopulated) { + var4.isTerrainPopulated = true; + if(this.field_722_d != null) { + this.field_722_d.populate(var1, var2, var3); + var4.func_336_e(); + } + } + + } + + public boolean saveWorld(boolean var1, IProgressUpdate var2) { + int var3 = 0; + int var4 = 0; + int var5; + if(var2 != null) { + for(var5 = 0; var5 < this.chunks.length; ++var5) { + if(this.chunks[var5] != null && this.chunks[var5].func_347_a(var1)) { + ++var4; + } + } + } + + var5 = 0; + + for(int var6 = 0; var6 < this.chunks.length; ++var6) { + if(this.chunks[var6] != null) { + if(var1 && !this.chunks[var6].field_679_p) { + this.func_371_a(this.chunks[var6]); + } + + if(this.chunks[var6].func_347_a(var1)) { + this.func_370_b(this.chunks[var6]); + this.chunks[var6].isModified = false; + ++var3; + if(var3 == 2 && !var1) { + return false; + } + + if(var2 != null) { + ++var5; + if(var5 % 10 == 0) { + var2.func_437_a(var5 * 100 / var4); + } + } + } + } + } + + if(var1) { + if(this.field_721_e == null) { + return true; + } + + this.field_721_e.func_660_b(); + } + + return true; + } + + public boolean func_361_a() { + if(this.field_721_e != null) { + this.field_721_e.func_661_a(); + } + + return this.field_722_d.func_361_a(); + } + + public boolean func_364_b() { + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ChunkProviderServer.java b/minecraft_server/src/net/minecraft/src/ChunkProviderServer.java new file mode 100644 index 0000000..2258a30 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ChunkProviderServer.java @@ -0,0 +1,200 @@ +package net.minecraft.src; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class ChunkProviderServer implements IChunkProvider { + private Set field_725_a = new HashSet(); + private Chunk field_724_b; + private IChunkProvider field_730_c; + private IChunkLoader field_729_d; + private Map field_728_e = new HashMap(); + private List field_727_f = new ArrayList(); + private WorldServer field_726_g; + + public ChunkProviderServer(WorldServer var1, IChunkLoader var2, IChunkProvider var3) { + this.field_724_b = new Chunk(var1, new byte[-Short.MIN_VALUE], 0, 0); + this.field_724_b.field_678_q = true; + this.field_724_b.field_679_p = true; + this.field_726_g = var1; + this.field_729_d = var2; + this.field_730_c = var3; + } + + public boolean chunkExists(int var1, int var2) { + ChunkCoordinates var3 = new ChunkCoordinates(var1, var2); + return this.field_728_e.containsKey(var3); + } + + public void func_374_c(int var1, int var2) { + int var3 = var1 * 16 + 8 - this.field_726_g.spawnX; + int var4 = var2 * 16 + 8 - this.field_726_g.spawnZ; + short var5 = 128; + if(var3 < -var5 || var3 > var5 || var4 < -var5 || var4 > var5) { + this.field_725_a.add(new ChunkCoordinates(var1, var2)); + } + + } + + public Chunk loadChunk(int var1, int var2) { + ChunkCoordinates var3 = new ChunkCoordinates(var1, var2); + this.field_725_a.remove(new ChunkCoordinates(var1, var2)); + Chunk var4 = (Chunk)this.field_728_e.get(var3); + if(var4 == null) { + var4 = this.func_4063_e(var1, var2); + if(var4 == null) { + if(this.field_730_c == null) { + var4 = this.field_724_b; + } else { + var4 = this.field_730_c.func_363_b(var1, var2); + } + } + + this.field_728_e.put(var3, var4); + this.field_727_f.add(var4); + var4.func_4053_c(); + if(var4 != null) { + var4.func_358_c(); + } + + if(!var4.isTerrainPopulated && this.chunkExists(var1 + 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 + 1, var2)) { + this.populate(this, var1, var2); + } + + if(this.chunkExists(var1 - 1, var2) && !this.func_363_b(var1 - 1, var2).isTerrainPopulated && this.chunkExists(var1 - 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 - 1, var2)) { + this.populate(this, var1 - 1, var2); + } + + if(this.chunkExists(var1, var2 - 1) && !this.func_363_b(var1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 + 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 + 1, var2)) { + this.populate(this, var1, var2 - 1); + } + + if(this.chunkExists(var1 - 1, var2 - 1) && !this.func_363_b(var1 - 1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 - 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 - 1, var2)) { + this.populate(this, var1 - 1, var2 - 1); + } + } + + return var4; + } + + public Chunk func_363_b(int var1, int var2) { + ChunkCoordinates var3 = new ChunkCoordinates(var1, var2); + Chunk var4 = (Chunk)this.field_728_e.get(var3); + return var4 == null ? (this.field_726_g.field_9209_x ? this.loadChunk(var1, var2) : this.field_724_b) : var4; + } + + private Chunk func_4063_e(int var1, int var2) { + if(this.field_729_d == null) { + return null; + } else { + try { + Chunk var3 = this.field_729_d.func_659_a(this.field_726_g, var1, var2); + if(var3 != null) { + var3.field_676_s = this.field_726_g.worldTime; + } + + return var3; + } catch (Exception var4) { + var4.printStackTrace(); + return null; + } + } + } + + private void func_375_a(Chunk var1) { + if(this.field_729_d != null) { + try { + this.field_729_d.func_4104_b(this.field_726_g, var1); + } catch (Exception var3) { + var3.printStackTrace(); + } + + } + } + + private void func_373_b(Chunk var1) { + if(this.field_729_d != null) { + try { + var1.field_676_s = this.field_726_g.worldTime; + this.field_729_d.func_662_a(this.field_726_g, var1); + } catch (IOException var3) { + var3.printStackTrace(); + } + + } + } + + public void populate(IChunkProvider var1, int var2, int var3) { + Chunk var4 = this.func_363_b(var2, var3); + if(!var4.isTerrainPopulated) { + var4.isTerrainPopulated = true; + if(this.field_730_c != null) { + this.field_730_c.populate(var1, var2, var3); + var4.func_336_e(); + } + } + + } + + public boolean saveWorld(boolean var1, IProgressUpdate var2) { + int var3 = 0; + + for(int var4 = 0; var4 < this.field_727_f.size(); ++var4) { + Chunk var5 = (Chunk)this.field_727_f.get(var4); + if(var1 && !var5.field_679_p) { + this.func_375_a(var5); + } + + if(var5.func_347_a(var1)) { + this.func_373_b(var5); + var5.isModified = false; + ++var3; + if(var3 == 32 && !var1) { + return false; + } + } + } + + if(var1) { + if(this.field_729_d == null) { + return true; + } + + this.field_729_d.func_660_b(); + } + + return true; + } + + public boolean func_361_a() { + if(!this.field_726_g.field_816_A) { + for(int var1 = 0; var1 < 100; ++var1) { + if(!this.field_725_a.isEmpty()) { + ChunkCoordinates var2 = (ChunkCoordinates)this.field_725_a.iterator().next(); + Chunk var3 = this.func_363_b(var2.field_529_a, var2.field_528_b); + var3.func_331_d(); + this.func_373_b(var3); + this.func_375_a(var3); + this.field_725_a.remove(var2); + this.field_728_e.remove(var2); + this.field_727_f.remove(var3); + } + } + + if(this.field_729_d != null) { + this.field_729_d.func_661_a(); + } + } + + return this.field_730_c.func_361_a(); + } + + public boolean func_364_b() { + return !this.field_726_g.field_816_A; + } +} diff --git a/minecraft_server/src/net/minecraft/src/CompressedStreamTools.java b/minecraft_server/src/net/minecraft/src/CompressedStreamTools.java new file mode 100644 index 0000000..e6891e8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/CompressedStreamTools.java @@ -0,0 +1,78 @@ +package net.minecraft.src; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +public class CompressedStreamTools { + public static NBTTagCompound func_770_a(InputStream var0) throws IOException { + DataInputStream var1 = new DataInputStream(new GZIPInputStream(var0)); + + NBTTagCompound var2; + try { + var2 = func_774_a(var1); + } finally { + var1.close(); + } + + return var2; + } + + public static void func_769_a(NBTTagCompound var0, OutputStream var1) throws IOException { + DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1)); + + try { + func_771_a(var0, var2); + } finally { + var2.close(); + } + + } + + public static NBTTagCompound func_773_a(byte[] var0) throws IOException { + DataInputStream var1 = new DataInputStream(new GZIPInputStream(new ByteArrayInputStream(var0))); + + NBTTagCompound var2; + try { + var2 = func_774_a(var1); + } finally { + var1.close(); + } + + return var2; + } + + public static byte[] func_772_a(NBTTagCompound var0) throws IOException { + ByteArrayOutputStream var1 = new ByteArrayOutputStream(); + DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1)); + + try { + func_771_a(var0, var2); + } finally { + var2.close(); + } + + return var1.toByteArray(); + } + + public static NBTTagCompound func_774_a(DataInput var0) throws IOException { + NBTBase var1 = NBTBase.readTag(var0); + if(var1 instanceof NBTTagCompound) { + return (NBTTagCompound)var1; + } else { + throw new IOException("Root tag must be a named compound tag"); + } + } + + public static void func_771_a(NBTTagCompound var0, DataOutput var1) throws IOException { + NBTBase.writeTag(var0, var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ConsoleLogFormatter.java b/minecraft_server/src/net/minecraft/src/ConsoleLogFormatter.java new file mode 100644 index 0000000..05eb92a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ConsoleLogFormatter.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.logging.Formatter; +import java.util.logging.Level; +import java.util.logging.LogRecord; + +final class ConsoleLogFormatter extends Formatter { + private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + public String format(LogRecord var1) { + StringBuilder var2 = new StringBuilder(); + var2.append(this.dateFormat.format(Long.valueOf(var1.getMillis()))); + Level var3 = var1.getLevel(); + if(var3 == Level.FINEST) { + var2.append(" [FINEST] "); + } else if(var3 == Level.FINER) { + var2.append(" [FINER] "); + } else if(var3 == Level.FINE) { + var2.append(" [FINE] "); + } else if(var3 == Level.INFO) { + var2.append(" [INFO] "); + } else if(var3 == Level.WARNING) { + var2.append(" [WARNING] "); + } else if(var3 == Level.SEVERE) { + var2.append(" [SEVERE] "); + } else if(var3 == Level.SEVERE) { + var2.append(" [" + var3.getLocalizedName() + "] "); + } + + var2.append(var1.getMessage()); + var2.append('\n'); + Throwable var4 = var1.getThrown(); + if(var4 != null) { + StringWriter var5 = new StringWriter(); + var4.printStackTrace(new PrintWriter(var5)); + var2.append(var5.toString()); + } + + return var2.toString(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ConsoleLogManager.java b/minecraft_server/src/net/minecraft/src/ConsoleLogManager.java new file mode 100644 index 0000000..0cdef01 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ConsoleLogManager.java @@ -0,0 +1,27 @@ +package net.minecraft.src; + +import java.util.logging.ConsoleHandler; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class ConsoleLogManager { + public static Logger logger = Logger.getLogger("Minecraft"); + + public static void init() { + ConsoleLogFormatter var0 = new ConsoleLogFormatter(); + logger.setUseParentHandlers(false); + ConsoleHandler var1 = new ConsoleHandler(); + var1.setFormatter(var0); + logger.addHandler(var1); + + try { + FileHandler var2 = new FileHandler("server.log", true); + var2.setFormatter(var0); + logger.addHandler(var2); + } catch (Exception var3) { + logger.log(Level.WARNING, "Failed to log to server.log", var3); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/Entity.java b/minecraft_server/src/net/minecraft/src/Entity.java new file mode 100644 index 0000000..57de6bb --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Entity.java @@ -0,0 +1,816 @@ +package net.minecraft.src; + +import java.util.List; +import java.util.Random; + +public abstract class Entity { + private static int field_384_a = 0; + public int field_331_c = field_384_a++; + public double field_9094_h = 1.0D; + public boolean field_329_e = false; + public Entity field_328_f; + public Entity field_327_g; + public World worldObj; + public double prevPosX; + public double prevPosY; + public double prevPosZ; + public double posX; + public double posY; + public double posZ; + public double motionX; + public double motionY; + public double motionZ; + public float rotationYaw; + public float rotationPitch; + public float prevRotationYaw; + public float prevRotationPitch; + public final AxisAlignedBB boundingBox = AxisAlignedBB.getBoundingBox(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D); + public boolean onGround = false; + public boolean field_9084_B; + public boolean field_9082_C; + public boolean field_9080_D = false; + public boolean field_9078_E = false; + public boolean field_9077_F = true; + public boolean field_304_B = false; + public float yOffset = 0.0F; + public float width = 0.6F; + public float height = 1.8F; + public float field_9075_K = 0.0F; + public float field_9074_L = 0.0F; + protected boolean entityWalks = true; + protected float fallDistance = 0.0F; + private int field_6151_b = 1; + public double field_9071_O; + public double field_9070_P; + public double field_9069_Q; + public float field_9068_R = 0.0F; + public float field_9067_S = 0.0F; + public boolean field_9066_T = false; + public float field_286_P = 0.0F; + public boolean field_9065_V = false; + protected Random field_9064_W = new Random(); + public int field_9063_X = 0; + public int field_9062_Y = 1; + public int field_9061_Z = 0; + protected int field_9087_aa = 300; + protected boolean field_9085_ab = false; + public int field_9083_ac = 0; + public int air = 300; + private boolean field_4131_c = true; + protected boolean field_9079_ae = false; + private double field_4130_d; + private double field_4128_e; + public boolean field_276_Z = false; + public int field_307_aa; + public int field_305_ab; + public int field_303_ac; + + public Entity(World var1) { + this.worldObj = var1; + this.setPosition(0.0D, 0.0D, 0.0D); + } + + public boolean equals(Object var1) { + return var1 instanceof Entity ? ((Entity)var1).field_331_c == this.field_331_c : false; + } + + public int hashCode() { + return this.field_331_c; + } + + public void setEntityDead() { + this.field_304_B = true; + } + + protected void setSize(float var1, float var2) { + this.width = var1; + this.height = var2; + } + + protected void setRotation(float var1, float var2) { + this.rotationYaw = var1; + this.rotationPitch = var2; + } + + public void setPosition(double var1, double var3, double var5) { + this.posX = var1; + this.posY = var3; + this.posZ = var5; + float var7 = this.width / 2.0F; + float var8 = this.height; + this.boundingBox.setBounds(var1 - (double)var7, var3 - (double)this.yOffset + (double)this.field_9068_R, var5 - (double)var7, var1 + (double)var7, var3 - (double)this.yOffset + (double)this.field_9068_R + (double)var8, var5 + (double)var7); + } + + public void onUpdate() { + this.func_84_k(); + } + + public void func_84_k() { + if(this.field_327_g != null && this.field_327_g.field_304_B) { + this.field_327_g = null; + } + + ++this.field_9063_X; + this.field_9075_K = this.field_9074_L; + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + if(this.handleWaterMovement()) { + if(!this.field_9085_ab && !this.field_4131_c) { + float var1 = MathHelper.sqrt_double(this.motionX * this.motionX * (double)0.2F + this.motionY * this.motionY + this.motionZ * this.motionZ * (double)0.2F) * 0.2F; + if(var1 > 1.0F) { + var1 = 1.0F; + } + + this.worldObj.playSoundAtEntity(this, "random.splash", var1, 1.0F + (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.4F); + float var2 = (float)MathHelper.floor_double(this.boundingBox.minY); + + int var3; + float var4; + float var5; + for(var3 = 0; (float)var3 < 1.0F + this.width * 20.0F; ++var3) { + var4 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + var5 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + this.worldObj.spawnParticle("bubble", this.posX + (double)var4, (double)(var2 + 1.0F), this.posZ + (double)var5, this.motionX, this.motionY - (double)(this.field_9064_W.nextFloat() * 0.2F), this.motionZ); + } + + for(var3 = 0; (float)var3 < 1.0F + this.width * 20.0F; ++var3) { + var4 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + var5 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + this.worldObj.spawnParticle("splash", this.posX + (double)var4, (double)(var2 + 1.0F), this.posZ + (double)var5, this.motionX, this.motionY, this.motionZ); + } + } + + this.fallDistance = 0.0F; + this.field_9085_ab = true; + this.field_9061_Z = 0; + } else { + this.field_9085_ab = false; + } + + if(this.worldObj.multiplayerWorld) { + this.field_9061_Z = 0; + } else if(this.field_9061_Z > 0) { + if(this.field_9079_ae) { + this.field_9061_Z -= 4; + if(this.field_9061_Z < 0) { + this.field_9061_Z = 0; + } + } else { + if(this.field_9061_Z % 20 == 0) { + this.attackEntity((Entity)null, 1); + } + + --this.field_9061_Z; + } + } + + if(this.func_112_q()) { + this.func_4040_n(); + } + + if(this.posY < -64.0D) { + this.func_4043_o(); + } + + this.field_4131_c = false; + } + + protected void func_4040_n() { + if(!this.field_9079_ae) { + this.attackEntity((Entity)null, 4); + this.field_9061_Z = 600; + } + + } + + protected void func_4043_o() { + this.setEntityDead(); + } + + public boolean func_133_b(double var1, double var3, double var5) { + AxisAlignedBB var7 = this.boundingBox.getOffsetBoundingBox(var1, var3, var5); + List var8 = this.worldObj.getCollidingBoundingBoxes(this, var7); + return var8.size() > 0 ? false : !this.worldObj.getIsAnyLiquid(var7); + } + + public void moveEntity(double var1, double var3, double var5) { + if(this.field_9066_T) { + this.boundingBox.offset(var1, var3, var5); + this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; + this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.field_9068_R; + this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; + } else { + double var7 = this.posX; + double var9 = this.posZ; + double var11 = var1; + double var13 = var3; + double var15 = var5; + AxisAlignedBB var17 = this.boundingBox.copy(); + boolean var18 = this.onGround && this.func_9059_p(); + if(var18) { + double var19; + for(var19 = 0.05D; var1 != 0.0D && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.getOffsetBoundingBox(var1, -1.0D, 0.0D)).size() == 0; var11 = var1) { + if(var1 < var19 && var1 >= -var19) { + var1 = 0.0D; + } else if(var1 > 0.0D) { + var1 -= var19; + } else { + var1 += var19; + } + } + + for(; var5 != 0.0D && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.getOffsetBoundingBox(0.0D, -1.0D, var5)).size() == 0; var15 = var5) { + if(var5 < var19 && var5 >= -var19) { + var5 = 0.0D; + } else if(var5 > 0.0D) { + var5 -= var19; + } else { + var5 += var19; + } + } + } + + List var35 = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(var1, var3, var5)); + + for(int var20 = 0; var20 < var35.size(); ++var20) { + var3 = ((AxisAlignedBB)var35.get(var20)).func_701_b(this.boundingBox, var3); + } + + this.boundingBox.offset(0.0D, var3, 0.0D); + if(!this.field_9077_F && var13 != var3) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + boolean var36 = this.onGround || var13 != var3 && var13 < 0.0D; + + int var21; + for(var21 = 0; var21 < var35.size(); ++var21) { + var1 = ((AxisAlignedBB)var35.get(var21)).func_710_a(this.boundingBox, var1); + } + + this.boundingBox.offset(var1, 0.0D, 0.0D); + if(!this.field_9077_F && var11 != var1) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + for(var21 = 0; var21 < var35.size(); ++var21) { + var5 = ((AxisAlignedBB)var35.get(var21)).func_709_c(this.boundingBox, var5); + } + + this.boundingBox.offset(0.0D, 0.0D, var5); + if(!this.field_9077_F && var15 != var5) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + double var23; + int var28; + double var37; + if(this.field_9067_S > 0.0F && var36 && this.field_9068_R < 0.05F && (var11 != var1 || var15 != var5)) { + var37 = var1; + var23 = var3; + double var25 = var5; + var1 = var11; + var3 = (double)this.field_9067_S; + var5 = var15; + AxisAlignedBB var27 = this.boundingBox.copy(); + this.boundingBox.setBB(var17); + var35 = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(var11, var3, var15)); + + for(var28 = 0; var28 < var35.size(); ++var28) { + var3 = ((AxisAlignedBB)var35.get(var28)).func_701_b(this.boundingBox, var3); + } + + this.boundingBox.offset(0.0D, var3, 0.0D); + if(!this.field_9077_F && var13 != var3) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + for(var28 = 0; var28 < var35.size(); ++var28) { + var1 = ((AxisAlignedBB)var35.get(var28)).func_710_a(this.boundingBox, var1); + } + + this.boundingBox.offset(var1, 0.0D, 0.0D); + if(!this.field_9077_F && var11 != var1) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + for(var28 = 0; var28 < var35.size(); ++var28) { + var5 = ((AxisAlignedBB)var35.get(var28)).func_709_c(this.boundingBox, var5); + } + + this.boundingBox.offset(0.0D, 0.0D, var5); + if(!this.field_9077_F && var15 != var5) { + var5 = 0.0D; + var3 = var5; + var1 = var5; + } + + if(var37 * var37 + var25 * var25 >= var1 * var1 + var5 * var5) { + var1 = var37; + var3 = var23; + var5 = var25; + this.boundingBox.setBB(var27); + } else { + this.field_9068_R = (float)((double)this.field_9068_R + 0.5D); + } + } + + this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; + this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.field_9068_R; + this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; + this.field_9084_B = var11 != var1 || var15 != var5; + this.field_9082_C = var13 != var3; + this.onGround = var13 != var3 && var13 < 0.0D; + this.field_9080_D = this.field_9084_B || this.field_9082_C; + this.interact(var3, this.onGround); + if(var11 != var1) { + this.motionX = 0.0D; + } + + if(var13 != var3) { + this.motionY = 0.0D; + } + + if(var15 != var5) { + this.motionZ = 0.0D; + } + + var37 = this.posX - var7; + var23 = this.posZ - var9; + int var26; + int var38; + int var40; + if(this.entityWalks && !var18) { + this.field_9074_L = (float)((double)this.field_9074_L + (double)MathHelper.sqrt_double(var37 * var37 + var23 * var23) * 0.6D); + var38 = MathHelper.floor_double(this.posX); + var26 = MathHelper.floor_double(this.posY - (double)0.2F - (double)this.yOffset); + var40 = MathHelper.floor_double(this.posZ); + var28 = this.worldObj.getBlockId(var38, var26, var40); + if(this.field_9074_L > (float)this.field_6151_b && var28 > 0) { + ++this.field_6151_b; + StepSound var29 = Block.blocksList[var28].stepSound; + if(this.worldObj.getBlockId(var38, var26 + 1, var40) == Block.snow.blockID) { + var29 = Block.snow.stepSound; + this.worldObj.playSoundAtEntity(this, var29.func_737_c(), var29.func_738_a() * 0.15F, var29.func_739_b()); + } else if(!Block.blocksList[var28].blockMaterial.getIsLiquid()) { + this.worldObj.playSoundAtEntity(this, var29.func_737_c(), var29.func_738_a() * 0.15F, var29.func_739_b()); + } + + Block.blocksList[var28].onEntityWalking(this.worldObj, var38, var26, var40, this); + } + } + + var38 = MathHelper.floor_double(this.boundingBox.minX); + var26 = MathHelper.floor_double(this.boundingBox.minY); + var40 = MathHelper.floor_double(this.boundingBox.minZ); + var28 = MathHelper.floor_double(this.boundingBox.maxX); + int var41 = MathHelper.floor_double(this.boundingBox.maxY); + int var30 = MathHelper.floor_double(this.boundingBox.maxZ); + + for(int var31 = var38; var31 <= var28; ++var31) { + for(int var32 = var26; var32 <= var41; ++var32) { + for(int var33 = var40; var33 <= var30; ++var33) { + int var34 = this.worldObj.getBlockId(var31, var32, var33); + if(var34 > 0) { + Block.blocksList[var34].onEntityCollidedWithBlock(this.worldObj, var31, var32, var33, this); + } + } + } + } + + this.field_9068_R *= 0.4F; + boolean var39 = this.handleWaterMovement(); + if(this.worldObj.func_523_c(this.boundingBox)) { + this.func_125_b(1); + if(!var39) { + ++this.field_9061_Z; + if(this.field_9061_Z == 0) { + this.field_9061_Z = 300; + } + } + } else if(this.field_9061_Z <= 0) { + this.field_9061_Z = -this.field_9062_Y; + } + + if(var39 && this.field_9061_Z > 0) { + this.worldObj.playSoundAtEntity(this, "random.fizz", 0.7F, 1.6F + (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.4F); + this.field_9061_Z = -this.field_9062_Y; + } + + } + } + + protected void interact(double var1, boolean var3) { + if(var3) { + if(this.fallDistance > 0.0F) { + this.fall(this.fallDistance); + this.fallDistance = 0.0F; + } + } else if(var1 < 0.0D) { + this.fallDistance = (float)((double)this.fallDistance - var1); + } + + } + + public boolean func_9059_p() { + return false; + } + + public AxisAlignedBB func_93_n() { + return null; + } + + protected void func_125_b(int var1) { + if(!this.field_9079_ae) { + this.attackEntity((Entity)null, var1); + } + + } + + protected void fall(float var1) { + } + + public boolean handleWaterMovement() { + return this.worldObj.func_490_a(this.boundingBox.expands(0.0D, (double)-0.4F, 0.0D), Material.water, this); + } + + public boolean isInsideOfMaterial(Material var1) { + double var2 = this.posY + (double)this.func_104_p(); + int var4 = MathHelper.floor_double(this.posX); + int var5 = MathHelper.floor_float((float)MathHelper.floor_double(var2)); + int var6 = MathHelper.floor_double(this.posZ); + int var7 = this.worldObj.getBlockId(var4, var5, var6); + if(var7 != 0 && Block.blocksList[var7].blockMaterial == var1) { + float var8 = BlockFluids.setFluidHeight(this.worldObj.getBlockMetadata(var4, var5, var6)) - 1.0F / 9.0F; + float var9 = (float)(var5 + 1) - var8; + return var2 < (double)var9; + } else { + return false; + } + } + + public float func_104_p() { + return 0.0F; + } + + public boolean func_112_q() { + return this.worldObj.isMaterialInBB(this.boundingBox.expands(0.0D, (double)-0.4F, 0.0D), Material.lava); + } + + public void func_90_a(float var1, float var2, float var3) { + float var4 = MathHelper.sqrt_float(var1 * var1 + var2 * var2); + if(var4 >= 0.01F) { + if(var4 < 1.0F) { + var4 = 1.0F; + } + + var4 = var3 / var4; + var1 *= var4; + var2 *= var4; + float var5 = MathHelper.sin(this.rotationYaw * (float)Math.PI / 180.0F); + float var6 = MathHelper.cos(this.rotationYaw * (float)Math.PI / 180.0F); + this.motionX += (double)(var1 * var6 - var2 * var5); + this.motionZ += (double)(var2 * var6 + var1 * var5); + } + } + + public float getEntityBrightness(float var1) { + int var2 = MathHelper.floor_double(this.posX); + double var3 = (this.boundingBox.maxY - this.boundingBox.minY) * 0.66D; + int var5 = MathHelper.floor_double(this.posY - (double)this.yOffset + var3); + int var6 = MathHelper.floor_double(this.posZ); + return this.worldObj.getLightBrightness(var2, var5, var6); + } + + public void setPositionAndRotation(double var1, double var3, double var5, float var7, float var8) { + this.prevPosX = this.posX = var1; + this.prevPosY = this.posY = var3; + this.prevPosZ = this.posZ = var5; + this.prevRotationYaw = this.rotationYaw = var7; + this.prevRotationPitch = this.rotationPitch = var8; + this.field_9068_R = 0.0F; + double var9 = (double)(this.prevRotationYaw - var7); + if(var9 < -180.0D) { + this.prevRotationYaw += 360.0F; + } + + if(var9 >= 180.0D) { + this.prevRotationYaw -= 360.0F; + } + + this.setPosition(this.posX, this.posY, this.posZ); + this.setRotation(var7, var8); + } + + public void func_107_c(double var1, double var3, double var5, float var7, float var8) { + this.prevPosX = this.posX = var1; + this.prevPosY = this.posY = var3 + (double)this.yOffset; + this.prevPosZ = this.posZ = var5; + this.rotationYaw = var7; + this.rotationPitch = var8; + this.setPosition(this.posX, this.posY, this.posZ); + } + + public float getDistanceToEntity(Entity var1) { + float var2 = (float)(this.posX - var1.posX); + float var3 = (float)(this.posY - var1.posY); + float var4 = (float)(this.posZ - var1.posZ); + return MathHelper.sqrt_float(var2 * var2 + var3 * var3 + var4 * var4); + } + + public double getDistanceSq(double var1, double var3, double var5) { + double var7 = this.posX - var1; + double var9 = this.posY - var3; + double var11 = this.posZ - var5; + return var7 * var7 + var9 * var9 + var11 * var11; + } + + public double getDistance(double var1, double var3, double var5) { + double var7 = this.posX - var1; + double var9 = this.posY - var3; + double var11 = this.posZ - var5; + return (double)MathHelper.sqrt_double(var7 * var7 + var9 * var9 + var11 * var11); + } + + public double getDistanceSqToEntity(Entity var1) { + double var2 = this.posX - var1.posX; + double var4 = this.posY - var1.posY; + double var6 = this.posZ - var1.posZ; + return var2 * var2 + var4 * var4 + var6 * var6; + } + + public void onCollideWithPlayer(EntityPlayer var1) { + } + + public void applyEntityCollision(Entity var1) { + if(var1.field_328_f != this && var1.field_327_g != this) { + double var2 = var1.posX - this.posX; + double var4 = var1.posZ - this.posZ; + double var6 = MathHelper.abs_max(var2, var4); + if(var6 >= (double)0.01F) { + var6 = (double)MathHelper.sqrt_double(var6); + var2 /= var6; + var4 /= var6; + double var8 = 1.0D / var6; + if(var8 > 1.0D) { + var8 = 1.0D; + } + + var2 *= var8; + var4 *= var8; + var2 *= (double)0.05F; + var4 *= (double)0.05F; + var2 *= (double)(1.0F - this.field_286_P); + var4 *= (double)(1.0F - this.field_286_P); + this.addVelocity(-var2, 0.0D, -var4); + var1.addVelocity(var2, 0.0D, var4); + } + + } + } + + public void addVelocity(double var1, double var3, double var5) { + this.motionX += var1; + this.motionY += var3; + this.motionZ += var5; + } + + protected void func_9060_u() { + this.field_9078_E = true; + } + + public boolean attackEntity(Entity var1, int var2) { + this.func_9060_u(); + return false; + } + + public boolean func_129_c_() { + return false; + } + + public boolean func_124_r() { + return false; + } + + public void func_96_b(Entity var1, int var2) { + } + + public boolean func_95_c(NBTTagCompound var1) { + String var2 = this.func_109_s(); + if(!this.field_304_B && var2 != null) { + var1.setString("id", var2); + this.writeToNBT(var1); + return true; + } else { + return false; + } + } + + public void writeToNBT(NBTTagCompound var1) { + var1.setTag("Pos", this.func_132_a(new double[]{this.posX, this.posY, this.posZ})); + var1.setTag("Motion", this.func_132_a(new double[]{this.motionX, this.motionY, this.motionZ})); + var1.setTag("Rotation", this.func_85_a(new float[]{this.rotationYaw, this.rotationPitch})); + var1.setFloat("FallDistance", this.fallDistance); + var1.setShort("Fire", (short)this.field_9061_Z); + var1.setShort("Air", (short)this.air); + var1.setBoolean("OnGround", this.onGround); + this.writeEntityToNBT(var1); + } + + public void readFromNBT(NBTTagCompound var1) { + NBTTagList var2 = var1.getTagList("Pos"); + NBTTagList var3 = var1.getTagList("Motion"); + NBTTagList var4 = var1.getTagList("Rotation"); + this.setPosition(0.0D, 0.0D, 0.0D); + this.motionX = ((NBTTagDouble)var3.tagAt(0)).doubleValue; + this.motionY = ((NBTTagDouble)var3.tagAt(1)).doubleValue; + this.motionZ = ((NBTTagDouble)var3.tagAt(2)).doubleValue; + this.prevPosX = this.field_9071_O = this.posX = ((NBTTagDouble)var2.tagAt(0)).doubleValue; + this.prevPosY = this.field_9070_P = this.posY = ((NBTTagDouble)var2.tagAt(1)).doubleValue; + this.prevPosZ = this.field_9069_Q = this.posZ = ((NBTTagDouble)var2.tagAt(2)).doubleValue; + this.prevRotationYaw = this.rotationYaw = ((NBTTagFloat)var4.tagAt(0)).floatValue; + this.prevRotationPitch = this.rotationPitch = ((NBTTagFloat)var4.tagAt(1)).floatValue; + this.fallDistance = var1.getFloat("FallDistance"); + this.field_9061_Z = var1.getShort("Fire"); + this.air = var1.getShort("Air"); + this.onGround = var1.getBoolean("OnGround"); + this.setPosition(this.posX, this.posY, this.posZ); + this.readEntityFromNBT(var1); + } + + protected final String func_109_s() { + return EntityList.func_564_b(this); + } + + protected abstract void readEntityFromNBT(NBTTagCompound var1); + + protected abstract void writeEntityToNBT(NBTTagCompound var1); + + protected NBTTagList func_132_a(double... var1) { + NBTTagList var2 = new NBTTagList(); + double[] var3 = var1; + int var4 = var1.length; + + for(int var5 = 0; var5 < var4; ++var5) { + double var6 = var3[var5]; + var2.setTag(new NBTTagDouble(var6)); + } + + return var2; + } + + protected NBTTagList func_85_a(float... var1) { + NBTTagList var2 = new NBTTagList(); + float[] var3 = var1; + int var4 = var1.length; + + for(int var5 = 0; var5 < var4; ++var5) { + float var6 = var3[var5]; + var2.setTag(new NBTTagFloat(var6)); + } + + return var2; + } + + public EntityItem dropItem(int var1, int var2) { + return this.dropItemWithOffset(var1, var2, 0.0F); + } + + public EntityItem dropItemWithOffset(int var1, int var2, float var3) { + EntityItem var4 = new EntityItem(this.worldObj, this.posX, this.posY + (double)var3, this.posZ, new ItemStack(var1, var2)); + var4.field_433_ad = 10; + this.worldObj.entityJoinedWorld(var4); + return var4; + } + + public boolean func_120_t() { + return !this.field_304_B; + } + + public boolean func_91_u() { + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.posY + (double)this.func_104_p()); + int var3 = MathHelper.floor_double(this.posZ); + return this.worldObj.doesBlockAllowAttachment(var1, var2, var3); + } + + public boolean func_6092_a(EntityPlayer var1) { + return false; + } + + public AxisAlignedBB func_89_d(Entity var1) { + return null; + } + + public void func_115_v() { + if(this.field_327_g.field_304_B) { + this.field_327_g = null; + } else { + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.onUpdate(); + this.field_327_g.func_127_w(); + this.field_4128_e += (double)(this.field_327_g.rotationYaw - this.field_327_g.prevRotationYaw); + + for(this.field_4130_d += (double)(this.field_327_g.rotationPitch - this.field_327_g.prevRotationPitch); this.field_4128_e >= 180.0D; this.field_4128_e -= 360.0D) { + } + + while(this.field_4128_e < -180.0D) { + this.field_4128_e += 360.0D; + } + + while(this.field_4130_d >= 180.0D) { + this.field_4130_d -= 360.0D; + } + + while(this.field_4130_d < -180.0D) { + this.field_4130_d += 360.0D; + } + + double var1 = this.field_4128_e * 0.5D; + double var3 = this.field_4130_d * 0.5D; + float var5 = 10.0F; + if(var1 > (double)var5) { + var1 = (double)var5; + } + + if(var1 < (double)(-var5)) { + var1 = (double)(-var5); + } + + if(var3 > (double)var5) { + var3 = (double)var5; + } + + if(var3 < (double)(-var5)) { + var3 = (double)(-var5); + } + + this.field_4128_e -= var1; + this.field_4130_d -= var3; + this.rotationYaw = (float)((double)this.rotationYaw + var1); + this.rotationPitch = (float)((double)this.rotationPitch + var3); + } + } + + public void func_127_w() { + this.field_328_f.setPosition(this.posX, this.posY + this.func_130_h() + this.field_328_f.func_117_x(), this.posZ); + } + + public double func_117_x() { + return (double)this.yOffset; + } + + public double func_130_h() { + return (double)this.height * 0.75D; + } + + public void func_6094_e(Entity var1) { + this.field_4130_d = 0.0D; + this.field_4128_e = 0.0D; + if(var1 == null) { + if(this.field_327_g != null) { + this.func_107_c(this.field_327_g.posX, this.field_327_g.boundingBox.minY + (double)this.field_327_g.height, this.field_327_g.posZ, this.rotationYaw, this.rotationPitch); + this.field_327_g.field_328_f = null; + } + + this.field_327_g = null; + } else if(this.field_327_g == var1) { + this.field_327_g.field_328_f = null; + this.field_327_g = null; + this.func_107_c(var1.posX, var1.boundingBox.minY + (double)var1.height, var1.posZ, this.rotationYaw, this.rotationPitch); + } else { + if(this.field_327_g != null) { + this.field_327_g.field_328_f = null; + } + + if(var1.field_328_f != null) { + var1.field_328_f.field_327_g = null; + } + + this.field_327_g = var1; + var1.field_328_f = this; + } + } + + public Vec3D func_4039_B() { + return null; + } + + public void func_4042_C() { + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityAnimals.java b/minecraft_server/src/net/minecraft/src/EntityAnimals.java new file mode 100644 index 0000000..a052f76 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityAnimals.java @@ -0,0 +1,30 @@ +package net.minecraft.src; + +public abstract class EntityAnimals extends EntityCreature implements IAnimals { + public EntityAnimals(World var1) { + super(var1); + } + + protected float func_159_a(int var1, int var2, int var3) { + return this.worldObj.getBlockId(var1, var2 - 1, var3) == Block.grass.blockID ? 10.0F : this.worldObj.getLightBrightness(var1, var2, var3) - 0.5F; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + public boolean getCanSpawnHere() { + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.boundingBox.minY); + int var3 = MathHelper.floor_double(this.posZ); + return this.worldObj.getBlockId(var1, var2 - 1, var3) == Block.grass.blockID && this.worldObj.getBlockLightValue(var1, var2, var3) > 8 && super.getCanSpawnHere(); + } + + public int func_146_b() { + return 120; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityArrow.java b/minecraft_server/src/net/minecraft/src/EntityArrow.java new file mode 100644 index 0000000..bccc8ad --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityArrow.java @@ -0,0 +1,225 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityArrow extends Entity { + private int field_9183_c = -1; + private int field_9182_d = -1; + private int field_9180_e = -1; + private int field_9179_f = 0; + private boolean field_9181_aj = false; + public int field_9184_a = 0; + public EntityLiving field_439_ah; + private int field_438_ai; + private int field_437_aj = 0; + + public EntityArrow(World var1) { + super(var1); + this.setSize(0.5F, 0.5F); + } + + public EntityArrow(World var1, EntityLiving var2) { + super(var1); + this.field_439_ah = var2; + this.setSize(0.5F, 0.5F); + this.func_107_c(var2.posX, var2.posY + (double)var2.func_104_p(), var2.posZ, var2.rotationYaw, var2.rotationPitch); + this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.posY -= (double)0.1F; + this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); + this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); + this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); + this.func_177_a(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F); + } + + public void func_177_a(double var1, double var3, double var5, float var7, float var8) { + float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); + var1 /= (double)var9; + var3 /= (double)var9; + var5 /= (double)var9; + var1 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var3 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var5 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var1 *= (double)var7; + var3 *= (double)var7; + var5 *= (double)var7; + this.motionX = var1; + this.motionY = var3; + this.motionZ = var5; + float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(var1, var5) * 180.0D / (double)((float)Math.PI)); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(var3, (double)var10) * 180.0D / (double)((float)Math.PI)); + this.field_438_ai = 0; + } + + public void onUpdate() { + super.onUpdate(); + if(this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { + float var1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var1) * 180.0D / (double)((float)Math.PI)); + } + + if(this.field_9184_a > 0) { + --this.field_9184_a; + } + + if(this.field_9181_aj) { + int var15 = this.worldObj.getBlockId(this.field_9183_c, this.field_9182_d, this.field_9180_e); + if(var15 == this.field_9179_f) { + ++this.field_438_ai; + if(this.field_438_ai == 1200) { + this.setEntityDead(); + } + + return; + } + + this.field_9181_aj = false; + this.motionX *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionY *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionZ *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.field_438_ai = 0; + this.field_437_aj = 0; + } else { + ++this.field_437_aj; + } + + Vec3D var16 = Vec3D.createVector(this.posX, this.posY, this.posZ); + Vec3D var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition var3 = this.worldObj.func_486_a(var16, var2); + var16 = Vec3D.createVector(this.posX, this.posY, this.posZ); + var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + if(var3 != null) { + var2 = Vec3D.createVector(var3.hitVec.xCoord, var3.hitVec.yCoord, var3.hitVec.zCoord); + } + + Entity var4 = null; + List var5 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expands(1.0D, 1.0D, 1.0D)); + double var6 = 0.0D; + + float var10; + for(int var8 = 0; var8 < var5.size(); ++var8) { + Entity var9 = (Entity)var5.get(var8); + if(var9.func_129_c_() && (var9 != this.field_439_ah || this.field_437_aj >= 5)) { + var10 = 0.3F; + AxisAlignedBB var11 = var9.boundingBox.expands((double)var10, (double)var10, (double)var10); + MovingObjectPosition var12 = var11.func_706_a(var16, var2); + if(var12 != null) { + double var13 = var16.distanceTo(var12.hitVec); + if(var13 < var6 || var6 == 0.0D) { + var4 = var9; + var6 = var13; + } + } + } + } + + if(var4 != null) { + var3 = new MovingObjectPosition(var4); + } + + float var17; + if(var3 != null) { + if(var3.entityHit != null) { + if(var3.entityHit.attackEntity(this.field_439_ah, 4)) { + this.worldObj.playSoundAtEntity(this, "random.drr", 1.0F, 1.2F / (this.field_9064_W.nextFloat() * 0.2F + 0.9F)); + this.setEntityDead(); + } else { + this.motionX *= (double)-0.1F; + this.motionY *= (double)-0.1F; + this.motionZ *= (double)-0.1F; + this.rotationYaw += 180.0F; + this.prevRotationYaw += 180.0F; + this.field_437_aj = 0; + } + } else { + this.field_9183_c = var3.blockX; + this.field_9182_d = var3.blockY; + this.field_9180_e = var3.blockZ; + this.field_9179_f = this.worldObj.getBlockId(this.field_9183_c, this.field_9182_d, this.field_9180_e); + this.motionX = (double)((float)(var3.hitVec.xCoord - this.posX)); + this.motionY = (double)((float)(var3.hitVec.yCoord - this.posY)); + this.motionZ = (double)((float)(var3.hitVec.zCoord - this.posZ)); + var17 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); + this.posX -= this.motionX / (double)var17 * (double)0.05F; + this.posY -= this.motionY / (double)var17 * (double)0.05F; + this.posZ -= this.motionZ / (double)var17 * (double)0.05F; + this.worldObj.playSoundAtEntity(this, "random.drr", 1.0F, 1.2F / (this.field_9064_W.nextFloat() * 0.2F + 0.9F)); + this.field_9181_aj = true; + this.field_9184_a = 7; + } + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + var17 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); + + for(this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var17) * 180.0D / (double)((float)Math.PI)); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float var18 = 0.99F; + var10 = 0.03F; + if(this.handleWaterMovement()) { + for(int var19 = 0; var19 < 4; ++var19) { + float var20 = 0.25F; + this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)var20, this.posY - this.motionY * (double)var20, this.posZ - this.motionZ * (double)var20, this.motionX, this.motionY, this.motionZ); + } + + var18 = 0.8F; + } + + this.motionX *= (double)var18; + this.motionY *= (double)var18; + this.motionZ *= (double)var18; + this.motionY -= (double)var10; + this.setPosition(this.posX, this.posY, this.posZ); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("xTile", (short)this.field_9183_c); + var1.setShort("yTile", (short)this.field_9182_d); + var1.setShort("zTile", (short)this.field_9180_e); + var1.setByte("inTile", (byte)this.field_9179_f); + var1.setByte("shake", (byte)this.field_9184_a); + var1.setByte("inGround", (byte)(this.field_9181_aj ? 1 : 0)); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.field_9183_c = var1.getShort("xTile"); + this.field_9182_d = var1.getShort("yTile"); + this.field_9180_e = var1.getShort("zTile"); + this.field_9179_f = var1.getByte("inTile") & 255; + this.field_9184_a = var1.getByte("shake") & 255; + this.field_9181_aj = var1.getByte("inGround") == 1; + } + + public void onCollideWithPlayer(EntityPlayer var1) { + if(!this.worldObj.multiplayerWorld) { + if(this.field_9181_aj && this.field_439_ah == var1 && this.field_9184_a <= 0 && var1.inventory.addItemStackToInventory(new ItemStack(Item.arrow.swiftedIndex, 1))) { + this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.7F + 1.0F) * 2.0F); + var1.func_163_c(this, 1); + this.setEntityDead(); + } + + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityBoat.java b/minecraft_server/src/net/minecraft/src/EntityBoat.java new file mode 100644 index 0000000..b320b35 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityBoat.java @@ -0,0 +1,288 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityBoat extends Entity { + public int field_9178_a; + public int field_9177_b; + public int field_436_ad; + private int field_9176_d; + private double field_9174_e; + private double field_9172_f; + private double field_9175_aj; + private double field_9173_ak; + private double field_9171_al; + + public EntityBoat(World var1) { + super(var1); + this.field_9178_a = 0; + this.field_9177_b = 0; + this.field_436_ad = 1; + this.field_329_e = true; + this.setSize(1.5F, 0.6F); + this.yOffset = this.height / 2.0F; + this.entityWalks = false; + } + + public AxisAlignedBB func_89_d(Entity var1) { + return var1.boundingBox; + } + + public AxisAlignedBB func_93_n() { + return this.boundingBox; + } + + public boolean func_124_r() { + return true; + } + + public EntityBoat(World var1, double var2, double var4, double var6) { + this(var1); + this.setPosition(var2, var4 + (double)this.yOffset, var6); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = var2; + this.prevPosY = var4; + this.prevPosZ = var6; + } + + public double func_130_h() { + return (double)this.height * 0.0D - (double)0.3F; + } + + public boolean attackEntity(Entity var1, int var2) { + if(!this.worldObj.multiplayerWorld && !this.field_304_B) { + this.field_436_ad = -this.field_436_ad; + this.field_9177_b = 10; + this.field_9178_a += var2 * 10; + this.func_9060_u(); + if(this.field_9178_a > 40) { + int var3; + for(var3 = 0; var3 < 3; ++var3) { + this.dropItemWithOffset(Block.planks.blockID, 1, 0.0F); + } + + for(var3 = 0; var3 < 2; ++var3) { + this.dropItemWithOffset(Item.stick.swiftedIndex, 1, 0.0F); + } + + this.setEntityDead(); + } + + return true; + } else { + return true; + } + } + + public boolean func_129_c_() { + return !this.field_304_B; + } + + public void onUpdate() { + super.onUpdate(); + if(this.field_9177_b > 0) { + --this.field_9177_b; + } + + if(this.field_9178_a > 0) { + --this.field_9178_a; + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + byte var1 = 5; + double var2 = 0.0D; + + for(int var4 = 0; var4 < var1; ++var4) { + double var5 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(var4 + 0) / (double)var1 - 0.125D; + double var7 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(var4 + 1) / (double)var1 - 0.125D; + AxisAlignedBB var9 = AxisAlignedBB.getBoundingBoxFromPool(this.boundingBox.minX, var5, this.boundingBox.minZ, this.boundingBox.maxX, var7, this.boundingBox.maxZ); + if(this.worldObj.func_524_b(var9, Material.water)) { + var2 += 1.0D / (double)var1; + } + } + + double var6; + double var8; + double var10; + double var23; + if(this.worldObj.multiplayerWorld) { + if(this.field_9176_d > 0) { + var23 = this.posX + (this.field_9174_e - this.posX) / (double)this.field_9176_d; + var6 = this.posY + (this.field_9172_f - this.posY) / (double)this.field_9176_d; + var8 = this.posZ + (this.field_9175_aj - this.posZ) / (double)this.field_9176_d; + + for(var10 = this.field_9173_ak - (double)this.rotationYaw; var10 < -180.0D; var10 += 360.0D) { + } + + while(var10 >= 180.0D) { + var10 -= 360.0D; + } + + this.rotationYaw = (float)((double)this.rotationYaw + var10 / (double)this.field_9176_d); + this.rotationPitch = (float)((double)this.rotationPitch + (this.field_9171_al - (double)this.rotationPitch) / (double)this.field_9176_d); + --this.field_9176_d; + this.setPosition(var23, var6, var8); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + var23 = this.posX + this.motionX; + var6 = this.posY + this.motionY; + var8 = this.posZ + this.motionZ; + this.setPosition(var23, var6, var8); + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.motionX *= (double)0.99F; + this.motionY *= (double)0.95F; + this.motionZ *= (double)0.99F; + } + + } else { + var23 = var2 * 2.0D - 1.0D; + this.motionY += (double)0.04F * var23; + if(this.field_328_f != null) { + this.motionX += this.field_328_f.motionX * 0.2D; + this.motionZ += this.field_328_f.motionZ * 0.2D; + } + + var6 = 0.4D; + if(this.motionX < -var6) { + this.motionX = -var6; + } + + if(this.motionX > var6) { + this.motionX = var6; + } + + if(this.motionZ < -var6) { + this.motionZ = -var6; + } + + if(this.motionZ > var6) { + this.motionZ = var6; + } + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + var8 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + double var12; + if(var8 > 0.15D) { + var10 = Math.cos((double)this.rotationYaw * Math.PI / 180.0D); + var12 = Math.sin((double)this.rotationYaw * Math.PI / 180.0D); + + for(int var14 = 0; (double)var14 < 1.0D + var8 * 60.0D; ++var14) { + double var15 = (double)(this.field_9064_W.nextFloat() * 2.0F - 1.0F); + double var17 = (double)(this.field_9064_W.nextInt(2) * 2 - 1) * 0.7D; + double var19; + double var21; + if(this.field_9064_W.nextBoolean()) { + var19 = this.posX - var10 * var15 * 0.8D + var12 * var17; + var21 = this.posZ - var12 * var15 * 0.8D - var10 * var17; + this.worldObj.spawnParticle("splash", var19, this.posY - 0.125D, var21, this.motionX, this.motionY, this.motionZ); + } else { + var19 = this.posX + var10 + var12 * var15 * 0.7D; + var21 = this.posZ + var12 - var10 * var15 * 0.7D; + this.worldObj.spawnParticle("splash", var19, this.posY - 0.125D, var21, this.motionX, this.motionY, this.motionZ); + } + } + } + + if(this.field_9084_B && var8 > 0.15D) { + if(!this.worldObj.multiplayerWorld) { + this.setEntityDead(); + + int var24; + for(var24 = 0; var24 < 3; ++var24) { + this.dropItemWithOffset(Block.planks.blockID, 1, 0.0F); + } + + for(var24 = 0; var24 < 2; ++var24) { + this.dropItemWithOffset(Item.stick.swiftedIndex, 1, 0.0F); + } + } + } else { + this.motionX *= (double)0.99F; + this.motionY *= (double)0.95F; + this.motionZ *= (double)0.99F; + } + + this.rotationPitch = 0.0F; + var10 = (double)this.rotationYaw; + var12 = this.prevPosX - this.posX; + double var25 = this.prevPosZ - this.posZ; + if(var12 * var12 + var25 * var25 > 0.001D) { + var10 = (double)((float)(Math.atan2(var25, var12) * 180.0D / Math.PI)); + } + + double var16; + for(var16 = var10 - (double)this.rotationYaw; var16 >= 180.0D; var16 -= 360.0D) { + } + + while(var16 < -180.0D) { + var16 += 360.0D; + } + + if(var16 > 20.0D) { + var16 = 20.0D; + } + + if(var16 < -20.0D) { + var16 = -20.0D; + } + + this.rotationYaw = (float)((double)this.rotationYaw + var16); + this.setRotation(this.rotationYaw, this.rotationPitch); + List var18 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expands((double)0.2F, 0.0D, (double)0.2F)); + if(var18 != null && var18.size() > 0) { + for(int var26 = 0; var26 < var18.size(); ++var26) { + Entity var20 = (Entity)var18.get(var26); + if(var20 != this.field_328_f && var20.func_124_r() && var20 instanceof EntityBoat) { + var20.applyEntityCollision(this); + } + } + } + + if(this.field_328_f != null && this.field_328_f.field_304_B) { + this.field_328_f = null; + } + + } + } + + public void func_127_w() { + if(this.field_328_f != null) { + double var1 = Math.cos((double)this.rotationYaw * Math.PI / 180.0D) * 0.4D; + double var3 = Math.sin((double)this.rotationYaw * Math.PI / 180.0D) * 0.4D; + this.field_328_f.setPosition(this.posX + var1, this.posY + this.func_130_h() + this.field_328_f.func_117_x(), this.posZ + var3); + } + } + + protected void writeEntityToNBT(NBTTagCompound var1) { + } + + protected void readEntityFromNBT(NBTTagCompound var1) { + } + + public boolean func_6092_a(EntityPlayer var1) { + if(this.field_328_f != null && this.field_328_f instanceof EntityPlayer && this.field_328_f != var1) { + return true; + } else { + if(!this.worldObj.multiplayerWorld) { + var1.func_6094_e(this); + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityChicken.java b/minecraft_server/src/net/minecraft/src/EntityChicken.java new file mode 100644 index 0000000..0d13f4c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityChicken.java @@ -0,0 +1,77 @@ +package net.minecraft.src; + +public class EntityChicken extends EntityAnimals { + public boolean field_392_a = false; + public float field_391_b = 0.0F; + public float field_395_ad = 0.0F; + public float field_394_ae; + public float field_393_af; + public float field_390_ai = 1.0F; + public int field_396_aj; + + public EntityChicken(World var1) { + super(var1); + this.field_9119_aG = "/mob/chicken.png"; + this.setSize(0.3F, 0.4F); + this.field_9109_aQ = 4; + this.field_396_aj = this.field_9064_W.nextInt(6000) + 6000; + } + + public void onLivingUpdate() { + super.onLivingUpdate(); + this.field_393_af = this.field_391_b; + this.field_394_ae = this.field_395_ad; + this.field_395_ad = (float)((double)this.field_395_ad + (double)(this.onGround ? -1 : 4) * 0.3D); + if(this.field_395_ad < 0.0F) { + this.field_395_ad = 0.0F; + } + + if(this.field_395_ad > 1.0F) { + this.field_395_ad = 1.0F; + } + + if(!this.onGround && this.field_390_ai < 1.0F) { + this.field_390_ai = 1.0F; + } + + this.field_390_ai = (float)((double)this.field_390_ai * 0.9D); + if(!this.onGround && this.motionY < 0.0D) { + this.motionY *= 0.6D; + } + + this.field_391_b += this.field_390_ai * 2.0F; + if(!this.worldObj.multiplayerWorld && --this.field_396_aj <= 0) { + this.worldObj.playSoundAtEntity(this, "mob.chickenplop", 1.0F, (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + this.dropItem(Item.egg.swiftedIndex, 1); + this.field_396_aj = this.field_9064_W.nextInt(6000) + 6000; + } + + } + + protected void fall(float var1) { + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + protected String getLivingSound() { + return "mob.chicken"; + } + + protected String getHurtSound() { + return "mob.chickenhurt"; + } + + protected String getDeathSound() { + return "mob.chickenhurt"; + } + + protected int getDropItemId() { + return Item.feather.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityCow.java b/minecraft_server/src/net/minecraft/src/EntityCow.java new file mode 100644 index 0000000..14b0d55 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityCow.java @@ -0,0 +1,49 @@ +package net.minecraft.src; + +public class EntityCow extends EntityAnimals { + public boolean unusedBoolean = false; + + public EntityCow(World var1) { + super(var1); + this.field_9119_aG = "/mob/cow.png"; + this.setSize(0.9F, 1.3F); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + protected String getLivingSound() { + return "mob.cow"; + } + + protected String getHurtSound() { + return "mob.cowhurt"; + } + + protected String getDeathSound() { + return "mob.cowhurt"; + } + + protected float getSoundVolume() { + return 0.4F; + } + + protected int getDropItemId() { + return Item.leather.swiftedIndex; + } + + public boolean func_6092_a(EntityPlayer var1) { + ItemStack var2 = var1.inventory.getCurrentItem(); + if(var2 != null && var2.itemID == Item.bucketEmpty.swiftedIndex) { + var1.inventory.setInventorySlotContents(var1.inventory.currentItem, new ItemStack(Item.bucketMilk)); + return true; + } else { + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityCreature.java b/minecraft_server/src/net/minecraft/src/EntityCreature.java new file mode 100644 index 0000000..dcb330a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityCreature.java @@ -0,0 +1,151 @@ +package net.minecraft.src; + +public class EntityCreature extends EntityLiving { + private PathEntity field_388_a; + protected Entity field_389_ag; + protected boolean field_387_ah = false; + + public EntityCreature(World var1) { + super(var1); + } + + protected void func_152_d_() { + this.field_387_ah = false; + float var1 = 16.0F; + if(this.field_389_ag == null) { + this.field_389_ag = this.func_158_i(); + if(this.field_389_ag != null) { + this.field_388_a = this.worldObj.func_482_a(this, this.field_389_ag, var1); + } + } else if(!this.field_389_ag.func_120_t()) { + this.field_389_ag = null; + } else { + float var2 = this.field_389_ag.getDistanceToEntity(this); + if(this.func_145_g(this.field_389_ag)) { + this.func_157_a(this.field_389_ag, var2); + } + } + + if(this.field_387_ah || this.field_389_ag == null || this.field_388_a != null && this.field_9064_W.nextInt(20) != 0) { + if(this.field_388_a == null && this.field_9064_W.nextInt(80) == 0 || this.field_9064_W.nextInt(80) == 0) { + boolean var21 = false; + int var3 = -1; + int var4 = -1; + int var5 = -1; + float var6 = -99999.0F; + + for(int var7 = 0; var7 < 10; ++var7) { + int var8 = MathHelper.floor_double(this.posX + (double)this.field_9064_W.nextInt(13) - 6.0D); + int var9 = MathHelper.floor_double(this.posY + (double)this.field_9064_W.nextInt(7) - 3.0D); + int var10 = MathHelper.floor_double(this.posZ + (double)this.field_9064_W.nextInt(13) - 6.0D); + float var11 = this.func_159_a(var8, var9, var10); + if(var11 > var6) { + var6 = var11; + var3 = var8; + var4 = var9; + var5 = var10; + var21 = true; + } + } + + if(var21) { + this.field_388_a = this.worldObj.func_501_a(this, var3, var4, var5, 10.0F); + } + } + } else { + this.field_388_a = this.worldObj.func_482_a(this, this.field_389_ag, var1); + } + + int var22 = MathHelper.floor_double(this.boundingBox.minY); + boolean var23 = this.handleWaterMovement(); + boolean var24 = this.func_112_q(); + this.rotationPitch = 0.0F; + if(this.field_388_a != null && this.field_9064_W.nextInt(100) != 0) { + Vec3D var25 = this.field_388_a.getPosition(this); + double var26 = (double)(this.width * 2.0F); + + while(var25 != null && var25.squareDistanceTo(this.posX, var25.yCoord, this.posZ) < var26 * var26) { + this.field_388_a.incrementPathIndex(); + if(this.field_388_a.isFinished()) { + var25 = null; + this.field_388_a = null; + } else { + var25 = this.field_388_a.getPosition(this); + } + } + + this.field_9128_br = false; + if(var25 != null) { + double var27 = var25.xCoord - this.posX; + double var28 = var25.zCoord - this.posZ; + double var12 = var25.yCoord - (double)var22; + float var14 = (float)(Math.atan2(var28, var27) * 180.0D / (double)((float)Math.PI)) - 90.0F; + float var15 = var14 - this.rotationYaw; + + for(this.field_9130_bp = this.field_9126_bt; var15 < -180.0F; var15 += 360.0F) { + } + + while(var15 >= 180.0F) { + var15 -= 360.0F; + } + + if(var15 > 30.0F) { + var15 = 30.0F; + } + + if(var15 < -30.0F) { + var15 = -30.0F; + } + + this.rotationYaw += var15; + if(this.field_387_ah && this.field_389_ag != null) { + double var16 = this.field_389_ag.posX - this.posX; + double var18 = this.field_389_ag.posZ - this.posZ; + float var20 = this.rotationYaw; + this.rotationYaw = (float)(Math.atan2(var18, var16) * 180.0D / (double)((float)Math.PI)) - 90.0F; + var15 = (var20 - this.rotationYaw + 90.0F) * (float)Math.PI / 180.0F; + this.field_9131_bo = -MathHelper.sin(var15) * this.field_9130_bp * 1.0F; + this.field_9130_bp = MathHelper.cos(var15) * this.field_9130_bp * 1.0F; + } + + if(var12 > 0.0D) { + this.field_9128_br = true; + } + } + + if(this.field_389_ag != null) { + this.func_147_b(this.field_389_ag, 30.0F); + } + + if(this.field_9084_B) { + this.field_9128_br = true; + } + + if(this.field_9064_W.nextFloat() < 0.8F && (var23 || var24)) { + this.field_9128_br = true; + } + + } else { + super.func_152_d_(); + this.field_388_a = null; + } + } + + protected void func_157_a(Entity var1, float var2) { + } + + protected float func_159_a(int var1, int var2, int var3) { + return 0.0F; + } + + protected Entity func_158_i() { + return null; + } + + public boolean getCanSpawnHere() { + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.boundingBox.minY); + int var3 = MathHelper.floor_double(this.posZ); + return super.getCanSpawnHere() && this.func_159_a(var1, var2, var3) >= 0.0F; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityCreeper.java b/minecraft_server/src/net/minecraft/src/EntityCreeper.java new file mode 100644 index 0000000..a6cde13 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityCreeper.java @@ -0,0 +1,106 @@ +package net.minecraft.src; + +public class EntityCreeper extends EntityMobs { + int field_406_a; + int field_405_b; + int field_408_ad = 30; + int field_407_ae = -1; + int field_12011_e = -1; + + public EntityCreeper(World var1) { + super(var1); + this.field_9119_aG = "/mob/creeper.png"; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + public void onUpdate() { + this.field_405_b = this.field_406_a; + if(this.worldObj.multiplayerWorld) { + this.field_406_a += this.field_407_ae; + if(this.field_406_a < 0) { + this.field_406_a = 0; + } + + if(this.field_406_a >= this.field_408_ad) { + this.field_406_a = this.field_408_ad; + } + } + + super.onUpdate(); + } + + protected void func_152_d_() { + if(this.field_12011_e != this.field_407_ae) { + this.field_12011_e = this.field_407_ae; + if(this.field_407_ae > 0) { + this.worldObj.func_9206_a(this, (byte)4); + } else { + this.worldObj.func_9206_a(this, (byte)5); + } + } + + this.field_405_b = this.field_406_a; + if(this.worldObj.multiplayerWorld) { + super.func_152_d_(); + } else { + if(this.field_406_a > 0 && this.field_407_ae < 0) { + --this.field_406_a; + } + + if(this.field_407_ae >= 0) { + this.field_407_ae = 2; + } + + super.func_152_d_(); + if(this.field_407_ae != 1) { + this.field_407_ae = -1; + } + } + + } + + protected String getHurtSound() { + return "mob.creeper"; + } + + protected String getDeathSound() { + return "mob.creeperdeath"; + } + + public void onDeath(Entity var1) { + super.onDeath(var1); + if(var1 instanceof EntitySkeleton) { + this.dropItem(Item.record13.swiftedIndex + this.field_9064_W.nextInt(2), 1); + } + + } + + protected void func_157_a(Entity var1, float var2) { + if(this.field_407_ae <= 0 && var2 < 3.0F || this.field_407_ae > 0 && var2 < 7.0F) { + if(this.field_406_a == 0) { + this.worldObj.playSoundAtEntity(this, "random.fuse", 1.0F, 0.5F); + } + + this.field_407_ae = 1; + ++this.field_406_a; + if(this.field_406_a == this.field_408_ad) { + this.worldObj.func_12013_a(this, this.posX, this.posY, this.posZ, 3.0F); + this.setEntityDead(); + } + + this.field_387_ah = true; + } + + } + + protected int getDropItemId() { + return Item.gunpowder.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityFallingSand.java b/minecraft_server/src/net/minecraft/src/EntityFallingSand.java new file mode 100644 index 0000000..42fdb71 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityFallingSand.java @@ -0,0 +1,74 @@ +package net.minecraft.src; + +public class EntityFallingSand extends Entity { + public int field_427_a; + public int field_426_b = 0; + + public EntityFallingSand(World var1) { + super(var1); + } + + public EntityFallingSand(World var1, float var2, float var3, float var4, int var5) { + super(var1); + this.field_427_a = var5; + this.field_329_e = true; + this.setSize(0.98F, 0.98F); + this.yOffset = this.height / 2.0F; + this.setPosition((double)var2, (double)var3, (double)var4); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.entityWalks = false; + this.prevPosX = (double)var2; + this.prevPosY = (double)var3; + this.prevPosZ = (double)var4; + } + + public boolean func_129_c_() { + return !this.field_304_B; + } + + public void onUpdate() { + if(this.field_427_a == 0) { + this.setEntityDead(); + } else { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + ++this.field_426_b; + this.motionY -= (double)0.04F; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)0.98F; + this.motionY *= (double)0.98F; + this.motionZ *= (double)0.98F; + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.posY); + int var3 = MathHelper.floor_double(this.posZ); + if(this.worldObj.getBlockId(var1, var2, var3) == this.field_427_a) { + this.worldObj.setBlockWithNotify(var1, var2, var3, 0); + } + + if(this.onGround) { + this.motionX *= (double)0.7F; + this.motionZ *= (double)0.7F; + this.motionY *= -0.5D; + this.setEntityDead(); + if(!this.worldObj.func_516_a(this.field_427_a, var1, var2, var3, true) || !this.worldObj.setBlockWithNotify(var1, var2, var3, this.field_427_a)) { + this.dropItem(this.field_427_a, 1); + } + } else if(this.field_426_b > 100) { + this.dropItem(this.field_427_a, 1); + this.setEntityDead(); + } + + } + } + + protected void writeEntityToNBT(NBTTagCompound var1) { + var1.setByte("Tile", (byte)this.field_427_a); + } + + protected void readEntityFromNBT(NBTTagCompound var1) { + this.field_427_a = var1.getByte("Tile") & 255; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityFireball.java b/minecraft_server/src/net/minecraft/src/EntityFireball.java new file mode 100644 index 0000000..8908a76 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityFireball.java @@ -0,0 +1,193 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityFireball extends Entity { + private int field_9195_e = -1; + private int field_9193_f = -1; + private int field_9197_aj = -1; + private int field_9194_ak = 0; + private boolean field_9192_al = false; + public int field_9200_a = 0; + private EntityLiving field_9191_am; + private int field_9190_an; + private int field_9189_ao = 0; + public double field_9199_b; + public double field_9198_c; + public double field_9196_d; + + public EntityFireball(World var1) { + super(var1); + this.setSize(1.0F, 1.0F); + } + + public EntityFireball(World var1, EntityLiving var2, double var3, double var5, double var7) { + super(var1); + this.field_9191_am = var2; + this.setSize(1.0F, 1.0F); + this.func_107_c(var2.posX, var2.posY, var2.posZ, var2.rotationYaw, var2.rotationPitch); + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = this.motionY = this.motionZ = 0.0D; + var3 += this.field_9064_W.nextGaussian() * 0.4D; + var5 += this.field_9064_W.nextGaussian() * 0.4D; + var7 += this.field_9064_W.nextGaussian() * 0.4D; + double var9 = (double)MathHelper.sqrt_double(var3 * var3 + var5 * var5 + var7 * var7); + this.field_9199_b = var3 / var9 * 0.1D; + this.field_9198_c = var5 / var9 * 0.1D; + this.field_9196_d = var7 / var9 * 0.1D; + } + + public void onUpdate() { + super.onUpdate(); + this.field_9061_Z = 10; + if(this.field_9200_a > 0) { + --this.field_9200_a; + } + + if(this.field_9192_al) { + int var1 = this.worldObj.getBlockId(this.field_9195_e, this.field_9193_f, this.field_9197_aj); + if(var1 == this.field_9194_ak) { + ++this.field_9190_an; + if(this.field_9190_an == 1200) { + this.setEntityDead(); + } + + return; + } + + this.field_9192_al = false; + this.motionX *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionY *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionZ *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.field_9190_an = 0; + this.field_9189_ao = 0; + } else { + ++this.field_9189_ao; + } + + Vec3D var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); + Vec3D var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition var3 = this.worldObj.func_486_a(var15, var2); + var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); + var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + if(var3 != null) { + var2 = Vec3D.createVector(var3.hitVec.xCoord, var3.hitVec.yCoord, var3.hitVec.zCoord); + } + + Entity var4 = null; + List var5 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expands(1.0D, 1.0D, 1.0D)); + double var6 = 0.0D; + + for(int var8 = 0; var8 < var5.size(); ++var8) { + Entity var9 = (Entity)var5.get(var8); + if(var9.func_129_c_() && (var9 != this.field_9191_am || this.field_9189_ao >= 25)) { + float var10 = 0.3F; + AxisAlignedBB var11 = var9.boundingBox.expands((double)var10, (double)var10, (double)var10); + MovingObjectPosition var12 = var11.func_706_a(var15, var2); + if(var12 != null) { + double var13 = var15.distanceTo(var12.hitVec); + if(var13 < var6 || var6 == 0.0D) { + var4 = var9; + var6 = var13; + } + } + } + } + + if(var4 != null) { + var3 = new MovingObjectPosition(var4); + } + + if(var3 != null) { + if(var3.entityHit != null && var3.entityHit.attackEntity(this.field_9191_am, 0)) { + } + + this.worldObj.func_12015_a((Entity)null, this.posX, this.posY, this.posZ, 1.0F, true); + this.setEntityDead(); + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + float var16 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); + + for(this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var16) * 180.0D / (double)((float)Math.PI)); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float var17 = 0.95F; + if(this.handleWaterMovement()) { + for(int var18 = 0; var18 < 4; ++var18) { + float var19 = 0.25F; + this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)var19, this.posY - this.motionY * (double)var19, this.posZ - this.motionZ * (double)var19, this.motionX, this.motionY, this.motionZ); + } + + var17 = 0.8F; + } + + this.motionX += this.field_9199_b; + this.motionY += this.field_9198_c; + this.motionZ += this.field_9196_d; + this.motionX *= (double)var17; + this.motionY *= (double)var17; + this.motionZ *= (double)var17; + this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D); + this.setPosition(this.posX, this.posY, this.posZ); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("xTile", (short)this.field_9195_e); + var1.setShort("yTile", (short)this.field_9193_f); + var1.setShort("zTile", (short)this.field_9197_aj); + var1.setByte("inTile", (byte)this.field_9194_ak); + var1.setByte("shake", (byte)this.field_9200_a); + var1.setByte("inGround", (byte)(this.field_9192_al ? 1 : 0)); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.field_9195_e = var1.getShort("xTile"); + this.field_9193_f = var1.getShort("yTile"); + this.field_9197_aj = var1.getShort("zTile"); + this.field_9194_ak = var1.getByte("inTile") & 255; + this.field_9200_a = var1.getByte("shake") & 255; + this.field_9192_al = var1.getByte("inGround") == 1; + } + + public boolean func_129_c_() { + return true; + } + + public boolean attackEntity(Entity var1, int var2) { + this.func_9060_u(); + if(var1 != null) { + Vec3D var3 = var1.func_4039_B(); + if(var3 != null) { + this.motionX = var3.xCoord; + this.motionY = var3.yCoord; + this.motionZ = var3.zCoord; + this.field_9199_b = this.motionX * 0.1D; + this.field_9198_c = this.motionY * 0.1D; + this.field_9196_d = this.motionZ * 0.1D; + } + + return true; + } else { + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityFish.java b/minecraft_server/src/net/minecraft/src/EntityFish.java new file mode 100644 index 0000000..8c4ad4d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityFish.java @@ -0,0 +1,313 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityFish extends Entity { + private int d = -1; + private int e = -1; + private int field_4126_f = -1; + private int field_4132_ai = 0; + private boolean field_4129_aj = false; + public int field_4134_a = 0; + public EntityPlayer b; + private int field_6150_ak; + private int field_4125_al = 0; + private int field_4124_am = 0; + public Entity c = null; + private int field_6149_an; + private double field_6148_ao; + private double field_6147_ap; + private double field_6146_aq; + private double field_6145_ar; + private double field_6144_as; + + public EntityFish(World var1) { + super(var1); + this.setSize(0.25F, 0.25F); + } + + public EntityFish(World var1, EntityPlayer var2) { + super(var1); + this.b = var2; + this.b.field_6124_at = this; + this.setSize(0.25F, 0.25F); + this.func_107_c(var2.posX, var2.posY + 1.62D - (double)var2.yOffset, var2.posZ, var2.rotationYaw, var2.rotationPitch); + this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.posY -= (double)0.1F; + this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + float var3 = 0.4F; + this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.func_6142_a(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F); + } + + public void func_6142_a(double var1, double var3, double var5, float var7, float var8) { + float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); + var1 /= (double)var9; + var3 /= (double)var9; + var5 /= (double)var9; + var1 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var3 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var5 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var1 *= (double)var7; + var3 *= (double)var7; + var5 *= (double)var7; + this.motionX = var1; + this.motionY = var3; + this.motionZ = var5; + float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(var1, var5) * 180.0D / (double)((float)Math.PI)); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(var3, (double)var10) * 180.0D / (double)((float)Math.PI)); + this.field_6150_ak = 0; + } + + public void onUpdate() { + super.onUpdate(); + if(this.field_6149_an > 0) { + double var21 = this.posX + (this.field_6148_ao - this.posX) / (double)this.field_6149_an; + double var22 = this.posY + (this.field_6147_ap - this.posY) / (double)this.field_6149_an; + double var23 = this.posZ + (this.field_6146_aq - this.posZ) / (double)this.field_6149_an; + + double var7; + for(var7 = this.field_6145_ar - (double)this.rotationYaw; var7 < -180.0D; var7 += 360.0D) { + } + + while(var7 >= 180.0D) { + var7 -= 360.0D; + } + + this.rotationYaw = (float)((double)this.rotationYaw + var7 / (double)this.field_6149_an); + this.rotationPitch = (float)((double)this.rotationPitch + (this.field_6144_as - (double)this.rotationPitch) / (double)this.field_6149_an); + --this.field_6149_an; + this.setPosition(var21, var22, var23); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + if(!this.worldObj.multiplayerWorld) { + ItemStack var1 = this.b.func_172_B(); + if(this.b.field_304_B || !this.b.func_120_t() || var1 == null || var1.getItem() != Item.fishingRod || this.getDistanceSqToEntity(this.b) > 1024.0D) { + this.setEntityDead(); + this.b.field_6124_at = null; + return; + } + + if(this.c != null) { + if(!this.c.field_304_B) { + this.posX = this.c.posX; + this.posY = this.c.boundingBox.minY + (double)this.c.height * 0.8D; + this.posZ = this.c.posZ; + return; + } + + this.c = null; + } + } + + if(this.field_4134_a > 0) { + --this.field_4134_a; + } + + if(this.field_4129_aj) { + int var19 = this.worldObj.getBlockId(this.d, this.e, this.field_4126_f); + if(var19 == this.field_4132_ai) { + ++this.field_6150_ak; + if(this.field_6150_ak == 1200) { + this.setEntityDead(); + } + + return; + } + + this.field_4129_aj = false; + this.motionX *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionY *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionZ *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.field_6150_ak = 0; + this.field_4125_al = 0; + } else { + ++this.field_4125_al; + } + + Vec3D var20 = Vec3D.createVector(this.posX, this.posY, this.posZ); + Vec3D var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition var3 = this.worldObj.func_486_a(var20, var2); + var20 = Vec3D.createVector(this.posX, this.posY, this.posZ); + var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + if(var3 != null) { + var2 = Vec3D.createVector(var3.hitVec.xCoord, var3.hitVec.yCoord, var3.hitVec.zCoord); + } + + Entity var4 = null; + List var5 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expands(1.0D, 1.0D, 1.0D)); + double var6 = 0.0D; + + double var13; + for(int var8 = 0; var8 < var5.size(); ++var8) { + Entity var9 = (Entity)var5.get(var8); + if(var9.func_129_c_() && (var9 != this.b || this.field_4125_al >= 5)) { + float var10 = 0.3F; + AxisAlignedBB var11 = var9.boundingBox.expands((double)var10, (double)var10, (double)var10); + MovingObjectPosition var12 = var11.func_706_a(var20, var2); + if(var12 != null) { + var13 = var20.distanceTo(var12.hitVec); + if(var13 < var6 || var6 == 0.0D) { + var4 = var9; + var6 = var13; + } + } + } + } + + if(var4 != null) { + var3 = new MovingObjectPosition(var4); + } + + if(var3 != null) { + if(var3.entityHit != null) { + if(var3.entityHit.attackEntity(this.b, 0)) { + this.c = var3.entityHit; + } + } else { + this.field_4129_aj = true; + } + } + + if(!this.field_4129_aj) { + this.moveEntity(this.motionX, this.motionY, this.motionZ); + float var24 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); + + for(this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var24) * 180.0D / (double)((float)Math.PI)); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float var25 = 0.92F; + if(this.onGround || this.field_9084_B) { + var25 = 0.5F; + } + + byte var26 = 5; + double var27 = 0.0D; + + for(int var28 = 0; var28 < var26; ++var28) { + double var14 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(var28 + 0) / (double)var26 - 0.125D + 0.125D; + double var16 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(var28 + 1) / (double)var26 - 0.125D + 0.125D; + AxisAlignedBB var18 = AxisAlignedBB.getBoundingBoxFromPool(this.boundingBox.minX, var14, this.boundingBox.minZ, this.boundingBox.maxX, var16, this.boundingBox.maxZ); + if(this.worldObj.func_524_b(var18, Material.water)) { + var27 += 1.0D / (double)var26; + } + } + + if(var27 > 0.0D) { + if(this.field_4124_am > 0) { + --this.field_4124_am; + } else if(this.field_9064_W.nextInt(500) == 0) { + this.field_4124_am = this.field_9064_W.nextInt(30) + 10; + this.motionY -= (double)0.2F; + this.worldObj.playSoundAtEntity(this, "random.splash", 0.25F, 1.0F + (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.4F); + float var29 = (float)MathHelper.floor_double(this.boundingBox.minY); + + float var15; + int var30; + float var31; + for(var30 = 0; (float)var30 < 1.0F + this.width * 20.0F; ++var30) { + var15 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + var31 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + this.worldObj.spawnParticle("bubble", this.posX + (double)var15, (double)(var29 + 1.0F), this.posZ + (double)var31, this.motionX, this.motionY - (double)(this.field_9064_W.nextFloat() * 0.2F), this.motionZ); + } + + for(var30 = 0; (float)var30 < 1.0F + this.width * 20.0F; ++var30) { + var15 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + var31 = (this.field_9064_W.nextFloat() * 2.0F - 1.0F) * this.width; + this.worldObj.spawnParticle("splash", this.posX + (double)var15, (double)(var29 + 1.0F), this.posZ + (double)var31, this.motionX, this.motionY, this.motionZ); + } + } + } + + if(this.field_4124_am > 0) { + this.motionY -= (double)(this.field_9064_W.nextFloat() * this.field_9064_W.nextFloat() * this.field_9064_W.nextFloat()) * 0.2D; + } + + var13 = var27 * 2.0D - 1.0D; + this.motionY += (double)0.04F * var13; + if(var27 > 0.0D) { + var25 = (float)((double)var25 * 0.9D); + this.motionY *= 0.8D; + } + + this.motionX *= (double)var25; + this.motionY *= (double)var25; + this.motionZ *= (double)var25; + this.setPosition(this.posX, this.posY, this.posZ); + } + } + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("xTile", (short)this.d); + var1.setShort("yTile", (short)this.e); + var1.setShort("zTile", (short)this.field_4126_f); + var1.setByte("inTile", (byte)this.field_4132_ai); + var1.setByte("shake", (byte)this.field_4134_a); + var1.setByte("inGround", (byte)(this.field_4129_aj ? 1 : 0)); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.d = var1.getShort("xTile"); + this.e = var1.getShort("yTile"); + this.field_4126_f = var1.getShort("zTile"); + this.field_4132_ai = var1.getByte("inTile") & 255; + this.field_4134_a = var1.getByte("shake") & 255; + this.field_4129_aj = var1.getByte("inGround") == 1; + } + + public int func_6143_c() { + byte var1 = 0; + if(this.c != null) { + double var2 = this.b.posX - this.posX; + double var4 = this.b.posY - this.posY; + double var6 = this.b.posZ - this.posZ; + double var8 = (double)MathHelper.sqrt_double(var2 * var2 + var4 * var4 + var6 * var6); + double var10 = 0.1D; + this.c.motionX += var2 * var10; + this.c.motionY += var4 * var10 + (double)MathHelper.sqrt_double(var8) * 0.08D; + this.c.motionZ += var6 * var10; + var1 = 3; + } else if(this.field_4124_am > 0) { + EntityItem var13 = new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.fishRaw.swiftedIndex)); + double var3 = this.b.posX - this.posX; + double var5 = this.b.posY - this.posY; + double var7 = this.b.posZ - this.posZ; + double var9 = (double)MathHelper.sqrt_double(var3 * var3 + var5 * var5 + var7 * var7); + double var11 = 0.1D; + var13.motionX = var3 * var11; + var13.motionY = var5 * var11 + (double)MathHelper.sqrt_double(var9) * 0.08D; + var13.motionZ = var7 * var11; + this.worldObj.entityJoinedWorld(var13); + var1 = 1; + } + + if(this.field_4129_aj) { + var1 = 2; + } + + this.setEntityDead(); + this.b.field_6124_at = null; + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityFlying.java b/minecraft_server/src/net/minecraft/src/EntityFlying.java new file mode 100644 index 0000000..0f55efb --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityFlying.java @@ -0,0 +1,66 @@ +package net.minecraft.src; + +public class EntityFlying extends EntityLiving { + public EntityFlying(World var1) { + super(var1); + } + + protected void fall(float var1) { + } + + public void func_148_c(float var1, float var2) { + if(this.handleWaterMovement()) { + this.func_90_a(var1, var2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)0.8F; + this.motionY *= (double)0.8F; + this.motionZ *= (double)0.8F; + } else if(this.func_112_q()) { + this.func_90_a(var1, var2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } else { + float var3 = 0.91F; + if(this.onGround) { + var3 = 546.0F * 0.1F * 0.1F * 0.1F; + int var4 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + if(var4 > 0) { + var3 = Block.blocksList[var4].slipperiness * 0.91F; + } + } + + float var8 = 0.16277136F / (var3 * var3 * var3); + this.func_90_a(var1, var2, this.onGround ? 0.1F * var8 : 0.02F); + var3 = 0.91F; + if(this.onGround) { + var3 = 546.0F * 0.1F * 0.1F * 0.1F; + int var5 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + if(var5 > 0) { + var3 = Block.blocksList[var5].slipperiness * 0.91F; + } + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)var3; + this.motionY *= (double)var3; + this.motionZ *= (double)var3; + } + + this.field_9142_bc = this.field_9141_bd; + double var10 = this.posX - this.prevPosX; + double var9 = this.posZ - this.prevPosZ; + float var7 = MathHelper.sqrt_double(var10 * var10 + var9 * var9) * 4.0F; + if(var7 > 1.0F) { + var7 = 1.0F; + } + + this.field_9141_bd += (var7 - this.field_9141_bd) * 0.4F; + this.field_386_ba += this.field_9141_bd; + } + + public boolean func_144_E() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityGhast.java b/minecraft_server/src/net/minecraft/src/EntityGhast.java new file mode 100644 index 0000000..2c3598e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityGhast.java @@ -0,0 +1,139 @@ +package net.minecraft.src; + +public class EntityGhast extends EntityFlying implements IMobs { + public int field_4099_a = 0; + public double field_4098_b; + public double field_4104_c; + public double field_4102_d; + private Entity field_4097_ai = null; + private int field_4103_aj = 0; + public int field_4101_e = 0; + public int field_4100_f = 0; + + public EntityGhast(World var1) { + super(var1); + this.field_9119_aG = "/mob/ghast.png"; + this.setSize(4.0F, 4.0F); + this.field_9079_ae = true; + } + + protected void func_152_d_() { + if(this.worldObj.monstersEnabled == 0) { + this.setEntityDead(); + } + + this.field_4101_e = this.field_4100_f; + double var1 = this.field_4098_b - this.posX; + double var3 = this.field_4104_c - this.posY; + double var5 = this.field_4102_d - this.posZ; + double var7 = (double)MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); + if(var7 < 1.0D || var7 > 60.0D) { + this.field_4098_b = this.posX + (double)((this.field_9064_W.nextFloat() * 2.0F - 1.0F) * 16.0F); + this.field_4104_c = this.posY + (double)((this.field_9064_W.nextFloat() * 2.0F - 1.0F) * 16.0F); + this.field_4102_d = this.posZ + (double)((this.field_9064_W.nextFloat() * 2.0F - 1.0F) * 16.0F); + } + + if(this.field_4099_a-- <= 0) { + this.field_4099_a += this.field_9064_W.nextInt(5) + 2; + if(this.func_4046_a(this.field_4098_b, this.field_4104_c, this.field_4102_d, var7)) { + this.motionX += var1 / var7 * 0.1D; + this.motionY += var3 / var7 * 0.1D; + this.motionZ += var5 / var7 * 0.1D; + } else { + this.field_4098_b = this.posX; + this.field_4104_c = this.posY; + this.field_4102_d = this.posZ; + } + } + + if(this.field_4097_ai != null && this.field_4097_ai.field_304_B) { + this.field_4097_ai = null; + } + + if(this.field_4097_ai == null || this.field_4103_aj-- <= 0) { + this.field_4097_ai = this.worldObj.getClosestPlayerToEntity(this, 100.0D); + if(this.field_4097_ai != null) { + this.field_4103_aj = 20; + } + } + + double var9 = 64.0D; + if(this.field_4097_ai != null && this.field_4097_ai.getDistanceSqToEntity(this) < var9 * var9) { + double var11 = this.field_4097_ai.posX - this.posX; + double var13 = this.field_4097_ai.boundingBox.minY + (double)(this.field_4097_ai.height / 2.0F) - (this.posY + (double)(this.height / 2.0F)); + double var15 = this.field_4097_ai.posZ - this.posZ; + this.field_9095_az = this.rotationYaw = -((float)Math.atan2(var11, var15)) * 180.0F / (float)Math.PI; + if(this.func_145_g(this.field_4097_ai)) { + if(this.field_4100_f == 10) { + this.worldObj.playSoundAtEntity(this, "mob.ghast.charge", this.getSoundVolume(), (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + } + + ++this.field_4100_f; + if(this.field_4100_f == 20) { + this.worldObj.playSoundAtEntity(this, "mob.ghast.fireball", this.getSoundVolume(), (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + EntityFireball var17 = new EntityFireball(this.worldObj, this, var11, var13, var15); + double var18 = 4.0D; + Vec3D var20 = this.func_141_d(1.0F); + var17.posX = this.posX + var20.xCoord * var18; + var17.posY = this.posY + (double)(this.height / 2.0F) + 0.5D; + var17.posZ = this.posZ + var20.zCoord * var18; + this.worldObj.entityJoinedWorld(var17); + this.field_4100_f = -40; + } + } else if(this.field_4100_f > 0) { + --this.field_4100_f; + } + } else { + this.field_9095_az = this.rotationYaw = -((float)Math.atan2(this.motionX, this.motionZ)) * 180.0F / (float)Math.PI; + if(this.field_4100_f > 0) { + --this.field_4100_f; + } + } + + this.field_9119_aG = this.field_4100_f > 10 ? "/mob/ghast_fire.png" : "/mob/ghast.png"; + } + + private boolean func_4046_a(double var1, double var3, double var5, double var7) { + double var9 = (this.field_4098_b - this.posX) / var7; + double var11 = (this.field_4104_c - this.posY) / var7; + double var13 = (this.field_4102_d - this.posZ) / var7; + AxisAlignedBB var15 = this.boundingBox.copy(); + + for(int var16 = 1; (double)var16 < var7; ++var16) { + var15.offset(var9, var11, var13); + if(this.worldObj.getCollidingBoundingBoxes(this, var15).size() > 0) { + return false; + } + } + + return true; + } + + protected String getLivingSound() { + return "mob.ghast.moan"; + } + + protected String getHurtSound() { + return "mob.ghast.scream"; + } + + protected String getDeathSound() { + return "mob.ghast.death"; + } + + protected int getDropItemId() { + return Item.gunpowder.swiftedIndex; + } + + protected float getSoundVolume() { + return 10.0F; + } + + public boolean getCanSpawnHere() { + return this.field_9064_W.nextInt(20) == 0 && super.getCanSpawnHere() && this.worldObj.monstersEnabled > 0; + } + + public int func_4045_i() { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityItem.java b/minecraft_server/src/net/minecraft/src/EntityItem.java new file mode 100644 index 0000000..4d0d45f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityItem.java @@ -0,0 +1,191 @@ +package net.minecraft.src; + +public class EntityItem extends Entity { + public ItemStack item; + private int field_9170_e; + public int field_9169_b = 0; + public int field_433_ad; + private int health = 5; + public float field_432_ae = (float)(Math.random() * Math.PI * 2.0D); + + public EntityItem(World var1, double var2, double var4, double var6, ItemStack var8) { + super(var1); + this.setSize(0.25F, 0.25F); + this.yOffset = this.height / 2.0F; + this.setPosition(var2, var4, var6); + this.item = var8; + this.rotationYaw = (float)(Math.random() * 360.0D); + this.motionX = (double)((float)(Math.random() * (double)0.2F - (double)0.1F)); + this.motionY = (double)0.2F; + this.motionZ = (double)((float)(Math.random() * (double)0.2F - (double)0.1F)); + this.entityWalks = false; + } + + public EntityItem(World var1) { + super(var1); + this.setSize(0.25F, 0.25F); + this.yOffset = this.height / 2.0F; + } + + public void onUpdate() { + super.onUpdate(); + if(this.field_433_ad > 0) { + --this.field_433_ad; + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.motionY -= (double)0.04F; + if(this.worldObj.getBlockMaterial(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) == Material.lava) { + this.motionY = (double)0.2F; + this.motionX = (double)((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F); + this.motionZ = (double)((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F); + this.worldObj.playSoundAtEntity(this, "random.fizz", 0.4F, 2.0F + this.field_9064_W.nextFloat() * 0.4F); + } + + this.func_176_g(this.posX, this.posY, this.posZ); + this.handleWaterMovement(); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + float var1 = 0.98F; + if(this.onGround) { + var1 = 0.1F * 0.1F * 58.8F; + int var2 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + if(var2 > 0) { + var1 = Block.blocksList[var2].slipperiness * 0.98F; + } + } + + this.motionX *= (double)var1; + this.motionY *= (double)0.98F; + this.motionZ *= (double)var1; + if(this.onGround) { + this.motionY *= -0.5D; + } + + ++this.field_9170_e; + ++this.field_9169_b; + if(this.field_9169_b >= 6000) { + this.setEntityDead(); + } + + } + + public boolean handleWaterMovement() { + return this.worldObj.func_490_a(this.boundingBox, Material.water, this); + } + + private boolean func_176_g(double var1, double var3, double var5) { + int var7 = MathHelper.floor_double(var1); + int var8 = MathHelper.floor_double(var3); + int var9 = MathHelper.floor_double(var5); + double var10 = var1 - (double)var7; + double var12 = var3 - (double)var8; + double var14 = var5 - (double)var9; + if(Block.field_540_p[this.worldObj.getBlockId(var7, var8, var9)]) { + boolean var16 = !Block.field_540_p[this.worldObj.getBlockId(var7 - 1, var8, var9)]; + boolean var17 = !Block.field_540_p[this.worldObj.getBlockId(var7 + 1, var8, var9)]; + boolean var18 = !Block.field_540_p[this.worldObj.getBlockId(var7, var8 - 1, var9)]; + boolean var19 = !Block.field_540_p[this.worldObj.getBlockId(var7, var8 + 1, var9)]; + boolean var20 = !Block.field_540_p[this.worldObj.getBlockId(var7, var8, var9 - 1)]; + boolean var21 = !Block.field_540_p[this.worldObj.getBlockId(var7, var8, var9 + 1)]; + byte var22 = -1; + double var23 = 9999.0D; + if(var16 && var10 < var23) { + var23 = var10; + var22 = 0; + } + + if(var17 && 1.0D - var10 < var23) { + var23 = 1.0D - var10; + var22 = 1; + } + + if(var18 && var12 < var23) { + var23 = var12; + var22 = 2; + } + + if(var19 && 1.0D - var12 < var23) { + var23 = 1.0D - var12; + var22 = 3; + } + + if(var20 && var14 < var23) { + var23 = var14; + var22 = 4; + } + + if(var21 && 1.0D - var14 < var23) { + var23 = 1.0D - var14; + var22 = 5; + } + + float var25 = this.field_9064_W.nextFloat() * 0.2F + 0.1F; + if(var22 == 0) { + this.motionX = (double)(-var25); + } + + if(var22 == 1) { + this.motionX = (double)var25; + } + + if(var22 == 2) { + this.motionY = (double)(-var25); + } + + if(var22 == 3) { + this.motionY = (double)var25; + } + + if(var22 == 4) { + this.motionZ = (double)(-var25); + } + + if(var22 == 5) { + this.motionZ = (double)var25; + } + } + + return false; + } + + protected void func_125_b(int var1) { + this.attackEntity((Entity)null, var1); + } + + public boolean attackEntity(Entity var1, int var2) { + this.func_9060_u(); + this.health -= var2; + if(this.health <= 0) { + this.setEntityDead(); + } + + return false; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("Health", (short)((byte)this.health)); + var1.setShort("Age", (short)this.field_9169_b); + var1.setCompoundTag("Item", this.item.writeToNBT(new NBTTagCompound())); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.health = var1.getShort("Health") & 255; + this.field_9169_b = var1.getShort("Age"); + NBTTagCompound var2 = var1.getCompoundTag("Item"); + this.item = new ItemStack(var2); + } + + public void onCollideWithPlayer(EntityPlayer var1) { + if(!this.worldObj.multiplayerWorld) { + int var2 = this.item.stackSize; + if(this.field_433_ad == 0 && var1.inventory.addItemStackToInventory(this.item)) { + this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.7F + 1.0F) * 2.0F); + var1.func_163_c(this, var2); + this.setEntityDead(); + } + + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityList.java b/minecraft_server/src/net/minecraft/src/EntityList.java new file mode 100644 index 0000000..283c299 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityList.java @@ -0,0 +1,87 @@ +package net.minecraft.src; + +import java.util.HashMap; +import java.util.Map; + +public class EntityList { + private static Map field_849_a = new HashMap(); + private static Map field_848_b = new HashMap(); + private static Map field_851_c = new HashMap(); + private static Map field_850_d = new HashMap(); + + private static void func_563_a(Class var0, String var1, int var2) { + field_849_a.put(var1, var0); + field_848_b.put(var0, var1); + field_851_c.put(Integer.valueOf(var2), var0); + field_850_d.put(var0, Integer.valueOf(var2)); + } + + public static Entity func_567_a(String var0, World var1) { + Entity var2 = null; + + try { + Class var3 = (Class)field_849_a.get(var0); + if(var3 != null) { + var2 = (Entity)var3.getConstructor(new Class[]{World.class}).newInstance(new Object[]{var1}); + } + } catch (Exception var4) { + var4.printStackTrace(); + } + + return var2; + } + + public static Entity func_566_a(NBTTagCompound var0, World var1) { + Entity var2 = null; + + try { + Class var3 = (Class)field_849_a.get(var0.getString("id")); + if(var3 != null) { + var2 = (Entity)var3.getConstructor(new Class[]{World.class}).newInstance(new Object[]{var1}); + } + } catch (Exception var4) { + var4.printStackTrace(); + } + + if(var2 != null) { + var2.readFromNBT(var0); + } else { + System.out.println("Skipping Entity with id " + var0.getString("id")); + } + + return var2; + } + + public static int func_565_a(Entity var0) { + return ((Integer)field_850_d.get(var0.getClass())).intValue(); + } + + public static String func_564_b(Entity var0) { + return (String)field_848_b.get(var0.getClass()); + } + + static { + func_563_a(EntityArrow.class, "Arrow", 10); + func_563_a(EntitySnowball.class, "Snowball", 11); + func_563_a(EntityItem.class, "Item", 1); + func_563_a(EntityPainting.class, "Painting", 9); + func_563_a(EntityLiving.class, "Mob", 48); + func_563_a(EntityMobs.class, "Monster", 49); + func_563_a(EntityCreeper.class, "Creeper", 50); + func_563_a(EntitySkeleton.class, "Skeleton", 51); + func_563_a(EntitySpider.class, "Spider", 52); + func_563_a(EntityZombieSimple.class, "Giant", 53); + func_563_a(EntityZombie.class, "Zombie", 54); + func_563_a(EntitySlime.class, "Slime", 55); + func_563_a(EntityGhast.class, "Ghast", 56); + func_563_a(EntityPigZombie.class, "PigZombie", 57); + func_563_a(EntityPig.class, "Pig", 90); + func_563_a(EntitySheep.class, "Sheep", 91); + func_563_a(EntityCow.class, "Cow", 92); + func_563_a(EntityChicken.class, "Chicken", 93); + func_563_a(EntityTNTPrimed.class, "PrimedTnt", 20); + func_563_a(EntityFallingSand.class, "FallingSand", 21); + func_563_a(EntityMinecart.class, "Minecart", 40); + func_563_a(EntityBoat.class, "Boat", 41); + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityLiving.java b/minecraft_server/src/net/minecraft/src/EntityLiving.java new file mode 100644 index 0000000..adf5967 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityLiving.java @@ -0,0 +1,719 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityLiving extends Entity { + public int field_9099_av = 20; + public float field_9098_aw; + public float field_9097_ax; + public float field_9096_ay; + public float field_9095_az = 0.0F; + public float field_9125_aA = 0.0F; + protected float field_9124_aB; + protected float field_9123_aC; + protected float field_9122_aD; + protected float field_9121_aE; + protected boolean field_9120_aF = true; + protected String field_9119_aG = "/mob/char.png"; + protected boolean field_9118_aH = true; + protected float field_9117_aI = 0.0F; + protected String field_9116_aJ = null; + protected float field_9115_aK = 1.0F; + protected int field_9114_aL = 0; + protected float field_9113_aM = 0.0F; + public boolean field_9112_aN = false; + public float field_9111_aO; + public float field_9110_aP; + public int field_9109_aQ = 10; + public int field_9108_aR; + private int a; + public int field_9107_aS; + public int field_9106_aT; + public float field_9105_aU = 0.0F; + public int field_9104_aV = 0; + public int field_9103_aW = 0; + public float field_9102_aX; + public float field_9101_aY; + protected boolean field_9100_aZ = false; + public int field_9144_ba = -1; + public float field_9143_bb = (float)(Math.random() * (double)0.9F + (double)0.1F); + public float field_9142_bc; + public float field_9141_bd; + public float field_386_ba; + protected int field_9140_bf; + protected double field_9139_bg; + protected double field_9138_bh; + protected double field_9137_bi; + protected double field_9136_bj; + protected double field_9135_bk; + float field_9134_bl = 0.0F; + protected int field_9133_bm = 0; + protected int field_9132_bn = 0; + protected float field_9131_bo; + protected float field_9130_bp; + protected float field_9129_bq; + protected boolean field_9128_br = false; + protected float field_9127_bs = 0.0F; + protected float field_9126_bt = 0.7F; + private Entity b; + private int c = 0; + + public EntityLiving(World var1) { + super(var1); + this.field_329_e = true; + this.field_9096_ay = (float)(Math.random() + 1.0D) * 0.01F; + this.setPosition(this.posX, this.posY, this.posZ); + this.field_9098_aw = (float)Math.random() * 12398.0F; + this.rotationYaw = (float)(Math.random() * (double)((float)Math.PI) * 2.0D); + this.field_9097_ax = 1.0F; + this.field_9067_S = 0.5F; + } + + public boolean func_145_g(Entity var1) { + return this.worldObj.func_486_a(Vec3D.createVector(this.posX, this.posY + (double)this.func_104_p(), this.posZ), Vec3D.createVector(var1.posX, var1.posY + (double)var1.func_104_p(), var1.posZ)) == null; + } + + public boolean func_129_c_() { + return !this.field_304_B; + } + + public boolean func_124_r() { + return !this.field_304_B; + } + + public float func_104_p() { + return this.height * 0.85F; + } + + public int func_146_b() { + return 80; + } + + public void func_84_k() { + this.field_9111_aO = this.field_9110_aP; + super.func_84_k(); + if(this.field_9064_W.nextInt(1000) < this.a++) { + this.a = -this.func_146_b(); + String var1 = this.getLivingSound(); + if(var1 != null) { + this.worldObj.playSoundAtEntity(this, var1, this.getSoundVolume(), (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + } + } + + if(this.func_120_t() && this.func_91_u()) { + this.attackEntity((Entity)null, 1); + } + + if(this.field_9079_ae || this.worldObj.multiplayerWorld) { + this.field_9061_Z = 0; + } + + int var8; + if(this.func_120_t() && this.isInsideOfMaterial(Material.water)) { + --this.air; + if(this.air == -20) { + this.air = 0; + + for(var8 = 0; var8 < 8; ++var8) { + float var2 = this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat(); + float var3 = this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat(); + float var4 = this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat(); + this.worldObj.spawnParticle("bubble", this.posX + (double)var2, this.posY + (double)var3, this.posZ + (double)var4, this.motionX, this.motionY, this.motionZ); + } + + this.attackEntity((Entity)null, 2); + } + + this.field_9061_Z = 0; + } else { + this.air = this.field_9087_aa; + } + + this.field_9102_aX = this.field_9101_aY; + if(this.field_9103_aW > 0) { + --this.field_9103_aW; + } + + if(this.field_9107_aS > 0) { + --this.field_9107_aS; + } + + if(this.field_9083_ac > 0) { + --this.field_9083_ac; + } + + if(this.field_9109_aQ <= 0) { + ++this.field_9104_aV; + if(this.field_9104_aV > 20) { + this.func_6101_K(); + this.setEntityDead(); + + for(var8 = 0; var8 < 20; ++var8) { + double var9 = this.field_9064_W.nextGaussian() * 0.02D; + double var10 = this.field_9064_W.nextGaussian() * 0.02D; + double var6 = this.field_9064_W.nextGaussian() * 0.02D; + this.worldObj.spawnParticle("explode", this.posX + (double)(this.field_9064_W.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + (double)(this.field_9064_W.nextFloat() * this.height), this.posZ + (double)(this.field_9064_W.nextFloat() * this.width * 2.0F) - (double)this.width, var9, var10, var6); + } + } + } + + this.field_9121_aE = this.field_9122_aD; + this.field_9125_aA = this.field_9095_az; + this.prevRotationYaw = this.rotationYaw; + this.prevRotationPitch = this.rotationPitch; + } + + public void func_156_D() { + for(int var1 = 0; var1 < 20; ++var1) { + double var2 = this.field_9064_W.nextGaussian() * 0.02D; + double var4 = this.field_9064_W.nextGaussian() * 0.02D; + double var6 = this.field_9064_W.nextGaussian() * 0.02D; + double var8 = 10.0D; + this.worldObj.spawnParticle("explode", this.posX + (double)(this.field_9064_W.nextFloat() * this.width * 2.0F) - (double)this.width - var2 * var8, this.posY + (double)(this.field_9064_W.nextFloat() * this.height) - var4 * var8, this.posZ + (double)(this.field_9064_W.nextFloat() * this.width * 2.0F) - (double)this.width - var6 * var8, var2, var4, var6); + } + + } + + public void func_115_v() { + super.func_115_v(); + this.field_9124_aB = this.field_9123_aC; + this.field_9123_aC = 0.0F; + } + + public void onUpdate() { + super.onUpdate(); + this.onLivingUpdate(); + double var1 = this.posX - this.prevPosX; + double var3 = this.posZ - this.prevPosZ; + float var5 = MathHelper.sqrt_double(var1 * var1 + var3 * var3); + float var6 = this.field_9095_az; + float var7 = 0.0F; + this.field_9124_aB = this.field_9123_aC; + float var8 = 0.0F; + if(var5 > 0.05F) { + var8 = 1.0F; + var7 = var5 * 3.0F; + var6 = (float)Math.atan2(var3, var1) * 180.0F / (float)Math.PI - 90.0F; + } + + if(this.field_9110_aP > 0.0F) { + var6 = this.rotationYaw; + } + + if(!this.onGround) { + var8 = 0.0F; + } + + this.field_9123_aC += (var8 - this.field_9123_aC) * 0.3F; + + float var9; + for(var9 = var6 - this.field_9095_az; var9 < -180.0F; var9 += 360.0F) { + } + + while(var9 >= 180.0F) { + var9 -= 360.0F; + } + + this.field_9095_az += var9 * 0.3F; + + float var10; + for(var10 = this.rotationYaw - this.field_9095_az; var10 < -180.0F; var10 += 360.0F) { + } + + while(var10 >= 180.0F) { + var10 -= 360.0F; + } + + boolean var11 = var10 < -90.0F || var10 >= 90.0F; + if(var10 < -75.0F) { + var10 = -75.0F; + } + + if(var10 >= 75.0F) { + var10 = 75.0F; + } + + this.field_9095_az = this.rotationYaw - var10; + if(var10 * var10 > 2500.0F) { + this.field_9095_az += var10 * 0.2F; + } + + if(var11) { + var7 *= -1.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + while(this.field_9095_az - this.field_9125_aA < -180.0F) { + this.field_9125_aA -= 360.0F; + } + + while(this.field_9095_az - this.field_9125_aA >= 180.0F) { + this.field_9125_aA += 360.0F; + } + + while(this.rotationPitch - this.prevRotationPitch < -180.0F) { + this.prevRotationPitch -= 360.0F; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + this.field_9122_aD += var7; + } + + protected void setSize(float var1, float var2) { + super.setSize(var1, var2); + } + + public void heal(int var1) { + if(this.field_9109_aQ > 0) { + this.field_9109_aQ += var1; + if(this.field_9109_aQ > 20) { + this.field_9109_aQ = 20; + } + + this.field_9083_ac = this.field_9099_av / 2; + } + } + + public boolean attackEntity(Entity var1, int var2) { + if(this.worldObj.multiplayerWorld) { + return false; + } else { + this.field_9132_bn = 0; + if(this.field_9109_aQ <= 0) { + return false; + } else { + this.field_9141_bd = 1.5F; + boolean var3 = true; + if((float)this.field_9083_ac > (float)this.field_9099_av / 2.0F) { + if(var2 <= this.field_9133_bm) { + return false; + } + + this.func_6099_c(var2 - this.field_9133_bm); + this.field_9133_bm = var2; + var3 = false; + } else { + this.field_9133_bm = var2; + this.field_9108_aR = this.field_9109_aQ; + this.field_9083_ac = this.field_9099_av; + this.func_6099_c(var2); + this.field_9107_aS = this.field_9106_aT = 10; + } + + this.field_9105_aU = 0.0F; + if(var3) { + this.worldObj.func_9206_a(this, (byte)2); + this.func_9060_u(); + if(var1 != null) { + double var4 = var1.posX - this.posX; + + double var6; + for(var6 = var1.posZ - this.posZ; var4 * var4 + var6 * var6 < 1.0E-4D; var6 = (Math.random() - Math.random()) * 0.01D) { + var4 = (Math.random() - Math.random()) * 0.01D; + } + + this.field_9105_aU = (float)(Math.atan2(var6, var4) * 180.0D / (double)((float)Math.PI)) - this.rotationYaw; + this.func_143_a(var1, var2, var4, var6); + } else { + this.field_9105_aU = (float)((int)(Math.random() * 2.0D) * 180); + } + } + + if(this.field_9109_aQ <= 0) { + if(var3) { + this.worldObj.playSoundAtEntity(this, this.getDeathSound(), this.getSoundVolume(), (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + } + + this.onDeath(var1); + } else if(var3) { + this.worldObj.playSoundAtEntity(this, this.getHurtSound(), this.getSoundVolume(), (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + } + + return true; + } + } + } + + protected void func_6099_c(int var1) { + this.field_9109_aQ -= var1; + } + + protected float getSoundVolume() { + return 1.0F; + } + + protected String getLivingSound() { + return null; + } + + protected String getHurtSound() { + return "random.hurt"; + } + + protected String getDeathSound() { + return "random.hurt"; + } + + public void func_143_a(Entity var1, int var2, double var3, double var5) { + float var7 = MathHelper.sqrt_double(var3 * var3 + var5 * var5); + float var8 = 0.4F; + this.motionX /= 2.0D; + this.motionY /= 2.0D; + this.motionZ /= 2.0D; + this.motionX -= var3 / (double)var7 * (double)var8; + this.motionY += (double)0.4F; + this.motionZ -= var5 / (double)var7 * (double)var8; + if(this.motionY > (double)0.4F) { + this.motionY = (double)0.4F; + } + + } + + public void onDeath(Entity var1) { + if(this.field_9114_aL > 0 && var1 != null) { + var1.func_96_b(this, this.field_9114_aL); + } + + this.field_9100_aZ = true; + if(!this.worldObj.multiplayerWorld) { + int var2 = this.getDropItemId(); + if(var2 > 0) { + int var3 = this.field_9064_W.nextInt(3); + + for(int var4 = 0; var4 < var3; ++var4) { + this.dropItem(var2, 1); + } + } + } + + this.worldObj.func_9206_a(this, (byte)3); + } + + protected int getDropItemId() { + return 0; + } + + protected void fall(float var1) { + int var2 = (int)Math.ceil((double)(var1 - 3.0F)); + if(var2 > 0) { + this.attackEntity((Entity)null, var2); + int var3 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY - (double)0.2F - (double)this.yOffset), MathHelper.floor_double(this.posZ)); + if(var3 > 0) { + StepSound var4 = Block.blocksList[var3].stepSound; + this.worldObj.playSoundAtEntity(this, var4.func_737_c(), var4.func_738_a() * 0.5F, var4.func_739_b() * (12.0F / 16.0F)); + } + } + + } + + public void func_148_c(float var1, float var2) { + double var3; + if(this.handleWaterMovement()) { + var3 = this.posY; + this.func_90_a(var1, var2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)0.8F; + this.motionY *= (double)0.8F; + this.motionZ *= (double)0.8F; + this.motionY -= 0.02D; + if(this.field_9084_B && this.func_133_b(this.motionX, this.motionY + (double)0.6F - this.posY + var3, this.motionZ)) { + this.motionY = (double)0.3F; + } + } else if(this.func_112_q()) { + var3 = this.posY; + this.func_90_a(var1, var2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + this.motionY -= 0.02D; + if(this.field_9084_B && this.func_133_b(this.motionX, this.motionY + (double)0.6F - this.posY + var3, this.motionZ)) { + this.motionY = (double)0.3F; + } + } else { + float var8 = 0.91F; + if(this.onGround) { + var8 = 546.0F * 0.1F * 0.1F * 0.1F; + int var4 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + if(var4 > 0) { + var8 = Block.blocksList[var4].slipperiness * 0.91F; + } + } + + float var9 = 0.16277136F / (var8 * var8 * var8); + this.func_90_a(var1, var2, this.onGround ? 0.1F * var9 : 0.02F); + var8 = 0.91F; + if(this.onGround) { + var8 = 546.0F * 0.1F * 0.1F * 0.1F; + int var5 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + if(var5 > 0) { + var8 = Block.blocksList[var5].slipperiness * 0.91F; + } + } + + if(this.func_144_E()) { + this.fallDistance = 0.0F; + if(this.motionY < -0.15D) { + this.motionY = -0.15D; + } + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + if(this.field_9084_B && this.func_144_E()) { + this.motionY = 0.2D; + } + + this.motionY -= 0.08D; + this.motionY *= (double)0.98F; + this.motionX *= (double)var8; + this.motionZ *= (double)var8; + } + + this.field_9142_bc = this.field_9141_bd; + var3 = this.posX - this.prevPosX; + double var10 = this.posZ - this.prevPosZ; + float var7 = MathHelper.sqrt_double(var3 * var3 + var10 * var10) * 4.0F; + if(var7 > 1.0F) { + var7 = 1.0F; + } + + this.field_9141_bd += (var7 - this.field_9141_bd) * 0.4F; + this.field_386_ba += this.field_9141_bd; + } + + public boolean func_144_E() { + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.boundingBox.minY); + int var3 = MathHelper.floor_double(this.posZ); + return this.worldObj.getBlockId(var1, var2, var3) == Block.ladder.blockID || this.worldObj.getBlockId(var1, var2 + 1, var3) == Block.ladder.blockID; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("Health", (short)this.field_9109_aQ); + var1.setShort("HurtTime", (short)this.field_9107_aS); + var1.setShort("DeathTime", (short)this.field_9104_aV); + var1.setShort("AttackTime", (short)this.field_9103_aW); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.field_9109_aQ = var1.getShort("Health"); + if(!var1.hasKey("Health")) { + this.field_9109_aQ = 10; + } + + this.field_9107_aS = var1.getShort("HurtTime"); + this.field_9104_aV = var1.getShort("DeathTime"); + this.field_9103_aW = var1.getShort("AttackTime"); + } + + public boolean func_120_t() { + return !this.field_304_B && this.field_9109_aQ > 0; + } + + public void onLivingUpdate() { + if(this.field_9140_bf > 0) { + double var1 = this.posX + (this.field_9139_bg - this.posX) / (double)this.field_9140_bf; + double var3 = this.posY + (this.field_9138_bh - this.posY) / (double)this.field_9140_bf; + double var5 = this.posZ + (this.field_9137_bi - this.posZ) / (double)this.field_9140_bf; + + double var7; + for(var7 = this.field_9136_bj - (double)this.rotationYaw; var7 < -180.0D; var7 += 360.0D) { + } + + while(var7 >= 180.0D) { + var7 -= 360.0D; + } + + this.rotationYaw = (float)((double)this.rotationYaw + var7 / (double)this.field_9140_bf); + this.rotationPitch = (float)((double)this.rotationPitch + (this.field_9135_bk - (double)this.rotationPitch) / (double)this.field_9140_bf); + --this.field_9140_bf; + this.setPosition(var1, var3, var5); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + + if(this.field_9109_aQ <= 0) { + this.field_9128_br = false; + this.field_9131_bo = 0.0F; + this.field_9130_bp = 0.0F; + this.field_9129_bq = 0.0F; + } else if(!this.field_9112_aN) { + this.func_152_d_(); + } + + boolean var9 = this.handleWaterMovement(); + boolean var2 = this.func_112_q(); + if(this.field_9128_br) { + if(var9) { + this.motionY += (double)0.04F; + } else if(var2) { + this.motionY += (double)0.04F; + } else if(this.onGround) { + this.func_154_F(); + } + } + + this.field_9131_bo *= 0.98F; + this.field_9130_bp *= 0.98F; + this.field_9129_bq *= 0.9F; + this.func_148_c(this.field_9131_bo, this.field_9130_bp); + List var10 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expands((double)0.2F, 0.0D, (double)0.2F)); + if(var10 != null && var10.size() > 0) { + for(int var4 = 0; var4 < var10.size(); ++var4) { + Entity var11 = (Entity)var10.get(var4); + if(var11.func_124_r()) { + var11.applyEntityCollision(this); + } + } + } + + } + + protected void func_154_F() { + this.motionY = (double)0.42F; + } + + protected void func_152_d_() { + ++this.field_9132_bn; + EntityPlayer var1 = this.worldObj.getClosestPlayerToEntity(this, -1.0D); + if(var1 != null) { + double var2 = var1.posX - this.posX; + double var4 = var1.posY - this.posY; + double var6 = var1.posZ - this.posZ; + double var8 = var2 * var2 + var4 * var4 + var6 * var6; + if(var8 > 16384.0D) { + this.setEntityDead(); + } + + if(this.field_9132_bn > 600 && this.field_9064_W.nextInt(800) == 0) { + if(var8 < 1024.0D) { + this.field_9132_bn = 0; + } else { + this.setEntityDead(); + } + } + } + + this.field_9131_bo = 0.0F; + this.field_9130_bp = 0.0F; + float var10 = 8.0F; + if(this.field_9064_W.nextFloat() < 0.02F) { + var1 = this.worldObj.getClosestPlayerToEntity(this, (double)var10); + if(var1 != null) { + this.b = var1; + this.c = 10 + this.field_9064_W.nextInt(20); + } else { + this.field_9129_bq = (this.field_9064_W.nextFloat() - 0.5F) * 20.0F; + } + } + + if(this.b != null) { + this.func_147_b(this.b, 10.0F); + if(this.c-- <= 0 || this.b.field_304_B || this.b.getDistanceSqToEntity(this) > (double)(var10 * var10)) { + this.b = null; + } + } else { + if(this.field_9064_W.nextFloat() < 0.05F) { + this.field_9129_bq = (this.field_9064_W.nextFloat() - 0.5F) * 20.0F; + } + + this.rotationYaw += this.field_9129_bq; + this.rotationPitch = this.field_9127_bs; + } + + boolean var3 = this.handleWaterMovement(); + boolean var11 = this.func_112_q(); + if(var3 || var11) { + this.field_9128_br = this.field_9064_W.nextFloat() < 0.8F; + } + + } + + public void func_147_b(Entity var1, float var2) { + double var3 = var1.posX - this.posX; + double var7 = var1.posZ - this.posZ; + double var5; + if(var1 instanceof EntityLiving) { + EntityLiving var9 = (EntityLiving)var1; + var5 = var9.posY + (double)var9.func_104_p() - (this.posY + (double)this.func_104_p()); + } else { + var5 = (var1.boundingBox.minY + var1.boundingBox.maxY) / 2.0D - (this.posY + (double)this.func_104_p()); + } + + double var13 = (double)MathHelper.sqrt_double(var3 * var3 + var7 * var7); + float var11 = (float)(Math.atan2(var7, var3) * 180.0D / (double)((float)Math.PI)) - 90.0F; + float var12 = (float)(Math.atan2(var5, var13) * 180.0D / (double)((float)Math.PI)); + this.rotationPitch = -this.func_140_b(this.rotationPitch, var12, var2); + this.rotationYaw = this.func_140_b(this.rotationYaw, var11, var2); + } + + private float func_140_b(float var1, float var2, float var3) { + float var4; + for(var4 = var2 - var1; var4 < -180.0F; var4 += 360.0F) { + } + + while(var4 >= 180.0F) { + var4 -= 360.0F; + } + + if(var4 > var3) { + var4 = var3; + } + + if(var4 < -var3) { + var4 = -var3; + } + + return var1 + var4; + } + + public void func_6101_K() { + } + + public boolean getCanSpawnHere() { + return this.worldObj.func_522_a(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() == 0 && !this.worldObj.getIsAnyLiquid(this.boundingBox); + } + + protected void func_4043_o() { + this.attackEntity((Entity)null, 4); + } + + public Vec3D func_4039_B() { + return this.func_141_d(1.0F); + } + + public Vec3D func_141_d(float var1) { + float var2; + float var3; + float var4; + float var5; + if(var1 == 1.0F) { + var2 = MathHelper.cos(-this.rotationYaw * ((float)Math.PI / 180.0F) - (float)Math.PI); + var3 = MathHelper.sin(-this.rotationYaw * ((float)Math.PI / 180.0F) - (float)Math.PI); + var4 = -MathHelper.cos(-this.rotationPitch * ((float)Math.PI / 180.0F)); + var5 = MathHelper.sin(-this.rotationPitch * ((float)Math.PI / 180.0F)); + return Vec3D.createVector((double)(var3 * var4), (double)var5, (double)(var2 * var4)); + } else { + var2 = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * var1; + var3 = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * var1; + var4 = MathHelper.cos(-var3 * ((float)Math.PI / 180.0F) - (float)Math.PI); + var5 = MathHelper.sin(-var3 * ((float)Math.PI / 180.0F) - (float)Math.PI); + float var6 = -MathHelper.cos(-var2 * ((float)Math.PI / 180.0F)); + float var7 = MathHelper.sin(-var2 * ((float)Math.PI / 180.0F)); + return Vec3D.createVector((double)(var5 * var6), (double)var7, (double)(var4 * var6)); + } + } + + public int func_4045_i() { + return 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityMinecart.java b/minecraft_server/src/net/minecraft/src/EntityMinecart.java new file mode 100644 index 0000000..e4713fe --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityMinecart.java @@ -0,0 +1,601 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityMinecart extends Entity implements IInventory { + private ItemStack[] cargoItems; + public int field_9168_a; + public int field_9167_b; + public int field_477_ad; + private boolean field_469_aj; + public int minecartType; + public int field_9165_e; + public double field_9164_f; + public double field_9166_aj; + private static final int[][][] field_468_ak = new int[][][]{{{0, 0, -1}, {0, 0, 1}}, {{-1, 0, 0}, {1, 0, 0}}, {{-1, -1, 0}, {1, 0, 0}}, {{-1, 0, 0}, {1, -1, 0}}, {{0, 0, -1}, {0, -1, 1}}, {{0, -1, -1}, {0, 0, 1}}, {{0, 0, 1}, {1, 0, 0}}, {{0, 0, 1}, {-1, 0, 0}}, {{0, 0, -1}, {-1, 0, 0}}, {{0, 0, -1}, {1, 0, 0}}}; + private int field_9163_an; + private double field_9162_ao; + private double field_9161_ap; + private double field_9160_aq; + private double field_9159_ar; + private double field_9158_as; + + public EntityMinecart(World var1) { + super(var1); + this.cargoItems = new ItemStack[36]; + this.field_9168_a = 0; + this.field_9167_b = 0; + this.field_477_ad = 1; + this.field_469_aj = false; + this.field_329_e = true; + this.setSize(0.98F, 0.7F); + this.yOffset = this.height / 2.0F; + this.entityWalks = false; + } + + public AxisAlignedBB func_89_d(Entity var1) { + return var1.boundingBox; + } + + public AxisAlignedBB func_93_n() { + return null; + } + + public boolean func_124_r() { + return true; + } + + public EntityMinecart(World var1, double var2, double var4, double var6, int var8) { + this(var1); + this.setPosition(var2, var4 + (double)this.yOffset, var6); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = var2; + this.prevPosY = var4; + this.prevPosZ = var6; + this.minecartType = var8; + } + + public double func_130_h() { + return (double)this.height * 0.0D - (double)0.3F; + } + + public boolean attackEntity(Entity var1, int var2) { + if(!this.worldObj.multiplayerWorld && !this.field_304_B) { + this.field_477_ad = -this.field_477_ad; + this.field_9167_b = 10; + this.func_9060_u(); + this.field_9168_a += var2 * 10; + if(this.field_9168_a > 40) { + this.dropItemWithOffset(Item.minecartEmpty.swiftedIndex, 1, 0.0F); + if(this.minecartType == 1) { + this.dropItemWithOffset(Block.crate.blockID, 1, 0.0F); + } else if(this.minecartType == 2) { + this.dropItemWithOffset(Block.stoneOvenIdle.blockID, 1, 0.0F); + } + + this.setEntityDead(); + } + + return true; + } else { + return true; + } + } + + public boolean func_129_c_() { + return !this.field_304_B; + } + + public void setEntityDead() { + for(int var1 = 0; var1 < this.func_83_a(); ++var1) { + ItemStack var2 = this.getStackInSlot(var1); + if(var2 != null) { + float var3 = this.field_9064_W.nextFloat() * 0.8F + 0.1F; + float var4 = this.field_9064_W.nextFloat() * 0.8F + 0.1F; + float var5 = this.field_9064_W.nextFloat() * 0.8F + 0.1F; + + while(var2.stackSize > 0) { + int var6 = this.field_9064_W.nextInt(21) + 10; + if(var6 > var2.stackSize) { + var6 = var2.stackSize; + } + + var2.stackSize -= var6; + EntityItem var7 = new EntityItem(this.worldObj, this.posX + (double)var3, this.posY + (double)var4, this.posZ + (double)var5, new ItemStack(var2.itemID, var6, var2.itemDamage)); + float var8 = 0.05F; + var7.motionX = (double)((float)this.field_9064_W.nextGaussian() * var8); + var7.motionY = (double)((float)this.field_9064_W.nextGaussian() * var8 + 0.2F); + var7.motionZ = (double)((float)this.field_9064_W.nextGaussian() * var8); + this.worldObj.entityJoinedWorld(var7); + } + } + } + + super.setEntityDead(); + } + + public void onUpdate() { + if(this.field_9167_b > 0) { + --this.field_9167_b; + } + + if(this.field_9168_a > 0) { + --this.field_9168_a; + } + + double var7; + if(this.worldObj.multiplayerWorld && this.field_9163_an > 0) { + if(this.field_9163_an > 0) { + double var41 = this.posX + (this.field_9162_ao - this.posX) / (double)this.field_9163_an; + double var42 = this.posY + (this.field_9161_ap - this.posY) / (double)this.field_9163_an; + double var5 = this.posZ + (this.field_9160_aq - this.posZ) / (double)this.field_9163_an; + + for(var7 = this.field_9159_ar - (double)this.rotationYaw; var7 < -180.0D; var7 += 360.0D) { + } + + while(var7 >= 180.0D) { + var7 -= 360.0D; + } + + this.rotationYaw = (float)((double)this.rotationYaw + var7 / (double)this.field_9163_an); + this.rotationPitch = (float)((double)this.rotationPitch + (this.field_9158_as - (double)this.rotationPitch) / (double)this.field_9163_an); + --this.field_9163_an; + this.setPosition(var41, var42, var5); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + + } else { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.motionY -= (double)0.04F; + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.posY); + int var3 = MathHelper.floor_double(this.posZ); + if(this.worldObj.getBlockId(var1, var2 - 1, var3) == Block.minecartTrack.blockID) { + --var2; + } + + double var4 = 0.4D; + boolean var6 = false; + var7 = 1.0D / 128.0D; + if(this.worldObj.getBlockId(var1, var2, var3) == Block.minecartTrack.blockID) { + Vec3D var9 = this.func_182_g(this.posX, this.posY, this.posZ); + int var10 = this.worldObj.getBlockMetadata(var1, var2, var3); + this.posY = (double)var2; + if(var10 >= 2 && var10 <= 5) { + this.posY = (double)(var2 + 1); + } + + if(var10 == 2) { + this.motionX -= var7; + } + + if(var10 == 3) { + this.motionX += var7; + } + + if(var10 == 4) { + this.motionZ += var7; + } + + if(var10 == 5) { + this.motionZ -= var7; + } + + int[][] var11 = field_468_ak[var10]; + double var12 = (double)(var11[1][0] - var11[0][0]); + double var14 = (double)(var11[1][2] - var11[0][2]); + double var16 = Math.sqrt(var12 * var12 + var14 * var14); + double var18 = this.motionX * var12 + this.motionZ * var14; + if(var18 < 0.0D) { + var12 = -var12; + var14 = -var14; + } + + double var20 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.motionX = var20 * var12 / var16; + this.motionZ = var20 * var14 / var16; + double var22 = 0.0D; + double var24 = (double)var1 + 0.5D + (double)var11[0][0] * 0.5D; + double var26 = (double)var3 + 0.5D + (double)var11[0][2] * 0.5D; + double var28 = (double)var1 + 0.5D + (double)var11[1][0] * 0.5D; + double var30 = (double)var3 + 0.5D + (double)var11[1][2] * 0.5D; + var12 = var28 - var24; + var14 = var30 - var26; + double var32; + double var34; + double var36; + if(var12 == 0.0D) { + this.posX = (double)var1 + 0.5D; + var22 = this.posZ - (double)var3; + } else if(var14 == 0.0D) { + this.posZ = (double)var3 + 0.5D; + var22 = this.posX - (double)var1; + } else { + var32 = this.posX - var24; + var34 = this.posZ - var26; + var36 = (var32 * var12 + var34 * var14) * 2.0D; + var22 = var36; + } + + this.posX = var24 + var12 * var22; + this.posZ = var26 + var14 * var22; + this.setPosition(this.posX, this.posY + (double)this.yOffset, this.posZ); + var32 = this.motionX; + var34 = this.motionZ; + if(this.field_328_f != null) { + var32 *= 0.75D; + var34 *= 0.75D; + } + + if(var32 < -var4) { + var32 = -var4; + } + + if(var32 > var4) { + var32 = var4; + } + + if(var34 < -var4) { + var34 = -var4; + } + + if(var34 > var4) { + var34 = var4; + } + + this.moveEntity(var32, 0.0D, var34); + if(var11[0][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var11[0][0] && MathHelper.floor_double(this.posZ) - var3 == var11[0][2]) { + this.setPosition(this.posX, this.posY + (double)var11[0][1], this.posZ); + } else if(var11[1][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var11[1][0] && MathHelper.floor_double(this.posZ) - var3 == var11[1][2]) { + this.setPosition(this.posX, this.posY + (double)var11[1][1], this.posZ); + } + + if(this.field_328_f != null) { + this.motionX *= (double)0.997F; + this.motionY *= 0.0D; + this.motionZ *= (double)0.997F; + } else { + if(this.minecartType == 2) { + var36 = (double)MathHelper.sqrt_double(this.field_9164_f * this.field_9164_f + this.field_9166_aj * this.field_9166_aj); + if(var36 > 0.01D) { + var6 = true; + this.field_9164_f /= var36; + this.field_9166_aj /= var36; + double var38 = 0.04D; + this.motionX *= (double)0.8F; + this.motionY *= 0.0D; + this.motionZ *= (double)0.8F; + this.motionX += this.field_9164_f * var38; + this.motionZ += this.field_9166_aj * var38; + } else { + this.motionX *= (double)0.9F; + this.motionY *= 0.0D; + this.motionZ *= (double)0.9F; + } + } + + this.motionX *= (double)0.96F; + this.motionY *= 0.0D; + this.motionZ *= (double)0.96F; + } + + Vec3D var46 = this.func_182_g(this.posX, this.posY, this.posZ); + if(var46 != null && var9 != null) { + double var37 = (var9.yCoord - var46.yCoord) * 0.05D; + var20 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + if(var20 > 0.0D) { + this.motionX = this.motionX / var20 * (var20 + var37); + this.motionZ = this.motionZ / var20 * (var20 + var37); + } + + this.setPosition(this.posX, var46.yCoord, this.posZ); + } + + int var47 = MathHelper.floor_double(this.posX); + int var48 = MathHelper.floor_double(this.posZ); + if(var47 != var1 || var48 != var3) { + var20 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.motionX = var20 * (double)(var47 - var1); + this.motionZ = var20 * (double)(var48 - var3); + } + + if(this.minecartType == 2) { + double var39 = (double)MathHelper.sqrt_double(this.field_9164_f * this.field_9164_f + this.field_9166_aj * this.field_9166_aj); + if(var39 > 0.01D && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.001D) { + this.field_9164_f /= var39; + this.field_9166_aj /= var39; + if(this.field_9164_f * this.motionX + this.field_9166_aj * this.motionZ < 0.0D) { + this.field_9164_f = 0.0D; + this.field_9166_aj = 0.0D; + } else { + this.field_9164_f = this.motionX; + this.field_9166_aj = this.motionZ; + } + } + } + } else { + if(this.motionX < -var4) { + this.motionX = -var4; + } + + if(this.motionX > var4) { + this.motionX = var4; + } + + if(this.motionZ < -var4) { + this.motionZ = -var4; + } + + if(this.motionZ > var4) { + this.motionZ = var4; + } + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + if(!this.onGround) { + this.motionX *= (double)0.95F; + this.motionY *= (double)0.95F; + this.motionZ *= (double)0.95F; + } + } + + this.rotationPitch = 0.0F; + double var43 = this.prevPosX - this.posX; + double var44 = this.prevPosZ - this.posZ; + if(var43 * var43 + var44 * var44 > 0.001D) { + this.rotationYaw = (float)(Math.atan2(var44, var43) * 180.0D / Math.PI); + if(this.field_469_aj) { + this.rotationYaw += 180.0F; + } + } + + double var13; + for(var13 = (double)(this.rotationYaw - this.prevRotationYaw); var13 >= 180.0D; var13 -= 360.0D) { + } + + while(var13 < -180.0D) { + var13 += 360.0D; + } + + if(var13 < -170.0D || var13 >= 170.0D) { + this.rotationYaw += 180.0F; + this.field_469_aj = !this.field_469_aj; + } + + this.setRotation(this.rotationYaw, this.rotationPitch); + List var15 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expands((double)0.2F, 0.0D, (double)0.2F)); + if(var15 != null && var15.size() > 0) { + for(int var45 = 0; var45 < var15.size(); ++var45) { + Entity var17 = (Entity)var15.get(var45); + if(var17 != this.field_328_f && var17.func_124_r() && var17 instanceof EntityMinecart) { + var17.applyEntityCollision(this); + } + } + } + + if(this.field_328_f != null && this.field_328_f.field_304_B) { + this.field_328_f = null; + } + + if(var6 && this.field_9064_W.nextInt(4) == 0) { + --this.field_9165_e; + if(this.field_9165_e < 0) { + this.field_9164_f = this.field_9166_aj = 0.0D; + } + + this.worldObj.spawnParticle("largesmoke", this.posX, this.posY + 0.8D, this.posZ, 0.0D, 0.0D, 0.0D); + } + + } + } + + public Vec3D func_182_g(double var1, double var3, double var5) { + int var7 = MathHelper.floor_double(var1); + int var8 = MathHelper.floor_double(var3); + int var9 = MathHelper.floor_double(var5); + if(this.worldObj.getBlockId(var7, var8 - 1, var9) == Block.minecartTrack.blockID) { + --var8; + } + + if(this.worldObj.getBlockId(var7, var8, var9) == Block.minecartTrack.blockID) { + int var10 = this.worldObj.getBlockMetadata(var7, var8, var9); + var3 = (double)var8; + if(var10 >= 2 && var10 <= 5) { + var3 = (double)(var8 + 1); + } + + int[][] var11 = field_468_ak[var10]; + double var12 = 0.0D; + double var14 = (double)var7 + 0.5D + (double)var11[0][0] * 0.5D; + double var16 = (double)var8 + 0.5D + (double)var11[0][1] * 0.5D; + double var18 = (double)var9 + 0.5D + (double)var11[0][2] * 0.5D; + double var20 = (double)var7 + 0.5D + (double)var11[1][0] * 0.5D; + double var22 = (double)var8 + 0.5D + (double)var11[1][1] * 0.5D; + double var24 = (double)var9 + 0.5D + (double)var11[1][2] * 0.5D; + double var26 = var20 - var14; + double var28 = (var22 - var16) * 2.0D; + double var30 = var24 - var18; + if(var26 == 0.0D) { + var1 = (double)var7 + 0.5D; + var12 = var5 - (double)var9; + } else if(var30 == 0.0D) { + var5 = (double)var9 + 0.5D; + var12 = var1 - (double)var7; + } else { + double var32 = var1 - var14; + double var34 = var5 - var18; + double var36 = (var32 * var26 + var34 * var30) * 2.0D; + var12 = var36; + } + + var1 = var14 + var26 * var12; + var3 = var16 + var28 * var12; + var5 = var18 + var30 * var12; + if(var28 < 0.0D) { + ++var3; + } + + if(var28 > 0.0D) { + var3 += 0.5D; + } + + return Vec3D.createVector(var1, var3, var5); + } else { + return null; + } + } + + protected void writeEntityToNBT(NBTTagCompound var1) { + var1.setInteger("Type", this.minecartType); + if(this.minecartType == 2) { + var1.setDouble("PushX", this.field_9164_f); + var1.setDouble("PushZ", this.field_9166_aj); + var1.setShort("Fuel", (short)this.field_9165_e); + } else if(this.minecartType == 1) { + NBTTagList var2 = new NBTTagList(); + + for(int var3 = 0; var3 < this.cargoItems.length; ++var3) { + if(this.cargoItems[var3] != null) { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte)var3); + this.cargoItems[var3].writeToNBT(var4); + var2.setTag(var4); + } + } + + var1.setTag("Items", var2); + } + + } + + protected void readEntityFromNBT(NBTTagCompound var1) { + this.minecartType = var1.getInteger("Type"); + if(this.minecartType == 2) { + this.field_9164_f = var1.getDouble("PushX"); + this.field_9166_aj = var1.getDouble("PushZ"); + this.field_9165_e = var1.getShort("Fuel"); + } else if(this.minecartType == 1) { + NBTTagList var2 = var1.getTagList("Items"); + this.cargoItems = new ItemStack[this.func_83_a()]; + + for(int var3 = 0; var3 < var2.tagCount(); ++var3) { + NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); + int var5 = var4.getByte("Slot") & 255; + if(var5 >= 0 && var5 < this.cargoItems.length) { + this.cargoItems[var5] = new ItemStack(var4); + } + } + } + + } + + public void applyEntityCollision(Entity var1) { + if(!this.worldObj.multiplayerWorld) { + if(var1 != this.field_328_f) { + if(var1 instanceof EntityLiving && !(var1 instanceof EntityPlayer) && this.minecartType == 0 && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.01D && this.field_328_f == null && var1.field_327_g == null) { + var1.func_6094_e(this); + } + + double var2 = var1.posX - this.posX; + double var4 = var1.posZ - this.posZ; + double var6 = var2 * var2 + var4 * var4; + if(var6 >= (double)1.0E-4F) { + var6 = (double)MathHelper.sqrt_double(var6); + var2 /= var6; + var4 /= var6; + double var8 = 1.0D / var6; + if(var8 > 1.0D) { + var8 = 1.0D; + } + + var2 *= var8; + var4 *= var8; + var2 *= (double)0.1F; + var4 *= (double)0.1F; + var2 *= (double)(1.0F - this.field_286_P); + var4 *= (double)(1.0F - this.field_286_P); + var2 *= 0.5D; + var4 *= 0.5D; + if(var1 instanceof EntityMinecart) { + double var10 = var1.motionX + this.motionX; + double var12 = var1.motionZ + this.motionZ; + if(((EntityMinecart)var1).minecartType == 2 && this.minecartType != 2) { + this.motionX *= (double)0.2F; + this.motionZ *= (double)0.2F; + this.addVelocity(var1.motionX - var2, 0.0D, var1.motionZ - var4); + var1.motionX *= (double)0.7F; + var1.motionZ *= (double)0.7F; + } else if(((EntityMinecart)var1).minecartType != 2 && this.minecartType == 2) { + var1.motionX *= (double)0.2F; + var1.motionZ *= (double)0.2F; + var1.addVelocity(this.motionX + var2, 0.0D, this.motionZ + var4); + this.motionX *= (double)0.7F; + this.motionZ *= (double)0.7F; + } else { + var10 /= 2.0D; + var12 /= 2.0D; + this.motionX *= (double)0.2F; + this.motionZ *= (double)0.2F; + this.addVelocity(var10 - var2, 0.0D, var12 - var4); + var1.motionX *= (double)0.2F; + var1.motionZ *= (double)0.2F; + var1.addVelocity(var10 + var2, 0.0D, var12 + var4); + } + } else { + this.addVelocity(-var2, 0.0D, -var4); + var1.addVelocity(var2 / 4.0D, 0.0D, var4 / 4.0D); + } + } + + } + } + } + + public int func_83_a() { + return 27; + } + + public ItemStack getStackInSlot(int var1) { + return this.cargoItems[var1]; + } + + public boolean func_6092_a(EntityPlayer var1) { + if(this.minecartType == 0) { + if(this.field_328_f != null && this.field_328_f instanceof EntityPlayer && this.field_328_f != var1) { + return true; + } + + if(!this.worldObj.multiplayerWorld) { + var1.func_6094_e(this); + } + } else if(this.minecartType == 1) { + var1.func_166_a(this); + } else if(this.minecartType == 2) { + ItemStack var2 = var1.inventory.getCurrentItem(); + if(var2 != null && var2.itemID == Item.coal.swiftedIndex) { + if(--var2.stackSize == 0) { + var1.inventory.setInventorySlotContents(var1.inventory.currentItem, (ItemStack)null); + } + + this.field_9165_e += 1200; + } + + this.field_9164_f = this.posX - var1.posX; + this.field_9166_aj = this.posZ - var1.posZ; + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityMobs.java b/minecraft_server/src/net/minecraft/src/EntityMobs.java new file mode 100644 index 0000000..437b723 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityMobs.java @@ -0,0 +1,80 @@ +package net.minecraft.src; + +public class EntityMobs extends EntityCreature implements IMobs { + protected int field_404_af = 2; + + public EntityMobs(World var1) { + super(var1); + this.field_9109_aQ = 20; + } + + public void onLivingUpdate() { + float var1 = this.getEntityBrightness(1.0F); + if(var1 > 0.5F) { + this.field_9132_bn += 2; + } + + super.onLivingUpdate(); + } + + public void onUpdate() { + super.onUpdate(); + if(this.worldObj.monstersEnabled == 0) { + this.setEntityDead(); + } + + } + + protected Entity func_158_i() { + EntityPlayer var1 = this.worldObj.getClosestPlayerToEntity(this, 16.0D); + return var1 != null && this.func_145_g(var1) ? var1 : null; + } + + public boolean attackEntity(Entity var1, int var2) { + if(super.attackEntity(var1, var2)) { + if(this.field_328_f != var1 && this.field_327_g != var1) { + if(var1 != this) { + this.field_389_ag = var1; + } + + return true; + } else { + return true; + } + } else { + return false; + } + } + + protected void func_157_a(Entity var1, float var2) { + if((double)var2 < 2.5D && var1.boundingBox.maxY > this.boundingBox.minY && var1.boundingBox.minY < this.boundingBox.maxY) { + this.field_9103_aW = 20; + var1.attackEntity(this, this.field_404_af); + } + + } + + protected float func_159_a(int var1, int var2, int var3) { + return 0.5F - this.worldObj.getLightBrightness(var1, var2, var3); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + public boolean getCanSpawnHere() { + int var1 = MathHelper.floor_double(this.posX); + int var2 = MathHelper.floor_double(this.boundingBox.minY); + int var3 = MathHelper.floor_double(this.posZ); + if(this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, var1, var2, var3) > this.field_9064_W.nextInt(32)) { + return false; + } else { + int var4 = this.worldObj.getBlockLightValue(var1, var2, var3); + return var4 <= this.field_9064_W.nextInt(8) && super.getCanSpawnHere(); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityPainting.java b/minecraft_server/src/net/minecraft/src/EntityPainting.java new file mode 100644 index 0000000..e55bef5 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityPainting.java @@ -0,0 +1,213 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; + +public class EntityPainting extends Entity { + private int field_452_ad; + public int field_448_a; + private int field_9188_d; + private int field_9187_e; + private int field_9186_f; + public EnumArt field_9185_b; + + public EntityPainting(World var1) { + super(var1); + this.field_452_ad = 0; + this.field_448_a = 0; + this.yOffset = 0.0F; + this.setSize(0.5F, 0.5F); + } + + public EntityPainting(World var1, int var2, int var3, int var4, int var5) { + this(var1); + this.field_9188_d = var2; + this.field_9187_e = var3; + this.field_9186_f = var4; + ArrayList var6 = new ArrayList(); + EnumArt[] var7 = EnumArt.values(); + int var8 = var7.length; + + for(int var9 = 0; var9 < var8; ++var9) { + EnumArt var10 = var7[var9]; + this.field_9185_b = var10; + this.func_179_a(var5); + if(this.func_181_b()) { + var6.add(var10); + } + } + + if(var6.size() > 0) { + this.field_9185_b = (EnumArt)var6.get(this.field_9064_W.nextInt(var6.size())); + } + + this.func_179_a(var5); + } + + public void func_179_a(int var1) { + this.field_448_a = var1; + this.prevRotationYaw = this.rotationYaw = (float)(var1 * 90); + float var2 = (float)this.field_9185_b.field_856_z; + float var3 = (float)this.field_9185_b.field_869_A; + float var4 = (float)this.field_9185_b.field_856_z; + if(var1 != 0 && var1 != 2) { + var2 = 0.5F; + } else { + var4 = 0.5F; + } + + var2 /= 32.0F; + var3 /= 32.0F; + var4 /= 32.0F; + float var5 = (float)this.field_9188_d + 0.5F; + float var6 = (float)this.field_9187_e + 0.5F; + float var7 = (float)this.field_9186_f + 0.5F; + float var8 = 9.0F / 16.0F; + if(var1 == 0) { + var7 -= var8; + } + + if(var1 == 1) { + var5 -= var8; + } + + if(var1 == 2) { + var7 += var8; + } + + if(var1 == 3) { + var5 += var8; + } + + if(var1 == 0) { + var5 -= this.func_180_c(this.field_9185_b.field_856_z); + } + + if(var1 == 1) { + var7 += this.func_180_c(this.field_9185_b.field_856_z); + } + + if(var1 == 2) { + var5 += this.func_180_c(this.field_9185_b.field_856_z); + } + + if(var1 == 3) { + var7 -= this.func_180_c(this.field_9185_b.field_856_z); + } + + var6 += this.func_180_c(this.field_9185_b.field_869_A); + this.setPosition((double)var5, (double)var6, (double)var7); + float var9 = -(0.1F / 16.0F); + this.boundingBox.setBounds((double)(var5 - var2 - var9), (double)(var6 - var3 - var9), (double)(var7 - var4 - var9), (double)(var5 + var2 + var9), (double)(var6 + var3 + var9), (double)(var7 + var4 + var9)); + } + + private float func_180_c(int var1) { + return var1 == 32 ? 0.5F : (var1 == 64 ? 0.5F : 0.0F); + } + + public void onUpdate() { + if(this.field_452_ad++ == 100 && !this.func_181_b()) { + this.field_452_ad = 0; + this.setEntityDead(); + this.worldObj.entityJoinedWorld(new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.painting))); + } + + } + + public boolean func_181_b() { + if(this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() > 0) { + return false; + } else { + int var1 = this.field_9185_b.field_856_z / 16; + int var2 = this.field_9185_b.field_869_A / 16; + int var3 = this.field_9188_d; + int var4 = this.field_9187_e; + int var5 = this.field_9186_f; + if(this.field_448_a == 0) { + var3 = MathHelper.floor_double(this.posX - (double)((float)this.field_9185_b.field_856_z / 32.0F)); + } + + if(this.field_448_a == 1) { + var5 = MathHelper.floor_double(this.posZ - (double)((float)this.field_9185_b.field_856_z / 32.0F)); + } + + if(this.field_448_a == 2) { + var3 = MathHelper.floor_double(this.posX - (double)((float)this.field_9185_b.field_856_z / 32.0F)); + } + + if(this.field_448_a == 3) { + var5 = MathHelper.floor_double(this.posZ - (double)((float)this.field_9185_b.field_856_z / 32.0F)); + } + + var4 = MathHelper.floor_double(this.posY - (double)((float)this.field_9185_b.field_869_A / 32.0F)); + + int var7; + for(int var6 = 0; var6 < var1; ++var6) { + for(var7 = 0; var7 < var2; ++var7) { + Material var8; + if(this.field_448_a != 0 && this.field_448_a != 2) { + var8 = this.worldObj.getBlockMaterial(this.field_9188_d, var4 + var7, var5 + var6); + } else { + var8 = this.worldObj.getBlockMaterial(var3 + var6, var4 + var7, this.field_9186_f); + } + + if(!var8.func_216_a()) { + return false; + } + } + } + + List var9 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox); + + for(var7 = 0; var7 < var9.size(); ++var7) { + if(var9.get(var7) instanceof EntityPainting) { + return false; + } + } + + return true; + } + } + + public boolean func_129_c_() { + return true; + } + + public boolean attackEntity(Entity var1, int var2) { + this.setEntityDead(); + this.func_9060_u(); + this.worldObj.entityJoinedWorld(new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.painting))); + return true; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setByte("Dir", (byte)this.field_448_a); + var1.setString("Motive", this.field_9185_b.field_857_y); + var1.setInteger("TileX", this.field_9188_d); + var1.setInteger("TileY", this.field_9187_e); + var1.setInteger("TileZ", this.field_9186_f); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.field_448_a = var1.getByte("Dir"); + this.field_9188_d = var1.getInteger("TileX"); + this.field_9187_e = var1.getInteger("TileY"); + this.field_9186_f = var1.getInteger("TileZ"); + String var2 = var1.getString("Motive"); + EnumArt[] var3 = EnumArt.values(); + int var4 = var3.length; + + for(int var5 = 0; var5 < var4; ++var5) { + EnumArt var6 = var3[var5]; + if(var6.field_857_y.equals(var2)) { + this.field_9185_b = var6; + } + } + + if(this.field_9185_b == null) { + this.field_9185_b = EnumArt.Kebab; + } + + this.func_179_a(this.field_448_a); + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityPig.java b/minecraft_server/src/net/minecraft/src/EntityPig.java new file mode 100644 index 0000000..10282c6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityPig.java @@ -0,0 +1,47 @@ +package net.minecraft.src; + +public class EntityPig extends EntityAnimals { + public boolean rideable = false; + + public EntityPig(World var1) { + super(var1); + this.field_9119_aG = "/mob/pig.png"; + this.setSize(0.9F, 0.9F); + this.rideable = false; + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + var1.setBoolean("Saddle", this.rideable); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + this.rideable = var1.getBoolean("Saddle"); + } + + protected String getLivingSound() { + return "mob.pig"; + } + + protected String getHurtSound() { + return "mob.pig"; + } + + protected String getDeathSound() { + return "mob.pigdeath"; + } + + public boolean func_6092_a(EntityPlayer var1) { + if(this.rideable) { + var1.func_6094_e(this); + return true; + } else { + return false; + } + } + + protected int getDropItemId() { + return Item.porkRaw.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityPigZombie.java b/minecraft_server/src/net/minecraft/src/EntityPigZombie.java new file mode 100644 index 0000000..5dc9f9a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityPigZombie.java @@ -0,0 +1,88 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityPigZombie extends EntityZombie { + private int field_4106_a = 0; + private int field_4105_b = 0; + private static final ItemStack field_4107_c = new ItemStack(Item.swordGold, 1); + + public EntityPigZombie(World var1) { + super(var1); + this.field_9119_aG = "/mob/pigzombie.png"; + this.field_9126_bt = 0.5F; + this.field_404_af = 5; + this.field_9079_ae = true; + } + + public void onUpdate() { + this.field_9126_bt = this.field_389_ag != null ? 0.95F : 0.5F; + if(this.field_4105_b > 0 && --this.field_4105_b == 0) { + this.worldObj.playSoundAtEntity(this, "mob.zombiepig.zpigangry", this.getSoundVolume() * 2.0F, ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F) * 1.8F); + } + + super.onUpdate(); + } + + public boolean getCanSpawnHere() { + return this.worldObj.monstersEnabled > 0 && this.worldObj.func_522_a(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() == 0 && !this.worldObj.getIsAnyLiquid(this.boundingBox); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + var1.setShort("Anger", (short)this.field_4106_a); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + this.field_4106_a = var1.getShort("Anger"); + } + + protected Entity func_158_i() { + return this.field_4106_a == 0 ? null : super.func_158_i(); + } + + public void onLivingUpdate() { + super.onLivingUpdate(); + } + + public boolean attackEntity(Entity var1, int var2) { + if(var1 instanceof EntityPlayer) { + List var3 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expands(32.0D, 32.0D, 32.0D)); + + for(int var4 = 0; var4 < var3.size(); ++var4) { + Entity var5 = (Entity)var3.get(var4); + if(var5 instanceof EntityPigZombie) { + EntityPigZombie var6 = (EntityPigZombie)var5; + var6.func_4047_h(var1); + } + } + + this.func_4047_h(var1); + } + + return super.attackEntity(var1, var2); + } + + private void func_4047_h(Entity var1) { + this.field_389_ag = var1; + this.field_4106_a = 400 + this.field_9064_W.nextInt(400); + this.field_4105_b = this.field_9064_W.nextInt(40); + } + + protected String getLivingSound() { + return "mob.zombiepig.zpig"; + } + + protected String getHurtSound() { + return "mob.zombiepig.zpighurt"; + } + + protected String getDeathSound() { + return "mob.zombiepig.zpigdeath"; + } + + protected int getDropItemId() { + return Item.porkCooked.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityPlayer.java b/minecraft_server/src/net/minecraft/src/EntityPlayer.java new file mode 100644 index 0000000..97e0e24 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityPlayer.java @@ -0,0 +1,266 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntityPlayer extends EntityLiving { + public InventoryPlayer inventory = new InventoryPlayer(this); + public byte field_9152_am = 0; + public int field_9151_an = 0; + public float field_9150_ao; + public float field_9149_ap; + public boolean field_9148_aq = false; + public int field_9147_ar = 0; + public String username; + public int field_4110_as; + private int a = 0; + public EntityFish field_6124_at = null; + + public EntityPlayer(World var1) { + super(var1); + this.yOffset = 1.62F; + this.func_107_c((double)var1.spawnX + 0.5D, (double)(var1.spawnY + 1), (double)var1.spawnZ + 0.5D, 0.0F, 0.0F); + this.field_9109_aQ = 20; + this.field_9116_aJ = "humanoid"; + this.field_9117_aI = 180.0F; + this.field_9062_Y = 20; + this.field_9119_aG = "/mob/char.png"; + } + + public void func_115_v() { + super.func_115_v(); + this.field_9150_ao = this.field_9149_ap; + this.field_9149_ap = 0.0F; + } + + protected void func_152_d_() { + if(this.field_9148_aq) { + ++this.field_9147_ar; + if(this.field_9147_ar == 8) { + this.field_9147_ar = 0; + this.field_9148_aq = false; + } + } else { + this.field_9147_ar = 0; + } + + this.field_9110_aP = (float)this.field_9147_ar / 8.0F; + } + + public void onLivingUpdate() { + if(this.worldObj.monstersEnabled == 0 && this.field_9109_aQ < 20 && this.field_9063_X % 20 * 4 == 0) { + this.heal(1); + } + + this.inventory.decrementAnimations(); + this.field_9150_ao = this.field_9149_ap; + super.onLivingUpdate(); + float var1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + float var2 = (float)Math.atan(-this.motionY * (double)0.2F) * 15.0F; + if(var1 > 0.1F) { + var1 = 0.1F; + } + + if(!this.onGround || this.field_9109_aQ <= 0) { + var1 = 0.0F; + } + + if(this.onGround || this.field_9109_aQ <= 0) { + var2 = 0.0F; + } + + this.field_9149_ap += (var1 - this.field_9149_ap) * 0.4F; + this.field_9101_aY += (var2 - this.field_9101_aY) * 0.8F; + if(this.field_9109_aQ > 0) { + List var3 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expands(1.0D, 0.0D, 1.0D)); + if(var3 != null) { + for(int var4 = 0; var4 < var3.size(); ++var4) { + this.func_171_h((Entity)var3.get(var4)); + } + } + } + + } + + private void func_171_h(Entity var1) { + var1.onCollideWithPlayer(this); + } + + public void onDeath(Entity var1) { + super.onDeath(var1); + this.setSize(0.2F, 0.2F); + this.setPosition(this.posX, this.posY, this.posZ); + this.motionY = (double)0.1F; + if(this.username.equals("Notch")) { + this.func_169_a(new ItemStack(Item.appleRed, 1), true); + } + + this.inventory.dropAllItems(); + if(var1 != null) { + this.motionX = (double)(-MathHelper.cos((this.field_9105_aU + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F); + this.motionZ = (double)(-MathHelper.sin((this.field_9105_aU + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F); + } else { + this.motionX = this.motionZ = 0.0D; + } + + this.yOffset = 0.1F; + } + + public void func_96_b(Entity var1, int var2) { + this.field_9151_an += var2; + } + + public void func_161_a(ItemStack var1) { + this.func_169_a(var1, false); + } + + public void func_169_a(ItemStack var1, boolean var2) { + if(var1 != null) { + EntityItem var3 = new EntityItem(this.worldObj, this.posX, this.posY - (double)0.3F + (double)this.func_104_p(), this.posZ, var1); + var3.field_433_ad = 40; + float var4 = 0.1F; + float var5; + if(var2) { + var5 = this.field_9064_W.nextFloat() * 0.5F; + float var6 = this.field_9064_W.nextFloat() * (float)Math.PI * 2.0F; + var3.motionX = (double)(-MathHelper.sin(var6) * var5); + var3.motionZ = (double)(MathHelper.cos(var6) * var5); + var3.motionY = (double)0.2F; + } else { + var4 = 0.3F; + var3.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var4); + var3.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var4); + var3.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * var4 + 0.1F); + var4 = 0.02F; + var5 = this.field_9064_W.nextFloat() * (float)Math.PI * 2.0F; + var4 *= this.field_9064_W.nextFloat(); + var3.motionX += Math.cos((double)var5) * (double)var4; + var3.motionY += (double)((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.1F); + var3.motionZ += Math.sin((double)var5) * (double)var4; + } + + this.func_162_a(var3); + } + } + + protected void func_162_a(EntityItem var1) { + this.worldObj.entityJoinedWorld(var1); + } + + public float getCurrentPlayerStrVsBlock(Block var1) { + float var2 = this.inventory.getStrVsBlock(var1); + if(this.isInsideOfMaterial(Material.water)) { + var2 /= 5.0F; + } + + if(!this.onGround) { + var2 /= 5.0F; + } + + return var2; + } + + public boolean func_167_b(Block var1) { + return this.inventory.canHarvestBlock(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + NBTTagList var2 = var1.getTagList("Inventory"); + this.inventory.readFromNBT(var2); + this.field_4110_as = var1.getInteger("Dimension"); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + var1.setTag("Inventory", this.inventory.writeToNBT(new NBTTagList())); + var1.setInteger("Dimension", this.field_4110_as); + } + + public void func_166_a(IInventory var1) { + } + + public void func_174_A() { + } + + public void func_163_c(Entity var1, int var2) { + } + + public float func_104_p() { + return 0.12F; + } + + public boolean attackEntity(Entity var1, int var2) { + this.field_9132_bn = 0; + if(this.field_9109_aQ <= 0) { + return false; + } else { + if(var1 instanceof EntityMobs || var1 instanceof EntityArrow) { + if(this.worldObj.monstersEnabled == 0) { + var2 = 0; + } + + if(this.worldObj.monstersEnabled == 1) { + var2 = var2 / 3 + 1; + } + + if(this.worldObj.monstersEnabled == 3) { + var2 = var2 * 3 / 2; + } + } + + return var2 == 0 ? false : super.attackEntity(var1, var2); + } + } + + protected void func_6099_c(int var1) { + int var2 = 25 - this.inventory.getTotalArmorValue(); + int var3 = var1 * var2 + this.a; + this.inventory.damageArmor(var1); + var1 = var3 / 25; + this.a = var3 % 25; + super.func_6099_c(var1); + } + + public void func_170_a(TileEntityFurnace var1) { + } + + public void func_4048_a(TileEntitySign var1) { + } + + public void func_9145_g(Entity var1) { + var1.func_6092_a(this); + } + + public ItemStack func_172_B() { + return this.inventory.getCurrentItem(); + } + + public void func_164_C() { + this.inventory.setInventorySlotContents(this.inventory.currentItem, (ItemStack)null); + } + + public double func_117_x() { + return (double)(this.yOffset - 0.5F); + } + + public void func_168_z() { + this.field_9147_ar = -1; + this.field_9148_aq = true; + } + + public void func_9146_h(Entity var1) { + int var2 = this.inventory.func_9157_a(var1); + if(var2 > 0) { + var1.attackEntity(this, var2); + ItemStack var3 = this.func_172_B(); + if(var3 != null && var1 instanceof EntityLiving) { + var3.func_9217_a((EntityLiving)var1); + if(var3.stackSize <= 0) { + var3.func_577_a(this); + this.func_164_C(); + } + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityPlayerMP.java b/minecraft_server/src/net/minecraft/src/EntityPlayerMP.java new file mode 100644 index 0000000..57415e6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityPlayerMP.java @@ -0,0 +1,169 @@ +package net.minecraft.src; + +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import net.minecraft.server.MinecraftServer; + +public class EntityPlayerMP extends EntityPlayer { + public NetServerHandler field_421_a; + public MinecraftServer mcServer; + public ItemInWorldManager field_425_ad; + public double field_9155_d; + public double field_9154_e; + public List field_422_ag = new LinkedList(); + public Set field_420_ah = new HashSet(); + public double field_418_ai; + public boolean field_12012_al = false; + private int field_9156_bu = -99999999; + private int field_15004_bw = 60; + + public EntityPlayerMP(MinecraftServer var1, World var2, String var3, ItemInWorldManager var4) { + super(var2); + int var5 = var2.spawnX; + int var6 = var2.spawnZ; + int var7 = var2.spawnY; + if(!var2.field_4272_q.field_4306_c) { + var5 += this.field_9064_W.nextInt(20) - 10; + var7 = var2.func_4075_e(var5, var6); + var6 += this.field_9064_W.nextInt(20) - 10; + } + + this.func_107_c((double)var5 + 0.5D, (double)var7, (double)var6 + 0.5D, 0.0F, 0.0F); + this.mcServer = var1; + this.field_9067_S = 0.0F; + var4.field_675_a = this; + this.username = var3; + this.field_425_ad = var4; + this.yOffset = 0.0F; + } + + public void onUpdate() { + --this.field_15004_bw; + } + + public void onDeath(Entity var1) { + this.inventory.dropAllItems(); + } + + public boolean attackEntity(Entity var1, int var2) { + if(this.field_15004_bw > 0) { + return false; + } else { + if(!this.mcServer.field_9011_n) { + if(var1 instanceof EntityPlayer) { + return false; + } + + if(var1 instanceof EntityArrow) { + EntityArrow var3 = (EntityArrow)var1; + if(var3.field_439_ah instanceof EntityPlayer) { + return false; + } + } + } + + return super.attackEntity(var1, var2); + } + } + + public void heal(int var1) { + super.heal(var1); + } + + public void func_175_i() { + super.onUpdate(); + ChunkCoordIntPair var1 = null; + double var2 = 0.0D; + + for(int var4 = 0; var4 < this.field_422_ag.size(); ++var4) { + ChunkCoordIntPair var5 = (ChunkCoordIntPair)this.field_422_ag.get(var4); + double var6 = var5.func_73_a(this); + if(var4 == 0 || var6 < var2) { + var1 = var5; + var2 = var5.func_73_a(this); + } + } + + if(var1 != null) { + boolean var8 = false; + if(var2 < 1024.0D) { + var8 = true; + } + + if(this.field_421_a.func_38_b() < 2) { + var8 = true; + } + + if(var8) { + this.field_422_ag.remove(var1); + this.field_421_a.sendPacket(new Packet51MapChunk(var1.field_152_a * 16, 0, var1.field_151_b * 16, 16, 128, 16, this.mcServer.worldMngr)); + List var9 = this.mcServer.worldMngr.func_532_d(var1.field_152_a * 16, 0, var1.field_151_b * 16, var1.field_152_a * 16 + 16, 128, var1.field_151_b * 16 + 16); + + for(int var10 = 0; var10 < var9.size(); ++var10) { + TileEntity var7 = (TileEntity)var9.get(var10); + this.field_421_a.sendPacket(new Packet59ComplexEntity(var7.xCoord, var7.yCoord, var7.zCoord, var7)); + } + } + } + + if(this.field_9109_aQ != this.field_9156_bu) { + this.field_421_a.sendPacket(new Packet8(this.field_9109_aQ)); + this.field_9156_bu = this.field_9109_aQ; + } + + } + + public void onLivingUpdate() { + this.motionX = this.motionY = this.motionZ = 0.0D; + this.field_9128_br = false; + super.onLivingUpdate(); + } + + public void func_163_c(Entity var1, int var2) { + if(!var1.field_304_B) { + if(var1 instanceof EntityItem) { + this.field_421_a.sendPacket(new Packet17AddToInventory(((EntityItem)var1).item, var2)); + this.mcServer.field_6028_k.func_12021_a(var1, new Packet22Collect(var1.field_331_c, this.field_331_c)); + } + + if(var1 instanceof EntityArrow) { + this.field_421_a.sendPacket(new Packet17AddToInventory(new ItemStack(Item.arrow), 1)); + this.mcServer.field_6028_k.func_12021_a(var1, new Packet22Collect(var1.field_331_c, this.field_331_c)); + } + } + + super.func_163_c(var1, var2); + } + + public void func_168_z() { + if(!this.field_9148_aq) { + this.field_9147_ar = -1; + this.field_9148_aq = true; + this.mcServer.field_6028_k.func_12021_a(this, new Packet18ArmAnimation(this, 1)); + } + + } + + public float func_104_p() { + return 1.62F; + } + + public void func_6094_e(Entity var1) { + super.func_6094_e(var1); + this.field_421_a.sendPacket(new Packet39(this, this.field_327_g)); + this.field_421_a.func_41_a(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); + } + + protected void interact(double var1, boolean var3) { + } + + public void func_9153_b(double var1, boolean var3) { + super.interact(var1, var3); + } + + public boolean func_9059_p() { + return this.field_12012_al; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntitySheep.java b/minecraft_server/src/net/minecraft/src/EntitySheep.java new file mode 100644 index 0000000..10b5b9e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntitySheep.java @@ -0,0 +1,49 @@ +package net.minecraft.src; + +public class EntitySheep extends EntityAnimals { + public boolean sheared = false; + + public EntitySheep(World var1) { + super(var1); + this.field_9119_aG = "/mob/sheep.png"; + this.setSize(0.9F, 1.3F); + } + + public boolean attackEntity(Entity var1, int var2) { + if(!this.worldObj.multiplayerWorld && !this.sheared && var1 instanceof EntityLiving) { + this.sheared = true; + int var3 = 1 + this.field_9064_W.nextInt(3); + + for(int var4 = 0; var4 < var3; ++var4) { + EntityItem var5 = this.dropItemWithOffset(Block.cloth.blockID, 1, 1.0F); + var5.motionY += (double)(this.field_9064_W.nextFloat() * 0.05F); + var5.motionX += (double)((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.1F); + var5.motionZ += (double)((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.1F); + } + } + + return super.attackEntity(var1, var2); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + var1.setBoolean("Sheared", this.sheared); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + this.sheared = var1.getBoolean("Sheared"); + } + + protected String getLivingSound() { + return "mob.sheep"; + } + + protected String getHurtSound() { + return "mob.sheep"; + } + + protected String getDeathSound() { + return "mob.sheep"; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntitySkeleton.java b/minecraft_server/src/net/minecraft/src/EntitySkeleton.java new file mode 100644 index 0000000..f2f3b93 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntitySkeleton.java @@ -0,0 +1,66 @@ +package net.minecraft.src; + +public class EntitySkeleton extends EntityMobs { + private static final ItemStack field_4108_a = new ItemStack(Item.bow, 1); + + public EntitySkeleton(World var1) { + super(var1); + this.field_9119_aG = "/mob/skeleton.png"; + } + + protected String getLivingSound() { + return "mob.skeleton"; + } + + protected String getHurtSound() { + return "mob.skeletonhurt"; + } + + protected String getDeathSound() { + return "mob.skeletonhurt"; + } + + public void onLivingUpdate() { + if(this.worldObj.isDaytime()) { + float var1 = this.getEntityBrightness(1.0F); + if(var1 > 0.5F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) && this.field_9064_W.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F) { + this.field_9061_Z = 300; + } + } + + super.onLivingUpdate(); + } + + protected void func_157_a(Entity var1, float var2) { + if(var2 < 10.0F) { + double var3 = var1.posX - this.posX; + double var5 = var1.posZ - this.posZ; + if(this.field_9103_aW == 0) { + EntityArrow var7 = new EntityArrow(this.worldObj, this); + var7.posY += (double)1.4F; + double var8 = var1.posY - (double)0.2F - var7.posY; + float var10 = MathHelper.sqrt_double(var3 * var3 + var5 * var5) * 0.2F; + this.worldObj.playSoundAtEntity(this, "random.bow", 1.0F, 1.0F / (this.field_9064_W.nextFloat() * 0.4F + 0.8F)); + this.worldObj.entityJoinedWorld(var7); + var7.func_177_a(var3, var8 + (double)var10, var5, 0.6F, 12.0F); + this.field_9103_aW = 30; + } + + this.rotationYaw = (float)(Math.atan2(var5, var3) * 180.0D / (double)((float)Math.PI)) - 90.0F; + this.field_387_ah = true; + } + + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + protected int getDropItemId() { + return Item.arrow.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntitySlime.java b/minecraft_server/src/net/minecraft/src/EntitySlime.java new file mode 100644 index 0000000..882d973 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntitySlime.java @@ -0,0 +1,129 @@ +package net.minecraft.src; + +public class EntitySlime extends EntityLiving implements IMobs { + public float field_401_a; + public float field_400_b; + private int field_402_ae = 0; + public int field_403_ad = 1; + + public EntitySlime(World var1) { + super(var1); + this.field_9119_aG = "/mob/slime.png"; + this.field_403_ad = 1 << this.field_9064_W.nextInt(3); + this.yOffset = 0.0F; + this.field_402_ae = this.field_9064_W.nextInt(20) + 10; + this.func_160_c(this.field_403_ad); + } + + public void func_160_c(int var1) { + this.field_403_ad = var1; + this.setSize(0.6F * (float)var1, 0.6F * (float)var1); + this.field_9109_aQ = var1 * var1; + this.setPosition(this.posX, this.posY, this.posZ); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + var1.setInteger("Size", this.field_403_ad - 1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + this.field_403_ad = var1.getInteger("Size") + 1; + } + + public void onUpdate() { + this.field_400_b = this.field_401_a; + boolean var1 = this.onGround; + super.onUpdate(); + if(this.onGround && !var1) { + for(int var2 = 0; var2 < this.field_403_ad * 8; ++var2) { + float var3 = this.field_9064_W.nextFloat() * (float)Math.PI * 2.0F; + float var4 = this.field_9064_W.nextFloat() * 0.5F + 0.5F; + float var5 = MathHelper.sin(var3) * (float)this.field_403_ad * 0.5F * var4; + float var6 = MathHelper.cos(var3) * (float)this.field_403_ad * 0.5F * var4; + this.worldObj.spawnParticle("slime", this.posX + (double)var5, this.boundingBox.minY, this.posZ + (double)var6, 0.0D, 0.0D, 0.0D); + } + + if(this.field_403_ad > 2) { + this.worldObj.playSoundAtEntity(this, "mob.slime", this.getSoundVolume(), ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F) / 0.8F); + } + + this.field_401_a = -0.5F; + } + + this.field_401_a *= 0.6F; + } + + protected void func_152_d_() { + EntityPlayer var1 = this.worldObj.getClosestPlayerToEntity(this, 16.0D); + if(var1 != null) { + this.func_147_b(var1, 10.0F); + } + + if(this.onGround && this.field_402_ae-- <= 0) { + this.field_402_ae = this.field_9064_W.nextInt(20) + 10; + if(var1 != null) { + this.field_402_ae /= 3; + } + + this.field_9128_br = true; + if(this.field_403_ad > 1) { + this.worldObj.playSoundAtEntity(this, "mob.slime", this.getSoundVolume(), ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F) * 0.8F); + } + + this.field_401_a = 1.0F; + this.field_9131_bo = 1.0F - this.field_9064_W.nextFloat() * 2.0F; + this.field_9130_bp = (float)(1 * this.field_403_ad); + } else { + this.field_9128_br = false; + if(this.onGround) { + this.field_9131_bo = this.field_9130_bp = 0.0F; + } + } + + } + + public void setEntityDead() { + if(this.field_403_ad > 1 && this.field_9109_aQ == 0) { + for(int var1 = 0; var1 < 4; ++var1) { + float var2 = ((float)(var1 % 2) - 0.5F) * (float)this.field_403_ad / 4.0F; + float var3 = ((float)(var1 / 2) - 0.5F) * (float)this.field_403_ad / 4.0F; + EntitySlime var4 = new EntitySlime(this.worldObj); + var4.func_160_c(this.field_403_ad / 2); + var4.func_107_c(this.posX + (double)var2, this.posY + 0.5D, this.posZ + (double)var3, this.field_9064_W.nextFloat() * 360.0F, 0.0F); + this.worldObj.entityJoinedWorld(var4); + } + } + + super.setEntityDead(); + } + + public void onCollideWithPlayer(EntityPlayer var1) { + if(this.field_403_ad > 1 && this.func_145_g(var1) && (double)this.getDistanceToEntity(var1) < 0.6D * (double)this.field_403_ad && var1.attackEntity(this, this.field_403_ad)) { + this.worldObj.playSoundAtEntity(this, "mob.slimeattack", 1.0F, (this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.2F + 1.0F); + } + + } + + protected String getHurtSound() { + return "mob.slime"; + } + + protected String getDeathSound() { + return "mob.slime"; + } + + protected int getDropItemId() { + return this.field_403_ad == 1 ? Item.slimeBall.swiftedIndex : 0; + } + + public boolean getCanSpawnHere() { + Chunk var1 = this.worldObj.getChunkFromBlockCoords(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posZ)); + return (this.field_403_ad == 1 || this.worldObj.monstersEnabled > 0) && this.field_9064_W.nextInt(10) == 0 && var1.func_334_a(987234911L).nextInt(10) == 0 && this.posY < 16.0D; + } + + protected float getSoundVolume() { + return 0.6F; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntitySnowball.java b/minecraft_server/src/net/minecraft/src/EntitySnowball.java new file mode 100644 index 0000000..1c57765 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntitySnowball.java @@ -0,0 +1,201 @@ +package net.minecraft.src; + +import java.util.List; + +public class EntitySnowball extends Entity { + private int field_456_b = -1; + private int field_461_ad = -1; + private int field_460_ae = -1; + private int field_459_af = 0; + private boolean field_457_ag = false; + public int field_458_a = 0; + private EntityLiving field_455_ah; + private int field_454_ai; + private int field_453_aj = 0; + + public EntitySnowball(World var1) { + super(var1); + this.setSize(0.25F, 0.25F); + } + + public EntitySnowball(World var1, EntityLiving var2) { + super(var1); + this.field_455_ah = var2; + this.setSize(0.25F, 0.25F); + this.func_107_c(var2.posX, var2.posY + (double)var2.func_104_p(), var2.posZ, var2.rotationYaw, var2.rotationPitch); + this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.posY -= (double)0.1F; + this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + float var3 = 0.4F; + this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * var3); + this.func_6141_a(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F); + } + + public void func_6141_a(double var1, double var3, double var5, float var7, float var8) { + float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); + var1 /= (double)var9; + var3 /= (double)var9; + var5 /= (double)var9; + var1 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var3 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var5 += this.field_9064_W.nextGaussian() * (double)0.0075F * (double)var8; + var1 *= (double)var7; + var3 *= (double)var7; + var5 *= (double)var7; + this.motionX = var1; + this.motionY = var3; + this.motionZ = var5; + float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(var1, var5) * 180.0D / (double)((float)Math.PI)); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(var3, (double)var10) * 180.0D / (double)((float)Math.PI)); + this.field_454_ai = 0; + } + + public void onUpdate() { + this.field_9071_O = this.posX; + this.field_9070_P = this.posY; + this.field_9069_Q = this.posZ; + super.onUpdate(); + if(this.field_458_a > 0) { + --this.field_458_a; + } + + if(this.field_457_ag) { + int var1 = this.worldObj.getBlockId(this.field_456_b, this.field_461_ad, this.field_460_ae); + if(var1 == this.field_459_af) { + ++this.field_454_ai; + if(this.field_454_ai == 1200) { + this.setEntityDead(); + } + + return; + } + + this.field_457_ag = false; + this.motionX *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionY *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.motionZ *= (double)(this.field_9064_W.nextFloat() * 0.2F); + this.field_454_ai = 0; + this.field_453_aj = 0; + } else { + ++this.field_453_aj; + } + + Vec3D var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); + Vec3D var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition var3 = this.worldObj.func_486_a(var15, var2); + var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); + var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + if(var3 != null) { + var2 = Vec3D.createVector(var3.hitVec.xCoord, var3.hitVec.yCoord, var3.hitVec.zCoord); + } + + if(!this.worldObj.multiplayerWorld) { + Entity var4 = null; + List var5 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expands(1.0D, 1.0D, 1.0D)); + double var6 = 0.0D; + + for(int var8 = 0; var8 < var5.size(); ++var8) { + Entity var9 = (Entity)var5.get(var8); + if(var9.func_129_c_() && (var9 != this.field_455_ah || this.field_453_aj >= 5)) { + float var10 = 0.3F; + AxisAlignedBB var11 = var9.boundingBox.expands((double)var10, (double)var10, (double)var10); + MovingObjectPosition var12 = var11.func_706_a(var15, var2); + if(var12 != null) { + double var13 = var15.distanceTo(var12.hitVec); + if(var13 < var6 || var6 == 0.0D) { + var4 = var9; + var6 = var13; + } + } + } + } + + if(var4 != null) { + var3 = new MovingObjectPosition(var4); + } + } + + if(var3 != null) { + if(var3.entityHit != null && var3.entityHit.attackEntity(this.field_455_ah, 0)) { + } + + for(int var16 = 0; var16 < 8; ++var16) { + this.worldObj.spawnParticle("snowballpoof", this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D); + } + + this.setEntityDead(); + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + float var17 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); + + for(this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var17) * 180.0D / (double)((float)Math.PI)); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float var18 = 0.99F; + float var19 = 0.03F; + if(this.handleWaterMovement()) { + for(int var7 = 0; var7 < 4; ++var7) { + float var20 = 0.25F; + this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)var20, this.posY - this.motionY * (double)var20, this.posZ - this.motionZ * (double)var20, this.motionX, this.motionY, this.motionZ); + } + + var18 = 0.8F; + } + + this.motionX *= (double)var18; + this.motionY *= (double)var18; + this.motionZ *= (double)var18; + this.motionY -= (double)var19; + this.setPosition(this.posX, this.posY, this.posZ); + } + + public void writeEntityToNBT(NBTTagCompound var1) { + var1.setShort("xTile", (short)this.field_456_b); + var1.setShort("yTile", (short)this.field_461_ad); + var1.setShort("zTile", (short)this.field_460_ae); + var1.setByte("inTile", (byte)this.field_459_af); + var1.setByte("shake", (byte)this.field_458_a); + var1.setByte("inGround", (byte)(this.field_457_ag ? 1 : 0)); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + this.field_456_b = var1.getShort("xTile"); + this.field_461_ad = var1.getShort("yTile"); + this.field_460_ae = var1.getShort("zTile"); + this.field_459_af = var1.getByte("inTile") & 255; + this.field_458_a = var1.getByte("shake") & 255; + this.field_457_ag = var1.getByte("inGround") == 1; + } + + public void onCollideWithPlayer(EntityPlayer var1) { + if(this.field_457_ag && this.field_455_ah == var1 && this.field_458_a <= 0 && var1.inventory.addItemStackToInventory(new ItemStack(Item.arrow.swiftedIndex, 1))) { + this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.field_9064_W.nextFloat() - this.field_9064_W.nextFloat()) * 0.7F + 1.0F) * 2.0F); + var1.func_163_c(this, 1); + this.setEntityDead(); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntitySpider.java b/minecraft_server/src/net/minecraft/src/EntitySpider.java new file mode 100644 index 0000000..97b4929 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntitySpider.java @@ -0,0 +1,69 @@ +package net.minecraft.src; + +public class EntitySpider extends EntityMobs { + public EntitySpider(World var1) { + super(var1); + this.field_9119_aG = "/mob/spider.png"; + this.setSize(1.4F, 0.9F); + this.field_9126_bt = 0.8F; + } + + public double func_130_h() { + return (double)this.height * 0.75D - 0.5D; + } + + protected Entity func_158_i() { + float var1 = this.getEntityBrightness(1.0F); + if(var1 < 0.5F) { + double var2 = 16.0D; + return this.worldObj.getClosestPlayerToEntity(this, var2); + } else { + return null; + } + } + + protected String getLivingSound() { + return "mob.spider"; + } + + protected String getHurtSound() { + return "mob.spider"; + } + + protected String getDeathSound() { + return "mob.spiderdeath"; + } + + protected void func_157_a(Entity var1, float var2) { + float var3 = this.getEntityBrightness(1.0F); + if(var3 > 0.5F && this.field_9064_W.nextInt(100) == 0) { + this.field_389_ag = null; + } else { + if(var2 > 2.0F && var2 < 6.0F && this.field_9064_W.nextInt(10) == 0) { + if(this.onGround) { + double var4 = var1.posX - this.posX; + double var6 = var1.posZ - this.posZ; + float var8 = MathHelper.sqrt_double(var4 * var4 + var6 * var6); + this.motionX = var4 / (double)var8 * 0.5D * (double)0.8F + this.motionX * (double)0.2F; + this.motionZ = var6 / (double)var8 * 0.5D * (double)0.8F + this.motionZ * (double)0.2F; + this.motionY = (double)0.4F; + } + } else { + super.func_157_a(var1, var2); + } + + } + } + + public void writeEntityToNBT(NBTTagCompound var1) { + super.writeEntityToNBT(var1); + } + + public void readEntityFromNBT(NBTTagCompound var1) { + super.readEntityFromNBT(var1); + } + + protected int getDropItemId() { + return Item.silk.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityTNTPrimed.java b/minecraft_server/src/net/minecraft/src/EntityTNTPrimed.java new file mode 100644 index 0000000..62b57ce --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityTNTPrimed.java @@ -0,0 +1,68 @@ +package net.minecraft.src; + +public class EntityTNTPrimed extends Entity { + public int fuse; + + public EntityTNTPrimed(World var1) { + super(var1); + this.fuse = 0; + this.field_329_e = true; + this.setSize(0.98F, 0.98F); + this.yOffset = this.height / 2.0F; + } + + public EntityTNTPrimed(World var1, double var2, double var4, double var6) { + this(var1); + this.setPosition(var2, var4, var6); + float var8 = (float)(Math.random() * (double)((float)Math.PI) * 2.0D); + this.motionX = (double)(-MathHelper.sin(var8 * (float)Math.PI / 180.0F) * 0.02F); + this.motionY = (double)0.2F; + this.motionZ = (double)(-MathHelper.cos(var8 * (float)Math.PI / 180.0F) * 0.02F); + this.entityWalks = false; + this.fuse = 80; + this.prevPosX = var2; + this.prevPosY = var4; + this.prevPosZ = var6; + } + + public boolean func_129_c_() { + return !this.field_304_B; + } + + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.motionY -= (double)0.04F; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)0.98F; + this.motionY *= (double)0.98F; + this.motionZ *= (double)0.98F; + if(this.onGround) { + this.motionX *= (double)0.7F; + this.motionZ *= (double)0.7F; + this.motionY *= -0.5D; + } + + if(this.fuse-- <= 0) { + this.setEntityDead(); + this.explode(); + } else { + this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D); + } + + } + + private void explode() { + float var1 = 4.0F; + this.worldObj.func_12013_a((Entity)null, this.posX, this.posY, this.posZ, var1); + } + + protected void writeEntityToNBT(NBTTagCompound var1) { + var1.setByte("Fuse", (byte)this.fuse); + } + + protected void readEntityFromNBT(NBTTagCompound var1) { + this.fuse = var1.getByte("Fuse"); + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityTracker.java b/minecraft_server/src/net/minecraft/src/EntityTracker.java new file mode 100644 index 0000000..2689fff --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityTracker.java @@ -0,0 +1,141 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import net.minecraft.server.MinecraftServer; + +public class EntityTracker { + private Set field_911_a = new HashSet(); + private MCHashTable field_910_b = new MCHashTable(); + private MinecraftServer mcServer; + private int field_912_d; + + public EntityTracker(MinecraftServer var1) { + this.mcServer = var1; + this.field_912_d = var1.configManager.func_640_a(); + } + + public void func_611_a(Entity var1) { + if(var1 instanceof EntityPlayerMP) { + this.func_6187_a(var1, 512, 2); + EntityPlayerMP var2 = (EntityPlayerMP)var1; + Iterator var3 = this.field_911_a.iterator(); + + while(var3.hasNext()) { + EntityTrackerEntry var4 = (EntityTrackerEntry)var3.next(); + if(var4.field_909_a != var2) { + var4.func_606_a(var2); + } + } + } else if(var1 instanceof EntityFish) { + this.func_6186_a(var1, 64, 5, true); + } else if(var1 instanceof EntityArrow) { + this.func_6186_a(var1, 64, 5, true); + } else if(var1 instanceof EntitySnowball) { + this.func_6186_a(var1, 64, 5, true); + } else if(var1 instanceof EntityItem) { + this.func_6186_a(var1, 64, 20, true); + } else if(var1 instanceof EntityMinecart) { + this.func_6186_a(var1, 160, 5, true); + } else if(var1 instanceof EntityBoat) { + this.func_6186_a(var1, 160, 5, true); + } else if(var1 instanceof IAnimals) { + this.func_6187_a(var1, 160, 3); + } else if(var1 instanceof EntityTNTPrimed) { + this.func_6186_a(var1, 160, 10, true); + } + + } + + public void func_6187_a(Entity var1, int var2, int var3) { + this.func_6186_a(var1, var2, var3, false); + } + + public void func_6186_a(Entity var1, int var2, int var3, boolean var4) { + if(var2 > this.field_912_d) { + var2 = this.field_912_d; + } + + if(this.field_910_b.containsItem(var1.field_331_c)) { + throw new IllegalStateException("Entity is already tracked!"); + } else { + EntityTrackerEntry var5 = new EntityTrackerEntry(var1, var2, var3, var4); + this.field_911_a.add(var5); + this.field_910_b.addKey(var1.field_331_c, var5); + var5.func_601_b(this.mcServer.worldMngr.playerEntities); + } + } + + public void func_610_b(Entity var1) { + if(var1 instanceof EntityPlayerMP) { + EntityPlayerMP var2 = (EntityPlayerMP)var1; + Iterator var3 = this.field_911_a.iterator(); + + while(var3.hasNext()) { + EntityTrackerEntry var4 = (EntityTrackerEntry)var3.next(); + var4.func_12019_a(var2); + } + } + + EntityTrackerEntry var5 = (EntityTrackerEntry)this.field_910_b.removeObject(var1.field_331_c); + if(var5 != null) { + this.field_911_a.remove(var5); + var5.func_604_a(); + } + + } + + public void func_607_a() { + ArrayList var1 = new ArrayList(); + Iterator var2 = this.field_911_a.iterator(); + + while(var2.hasNext()) { + EntityTrackerEntry var3 = (EntityTrackerEntry)var2.next(); + var3.func_605_a(this.mcServer.worldMngr.playerEntities); + if(var3.field_900_j && var3.field_909_a instanceof EntityPlayerMP) { + var1.add((EntityPlayerMP)var3.field_909_a); + } + } + + for(int var6 = 0; var6 < var1.size(); ++var6) { + EntityPlayerMP var7 = (EntityPlayerMP)var1.get(var6); + Iterator var4 = this.field_911_a.iterator(); + + while(var4.hasNext()) { + EntityTrackerEntry var5 = (EntityTrackerEntry)var4.next(); + if(var5.field_909_a != var7) { + var5.func_606_a(var7); + } + } + } + + } + + public void func_12021_a(Entity var1, Packet var2) { + EntityTrackerEntry var3 = (EntityTrackerEntry)this.field_910_b.lookup(var1.field_331_c); + if(var3 != null) { + var3.func_603_a(var2); + } + + } + + public void func_609_a(Entity var1, Packet var2) { + EntityTrackerEntry var3 = (EntityTrackerEntry)this.field_910_b.lookup(var1.field_331_c); + if(var3 != null) { + var3.func_12018_b(var2); + } + + } + + public void func_9238_a(EntityPlayerMP var1) { + Iterator var2 = this.field_911_a.iterator(); + + while(var2.hasNext()) { + EntityTrackerEntry var3 = (EntityTrackerEntry)var2.next(); + var3.func_9219_b(var1); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityTrackerEntry.java b/minecraft_server/src/net/minecraft/src/EntityTrackerEntry.java new file mode 100644 index 0000000..69b50e2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityTrackerEntry.java @@ -0,0 +1,266 @@ +package net.minecraft.src; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +public class EntityTrackerEntry { + public Entity field_909_a; + public boolean field_9237_b = false; + public boolean field_9236_c = false; + public boolean field_9225_n = false; + public int field_9235_d; + public int field_9234_e; + public int field_9233_f; + public int field_9232_g; + public int field_9231_h; + public int field_9230_i; + public int field_9229_j; + public double field_9228_k; + public double field_9227_l; + public double field_9226_m; + public int field_9221_t = 0; + private double field_9224_q; + private double field_9223_r; + private double field_9222_s; + private boolean field_12020_u = false; + private boolean field_9220_u; + public boolean field_900_j = false; + public Set field_899_k = new HashSet(); + + public EntityTrackerEntry(Entity var1, int var2, int var3, boolean var4) { + this.field_909_a = var1; + this.field_9235_d = var2; + this.field_9234_e = var3; + this.field_9220_u = var4; + this.field_9233_f = MathHelper.floor_double(var1.posX * 32.0D); + this.field_9232_g = MathHelper.floor_double(var1.posY * 32.0D); + this.field_9231_h = MathHelper.floor_double(var1.posZ * 32.0D); + this.field_9230_i = MathHelper.floor_float(var1.rotationYaw * 256.0F / 360.0F); + this.field_9229_j = MathHelper.floor_float(var1.rotationPitch * 256.0F / 360.0F); + } + + public boolean equals(Object var1) { + return var1 instanceof EntityTrackerEntry ? ((EntityTrackerEntry)var1).field_909_a.field_331_c == this.field_909_a.field_331_c : false; + } + + public int hashCode() { + return this.field_909_a.field_331_c; + } + + public void func_605_a(List var1) { + this.field_900_j = false; + if(!this.field_12020_u || this.field_909_a.getDistanceSq(this.field_9224_q, this.field_9223_r, this.field_9222_s) > 16.0D) { + this.field_9224_q = this.field_909_a.posX; + this.field_9223_r = this.field_909_a.posY; + this.field_9222_s = this.field_909_a.posZ; + this.field_12020_u = true; + this.field_900_j = true; + this.func_601_b(var1); + } + + if(this.field_9221_t++ % this.field_9234_e == 0) { + int var2 = MathHelper.floor_double(this.field_909_a.posX * 32.0D); + int var3 = MathHelper.floor_double(this.field_909_a.posY * 32.0D); + int var4 = MathHelper.floor_double(this.field_909_a.posZ * 32.0D); + int var5 = MathHelper.floor_float(this.field_909_a.rotationYaw * 256.0F / 360.0F); + int var6 = MathHelper.floor_float(this.field_909_a.rotationPitch * 256.0F / 360.0F); + boolean var7 = var2 != this.field_9233_f || var3 != this.field_9232_g || var4 != this.field_9231_h; + boolean var8 = var5 != this.field_9230_i || var6 != this.field_9229_j; + int var9 = var2 - this.field_9233_f; + int var10 = var3 - this.field_9232_g; + int var11 = var4 - this.field_9231_h; + Object var12 = null; + if(var9 >= -128 && var9 < 128 && var10 >= -128 && var10 < 128 && var11 >= -128 && var11 < 128) { + if(var7 && var8) { + var12 = new Packet33RelEntityMoveLook(this.field_909_a.field_331_c, (byte)var9, (byte)var10, (byte)var11, (byte)var5, (byte)var6); + } else if(var7) { + var12 = new Packet31RelEntityMove(this.field_909_a.field_331_c, (byte)var9, (byte)var10, (byte)var11); + } else if(var8) { + var12 = new Packet32EntityLook(this.field_909_a.field_331_c, (byte)var5, (byte)var6); + } else { + var12 = new Packet30Entity(this.field_909_a.field_331_c); + } + } else { + var12 = new Packet34EntityTeleport(this.field_909_a.field_331_c, var2, var3, var4, (byte)var5, (byte)var6); + } + + if(this.field_9220_u) { + double var13 = this.field_909_a.motionX - this.field_9228_k; + double var15 = this.field_909_a.motionY - this.field_9227_l; + double var17 = this.field_909_a.motionZ - this.field_9226_m; + double var19 = 0.02D; + double var21 = var13 * var13 + var15 * var15 + var17 * var17; + if(var21 > var19 * var19 || var21 > 0.0D && this.field_909_a.motionX == 0.0D && this.field_909_a.motionY == 0.0D && this.field_909_a.motionZ == 0.0D) { + this.field_9228_k = this.field_909_a.motionX; + this.field_9227_l = this.field_909_a.motionY; + this.field_9226_m = this.field_909_a.motionZ; + this.func_603_a(new Packet28(this.field_909_a.field_331_c, this.field_9228_k, this.field_9227_l, this.field_9226_m)); + } + } + + if(var12 != null) { + this.func_603_a((Packet)var12); + } + + if(this.field_9237_b && this.field_909_a.field_327_g == null) { + this.field_9237_b = false; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 101)); + } else if(!this.field_9237_b && this.field_909_a.field_327_g != null) { + this.field_9237_b = true; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 100)); + } + + if(this.field_909_a instanceof EntityLiving) { + if(this.field_9225_n && !this.field_909_a.func_9059_p()) { + this.field_9225_n = false; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 105)); + } else if(!this.field_9225_n && this.field_909_a.func_9059_p()) { + this.field_9225_n = true; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 104)); + } + } + + if(this.field_9236_c && this.field_909_a.field_9061_Z <= 0) { + this.field_9236_c = false; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 103)); + } else if(!this.field_9236_c && this.field_909_a.field_9061_Z > 0) { + this.field_9236_c = true; + this.func_12018_b(new Packet18ArmAnimation(this.field_909_a, 102)); + } + + this.field_9233_f = var2; + this.field_9232_g = var3; + this.field_9231_h = var4; + this.field_9230_i = var5; + this.field_9229_j = var6; + } + + if(this.field_909_a.field_9078_E) { + this.func_12018_b(new Packet28(this.field_909_a)); + this.field_909_a.field_9078_E = false; + } + + } + + public void func_603_a(Packet var1) { + Iterator var2 = this.field_899_k.iterator(); + + while(var2.hasNext()) { + EntityPlayerMP var3 = (EntityPlayerMP)var2.next(); + var3.field_421_a.sendPacket(var1); + } + + } + + public void func_12018_b(Packet var1) { + this.func_603_a(var1); + if(this.field_909_a instanceof EntityPlayerMP) { + ((EntityPlayerMP)this.field_909_a).field_421_a.sendPacket(var1); + } + + } + + public void func_604_a() { + this.func_603_a(new Packet29DestroyEntity(this.field_909_a.field_331_c)); + } + + public void func_12019_a(EntityPlayerMP var1) { + if(this.field_899_k.contains(var1)) { + this.field_899_k.remove(var1); + } + + } + + public void func_606_a(EntityPlayerMP var1) { + if(var1 != this.field_909_a) { + double var2 = var1.posX - (double)(this.field_9233_f / 32); + double var4 = var1.posZ - (double)(this.field_9231_h / 32); + if(var2 >= (double)(-this.field_9235_d) && var2 <= (double)this.field_9235_d && var4 >= (double)(-this.field_9235_d) && var4 <= (double)this.field_9235_d) { + if(!this.field_899_k.contains(var1)) { + this.field_899_k.add(var1); + var1.field_421_a.sendPacket(this.func_602_b()); + if(this.field_9225_n) { + var1.field_421_a.sendPacket(new Packet18ArmAnimation(this.field_909_a, 104)); + } + + if(this.field_9237_b) { + var1.field_421_a.sendPacket(new Packet18ArmAnimation(this.field_909_a, 100)); + } + + if(this.field_9236_c) { + var1.field_421_a.sendPacket(new Packet18ArmAnimation(this.field_909_a, 102)); + } + + if(this.field_9220_u) { + var1.field_421_a.sendPacket(new Packet28(this.field_909_a.field_331_c, this.field_909_a.motionX, this.field_909_a.motionY, this.field_909_a.motionZ)); + } + } + } else if(this.field_899_k.contains(var1)) { + this.field_899_k.remove(var1); + var1.field_421_a.sendPacket(new Packet29DestroyEntity(this.field_909_a.field_331_c)); + } + + } + } + + public void func_601_b(List var1) { + for(int var2 = 0; var2 < var1.size(); ++var2) { + this.func_606_a((EntityPlayerMP)var1.get(var2)); + } + + } + + private Packet func_602_b() { + if(this.field_909_a instanceof EntityItem) { + EntityItem var3 = (EntityItem)this.field_909_a; + Packet21PickupSpawn var2 = new Packet21PickupSpawn(var3); + var3.posX = (double)var2.xPosition / 32.0D; + var3.posY = (double)var2.yPosition / 32.0D; + var3.posZ = (double)var2.zPosition / 32.0D; + return var2; + } else if(this.field_909_a instanceof EntityPlayerMP) { + return new Packet20NamedEntitySpawn((EntityPlayer)this.field_909_a); + } else { + if(this.field_909_a instanceof EntityMinecart) { + EntityMinecart var1 = (EntityMinecart)this.field_909_a; + if(var1.minecartType == 0) { + return new Packet23VehicleSpawn(this.field_909_a, 10); + } + + if(var1.minecartType == 1) { + return new Packet23VehicleSpawn(this.field_909_a, 11); + } + + if(var1.minecartType == 2) { + return new Packet23VehicleSpawn(this.field_909_a, 12); + } + } + + if(this.field_909_a instanceof EntityBoat) { + return new Packet23VehicleSpawn(this.field_909_a, 1); + } else if(this.field_909_a instanceof IAnimals) { + return new Packet24MobSpawn((EntityLiving)this.field_909_a); + } else if(this.field_909_a instanceof EntityFish) { + return new Packet23VehicleSpawn(this.field_909_a, 90); + } else if(this.field_909_a instanceof EntityArrow) { + return new Packet23VehicleSpawn(this.field_909_a, 60); + } else if(this.field_909_a instanceof EntitySnowball) { + return new Packet23VehicleSpawn(this.field_909_a, 61); + } else if(this.field_909_a instanceof EntityTNTPrimed) { + return new Packet23VehicleSpawn(this.field_909_a, 50); + } else { + throw new IllegalArgumentException("Don\'t know how to add " + this.field_909_a.getClass() + "!"); + } + } + } + + public void func_9219_b(EntityPlayerMP var1) { + if(this.field_899_k.contains(var1)) { + this.field_899_k.remove(var1); + var1.field_421_a.sendPacket(new Packet29DestroyEntity(this.field_909_a.field_331_c)); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityZombie.java b/minecraft_server/src/net/minecraft/src/EntityZombie.java new file mode 100644 index 0000000..1dc7bc5 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityZombie.java @@ -0,0 +1,37 @@ +package net.minecraft.src; + +public class EntityZombie extends EntityMobs { + public EntityZombie(World var1) { + super(var1); + this.field_9119_aG = "/mob/zombie.png"; + this.field_9126_bt = 0.5F; + this.field_404_af = 5; + } + + public void onLivingUpdate() { + if(this.worldObj.isDaytime()) { + float var1 = this.getEntityBrightness(1.0F); + if(var1 > 0.5F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) && this.field_9064_W.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F) { + this.field_9061_Z = 300; + } + } + + super.onLivingUpdate(); + } + + protected String getLivingSound() { + return "mob.zombie"; + } + + protected String getHurtSound() { + return "mob.zombiehurt"; + } + + protected String getDeathSound() { + return "mob.zombiedeath"; + } + + protected int getDropItemId() { + return Item.feather.swiftedIndex; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EntityZombieSimple.java b/minecraft_server/src/net/minecraft/src/EntityZombieSimple.java new file mode 100644 index 0000000..9f19e0b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EntityZombieSimple.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +public class EntityZombieSimple extends EntityMobs { + public EntityZombieSimple(World var1) { + super(var1); + this.field_9119_aG = "/mob/zombie.png"; + this.field_9126_bt = 0.5F; + this.field_404_af = 50; + this.field_9109_aQ *= 10; + this.yOffset *= 6.0F; + this.setSize(this.width * 6.0F, this.height * 6.0F); + } + + protected float func_159_a(int var1, int var2, int var3) { + return this.worldObj.getLightBrightness(var1, var2, var3) - 0.5F; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EnumArt.java b/minecraft_server/src/net/minecraft/src/EnumArt.java new file mode 100644 index 0000000..6aa7f0b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EnumArt.java @@ -0,0 +1,42 @@ +package net.minecraft.src; + +public enum EnumArt { + Kebab("Kebab", 16, 16, 0, 0), + Aztec("Aztec", 16, 16, 16, 0), + Alban("Alban", 16, 16, 32, 0), + Aztec2("Aztec2", 16, 16, 48, 0), + Bomb("Bomb", 16, 16, 64, 0), + Plant("Plant", 16, 16, 80, 0), + Wasteland("Wasteland", 16, 16, 96, 0), + Pool("Pool", 32, 16, 0, 32), + Courbet("Courbet", 32, 16, 32, 32), + Sea("Sea", 32, 16, 64, 32), + Sunset("Sunset", 32, 16, 96, 32), + Creebet("Creebet", 32, 16, 128, 32), + Wanderer("Wanderer", 16, 32, 0, 64), + Graham("Graham", 16, 32, 16, 64), + Match("Match", 32, 32, 0, 128), + Bust("Bust", 32, 32, 32, 128), + Stage("Stage", 32, 32, 64, 128), + Void("Void", 32, 32, 96, 128), + SkullAndRoses("SkullAndRoses", 32, 32, 128, 128), + Fighters("Fighters", 64, 32, 0, 96), + Pointer("Pointer", 64, 64, 0, 192), + Pigscene("Pigscene", 64, 64, 64, 192), + Skeleton("Skeleton", 64, 48, 192, 64), + DonkeyKong("DonkeyKong", 64, 48, 192, 112); + + public final String field_857_y; + public final int field_856_z; + public final int field_869_A; + public final int field_867_B; + public final int field_865_C; + + private EnumArt(String var3, int var4, int var5, int var6, int var7) { + this.field_857_y = var3; + this.field_856_z = var4; + this.field_869_A = var5; + this.field_867_B = var6; + this.field_865_C = var7; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EnumCreatureType.java b/minecraft_server/src/net/minecraft/src/EnumCreatureType.java new file mode 100644 index 0000000..c07b300 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EnumCreatureType.java @@ -0,0 +1,14 @@ +package net.minecraft.src; + +public enum EnumCreatureType { + monster(IMobs.class, 100), + creature(EntityAnimals.class, 20); + + public final Class field_4221_c; + public final int field_4220_d; + + private EnumCreatureType(Class var3, int var4) { + this.field_4221_c = var3; + this.field_4220_d = var4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/EnumMobType.java b/minecraft_server/src/net/minecraft/src/EnumMobType.java new file mode 100644 index 0000000..609fdb7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EnumMobType.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public enum EnumMobType { + everything, + mobs, + players; +} diff --git a/minecraft_server/src/net/minecraft/src/EnumSkyBlock.java b/minecraft_server/src/net/minecraft/src/EnumSkyBlock.java new file mode 100644 index 0000000..302c123 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/EnumSkyBlock.java @@ -0,0 +1,12 @@ +package net.minecraft.src; + +public enum EnumSkyBlock { + Sky(15), + Block(0); + + public final int field_984_c; + + private EnumSkyBlock(int var3) { + this.field_984_c = var3; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Explosion.java b/minecraft_server/src/net/minecraft/src/Explosion.java new file mode 100644 index 0000000..99314da --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Explosion.java @@ -0,0 +1,166 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; + +public class Explosion { + public boolean field_12031_a = false; + private Random field_12024_h = new Random(); + private World field_4310_a; + public double field_12030_b; + public double field_12029_c; + public double field_12028_d; + public Entity field_12027_e; + public float field_12026_f; + public Set field_12025_g = new HashSet(); + + public Explosion(World var1, Entity var2, double var3, double var5, double var7, float var9) { + this.field_4310_a = var1; + this.field_12027_e = var2; + this.field_12026_f = var9; + this.field_12030_b = var3; + this.field_12029_c = var5; + this.field_12028_d = var7; + } + + public void func_12023_a() { + float var1 = this.field_12026_f; + byte var2 = 16; + + int var3; + int var4; + int var5; + double var15; + double var17; + double var19; + for(var3 = 0; var3 < var2; ++var3) { + for(var4 = 0; var4 < var2; ++var4) { + for(var5 = 0; var5 < var2; ++var5) { + if(var3 == 0 || var3 == var2 - 1 || var4 == 0 || var4 == var2 - 1 || var5 == 0 || var5 == var2 - 1) { + double var6 = (double)((float)var3 / ((float)var2 - 1.0F) * 2.0F - 1.0F); + double var8 = (double)((float)var4 / ((float)var2 - 1.0F) * 2.0F - 1.0F); + double var10 = (double)((float)var5 / ((float)var2 - 1.0F) * 2.0F - 1.0F); + double var12 = Math.sqrt(var6 * var6 + var8 * var8 + var10 * var10); + var6 /= var12; + var8 /= var12; + var10 /= var12; + float var14 = this.field_12026_f * (0.7F + this.field_4310_a.rand.nextFloat() * 0.6F); + var15 = this.field_12030_b; + var17 = this.field_12029_c; + var19 = this.field_12028_d; + + for(float var21 = 0.3F; var14 > 0.0F; var14 -= var21 * (12.0F / 16.0F)) { + int var22 = MathHelper.floor_double(var15); + int var23 = MathHelper.floor_double(var17); + int var24 = MathHelper.floor_double(var19); + int var25 = this.field_4310_a.getBlockId(var22, var23, var24); + if(var25 > 0) { + var14 -= (Block.blocksList[var25].func_226_a(this.field_12027_e) + 0.3F) * var21; + } + + if(var14 > 0.0F) { + this.field_12025_g.add(new ChunkPosition(var22, var23, var24)); + } + + var15 += var6 * (double)var21; + var17 += var8 * (double)var21; + var19 += var10 * (double)var21; + } + } + } + } + } + + this.field_12026_f *= 2.0F; + var3 = MathHelper.floor_double(this.field_12030_b - (double)this.field_12026_f - 1.0D); + var4 = MathHelper.floor_double(this.field_12030_b + (double)this.field_12026_f + 1.0D); + var5 = MathHelper.floor_double(this.field_12029_c - (double)this.field_12026_f - 1.0D); + int var29 = MathHelper.floor_double(this.field_12029_c + (double)this.field_12026_f + 1.0D); + int var7 = MathHelper.floor_double(this.field_12028_d - (double)this.field_12026_f - 1.0D); + int var30 = MathHelper.floor_double(this.field_12028_d + (double)this.field_12026_f + 1.0D); + List var9 = this.field_4310_a.getEntitiesWithinAABBExcludingEntity(this.field_12027_e, AxisAlignedBB.getBoundingBoxFromPool((double)var3, (double)var5, (double)var7, (double)var4, (double)var29, (double)var30)); + Vec3D var31 = Vec3D.createVector(this.field_12030_b, this.field_12029_c, this.field_12028_d); + + for(int var11 = 0; var11 < var9.size(); ++var11) { + Entity var33 = (Entity)var9.get(var11); + double var13 = var33.getDistance(this.field_12030_b, this.field_12029_c, this.field_12028_d) / (double)this.field_12026_f; + if(var13 <= 1.0D) { + var15 = var33.posX - this.field_12030_b; + var17 = var33.posY - this.field_12029_c; + var19 = var33.posZ - this.field_12028_d; + double var39 = (double)MathHelper.sqrt_double(var15 * var15 + var17 * var17 + var19 * var19); + var15 /= var39; + var17 /= var39; + var19 /= var39; + double var40 = (double)this.field_4310_a.func_494_a(var31, var33.boundingBox); + double var41 = (1.0D - var13) * var40; + var33.attackEntity(this.field_12027_e, (int)((var41 * var41 + var41) / 2.0D * 8.0D * (double)this.field_12026_f + 1.0D)); + var33.motionX += var15 * var41; + var33.motionY += var17 * var41; + var33.motionZ += var19 * var41; + } + } + + this.field_12026_f = var1; + ArrayList var32 = new ArrayList(); + var32.addAll(this.field_12025_g); + if(this.field_12031_a) { + for(int var34 = var32.size() - 1; var34 >= 0; --var34) { + ChunkPosition var35 = (ChunkPosition)var32.get(var34); + int var36 = var35.field_846_a; + int var37 = var35.field_845_b; + int var16 = var35.field_847_c; + int var38 = this.field_4310_a.getBlockId(var36, var37, var16); + int var18 = this.field_4310_a.getBlockId(var36, var37 - 1, var16); + if(var38 == 0 && Block.field_540_p[var18] && this.field_12024_h.nextInt(3) == 0) { + this.field_4310_a.setBlockWithNotify(var36, var37, var16, Block.fire.blockID); + } + } + } + + } + + public void func_732_a() { + this.field_4310_a.playSoundEffect(this.field_12030_b, this.field_12029_c, this.field_12028_d, "random.explode", 4.0F, (1.0F + (this.field_4310_a.rand.nextFloat() - this.field_4310_a.rand.nextFloat()) * 0.2F) * 0.7F); + ArrayList var1 = new ArrayList(); + var1.addAll(this.field_12025_g); + + for(int var2 = var1.size() - 1; var2 >= 0; --var2) { + ChunkPosition var3 = (ChunkPosition)var1.get(var2); + int var4 = var3.field_846_a; + int var5 = var3.field_845_b; + int var6 = var3.field_847_c; + int var7 = this.field_4310_a.getBlockId(var4, var5, var6); + + for(int var8 = 0; var8 < 1; ++var8) { + double var9 = (double)((float)var4 + this.field_4310_a.rand.nextFloat()); + double var11 = (double)((float)var5 + this.field_4310_a.rand.nextFloat()); + double var13 = (double)((float)var6 + this.field_4310_a.rand.nextFloat()); + double var15 = var9 - this.field_12030_b; + double var17 = var11 - this.field_12029_c; + double var19 = var13 - this.field_12028_d; + double var21 = (double)MathHelper.sqrt_double(var15 * var15 + var17 * var17 + var19 * var19); + var15 /= var21; + var17 /= var21; + var19 /= var21; + double var23 = 0.5D / (var21 / (double)this.field_12026_f + 0.1D); + var23 *= (double)(this.field_4310_a.rand.nextFloat() * this.field_4310_a.rand.nextFloat() + 0.3F); + var15 *= var23; + var17 *= var23; + var19 *= var23; + this.field_4310_a.spawnParticle("explode", (var9 + this.field_12030_b * 1.0D) / 2.0D, (var11 + this.field_12029_c * 1.0D) / 2.0D, (var13 + this.field_12028_d * 1.0D) / 2.0D, var15, var17, var19); + this.field_4310_a.spawnParticle("smoke", var9, var11, var13, var15, var17, var19); + } + + if(var7 > 0) { + Block.blocksList[var7].dropBlockAsItemWithChance(this.field_4310_a, var4, var5, var6, this.field_4310_a.getBlockMetadata(var4, var5, var6), 0.3F); + this.field_4310_a.setBlockWithNotify(var4, var5, var6, 0); + Block.blocksList[var7].onBlockDestroyedByExplosion(this.field_4310_a, var4, var5, var6); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/GuiLogFormatter.java b/minecraft_server/src/net/minecraft/src/GuiLogFormatter.java new file mode 100644 index 0000000..d0868cc --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/GuiLogFormatter.java @@ -0,0 +1,46 @@ +package net.minecraft.src; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.logging.Formatter; +import java.util.logging.Level; +import java.util.logging.LogRecord; + +class GuiLogFormatter extends Formatter { + final GuiLogOutputHandler outputHandler; + + GuiLogFormatter(GuiLogOutputHandler var1) { + this.outputHandler = var1; + } + + public String format(LogRecord var1) { + StringBuilder var2 = new StringBuilder(); + Level var3 = var1.getLevel(); + if(var3 == Level.FINEST) { + var2.append("[FINEST] "); + } else if(var3 == Level.FINER) { + var2.append("[FINER] "); + } else if(var3 == Level.FINE) { + var2.append("[FINE] "); + } else if(var3 == Level.INFO) { + var2.append("[INFO] "); + } else if(var3 == Level.WARNING) { + var2.append("[WARNING] "); + } else if(var3 == Level.SEVERE) { + var2.append("[SEVERE] "); + } else if(var3 == Level.SEVERE) { + var2.append("[" + var3.getLocalizedName() + "] "); + } + + var2.append(var1.getMessage()); + var2.append('\n'); + Throwable var4 = var1.getThrown(); + if(var4 != null) { + StringWriter var5 = new StringWriter(); + var4.printStackTrace(new PrintWriter(var5)); + var2.append(var5.toString()); + } + + return var2.toString(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/GuiLogOutputHandler.java b/minecraft_server/src/net/minecraft/src/GuiLogOutputHandler.java new file mode 100644 index 0000000..d245a6b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/GuiLogOutputHandler.java @@ -0,0 +1,37 @@ +package net.minecraft.src; + +import java.util.logging.Formatter; +import java.util.logging.Handler; +import java.util.logging.LogRecord; +import javax.swing.JTextArea; + +public class GuiLogOutputHandler extends Handler { + private int[] field_998_b = new int[1024]; + private int field_1001_c = 0; + Formatter field_999_a = new GuiLogFormatter(this); + private JTextArea field_1000_d; + + public GuiLogOutputHandler(JTextArea var1) { + this.setFormatter(this.field_999_a); + this.field_1000_d = var1; + } + + public void close() { + } + + public void flush() { + } + + public void publish(LogRecord var1) { + int var2 = this.field_1000_d.getDocument().getLength(); + this.field_1000_d.append(this.field_999_a.format(var1)); + this.field_1000_d.setCaretPosition(this.field_1000_d.getDocument().getLength()); + int var3 = this.field_1000_d.getDocument().getLength() - var2; + if(this.field_998_b[this.field_1001_c] != 0) { + this.field_1000_d.replaceRange("", 0, this.field_998_b[this.field_1001_c]); + } + + this.field_998_b[this.field_1001_c] = var3; + this.field_1001_c = (this.field_1001_c + 1) % 1024; + } +} diff --git a/minecraft_server/src/net/minecraft/src/GuiStatsComponent.java b/minecraft_server/src/net/minecraft/src/GuiStatsComponent.java new file mode 100644 index 0000000..b0e4a5f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/GuiStatsComponent.java @@ -0,0 +1,56 @@ +package net.minecraft.src; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import javax.swing.JComponent; +import javax.swing.Timer; + +public class GuiStatsComponent extends JComponent { + private int[] memoryUse = new int[256]; + private int updateCounter = 0; + private String[] displayStrings = new String[10]; + + public GuiStatsComponent() { + this.setPreferredSize(new Dimension(256, 196)); + this.setMinimumSize(new Dimension(256, 196)); + this.setMaximumSize(new Dimension(256, 196)); + (new Timer(500, new GuiStatsListener(this))).start(); + this.setBackground(Color.BLACK); + } + + private void updateStats() { + long var1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + System.gc(); + this.displayStrings[0] = "Memory use: " + var1 / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; + this.displayStrings[1] = "Threads: " + NetworkManager.numReadThreads + " + " + NetworkManager.numWriteThreads; + this.memoryUse[this.updateCounter++ & 255] = (int)(var1 * 100L / Runtime.getRuntime().maxMemory()); + this.repaint(); + } + + public void paint(Graphics var1) { + var1.setColor(new Color(16777215)); + var1.fillRect(0, 0, 256, 192); + + int var2; + for(var2 = 0; var2 < 256; ++var2) { + int var3 = this.memoryUse[var2 + this.updateCounter & 255]; + var1.setColor(new Color(var3 + 28 << 16)); + var1.fillRect(var2, 100 - var3, 1, var3); + } + + var1.setColor(Color.BLACK); + + for(var2 = 0; var2 < this.displayStrings.length; ++var2) { + String var4 = this.displayStrings[var2]; + if(var4 != null) { + var1.drawString(var4, 32, 116 + var2 * 16); + } + } + + } + + static void update(GuiStatsComponent var0) { + var0.updateStats(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/GuiStatsListener.java b/minecraft_server/src/net/minecraft/src/GuiStatsListener.java new file mode 100644 index 0000000..11323c8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/GuiStatsListener.java @@ -0,0 +1,16 @@ +package net.minecraft.src; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +class GuiStatsListener implements ActionListener { + final GuiStatsComponent statsComponent; + + GuiStatsListener(GuiStatsComponent var1) { + this.statsComponent = var1; + } + + public void actionPerformed(ActionEvent var1) { + GuiStatsComponent.update(this.statsComponent); + } +} diff --git a/minecraft_server/src/net/minecraft/src/HashEntry.java b/minecraft_server/src/net/minecraft/src/HashEntry.java new file mode 100644 index 0000000..1efe342 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/HashEntry.java @@ -0,0 +1,50 @@ +package net.minecraft.src; + +class HashEntry { + final int field_841_a; + Object field_840_b; + HashEntry field_843_c; + final int field_842_d; + + HashEntry(int var1, int var2, Object var3, HashEntry var4) { + this.field_840_b = var3; + this.field_843_c = var4; + this.field_841_a = var2; + this.field_842_d = var1; + } + + public final int func_559_a() { + return this.field_841_a; + } + + public final Object func_558_b() { + return this.field_840_b; + } + + public final boolean equals(Object var1) { + if(!(var1 instanceof HashEntry)) { + return false; + } else { + HashEntry var2 = (HashEntry)var1; + Integer var3 = Integer.valueOf(this.func_559_a()); + Integer var4 = Integer.valueOf(var2.func_559_a()); + if(var3 == var4 || var3 != null && var3.equals(var4)) { + Object var5 = this.func_558_b(); + Object var6 = var2.func_558_b(); + if(var5 == var6 || var5 != null && var5.equals(var6)) { + return true; + } + } + + return false; + } + } + + public final int hashCode() { + return MCHashTable.getHash(this.field_841_a); + } + + public final String toString() { + return this.func_559_a() + "=" + this.func_558_b(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/HashEntry2.java b/minecraft_server/src/net/minecraft/src/HashEntry2.java new file mode 100644 index 0000000..4e0cbf2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/HashEntry2.java @@ -0,0 +1,50 @@ +package net.minecraft.src; + +class HashEntry2 { + final long field_1025_a; + Object field_1024_b; + HashEntry2 field_1027_c; + final int field_1026_d; + + HashEntry2(int var1, long var2, Object var4, HashEntry2 var5) { + this.field_1024_b = var4; + this.field_1027_c = var5; + this.field_1025_a = var2; + this.field_1026_d = var1; + } + + public final long func_736_a() { + return this.field_1025_a; + } + + public final Object func_735_b() { + return this.field_1024_b; + } + + public final boolean equals(Object var1) { + if(!(var1 instanceof HashEntry2)) { + return false; + } else { + HashEntry2 var2 = (HashEntry2)var1; + Long var3 = Long.valueOf(this.func_736_a()); + Long var4 = Long.valueOf(var2.func_736_a()); + if(var3 == var4 || var3 != null && var3.equals(var4)) { + Object var5 = this.func_735_b(); + Object var6 = var2.func_735_b(); + if(var5 == var6 || var5 != null && var5.equals(var6)) { + return true; + } + } + + return false; + } + } + + public final int hashCode() { + return MCHashTable2.func_674_d(this.field_1025_a); + } + + public final String toString() { + return this.func_736_a() + "=" + this.func_735_b(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/IAnimals.java b/minecraft_server/src/net/minecraft/src/IAnimals.java new file mode 100644 index 0000000..8592735 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IAnimals.java @@ -0,0 +1,4 @@ +package net.minecraft.src; + +public interface IAnimals { +} diff --git a/minecraft_server/src/net/minecraft/src/IBlockAccess.java b/minecraft_server/src/net/minecraft/src/IBlockAccess.java new file mode 100644 index 0000000..d9ba267 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IBlockAccess.java @@ -0,0 +1,11 @@ +package net.minecraft.src; + +public interface IBlockAccess { + int getBlockId(int var1, int var2, int var3); + + int getBlockMetadata(int var1, int var2, int var3); + + Material getBlockMaterial(int var1, int var2, int var3); + + boolean doesBlockAllowAttachment(int var1, int var2, int var3); +} diff --git a/minecraft_server/src/net/minecraft/src/IChunkLoader.java b/minecraft_server/src/net/minecraft/src/IChunkLoader.java new file mode 100644 index 0000000..3fe0072 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IChunkLoader.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +import java.io.IOException; + +public interface IChunkLoader { + Chunk func_659_a(World var1, int var2, int var3) throws IOException; + + void func_662_a(World var1, Chunk var2) throws IOException; + + void func_4104_b(World var1, Chunk var2) throws IOException; + + void func_661_a(); + + void func_660_b(); +} diff --git a/minecraft_server/src/net/minecraft/src/IChunkProvider.java b/minecraft_server/src/net/minecraft/src/IChunkProvider.java new file mode 100644 index 0000000..5360638 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IChunkProvider.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +public interface IChunkProvider { + boolean chunkExists(int var1, int var2); + + Chunk func_363_b(int var1, int var2); + + void populate(IChunkProvider var1, int var2, int var3); + + boolean saveWorld(boolean var1, IProgressUpdate var2); + + boolean func_361_a(); + + boolean func_364_b(); +} diff --git a/minecraft_server/src/net/minecraft/src/ICommandListener.java b/minecraft_server/src/net/minecraft/src/ICommandListener.java new file mode 100644 index 0000000..3f36305 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ICommandListener.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public interface ICommandListener { + void log(String var1); + + String getUsername(); +} diff --git a/minecraft_server/src/net/minecraft/src/IInventory.java b/minecraft_server/src/net/minecraft/src/IInventory.java new file mode 100644 index 0000000..4cbe838 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IInventory.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public interface IInventory { + int func_83_a(); + + ItemStack getStackInSlot(int var1); +} diff --git a/minecraft_server/src/net/minecraft/src/IMobs.java b/minecraft_server/src/net/minecraft/src/IMobs.java new file mode 100644 index 0000000..d5ee18b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IMobs.java @@ -0,0 +1,4 @@ +package net.minecraft.src; + +public interface IMobs extends IAnimals { +} diff --git a/minecraft_server/src/net/minecraft/src/IProgressUpdate.java b/minecraft_server/src/net/minecraft/src/IProgressUpdate.java new file mode 100644 index 0000000..6aae68a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IProgressUpdate.java @@ -0,0 +1,9 @@ +package net.minecraft.src; + +public interface IProgressUpdate { + void func_438_a(String var1); + + void func_439_b(String var1); + + void func_437_a(int var1); +} diff --git a/minecraft_server/src/net/minecraft/src/IUpdatePlayerListBox.java b/minecraft_server/src/net/minecraft/src/IUpdatePlayerListBox.java new file mode 100644 index 0000000..cd69e50 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IUpdatePlayerListBox.java @@ -0,0 +1,5 @@ +package net.minecraft.src; + +public interface IUpdatePlayerListBox { + void update(); +} diff --git a/minecraft_server/src/net/minecraft/src/IWorldAccess.java b/minecraft_server/src/net/minecraft/src/IWorldAccess.java new file mode 100644 index 0000000..80eef2e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/IWorldAccess.java @@ -0,0 +1,21 @@ +package net.minecraft.src; + +public interface IWorldAccess { + void func_683_a(int var1, int var2, int var3); + + void func_685_a(int var1, int var2, int var3, int var4, int var5, int var6); + + void playSound(String var1, double var2, double var4, double var6, float var8, float var9); + + void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12); + + void func_681_a(Entity var1); + + void func_688_b(Entity var1); + + void func_684_a(); + + void playRecord(String var1, int var2, int var3, int var4); + + void func_686_a(int var1, int var2, int var3, TileEntity var4); +} diff --git a/minecraft_server/src/net/minecraft/src/InventoryLargeChest.java b/minecraft_server/src/net/minecraft/src/InventoryLargeChest.java new file mode 100644 index 0000000..fce7ef0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/InventoryLargeChest.java @@ -0,0 +1,21 @@ +package net.minecraft.src; + +public class InventoryLargeChest implements IInventory { + private String name; + private IInventory upperChest; + private IInventory lowerChest; + + public InventoryLargeChest(String var1, IInventory var2, IInventory var3) { + this.name = var1; + this.upperChest = var2; + this.lowerChest = var3; + } + + public int func_83_a() { + return this.upperChest.func_83_a() + this.lowerChest.func_83_a(); + } + + public ItemStack getStackInSlot(int var1) { + return var1 >= this.upperChest.func_83_a() ? this.lowerChest.getStackInSlot(var1 - this.upperChest.func_83_a()) : this.upperChest.getStackInSlot(var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/InventoryPlayer.java b/minecraft_server/src/net/minecraft/src/InventoryPlayer.java new file mode 100644 index 0000000..6d0f53f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/InventoryPlayer.java @@ -0,0 +1,293 @@ +package net.minecraft.src; + +public class InventoryPlayer implements IInventory { + public ItemStack[] mainInventory = new ItemStack[37]; + public ItemStack[] armorInventory = new ItemStack[4]; + public ItemStack[] craftingInventory = new ItemStack[4]; + public int currentItem = 0; + private EntityPlayer player; + public boolean field_498_e = false; + + public InventoryPlayer(EntityPlayer var1) { + this.player = var1; + } + + public ItemStack getCurrentItem() { + return this.mainInventory[this.currentItem]; + } + + private int func_6126_d(int var1) { + for(int var2 = 0; var2 < this.mainInventory.length; ++var2) { + if(this.mainInventory[var2] != null && this.mainInventory[var2].itemID == var1) { + return var2; + } + } + + return -1; + } + + private int getFirstPartialMatchingStack(int var1) { + for(int var2 = 0; var2 < this.mainInventory.length; ++var2) { + if(this.mainInventory[var2] != null && this.mainInventory[var2].itemID == var1 && this.mainInventory[var2].stackSize < this.mainInventory[var2].getMaxStackSize() && this.mainInventory[var2].stackSize < this.getInventoryStackLimit()) { + return var2; + } + } + + return -1; + } + + private int getFirstEmptyStack() { + for(int var1 = 0; var1 < this.mainInventory.length; ++var1) { + if(this.mainInventory[var1] == null) { + return var1; + } + } + + return -1; + } + + private int addItemsToInventory(int var1, int var2) { + int var3 = this.getFirstPartialMatchingStack(var1); + if(var3 < 0) { + var3 = this.getFirstEmptyStack(); + } + + if(var3 < 0) { + return var2; + } else { + if(this.mainInventory[var3] == null) { + this.mainInventory[var3] = new ItemStack(var1, 0); + } + + int var4 = var2; + if(var2 > this.mainInventory[var3].getMaxStackSize() - this.mainInventory[var3].stackSize) { + var4 = this.mainInventory[var3].getMaxStackSize() - this.mainInventory[var3].stackSize; + } + + if(var4 > this.getInventoryStackLimit() - this.mainInventory[var3].stackSize) { + var4 = this.getInventoryStackLimit() - this.mainInventory[var3].stackSize; + } + + if(var4 == 0) { + return var2; + } else { + var2 -= var4; + this.mainInventory[var3].stackSize += var4; + this.mainInventory[var3].animationsToGo = 5; + return var2; + } + } + } + + public void decrementAnimations() { + for(int var1 = 0; var1 < this.mainInventory.length; ++var1) { + if(this.mainInventory[var1] != null && this.mainInventory[var1].animationsToGo > 0) { + --this.mainInventory[var1].animationsToGo; + } + } + + } + + public boolean func_6127_b(int var1) { + int var2 = this.func_6126_d(var1); + if(var2 < 0) { + return false; + } else { + if(--this.mainInventory[var2].stackSize <= 0) { + this.mainInventory[var2] = null; + } + + return true; + } + } + + public boolean addItemStackToInventory(ItemStack var1) { + if(var1.itemDamage == 0) { + var1.stackSize = this.addItemsToInventory(var1.itemID, var1.stackSize); + if(var1.stackSize == 0) { + return true; + } + } + + int var2 = this.getFirstEmptyStack(); + if(var2 >= 0) { + this.mainInventory[var2] = var1; + this.mainInventory[var2].animationsToGo = 5; + return true; + } else { + return false; + } + } + + public void setInventorySlotContents(int var1, ItemStack var2) { + ItemStack[] var3 = this.mainInventory; + if(var1 >= var3.length) { + var1 -= var3.length; + var3 = this.armorInventory; + } + + if(var1 >= var3.length) { + var1 -= var3.length; + var3 = this.craftingInventory; + } + + var3[var1] = var2; + } + + public float getStrVsBlock(Block var1) { + float var2 = 1.0F; + if(this.mainInventory[this.currentItem] != null) { + var2 *= this.mainInventory[this.currentItem].getStrVsBlock(var1); + } + + return var2; + } + + public NBTTagList writeToNBT(NBTTagList var1) { + int var2; + NBTTagCompound var3; + for(var2 = 0; var2 < this.mainInventory.length; ++var2) { + if(this.mainInventory[var2] != null) { + var3 = new NBTTagCompound(); + var3.setByte("Slot", (byte)var2); + this.mainInventory[var2].writeToNBT(var3); + var1.setTag(var3); + } + } + + for(var2 = 0; var2 < this.armorInventory.length; ++var2) { + if(this.armorInventory[var2] != null) { + var3 = new NBTTagCompound(); + var3.setByte("Slot", (byte)(var2 + 100)); + this.armorInventory[var2].writeToNBT(var3); + var1.setTag(var3); + } + } + + for(var2 = 0; var2 < this.craftingInventory.length; ++var2) { + if(this.craftingInventory[var2] != null) { + var3 = new NBTTagCompound(); + var3.setByte("Slot", (byte)(var2 + 80)); + this.craftingInventory[var2].writeToNBT(var3); + var1.setTag(var3); + } + } + + return var1; + } + + public void readFromNBT(NBTTagList var1) { + this.mainInventory = new ItemStack[36]; + this.armorInventory = new ItemStack[4]; + this.craftingInventory = new ItemStack[4]; + + for(int var2 = 0; var2 < var1.tagCount(); ++var2) { + NBTTagCompound var3 = (NBTTagCompound)var1.tagAt(var2); + int var4 = var3.getByte("Slot") & 255; + if(var4 >= 0 && var4 < this.mainInventory.length) { + this.mainInventory[var4] = new ItemStack(var3); + } + + if(var4 >= 80 && var4 < this.craftingInventory.length + 80) { + this.craftingInventory[var4 - 80] = new ItemStack(var3); + } + + if(var4 >= 100 && var4 < this.armorInventory.length + 100) { + this.armorInventory[var4 - 100] = new ItemStack(var3); + } + } + + } + + public int func_83_a() { + return this.mainInventory.length + 4; + } + + public ItemStack getStackInSlot(int var1) { + ItemStack[] var2 = this.mainInventory; + if(var1 >= var2.length) { + var1 -= var2.length; + var2 = this.armorInventory; + } + + if(var1 >= var2.length) { + var1 -= var2.length; + var2 = this.craftingInventory; + } + + return var2[var1]; + } + + public int getInventoryStackLimit() { + return 64; + } + + public int func_9157_a(Entity var1) { + ItemStack var2 = this.getStackInSlot(this.currentItem); + return var2 != null ? var2.func_9218_a(var1) : 1; + } + + public boolean canHarvestBlock(Block var1) { + if(var1.blockMaterial != Material.rock && var1.blockMaterial != Material.iron && var1.blockMaterial != Material.builtSnow && var1.blockMaterial != Material.snow) { + return true; + } else { + ItemStack var2 = this.getStackInSlot(this.currentItem); + return var2 != null ? var2.func_573_b(var1) : false; + } + } + + public int getTotalArmorValue() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + + for(int var4 = 0; var4 < this.armorInventory.length; ++var4) { + if(this.armorInventory[var4] != null && this.armorInventory[var4].getItem() instanceof ItemArmor) { + int var5 = this.armorInventory[var4].getMaxDamage(); + int var6 = this.armorInventory[var4].itemDamage; + int var7 = var5 - var6; + var2 += var7; + var3 += var5; + int var8 = ((ItemArmor)this.armorInventory[var4].getItem()).field_256_aY; + var1 += var8; + } + } + + if(var3 == 0) { + return 0; + } else { + return (var1 - 1) * var2 / var3 + 1; + } + } + + public void damageArmor(int var1) { + for(int var2 = 0; var2 < this.armorInventory.length; ++var2) { + if(this.armorInventory[var2] != null && this.armorInventory[var2].getItem() instanceof ItemArmor) { + this.armorInventory[var2].damageItem(var1); + if(this.armorInventory[var2].stackSize == 0) { + this.armorInventory[var2].func_577_a(this.player); + this.armorInventory[var2] = null; + } + } + } + + } + + public void dropAllItems() { + int var1; + for(var1 = 0; var1 < this.mainInventory.length; ++var1) { + if(this.mainInventory[var1] != null) { + this.player.func_169_a(this.mainInventory[var1], true); + this.mainInventory[var1] = null; + } + } + + for(var1 = 0; var1 < this.armorInventory.length; ++var1) { + if(this.armorInventory[var1] != null) { + this.player.func_169_a(this.armorInventory[var1], true); + this.armorInventory[var1] = null; + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/Item.java b/minecraft_server/src/net/minecraft/src/Item.java new file mode 100644 index 0000000..11d2a87 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Item.java @@ -0,0 +1,166 @@ +package net.minecraft.src; + +import java.util.Random; + +public class Item { + protected static Random rand = new Random(); + public static Item[] itemsList = new Item[32000]; + public static Item shovelSteel = (new ItemSpade(0, 2)).setIconIndex(82); + public static Item pickaxeSteel = (new ItemPickaxe(1, 2)).setIconIndex(98); + public static Item axeSteel = (new ItemAxe(2, 2)).setIconIndex(114); + public static Item flintAndSteel = (new ItemFlintAndSteel(3)).setIconIndex(5); + public static Item appleRed = (new ItemFood(4, 4)).setIconIndex(10); + public static Item bow = (new ItemBow(5)).setIconIndex(21); + public static Item arrow = (new Item(6)).setIconIndex(37); + public static Item coal = (new Item(7)).setIconIndex(7); + public static Item diamond = (new Item(8)).setIconIndex(55); + public static Item ingotIron = (new Item(9)).setIconIndex(23); + public static Item ingotGold = (new Item(10)).setIconIndex(39); + public static Item swordSteel = (new ItemSword(11, 2)).setIconIndex(66); + public static Item swordWood = (new ItemSword(12, 0)).setIconIndex(64); + public static Item shovelWood = (new ItemSpade(13, 0)).setIconIndex(80); + public static Item pickaxeWood = (new ItemPickaxe(14, 0)).setIconIndex(96); + public static Item axeWood = (new ItemAxe(15, 0)).setIconIndex(112); + public static Item swordStone = (new ItemSword(16, 1)).setIconIndex(65); + public static Item shovelStone = (new ItemSpade(17, 1)).setIconIndex(81); + public static Item pickaxeStone = (new ItemPickaxe(18, 1)).setIconIndex(97); + public static Item axeStone = (new ItemAxe(19, 1)).setIconIndex(113); + public static Item swordDiamond = (new ItemSword(20, 3)).setIconIndex(67); + public static Item shovelDiamond = (new ItemSpade(21, 3)).setIconIndex(83); + public static Item pickaxeDiamond = (new ItemPickaxe(22, 3)).setIconIndex(99); + public static Item axeDiamond = (new ItemAxe(23, 3)).setIconIndex(115); + public static Item stick = (new Item(24)).setIconIndex(53).setFull3D(); + public static Item bowlEmpty = (new Item(25)).setIconIndex(71); + public static Item bowlSoup = (new ItemSoup(26, 10)).setIconIndex(72); + public static Item swordGold = (new ItemSword(27, 0)).setIconIndex(68); + public static Item shovelGold = (new ItemSpade(28, 0)).setIconIndex(84); + public static Item pickaxeGold = (new ItemPickaxe(29, 0)).setIconIndex(100); + public static Item axeGold = (new ItemAxe(30, 0)).setIconIndex(116); + public static Item silk = (new Item(31)).setIconIndex(8); + public static Item feather = (new Item(32)).setIconIndex(24); + public static Item gunpowder = (new Item(33)).setIconIndex(40); + public static Item hoeWood = (new ItemHoe(34, 0)).setIconIndex(128); + public static Item hoeStone = (new ItemHoe(35, 1)).setIconIndex(129); + public static Item hoeSteel = (new ItemHoe(36, 2)).setIconIndex(130); + public static Item hoeDiamond = (new ItemHoe(37, 3)).setIconIndex(131); + public static Item hoeGold = (new ItemHoe(38, 1)).setIconIndex(132); + public static Item seeds = (new ItemSeeds(39, Block.crops.blockID)).setIconIndex(9); + public static Item wheat = (new Item(40)).setIconIndex(25); + public static Item bread = (new ItemFood(41, 5)).setIconIndex(41); + public static Item helmetLeather = (new ItemArmor(42, 0, 0, 0)).setIconIndex(0); + public static Item plateLeather = (new ItemArmor(43, 0, 0, 1)).setIconIndex(16); + public static Item legsLeather = (new ItemArmor(44, 0, 0, 2)).setIconIndex(32); + public static Item bootsLeather = (new ItemArmor(45, 0, 0, 3)).setIconIndex(48); + public static Item helmetChain = (new ItemArmor(46, 1, 1, 0)).setIconIndex(1); + public static Item plateChain = (new ItemArmor(47, 1, 1, 1)).setIconIndex(17); + public static Item legsChain = (new ItemArmor(48, 1, 1, 2)).setIconIndex(33); + public static Item bootsChain = (new ItemArmor(49, 1, 1, 3)).setIconIndex(49); + public static Item helmetSteel = (new ItemArmor(50, 2, 2, 0)).setIconIndex(2); + public static Item plateSteel = (new ItemArmor(51, 2, 2, 1)).setIconIndex(18); + public static Item legsSteel = (new ItemArmor(52, 2, 2, 2)).setIconIndex(34); + public static Item bootsSteel = (new ItemArmor(53, 2, 2, 3)).setIconIndex(50); + public static Item helmetDiamond = (new ItemArmor(54, 3, 3, 0)).setIconIndex(3); + public static Item plateDiamond = (new ItemArmor(55, 3, 3, 1)).setIconIndex(19); + public static Item legsDiamond = (new ItemArmor(56, 3, 3, 2)).setIconIndex(35); + public static Item bootsDiamond = (new ItemArmor(57, 3, 3, 3)).setIconIndex(51); + public static Item helmetGold = (new ItemArmor(58, 1, 4, 0)).setIconIndex(4); + public static Item plateGold = (new ItemArmor(59, 1, 4, 1)).setIconIndex(20); + public static Item legsGold = (new ItemArmor(60, 1, 4, 2)).setIconIndex(36); + public static Item bootsGold = (new ItemArmor(61, 1, 4, 3)).setIconIndex(52); + public static Item flint = (new Item(62)).setIconIndex(6); + public static Item porkRaw = (new ItemFood(63, 3)).setIconIndex(87); + public static Item porkCooked = (new ItemFood(64, 8)).setIconIndex(88); + public static Item painting = (new ItemPainting(65)).setIconIndex(26); + public static Item appleGold = (new ItemFood(66, 42)).setIconIndex(11); + public static Item sign = (new ItemSign(67)).setIconIndex(42); + public static Item doorWood = (new ItemDoor(68, Material.wood)).setIconIndex(43); + public static Item bucketEmpty = (new ItemBucket(69, 0)).setIconIndex(74); + public static Item bucketWater = (new ItemBucket(70, Block.waterStill.blockID)).setIconIndex(75); + public static Item bucketLava = (new ItemBucket(71, Block.lavaStill.blockID)).setIconIndex(76); + public static Item minecartEmpty = (new ItemMinecart(72, 0)).setIconIndex(135); + public static Item saddle = (new ItemSaddle(73)).setIconIndex(104); + public static Item doorSteel = (new ItemDoor(74, Material.iron)).setIconIndex(44); + public static Item redstone = (new ItemRedstone(75)).setIconIndex(56); + public static Item snowball = (new ItemSnowball(76)).setIconIndex(14); + public static Item boat = (new ItemBoat(77)).setIconIndex(136); + public static Item leather = (new Item(78)).setIconIndex(103); + public static Item bucketMilk = (new ItemBucket(79, -1)).setIconIndex(77); + public static Item brick = (new Item(80)).setIconIndex(22); + public static Item clay = (new Item(81)).setIconIndex(57); + public static Item reed = (new ItemReed(82, Block.reed)).setIconIndex(27); + public static Item paper = (new Item(83)).setIconIndex(58); + public static Item book = (new Item(84)).setIconIndex(59); + public static Item slimeBall = (new Item(85)).setIconIndex(30); + public static Item minecartCrate = (new ItemMinecart(86, 1)).setIconIndex(151); + public static Item minecartPowered = (new ItemMinecart(87, 2)).setIconIndex(167); + public static Item egg = (new Item(88)).setIconIndex(12); + public static Item compass = (new Item(89)).setIconIndex(54); + public static Item fishingRod = (new ItemFishingRod(90)).setIconIndex(69); + public static Item pocketSundial = (new Item(91)).setIconIndex(70); + public static Item lightStoneDust = (new Item(92)).setIconIndex(73); + public static Item fishRaw = (new ItemFood(93, 2)).setIconIndex(89); + public static Item fishCooked = (new ItemFood(94, 5)).setIconIndex(90); + public static Item record13 = (new ItemRecord(2000, "13")).setIconIndex(240); + public static Item recordCat = (new ItemRecord(2001, "cat")).setIconIndex(241); + public final int swiftedIndex; + protected int maxStackSize = 64; + protected int maxDamage = 32; + protected int iconIndex; + protected boolean bFull3D = false; + + protected Item(int var1) { + this.swiftedIndex = 256 + var1; + if(itemsList[256 + var1] != null) { + System.out.println("CONFLICT @ " + var1); + } + + itemsList[256 + var1] = this; + } + + public Item setIconIndex(int var1) { + this.iconIndex = var1; + return this; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + return false; + } + + public float getStrVsBlock(ItemStack var1, Block var2) { + return 1.0F; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + return var1; + } + + public int getItemStackLimit() { + return this.maxStackSize; + } + + public int getMaxDamage() { + return this.maxDamage; + } + + public void func_9201_a(ItemStack var1, EntityLiving var2) { + } + + public void hitBlock(ItemStack var1, int var2, int var3, int var4, int var5) { + } + + public int func_9203_a(Entity var1) { + return 1; + } + + public boolean canHarvestBlock(Block var1) { + return false; + } + + public void func_9202_b(ItemStack var1, EntityLiving var2) { + } + + public Item setFull3D() { + this.bFull3D = true; + return this; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemArmor.java b/minecraft_server/src/net/minecraft/src/ItemArmor.java new file mode 100644 index 0000000..5bc696b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemArmor.java @@ -0,0 +1,20 @@ +package net.minecraft.src; + +public class ItemArmor extends Item { + private static final int[] field_259_ba = new int[]{3, 8, 6, 3}; + private static final int[] field_258_bb = new int[]{11, 16, 15, 13}; + public final int field_254_a; + public final int field_257_aX; + public final int field_256_aY; + public final int field_255_aZ; + + public ItemArmor(int var1, int var2, int var3, int var4) { + super(var1); + this.field_254_a = var2; + this.field_257_aX = var4; + this.field_255_aZ = var3; + this.field_256_aY = field_259_ba[var4]; + this.maxDamage = field_258_bb[var4] * 3 << var2; + this.maxStackSize = 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemAxe.java b/minecraft_server/src/net/minecraft/src/ItemAxe.java new file mode 100644 index 0000000..666111b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemAxe.java @@ -0,0 +1,9 @@ +package net.minecraft.src; + +public class ItemAxe extends ItemTool { + private static Block[] field_4207_bb = new Block[]{Block.planks, Block.bookShelf, Block.wood, Block.crate}; + + public ItemAxe(int var1, int var2) { + super(var1, 3, var2, field_4207_bb); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemBlock.java b/minecraft_server/src/net/minecraft/src/ItemBlock.java new file mode 100644 index 0000000..9970ea8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemBlock.java @@ -0,0 +1,57 @@ +package net.minecraft.src; + +public class ItemBlock extends Item { + private int field_272_a; + + public ItemBlock(int var1) { + super(var1); + this.field_272_a = var1 + 256; + this.setIconIndex(Block.blocksList[var1 + 256].getBlockTextureFromSide(2)); + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var3.getBlockId(var4, var5, var6) == Block.snow.blockID) { + var7 = 0; + } else { + if(var7 == 0) { + --var5; + } + + if(var7 == 1) { + ++var5; + } + + if(var7 == 2) { + --var6; + } + + if(var7 == 3) { + ++var6; + } + + if(var7 == 4) { + --var4; + } + + if(var7 == 5) { + ++var4; + } + } + + if(var1.stackSize == 0) { + return false; + } else { + if(var3.func_516_a(this.field_272_a, var4, var5, var6, false)) { + Block var8 = Block.blocksList[this.field_272_a]; + if(var3.setBlockWithNotify(var4, var5, var6, this.field_272_a)) { + Block.blocksList[this.field_272_a].onBlockPlaced(var3, var4, var5, var6, var7); + Block.blocksList[this.field_272_a].onBlockPlacedBy(var3, var4, var5, var6, var2); + var3.playSoundEffect((double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), var8.stepSound.func_737_c(), (var8.stepSound.func_738_a() + 1.0F) / 2.0F, var8.stepSound.func_739_b() * 0.8F); + --var1.stackSize; + } + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemBoat.java b/minecraft_server/src/net/minecraft/src/ItemBoat.java new file mode 100644 index 0000000..e18c81f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemBoat.java @@ -0,0 +1,43 @@ +package net.minecraft.src; + +public class ItemBoat extends Item { + public ItemBoat(int var1) { + super(var1); + this.maxStackSize = 1; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + float var4 = 1.0F; + float var5 = var3.prevRotationPitch + (var3.rotationPitch - var3.prevRotationPitch) * var4; + float var6 = var3.prevRotationYaw + (var3.rotationYaw - var3.prevRotationYaw) * var4; + double var7 = var3.prevPosX + (var3.posX - var3.prevPosX) * (double)var4; + double var9 = var3.prevPosY + (var3.posY - var3.prevPosY) * (double)var4 + 1.62D - (double)var3.yOffset; + double var11 = var3.prevPosZ + (var3.posZ - var3.prevPosZ) * (double)var4; + Vec3D var13 = Vec3D.createVector(var7, var9, var11); + float var14 = MathHelper.cos(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); + float var15 = MathHelper.sin(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); + float var16 = -MathHelper.cos(-var5 * ((float)Math.PI / 180.0F)); + float var17 = MathHelper.sin(-var5 * ((float)Math.PI / 180.0F)); + float var18 = var15 * var16; + float var20 = var14 * var16; + double var21 = 5.0D; + Vec3D var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); + MovingObjectPosition var24 = var2.func_505_a(var13, var23, true); + if(var24 == null) { + return var1; + } else { + if(var24.typeOfHit == 0) { + int var25 = var24.blockX; + int var26 = var24.blockY; + int var27 = var24.blockZ; + if(!var2.multiplayerWorld) { + var2.entityJoinedWorld(new EntityBoat(var2, (double)((float)var25 + 0.5F), (double)((float)var26 + 1.5F), (double)((float)var27 + 0.5F))); + } + + --var1.stackSize; + } + + return var1; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemBow.java b/minecraft_server/src/net/minecraft/src/ItemBow.java new file mode 100644 index 0000000..15a15f8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemBow.java @@ -0,0 +1,19 @@ +package net.minecraft.src; + +public class ItemBow extends Item { + public ItemBow(int var1) { + super(var1); + this.maxStackSize = 1; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + if(var3.inventory.func_6127_b(Item.arrow.swiftedIndex)) { + var2.playSoundAtEntity(var3, "random.bow", 1.0F, 1.0F / (rand.nextFloat() * 0.4F + 0.8F)); + if(!var2.multiplayerWorld) { + var2.entityJoinedWorld(new EntityArrow(var2, var3)); + } + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemBucket.java b/minecraft_server/src/net/minecraft/src/ItemBucket.java new file mode 100644 index 0000000..3ed1629 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemBucket.java @@ -0,0 +1,101 @@ +package net.minecraft.src; + +public class ItemBucket extends Item { + private int field_274_a; + + public ItemBucket(int var1, int var2) { + super(var1); + this.maxStackSize = 1; + this.maxDamage = 64; + this.field_274_a = var2; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + float var4 = 1.0F; + float var5 = var3.prevRotationPitch + (var3.rotationPitch - var3.prevRotationPitch) * var4; + float var6 = var3.prevRotationYaw + (var3.rotationYaw - var3.prevRotationYaw) * var4; + double var7 = var3.prevPosX + (var3.posX - var3.prevPosX) * (double)var4; + double var9 = var3.prevPosY + (var3.posY - var3.prevPosY) * (double)var4 + 1.62D - (double)var3.yOffset; + double var11 = var3.prevPosZ + (var3.posZ - var3.prevPosZ) * (double)var4; + Vec3D var13 = Vec3D.createVector(var7, var9, var11); + float var14 = MathHelper.cos(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); + float var15 = MathHelper.sin(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); + float var16 = -MathHelper.cos(-var5 * ((float)Math.PI / 180.0F)); + float var17 = MathHelper.sin(-var5 * ((float)Math.PI / 180.0F)); + float var18 = var15 * var16; + float var20 = var14 * var16; + double var21 = 5.0D; + Vec3D var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); + MovingObjectPosition var24 = var2.func_505_a(var13, var23, this.field_274_a == 0); + if(var24 == null) { + return var1; + } else { + if(var24.typeOfHit == 0) { + int var25 = var24.blockX; + int var26 = var24.blockY; + int var27 = var24.blockZ; + if(!var2.func_6157_a(var3, var25, var26, var27)) { + return var1; + } + + if(this.field_274_a == 0) { + if(var2.getBlockMaterial(var25, var26, var27) == Material.water && var2.getBlockMetadata(var25, var26, var27) == 0) { + var2.setBlockWithNotify(var25, var26, var27, 0); + return new ItemStack(Item.bucketWater); + } + + if(var2.getBlockMaterial(var25, var26, var27) == Material.lava && var2.getBlockMetadata(var25, var26, var27) == 0) { + var2.setBlockWithNotify(var25, var26, var27, 0); + return new ItemStack(Item.bucketLava); + } + } else { + if(this.field_274_a < 0) { + return new ItemStack(Item.bucketEmpty); + } + + if(var24.sideHit == 0) { + --var26; + } + + if(var24.sideHit == 1) { + ++var26; + } + + if(var24.sideHit == 2) { + --var27; + } + + if(var24.sideHit == 3) { + ++var27; + } + + if(var24.sideHit == 4) { + --var25; + } + + if(var24.sideHit == 5) { + ++var25; + } + + if(var2.getBlockId(var25, var26, var27) == 0 || !var2.getBlockMaterial(var25, var26, var27).func_216_a()) { + if(var2.field_4272_q.field_6166_d && this.field_274_a == Block.waterStill.blockID) { + var2.playSoundEffect(var7 + 0.5D, var9 + 0.5D, var11 + 0.5D, "random.fizz", 0.5F, 2.6F + (var2.rand.nextFloat() - var2.rand.nextFloat()) * 0.8F); + + for(int var28 = 0; var28 < 8; ++var28) { + var2.spawnParticle("largesmoke", (double)var25 + Math.random(), (double)var26 + Math.random(), (double)var27 + Math.random(), 0.0D, 0.0D, 0.0D); + } + } else { + var2.func_507_b(var25, var26, var27, this.field_274_a, 0); + } + + return new ItemStack(Item.bucketEmpty); + } + } + } else if(this.field_274_a == 0 && var24.entityHit instanceof EntityCow) { + return new ItemStack(Item.bucketMilk); + } + + return var1; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemDoor.java b/minecraft_server/src/net/minecraft/src/ItemDoor.java new file mode 100644 index 0000000..ecc8a48 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemDoor.java @@ -0,0 +1,72 @@ +package net.minecraft.src; + +public class ItemDoor extends Item { + private Material field_260_a; + + public ItemDoor(int var1, Material var2) { + super(var1); + this.field_260_a = var2; + this.maxDamage = 64; + this.maxStackSize = 1; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 != 1) { + return false; + } else { + ++var5; + Block var8; + if(this.field_260_a == Material.wood) { + var8 = Block.doorWood; + } else { + var8 = Block.doorSteel; + } + + if(!var8.canPlaceBlockAt(var3, var4, var5, var6)) { + return false; + } else { + int var9 = MathHelper.floor_double((double)((var2.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + byte var10 = 0; + byte var11 = 0; + if(var9 == 0) { + var11 = 1; + } + + if(var9 == 1) { + var10 = -1; + } + + if(var9 == 2) { + var11 = -1; + } + + if(var9 == 3) { + var10 = 1; + } + + int var12 = (var3.doesBlockAllowAttachment(var4 - var10, var5, var6 - var11) ? 1 : 0) + (var3.doesBlockAllowAttachment(var4 - var10, var5 + 1, var6 - var11) ? 1 : 0); + int var13 = (var3.doesBlockAllowAttachment(var4 + var10, var5, var6 + var11) ? 1 : 0) + (var3.doesBlockAllowAttachment(var4 + var10, var5 + 1, var6 + var11) ? 1 : 0); + boolean var14 = var3.getBlockId(var4 - var10, var5, var6 - var11) == var8.blockID || var3.getBlockId(var4 - var10, var5 + 1, var6 - var11) == var8.blockID; + boolean var15 = var3.getBlockId(var4 + var10, var5, var6 + var11) == var8.blockID || var3.getBlockId(var4 + var10, var5 + 1, var6 + var11) == var8.blockID; + boolean var16 = false; + if(var14 && !var15) { + var16 = true; + } else if(var13 > var12) { + var16 = true; + } + + if(var16) { + var9 = var9 - 1 & 3; + var9 += 4; + } + + var3.setBlockWithNotify(var4, var5, var6, var8.blockID); + var3.setBlockMetadataWithNotify(var4, var5, var6, var9); + var3.setBlockWithNotify(var4, var5 + 1, var6, var8.blockID); + var3.setBlockMetadataWithNotify(var4, var5 + 1, var6, var9 + 8); + --var1.stackSize; + return true; + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemFishingRod.java b/minecraft_server/src/net/minecraft/src/ItemFishingRod.java new file mode 100644 index 0000000..294a8a6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemFishingRod.java @@ -0,0 +1,25 @@ +package net.minecraft.src; + +public class ItemFishingRod extends Item { + public ItemFishingRod(int var1) { + super(var1); + this.maxDamage = 64; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + if(var3.field_6124_at != null) { + int var4 = var3.field_6124_at.func_6143_c(); + var1.damageItem(var4); + var3.func_168_z(); + } else { + var2.playSoundAtEntity(var3, "random.bow", 0.5F, 0.4F / (rand.nextFloat() * 0.4F + 0.8F)); + if(!var2.multiplayerWorld) { + var2.entityJoinedWorld(new EntityFish(var2, var3)); + } + + var3.func_168_z(); + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemFlintAndSteel.java b/minecraft_server/src/net/minecraft/src/ItemFlintAndSteel.java new file mode 100644 index 0000000..85812ca --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemFlintAndSteel.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class ItemFlintAndSteel extends Item { + public ItemFlintAndSteel(int var1) { + super(var1); + this.maxStackSize = 1; + this.maxDamage = 64; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 == 0) { + --var5; + } + + if(var7 == 1) { + ++var5; + } + + if(var7 == 2) { + --var6; + } + + if(var7 == 3) { + ++var6; + } + + if(var7 == 4) { + --var4; + } + + if(var7 == 5) { + ++var4; + } + + int var8 = var3.getBlockId(var4, var5, var6); + if(var8 == 0) { + var3.playSoundEffect((double)var4 + 0.5D, (double)var5 + 0.5D, (double)var6 + 0.5D, "fire.ignite", 1.0F, rand.nextFloat() * 0.4F + 0.8F); + var3.setBlockWithNotify(var4, var5, var6, Block.fire.blockID); + } + + var1.damageItem(1); + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemFood.java b/minecraft_server/src/net/minecraft/src/ItemFood.java new file mode 100644 index 0000000..1038a34 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemFood.java @@ -0,0 +1,17 @@ +package net.minecraft.src; + +public class ItemFood extends Item { + private int healAmount; + + public ItemFood(int var1, int var2) { + super(var1); + this.healAmount = var2; + this.maxStackSize = 1; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + --var1.stackSize; + var3.heal(this.healAmount); + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemHoe.java b/minecraft_server/src/net/minecraft/src/ItemHoe.java new file mode 100644 index 0000000..a77b985 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemHoe.java @@ -0,0 +1,41 @@ +package net.minecraft.src; + +public class ItemHoe extends Item { + public ItemHoe(int var1, int var2) { + super(var1); + this.maxStackSize = 1; + this.maxDamage = 32 << var2; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + int var8 = var3.getBlockId(var4, var5, var6); + Material var9 = var3.getBlockMaterial(var4, var5 + 1, var6); + if((var9.func_216_a() || var8 != Block.grass.blockID) && var8 != Block.dirt.blockID) { + return false; + } else { + Block var10 = Block.tilledField; + var3.playSoundEffect((double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), var10.stepSound.func_737_c(), (var10.stepSound.func_738_a() + 1.0F) / 2.0F, var10.stepSound.func_739_b() * 0.8F); + if(var3.multiplayerWorld) { + return true; + } else { + var3.setBlockWithNotify(var4, var5, var6, var10.blockID); + var1.damageItem(1); + if(var3.rand.nextInt(8) == 0 && var8 == Block.grass.blockID) { + byte var11 = 1; + + for(int var12 = 0; var12 < var11; ++var12) { + float var13 = 0.7F; + float var14 = var3.rand.nextFloat() * var13 + (1.0F - var13) * 0.5F; + float var15 = 1.2F; + float var16 = var3.rand.nextFloat() * var13 + (1.0F - var13) * 0.5F; + EntityItem var17 = new EntityItem(var3, (double)((float)var4 + var14), (double)((float)var5 + var15), (double)((float)var6 + var16), new ItemStack(Item.seeds)); + var17.field_433_ad = 10; + var3.entityJoinedWorld(var17); + } + } + + return true; + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemInWorldManager.java b/minecraft_server/src/net/minecraft/src/ItemInWorldManager.java new file mode 100644 index 0000000..0ed3b40 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemInWorldManager.java @@ -0,0 +1,117 @@ +package net.minecraft.src; + +public class ItemInWorldManager { + private World field_674_b; + public EntityPlayer field_675_a; + private float field_673_c; + private float field_672_d = 0.0F; + private int field_671_e = 0; + private float field_670_f = 0.0F; + private int field_669_g; + private int field_668_h; + private int field_667_i; + + public ItemInWorldManager(World var1) { + this.field_674_b = var1; + } + + public void func_324_a(int var1, int var2, int var3) { + int var4 = this.field_674_b.getBlockId(var1, var2, var3); + if(var4 > 0 && this.field_672_d == 0.0F) { + Block.blocksList[var4].onBlockClicked(this.field_674_b, var1, var2, var3, this.field_675_a); + } + + if(var4 > 0 && Block.blocksList[var4].func_254_a(this.field_675_a) >= 1.0F) { + this.func_325_c(var1, var2, var3); + } + + } + + public void func_328_a() { + this.field_672_d = 0.0F; + this.field_671_e = 0; + } + + public void func_326_a(int var1, int var2, int var3, int var4) { + if(this.field_671_e > 0) { + --this.field_671_e; + } else { + if(var1 == this.field_669_g && var2 == this.field_668_h && var3 == this.field_667_i) { + int var5 = this.field_674_b.getBlockId(var1, var2, var3); + if(var5 == 0) { + return; + } + + Block var6 = Block.blocksList[var5]; + this.field_672_d += var6.func_254_a(this.field_675_a); + ++this.field_670_f; + if(this.field_672_d >= 1.0F) { + this.func_325_c(var1, var2, var3); + this.field_672_d = 0.0F; + this.field_673_c = 0.0F; + this.field_670_f = 0.0F; + this.field_671_e = 5; + } + } else { + this.field_672_d = 0.0F; + this.field_673_c = 0.0F; + this.field_670_f = 0.0F; + this.field_669_g = var1; + this.field_668_h = var2; + this.field_667_i = var3; + } + + } + } + + public boolean func_323_b(int var1, int var2, int var3) { + Block var4 = Block.blocksList[this.field_674_b.getBlockId(var1, var2, var3)]; + int var5 = this.field_674_b.getBlockMetadata(var1, var2, var3); + boolean var6 = this.field_674_b.setBlockWithNotify(var1, var2, var3, 0); + if(var4 != null && var6) { + var4.onBlockDestroyedByPlayer(this.field_674_b, var1, var2, var3, var5); + } + + return var6; + } + + public boolean func_325_c(int var1, int var2, int var3) { + int var4 = this.field_674_b.getBlockId(var1, var2, var3); + int var5 = this.field_674_b.getBlockMetadata(var1, var2, var3); + boolean var6 = this.func_323_b(var1, var2, var3); + ItemStack var7 = this.field_675_a.func_172_B(); + if(var7 != null) { + var7.hitBlock(var4, var1, var2, var3); + if(var7.stackSize == 0) { + var7.func_577_a(this.field_675_a); + this.field_675_a.func_164_C(); + } + } + + if(var6 && this.field_675_a.func_167_b(Block.blocksList[var4])) { + Block.blocksList[var4].func_12007_g(this.field_674_b, var1, var2, var3, var5); + } + + return var6; + } + + public boolean func_6154_a(EntityPlayer var1, World var2, ItemStack var3) { + int var4 = var3.stackSize; + ItemStack var5 = var3.useItemRightClick(var2, var1); + if(var5 != var3 || var5 != null && var5.stackSize != var4) { + var1.inventory.mainInventory[var1.inventory.currentItem] = var5; + if(var5.stackSize == 0) { + var1.inventory.mainInventory[var1.inventory.currentItem] = null; + } + + return true; + } else { + return false; + } + } + + public boolean func_327_a(EntityPlayer var1, World var2, ItemStack var3, int var4, int var5, int var6, int var7) { + int var8 = var2.getBlockId(var4, var5, var6); + return var8 > 0 && Block.blocksList[var8].blockActivated(var2, var4, var5, var6, var1) ? true : (var3 == null ? false : var3.useItem(var1, var2, var4, var5, var6, var7)); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemMinecart.java b/minecraft_server/src/net/minecraft/src/ItemMinecart.java new file mode 100644 index 0000000..6f69ff6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemMinecart.java @@ -0,0 +1,25 @@ +package net.minecraft.src; + +public class ItemMinecart extends Item { + public int field_270_a; + + public ItemMinecart(int var1, int var2) { + super(var1); + this.maxStackSize = 1; + this.field_270_a = var2; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + int var8 = var3.getBlockId(var4, var5, var6); + if(var8 == Block.minecartTrack.blockID) { + if(!var3.multiplayerWorld) { + var3.entityJoinedWorld(new EntityMinecart(var3, (double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), this.field_270_a)); + } + + --var1.stackSize; + return true; + } else { + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemPainting.java b/minecraft_server/src/net/minecraft/src/ItemPainting.java new file mode 100644 index 0000000..4cea786 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemPainting.java @@ -0,0 +1,37 @@ +package net.minecraft.src; + +public class ItemPainting extends Item { + public ItemPainting(int var1) { + super(var1); + this.maxDamage = 64; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 == 0) { + return false; + } else if(var7 == 1) { + return false; + } else { + byte var8 = 0; + if(var7 == 4) { + var8 = 1; + } + + if(var7 == 3) { + var8 = 2; + } + + if(var7 == 5) { + var8 = 3; + } + + EntityPainting var9 = new EntityPainting(var3, var4, var5, var6, var8); + if(var9.func_181_b()) { + var3.entityJoinedWorld(var9); + --var1.stackSize; + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemPickaxe.java b/minecraft_server/src/net/minecraft/src/ItemPickaxe.java new file mode 100644 index 0000000..4638991 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemPickaxe.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +public class ItemPickaxe extends ItemTool { + private static Block[] field_4209_bb = new Block[]{Block.cobblestone, Block.stairDouble, Block.stairSingle, Block.stone, Block.cobblestoneMossy, Block.oreIron, Block.blockSteel, Block.oreCoal, Block.blockGold, Block.oreGold, Block.oreDiamond, Block.blockDiamond, Block.ice, Block.bloodStone}; + private int field_4208_bc; + + public ItemPickaxe(int var1, int var2) { + super(var1, 2, var2, field_4209_bb); + this.field_4208_bc = var2; + } + + public boolean canHarvestBlock(Block var1) { + return var1 == Block.obsidian ? this.field_4208_bc == 3 : (var1 != Block.blockDiamond && var1 != Block.oreDiamond ? (var1 != Block.blockGold && var1 != Block.oreGold ? (var1 != Block.blockSteel && var1 != Block.oreIron ? (var1 != Block.oreRedstone && var1 != Block.oreRedstoneGlowing ? (var1.blockMaterial == Material.rock ? true : var1.blockMaterial == Material.iron) : this.field_4208_bc >= 2) : this.field_4208_bc >= 1) : this.field_4208_bc >= 2) : this.field_4208_bc >= 2); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemRecord.java b/minecraft_server/src/net/minecraft/src/ItemRecord.java new file mode 100644 index 0000000..0063f66 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemRecord.java @@ -0,0 +1,22 @@ +package net.minecraft.src; + +public class ItemRecord extends Item { + private String recordName; + + protected ItemRecord(int var1, String var2) { + super(var1); + this.recordName = var2; + this.maxStackSize = 1; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var3.getBlockId(var4, var5, var6) == Block.jukebox.blockID && var3.getBlockMetadata(var4, var5, var6) == 0) { + var3.setBlockMetadataWithNotify(var4, var5, var6, this.swiftedIndex - Item.record13.swiftedIndex + 1); + var3.playRecord(this.recordName, var4, var5, var6); + --var1.stackSize; + return true; + } else { + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemRedstone.java b/minecraft_server/src/net/minecraft/src/ItemRedstone.java new file mode 100644 index 0000000..d680017 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemRedstone.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class ItemRedstone extends Item { + public ItemRedstone(int var1) { + super(var1); + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 == 0) { + --var5; + } + + if(var7 == 1) { + ++var5; + } + + if(var7 == 2) { + --var6; + } + + if(var7 == 3) { + ++var6; + } + + if(var7 == 4) { + --var4; + } + + if(var7 == 5) { + ++var4; + } + + if(var3.getBlockId(var4, var5, var6) != 0) { + return false; + } else { + if(Block.redstoneWire.canPlaceBlockAt(var3, var4, var5, var6)) { + --var1.stackSize; + var3.setBlockWithNotify(var4, var5, var6, Block.redstoneWire.blockID); + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemReed.java b/minecraft_server/src/net/minecraft/src/ItemReed.java new file mode 100644 index 0000000..6e54332 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemReed.java @@ -0,0 +1,55 @@ +package net.minecraft.src; + +public class ItemReed extends Item { + private int field_253_a; + + public ItemReed(int var1, Block var2) { + super(var1); + this.field_253_a = var2.blockID; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var3.getBlockId(var4, var5, var6) == Block.snow.blockID) { + var7 = 0; + } else { + if(var7 == 0) { + --var5; + } + + if(var7 == 1) { + ++var5; + } + + if(var7 == 2) { + --var6; + } + + if(var7 == 3) { + ++var6; + } + + if(var7 == 4) { + --var4; + } + + if(var7 == 5) { + ++var4; + } + } + + if(var1.stackSize == 0) { + return false; + } else { + if(var3.func_516_a(this.field_253_a, var4, var5, var6, false)) { + Block var8 = Block.blocksList[this.field_253_a]; + if(var3.setBlockWithNotify(var4, var5, var6, this.field_253_a)) { + Block.blocksList[this.field_253_a].onBlockPlaced(var3, var4, var5, var6, var7); + var3.playSoundEffect((double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), var8.stepSound.func_737_c(), (var8.stepSound.func_738_a() + 1.0F) / 2.0F, var8.stepSound.func_739_b() * 0.8F); + --var1.stackSize; + } + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSaddle.java b/minecraft_server/src/net/minecraft/src/ItemSaddle.java new file mode 100644 index 0000000..be15802 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSaddle.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +public class ItemSaddle extends Item { + public ItemSaddle(int var1) { + super(var1); + this.maxStackSize = 1; + this.maxDamage = 64; + } + + public void func_9202_b(ItemStack var1, EntityLiving var2) { + if(var2 instanceof EntityPig) { + EntityPig var3 = (EntityPig)var2; + if(!var3.rideable) { + var3.rideable = true; + --var1.stackSize; + } + } + + } + + public void func_9201_a(ItemStack var1, EntityLiving var2) { + this.func_9202_b(var1, var2); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSeeds.java b/minecraft_server/src/net/minecraft/src/ItemSeeds.java new file mode 100644 index 0000000..89aaa56 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSeeds.java @@ -0,0 +1,25 @@ +package net.minecraft.src; + +public class ItemSeeds extends Item { + private int field_271_a; + + public ItemSeeds(int var1, int var2) { + super(var1); + this.field_271_a = var2; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 != 1) { + return false; + } else { + int var8 = var3.getBlockId(var4, var5, var6); + if(var8 == Block.tilledField.blockID) { + var3.setBlockWithNotify(var4, var5 + 1, var6, this.field_271_a); + --var1.stackSize; + return true; + } else { + return false; + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSign.java b/minecraft_server/src/net/minecraft/src/ItemSign.java new file mode 100644 index 0000000..3d94a5f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSign.java @@ -0,0 +1,55 @@ +package net.minecraft.src; + +public class ItemSign extends Item { + public ItemSign(int var1) { + super(var1); + this.maxDamage = 64; + this.maxStackSize = 1; + } + + public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { + if(var7 == 0) { + return false; + } else if(!var3.getBlockMaterial(var4, var5, var6).func_216_a()) { + return false; + } else { + if(var7 == 1) { + ++var5; + } + + if(var7 == 2) { + --var6; + } + + if(var7 == 3) { + ++var6; + } + + if(var7 == 4) { + --var4; + } + + if(var7 == 5) { + ++var4; + } + + if(!Block.signPost.canPlaceBlockAt(var3, var4, var5, var6)) { + return false; + } else { + if(var7 == 1) { + var3.func_507_b(var4, var5, var6, Block.signPost.blockID, MathHelper.floor_double((double)((var2.rotationYaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15); + } else { + var3.func_507_b(var4, var5, var6, Block.signWall.blockID, var7); + } + + --var1.stackSize; + TileEntitySign var8 = (TileEntitySign)var3.getBlock(var4, var5, var6); + if(var8 != null) { + var2.func_4048_a(var8); + } + + return true; + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSnowball.java b/minecraft_server/src/net/minecraft/src/ItemSnowball.java new file mode 100644 index 0000000..a4cba52 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSnowball.java @@ -0,0 +1,18 @@ +package net.minecraft.src; + +public class ItemSnowball extends Item { + public ItemSnowball(int var1) { + super(var1); + this.maxStackSize = 16; + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + --var1.stackSize; + var2.playSoundAtEntity(var3, "random.bow", 0.5F, 0.4F / (rand.nextFloat() * 0.4F + 0.8F)); + if(!var2.multiplayerWorld) { + var2.entityJoinedWorld(new EntitySnowball(var2, var3)); + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSoup.java b/minecraft_server/src/net/minecraft/src/ItemSoup.java new file mode 100644 index 0000000..b21aef9 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSoup.java @@ -0,0 +1,12 @@ +package net.minecraft.src; + +public class ItemSoup extends ItemFood { + public ItemSoup(int var1, int var2) { + super(var1, var2); + } + + public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { + super.onItemRightClick(var1, var2, var3); + return new ItemStack(Item.bowlEmpty); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSpade.java b/minecraft_server/src/net/minecraft/src/ItemSpade.java new file mode 100644 index 0000000..957d62e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSpade.java @@ -0,0 +1,13 @@ +package net.minecraft.src; + +public class ItemSpade extends ItemTool { + private static Block[] field_4206_bb = new Block[]{Block.grass, Block.dirt, Block.sand, Block.gravel, Block.snow, Block.blockSnow, Block.blockClay}; + + public ItemSpade(int var1, int var2) { + super(var1, 1, var2, field_4206_bb); + } + + public boolean canHarvestBlock(Block var1) { + return var1 == Block.snow ? true : var1 == Block.blockSnow; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemStack.java b/minecraft_server/src/net/minecraft/src/ItemStack.java new file mode 100644 index 0000000..e373dfd --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemStack.java @@ -0,0 +1,119 @@ +package net.minecraft.src; + +public final class ItemStack { + public int stackSize; + public int animationsToGo; + public int itemID; + public int itemDamage; + + public ItemStack(Block var1) { + this((Block)var1, 1); + } + + public ItemStack(Block var1, int var2) { + this(var1.blockID, var2); + } + + public ItemStack(Item var1) { + this((Item)var1, 1); + } + + public ItemStack(Item var1, int var2) { + this(var1.swiftedIndex, var2); + } + + public ItemStack(int var1) { + this(var1, 1); + } + + public ItemStack(int var1, int var2) { + this.stackSize = 0; + this.itemID = var1; + this.stackSize = var2; + } + + public ItemStack(int var1, int var2, int var3) { + this.stackSize = 0; + this.itemID = var1; + this.stackSize = var2; + this.itemDamage = var3; + } + + public ItemStack(NBTTagCompound var1) { + this.stackSize = 0; + this.readFromNBT(var1); + } + + public Item getItem() { + return Item.itemsList[this.itemID]; + } + + public boolean useItem(EntityPlayer var1, World var2, int var3, int var4, int var5, int var6) { + return this.getItem().onItemUse(this, var1, var2, var3, var4, var5, var6); + } + + public float getStrVsBlock(Block var1) { + return this.getItem().getStrVsBlock(this, var1); + } + + public ItemStack useItemRightClick(World var1, EntityPlayer var2) { + return this.getItem().onItemRightClick(this, var1, var2); + } + + public NBTTagCompound writeToNBT(NBTTagCompound var1) { + var1.setShort("id", (short)this.itemID); + var1.setByte("Count", (byte)this.stackSize); + var1.setShort("Damage", (short)this.itemDamage); + return var1; + } + + public void readFromNBT(NBTTagCompound var1) { + this.itemID = var1.getShort("id"); + this.stackSize = var1.getByte("Count"); + this.itemDamage = var1.getShort("Damage"); + } + + public int getMaxStackSize() { + return this.getItem().getItemStackLimit(); + } + + public int getMaxDamage() { + return Item.itemsList[this.itemID].getMaxDamage(); + } + + public void damageItem(int var1) { + this.itemDamage += var1; + if(this.itemDamage > this.getMaxDamage()) { + --this.stackSize; + if(this.stackSize < 0) { + this.stackSize = 0; + } + + this.itemDamage = 0; + } + + } + + public void func_9217_a(EntityLiving var1) { + Item.itemsList[this.itemID].func_9201_a(this, var1); + } + + public void hitBlock(int var1, int var2, int var3, int var4) { + Item.itemsList[this.itemID].hitBlock(this, var1, var2, var3, var4); + } + + public int func_9218_a(Entity var1) { + return Item.itemsList[this.itemID].func_9203_a(var1); + } + + public boolean func_573_b(Block var1) { + return Item.itemsList[this.itemID].canHarvestBlock(var1); + } + + public void func_577_a(EntityPlayer var1) { + } + + public ItemStack copy() { + return new ItemStack(this.itemID, this.stackSize, this.itemDamage); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemSword.java b/minecraft_server/src/net/minecraft/src/ItemSword.java new file mode 100644 index 0000000..ec24558 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemSword.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +public class ItemSword extends Item { + private int field_4210_a; + + public ItemSword(int var1, int var2) { + super(var1); + this.maxStackSize = 1; + this.maxDamage = 32 << var2; + if(var2 == 3) { + this.maxDamage *= 4; + } + + this.field_4210_a = 4 + var2 * 2; + } + + public float getStrVsBlock(ItemStack var1, Block var2) { + return 1.5F; + } + + public void func_9201_a(ItemStack var1, EntityLiving var2) { + var1.damageItem(1); + } + + public void hitBlock(ItemStack var1, int var2, int var3, int var4, int var5) { + var1.damageItem(2); + } + + public int func_9203_a(Entity var1) { + return this.field_4210_a; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ItemTool.java b/minecraft_server/src/net/minecraft/src/ItemTool.java new file mode 100644 index 0000000..cfff62d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ItemTool.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class ItemTool extends Item { + private Block[] blocksEffectiveAgainst; + private float field_264_aY = 4.0F; + private int field_263_aZ; + protected int field_262_a; + + public ItemTool(int var1, int var2, int var3, Block[] var4) { + super(var1); + this.field_262_a = var3; + this.blocksEffectiveAgainst = var4; + this.maxStackSize = 1; + this.maxDamage = 32 << var3; + if(var3 == 3) { + this.maxDamage *= 4; + } + + this.field_264_aY = (float)((var3 + 1) * 2); + this.field_263_aZ = var2 + var3; + } + + public float getStrVsBlock(ItemStack var1, Block var2) { + for(int var3 = 0; var3 < this.blocksEffectiveAgainst.length; ++var3) { + if(this.blocksEffectiveAgainst[var3] == var2) { + return this.field_264_aY; + } + } + + return 1.0F; + } + + public void func_9201_a(ItemStack var1, EntityLiving var2) { + var1.damageItem(2); + } + + public void hitBlock(ItemStack var1, int var2, int var3, int var4, int var5) { + var1.damageItem(1); + } + + public int func_9203_a(Entity var1) { + return this.field_263_aZ; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MCHashTable.java b/minecraft_server/src/net/minecraft/src/MCHashTable.java new file mode 100644 index 0000000..99dcd4d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MCHashTable.java @@ -0,0 +1,151 @@ +package net.minecraft.src; + +public class MCHashTable { + private transient HashEntry[] slots = new HashEntry[16]; + private transient int count; + private int threshold = 12; + private final float growFactor = 12.0F / 16.0F; + private transient volatile int versionStamp; + + private static int computeHash(int var0) { + var0 ^= var0 >>> 20 ^ var0 >>> 12; + return var0 ^ var0 >>> 7 ^ var0 >>> 4; + } + + private static int getSlotIndex(int var0, int var1) { + return var0 & var1 - 1; + } + + public Object lookup(int var1) { + int var2 = computeHash(var1); + + for(HashEntry var3 = this.slots[getSlotIndex(var2, this.slots.length)]; var3 != null; var3 = var3.field_843_c) { + if(var3.field_841_a == var1) { + return var3.field_840_b; + } + } + + return null; + } + + public boolean containsItem(int var1) { + return this.lookupEntry(var1) != null; + } + + final HashEntry lookupEntry(int var1) { + int var2 = computeHash(var1); + + for(HashEntry var3 = this.slots[getSlotIndex(var2, this.slots.length)]; var3 != null; var3 = var3.field_843_c) { + if(var3.field_841_a == var1) { + return var3; + } + } + + return null; + } + + public void addKey(int var1, Object var2) { + int var3 = computeHash(var1); + int var4 = getSlotIndex(var3, this.slots.length); + + for(HashEntry var5 = this.slots[var4]; var5 != null; var5 = var5.field_843_c) { + if(var5.field_841_a == var1) { + var5.field_840_b = var2; + } + } + + ++this.versionStamp; + this.insert(var3, var1, var2, var4); + } + + private void grow(int var1) { + HashEntry[] var2 = this.slots; + int var3 = var2.length; + if(var3 == 1073741824) { + this.threshold = Integer.MAX_VALUE; + } else { + HashEntry[] var4 = new HashEntry[var1]; + this.copyTo(var4); + this.slots = var4; + this.threshold = (int)((float)var1 * this.growFactor); + } + } + + private void copyTo(HashEntry[] var1) { + HashEntry[] var2 = this.slots; + int var3 = var1.length; + + for(int var4 = 0; var4 < var2.length; ++var4) { + HashEntry var5 = var2[var4]; + if(var5 != null) { + var2[var4] = null; + + HashEntry var6; + do { + var6 = var5.field_843_c; + int var7 = getSlotIndex(var5.field_842_d, var3); + var5.field_843_c = var1[var7]; + var1[var7] = var5; + var5 = var6; + } while(var6 != null); + } + } + + } + + public Object removeObject(int var1) { + HashEntry var2 = this.removeEntry(var1); + return var2 == null ? null : var2.field_840_b; + } + + final HashEntry removeEntry(int var1) { + int var2 = computeHash(var1); + int var3 = getSlotIndex(var2, this.slots.length); + HashEntry var4 = this.slots[var3]; + + HashEntry var5; + HashEntry var6; + for(var5 = var4; var5 != null; var5 = var6) { + var6 = var5.field_843_c; + if(var5.field_841_a == var1) { + ++this.versionStamp; + --this.count; + if(var4 == var5) { + this.slots[var3] = var6; + } else { + var4.field_843_c = var6; + } + + return var5; + } + + var4 = var5; + } + + return var5; + } + + public void clearMap() { + ++this.versionStamp; + HashEntry[] var1 = this.slots; + + for(int var2 = 0; var2 < var1.length; ++var2) { + var1[var2] = null; + } + + this.count = 0; + } + + private void insert(int var1, int var2, Object var3, int var4) { + HashEntry var5 = this.slots[var4]; + this.slots[var4] = new HashEntry(var1, var2, var3, var5); + if(this.count++ >= this.threshold) { + this.grow(2 * this.slots.length); + } + + } + + static int getHash(int var0) { + return computeHash(var0); + } +} diff --git a/minecraft_server/src/net/minecraft/src/MCHashTable2.java b/minecraft_server/src/net/minecraft/src/MCHashTable2.java new file mode 100644 index 0000000..1e57101 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MCHashTable2.java @@ -0,0 +1,128 @@ +package net.minecraft.src; + +public class MCHashTable2 { + private transient HashEntry2[] field_949_a = new HashEntry2[16]; + private transient int field_948_b; + private int field_952_c = 12; + private final float field_951_d = 12.0F / 16.0F; + private transient volatile int field_950_e; + + private static int func_671_e(long var0) { + return func_676_a((int)(var0 ^ var0 >>> 32)); + } + + private static int func_676_a(int var0) { + var0 ^= var0 >>> 20 ^ var0 >>> 12; + return var0 ^ var0 >>> 7 ^ var0 >>> 4; + } + + private static int func_678_a(int var0, int var1) { + return var0 & var1 - 1; + } + + public Object func_677_a(long var1) { + int var3 = func_671_e(var1); + + for(HashEntry2 var4 = this.field_949_a[func_678_a(var3, this.field_949_a.length)]; var4 != null; var4 = var4.field_1027_c) { + if(var4.field_1025_a == var1) { + return var4.field_1024_b; + } + } + + return null; + } + + public void func_675_a(long var1, Object var3) { + int var4 = func_671_e(var1); + int var5 = func_678_a(var4, this.field_949_a.length); + + for(HashEntry2 var6 = this.field_949_a[var5]; var6 != null; var6 = var6.field_1027_c) { + if(var6.field_1025_a == var1) { + var6.field_1024_b = var3; + } + } + + ++this.field_950_e; + this.func_679_a(var4, var1, var3, var5); + } + + private void func_680_b(int var1) { + HashEntry2[] var2 = this.field_949_a; + int var3 = var2.length; + if(var3 == 1073741824) { + this.field_952_c = Integer.MAX_VALUE; + } else { + HashEntry2[] var4 = new HashEntry2[var1]; + this.func_673_a(var4); + this.field_949_a = var4; + this.field_952_c = (int)((float)var1 * this.field_951_d); + } + } + + private void func_673_a(HashEntry2[] var1) { + HashEntry2[] var2 = this.field_949_a; + int var3 = var1.length; + + for(int var4 = 0; var4 < var2.length; ++var4) { + HashEntry2 var5 = var2[var4]; + if(var5 != null) { + var2[var4] = null; + + HashEntry2 var6; + do { + var6 = var5.field_1027_c; + int var7 = func_678_a(var5.field_1026_d, var3); + var5.field_1027_c = var1[var7]; + var1[var7] = var5; + var5 = var6; + } while(var6 != null); + } + } + + } + + public Object func_670_b(long var1) { + HashEntry2 var3 = this.func_672_c(var1); + return var3 == null ? null : var3.field_1024_b; + } + + final HashEntry2 func_672_c(long var1) { + int var3 = func_671_e(var1); + int var4 = func_678_a(var3, this.field_949_a.length); + HashEntry2 var5 = this.field_949_a[var4]; + + HashEntry2 var6; + HashEntry2 var7; + for(var6 = var5; var6 != null; var6 = var7) { + var7 = var6.field_1027_c; + if(var6.field_1025_a == var1) { + ++this.field_950_e; + --this.field_948_b; + if(var5 == var6) { + this.field_949_a[var4] = var7; + } else { + var5.field_1027_c = var7; + } + + return var6; + } + + var5 = var6; + } + + return var6; + } + + private void func_679_a(int var1, long var2, Object var4, int var5) { + HashEntry2 var6 = this.field_949_a[var5]; + this.field_949_a[var5] = new HashEntry2(var1, var2, var4, var6); + if(this.field_948_b++ >= this.field_952_c) { + this.func_680_b(2 * this.field_949_a.length); + } + + } + + static int func_674_d(long var0) { + return func_671_e(var0); + } +} diff --git a/minecraft_server/src/net/minecraft/src/MapGenBase.java b/minecraft_server/src/net/minecraft/src/MapGenBase.java new file mode 100644 index 0000000..223e09d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MapGenBase.java @@ -0,0 +1,26 @@ +package net.minecraft.src; + +import java.util.Random; + +public class MapGenBase { + protected int field_947_a = 8; + protected Random field_946_b = new Random(); + + public void func_667_a(IChunkProvider var1, World var2, int var3, int var4, byte[] var5) { + int var6 = this.field_947_a; + this.field_946_b.setSeed(var2.randomSeed); + long var7 = this.field_946_b.nextLong() / 2L * 2L + 1L; + long var9 = this.field_946_b.nextLong() / 2L * 2L + 1L; + + for(int var11 = var3 - var6; var11 <= var3 + var6; ++var11) { + for(int var12 = var4 - var6; var12 <= var4 + var6; ++var12) { + this.field_946_b.setSeed((long)var11 * var7 + (long)var12 * var9 ^ var2.randomSeed); + this.func_666_a(var2, var11, var12, var3, var4, var5); + } + } + + } + + protected void func_666_a(World var1, int var2, int var3, int var4, int var5, byte[] var6) { + } +} diff --git a/minecraft_server/src/net/minecraft/src/MapGenCaves.java b/minecraft_server/src/net/minecraft/src/MapGenCaves.java new file mode 100644 index 0000000..d8c5ac4 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MapGenCaves.java @@ -0,0 +1,185 @@ +package net.minecraft.src; + +import java.util.Random; + +public class MapGenCaves extends MapGenBase { + protected void func_669_a(int var1, int var2, byte[] var3, double var4, double var6, double var8) { + this.func_668_a(var1, var2, var3, var4, var6, var8, 1.0F + this.field_946_b.nextFloat() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D); + } + + protected void func_668_a(int var1, int var2, byte[] var3, double var4, double var6, double var8, float var10, float var11, float var12, int var13, int var14, double var15) { + double var17 = (double)(var1 * 16 + 8); + double var19 = (double)(var2 * 16 + 8); + float var21 = 0.0F; + float var22 = 0.0F; + Random var23 = new Random(this.field_946_b.nextLong()); + if(var14 <= 0) { + int var24 = this.field_947_a * 16 - 16; + var14 = var24 - var23.nextInt(var24 / 4); + } + + boolean var52 = false; + if(var13 == -1) { + var13 = var14 / 2; + var52 = true; + } + + int var25 = var23.nextInt(var14 / 2) + var14 / 4; + + for(boolean var26 = var23.nextInt(6) == 0; var13 < var14; ++var13) { + double var27 = 1.5D + (double)(MathHelper.sin((float)var13 * (float)Math.PI / (float)var14) * var10 * 1.0F); + double var29 = var27 * var15; + float var31 = MathHelper.cos(var12); + float var32 = MathHelper.sin(var12); + var4 += (double)(MathHelper.cos(var11) * var31); + var6 += (double)var32; + var8 += (double)(MathHelper.sin(var11) * var31); + if(var26) { + var12 *= 0.92F; + } else { + var12 *= 0.7F; + } + + var12 += var22 * 0.1F; + var11 += var21 * 0.1F; + var22 *= 0.9F; + var21 *= 12.0F / 16.0F; + var22 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 2.0F; + var21 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 4.0F; + if(!var52 && var13 == var25 && var10 > 1.0F) { + this.func_668_a(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 - (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); + this.func_668_a(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 + (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); + return; + } + + if(var52 || var23.nextInt(4) != 0) { + double var33 = var4 - var17; + double var35 = var8 - var19; + double var37 = (double)(var14 - var13); + double var39 = (double)(var10 + 2.0F + 16.0F); + if(var33 * var33 + var35 * var35 - var37 * var37 > var39 * var39) { + return; + } + + if(var4 >= var17 - 16.0D - var27 * 2.0D && var8 >= var19 - 16.0D - var27 * 2.0D && var4 <= var17 + 16.0D + var27 * 2.0D && var8 <= var19 + 16.0D + var27 * 2.0D) { + int var53 = MathHelper.floor_double(var4 - var27) - var1 * 16 - 1; + int var34 = MathHelper.floor_double(var4 + var27) - var1 * 16 + 1; + int var54 = MathHelper.floor_double(var6 - var29) - 1; + int var36 = MathHelper.floor_double(var6 + var29) + 1; + int var55 = MathHelper.floor_double(var8 - var27) - var2 * 16 - 1; + int var38 = MathHelper.floor_double(var8 + var27) - var2 * 16 + 1; + if(var53 < 0) { + var53 = 0; + } + + if(var34 > 16) { + var34 = 16; + } + + if(var54 < 1) { + var54 = 1; + } + + if(var36 > 120) { + var36 = 120; + } + + if(var55 < 0) { + var55 = 0; + } + + if(var38 > 16) { + var38 = 16; + } + + boolean var56 = false; + + int var40; + int var43; + for(var40 = var53; !var56 && var40 < var34; ++var40) { + for(int var41 = var55; !var56 && var41 < var38; ++var41) { + for(int var42 = var36 + 1; !var56 && var42 >= var54 - 1; --var42) { + var43 = (var40 * 16 + var41) * 128 + var42; + if(var42 >= 0 && var42 < 128) { + if(var3[var43] == Block.waterStill.blockID || var3[var43] == Block.waterMoving.blockID) { + var56 = true; + } + + if(var42 != var54 - 1 && var40 != var53 && var40 != var34 - 1 && var41 != var55 && var41 != var38 - 1) { + var42 = var54; + } + } + } + } + } + + if(!var56) { + for(var40 = var53; var40 < var34; ++var40) { + double var57 = ((double)(var40 + var1 * 16) + 0.5D - var4) / var27; + + for(var43 = var55; var43 < var38; ++var43) { + double var44 = ((double)(var43 + var2 * 16) + 0.5D - var8) / var27; + int var46 = (var40 * 16 + var43) * 128 + var36; + boolean var47 = false; + + for(int var48 = var36 - 1; var48 >= var54; --var48) { + double var49 = ((double)var48 + 0.5D - var6) / var29; + if(var49 > -0.7D && var57 * var57 + var49 * var49 + var44 * var44 < 1.0D) { + byte var51 = var3[var46]; + if(var51 == Block.grass.blockID) { + var47 = true; + } + + if(var51 == Block.stone.blockID || var51 == Block.dirt.blockID || var51 == Block.grass.blockID) { + if(var48 < 10) { + var3[var46] = (byte)Block.lavaStill.blockID; + } else { + var3[var46] = 0; + if(var47 && var3[var46 - 1] == Block.dirt.blockID) { + var3[var46 - 1] = (byte)Block.grass.blockID; + } + } + } + } + + --var46; + } + } + } + + if(var52) { + break; + } + } + } + } + } + + } + + protected void func_666_a(World var1, int var2, int var3, int var4, int var5, byte[] var6) { + int var7 = this.field_946_b.nextInt(this.field_946_b.nextInt(this.field_946_b.nextInt(40) + 1) + 1); + if(this.field_946_b.nextInt(15) != 0) { + var7 = 0; + } + + for(int var8 = 0; var8 < var7; ++var8) { + double var9 = (double)(var2 * 16 + this.field_946_b.nextInt(16)); + double var11 = (double)this.field_946_b.nextInt(this.field_946_b.nextInt(120) + 8); + double var13 = (double)(var3 * 16 + this.field_946_b.nextInt(16)); + int var15 = 1; + if(this.field_946_b.nextInt(4) == 0) { + this.func_669_a(var4, var5, var6, var9, var11, var13); + var15 += this.field_946_b.nextInt(4); + } + + for(int var16 = 0; var16 < var15; ++var16) { + float var17 = this.field_946_b.nextFloat() * (float)Math.PI * 2.0F; + float var18 = (this.field_946_b.nextFloat() - 0.5F) * 2.0F / 8.0F; + float var19 = this.field_946_b.nextFloat() * 2.0F + this.field_946_b.nextFloat(); + this.func_668_a(var4, var5, var6, var9, var11, var13, var19, var17, var18, 0, 0, 1.0D); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/MapGenCavesHell.java b/minecraft_server/src/net/minecraft/src/MapGenCavesHell.java new file mode 100644 index 0000000..8e991e6 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MapGenCavesHell.java @@ -0,0 +1,173 @@ +package net.minecraft.src; + +import java.util.Random; + +public class MapGenCavesHell extends MapGenBase { + protected void func_4106_a(int var1, int var2, byte[] var3, double var4, double var6, double var8) { + this.func_4105_a(var1, var2, var3, var4, var6, var8, 1.0F + this.field_946_b.nextFloat() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D); + } + + protected void func_4105_a(int var1, int var2, byte[] var3, double var4, double var6, double var8, float var10, float var11, float var12, int var13, int var14, double var15) { + double var17 = (double)(var1 * 16 + 8); + double var19 = (double)(var2 * 16 + 8); + float var21 = 0.0F; + float var22 = 0.0F; + Random var23 = new Random(this.field_946_b.nextLong()); + if(var14 <= 0) { + int var24 = this.field_947_a * 16 - 16; + var14 = var24 - var23.nextInt(var24 / 4); + } + + boolean var51 = false; + if(var13 == -1) { + var13 = var14 / 2; + var51 = true; + } + + int var25 = var23.nextInt(var14 / 2) + var14 / 4; + + for(boolean var26 = var23.nextInt(6) == 0; var13 < var14; ++var13) { + double var27 = 1.5D + (double)(MathHelper.sin((float)var13 * (float)Math.PI / (float)var14) * var10 * 1.0F); + double var29 = var27 * var15; + float var31 = MathHelper.cos(var12); + float var32 = MathHelper.sin(var12); + var4 += (double)(MathHelper.cos(var11) * var31); + var6 += (double)var32; + var8 += (double)(MathHelper.sin(var11) * var31); + if(var26) { + var12 *= 0.92F; + } else { + var12 *= 0.7F; + } + + var12 += var22 * 0.1F; + var11 += var21 * 0.1F; + var22 *= 0.9F; + var21 *= 12.0F / 16.0F; + var22 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 2.0F; + var21 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 4.0F; + if(!var51 && var13 == var25 && var10 > 1.0F) { + this.func_4105_a(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 - (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); + this.func_4105_a(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 + (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); + return; + } + + if(var51 || var23.nextInt(4) != 0) { + double var33 = var4 - var17; + double var35 = var8 - var19; + double var37 = (double)(var14 - var13); + double var39 = (double)(var10 + 2.0F + 16.0F); + if(var33 * var33 + var35 * var35 - var37 * var37 > var39 * var39) { + return; + } + + if(var4 >= var17 - 16.0D - var27 * 2.0D && var8 >= var19 - 16.0D - var27 * 2.0D && var4 <= var17 + 16.0D + var27 * 2.0D && var8 <= var19 + 16.0D + var27 * 2.0D) { + int var52 = MathHelper.floor_double(var4 - var27) - var1 * 16 - 1; + int var34 = MathHelper.floor_double(var4 + var27) - var1 * 16 + 1; + int var53 = MathHelper.floor_double(var6 - var29) - 1; + int var36 = MathHelper.floor_double(var6 + var29) + 1; + int var54 = MathHelper.floor_double(var8 - var27) - var2 * 16 - 1; + int var38 = MathHelper.floor_double(var8 + var27) - var2 * 16 + 1; + if(var52 < 0) { + var52 = 0; + } + + if(var34 > 16) { + var34 = 16; + } + + if(var53 < 1) { + var53 = 1; + } + + if(var36 > 120) { + var36 = 120; + } + + if(var54 < 0) { + var54 = 0; + } + + if(var38 > 16) { + var38 = 16; + } + + boolean var55 = false; + + int var40; + int var43; + for(var40 = var52; !var55 && var40 < var34; ++var40) { + for(int var41 = var54; !var55 && var41 < var38; ++var41) { + for(int var42 = var36 + 1; !var55 && var42 >= var53 - 1; --var42) { + var43 = (var40 * 16 + var41) * 128 + var42; + if(var42 >= 0 && var42 < 128) { + if(var3[var43] == Block.lavaStill.blockID || var3[var43] == Block.lavaMoving.blockID) { + var55 = true; + } + + if(var42 != var53 - 1 && var40 != var52 && var40 != var34 - 1 && var41 != var54 && var41 != var38 - 1) { + var42 = var53; + } + } + } + } + } + + if(!var55) { + for(var40 = var52; var40 < var34; ++var40) { + double var56 = ((double)(var40 + var1 * 16) + 0.5D - var4) / var27; + + for(var43 = var54; var43 < var38; ++var43) { + double var44 = ((double)(var43 + var2 * 16) + 0.5D - var8) / var27; + int var46 = (var40 * 16 + var43) * 128 + var36; + + for(int var47 = var36 - 1; var47 >= var53; --var47) { + double var48 = ((double)var47 + 0.5D - var6) / var29; + if(var48 > -0.7D && var56 * var56 + var48 * var48 + var44 * var44 < 1.0D) { + byte var50 = var3[var46]; + if(var50 == Block.bloodStone.blockID || var50 == Block.dirt.blockID || var50 == Block.grass.blockID) { + var3[var46] = 0; + } + } + + --var46; + } + } + } + + if(var51) { + break; + } + } + } + } + } + + } + + protected void func_666_a(World var1, int var2, int var3, int var4, int var5, byte[] var6) { + int var7 = this.field_946_b.nextInt(this.field_946_b.nextInt(this.field_946_b.nextInt(10) + 1) + 1); + if(this.field_946_b.nextInt(5) != 0) { + var7 = 0; + } + + for(int var8 = 0; var8 < var7; ++var8) { + double var9 = (double)(var2 * 16 + this.field_946_b.nextInt(16)); + double var11 = (double)this.field_946_b.nextInt(128); + double var13 = (double)(var3 * 16 + this.field_946_b.nextInt(16)); + int var15 = 1; + if(this.field_946_b.nextInt(4) == 0) { + this.func_4106_a(var4, var5, var6, var9, var11, var13); + var15 += this.field_946_b.nextInt(4); + } + + for(int var16 = 0; var16 < var15; ++var16) { + float var17 = this.field_946_b.nextFloat() * (float)Math.PI * 2.0F; + float var18 = (this.field_946_b.nextFloat() - 0.5F) * 2.0F / 8.0F; + float var19 = this.field_946_b.nextFloat() * 2.0F + this.field_946_b.nextFloat(); + this.func_4105_a(var4, var5, var6, var9, var11, var13, var19 * 2.0F, var17, var18, 0, 0, 0.5D); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/Material.java b/minecraft_server/src/net/minecraft/src/Material.java new file mode 100644 index 0000000..5b65cef --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Material.java @@ -0,0 +1,54 @@ +package net.minecraft.src; + +public class Material { + public static final Material air = new MaterialTransparent(); + public static final Material ground = new Material(); + public static final Material wood = (new Material()).setBurning(); + public static final Material rock = new Material(); + public static final Material iron = new Material(); + public static final Material water = new MaterialLiquid(); + public static final Material lava = new MaterialLiquid(); + public static final Material field_4218_h = (new Material()).setBurning(); + public static final Material plants = new MaterialLogic(); + public static final Material sponge = new Material(); + public static final Material field_4217_k = (new Material()).setBurning(); + public static final Material fire = new MaterialTransparent(); + public static final Material sand = new Material(); + public static final Material circuits = new MaterialLogic(); + public static final Material field_4216_o = new Material(); + public static final Material tnt = (new Material()).setBurning(); + public static final Material field_4215_q = new Material(); + public static final Material ice = new Material(); + public static final Material snow = new MaterialLogic(); + public static final Material builtSnow = new Material(); + public static final Material field_4214_u = new Material(); + public static final Material clay = new Material(); + public static final Material field_4213_w = new Material(); + public static final Material field_4212_x = new Material(); + private boolean canBurn; + + public boolean getIsLiquid() { + return false; + } + + public boolean func_216_a() { + return true; + } + + public boolean getCanBlockGrass() { + return true; + } + + public boolean func_218_c() { + return true; + } + + private Material setBurning() { + this.canBurn = true; + return this; + } + + public boolean getBurning() { + return this.canBurn; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MaterialLiquid.java b/minecraft_server/src/net/minecraft/src/MaterialLiquid.java new file mode 100644 index 0000000..213b89b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MaterialLiquid.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +public class MaterialLiquid extends Material { + public boolean getIsLiquid() { + return true; + } + + public boolean func_218_c() { + return false; + } + + public boolean func_216_a() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MaterialLogic.java b/minecraft_server/src/net/minecraft/src/MaterialLogic.java new file mode 100644 index 0000000..0dc4d99 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MaterialLogic.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +public class MaterialLogic extends Material { + public boolean func_216_a() { + return false; + } + + public boolean getCanBlockGrass() { + return false; + } + + public boolean func_218_c() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MaterialTransparent.java b/minecraft_server/src/net/minecraft/src/MaterialTransparent.java new file mode 100644 index 0000000..8ca5d98 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MaterialTransparent.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +public class MaterialTransparent extends Material { + public boolean func_216_a() { + return false; + } + + public boolean getCanBlockGrass() { + return false; + } + + public boolean func_218_c() { + return false; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MathHelper.java b/minecraft_server/src/net/minecraft/src/MathHelper.java new file mode 100644 index 0000000..ca49da0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MathHelper.java @@ -0,0 +1,54 @@ +package net.minecraft.src; + +public class MathHelper { + private static float[] field_886_a = new float[65536]; + + public static final float sin(float var0) { + return field_886_a[(int)(var0 * 10430.378F) & '\uffff']; + } + + public static final float cos(float var0) { + return field_886_a[(int)(var0 * 10430.378F + 16384.0F) & '\uffff']; + } + + public static final float sqrt_float(float var0) { + return (float)Math.sqrt((double)var0); + } + + public static final float sqrt_double(double var0) { + return (float)Math.sqrt(var0); + } + + public static int floor_float(float var0) { + int var1 = (int)var0; + return var0 < (float)var1 ? var1 - 1 : var1; + } + + public static int floor_double(double var0) { + int var2 = (int)var0; + return var0 < (double)var2 ? var2 - 1 : var2; + } + + public static float abs(float var0) { + return var0 >= 0.0F ? var0 : -var0; + } + + public static double abs_max(double var0, double var2) { + if(var0 < 0.0D) { + var0 = -var0; + } + + if(var2 < 0.0D) { + var2 = -var2; + } + + return var0 > var2 ? var0 : var2; + } + + static { + for(int var0 = 0; var0 < 65536; ++var0) { + field_886_a[var0] = (float)Math.sin((double)var0 * Math.PI * 2.0D / 65536.0D); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/MetadataChunkBlock.java b/minecraft_server/src/net/minecraft/src/MetadataChunkBlock.java new file mode 100644 index 0000000..43887b3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MetadataChunkBlock.java @@ -0,0 +1,175 @@ +package net.minecraft.src; + +public class MetadataChunkBlock { + public final EnumSkyBlock field_957_a; + public int field_956_b; + public int field_962_c; + public int field_961_d; + public int field_960_e; + public int field_959_f; + public int field_958_g; + + public MetadataChunkBlock(EnumSkyBlock var1, int var2, int var3, int var4, int var5, int var6, int var7) { + this.field_957_a = var1; + this.field_956_b = var2; + this.field_962_c = var3; + this.field_961_d = var4; + this.field_960_e = var5; + this.field_959_f = var6; + this.field_958_g = var7; + } + + public void func_4107_a(World var1) { + int var2 = this.field_960_e - this.field_956_b + 1; + int var3 = this.field_959_f - this.field_962_c + 1; + int var4 = this.field_958_g - this.field_961_d + 1; + int var5 = var2 * var3 * var4; + if(var5 <= -Short.MIN_VALUE) { + for(int var6 = this.field_956_b; var6 <= this.field_960_e; ++var6) { + for(int var7 = this.field_961_d; var7 <= this.field_958_g; ++var7) { + if(var1.func_530_e(var6, 0, var7)) { + for(int var8 = this.field_962_c; var8 <= this.field_959_f; ++var8) { + if(var8 >= 0 && var8 < 128) { + int var9 = var1.getSavedLightValue(this.field_957_a, var6, var8, var7); + boolean var10 = false; + int var11 = var1.getBlockId(var6, var8, var7); + int var12 = Block.lightOpacity[var11]; + if(var12 == 0) { + var12 = 1; + } + + int var13 = 0; + if(this.field_957_a == EnumSkyBlock.Sky) { + if(var1.canExistingBlockSeeTheSky(var6, var8, var7)) { + var13 = 15; + } + } else if(this.field_957_a == EnumSkyBlock.Block) { + var13 = Block.lightValue[var11]; + } + + int var14; + int var20; + if(var12 >= 15 && var13 == 0) { + var20 = 0; + } else { + var14 = var1.getSavedLightValue(this.field_957_a, var6 - 1, var8, var7); + int var15 = var1.getSavedLightValue(this.field_957_a, var6 + 1, var8, var7); + int var16 = var1.getSavedLightValue(this.field_957_a, var6, var8 - 1, var7); + int var17 = var1.getSavedLightValue(this.field_957_a, var6, var8 + 1, var7); + int var18 = var1.getSavedLightValue(this.field_957_a, var6, var8, var7 - 1); + int var19 = var1.getSavedLightValue(this.field_957_a, var6, var8, var7 + 1); + var20 = var14; + if(var15 > var14) { + var20 = var15; + } + + if(var16 > var20) { + var20 = var16; + } + + if(var17 > var20) { + var20 = var17; + } + + if(var18 > var20) { + var20 = var18; + } + + if(var19 > var20) { + var20 = var19; + } + + var20 -= var12; + if(var20 < 0) { + var20 = 0; + } + + if(var13 > var20) { + var20 = var13; + } + } + + if(var9 != var20) { + var1.setLightValue(this.field_957_a, var6, var8, var7, var20); + var14 = var20 - 1; + if(var14 < 0) { + var14 = 0; + } + + var1.neighborLightPropagationChanged(this.field_957_a, var6 - 1, var8, var7, var14); + var1.neighborLightPropagationChanged(this.field_957_a, var6, var8 - 1, var7, var14); + var1.neighborLightPropagationChanged(this.field_957_a, var6, var8, var7 - 1, var14); + if(var6 + 1 >= this.field_960_e) { + var1.neighborLightPropagationChanged(this.field_957_a, var6 + 1, var8, var7, var14); + } + + if(var8 + 1 >= this.field_959_f) { + var1.neighborLightPropagationChanged(this.field_957_a, var6, var8 + 1, var7, var14); + } + + if(var7 + 1 >= this.field_958_g) { + var1.neighborLightPropagationChanged(this.field_957_a, var6, var8, var7 + 1, var14); + } + } + } + } + } + } + } + + } + } + + public boolean func_692_a(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 >= this.field_956_b && var2 >= this.field_962_c && var3 >= this.field_961_d && var4 <= this.field_960_e && var5 <= this.field_959_f && var6 <= this.field_958_g) { + return true; + } else { + byte var7 = 1; + if(var1 >= this.field_956_b - var7 && var2 >= this.field_962_c - var7 && var3 >= this.field_961_d - var7 && var4 <= this.field_960_e + var7 && var5 <= this.field_959_f + var7 && var6 <= this.field_958_g + var7) { + int var8 = this.field_960_e - this.field_956_b; + int var9 = this.field_959_f - this.field_962_c; + int var10 = this.field_958_g - this.field_961_d; + if(var1 > this.field_956_b) { + var1 = this.field_956_b; + } + + if(var2 > this.field_962_c) { + var2 = this.field_962_c; + } + + if(var3 > this.field_961_d) { + var3 = this.field_961_d; + } + + if(var4 < this.field_960_e) { + var4 = this.field_960_e; + } + + if(var5 < this.field_959_f) { + var5 = this.field_959_f; + } + + if(var6 < this.field_958_g) { + var6 = this.field_958_g; + } + + int var11 = var4 - var1; + int var12 = var5 - var2; + int var13 = var6 - var3; + int var14 = var8 * var9 * var10; + int var15 = var11 * var12 * var13; + if(var15 - var14 <= 2) { + this.field_956_b = var1; + this.field_962_c = var2; + this.field_961_d = var3; + this.field_960_e = var4; + this.field_959_f = var5; + this.field_958_g = var6; + return true; + } + } + + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/MinecartTrackLogic.java b/minecraft_server/src/net/minecraft/src/MinecartTrackLogic.java new file mode 100644 index 0000000..77ffd5d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MinecartTrackLogic.java @@ -0,0 +1,323 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; + +class MinecartTrackLogic { + private World worldObj; + private int field_893_c; + private int field_892_d; + private int field_891_e; + private int field_890_f; + private List field_889_g; + final BlockMinecartTrack field_888_a; + + public MinecartTrackLogic(BlockMinecartTrack var1, World var2, int var3, int var4, int var5) { + this.field_888_a = var1; + this.field_889_g = new ArrayList(); + this.worldObj = var2; + this.field_893_c = var3; + this.field_892_d = var4; + this.field_891_e = var5; + this.field_890_f = var2.getBlockMetadata(var3, var4, var5); + this.func_593_a(); + } + + private void func_593_a() { + this.field_889_g.clear(); + if(this.field_890_f == 0) { + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e - 1)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e + 1)); + } else if(this.field_890_f == 1) { + this.field_889_g.add(new ChunkPosition(this.field_893_c - 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c + 1, this.field_892_d, this.field_891_e)); + } else if(this.field_890_f == 2) { + this.field_889_g.add(new ChunkPosition(this.field_893_c - 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c + 1, this.field_892_d + 1, this.field_891_e)); + } else if(this.field_890_f == 3) { + this.field_889_g.add(new ChunkPosition(this.field_893_c - 1, this.field_892_d + 1, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c + 1, this.field_892_d, this.field_891_e)); + } else if(this.field_890_f == 4) { + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d + 1, this.field_891_e - 1)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e + 1)); + } else if(this.field_890_f == 5) { + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e - 1)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d + 1, this.field_891_e + 1)); + } else if(this.field_890_f == 6) { + this.field_889_g.add(new ChunkPosition(this.field_893_c + 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e + 1)); + } else if(this.field_890_f == 7) { + this.field_889_g.add(new ChunkPosition(this.field_893_c - 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e + 1)); + } else if(this.field_890_f == 8) { + this.field_889_g.add(new ChunkPosition(this.field_893_c - 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e - 1)); + } else if(this.field_890_f == 9) { + this.field_889_g.add(new ChunkPosition(this.field_893_c + 1, this.field_892_d, this.field_891_e)); + this.field_889_g.add(new ChunkPosition(this.field_893_c, this.field_892_d, this.field_891_e - 1)); + } + + } + + private void func_591_b() { + for(int var1 = 0; var1 < this.field_889_g.size(); ++var1) { + MinecartTrackLogic var2 = this.func_595_a((ChunkPosition)this.field_889_g.get(var1)); + if(var2 != null && var2.func_590_b(this)) { + this.field_889_g.set(var1, new ChunkPosition(var2.field_893_c, var2.field_892_d, var2.field_891_e)); + } else { + this.field_889_g.remove(var1--); + } + } + + } + + private boolean func_589_a(int var1, int var2, int var3) { + return this.worldObj.getBlockId(var1, var2, var3) == this.field_888_a.blockID ? true : (this.worldObj.getBlockId(var1, var2 + 1, var3) == this.field_888_a.blockID ? true : this.worldObj.getBlockId(var1, var2 - 1, var3) == this.field_888_a.blockID); + } + + private MinecartTrackLogic func_595_a(ChunkPosition var1) { + return this.worldObj.getBlockId(var1.field_846_a, var1.field_845_b, var1.field_847_c) == this.field_888_a.blockID ? new MinecartTrackLogic(this.field_888_a, this.worldObj, var1.field_846_a, var1.field_845_b, var1.field_847_c) : (this.worldObj.getBlockId(var1.field_846_a, var1.field_845_b + 1, var1.field_847_c) == this.field_888_a.blockID ? new MinecartTrackLogic(this.field_888_a, this.worldObj, var1.field_846_a, var1.field_845_b + 1, var1.field_847_c) : (this.worldObj.getBlockId(var1.field_846_a, var1.field_845_b - 1, var1.field_847_c) == this.field_888_a.blockID ? new MinecartTrackLogic(this.field_888_a, this.worldObj, var1.field_846_a, var1.field_845_b - 1, var1.field_847_c) : null)); + } + + private boolean func_590_b(MinecartTrackLogic var1) { + for(int var2 = 0; var2 < this.field_889_g.size(); ++var2) { + ChunkPosition var3 = (ChunkPosition)this.field_889_g.get(var2); + if(var3.field_846_a == var1.field_893_c && var3.field_847_c == var1.field_891_e) { + return true; + } + } + + return false; + } + + private boolean func_599_b(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.field_889_g.size(); ++var4) { + ChunkPosition var5 = (ChunkPosition)this.field_889_g.get(var4); + if(var5.field_846_a == var1 && var5.field_847_c == var3) { + return true; + } + } + + return false; + } + + private int func_594_c() { + int var1 = 0; + if(this.func_589_a(this.field_893_c, this.field_892_d, this.field_891_e - 1)) { + ++var1; + } + + if(this.func_589_a(this.field_893_c, this.field_892_d, this.field_891_e + 1)) { + ++var1; + } + + if(this.func_589_a(this.field_893_c - 1, this.field_892_d, this.field_891_e)) { + ++var1; + } + + if(this.func_589_a(this.field_893_c + 1, this.field_892_d, this.field_891_e)) { + ++var1; + } + + return var1; + } + + private boolean func_597_c(MinecartTrackLogic var1) { + if(this.func_590_b(var1)) { + return true; + } else if(this.field_889_g.size() == 2) { + return false; + } else if(this.field_889_g.size() == 0) { + return true; + } else { + ChunkPosition var2 = (ChunkPosition)this.field_889_g.get(0); + return var1.field_892_d == this.field_892_d && var2.field_845_b == this.field_892_d ? true : true; + } + } + + private void func_598_d(MinecartTrackLogic var1) { + this.field_889_g.add(new ChunkPosition(var1.field_893_c, var1.field_892_d, var1.field_891_e)); + boolean var2 = this.func_599_b(this.field_893_c, this.field_892_d, this.field_891_e - 1); + boolean var3 = this.func_599_b(this.field_893_c, this.field_892_d, this.field_891_e + 1); + boolean var4 = this.func_599_b(this.field_893_c - 1, this.field_892_d, this.field_891_e); + boolean var5 = this.func_599_b(this.field_893_c + 1, this.field_892_d, this.field_891_e); + byte var6 = -1; + if(var2 || var3) { + var6 = 0; + } + + if(var4 || var5) { + var6 = 1; + } + + if(var3 && var5 && !var2 && !var4) { + var6 = 6; + } + + if(var3 && var4 && !var2 && !var5) { + var6 = 7; + } + + if(var2 && var4 && !var3 && !var5) { + var6 = 8; + } + + if(var2 && var5 && !var3 && !var4) { + var6 = 9; + } + + if(var6 == 0) { + if(this.worldObj.getBlockId(this.field_893_c, this.field_892_d + 1, this.field_891_e - 1) == this.field_888_a.blockID) { + var6 = 4; + } + + if(this.worldObj.getBlockId(this.field_893_c, this.field_892_d + 1, this.field_891_e + 1) == this.field_888_a.blockID) { + var6 = 5; + } + } + + if(var6 == 1) { + if(this.worldObj.getBlockId(this.field_893_c + 1, this.field_892_d + 1, this.field_891_e) == this.field_888_a.blockID) { + var6 = 2; + } + + if(this.worldObj.getBlockId(this.field_893_c - 1, this.field_892_d + 1, this.field_891_e) == this.field_888_a.blockID) { + var6 = 3; + } + } + + if(var6 < 0) { + var6 = 0; + } + + this.worldObj.setBlockMetadataWithNotify(this.field_893_c, this.field_892_d, this.field_891_e, var6); + } + + private boolean func_592_c(int var1, int var2, int var3) { + MinecartTrackLogic var4 = this.func_595_a(new ChunkPosition(var1, var2, var3)); + if(var4 == null) { + return false; + } else { + var4.func_591_b(); + return var4.func_597_c(this); + } + } + + public void func_596_a(boolean var1) { + boolean var2 = this.func_592_c(this.field_893_c, this.field_892_d, this.field_891_e - 1); + boolean var3 = this.func_592_c(this.field_893_c, this.field_892_d, this.field_891_e + 1); + boolean var4 = this.func_592_c(this.field_893_c - 1, this.field_892_d, this.field_891_e); + boolean var5 = this.func_592_c(this.field_893_c + 1, this.field_892_d, this.field_891_e); + byte var6 = -1; + if((var2 || var3) && !var4 && !var5) { + var6 = 0; + } + + if((var4 || var5) && !var2 && !var3) { + var6 = 1; + } + + if(var3 && var5 && !var2 && !var4) { + var6 = 6; + } + + if(var3 && var4 && !var2 && !var5) { + var6 = 7; + } + + if(var2 && var4 && !var3 && !var5) { + var6 = 8; + } + + if(var2 && var5 && !var3 && !var4) { + var6 = 9; + } + + if(var6 == -1) { + if(var2 || var3) { + var6 = 0; + } + + if(var4 || var5) { + var6 = 1; + } + + if(var1) { + if(var3 && var5) { + var6 = 6; + } + + if(var4 && var3) { + var6 = 7; + } + + if(var5 && var2) { + var6 = 9; + } + + if(var2 && var4) { + var6 = 8; + } + } else { + if(var2 && var4) { + var6 = 8; + } + + if(var5 && var2) { + var6 = 9; + } + + if(var4 && var3) { + var6 = 7; + } + + if(var3 && var5) { + var6 = 6; + } + } + } + + if(var6 == 0) { + if(this.worldObj.getBlockId(this.field_893_c, this.field_892_d + 1, this.field_891_e - 1) == this.field_888_a.blockID) { + var6 = 4; + } + + if(this.worldObj.getBlockId(this.field_893_c, this.field_892_d + 1, this.field_891_e + 1) == this.field_888_a.blockID) { + var6 = 5; + } + } + + if(var6 == 1) { + if(this.worldObj.getBlockId(this.field_893_c + 1, this.field_892_d + 1, this.field_891_e) == this.field_888_a.blockID) { + var6 = 2; + } + + if(this.worldObj.getBlockId(this.field_893_c - 1, this.field_892_d + 1, this.field_891_e) == this.field_888_a.blockID) { + var6 = 3; + } + } + + if(var6 < 0) { + var6 = 0; + } + + this.field_890_f = var6; + this.func_593_a(); + this.worldObj.setBlockMetadataWithNotify(this.field_893_c, this.field_892_d, this.field_891_e, var6); + + for(int var7 = 0; var7 < this.field_889_g.size(); ++var7) { + MinecartTrackLogic var8 = this.func_595_a((ChunkPosition)this.field_889_g.get(var7)); + if(var8 != null) { + var8.func_591_b(); + if(var8.func_597_c(this)) { + var8.func_598_d(this); + } + } + } + + } + + static int func_600_a(MinecartTrackLogic var0) { + return var0.func_594_c(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/MinecraftException.java b/minecraft_server/src/net/minecraft/src/MinecraftException.java new file mode 100644 index 0000000..0cf8790 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MinecraftException.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +public class MinecraftException extends RuntimeException { + public MinecraftException(String var1) { + super(var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/MobSpawnerBase.java b/minecraft_server/src/net/minecraft/src/MobSpawnerBase.java new file mode 100644 index 0000000..979520b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MobSpawnerBase.java @@ -0,0 +1,73 @@ +package net.minecraft.src; + +public class MobSpawnerBase { + public static final MobSpawnerBase rainforest = (new MobSpawnerBase()).func_4079_b(588342).setBiomeName("Rainforest").func_4080_a(2094168); + public static final MobSpawnerBase swampland = (new MobSpawnerSwamp()).func_4079_b(522674).setBiomeName("Swampland").func_4080_a(9154376); + public static final MobSpawnerBase seasonalForest = (new MobSpawnerBase()).func_4079_b(10215459).setBiomeName("Seasonal Forest"); + public static final MobSpawnerBase forest = (new MobSpawnerBase()).func_4079_b(353825).setBiomeName("Forest").func_4080_a(5159473); + public static final MobSpawnerBase savanna = (new MobSpawnerDesert()).func_4079_b(14278691).setBiomeName("Savanna"); + public static final MobSpawnerBase shrubland = (new MobSpawnerBase()).func_4079_b(10595616).setBiomeName("Shrubland"); + public static final MobSpawnerBase taiga = (new MobSpawnerBase()).func_4079_b(3060051).setBiomeName("Taiga").func_4083_b().func_4080_a(8107825); + public static final MobSpawnerBase desert = (new MobSpawnerDesert()).func_4079_b(16421912).setBiomeName("Desert"); + public static final MobSpawnerBase plains = (new MobSpawnerDesert()).func_4079_b(16767248).setBiomeName("Plains"); + public static final MobSpawnerBase iceDesert = (new MobSpawnerDesert()).func_4079_b(16772499).setBiomeName("Ice Desert").func_4083_b().func_4080_a(12899129); + public static final MobSpawnerBase tundra = (new MobSpawnerBase()).func_4079_b(5762041).setBiomeName("Tundra").func_4083_b().func_4080_a(12899129); + public static final MobSpawnerBase hell = (new MobSpawnerHell()).func_4079_b(16711680).setBiomeName("Hell"); + public String biomeName; + public int field_6162_n; + public byte topBlock = (byte)Block.grass.blockID; + public byte fillerBlock = (byte)Block.dirt.blockID; + public int field_6161_q = 5169201; + protected Class[] biomeMonsters = new Class[]{EntitySpider.class, EntityZombie.class, EntitySkeleton.class, EntityCreeper.class}; + protected Class[] biomeCreatures = new Class[]{EntitySheep.class, EntityPig.class, EntityChicken.class, EntityCow.class}; + private static MobSpawnerBase[] biomeLookupTable = new MobSpawnerBase[4096]; + + public static void generateBiomeLookup() { + for(int var0 = 0; var0 < 64; ++var0) { + for(int var1 = 0; var1 < 64; ++var1) { + biomeLookupTable[var0 + var1 * 64] = getBiome((float)var0 / 63.0F, (float)var1 / 63.0F); + } + } + + desert.topBlock = desert.fillerBlock = (byte)Block.sand.blockID; + iceDesert.topBlock = iceDesert.fillerBlock = (byte)Block.sand.blockID; + } + + protected MobSpawnerBase func_4083_b() { + return this; + } + + protected MobSpawnerBase setBiomeName(String var1) { + this.biomeName = var1; + return this; + } + + protected MobSpawnerBase func_4080_a(int var1) { + this.field_6161_q = var1; + return this; + } + + protected MobSpawnerBase func_4079_b(int var1) { + this.field_6162_n = var1; + return this; + } + + public static MobSpawnerBase getBiomeFromLookup(double var0, double var2) { + int var4 = (int)(var0 * 63.0D); + int var5 = (int)(var2 * 63.0D); + return biomeLookupTable[var4 + var5 * 64]; + } + + public static MobSpawnerBase getBiome(float var0, float var1) { + var1 *= var0; + return var0 < 0.1F ? tundra : (var1 < 0.2F ? (var0 < 0.5F ? tundra : (var0 < 0.95F ? savanna : desert)) : (var1 > 0.5F && var0 < 0.7F ? swampland : (var0 < 0.5F ? taiga : (var0 < 0.97F ? (var1 < 0.35F ? shrubland : forest) : (var1 < 0.45F ? plains : (var1 < 0.9F ? seasonalForest : rainforest)))))); + } + + public Class[] getEntitiesForType(EnumCreatureType var1) { + return var1 == EnumCreatureType.monster ? this.biomeMonsters : (var1 == EnumCreatureType.creature ? this.biomeCreatures : null); + } + + static { + generateBiomeLookup(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/MobSpawnerDesert.java b/minecraft_server/src/net/minecraft/src/MobSpawnerDesert.java new file mode 100644 index 0000000..0bb8072 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MobSpawnerDesert.java @@ -0,0 +1,4 @@ +package net.minecraft.src; + +public class MobSpawnerDesert extends MobSpawnerBase { +} diff --git a/minecraft_server/src/net/minecraft/src/MobSpawnerHell.java b/minecraft_server/src/net/minecraft/src/MobSpawnerHell.java new file mode 100644 index 0000000..d718193 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MobSpawnerHell.java @@ -0,0 +1,8 @@ +package net.minecraft.src; + +public class MobSpawnerHell extends MobSpawnerBase { + public MobSpawnerHell() { + this.biomeMonsters = new Class[]{EntityGhast.class, EntityPigZombie.class}; + this.biomeCreatures = new Class[0]; + } +} diff --git a/minecraft_server/src/net/minecraft/src/MobSpawnerSwamp.java b/minecraft_server/src/net/minecraft/src/MobSpawnerSwamp.java new file mode 100644 index 0000000..1482f7f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MobSpawnerSwamp.java @@ -0,0 +1,4 @@ +package net.minecraft.src; + +public class MobSpawnerSwamp extends MobSpawnerBase { +} diff --git a/minecraft_server/src/net/minecraft/src/MovingObjectPosition.java b/minecraft_server/src/net/minecraft/src/MovingObjectPosition.java new file mode 100644 index 0000000..d43bb05 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/MovingObjectPosition.java @@ -0,0 +1,26 @@ +package net.minecraft.src; + +public class MovingObjectPosition { + public int typeOfHit; + public int blockX; + public int blockY; + public int blockZ; + public int sideHit; + public Vec3D hitVec; + public Entity entityHit; + + public MovingObjectPosition(int var1, int var2, int var3, int var4, Vec3D var5) { + this.typeOfHit = 0; + this.blockX = var1; + this.blockY = var2; + this.blockZ = var3; + this.sideHit = var4; + this.hitVec = Vec3D.createVector(var5.xCoord, var5.yCoord, var5.zCoord); + } + + public MovingObjectPosition(Entity var1) { + this.typeOfHit = 1; + this.entityHit = var1; + this.hitVec = Vec3D.createVector(var1.posX, var1.posY, var1.posZ); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTBase.java b/minecraft_server/src/net/minecraft/src/NBTBase.java new file mode 100644 index 0000000..cb1b73f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTBase.java @@ -0,0 +1,102 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public abstract class NBTBase { + private String key = null; + + abstract void writeTagContents(DataOutput var1) throws IOException; + + abstract void readTagContents(DataInput var1) throws IOException; + + public abstract byte getType(); + + public String getKey() { + return this.key == null ? "" : this.key; + } + + public NBTBase setKey(String var1) { + this.key = var1; + return this; + } + + public static NBTBase readTag(DataInput var0) throws IOException { + byte var1 = var0.readByte(); + if(var1 == 0) { + return new NBTTagEnd(); + } else { + NBTBase var2 = createTagOfType(var1); + var2.key = var0.readUTF(); + var2.readTagContents(var0); + return var2; + } + } + + public static void writeTag(NBTBase var0, DataOutput var1) throws IOException { + var1.writeByte(var0.getType()); + if(var0.getType() != 0) { + var1.writeUTF(var0.getKey()); + var0.writeTagContents(var1); + } + } + + public static NBTBase createTagOfType(byte var0) { + switch(var0) { + case 0: + return new NBTTagEnd(); + case 1: + return new NBTTagByte(); + case 2: + return new NBTTagShort(); + case 3: + return new NBTTagInt(); + case 4: + return new NBTTagLong(); + case 5: + return new NBTTagFloat(); + case 6: + return new NBTTagDouble(); + case 7: + return new NBTTagByteArray(); + case 8: + return new NBTTagString(); + case 9: + return new NBTTagList(); + case 10: + return new NBTTagCompound(); + default: + return null; + } + } + + public static String getTagName(byte var0) { + switch(var0) { + case 0: + return "TAG_End"; + case 1: + return "TAG_Byte"; + case 2: + return "TAG_Short"; + case 3: + return "TAG_Int"; + case 4: + return "TAG_Long"; + case 5: + return "TAG_Float"; + case 6: + return "TAG_Double"; + case 7: + return "TAG_Byte_Array"; + case 8: + return "TAG_String"; + case 9: + return "TAG_List"; + case 10: + return "TAG_Compound"; + default: + return "UNKNOWN"; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagByte.java b/minecraft_server/src/net/minecraft/src/NBTTagByte.java new file mode 100644 index 0000000..092f7a3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagByte.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagByte extends NBTBase { + public byte byteValue; + + public NBTTagByte() { + } + + public NBTTagByte(byte var1) { + this.byteValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeByte(this.byteValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.byteValue = var1.readByte(); + } + + public byte getType() { + return (byte)1; + } + + public String toString() { + return "" + this.byteValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagByteArray.java b/minecraft_server/src/net/minecraft/src/NBTTagByteArray.java new file mode 100644 index 0000000..d35b4a8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagByteArray.java @@ -0,0 +1,35 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagByteArray extends NBTBase { + public byte[] byteArray; + + public NBTTagByteArray() { + } + + public NBTTagByteArray(byte[] var1) { + this.byteArray = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeInt(this.byteArray.length); + var1.write(this.byteArray); + } + + void readTagContents(DataInput var1) throws IOException { + int var2 = var1.readInt(); + this.byteArray = new byte[var2]; + var1.readFully(this.byteArray); + } + + public byte getType() { + return (byte)7; + } + + public String toString() { + return "[" + this.byteArray.length + " bytes]"; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagCompound.java b/minecraft_server/src/net/minecraft/src/NBTTagCompound.java new file mode 100644 index 0000000..b95cbae --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagCompound.java @@ -0,0 +1,136 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class NBTTagCompound extends NBTBase { + private Map tagMap = new HashMap(); + + void writeTagContents(DataOutput var1) throws IOException { + Iterator var2 = this.tagMap.values().iterator(); + + while(var2.hasNext()) { + NBTBase var3 = (NBTBase)var2.next(); + NBTBase.writeTag(var3, var1); + } + + var1.writeByte(0); + } + + void readTagContents(DataInput var1) throws IOException { + this.tagMap.clear(); + + while(true) { + NBTBase var2 = NBTBase.readTag(var1); + if(var2.getType() == 0) { + return; + } + + this.tagMap.put(var2.getKey(), var2); + } + } + + public byte getType() { + return (byte)10; + } + + public void setTag(String var1, NBTBase var2) { + this.tagMap.put(var1, var2.setKey(var1)); + } + + public void setByte(String var1, byte var2) { + this.tagMap.put(var1, (new NBTTagByte(var2)).setKey(var1)); + } + + public void setShort(String var1, short var2) { + this.tagMap.put(var1, (new NBTTagShort(var2)).setKey(var1)); + } + + public void setInteger(String var1, int var2) { + this.tagMap.put(var1, (new NBTTagInt(var2)).setKey(var1)); + } + + public void setLong(String var1, long var2) { + this.tagMap.put(var1, (new NBTTagLong(var2)).setKey(var1)); + } + + public void setFloat(String var1, float var2) { + this.tagMap.put(var1, (new NBTTagFloat(var2)).setKey(var1)); + } + + public void setDouble(String var1, double var2) { + this.tagMap.put(var1, (new NBTTagDouble(var2)).setKey(var1)); + } + + public void setString(String var1, String var2) { + this.tagMap.put(var1, (new NBTTagString(var2)).setKey(var1)); + } + + public void setByteArray(String var1, byte[] var2) { + this.tagMap.put(var1, (new NBTTagByteArray(var2)).setKey(var1)); + } + + public void setCompoundTag(String var1, NBTTagCompound var2) { + this.tagMap.put(var1, var2.setKey(var1)); + } + + public void setBoolean(String var1, boolean var2) { + this.setByte(var1, (byte)(var2 ? 1 : 0)); + } + + public boolean hasKey(String var1) { + return this.tagMap.containsKey(var1); + } + + public byte getByte(String var1) { + return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagByte)this.tagMap.get(var1)).byteValue; + } + + public short getShort(String var1) { + return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagShort)this.tagMap.get(var1)).shortValue; + } + + public int getInteger(String var1) { + return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagInt)this.tagMap.get(var1)).intValue; + } + + public long getLong(String var1) { + return !this.tagMap.containsKey(var1) ? 0L : ((NBTTagLong)this.tagMap.get(var1)).longValue; + } + + public float getFloat(String var1) { + return !this.tagMap.containsKey(var1) ? 0.0F : ((NBTTagFloat)this.tagMap.get(var1)).floatValue; + } + + public double getDouble(String var1) { + return !this.tagMap.containsKey(var1) ? 0.0D : ((NBTTagDouble)this.tagMap.get(var1)).doubleValue; + } + + public String getString(String var1) { + return !this.tagMap.containsKey(var1) ? "" : ((NBTTagString)this.tagMap.get(var1)).stringValue; + } + + public byte[] getByteArray(String var1) { + return !this.tagMap.containsKey(var1) ? new byte[0] : ((NBTTagByteArray)this.tagMap.get(var1)).byteArray; + } + + public NBTTagCompound getCompoundTag(String var1) { + return !this.tagMap.containsKey(var1) ? new NBTTagCompound() : (NBTTagCompound)this.tagMap.get(var1); + } + + public NBTTagList getTagList(String var1) { + return !this.tagMap.containsKey(var1) ? new NBTTagList() : (NBTTagList)this.tagMap.get(var1); + } + + public boolean getBoolean(String var1) { + return this.getByte(var1) != 0; + } + + public String toString() { + return "" + this.tagMap.size() + " entries"; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagDouble.java b/minecraft_server/src/net/minecraft/src/NBTTagDouble.java new file mode 100644 index 0000000..39caa5c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagDouble.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagDouble extends NBTBase { + public double doubleValue; + + public NBTTagDouble() { + } + + public NBTTagDouble(double var1) { + this.doubleValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeDouble(this.doubleValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.doubleValue = var1.readDouble(); + } + + public byte getType() { + return (byte)6; + } + + public String toString() { + return "" + this.doubleValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagEnd.java b/minecraft_server/src/net/minecraft/src/NBTTagEnd.java new file mode 100644 index 0000000..1385764 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagEnd.java @@ -0,0 +1,21 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagEnd extends NBTBase { + void readTagContents(DataInput var1) throws IOException { + } + + void writeTagContents(DataOutput var1) throws IOException { + } + + public byte getType() { + return (byte)0; + } + + public String toString() { + return "END"; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagFloat.java b/minecraft_server/src/net/minecraft/src/NBTTagFloat.java new file mode 100644 index 0000000..d5db8ec --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagFloat.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagFloat extends NBTBase { + public float floatValue; + + public NBTTagFloat() { + } + + public NBTTagFloat(float var1) { + this.floatValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeFloat(this.floatValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.floatValue = var1.readFloat(); + } + + public byte getType() { + return (byte)5; + } + + public String toString() { + return "" + this.floatValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagInt.java b/minecraft_server/src/net/minecraft/src/NBTTagInt.java new file mode 100644 index 0000000..77e69ac --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagInt.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagInt extends NBTBase { + public int intValue; + + public NBTTagInt() { + } + + public NBTTagInt(int var1) { + this.intValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeInt(this.intValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.intValue = var1.readInt(); + } + + public byte getType() { + return (byte)3; + } + + public String toString() { + return "" + this.intValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagList.java b/minecraft_server/src/net/minecraft/src/NBTTagList.java new file mode 100644 index 0000000..3968e9b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagList.java @@ -0,0 +1,62 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class NBTTagList extends NBTBase { + private List tagList = new ArrayList(); + private byte tagType; + + void writeTagContents(DataOutput var1) throws IOException { + if(this.tagList.size() > 0) { + this.tagType = ((NBTBase)this.tagList.get(0)).getType(); + } else { + this.tagType = 1; + } + + var1.writeByte(this.tagType); + var1.writeInt(this.tagList.size()); + + for(int var2 = 0; var2 < this.tagList.size(); ++var2) { + ((NBTBase)this.tagList.get(var2)).writeTagContents(var1); + } + + } + + void readTagContents(DataInput var1) throws IOException { + this.tagType = var1.readByte(); + int var2 = var1.readInt(); + this.tagList = new ArrayList(); + + for(int var3 = 0; var3 < var2; ++var3) { + NBTBase var4 = NBTBase.createTagOfType(this.tagType); + var4.readTagContents(var1); + this.tagList.add(var4); + } + + } + + public byte getType() { + return (byte)9; + } + + public String toString() { + return "" + this.tagList.size() + " entries of type " + NBTBase.getTagName(this.tagType); + } + + public void setTag(NBTBase var1) { + this.tagType = var1.getType(); + this.tagList.add(var1); + } + + public NBTBase tagAt(int var1) { + return (NBTBase)this.tagList.get(var1); + } + + public int tagCount() { + return this.tagList.size(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagLong.java b/minecraft_server/src/net/minecraft/src/NBTTagLong.java new file mode 100644 index 0000000..ef65cdd --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagLong.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagLong extends NBTBase { + public long longValue; + + public NBTTagLong() { + } + + public NBTTagLong(long var1) { + this.longValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeLong(this.longValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.longValue = var1.readLong(); + } + + public byte getType() { + return (byte)4; + } + + public String toString() { + return "" + this.longValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagShort.java b/minecraft_server/src/net/minecraft/src/NBTTagShort.java new file mode 100644 index 0000000..b22621f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagShort.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagShort extends NBTBase { + public short shortValue; + + public NBTTagShort() { + } + + public NBTTagShort(short var1) { + this.shortValue = var1; + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeShort(this.shortValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.shortValue = var1.readShort(); + } + + public byte getType() { + return (byte)2; + } + + public String toString() { + return "" + this.shortValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NBTTagString.java b/minecraft_server/src/net/minecraft/src/NBTTagString.java new file mode 100644 index 0000000..91411d1 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NBTTagString.java @@ -0,0 +1,35 @@ +package net.minecraft.src; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagString extends NBTBase { + public String stringValue; + + public NBTTagString() { + } + + public NBTTagString(String var1) { + this.stringValue = var1; + if(var1 == null) { + throw new IllegalArgumentException("Empty string not allowed"); + } + } + + void writeTagContents(DataOutput var1) throws IOException { + var1.writeUTF(this.stringValue); + } + + void readTagContents(DataInput var1) throws IOException { + this.stringValue = var1.readUTF(); + } + + public byte getType() { + return (byte)8; + } + + public String toString() { + return "" + this.stringValue; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetHandler.java b/minecraft_server/src/net/minecraft/src/NetHandler.java new file mode 100644 index 0000000..312be75 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetHandler.java @@ -0,0 +1,140 @@ +package net.minecraft.src; + +public class NetHandler { + public void handleMapChunk(Packet51MapChunk var1) { + } + + public void func_6001_a(Packet var1) { + } + + public void handleErrorMessage(String var1) { + } + + public void handleKickDisconnect(Packet255KickDisconnect var1) { + this.func_6001_a(var1); + } + + public void handleLogin(Packet1Login var1) { + this.func_6001_a(var1); + } + + public void handleFlying(Packet10Flying var1) { + this.func_6001_a(var1); + } + + public void handleMultiBlockChange(Packet52MultiBlockChange var1) { + this.func_6001_a(var1); + } + + public void handleBlockDig(Packet14BlockDig var1) { + this.func_6001_a(var1); + } + + public void handleBlockChange(Packet53BlockChange var1) { + this.func_6001_a(var1); + } + + public void handlePreChunk(Packet50PreChunk var1) { + this.func_6001_a(var1); + } + + public void handleNamedEntitySpawn(Packet20NamedEntitySpawn var1) { + this.func_6001_a(var1); + } + + public void handleEntity(Packet30Entity var1) { + this.func_6001_a(var1); + } + + public void handleEntityTeleport(Packet34EntityTeleport var1) { + this.func_6001_a(var1); + } + + public void handlePlace(Packet15Place var1) { + this.func_6001_a(var1); + } + + public void handleBlockItemSwitch(Packet16BlockItemSwitch var1) { + this.func_6001_a(var1); + } + + public void handleDestroyEntity(Packet29DestroyEntity var1) { + this.func_6001_a(var1); + } + + public void handlePickupSpawn(Packet21PickupSpawn var1) { + this.func_6001_a(var1); + } + + public void handleCollect(Packet22Collect var1) { + this.func_6001_a(var1); + } + + public void handleChat(Packet3Chat var1) { + this.func_6001_a(var1); + } + + public void handleAddToInventory(Packet17AddToInventory var1) { + this.func_6001_a(var1); + } + + public void handleVehicleSpawn(Packet23VehicleSpawn var1) { + this.func_6001_a(var1); + } + + public void handleArmAnimation(Packet18ArmAnimation var1) { + this.func_6001_a(var1); + } + + public void handleHandshake(Packet2Handshake var1) { + this.func_6001_a(var1); + } + + public void handleMobSpawn(Packet24MobSpawn var1) { + this.func_6001_a(var1); + } + + public void handleUpdateTime(Packet4UpdateTime var1) { + this.func_6001_a(var1); + } + + public void handlePlayerInventory(Packet5PlayerInventory var1) { + this.func_6001_a(var1); + } + + public void handleComplexEntity(Packet59ComplexEntity var1) { + this.func_6001_a(var1); + } + + public void handleSpawnPosition(Packet6SpawnPosition var1) { + this.func_6001_a(var1); + } + + public void func_6002_a(Packet28 var1) { + this.func_6001_a(var1); + } + + public void func_6003_a(Packet39 var1) { + this.func_6001_a(var1); + } + + public void func_6006_a(Packet7 var1) { + this.func_6001_a(var1); + } + + public void func_9001_a(Packet38 var1) { + this.func_6001_a(var1); + } + + public void func_9003_a(Packet8 var1) { + this.func_6001_a(var1); + } + + public void func_9002_a(Packet9 var1) { + this.func_6001_a(var1); + } + + public void func_12001_a(Packet60 var1) { + this.func_6001_a(var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetLoginHandler.java b/minecraft_server/src/net/minecraft/src/NetLoginHandler.java new file mode 100644 index 0000000..b6dcf38 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetLoginHandler.java @@ -0,0 +1,118 @@ +package net.minecraft.src; + +import java.io.IOException; +import java.net.Socket; +import java.util.Random; +import java.util.logging.Logger; +import net.minecraft.server.MinecraftServer; + +public class NetLoginHandler extends NetHandler { + public static Logger logger = Logger.getLogger("Minecraft"); + private static Random rand = new Random(); + public NetworkManager netManager; + public boolean finishedProcessing = false; + private MinecraftServer mcServer; + private int field_9005_f = 0; + private String username = null; + private Packet1Login field_9004_h = null; + private String serverId = ""; + + public NetLoginHandler(MinecraftServer var1, Socket var2, String var3) throws IOException { + this.mcServer = var1; + this.netManager = new NetworkManager(var2, var3, this); + } + + public void tryLogin() { + if(this.field_9004_h != null) { + this.doLogin(this.field_9004_h); + this.field_9004_h = null; + } + + if(this.field_9005_f++ == 600) { + this.kickUser("Took too long to log in"); + } else { + this.netManager.processReadPackets(); + } + + } + + public void kickUser(String var1) { + try { + logger.info("Disconnecting " + this.getUserAndIPString() + ": " + var1); + this.netManager.addToSendQueue(new Packet255KickDisconnect(var1)); + this.netManager.serverShutdown(); + this.finishedProcessing = true; + } catch (Exception var3) { + var3.printStackTrace(); + } + + } + + public void handleHandshake(Packet2Handshake var1) { + if(this.mcServer.onlineMode) { + this.serverId = Long.toHexString(rand.nextLong()); + this.netManager.addToSendQueue(new Packet2Handshake(this.serverId)); + } else { + this.netManager.addToSendQueue(new Packet2Handshake("-")); + } + + } + + public void handleLogin(Packet1Login var1) { + this.username = var1.username; + if(var1.protocolVersion != 6) { + if(var1.protocolVersion > 6) { + this.kickUser("Outdated server!"); + } else { + this.kickUser("Outdated client!"); + } + + } else { + if(!this.mcServer.onlineMode) { + this.doLogin(var1); + } else { + (new ThreadLoginVerifier(this, var1)).start(); + } + + } + } + + public void doLogin(Packet1Login var1) { + EntityPlayerMP var2 = this.mcServer.configManager.login(this, var1.username, var1.password); + if(var2 != null) { + logger.info(this.getUserAndIPString() + " logged in with entity id " + var2.field_331_c); + NetServerHandler var3 = new NetServerHandler(this.mcServer, this.netManager, var2); + var3.sendPacket(new Packet1Login("", "", var2.field_331_c, this.mcServer.worldMngr.randomSeed, (byte)this.mcServer.worldMngr.field_4272_q.field_6165_g)); + var3.sendPacket(new Packet6SpawnPosition(this.mcServer.worldMngr.spawnX, this.mcServer.worldMngr.spawnY, this.mcServer.worldMngr.spawnZ)); + this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat("\u00a7e" + var2.username + " joined the game.")); + this.mcServer.configManager.playerLoggedIn(var2); + var3.func_41_a(var2.posX, var2.posY, var2.posZ, var2.rotationYaw, var2.rotationPitch); + var3.func_40_d(); + this.mcServer.field_6036_c.func_4108_a(var3); + var3.sendPacket(new Packet4UpdateTime(this.mcServer.worldMngr.worldTime)); + } + + this.finishedProcessing = true; + } + + public void handleErrorMessage(String var1) { + logger.info(this.getUserAndIPString() + " lost connection"); + this.finishedProcessing = true; + } + + public void func_6001_a(Packet var1) { + this.kickUser("Protocol error"); + } + + public String getUserAndIPString() { + return this.username != null ? this.username + " [" + this.netManager.getRemoteAddress().toString() + "]" : this.netManager.getRemoteAddress().toString(); + } + + static String getServerId(NetLoginHandler var0) { + return var0.serverId; + } + + static Packet1Login setLoginPacket(NetLoginHandler var0, Packet1Login var1) { + return var0.field_9004_h = var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetServerHandler.java b/minecraft_server/src/net/minecraft/src/NetServerHandler.java new file mode 100644 index 0000000..00b668b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetServerHandler.java @@ -0,0 +1,471 @@ +package net.minecraft.src; + +import java.util.logging.Logger; +import net.minecraft.server.MinecraftServer; + +public class NetServerHandler extends NetHandler implements ICommandListener { + public static Logger logger = Logger.getLogger("Minecraft"); + public NetworkManager netManager; + public boolean field_18_c = false; + private MinecraftServer mcServer; + private EntityPlayerMP playerEntity; + private int field_15_f = 0; + private double field_9009_g; + private double field_9008_h; + private double field_9007_i; + private boolean field_9006_j = true; + private ItemStack field_10_k = null; + + public NetServerHandler(MinecraftServer var1, NetworkManager var2, EntityPlayerMP var3) { + this.mcServer = var1; + this.netManager = var2; + var2.setNetHandler(this); + this.playerEntity = var3; + var3.field_421_a = this; + } + + public void func_42_a() { + this.netManager.processReadPackets(); + if(this.field_15_f++ % 20 == 0) { + this.netManager.addToSendQueue(new Packet0KeepAlive()); + } + + } + + public void func_43_c(String var1) { + this.netManager.addToSendQueue(new Packet255KickDisconnect(var1)); + this.netManager.serverShutdown(); + this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat("\u00a7e" + this.playerEntity.username + " left the game.")); + this.mcServer.configManager.playerLoggedOut(this.playerEntity); + this.field_18_c = true; + } + + public void handleFlying(Packet10Flying var1) { + double var2; + if(!this.field_9006_j) { + var2 = var1.yPosition - this.field_9008_h; + if(var1.xPosition == this.field_9009_g && var2 * var2 < 0.01D && var1.zPosition == this.field_9007_i) { + this.field_9006_j = true; + } + } + + if(this.field_9006_j) { + double var4; + double var6; + double var8; + double var12; + if(this.playerEntity.field_327_g != null) { + float var24 = this.playerEntity.rotationYaw; + float var3 = this.playerEntity.rotationPitch; + this.playerEntity.field_327_g.func_127_w(); + var4 = this.playerEntity.posX; + var6 = this.playerEntity.posY; + var8 = this.playerEntity.posZ; + double var25 = 0.0D; + var12 = 0.0D; + if(var1.rotating) { + var24 = var1.yaw; + var3 = var1.pitch; + } + + if(var1.moving && var1.yPosition == -999.0D && var1.stance == -999.0D) { + var25 = var1.xPosition; + var12 = var1.zPosition; + } + + this.playerEntity.onGround = var1.onGround; + this.playerEntity.func_175_i(); + this.playerEntity.moveEntity(var25, 0.0D, var12); + this.playerEntity.setPositionAndRotation(var4, var6, var8, var24, var3); + this.playerEntity.motionX = var25; + this.playerEntity.motionZ = var12; + if(this.playerEntity.field_327_g != null) { + this.mcServer.worldMngr.func_12017_b(this.playerEntity.field_327_g, true); + } + + if(this.playerEntity.field_327_g != null) { + this.playerEntity.field_327_g.func_127_w(); + } + + this.mcServer.configManager.func_613_b(this.playerEntity); + this.field_9009_g = this.playerEntity.posX; + this.field_9008_h = this.playerEntity.posY; + this.field_9007_i = this.playerEntity.posZ; + this.mcServer.worldMngr.func_520_e(this.playerEntity); + return; + } + + var2 = this.playerEntity.posY; + this.field_9009_g = this.playerEntity.posX; + this.field_9008_h = this.playerEntity.posY; + this.field_9007_i = this.playerEntity.posZ; + var4 = this.playerEntity.posX; + var6 = this.playerEntity.posY; + var8 = this.playerEntity.posZ; + float var10 = this.playerEntity.rotationYaw; + float var11 = this.playerEntity.rotationPitch; + if(var1.moving && var1.yPosition == -999.0D && var1.stance == -999.0D) { + var1.moving = false; + } + + if(var1.moving) { + var4 = var1.xPosition; + var6 = var1.yPosition; + var8 = var1.zPosition; + var12 = var1.stance - var1.yPosition; + if(var12 > 1.65D || var12 < 0.1D) { + this.func_43_c("Illegal stance"); + logger.warning(this.playerEntity.username + " had an illegal stance: " + var12); + } + + this.playerEntity.field_418_ai = var1.stance; + } + + if(var1.rotating) { + var10 = var1.yaw; + var11 = var1.pitch; + } + + this.playerEntity.func_175_i(); + this.playerEntity.field_9068_R = 0.0F; + this.playerEntity.setPositionAndRotation(this.field_9009_g, this.field_9008_h, this.field_9007_i, var10, var11); + var12 = var4 - this.playerEntity.posX; + double var14 = var6 - this.playerEntity.posY; + double var16 = var8 - this.playerEntity.posZ; + float var18 = 1.0F / 16.0F; + boolean var19 = this.mcServer.worldMngr.getCollidingBoundingBoxes(this.playerEntity, this.playerEntity.boundingBox.copy().func_694_e((double)var18, (double)var18, (double)var18)).size() == 0; + this.playerEntity.moveEntity(var12, var14, var16); + var12 = var4 - this.playerEntity.posX; + var14 = var6 - this.playerEntity.posY; + if(var14 > -0.5D || var14 < 0.5D) { + var14 = 0.0D; + } + + var16 = var8 - this.playerEntity.posZ; + double var20 = var12 * var12 + var14 * var14 + var16 * var16; + boolean var22 = false; + if(var20 > 1.0D / 16.0D) { + var22 = true; + logger.warning(this.playerEntity.username + " moved wrongly!"); + System.out.println("Got position " + var4 + ", " + var6 + ", " + var8); + System.out.println("Expected " + this.playerEntity.posX + ", " + this.playerEntity.posY + ", " + this.playerEntity.posZ); + } + + this.playerEntity.setPositionAndRotation(var4, var6, var8, var10, var11); + boolean var23 = this.mcServer.worldMngr.getCollidingBoundingBoxes(this.playerEntity, this.playerEntity.boundingBox.copy().func_694_e((double)var18, (double)var18, (double)var18)).size() == 0; + if(var19 && (var22 || !var23)) { + this.func_41_a(this.field_9009_g, this.field_9008_h, this.field_9007_i, var10, var11); + return; + } + + this.playerEntity.onGround = var1.onGround; + this.mcServer.configManager.func_613_b(this.playerEntity); + this.playerEntity.func_9153_b(this.playerEntity.posY - var2, var1.onGround); + } + + } + + public void func_41_a(double var1, double var3, double var5, float var7, float var8) { + this.field_9006_j = false; + this.field_9009_g = var1; + this.field_9008_h = var3; + this.field_9007_i = var5; + this.playerEntity.setPositionAndRotation(var1, var3, var5, var7, var8); + this.playerEntity.field_421_a.sendPacket(new Packet13PlayerLookMove(var1, var3 + (double)1.62F, var3, var5, var7, var8, false)); + } + + public void handleBlockDig(Packet14BlockDig var1) { + this.playerEntity.inventory.mainInventory[this.playerEntity.inventory.currentItem] = this.field_10_k; + boolean var2 = this.mcServer.worldMngr.field_819_z = this.mcServer.configManager.isOp(this.playerEntity.username); + boolean var3 = false; + if(var1.status == 0) { + var3 = true; + } + + if(var1.status == 1) { + var3 = true; + } + + int var4 = var1.xPosition; + int var5 = var1.yPosition; + int var6 = var1.zPosition; + if(var3) { + double var7 = this.playerEntity.posX - ((double)var4 + 0.5D); + double var9 = this.playerEntity.posY - ((double)var5 + 0.5D); + double var11 = this.playerEntity.posZ - ((double)var6 + 0.5D); + double var13 = var7 * var7 + var9 * var9 + var11 * var11; + if(var13 > 36.0D) { + return; + } + + double var15 = this.playerEntity.posY; + this.playerEntity.posY = this.playerEntity.field_418_ai; + this.playerEntity.posY = var15; + } + + int var18 = var1.face; + int var8 = (int)MathHelper.abs((float)(var4 - this.mcServer.worldMngr.spawnX)); + int var19 = (int)MathHelper.abs((float)(var6 - this.mcServer.worldMngr.spawnZ)); + if(var8 > var19) { + var19 = var8; + } + + if(var1.status == 0) { + if(var19 > 16 || var2) { + this.playerEntity.field_425_ad.func_324_a(var4, var5, var6); + } + } else if(var1.status == 2) { + this.playerEntity.field_425_ad.func_328_a(); + } else if(var1.status == 1) { + if(var19 > 16 || var2) { + this.playerEntity.field_425_ad.func_326_a(var4, var5, var6, var18); + } + } else if(var1.status == 3) { + double var10 = this.playerEntity.posX - ((double)var4 + 0.5D); + double var12 = this.playerEntity.posY - ((double)var5 + 0.5D); + double var14 = this.playerEntity.posZ - ((double)var6 + 0.5D); + double var16 = var10 * var10 + var12 * var12 + var14 * var14; + if(var16 < 256.0D) { + this.playerEntity.field_421_a.sendPacket(new Packet53BlockChange(var4, var5, var6, this.mcServer.worldMngr)); + } + } + + this.mcServer.worldMngr.field_819_z = false; + } + + public void handlePlace(Packet15Place var1) { + boolean var2 = this.mcServer.worldMngr.field_819_z = this.mcServer.configManager.isOp(this.playerEntity.username); + if(var1.direction == 255) { + ItemStack var3 = var1.id >= 0 ? new ItemStack(var1.id) : null; + this.playerEntity.field_425_ad.func_6154_a(this.playerEntity, this.mcServer.worldMngr, var3); + } else { + int var10 = var1.xPosition; + int var4 = var1.yPosition; + int var5 = var1.zPosition; + int var6 = var1.direction; + int var7 = (int)MathHelper.abs((float)(var10 - this.mcServer.worldMngr.spawnX)); + int var8 = (int)MathHelper.abs((float)(var5 - this.mcServer.worldMngr.spawnZ)); + if(var7 > var8) { + var8 = var7; + } + + if(var8 > 16 || var2) { + ItemStack var9 = var1.id >= 0 ? new ItemStack(var1.id) : null; + this.playerEntity.field_425_ad.func_327_a(this.playerEntity, this.mcServer.worldMngr, var9, var10, var4, var5, var6); + } + + this.playerEntity.field_421_a.sendPacket(new Packet53BlockChange(var10, var4, var5, this.mcServer.worldMngr)); + if(var6 == 0) { + --var4; + } + + if(var6 == 1) { + ++var4; + } + + if(var6 == 2) { + --var5; + } + + if(var6 == 3) { + ++var5; + } + + if(var6 == 4) { + --var10; + } + + if(var6 == 5) { + ++var10; + } + + this.playerEntity.field_421_a.sendPacket(new Packet53BlockChange(var10, var4, var5, this.mcServer.worldMngr)); + } + + this.mcServer.worldMngr.field_819_z = false; + } + + public void handleErrorMessage(String var1) { + logger.info(this.playerEntity.username + " lost connection: " + var1); + this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat("\u00a7e" + this.playerEntity.username + " left the game.")); + this.mcServer.configManager.playerLoggedOut(this.playerEntity); + this.field_18_c = true; + } + + public void func_6001_a(Packet var1) { + logger.warning(this.getClass() + " wasn\'t prepared to deal with a " + var1.getClass()); + this.func_43_c("Protocol error, unexpected packet"); + } + + public void sendPacket(Packet var1) { + this.netManager.addToSendQueue(var1); + } + + public void handleBlockItemSwitch(Packet16BlockItemSwitch var1) { + int var2 = var1.id; + this.playerEntity.inventory.currentItem = this.playerEntity.inventory.mainInventory.length - 1; + if(var2 == 0) { + this.field_10_k = null; + } else { + this.field_10_k = new ItemStack(var2); + } + + this.playerEntity.inventory.mainInventory[this.playerEntity.inventory.currentItem] = this.field_10_k; + this.mcServer.field_6028_k.func_12021_a(this.playerEntity, new Packet16BlockItemSwitch(this.playerEntity.field_331_c, var2)); + } + + public void handlePickupSpawn(Packet21PickupSpawn var1) { + double var2 = (double)var1.xPosition / 32.0D; + double var4 = (double)var1.yPosition / 32.0D; + double var6 = (double)var1.zPosition / 32.0D; + EntityItem var8 = new EntityItem(this.mcServer.worldMngr, var2, var4, var6, new ItemStack(var1.itemId, var1.count)); + var8.motionX = (double)var1.rotation / 128.0D; + var8.motionY = (double)var1.pitch / 128.0D; + var8.motionZ = (double)var1.roll / 128.0D; + var8.field_433_ad = 10; + this.mcServer.worldMngr.entityJoinedWorld(var8); + } + + public void handleChat(Packet3Chat var1) { + String var2 = var1.message; + if(var2.length() > 100) { + this.func_43_c("Chat message too long"); + } else { + var2 = var2.trim(); + + for(int var3 = 0; var3 < var2.length(); ++var3) { + if(" !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~\u2302\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb\u00e8\u00ef\u00ee\u00ec\u00c4\u00c5\u00c9\u00e6\u00c6\u00f4\u00f6\u00f2\u00fb\u00f9\u00ff\u00d6\u00dc\u00f8\u00a3\u00d8\u00d7\u0192\u00e1\u00ed\u00f3\u00fa\u00f1\u00d1\u00aa\u00ba\u00bf\u00ae\u00ac\u00bd\u00bc\u00a1\u00ab\u00bb".indexOf(var2.charAt(var3)) < 0) { + this.func_43_c("Illegal characters in chat"); + return; + } + } + + if(var2.startsWith("/")) { + this.func_4010_d(var2); + } else { + var2 = "<" + this.playerEntity.username + "> " + var2; + logger.info(var2); + this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat(var2)); + } + + } + } + + private void func_4010_d(String var1) { + if(var1.toLowerCase().startsWith("/me ")) { + var1 = "* " + this.playerEntity.username + " " + var1.substring(var1.indexOf(" ")).trim(); + logger.info(var1); + this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat(var1)); + } else if(var1.toLowerCase().startsWith("/kill")) { + this.playerEntity.attackEntity((Entity)null, 1000); + } else if(var1.toLowerCase().startsWith("/tell ")) { + String[] var2 = var1.split(" "); + if(var2.length >= 3) { + var1 = var1.substring(var1.indexOf(" ")).trim(); + var1 = var1.substring(var1.indexOf(" ")).trim(); + var1 = "\u00a77" + this.playerEntity.username + " whispers " + var1; + logger.info(var1 + " to " + var2[1]); + if(!this.mcServer.configManager.sendPacketToPlayer(var2[1], new Packet3Chat(var1))) { + this.sendPacket(new Packet3Chat("\u00a7cThere\'s no player by that name online.")); + } + } + } else { + String var3; + if(this.mcServer.configManager.isOp(this.playerEntity.username)) { + var3 = var1.substring(1); + logger.info(this.playerEntity.username + " issued server command: " + var3); + this.mcServer.addCommand(var3, this); + } else { + var3 = var1.substring(1); + logger.info(this.playerEntity.username + " tried command: " + var3); + } + } + + } + + public void handleArmAnimation(Packet18ArmAnimation var1) { + if(var1.animate == 1) { + this.playerEntity.func_168_z(); + } else if(var1.animate == 104) { + this.playerEntity.field_12012_al = true; + } else if(var1.animate == 105) { + this.playerEntity.field_12012_al = false; + } + + } + + public void handleKickDisconnect(Packet255KickDisconnect var1) { + this.netManager.networkShutdown("Quitting"); + } + + public int func_38_b() { + return this.netManager.getNumChunkDataPackets(); + } + + public void log(String var1) { + this.sendPacket(new Packet3Chat("\u00a77" + var1)); + } + + public String getUsername() { + return this.playerEntity.username; + } + + public void handlePlayerInventory(Packet5PlayerInventory var1) { + if(var1.type == -1) { + this.playerEntity.inventory.mainInventory = var1.stacks; + } + + if(var1.type == -2) { + this.playerEntity.inventory.craftingInventory = var1.stacks; + } + + if(var1.type == -3) { + this.playerEntity.inventory.armorInventory = var1.stacks; + } + + } + + public void func_40_d() { + this.netManager.addToSendQueue(new Packet5PlayerInventory(-1, this.playerEntity.inventory.mainInventory)); + this.netManager.addToSendQueue(new Packet5PlayerInventory(-2, this.playerEntity.inventory.craftingInventory)); + this.netManager.addToSendQueue(new Packet5PlayerInventory(-3, this.playerEntity.inventory.armorInventory)); + } + + public void handleComplexEntity(Packet59ComplexEntity var1) { + if(var1.entityNBT.getInteger("x") == var1.xPosition) { + if(var1.entityNBT.getInteger("y") == var1.yPosition) { + if(var1.entityNBT.getInteger("z") == var1.zPosition) { + TileEntity var2 = this.mcServer.worldMngr.getBlock(var1.xPosition, var1.yPosition, var1.zPosition); + if(var2 != null) { + try { + var2.readFromNBT(var1.entityNBT); + } catch (Exception var4) { + } + + var2.func_183_c(); + } + + } + } + } + } + + public void func_6006_a(Packet7 var1) { + Entity var2 = this.mcServer.worldMngr.func_6158_a(var1.field_9018_b); + this.playerEntity.inventory.mainInventory[this.playerEntity.inventory.currentItem] = this.field_10_k; + if(var2 != null && this.playerEntity.func_145_g(var2)) { + if(var1.field_9020_c == 0) { + this.playerEntity.func_9145_g(var2); + } else if(var1.field_9020_c == 1) { + this.playerEntity.func_9146_h(var2); + } + } + + } + + public void func_9002_a(Packet9 var1) { + if(this.playerEntity.field_9109_aQ <= 0) { + this.playerEntity = this.mcServer.configManager.func_9242_d(this.playerEntity); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkAcceptThread.java b/minecraft_server/src/net/minecraft/src/NetworkAcceptThread.java new file mode 100644 index 0000000..a4a5be7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkAcceptThread.java @@ -0,0 +1,31 @@ +package net.minecraft.src; + +import java.io.IOException; +import java.net.Socket; +import net.minecraft.server.MinecraftServer; + +class NetworkAcceptThread extends Thread { + final MinecraftServer mcServer; + final NetworkListenThread field_985_b; + + NetworkAcceptThread(NetworkListenThread var1, String var2, MinecraftServer var3) { + super(var2); + this.field_985_b = var1; + this.mcServer = var3; + } + + public void run() { + while(this.field_985_b.field_973_b) { + try { + Socket var1 = NetworkListenThread.func_713_a(this.field_985_b).accept(); + if(var1 != null) { + NetLoginHandler var2 = new NetLoginHandler(this.mcServer, var1, "Connection #" + NetworkListenThread.func_712_b(this.field_985_b)); + NetworkListenThread.func_716_a(this.field_985_b, var2); + } + } catch (IOException var3) { + var3.printStackTrace(); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkListenThread.java b/minecraft_server/src/net/minecraft/src/NetworkListenThread.java new file mode 100644 index 0000000..d7e0d7a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkListenThread.java @@ -0,0 +1,87 @@ +package net.minecraft.src; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; +import net.minecraft.server.MinecraftServer; + +public class NetworkListenThread { + public static Logger logger = Logger.getLogger("Minecraft"); + private ServerSocket field_979_d; + private Thread field_978_e; + public volatile boolean field_973_b = false; + private int field_977_f = 0; + private ArrayList field_976_g = new ArrayList(); + private ArrayList field_975_h = new ArrayList(); + public MinecraftServer mcServer; + + public NetworkListenThread(MinecraftServer var1, InetAddress var2, int var3) throws IOException { + this.mcServer = var1; + this.field_979_d = new ServerSocket(var3, 0, var2); + this.field_979_d.setPerformancePreferences(0, 2, 1); + this.field_973_b = true; + this.field_978_e = new NetworkAcceptThread(this, "Listen thread", var1); + this.field_978_e.start(); + } + + public void func_4108_a(NetServerHandler var1) { + this.field_975_h.add(var1); + } + + private void func_717_a(NetLoginHandler var1) { + if(var1 == null) { + throw new IllegalArgumentException("Got null pendingconnection!"); + } else { + this.field_976_g.add(var1); + } + } + + public void func_715_a() { + int var1; + for(var1 = 0; var1 < this.field_976_g.size(); ++var1) { + NetLoginHandler var2 = (NetLoginHandler)this.field_976_g.get(var1); + + try { + var2.tryLogin(); + } catch (Exception var5) { + var2.kickUser("Internal server error"); + logger.log(Level.WARNING, "Failed to handle packet: " + var5, var5); + } + + if(var2.finishedProcessing) { + this.field_976_g.remove(var1--); + } + } + + for(var1 = 0; var1 < this.field_975_h.size(); ++var1) { + NetServerHandler var6 = (NetServerHandler)this.field_975_h.get(var1); + + try { + var6.func_42_a(); + } catch (Exception var4) { + logger.log(Level.WARNING, "Failed to handle packet: " + var4, var4); + var6.func_43_c("Internal server error"); + } + + if(var6.field_18_c) { + this.field_975_h.remove(var1--); + } + } + + } + + static ServerSocket func_713_a(NetworkListenThread var0) { + return var0.field_979_d; + } + + static int func_712_b(NetworkListenThread var0) { + return var0.field_977_f++; + } + + static void func_716_a(NetworkListenThread var0, NetLoginHandler var1) { + var0.func_717_a(var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkManager.java b/minecraft_server/src/net/minecraft/src/NetworkManager.java new file mode 100644 index 0000000..c58d939 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkManager.java @@ -0,0 +1,219 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.net.SocketAddress; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class NetworkManager { + public static final Object threadSyncObject = new Object(); + public static int numReadThreads; + public static int numWriteThreads; + private Object sendQueueLock = new Object(); + private Socket networkSocket; + private final SocketAddress field_12032_f; + private DataInputStream socketInputStream; + private DataOutputStream socketOutputStream; + private boolean isRunning = true; + private List readPackets = Collections.synchronizedList(new ArrayList()); + private List dataPackets = Collections.synchronizedList(new ArrayList()); + private List chunkDataPackets = Collections.synchronizedList(new ArrayList()); + private NetHandler netHandler; + private boolean isServerTerminating = false; + private Thread writeThread; + private Thread readThread; + private boolean isTerminating = false; + private String terminationReason = ""; + private int timeSinceLastRead = 0; + private int sendQueueByteLength = 0; + private int chunkDataSendCounter = 0; + + public NetworkManager(Socket var1, String var2, NetHandler var3) throws IOException { + this.networkSocket = var1; + this.field_12032_f = var1.getRemoteSocketAddress(); + this.netHandler = var3; + var1.setTrafficClass(24); + this.socketInputStream = new DataInputStream(var1.getInputStream()); + this.socketOutputStream = new DataOutputStream(var1.getOutputStream()); + this.readThread = new NetworkReaderThread(this, var2 + " read thread"); + this.writeThread = new NetworkWriterThread(this, var2 + " write thread"); + this.readThread.start(); + this.writeThread.start(); + } + + public void setNetHandler(NetHandler var1) { + this.netHandler = var1; + } + + public void addToSendQueue(Packet var1) { + if(!this.isServerTerminating) { + Object var2 = this.sendQueueLock; + synchronized(var2) { + this.sendQueueByteLength += var1.getPacketSize() + 1; + if(var1.isChunkDataPacket) { + this.chunkDataPackets.add(var1); + } else { + this.dataPackets.add(var1); + } + + } + } + } + + private void sendPacket() { + try { + boolean var1 = true; + Packet var2; + Object var3; + if(!this.dataPackets.isEmpty()) { + var1 = false; + var3 = this.sendQueueLock; + synchronized(var3) { + var2 = (Packet)this.dataPackets.remove(0); + this.sendQueueByteLength -= var2.getPacketSize() + 1; + } + + Packet.writePacket(var2, this.socketOutputStream); + } + + if((var1 || this.chunkDataSendCounter-- <= 0) && !this.chunkDataPackets.isEmpty()) { + var1 = false; + var3 = this.sendQueueLock; + synchronized(var3) { + var2 = (Packet)this.chunkDataPackets.remove(0); + this.sendQueueByteLength -= var2.getPacketSize() + 1; + } + + Packet.writePacket(var2, this.socketOutputStream); + this.chunkDataSendCounter = 50; + } + + if(var1) { + Thread.sleep(10L); + } + } catch (InterruptedException var8) { + } catch (Exception var9) { + if(!this.isTerminating) { + this.onNetworkError(var9); + } + } + + } + + private void readPacket() { + try { + Packet var1 = Packet.readPacket(this.socketInputStream); + if(var1 != null) { + this.readPackets.add(var1); + } else { + this.networkShutdown("End of stream"); + } + } catch (Exception var2) { + if(!this.isTerminating) { + this.onNetworkError(var2); + } + } + + } + + private void onNetworkError(Exception var1) { + var1.printStackTrace(); + this.networkShutdown("Internal exception: " + var1.toString()); + } + + public void networkShutdown(String var1) { + if(this.isRunning) { + this.isTerminating = true; + this.terminationReason = var1; + (new NetworkMasterThread(this)).start(); + this.isRunning = false; + + try { + this.socketInputStream.close(); + this.socketInputStream = null; + } catch (Throwable var5) { + } + + try { + this.socketOutputStream.close(); + this.socketOutputStream = null; + } catch (Throwable var4) { + } + + try { + this.networkSocket.close(); + this.networkSocket = null; + } catch (Throwable var3) { + } + + } + } + + public void processReadPackets() { + if(this.sendQueueByteLength > 1048576) { + this.networkShutdown("Send buffer overflow"); + } + + if(this.readPackets.isEmpty()) { + if(this.timeSinceLastRead++ == 1200) { + this.networkShutdown("Timed out"); + } + } else { + this.timeSinceLastRead = 0; + } + + int var1 = 100; + + while(!this.readPackets.isEmpty() && var1-- >= 0) { + Packet var2 = (Packet)this.readPackets.remove(0); + var2.processPacket(this.netHandler); + } + + if(this.isTerminating && this.readPackets.isEmpty()) { + this.netHandler.handleErrorMessage(this.terminationReason); + } + + } + + public SocketAddress getRemoteAddress() { + return this.field_12032_f; + } + + public void serverShutdown() { + this.isServerTerminating = true; + this.readThread.interrupt(); + (new ThreadMonitorConnection(this)).start(); + } + + public int getNumChunkDataPackets() { + return this.chunkDataPackets.size(); + } + + static boolean isRunning(NetworkManager var0) { + return var0.isRunning; + } + + static boolean isServerTerminating(NetworkManager var0) { + return var0.isServerTerminating; + } + + static void readNetworkPacket(NetworkManager var0) { + var0.readPacket(); + } + + static void sendNetworkPacket(NetworkManager var0) { + var0.sendPacket(); + } + + static Thread getReadThread(NetworkManager var0) { + return var0.readThread; + } + + static Thread getWriteThread(NetworkManager var0) { + return var0.writeThread; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkMasterThread.java b/minecraft_server/src/net/minecraft/src/NetworkMasterThread.java new file mode 100644 index 0000000..bd6085c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkMasterThread.java @@ -0,0 +1,31 @@ +package net.minecraft.src; + +class NetworkMasterThread extends Thread { + final NetworkManager netManager; + + NetworkMasterThread(NetworkManager var1) { + this.netManager = var1; + } + + public void run() { + try { + Thread.sleep(5000L); + if(NetworkManager.getReadThread(this.netManager).isAlive()) { + try { + NetworkManager.getReadThread(this.netManager).stop(); + } catch (Throwable var3) { + } + } + + if(NetworkManager.getWriteThread(this.netManager).isAlive()) { + try { + NetworkManager.getWriteThread(this.netManager).stop(); + } catch (Throwable var2) { + } + } + } catch (InterruptedException var4) { + var4.printStackTrace(); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkReaderThread.java b/minecraft_server/src/net/minecraft/src/NetworkReaderThread.java new file mode 100644 index 0000000..c8e5682 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkReaderThread.java @@ -0,0 +1,49 @@ +package net.minecraft.src; + +class NetworkReaderThread extends Thread { + final NetworkManager netManager; + + NetworkReaderThread(NetworkManager var1, String var2) { + super(var2); + this.netManager = var1; + } + + public void run() { + Object var1 = NetworkManager.threadSyncObject; + synchronized(var1) { + ++NetworkManager.numReadThreads; + } + + while(true) { + boolean var11 = false; + + try { + var11 = true; + if(NetworkManager.isRunning(this.netManager)) { + if(!NetworkManager.isServerTerminating(this.netManager)) { + NetworkManager.readNetworkPacket(this.netManager); + continue; + } + + var11 = false; + break; + } + + var11 = false; + break; + } finally { + if(var11) { + Object var5 = NetworkManager.threadSyncObject; + synchronized(var5) { + --NetworkManager.numReadThreads; + } + } + } + } + + var1 = NetworkManager.threadSyncObject; + synchronized(var1) { + --NetworkManager.numReadThreads; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/NetworkWriterThread.java b/minecraft_server/src/net/minecraft/src/NetworkWriterThread.java new file mode 100644 index 0000000..8357e0b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NetworkWriterThread.java @@ -0,0 +1,43 @@ +package net.minecraft.src; + +class NetworkWriterThread extends Thread { + final NetworkManager netManager; + + NetworkWriterThread(NetworkManager var1, String var2) { + super(var2); + this.netManager = var1; + } + + public void run() { + Object var1 = NetworkManager.threadSyncObject; + synchronized(var1) { + ++NetworkManager.numWriteThreads; + } + + while(true) { + boolean var11 = false; + + try { + var11 = true; + if(!NetworkManager.isRunning(this.netManager)) { + var11 = false; + break; + } + + NetworkManager.sendNetworkPacket(this.netManager); + } finally { + if(var11) { + Object var5 = NetworkManager.threadSyncObject; + synchronized(var5) { + --NetworkManager.numWriteThreads; + } + } + } + } + + var1 = NetworkManager.threadSyncObject; + synchronized(var1) { + --NetworkManager.numWriteThreads; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/NextTickListEntry.java b/minecraft_server/src/net/minecraft/src/NextTickListEntry.java new file mode 100644 index 0000000..7e28c79 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NextTickListEntry.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class NextTickListEntry implements Comparable { + private static long nextTickEntryID = 0L; + public int xCoord; + public int yCoord; + public int zCoord; + public int blockID; + public long scheduledTime; + private long tickEntryID = nextTickEntryID++; + + public NextTickListEntry(int var1, int var2, int var3, int var4) { + this.xCoord = var1; + this.yCoord = var2; + this.zCoord = var3; + this.blockID = var4; + } + + public boolean equals(Object var1) { + if(!(var1 instanceof NextTickListEntry)) { + return false; + } else { + NextTickListEntry var2 = (NextTickListEntry)var1; + return this.xCoord == var2.xCoord && this.yCoord == var2.yCoord && this.zCoord == var2.zCoord && this.blockID == var2.blockID; + } + } + + public int hashCode() { + return (this.xCoord * 128 * 1024 + this.zCoord * 128 + this.yCoord) * 256 + this.blockID; + } + + public NextTickListEntry setScheduledTime(long var1) { + this.scheduledTime = var1; + return this; + } + + public int a(NextTickListEntry var1) { + return this.scheduledTime < var1.scheduledTime ? -1 : (this.scheduledTime > var1.scheduledTime ? 1 : (this.tickEntryID < var1.tickEntryID ? -1 : (this.tickEntryID > var1.tickEntryID ? 1 : 0))); + } + + public int compareTo(Object var1) { + return this.a((NextTickListEntry)var1); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NibbleArray.java b/minecraft_server/src/net/minecraft/src/NibbleArray.java new file mode 100644 index 0000000..6966128 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NibbleArray.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +public class NibbleArray { + public final byte[] data; + + public NibbleArray(int var1) { + this.data = new byte[var1 >> 1]; + } + + public NibbleArray(byte[] var1) { + this.data = var1; + } + + public int getNibble(int var1, int var2, int var3) { + int var4 = var1 << 11 | var3 << 7 | var2; + int var5 = var4 >> 1; + int var6 = var4 & 1; + return var6 == 0 ? this.data[var5] & 15 : this.data[var5] >> 4 & 15; + } + + public void setNibble(int var1, int var2, int var3, int var4) { + int var5 = var1 << 11 | var3 << 7 | var2; + int var6 = var5 >> 1; + int var7 = var5 & 1; + if(var7 == 0) { + this.data[var6] = (byte)(this.data[var6] & 240 | var4 & 15); + } else { + this.data[var6] = (byte)(this.data[var6] & 15 | (var4 & 15) << 4); + } + + } + + public boolean isValid() { + return this.data != null; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NoiseGenerator.java b/minecraft_server/src/net/minecraft/src/NoiseGenerator.java new file mode 100644 index 0000000..bb08431 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NoiseGenerator.java @@ -0,0 +1,4 @@ +package net.minecraft.src; + +public abstract class NoiseGenerator { +} diff --git a/minecraft_server/src/net/minecraft/src/NoiseGenerator2.java b/minecraft_server/src/net/minecraft/src/NoiseGenerator2.java new file mode 100644 index 0000000..cd64939 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NoiseGenerator2.java @@ -0,0 +1,114 @@ +package net.minecraft.src; + +import java.util.Random; + +public class NoiseGenerator2 { + private static int[][] field_4317_d = new int[][]{{1, 1, 0}, {-1, 1, 0}, {1, -1, 0}, {-1, -1, 0}, {1, 0, 1}, {-1, 0, 1}, {1, 0, -1}, {-1, 0, -1}, {0, 1, 1}, {0, -1, 1}, {0, 1, -1}, {0, -1, -1}}; + private int[] field_4316_e; + public double field_4313_a; + public double field_4312_b; + public double field_4318_c; + private static final double field_4315_f = 0.5D * (Math.sqrt(3.0D) - 1.0D); + private static final double field_4314_g = (3.0D - Math.sqrt(3.0D)) / 6.0D; + + public NoiseGenerator2() { + this(new Random()); + } + + public NoiseGenerator2(Random var1) { + this.field_4316_e = new int[512]; + this.field_4313_a = var1.nextDouble() * 256.0D; + this.field_4312_b = var1.nextDouble() * 256.0D; + this.field_4318_c = var1.nextDouble() * 256.0D; + + int var2; + for(var2 = 0; var2 < 256; this.field_4316_e[var2] = var2++) { + } + + for(var2 = 0; var2 < 256; ++var2) { + int var3 = var1.nextInt(256 - var2) + var2; + int var4 = this.field_4316_e[var2]; + this.field_4316_e[var2] = this.field_4316_e[var3]; + this.field_4316_e[var3] = var4; + this.field_4316_e[var2 + 256] = this.field_4316_e[var2]; + } + + } + + private static int func_4113_a(double var0) { + return var0 > 0.0D ? (int)var0 : (int)var0 - 1; + } + + private static double func_4114_a(int[] var0, double var1, double var3) { + return (double)var0[0] * var1 + (double)var0[1] * var3; + } + + public void func_4115_a(double[] var1, double var2, double var4, int var6, int var7, double var8, double var10, double var12) { + int var14 = 0; + + for(int var15 = 0; var15 < var6; ++var15) { + double var16 = (var2 + (double)var15) * var8 + this.field_4313_a; + + for(int var18 = 0; var18 < var7; ++var18) { + double var19 = (var4 + (double)var18) * var10 + this.field_4312_b; + double var27 = (var16 + var19) * field_4315_f; + int var29 = func_4113_a(var16 + var27); + int var30 = func_4113_a(var19 + var27); + double var31 = (double)(var29 + var30) * field_4314_g; + double var33 = (double)var29 - var31; + double var35 = (double)var30 - var31; + double var37 = var16 - var33; + double var39 = var19 - var35; + byte var41; + byte var42; + if(var37 > var39) { + var41 = 1; + var42 = 0; + } else { + var41 = 0; + var42 = 1; + } + + double var43 = var37 - (double)var41 + field_4314_g; + double var45 = var39 - (double)var42 + field_4314_g; + double var47 = var37 - 1.0D + 2.0D * field_4314_g; + double var49 = var39 - 1.0D + 2.0D * field_4314_g; + int var51 = var29 & 255; + int var52 = var30 & 255; + int var53 = this.field_4316_e[var51 + this.field_4316_e[var52]] % 12; + int var54 = this.field_4316_e[var51 + var41 + this.field_4316_e[var52 + var42]] % 12; + int var55 = this.field_4316_e[var51 + 1 + this.field_4316_e[var52 + 1]] % 12; + double var56 = 0.5D - var37 * var37 - var39 * var39; + double var21; + if(var56 < 0.0D) { + var21 = 0.0D; + } else { + var56 *= var56; + var21 = var56 * var56 * func_4114_a(field_4317_d[var53], var37, var39); + } + + double var58 = 0.5D - var43 * var43 - var45 * var45; + double var23; + if(var58 < 0.0D) { + var23 = 0.0D; + } else { + var58 *= var58; + var23 = var58 * var58 * func_4114_a(field_4317_d[var54], var43, var45); + } + + double var60 = 0.5D - var47 * var47 - var49 * var49; + double var25; + if(var60 < 0.0D) { + var25 = 0.0D; + } else { + var60 *= var60; + var25 = var60 * var60 * func_4114_a(field_4317_d[var55], var47, var49); + } + + int var10001 = var14++; + var1[var10001] += 70.0D * (var21 + var23 + var25) * var12; + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves.java b/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves.java new file mode 100644 index 0000000..46fc274 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves.java @@ -0,0 +1,53 @@ +package net.minecraft.src; + +import java.util.Random; + +public class NoiseGeneratorOctaves extends NoiseGenerator { + private NoiseGeneratorPerlin[] field_939_a; + private int field_938_b; + + public NoiseGeneratorOctaves(Random var1, int var2) { + this.field_938_b = var2; + this.field_939_a = new NoiseGeneratorPerlin[var2]; + + for(int var3 = 0; var3 < var2; ++var3) { + this.field_939_a[var3] = new NoiseGeneratorPerlin(var1); + } + + } + + public double func_647_a(double var1, double var3) { + double var5 = 0.0D; + double var7 = 1.0D; + + for(int var9 = 0; var9 < this.field_938_b; ++var9) { + var5 += this.field_939_a[var9].func_642_a(var1 * var7, var3 * var7) / var7; + var7 /= 2.0D; + } + + return var5; + } + + public double[] func_648_a(double[] var1, double var2, double var4, double var6, int var8, int var9, int var10, double var11, double var13, double var15) { + if(var1 == null) { + var1 = new double[var8 * var9 * var10]; + } else { + for(int var17 = 0; var17 < var1.length; ++var17) { + var1[var17] = 0.0D; + } + } + + double var20 = 1.0D; + + for(int var19 = 0; var19 < this.field_938_b; ++var19) { + this.field_939_a[var19].func_646_a(var1, var2, var4, var6, var8, var9, var10, var11 * var20, var13 * var20, var15 * var20, var20); + var20 /= 2.0D; + } + + return var1; + } + + public double[] func_4103_a(double[] var1, int var2, int var3, int var4, int var5, double var6, double var8, double var10) { + return this.func_648_a(var1, (double)var2, 10.0D, (double)var3, var4, 1, var5, var6, 1.0D, var8); + } +} diff --git a/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves2.java b/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves2.java new file mode 100644 index 0000000..c463198 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NoiseGeneratorOctaves2.java @@ -0,0 +1,45 @@ +package net.minecraft.src; + +import java.util.Random; + +public class NoiseGeneratorOctaves2 extends NoiseGenerator { + private NoiseGenerator2[] field_4308_a; + private int field_4307_b; + + public NoiseGeneratorOctaves2(Random var1, int var2) { + this.field_4307_b = var2; + this.field_4308_a = new NoiseGenerator2[var2]; + + for(int var3 = 0; var3 < var2; ++var3) { + this.field_4308_a[var3] = new NoiseGenerator2(var1); + } + + } + + public double[] func_4101_a(double[] var1, double var2, double var4, int var6, int var7, double var8, double var10, double var12) { + return this.func_4100_a(var1, var2, var4, var6, var7, var8, var10, var12, 0.5D); + } + + public double[] func_4100_a(double[] var1, double var2, double var4, int var6, int var7, double var8, double var10, double var12, double var14) { + var8 /= 1.5D; + var10 /= 1.5D; + if(var1 != null && var1.length >= var6 * var7) { + for(int var16 = 0; var16 < var1.length; ++var16) { + var1[var16] = 0.0D; + } + } else { + var1 = new double[var6 * var7]; + } + + double var21 = 1.0D; + double var18 = 1.0D; + + for(int var20 = 0; var20 < this.field_4307_b; ++var20) { + this.field_4308_a[var20].func_4115_a(var1, var2, var4, var6, var7, var8 * var18, var10 * var18, 0.55D / var21); + var18 *= var12; + var21 *= var14; + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/NoiseGeneratorPerlin.java b/minecraft_server/src/net/minecraft/src/NoiseGeneratorPerlin.java new file mode 100644 index 0000000..3047bf0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/NoiseGeneratorPerlin.java @@ -0,0 +1,221 @@ +package net.minecraft.src; + +import java.util.Random; + +public class NoiseGeneratorPerlin extends NoiseGenerator { + private int[] permutations; + public double xCoord; + public double yCoord; + public double zCoord; + + public NoiseGeneratorPerlin() { + this(new Random()); + } + + public NoiseGeneratorPerlin(Random var1) { + this.permutations = new int[512]; + this.xCoord = var1.nextDouble() * 256.0D; + this.yCoord = var1.nextDouble() * 256.0D; + this.zCoord = var1.nextDouble() * 256.0D; + + int var2; + for(var2 = 0; var2 < 256; this.permutations[var2] = var2++) { + } + + for(var2 = 0; var2 < 256; ++var2) { + int var3 = var1.nextInt(256 - var2) + var2; + int var4 = this.permutations[var2]; + this.permutations[var2] = this.permutations[var3]; + this.permutations[var3] = var4; + this.permutations[var2 + 256] = this.permutations[var2]; + } + + } + + public double generateNoise(double var1, double var3, double var5) { + double var7 = var1 + this.xCoord; + double var9 = var3 + this.yCoord; + double var11 = var5 + this.zCoord; + int var13 = (int)var7; + int var14 = (int)var9; + int var15 = (int)var11; + if(var7 < (double)var13) { + --var13; + } + + if(var9 < (double)var14) { + --var14; + } + + if(var11 < (double)var15) { + --var15; + } + + int var16 = var13 & 255; + int var17 = var14 & 255; + int var18 = var15 & 255; + var7 -= (double)var13; + var9 -= (double)var14; + var11 -= (double)var15; + double var19 = var7 * var7 * var7 * (var7 * (var7 * 6.0D - 15.0D) + 10.0D); + double var21 = var9 * var9 * var9 * (var9 * (var9 * 6.0D - 15.0D) + 10.0D); + double var23 = var11 * var11 * var11 * (var11 * (var11 * 6.0D - 15.0D) + 10.0D); + int var25 = this.permutations[var16] + var17; + int var26 = this.permutations[var25] + var18; + int var27 = this.permutations[var25 + 1] + var18; + int var28 = this.permutations[var16 + 1] + var17; + int var29 = this.permutations[var28] + var18; + int var30 = this.permutations[var28 + 1] + var18; + return this.lerp(var23, this.lerp(var21, this.lerp(var19, this.grad(this.permutations[var26], var7, var9, var11), this.grad(this.permutations[var29], var7 - 1.0D, var9, var11)), this.lerp(var19, this.grad(this.permutations[var27], var7, var9 - 1.0D, var11), this.grad(this.permutations[var30], var7 - 1.0D, var9 - 1.0D, var11))), this.lerp(var21, this.lerp(var19, this.grad(this.permutations[var26 + 1], var7, var9, var11 - 1.0D), this.grad(this.permutations[var29 + 1], var7 - 1.0D, var9, var11 - 1.0D)), this.lerp(var19, this.grad(this.permutations[var27 + 1], var7, var9 - 1.0D, var11 - 1.0D), this.grad(this.permutations[var30 + 1], var7 - 1.0D, var9 - 1.0D, var11 - 1.0D)))); + } + + public final double lerp(double var1, double var3, double var5) { + return var3 + var1 * (var5 - var3); + } + + public final double func_4102_a(int var1, double var2, double var4) { + int var6 = var1 & 15; + double var7 = (double)(1 - ((var6 & 8) >> 3)) * var2; + double var9 = var6 < 4 ? 0.0D : (var6 != 12 && var6 != 14 ? var4 : var2); + return ((var6 & 1) == 0 ? var7 : -var7) + ((var6 & 2) == 0 ? var9 : -var9); + } + + public final double grad(int var1, double var2, double var4, double var6) { + int var8 = var1 & 15; + double var9 = var8 < 8 ? var2 : var4; + double var11 = var8 < 4 ? var4 : (var8 != 12 && var8 != 14 ? var6 : var2); + return ((var8 & 1) == 0 ? var9 : -var9) + ((var8 & 2) == 0 ? var11 : -var11); + } + + public double func_642_a(double var1, double var3) { + return this.generateNoise(var1, var3, 0.0D); + } + + public void func_646_a(double[] var1, double var2, double var4, double var6, int var8, int var9, int var10, double var11, double var13, double var15, double var17) { + int var10001; + int var19; + int var22; + double var31; + double var35; + int var37; + double var38; + int var40; + int var41; + double var42; + int var75; + if(var9 == 1) { + boolean var64 = false; + boolean var65 = false; + boolean var21 = false; + boolean var68 = false; + double var70 = 0.0D; + double var73 = 0.0D; + var75 = 0; + double var77 = 1.0D / var17; + + for(int var30 = 0; var30 < var8; ++var30) { + var31 = (var2 + (double)var30) * var11 + this.xCoord; + int var78 = (int)var31; + if(var31 < (double)var78) { + --var78; + } + + int var34 = var78 & 255; + var31 -= (double)var78; + var35 = var31 * var31 * var31 * (var31 * (var31 * 6.0D - 15.0D) + 10.0D); + + for(var37 = 0; var37 < var10; ++var37) { + var38 = (var6 + (double)var37) * var15 + this.zCoord; + var40 = (int)var38; + if(var38 < (double)var40) { + --var40; + } + + var41 = var40 & 255; + var38 -= (double)var40; + var42 = var38 * var38 * var38 * (var38 * (var38 * 6.0D - 15.0D) + 10.0D); + var19 = this.permutations[var34] + 0; + int var66 = this.permutations[var19] + var41; + int var67 = this.permutations[var34 + 1] + 0; + var22 = this.permutations[var67] + var41; + var70 = this.lerp(var35, this.func_4102_a(this.permutations[var66], var31, var38), this.grad(this.permutations[var22], var31 - 1.0D, 0.0D, var38)); + var73 = this.lerp(var35, this.grad(this.permutations[var66 + 1], var31, 0.0D, var38 - 1.0D), this.grad(this.permutations[var22 + 1], var31 - 1.0D, 0.0D, var38 - 1.0D)); + double var79 = this.lerp(var42, var70, var73); + var10001 = var75++; + var1[var10001] += var79 * var77; + } + } + + } else { + var19 = 0; + double var20 = 1.0D / var17; + var22 = -1; + boolean var23 = false; + boolean var24 = false; + boolean var25 = false; + boolean var26 = false; + boolean var27 = false; + boolean var28 = false; + double var29 = 0.0D; + var31 = 0.0D; + double var33 = 0.0D; + var35 = 0.0D; + + for(var37 = 0; var37 < var8; ++var37) { + var38 = (var2 + (double)var37) * var11 + this.xCoord; + var40 = (int)var38; + if(var38 < (double)var40) { + --var40; + } + + var41 = var40 & 255; + var38 -= (double)var40; + var42 = var38 * var38 * var38 * (var38 * (var38 * 6.0D - 15.0D) + 10.0D); + + for(int var44 = 0; var44 < var10; ++var44) { + double var45 = (var6 + (double)var44) * var15 + this.zCoord; + int var47 = (int)var45; + if(var45 < (double)var47) { + --var47; + } + + int var48 = var47 & 255; + var45 -= (double)var47; + double var49 = var45 * var45 * var45 * (var45 * (var45 * 6.0D - 15.0D) + 10.0D); + + for(int var51 = 0; var51 < var9; ++var51) { + double var52 = (var4 + (double)var51) * var13 + this.yCoord; + int var54 = (int)var52; + if(var52 < (double)var54) { + --var54; + } + + int var55 = var54 & 255; + var52 -= (double)var54; + double var56 = var52 * var52 * var52 * (var52 * (var52 * 6.0D - 15.0D) + 10.0D); + if(var51 == 0 || var55 != var22) { + var22 = var55; + int var69 = this.permutations[var41] + var55; + int var71 = this.permutations[var69] + var48; + int var72 = this.permutations[var69 + 1] + var48; + int var74 = this.permutations[var41 + 1] + var55; + var75 = this.permutations[var74] + var48; + int var76 = this.permutations[var74 + 1] + var48; + var29 = this.lerp(var42, this.grad(this.permutations[var71], var38, var52, var45), this.grad(this.permutations[var75], var38 - 1.0D, var52, var45)); + var31 = this.lerp(var42, this.grad(this.permutations[var72], var38, var52 - 1.0D, var45), this.grad(this.permutations[var76], var38 - 1.0D, var52 - 1.0D, var45)); + var33 = this.lerp(var42, this.grad(this.permutations[var71 + 1], var38, var52, var45 - 1.0D), this.grad(this.permutations[var75 + 1], var38 - 1.0D, var52, var45 - 1.0D)); + var35 = this.lerp(var42, this.grad(this.permutations[var72 + 1], var38, var52 - 1.0D, var45 - 1.0D), this.grad(this.permutations[var76 + 1], var38 - 1.0D, var52 - 1.0D, var45 - 1.0D)); + } + + double var58 = this.lerp(var56, var29, var31); + double var60 = this.lerp(var56, var33, var35); + double var62 = this.lerp(var49, var58, var60); + var10001 = var19++; + var1[var10001] += var62 * var20; + } + } + } + + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet.java b/minecraft_server/src/net/minecraft/src/Packet.java new file mode 100644 index 0000000..eb9132b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet.java @@ -0,0 +1,110 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public abstract class Packet { + private static Map packetIdToClassMap = new HashMap(); + private static Map packetClassToIdMap = new HashMap(); + public boolean isChunkDataPacket = false; + + static void addIdClassMapping(int var0, Class var1) { + if(packetIdToClassMap.containsKey(Integer.valueOf(var0))) { + throw new IllegalArgumentException("Duplicate packet id:" + var0); + } else if(packetClassToIdMap.containsKey(var1)) { + throw new IllegalArgumentException("Duplicate packet class:" + var1); + } else { + packetIdToClassMap.put(Integer.valueOf(var0), var1); + packetClassToIdMap.put(var1, Integer.valueOf(var0)); + } + } + + public static Packet getNewPacket(int var0) { + try { + Class var1 = (Class)packetIdToClassMap.get(Integer.valueOf(var0)); + return var1 == null ? null : (Packet)var1.newInstance(); + } catch (Exception var2) { + var2.printStackTrace(); + System.out.println("Skipping packet with id " + var0); + return null; + } + } + + public final int getPacketId() { + return ((Integer)packetClassToIdMap.get(this.getClass())).intValue(); + } + + public static Packet readPacket(DataInputStream var0) throws IOException { + int var1 = var0.read(); + if(var1 == -1) { + return null; + } else { + Packet var2 = getNewPacket(var1); + if(var2 == null) { + throw new IOException("Bad packet id " + var1); + } else { + var2.readPacketData(var0); + return var2; + } + } + } + + public static void writePacket(Packet var0, DataOutputStream var1) throws IOException { + var1.write(var0.getPacketId()); + var0.writePacketData(var1); + } + + public abstract void readPacketData(DataInputStream var1) throws IOException; + + public abstract void writePacketData(DataOutputStream var1) throws IOException; + + public abstract void processPacket(NetHandler var1); + + public abstract int getPacketSize(); + + static { + addIdClassMapping(0, Packet0KeepAlive.class); + addIdClassMapping(1, Packet1Login.class); + addIdClassMapping(2, Packet2Handshake.class); + addIdClassMapping(3, Packet3Chat.class); + addIdClassMapping(4, Packet4UpdateTime.class); + addIdClassMapping(5, Packet5PlayerInventory.class); + addIdClassMapping(6, Packet6SpawnPosition.class); + addIdClassMapping(7, Packet7.class); + addIdClassMapping(8, Packet8.class); + addIdClassMapping(9, Packet9.class); + addIdClassMapping(10, Packet10Flying.class); + addIdClassMapping(11, Packet11PlayerPosition.class); + addIdClassMapping(12, Packet12PlayerLook.class); + addIdClassMapping(13, Packet13PlayerLookMove.class); + addIdClassMapping(14, Packet14BlockDig.class); + addIdClassMapping(15, Packet15Place.class); + addIdClassMapping(16, Packet16BlockItemSwitch.class); + addIdClassMapping(17, Packet17AddToInventory.class); + addIdClassMapping(18, Packet18ArmAnimation.class); + addIdClassMapping(20, Packet20NamedEntitySpawn.class); + addIdClassMapping(21, Packet21PickupSpawn.class); + addIdClassMapping(22, Packet22Collect.class); + addIdClassMapping(23, Packet23VehicleSpawn.class); + addIdClassMapping(24, Packet24MobSpawn.class); + addIdClassMapping(28, Packet28.class); + addIdClassMapping(29, Packet29DestroyEntity.class); + addIdClassMapping(30, Packet30Entity.class); + addIdClassMapping(31, Packet31RelEntityMove.class); + addIdClassMapping(32, Packet32EntityLook.class); + addIdClassMapping(33, Packet33RelEntityMoveLook.class); + addIdClassMapping(34, Packet34EntityTeleport.class); + addIdClassMapping(38, Packet38.class); + addIdClassMapping(39, Packet39.class); + addIdClassMapping(50, Packet50PreChunk.class); + addIdClassMapping(51, Packet51MapChunk.class); + addIdClassMapping(52, Packet52MultiBlockChange.class); + addIdClassMapping(53, Packet53BlockChange.class); + addIdClassMapping(59, Packet59ComplexEntity.class); + addIdClassMapping(60, Packet60.class); + addIdClassMapping(255, Packet255KickDisconnect.class); + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet0KeepAlive.java b/minecraft_server/src/net/minecraft/src/Packet0KeepAlive.java new file mode 100644 index 0000000..08bfb61 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet0KeepAlive.java @@ -0,0 +1,20 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet0KeepAlive extends Packet { + public void processPacket(NetHandler var1) { + } + + public void readPacketData(DataInputStream var1) throws IOException { + } + + public void writePacketData(DataOutputStream var1) throws IOException { + } + + public int getPacketSize() { + return 0; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet10Flying.java b/minecraft_server/src/net/minecraft/src/Packet10Flying.java new file mode 100644 index 0000000..373c931 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet10Flying.java @@ -0,0 +1,33 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet10Flying extends Packet { + public double xPosition; + public double yPosition; + public double zPosition; + public double stance; + public float yaw; + public float pitch; + public boolean onGround; + public boolean moving; + public boolean rotating; + + public void processPacket(NetHandler var1) { + var1.handleFlying(this); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.onGround = var1.read() != 0; + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.write(this.onGround ? 1 : 0); + } + + public int getPacketSize() { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet11PlayerPosition.java b/minecraft_server/src/net/minecraft/src/Packet11PlayerPosition.java new file mode 100644 index 0000000..cff453c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet11PlayerPosition.java @@ -0,0 +1,31 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet11PlayerPosition extends Packet10Flying { + public Packet11PlayerPosition() { + this.moving = true; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readDouble(); + this.yPosition = var1.readDouble(); + this.stance = var1.readDouble(); + this.zPosition = var1.readDouble(); + super.readPacketData(var1); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeDouble(this.xPosition); + var1.writeDouble(this.yPosition); + var1.writeDouble(this.stance); + var1.writeDouble(this.zPosition); + super.writePacketData(var1); + } + + public int getPacketSize() { + return 33; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet12PlayerLook.java b/minecraft_server/src/net/minecraft/src/Packet12PlayerLook.java new file mode 100644 index 0000000..5a2fe36 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet12PlayerLook.java @@ -0,0 +1,27 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet12PlayerLook extends Packet10Flying { + public Packet12PlayerLook() { + this.rotating = true; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.yaw = var1.readFloat(); + this.pitch = var1.readFloat(); + super.readPacketData(var1); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeFloat(this.yaw); + var1.writeFloat(this.pitch); + super.writePacketData(var1); + } + + public int getPacketSize() { + return 9; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet13PlayerLookMove.java b/minecraft_server/src/net/minecraft/src/Packet13PlayerLookMove.java new file mode 100644 index 0000000..db7001e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet13PlayerLookMove.java @@ -0,0 +1,48 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet13PlayerLookMove extends Packet10Flying { + public Packet13PlayerLookMove() { + this.rotating = true; + this.moving = true; + } + + public Packet13PlayerLookMove(double var1, double var3, double var5, double var7, float var9, float var10, boolean var11) { + this.xPosition = var1; + this.yPosition = var3; + this.stance = var5; + this.zPosition = var7; + this.yaw = var9; + this.pitch = var10; + this.onGround = var11; + this.rotating = true; + this.moving = true; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readDouble(); + this.yPosition = var1.readDouble(); + this.stance = var1.readDouble(); + this.zPosition = var1.readDouble(); + this.yaw = var1.readFloat(); + this.pitch = var1.readFloat(); + super.readPacketData(var1); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeDouble(this.xPosition); + var1.writeDouble(this.yPosition); + var1.writeDouble(this.stance); + var1.writeDouble(this.zPosition); + var1.writeFloat(this.yaw); + var1.writeFloat(this.pitch); + super.writePacketData(var1); + } + + public int getPacketSize() { + return 41; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet14BlockDig.java b/minecraft_server/src/net/minecraft/src/Packet14BlockDig.java new file mode 100644 index 0000000..446c68f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet14BlockDig.java @@ -0,0 +1,37 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet14BlockDig extends Packet { + public int xPosition; + public int yPosition; + public int zPosition; + public int face; + public int status; + + public void readPacketData(DataInputStream var1) throws IOException { + this.status = var1.read(); + this.xPosition = var1.readInt(); + this.yPosition = var1.read(); + this.zPosition = var1.readInt(); + this.face = var1.read(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.write(this.status); + var1.writeInt(this.xPosition); + var1.write(this.yPosition); + var1.writeInt(this.zPosition); + var1.write(this.face); + } + + public void processPacket(NetHandler var1) { + var1.handleBlockDig(this); + } + + public int getPacketSize() { + return 11; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet15Place.java b/minecraft_server/src/net/minecraft/src/Packet15Place.java new file mode 100644 index 0000000..e73efd2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet15Place.java @@ -0,0 +1,37 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet15Place extends Packet { + public int id; + public int xPosition; + public int yPosition; + public int zPosition; + public int direction; + + public void readPacketData(DataInputStream var1) throws IOException { + this.id = var1.readShort(); + this.xPosition = var1.readInt(); + this.yPosition = var1.read(); + this.zPosition = var1.readInt(); + this.direction = var1.read(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeShort(this.id); + var1.writeInt(this.xPosition); + var1.write(this.yPosition); + var1.writeInt(this.zPosition); + var1.write(this.direction); + } + + public void processPacket(NetHandler var1) { + var1.handlePlace(this); + } + + public int getPacketSize() { + return 12; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet16BlockItemSwitch.java b/minecraft_server/src/net/minecraft/src/Packet16BlockItemSwitch.java new file mode 100644 index 0000000..c89c716 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet16BlockItemSwitch.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet16BlockItemSwitch extends Packet { + public int unused; + public int id; + + public Packet16BlockItemSwitch() { + } + + public Packet16BlockItemSwitch(int var1, int var2) { + this.unused = var1; + this.id = var2; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.unused = var1.readInt(); + this.id = var1.readShort(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.unused); + var1.writeShort(this.id); + } + + public void processPacket(NetHandler var1) { + var1.handleBlockItemSwitch(this); + } + + public int getPacketSize() { + return 6; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet17AddToInventory.java b/minecraft_server/src/net/minecraft/src/Packet17AddToInventory.java new file mode 100644 index 0000000..5ad5b45 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet17AddToInventory.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet17AddToInventory extends Packet { + public int id; + public int count; + public int durability; + + public Packet17AddToInventory() { + } + + public Packet17AddToInventory(ItemStack var1, int var2) { + this.id = var1.itemID; + this.count = var2; + this.durability = var1.itemDamage; + if(var2 == 0) { + boolean var3 = true; + } + + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.id = var1.readShort(); + this.count = var1.readByte(); + this.durability = var1.readShort(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeShort(this.id); + var1.writeByte(this.count); + var1.writeShort(this.durability); + } + + public void processPacket(NetHandler var1) { + var1.handleAddToInventory(this); + } + + public int getPacketSize() { + return 5; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet18ArmAnimation.java b/minecraft_server/src/net/minecraft/src/Packet18ArmAnimation.java new file mode 100644 index 0000000..dbf7fbf --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet18ArmAnimation.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet18ArmAnimation extends Packet { + public int entityId; + public int animate; + + public Packet18ArmAnimation() { + } + + public Packet18ArmAnimation(Entity var1, int var2) { + this.entityId = var1.field_331_c; + this.animate = var2; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.animate = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeByte(this.animate); + } + + public void processPacket(NetHandler var1) { + var1.handleArmAnimation(this); + } + + public int getPacketSize() { + return 5; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet1Login.java b/minecraft_server/src/net/minecraft/src/Packet1Login.java new file mode 100644 index 0000000..d34017e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet1Login.java @@ -0,0 +1,48 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet1Login extends Packet { + public int protocolVersion; + public String username; + public String password; + public long field_4026_d; + public byte field_4025_e; + + public Packet1Login() { + } + + public Packet1Login(String var1, String var2, int var3, long var4, byte var6) { + this.username = var1; + this.password = var2; + this.protocolVersion = var3; + this.field_4026_d = var4; + this.field_4025_e = var6; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.protocolVersion = var1.readInt(); + this.username = var1.readUTF(); + this.password = var1.readUTF(); + this.field_4026_d = var1.readLong(); + this.field_4025_e = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.protocolVersion); + var1.writeUTF(this.username); + var1.writeUTF(this.password); + var1.writeLong(this.field_4026_d); + var1.writeByte(this.field_4025_e); + } + + public void processPacket(NetHandler var1) { + var1.handleLogin(this); + } + + public int getPacketSize() { + return 4 + this.username.length() + this.password.length() + 4 + 5; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet20NamedEntitySpawn.java b/minecraft_server/src/net/minecraft/src/Packet20NamedEntitySpawn.java new file mode 100644 index 0000000..95a4f1a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet20NamedEntitySpawn.java @@ -0,0 +1,61 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet20NamedEntitySpawn extends Packet { + public int entityId; + public String name; + public int xPosition; + public int yPosition; + public int zPosition; + public byte rotation; + public byte pitch; + public int currentItem; + + public Packet20NamedEntitySpawn() { + } + + public Packet20NamedEntitySpawn(EntityPlayer var1) { + this.entityId = var1.field_331_c; + this.name = var1.username; + this.xPosition = MathHelper.floor_double(var1.posX * 32.0D); + this.yPosition = MathHelper.floor_double(var1.posY * 32.0D); + this.zPosition = MathHelper.floor_double(var1.posZ * 32.0D); + this.rotation = (byte)((int)(var1.rotationYaw * 256.0F / 360.0F)); + this.pitch = (byte)((int)(var1.rotationPitch * 256.0F / 360.0F)); + ItemStack var2 = var1.inventory.getCurrentItem(); + this.currentItem = var2 == null ? 0 : var2.itemID; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.name = var1.readUTF(); + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + this.rotation = var1.readByte(); + this.pitch = var1.readByte(); + this.currentItem = var1.readShort(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeUTF(this.name); + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + var1.writeByte(this.rotation); + var1.writeByte(this.pitch); + var1.writeShort(this.currentItem); + } + + public void processPacket(NetHandler var1) { + var1.handleNamedEntitySpawn(this); + } + + public int getPacketSize() { + return 28; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet21PickupSpawn.java b/minecraft_server/src/net/minecraft/src/Packet21PickupSpawn.java new file mode 100644 index 0000000..06794e3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet21PickupSpawn.java @@ -0,0 +1,64 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet21PickupSpawn extends Packet { + public int entityId; + public int xPosition; + public int yPosition; + public int zPosition; + public byte rotation; + public byte pitch; + public byte roll; + public int itemId; + public int count; + + public Packet21PickupSpawn() { + } + + public Packet21PickupSpawn(EntityItem var1) { + this.entityId = var1.field_331_c; + this.itemId = var1.item.itemID; + this.count = var1.item.stackSize; + this.xPosition = MathHelper.floor_double(var1.posX * 32.0D); + this.yPosition = MathHelper.floor_double(var1.posY * 32.0D); + this.zPosition = MathHelper.floor_double(var1.posZ * 32.0D); + this.rotation = (byte)((int)(var1.motionX * 128.0D)); + this.pitch = (byte)((int)(var1.motionY * 128.0D)); + this.roll = (byte)((int)(var1.motionZ * 128.0D)); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.itemId = var1.readShort(); + this.count = var1.readByte(); + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + this.rotation = var1.readByte(); + this.pitch = var1.readByte(); + this.roll = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeShort(this.itemId); + var1.writeByte(this.count); + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + var1.writeByte(this.rotation); + var1.writeByte(this.pitch); + var1.writeByte(this.roll); + } + + public void processPacket(NetHandler var1) { + var1.handlePickupSpawn(this); + } + + public int getPacketSize() { + return 22; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet22Collect.java b/minecraft_server/src/net/minecraft/src/Packet22Collect.java new file mode 100644 index 0000000..f8b199f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet22Collect.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet22Collect extends Packet { + public int collectedEntityId; + public int collectorEntityId; + + public Packet22Collect() { + } + + public Packet22Collect(int var1, int var2) { + this.collectedEntityId = var1; + this.collectorEntityId = var2; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.collectedEntityId = var1.readInt(); + this.collectorEntityId = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.collectedEntityId); + var1.writeInt(this.collectorEntityId); + } + + public void processPacket(NetHandler var1) { + var1.handleCollect(this); + } + + public int getPacketSize() { + return 8; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet23VehicleSpawn.java b/minecraft_server/src/net/minecraft/src/Packet23VehicleSpawn.java new file mode 100644 index 0000000..f010810 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet23VehicleSpawn.java @@ -0,0 +1,48 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet23VehicleSpawn extends Packet { + public int entityId; + public int xPosition; + public int yPosition; + public int zPosition; + public int type; + + public Packet23VehicleSpawn() { + } + + public Packet23VehicleSpawn(Entity var1, int var2) { + this.entityId = var1.field_331_c; + this.xPosition = MathHelper.floor_double(var1.posX * 32.0D); + this.yPosition = MathHelper.floor_double(var1.posY * 32.0D); + this.zPosition = MathHelper.floor_double(var1.posZ * 32.0D); + this.type = var2; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.type = var1.readByte(); + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeByte(this.type); + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + } + + public void processPacket(NetHandler var1) { + var1.handleVehicleSpawn(this); + } + + public int getPacketSize() { + return 17; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet24MobSpawn.java b/minecraft_server/src/net/minecraft/src/Packet24MobSpawn.java new file mode 100644 index 0000000..6065d34 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet24MobSpawn.java @@ -0,0 +1,56 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet24MobSpawn extends Packet { + public int entityId; + public byte type; + public int xPosition; + public int yPosition; + public int zPosition; + public byte yaw; + public byte pitch; + + public Packet24MobSpawn() { + } + + public Packet24MobSpawn(EntityLiving var1) { + this.entityId = var1.field_331_c; + this.type = (byte)EntityList.func_565_a(var1); + this.xPosition = MathHelper.floor_double(var1.posX * 32.0D); + this.yPosition = MathHelper.floor_double(var1.posY * 32.0D); + this.zPosition = MathHelper.floor_double(var1.posZ * 32.0D); + this.yaw = (byte)((int)(var1.rotationYaw * 256.0F / 360.0F)); + this.pitch = (byte)((int)(var1.rotationPitch * 256.0F / 360.0F)); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.type = var1.readByte(); + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + this.yaw = var1.readByte(); + this.pitch = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeByte(this.type); + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + var1.writeByte(this.yaw); + var1.writeByte(this.pitch); + } + + public void processPacket(NetHandler var1) { + var1.handleMobSpawn(this); + } + + public int getPacketSize() { + return 19; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet255KickDisconnect.java b/minecraft_server/src/net/minecraft/src/Packet255KickDisconnect.java new file mode 100644 index 0000000..c662be3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet255KickDisconnect.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet255KickDisconnect extends Packet { + public String reason; + + public Packet255KickDisconnect() { + } + + public Packet255KickDisconnect(String var1) { + this.reason = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.reason = var1.readUTF(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeUTF(this.reason); + } + + public void processPacket(NetHandler var1) { + var1.handleKickDisconnect(this); + } + + public int getPacketSize() { + return this.reason.length(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet28.java b/minecraft_server/src/net/minecraft/src/Packet28.java new file mode 100644 index 0000000..f074b4a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet28.java @@ -0,0 +1,73 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet28 extends Packet { + public int field_6040_a; + public int field_6039_b; + public int field_6042_c; + public int field_6041_d; + + public Packet28() { + } + + public Packet28(Entity var1) { + this(var1.field_331_c, var1.motionX, var1.motionY, var1.motionZ); + } + + public Packet28(int var1, double var2, double var4, double var6) { + this.field_6040_a = var1; + double var8 = 3.9D; + if(var2 < -var8) { + var2 = -var8; + } + + if(var4 < -var8) { + var4 = -var8; + } + + if(var6 < -var8) { + var6 = -var8; + } + + if(var2 > var8) { + var2 = var8; + } + + if(var4 > var8) { + var4 = var8; + } + + if(var6 > var8) { + var6 = var8; + } + + this.field_6039_b = (int)(var2 * 8000.0D); + this.field_6042_c = (int)(var4 * 8000.0D); + this.field_6041_d = (int)(var6 * 8000.0D); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_6040_a = var1.readInt(); + this.field_6039_b = var1.readShort(); + this.field_6042_c = var1.readShort(); + this.field_6041_d = var1.readShort(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.field_6040_a); + var1.writeShort(this.field_6039_b); + var1.writeShort(this.field_6042_c); + var1.writeShort(this.field_6041_d); + } + + public void processPacket(NetHandler var1) { + var1.func_6002_a(this); + } + + public int getPacketSize() { + return 10; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet29DestroyEntity.java b/minecraft_server/src/net/minecraft/src/Packet29DestroyEntity.java new file mode 100644 index 0000000..9ab5b1c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet29DestroyEntity.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet29DestroyEntity extends Packet { + public int entityId; + + public Packet29DestroyEntity() { + } + + public Packet29DestroyEntity(int var1) { + this.entityId = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + } + + public void processPacket(NetHandler var1) { + var1.handleDestroyEntity(this); + } + + public int getPacketSize() { + return 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet2Handshake.java b/minecraft_server/src/net/minecraft/src/Packet2Handshake.java new file mode 100644 index 0000000..d621dca --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet2Handshake.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet2Handshake extends Packet { + public String username; + + public Packet2Handshake() { + } + + public Packet2Handshake(String var1) { + this.username = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.username = var1.readUTF(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeUTF(this.username); + } + + public void processPacket(NetHandler var1) { + var1.handleHandshake(this); + } + + public int getPacketSize() { + return 4 + this.username.length() + 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet30Entity.java b/minecraft_server/src/net/minecraft/src/Packet30Entity.java new file mode 100644 index 0000000..ca8c1c7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet30Entity.java @@ -0,0 +1,38 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet30Entity extends Packet { + public int entityId; + public byte xPosition; + public byte yPosition; + public byte zPosition; + public byte yaw; + public byte pitch; + public boolean rotating = false; + + public Packet30Entity() { + } + + public Packet30Entity(int var1) { + this.entityId = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + } + + public void processPacket(NetHandler var1) { + var1.handleEntity(this); + } + + public int getPacketSize() { + return 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet31RelEntityMove.java b/minecraft_server/src/net/minecraft/src/Packet31RelEntityMove.java new file mode 100644 index 0000000..cace71e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet31RelEntityMove.java @@ -0,0 +1,35 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet31RelEntityMove extends Packet30Entity { + public Packet31RelEntityMove() { + } + + public Packet31RelEntityMove(int var1, byte var2, byte var3, byte var4) { + super(var1); + this.xPosition = var2; + this.yPosition = var3; + this.zPosition = var4; + } + + public void readPacketData(DataInputStream var1) throws IOException { + super.readPacketData(var1); + this.xPosition = var1.readByte(); + this.yPosition = var1.readByte(); + this.zPosition = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + super.writePacketData(var1); + var1.writeByte(this.xPosition); + var1.writeByte(this.yPosition); + var1.writeByte(this.zPosition); + } + + public int getPacketSize() { + return 7; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet32EntityLook.java b/minecraft_server/src/net/minecraft/src/Packet32EntityLook.java new file mode 100644 index 0000000..d63043e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet32EntityLook.java @@ -0,0 +1,34 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet32EntityLook extends Packet30Entity { + public Packet32EntityLook() { + this.rotating = true; + } + + public Packet32EntityLook(int var1, byte var2, byte var3) { + super(var1); + this.yaw = var2; + this.pitch = var3; + this.rotating = true; + } + + public void readPacketData(DataInputStream var1) throws IOException { + super.readPacketData(var1); + this.yaw = var1.readByte(); + this.pitch = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + super.writePacketData(var1); + var1.writeByte(this.yaw); + var1.writeByte(this.pitch); + } + + public int getPacketSize() { + return 6; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet33RelEntityMoveLook.java b/minecraft_server/src/net/minecraft/src/Packet33RelEntityMoveLook.java new file mode 100644 index 0000000..5d821d1 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet33RelEntityMoveLook.java @@ -0,0 +1,43 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet33RelEntityMoveLook extends Packet30Entity { + public Packet33RelEntityMoveLook() { + this.rotating = true; + } + + public Packet33RelEntityMoveLook(int var1, byte var2, byte var3, byte var4, byte var5, byte var6) { + super(var1); + this.xPosition = var2; + this.yPosition = var3; + this.zPosition = var4; + this.yaw = var5; + this.pitch = var6; + this.rotating = true; + } + + public void readPacketData(DataInputStream var1) throws IOException { + super.readPacketData(var1); + this.xPosition = var1.readByte(); + this.yPosition = var1.readByte(); + this.zPosition = var1.readByte(); + this.yaw = var1.readByte(); + this.pitch = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + super.writePacketData(var1); + var1.writeByte(this.xPosition); + var1.writeByte(this.yPosition); + var1.writeByte(this.zPosition); + var1.writeByte(this.yaw); + var1.writeByte(this.pitch); + } + + public int getPacketSize() { + return 9; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet34EntityTeleport.java b/minecraft_server/src/net/minecraft/src/Packet34EntityTeleport.java new file mode 100644 index 0000000..7b0a325 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet34EntityTeleport.java @@ -0,0 +1,61 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet34EntityTeleport extends Packet { + public int entityId; + public int xPosition; + public int yPosition; + public int zPosition; + public byte yaw; + public byte pitch; + + public Packet34EntityTeleport() { + } + + public Packet34EntityTeleport(Entity var1) { + this.entityId = var1.field_331_c; + this.xPosition = MathHelper.floor_double(var1.posX * 32.0D); + this.yPosition = MathHelper.floor_double(var1.posY * 32.0D); + this.zPosition = MathHelper.floor_double(var1.posZ * 32.0D); + this.yaw = (byte)((int)(var1.rotationYaw * 256.0F / 360.0F)); + this.pitch = (byte)((int)(var1.rotationPitch * 256.0F / 360.0F)); + } + + public Packet34EntityTeleport(int var1, int var2, int var3, int var4, byte var5, byte var6) { + this.entityId = var1; + this.xPosition = var2; + this.yPosition = var3; + this.zPosition = var4; + this.yaw = var5; + this.pitch = var6; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.entityId = var1.readInt(); + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + this.yaw = (byte)var1.read(); + this.pitch = (byte)var1.read(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.entityId); + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + var1.write(this.yaw); + var1.write(this.pitch); + } + + public void processPacket(NetHandler var1) { + var1.handleEntityTeleport(this); + } + + public int getPacketSize() { + return 34; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet38.java b/minecraft_server/src/net/minecraft/src/Packet38.java new file mode 100644 index 0000000..bb35b9d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet38.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet38 extends Packet { + public int field_9016_a; + public byte field_9015_b; + + public Packet38() { + } + + public Packet38(int var1, byte var2) { + this.field_9016_a = var1; + this.field_9015_b = var2; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_9016_a = var1.readInt(); + this.field_9015_b = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.field_9016_a); + var1.writeByte(this.field_9015_b); + } + + public void processPacket(NetHandler var1) { + var1.func_9001_a(this); + } + + public int getPacketSize() { + return 5; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet39.java b/minecraft_server/src/net/minecraft/src/Packet39.java new file mode 100644 index 0000000..00f2f07 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet39.java @@ -0,0 +1,36 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet39 extends Packet { + public int field_6044_a; + public int field_6043_b; + + public Packet39() { + } + + public Packet39(Entity var1, Entity var2) { + this.field_6044_a = var1.field_331_c; + this.field_6043_b = var2 != null ? var2.field_331_c : -1; + } + + public int getPacketSize() { + return 8; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_6044_a = var1.readInt(); + this.field_6043_b = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.field_6044_a); + var1.writeInt(this.field_6043_b); + } + + public void processPacket(NetHandler var1) { + var1.func_6003_a(this); + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet3Chat.java b/minecraft_server/src/net/minecraft/src/Packet3Chat.java new file mode 100644 index 0000000..b622a04 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet3Chat.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet3Chat extends Packet { + public String message; + + public Packet3Chat() { + } + + public Packet3Chat(String var1) { + this.message = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.message = var1.readUTF(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeUTF(this.message); + } + + public void processPacket(NetHandler var1) { + var1.handleChat(this); + } + + public int getPacketSize() { + return this.message.length(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet4UpdateTime.java b/minecraft_server/src/net/minecraft/src/Packet4UpdateTime.java new file mode 100644 index 0000000..5bfffe3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet4UpdateTime.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet4UpdateTime extends Packet { + public long time; + + public Packet4UpdateTime() { + } + + public Packet4UpdateTime(long var1) { + this.time = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.time = var1.readLong(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeLong(this.time); + } + + public void processPacket(NetHandler var1) { + var1.handleUpdateTime(this); + } + + public int getPacketSize() { + return 8; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet50PreChunk.java b/minecraft_server/src/net/minecraft/src/Packet50PreChunk.java new file mode 100644 index 0000000..47ddb4f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet50PreChunk.java @@ -0,0 +1,41 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet50PreChunk extends Packet { + public int xPosition; + public int yPosition; + public boolean mode; + + public Packet50PreChunk() { + } + + public Packet50PreChunk(int var1, int var2, boolean var3) { + this.isChunkDataPacket = true; + this.xPosition = var1; + this.yPosition = var2; + this.mode = var3; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.mode = var1.read() != 0; + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.write(this.mode ? 1 : 0); + } + + public void processPacket(NetHandler var1) { + var1.handlePreChunk(this); + } + + public int getPacketSize() { + return 9; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet51MapChunk.java b/minecraft_server/src/net/minecraft/src/Packet51MapChunk.java new file mode 100644 index 0000000..41251a4 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet51MapChunk.java @@ -0,0 +1,88 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.zip.DataFormatException; +import java.util.zip.Deflater; +import java.util.zip.Inflater; + +public class Packet51MapChunk extends Packet { + public int xPosition; + public int yPosition; + public int zPosition; + public int xSize; + public int ySize; + public int zSize; + public byte[] chunk; + private int chunkSize; + + public Packet51MapChunk() { + this.isChunkDataPacket = true; + } + + public Packet51MapChunk(int var1, int var2, int var3, int var4, int var5, int var6, World var7) { + this.isChunkDataPacket = true; + this.xPosition = var1; + this.yPosition = var2; + this.zPosition = var3; + this.xSize = var4; + this.ySize = var5; + this.zSize = var6; + byte[] var8 = var7.func_504_c(var1, var2, var3, var4, var5, var6); + Deflater var9 = new Deflater(1); + + try { + var9.setInput(var8); + var9.finish(); + this.chunk = new byte[var4 * var5 * var6 * 5 / 2]; + this.chunkSize = var9.deflate(this.chunk); + } finally { + var9.end(); + } + + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.yPosition = var1.readShort(); + this.zPosition = var1.readInt(); + this.xSize = var1.read() + 1; + this.ySize = var1.read() + 1; + this.zSize = var1.read() + 1; + int var2 = var1.readInt(); + byte[] var3 = new byte[var2]; + var1.readFully(var3); + this.chunk = new byte[this.xSize * this.ySize * this.zSize * 5 / 2]; + Inflater var4 = new Inflater(); + var4.setInput(var3); + + try { + var4.inflate(this.chunk); + } catch (DataFormatException var9) { + throw new IOException("Bad compressed data format"); + } finally { + var4.end(); + } + + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.writeShort(this.yPosition); + var1.writeInt(this.zPosition); + var1.write(this.xSize - 1); + var1.write(this.ySize - 1); + var1.write(this.zSize - 1); + var1.writeInt(this.chunkSize); + var1.write(this.chunk, 0, this.chunkSize); + } + + public void processPacket(NetHandler var1) { + var1.handleMapChunk(this); + } + + public int getPacketSize() { + return 17 + this.chunkSize; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet52MultiBlockChange.java b/minecraft_server/src/net/minecraft/src/Packet52MultiBlockChange.java new file mode 100644 index 0000000..d31094c --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet52MultiBlockChange.java @@ -0,0 +1,76 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet52MultiBlockChange extends Packet { + public int xPosition; + public int zPosition; + public short[] coordinateArray; + public byte[] typeArray; + public byte[] metadataArray; + public int size; + + public Packet52MultiBlockChange() { + this.isChunkDataPacket = true; + } + + public Packet52MultiBlockChange(int var1, int var2, short[] var3, int var4, World var5) { + this.isChunkDataPacket = true; + this.xPosition = var1; + this.zPosition = var2; + this.size = var4; + this.coordinateArray = new short[var4]; + this.typeArray = new byte[var4]; + this.metadataArray = new byte[var4]; + Chunk var6 = var5.getChunkFromChunkCoords(var1, var2); + + for(int var7 = 0; var7 < var4; ++var7) { + int var8 = var3[var7] >> 12 & 15; + int var9 = var3[var7] >> 8 & 15; + int var10 = var3[var7] & 255; + this.coordinateArray[var7] = var3[var7]; + this.typeArray[var7] = (byte)var6.getBlockID(var8, var10, var9); + this.metadataArray[var7] = (byte)var6.getBlockMetadata(var8, var10, var9); + } + + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.zPosition = var1.readInt(); + this.size = var1.readShort() & '\uffff'; + this.coordinateArray = new short[this.size]; + this.typeArray = new byte[this.size]; + this.metadataArray = new byte[this.size]; + + for(int var2 = 0; var2 < this.size; ++var2) { + this.coordinateArray[var2] = var1.readShort(); + } + + var1.readFully(this.typeArray); + var1.readFully(this.metadataArray); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.writeInt(this.zPosition); + var1.writeShort((short)this.size); + + for(int var2 = 0; var2 < this.size; ++var2) { + var1.writeShort(this.coordinateArray[var2]); + } + + var1.write(this.typeArray); + var1.write(this.metadataArray); + } + + public void processPacket(NetHandler var1) { + var1.handleMultiBlockChange(this); + } + + public int getPacketSize() { + return 10 + this.size * 4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet53BlockChange.java b/minecraft_server/src/net/minecraft/src/Packet53BlockChange.java new file mode 100644 index 0000000..91c32c8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet53BlockChange.java @@ -0,0 +1,50 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet53BlockChange extends Packet { + public int xPosition; + public int yPosition; + public int zPosition; + public int type; + public int metadata; + + public Packet53BlockChange() { + this.isChunkDataPacket = true; + } + + public Packet53BlockChange(int var1, int var2, int var3, World var4) { + this.isChunkDataPacket = true; + this.xPosition = var1; + this.yPosition = var2; + this.zPosition = var3; + this.type = var4.getBlockId(var1, var2, var3); + this.metadata = var4.getBlockMetadata(var1, var2, var3); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.yPosition = var1.read(); + this.zPosition = var1.readInt(); + this.type = var1.read(); + this.metadata = var1.read(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.write(this.yPosition); + var1.writeInt(this.zPosition); + var1.write(this.type); + var1.write(this.metadata); + } + + public void processPacket(NetHandler var1) { + var1.handleBlockChange(this); + } + + public int getPacketSize() { + return 11; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet59ComplexEntity.java b/minecraft_server/src/net/minecraft/src/Packet59ComplexEntity.java new file mode 100644 index 0000000..4baee83 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet59ComplexEntity.java @@ -0,0 +1,59 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet59ComplexEntity extends Packet { + public int xPosition; + public int yPosition; + public int zPosition; + public byte[] entityData; + public NBTTagCompound entityNBT; + + public Packet59ComplexEntity() { + this.isChunkDataPacket = true; + } + + public Packet59ComplexEntity(int var1, int var2, int var3, TileEntity var4) { + this.isChunkDataPacket = true; + this.xPosition = var1; + this.yPosition = var2; + this.zPosition = var3; + this.entityNBT = new NBTTagCompound(); + var4.writeToNBT(this.entityNBT); + + try { + this.entityData = CompressedStreamTools.func_772_a(this.entityNBT); + } catch (IOException var6) { + var6.printStackTrace(); + } + + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.yPosition = var1.readShort(); + this.zPosition = var1.readInt(); + int var2 = var1.readShort() & '\uffff'; + this.entityData = new byte[var2]; + var1.readFully(this.entityData); + this.entityNBT = CompressedStreamTools.func_773_a(this.entityData); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.writeShort(this.yPosition); + var1.writeInt(this.zPosition); + var1.writeShort((short)this.entityData.length); + var1.write(this.entityData); + } + + public void processPacket(NetHandler var1) { + var1.handleComplexEntity(this); + } + + public int getPacketSize() { + return this.entityData.length + 2 + 10; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet5PlayerInventory.java b/minecraft_server/src/net/minecraft/src/Packet5PlayerInventory.java new file mode 100644 index 0000000..52b9467 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet5PlayerInventory.java @@ -0,0 +1,63 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet5PlayerInventory extends Packet { + public int type; + public ItemStack[] stacks; + + public Packet5PlayerInventory() { + } + + public Packet5PlayerInventory(int var1, ItemStack[] var2) { + this.type = var1; + this.stacks = new ItemStack[var2.length]; + + for(int var3 = 0; var3 < this.stacks.length; ++var3) { + this.stacks[var3] = var2[var3] == null ? null : var2[var3].copy(); + } + + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.type = var1.readInt(); + short var2 = var1.readShort(); + this.stacks = new ItemStack[var2]; + + for(int var3 = 0; var3 < var2; ++var3) { + short var4 = var1.readShort(); + if(var4 >= 0) { + byte var5 = var1.readByte(); + short var6 = var1.readShort(); + this.stacks[var3] = new ItemStack(var4, var5, var6); + } + } + + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.type); + var1.writeShort(this.stacks.length); + + for(int var2 = 0; var2 < this.stacks.length; ++var2) { + if(this.stacks[var2] == null) { + var1.writeShort(-1); + } else { + var1.writeShort((short)this.stacks[var2].itemID); + var1.writeByte((byte)this.stacks[var2].stackSize); + var1.writeShort((short)this.stacks[var2].itemDamage); + } + } + + } + + public void processPacket(NetHandler var1) { + var1.handlePlayerInventory(this); + } + + public int getPacketSize() { + return 6 + this.stacks.length * 5; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet60.java b/minecraft_server/src/net/minecraft/src/Packet60.java new file mode 100644 index 0000000..f6ab13a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet60.java @@ -0,0 +1,78 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +public class Packet60 extends Packet { + public double field_12003_a; + public double field_12002_b; + public double field_12006_c; + public float field_12005_d; + public Set field_12004_e; + + public Packet60() { + } + + public Packet60(double var1, double var3, double var5, float var7, Set var8) { + this.field_12003_a = var1; + this.field_12002_b = var3; + this.field_12006_c = var5; + this.field_12005_d = var7; + this.field_12004_e = new HashSet(var8); + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_12003_a = var1.readDouble(); + this.field_12002_b = var1.readDouble(); + this.field_12006_c = var1.readDouble(); + this.field_12005_d = var1.readFloat(); + int var2 = var1.readInt(); + this.field_12004_e = new HashSet(); + int var3 = (int)this.field_12003_a; + int var4 = (int)this.field_12002_b; + int var5 = (int)this.field_12006_c; + + for(int var6 = 0; var6 < var2; ++var6) { + int var7 = var1.readByte() + var3; + int var8 = var1.readByte() + var4; + int var9 = var1.readByte() + var5; + this.field_12004_e.add(new ChunkPosition(var7, var8, var9)); + } + + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeDouble(this.field_12003_a); + var1.writeDouble(this.field_12002_b); + var1.writeDouble(this.field_12006_c); + var1.writeFloat(this.field_12005_d); + var1.writeInt(this.field_12004_e.size()); + int var2 = (int)this.field_12003_a; + int var3 = (int)this.field_12002_b; + int var4 = (int)this.field_12006_c; + Iterator var5 = this.field_12004_e.iterator(); + + while(var5.hasNext()) { + ChunkPosition var6 = (ChunkPosition)var5.next(); + int var7 = var6.field_846_a - var2; + int var8 = var6.field_845_b - var3; + int var9 = var6.field_847_c - var4; + var1.writeByte(var7); + var1.writeByte(var8); + var1.writeByte(var9); + } + + } + + public void processPacket(NetHandler var1) { + var1.func_12001_a(this); + } + + public int getPacketSize() { + return 32 + this.field_12004_e.size() * 3; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet6SpawnPosition.java b/minecraft_server/src/net/minecraft/src/Packet6SpawnPosition.java new file mode 100644 index 0000000..0cb0d6a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet6SpawnPosition.java @@ -0,0 +1,40 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet6SpawnPosition extends Packet { + public int xPosition; + public int yPosition; + public int zPosition; + + public Packet6SpawnPosition() { + } + + public Packet6SpawnPosition(int var1, int var2, int var3) { + this.xPosition = var1; + this.yPosition = var2; + this.zPosition = var3; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.xPosition = var1.readInt(); + this.yPosition = var1.readInt(); + this.zPosition = var1.readInt(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.xPosition); + var1.writeInt(this.yPosition); + var1.writeInt(this.zPosition); + } + + public void processPacket(NetHandler var1) { + var1.handleSpawnPosition(this); + } + + public int getPacketSize() { + return 12; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet7.java b/minecraft_server/src/net/minecraft/src/Packet7.java new file mode 100644 index 0000000..575c4ef --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet7.java @@ -0,0 +1,31 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet7 extends Packet { + public int field_9019_a; + public int field_9018_b; + public int field_9020_c; + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_9019_a = var1.readInt(); + this.field_9018_b = var1.readInt(); + this.field_9020_c = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeInt(this.field_9019_a); + var1.writeInt(this.field_9018_b); + var1.writeByte(this.field_9020_c); + } + + public void processPacket(NetHandler var1) { + var1.func_6006_a(this); + } + + public int getPacketSize() { + return 9; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet8.java b/minecraft_server/src/net/minecraft/src/Packet8.java new file mode 100644 index 0000000..b395bc8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet8.java @@ -0,0 +1,32 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class Packet8 extends Packet { + public int field_9017_a; + + public Packet8() { + } + + public Packet8(int var1) { + this.field_9017_a = var1; + } + + public void readPacketData(DataInputStream var1) throws IOException { + this.field_9017_a = var1.readByte(); + } + + public void writePacketData(DataOutputStream var1) throws IOException { + var1.writeByte(this.field_9017_a); + } + + public void processPacket(NetHandler var1) { + var1.func_9003_a(this); + } + + public int getPacketSize() { + return 1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Packet9.java b/minecraft_server/src/net/minecraft/src/Packet9.java new file mode 100644 index 0000000..e5d7c94 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Packet9.java @@ -0,0 +1,20 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; + +public class Packet9 extends Packet { + public void processPacket(NetHandler var1) { + var1.func_9002_a(this); + } + + public void readPacketData(DataInputStream var1) { + } + + public void writePacketData(DataOutputStream var1) { + } + + public int getPacketSize() { + return 0; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Path.java b/minecraft_server/src/net/minecraft/src/Path.java new file mode 100644 index 0000000..fc08afe --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Path.java @@ -0,0 +1,119 @@ +package net.minecraft.src; + +public class Path { + private PathPoint[] pathPoints = new PathPoint[1024]; + private int count = 0; + + public PathPoint addPoint(PathPoint var1) { + if(var1.index >= 0) { + throw new IllegalStateException("OW KNOWS!"); + } else { + if(this.count == this.pathPoints.length) { + PathPoint[] var2 = new PathPoint[this.count << 1]; + System.arraycopy(this.pathPoints, 0, var2, 0, this.count); + this.pathPoints = var2; + } + + this.pathPoints[this.count] = var1; + var1.index = this.count; + this.sortBack(this.count++); + return var1; + } + } + + public void clearPath() { + this.count = 0; + } + + public PathPoint dequeue() { + PathPoint var1 = this.pathPoints[0]; + this.pathPoints[0] = this.pathPoints[--this.count]; + this.pathPoints[this.count] = null; + if(this.count > 0) { + this.sortForward(0); + } + + var1.index = -1; + return var1; + } + + public void changeDistance(PathPoint var1, float var2) { + float var3 = var1.distanceToTarget; + var1.distanceToTarget = var2; + if(var2 < var3) { + this.sortBack(var1.index); + } else { + this.sortForward(var1.index); + } + + } + + private void sortBack(int var1) { + PathPoint var2 = this.pathPoints[var1]; + + int var4; + for(float var3 = var2.distanceToTarget; var1 > 0; var1 = var4) { + var4 = var1 - 1 >> 1; + PathPoint var5 = this.pathPoints[var4]; + if(var3 >= var5.distanceToTarget) { + break; + } + + this.pathPoints[var1] = var5; + var5.index = var1; + } + + this.pathPoints[var1] = var2; + var2.index = var1; + } + + private void sortForward(int var1) { + PathPoint var2 = this.pathPoints[var1]; + float var3 = var2.distanceToTarget; + + while(true) { + int var4 = 1 + (var1 << 1); + int var5 = var4 + 1; + if(var4 >= this.count) { + break; + } + + PathPoint var6 = this.pathPoints[var4]; + float var7 = var6.distanceToTarget; + PathPoint var8; + float var9; + if(var5 >= this.count) { + var8 = null; + var9 = Float.POSITIVE_INFINITY; + } else { + var8 = this.pathPoints[var5]; + var9 = var8.distanceToTarget; + } + + if(var7 < var9) { + if(var7 >= var3) { + break; + } + + this.pathPoints[var1] = var6; + var6.index = var1; + var1 = var4; + } else { + if(var9 >= var3) { + break; + } + + this.pathPoints[var1] = var8; + var8.index = var1; + var1 = var5; + } + } + + this.pathPoints[var1] = var2; + var2.index = var1; + } + + public boolean isPathEmpty() { + return this.count == 0; + } +} diff --git a/minecraft_server/src/net/minecraft/src/PathEntity.java b/minecraft_server/src/net/minecraft/src/PathEntity.java new file mode 100644 index 0000000..1f2856a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PathEntity.java @@ -0,0 +1,27 @@ +package net.minecraft.src; + +public class PathEntity { + private final PathPoint[] points; + public final int pathLength; + private int pathIndex; + + public PathEntity(PathPoint[] var1) { + this.points = var1; + this.pathLength = var1.length; + } + + public void incrementPathIndex() { + ++this.pathIndex; + } + + public boolean isFinished() { + return this.pathIndex >= this.points.length; + } + + public Vec3D getPosition(Entity var1) { + double var2 = (double)this.points[this.pathIndex].xCoord + (double)((int)(var1.width + 1.0F)) * 0.5D; + double var4 = (double)this.points[this.pathIndex].yCoord; + double var6 = (double)this.points[this.pathIndex].zCoord + (double)((int)(var1.width + 1.0F)) * 0.5D; + return Vec3D.createVector(var2, var4, var6); + } +} diff --git a/minecraft_server/src/net/minecraft/src/PathPoint.java b/minecraft_server/src/net/minecraft/src/PathPoint.java new file mode 100644 index 0000000..b12351d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PathPoint.java @@ -0,0 +1,44 @@ +package net.minecraft.src; + +public class PathPoint { + public final int xCoord; + public final int yCoord; + public final int zCoord; + public final int hash; + int index = -1; + float totalPathDistance; + float distanceToNext; + float distanceToTarget; + PathPoint previous; + public boolean isFirst = false; + + public PathPoint(int var1, int var2, int var3) { + this.xCoord = var1; + this.yCoord = var2; + this.zCoord = var3; + this.hash = var1 | var2 << 10 | var3 << 20; + } + + public float distanceTo(PathPoint var1) { + float var2 = (float)(var1.xCoord - this.xCoord); + float var3 = (float)(var1.yCoord - this.yCoord); + float var4 = (float)(var1.zCoord - this.zCoord); + return MathHelper.sqrt_float(var2 * var2 + var3 * var3 + var4 * var4); + } + + public boolean equals(Object var1) { + return ((PathPoint)var1).hash == this.hash; + } + + public int hashCode() { + return this.hash; + } + + public boolean isAssigned() { + return this.index >= 0; + } + + public String toString() { + return this.xCoord + ", " + this.yCoord + ", " + this.zCoord; + } +} diff --git a/minecraft_server/src/net/minecraft/src/Pathfinder.java b/minecraft_server/src/net/minecraft/src/Pathfinder.java new file mode 100644 index 0000000..110e142 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Pathfinder.java @@ -0,0 +1,193 @@ +package net.minecraft.src; + +public class Pathfinder { + private IBlockAccess worldMap; + private Path path = new Path(); + private MCHashTable pointMap = new MCHashTable(); + private PathPoint[] pathOptions = new PathPoint[32]; + + public Pathfinder(IBlockAccess var1) { + this.worldMap = var1; + } + + public PathEntity createEntityPathTo(Entity var1, Entity var2, float var3) { + return this.createEntityPathTo(var1, var2.posX, var2.boundingBox.minY, var2.posZ, var3); + } + + public PathEntity createEntityPathTo(Entity var1, int var2, int var3, int var4, float var5) { + return this.createEntityPathTo(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), var5); + } + + private PathEntity createEntityPathTo(Entity var1, double var2, double var4, double var6, float var8) { + this.path.clearPath(); + this.pointMap.clearMap(); + PathPoint var9 = this.openPoint(MathHelper.floor_double(var1.boundingBox.minX), MathHelper.floor_double(var1.boundingBox.minY), MathHelper.floor_double(var1.boundingBox.minZ)); + PathPoint var10 = this.openPoint(MathHelper.floor_double(var2 - (double)(var1.width / 2.0F)), MathHelper.floor_double(var4), MathHelper.floor_double(var6 - (double)(var1.width / 2.0F))); + PathPoint var11 = new PathPoint(MathHelper.floor_float(var1.width + 1.0F), MathHelper.floor_float(var1.height + 1.0F), MathHelper.floor_float(var1.width + 1.0F)); + PathEntity var12 = this.addToPath(var1, var9, var10, var11, var8); + return var12; + } + + private PathEntity addToPath(Entity var1, PathPoint var2, PathPoint var3, PathPoint var4, float var5) { + var2.totalPathDistance = 0.0F; + var2.distanceToNext = var2.distanceTo(var3); + var2.distanceToTarget = var2.distanceToNext; + this.path.clearPath(); + this.path.addPoint(var2); + PathPoint var6 = var2; + + while(!this.path.isPathEmpty()) { + PathPoint var7 = this.path.dequeue(); + if(var7.hash == var3.hash) { + return this.createEntityPath(var2, var3); + } + + if(var7.distanceTo(var3) < var6.distanceTo(var3)) { + var6 = var7; + } + + var7.isFirst = true; + int var8 = this.findPathOptions(var1, var7, var4, var3, var5); + + for(int var9 = 0; var9 < var8; ++var9) { + PathPoint var10 = this.pathOptions[var9]; + float var11 = var7.totalPathDistance + var7.distanceTo(var10); + if(!var10.isAssigned() || var11 < var10.totalPathDistance) { + var10.previous = var7; + var10.totalPathDistance = var11; + var10.distanceToNext = var10.distanceTo(var3); + if(var10.isAssigned()) { + this.path.changeDistance(var10, var10.totalPathDistance + var10.distanceToNext); + } else { + var10.distanceToTarget = var10.totalPathDistance + var10.distanceToNext; + this.path.addPoint(var10); + } + } + } + } + + if(var6 == var2) { + return null; + } else { + return this.createEntityPath(var2, var6); + } + } + + private int findPathOptions(Entity var1, PathPoint var2, PathPoint var3, PathPoint var4, float var5) { + int var6 = 0; + byte var7 = 0; + if(this.getVerticalOffset(var1, var2.xCoord, var2.yCoord + 1, var2.zCoord, var3) > 0) { + var7 = 1; + } + + PathPoint var8 = this.getSafePoint(var1, var2.xCoord, var2.yCoord, var2.zCoord + 1, var3, var7); + PathPoint var9 = this.getSafePoint(var1, var2.xCoord - 1, var2.yCoord, var2.zCoord, var3, var7); + PathPoint var10 = this.getSafePoint(var1, var2.xCoord + 1, var2.yCoord, var2.zCoord, var3, var7); + PathPoint var11 = this.getSafePoint(var1, var2.xCoord, var2.yCoord, var2.zCoord - 1, var3, var7); + if(var8 != null && !var8.isFirst && var8.distanceTo(var4) < var5) { + this.pathOptions[var6++] = var8; + } + + if(var9 != null && !var9.isFirst && var9.distanceTo(var4) < var5) { + this.pathOptions[var6++] = var9; + } + + if(var10 != null && !var10.isFirst && var10.distanceTo(var4) < var5) { + this.pathOptions[var6++] = var10; + } + + if(var11 != null && !var11.isFirst && var11.distanceTo(var4) < var5) { + this.pathOptions[var6++] = var11; + } + + return var6; + } + + private PathPoint getSafePoint(Entity var1, int var2, int var3, int var4, PathPoint var5, int var6) { + PathPoint var7 = null; + if(this.getVerticalOffset(var1, var2, var3, var4, var5) > 0) { + var7 = this.openPoint(var2, var3, var4); + } + + if(var7 == null && this.getVerticalOffset(var1, var2, var3 + var6, var4, var5) > 0) { + var7 = this.openPoint(var2, var3 + var6, var4); + var3 += var6; + } + + if(var7 != null) { + int var8 = 0; + + for(boolean var9 = false; var3 > 0; --var3) { + int var10 = this.getVerticalOffset(var1, var2, var3 - 1, var4, var5); + if(var10 <= 0) { + break; + } + + if(var10 < 0) { + return null; + } + + ++var8; + if(var8 >= 4) { + return null; + } + } + + if(var3 > 0) { + var7 = this.openPoint(var2, var3, var4); + } + } + + return var7; + } + + private final PathPoint openPoint(int var1, int var2, int var3) { + int var4 = var1 | var2 << 10 | var3 << 20; + PathPoint var5 = (PathPoint)this.pointMap.lookup(var4); + if(var5 == null) { + var5 = new PathPoint(var1, var2, var3); + this.pointMap.addKey(var4, var5); + } + + return var5; + } + + private int getVerticalOffset(Entity var1, int var2, int var3, int var4, PathPoint var5) { + for(int var6 = var2; var6 < var2 + var5.xCoord; ++var6) { + for(int var7 = var3; var7 < var3 + var5.yCoord; ++var7) { + for(int var8 = var4; var8 < var4 + var5.zCoord; ++var8) { + Material var9 = this.worldMap.getBlockMaterial(var2, var3, var4); + if(var9.func_218_c()) { + return 0; + } + + if(var9 == Material.water || var9 == Material.lava) { + return -1; + } + } + } + } + + return 1; + } + + private PathEntity createEntityPath(PathPoint var1, PathPoint var2) { + int var3 = 1; + + PathPoint var4; + for(var4 = var2; var4.previous != null; var4 = var4.previous) { + ++var3; + } + + PathPoint[] var5 = new PathPoint[var3]; + var4 = var2; + --var3; + + for(var5[var3] = var2; var4.previous != null; var5[var3] = var4) { + var4 = var4.previous; + --var3; + } + + return new PathEntity(var5); + } +} diff --git a/minecraft_server/src/net/minecraft/src/PlayerInstance.java b/minecraft_server/src/net/minecraft/src/PlayerInstance.java new file mode 100644 index 0000000..1c343ef --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PlayerInstance.java @@ -0,0 +1,170 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; + +class PlayerInstance { + private List field_1072_b; + private int field_1071_c; + private int field_1070_d; + private ChunkCoordIntPair field_1069_e; + private short[] field_1068_f; + private int field_1067_g; + private int field_1066_h; + private int field_1065_i; + private int field_1064_j; + private int field_1063_k; + private int field_1062_l; + private int field_1061_m; + final PlayerManager field_1073_a; + + public PlayerInstance(PlayerManager var1, int var2, int var3) { + this.field_1073_a = var1; + this.field_1072_b = new ArrayList(); + this.field_1068_f = new short[10]; + this.field_1067_g = 0; + this.field_1071_c = var2; + this.field_1070_d = var3; + this.field_1069_e = new ChunkCoordIntPair(var2, var3); + PlayerManager.getMinecraftServer(var1).worldMngr.A.loadChunk(var2, var3); + } + + public void func_779_a(EntityPlayerMP var1) { + if(this.field_1072_b.contains(var1)) { + throw new IllegalStateException("Failed to add player. " + var1 + " already is in chunk " + this.field_1071_c + ", " + this.field_1070_d); + } else { + var1.field_420_ah.add(this.field_1069_e); + var1.field_421_a.sendPacket(new Packet50PreChunk(this.field_1069_e.field_152_a, this.field_1069_e.field_151_b, true)); + this.field_1072_b.add(var1); + var1.field_422_ag.add(this.field_1069_e); + } + } + + public void func_778_b(EntityPlayerMP var1) { + if(!this.field_1072_b.contains(var1)) { + (new IllegalStateException("Failed to remove player. " + var1 + " isn\'t in chunk " + this.field_1071_c + ", " + this.field_1070_d)).printStackTrace(); + } else { + this.field_1072_b.remove(var1); + if(this.field_1072_b.size() == 0) { + long var2 = (long)this.field_1071_c + 2147483647L | (long)this.field_1070_d + 2147483647L << 32; + PlayerManager.func_539_b(this.field_1073_a).func_670_b(var2); + if(this.field_1067_g > 0) { + PlayerManager.func_533_c(this.field_1073_a).remove(this); + } + + PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.A.func_374_c(this.field_1071_c, this.field_1070_d); + } + + var1.field_422_ag.remove(this.field_1069_e); + if(var1.field_420_ah.contains(this.field_1069_e)) { + var1.field_421_a.sendPacket(new Packet50PreChunk(this.field_1071_c, this.field_1070_d, false)); + } + + } + } + + public void func_775_a(int var1, int var2, int var3) { + if(this.field_1067_g == 0) { + PlayerManager.func_533_c(this.field_1073_a).add(this); + this.field_1066_h = this.field_1065_i = var1; + this.field_1064_j = this.field_1063_k = var2; + this.field_1062_l = this.field_1061_m = var3; + } + + if(this.field_1066_h > var1) { + this.field_1066_h = var1; + } + + if(this.field_1065_i < var1) { + this.field_1065_i = var1; + } + + if(this.field_1064_j > var2) { + this.field_1064_j = var2; + } + + if(this.field_1063_k < var2) { + this.field_1063_k = var2; + } + + if(this.field_1062_l > var3) { + this.field_1062_l = var3; + } + + if(this.field_1061_m < var3) { + this.field_1061_m = var3; + } + + if(this.field_1067_g < 10) { + short var4 = (short)(var1 << 12 | var3 << 8 | var2); + + for(int var5 = 0; var5 < this.field_1067_g; ++var5) { + if(this.field_1068_f[var5] == var4) { + return; + } + } + + this.field_1068_f[this.field_1067_g++] = var4; + } + + } + + public void func_776_a(Packet var1) { + for(int var2 = 0; var2 < this.field_1072_b.size(); ++var2) { + EntityPlayerMP var3 = (EntityPlayerMP)this.field_1072_b.get(var2); + if(var3.field_420_ah.contains(this.field_1069_e)) { + var3.field_421_a.sendPacket(var1); + } + } + + } + + public void func_777_a() { + if(this.field_1067_g != 0) { + int var1; + int var2; + int var3; + if(this.field_1067_g == 1) { + var1 = this.field_1071_c * 16 + this.field_1066_h; + var2 = this.field_1064_j; + var3 = this.field_1070_d * 16 + this.field_1062_l; + this.func_776_a(new Packet53BlockChange(var1, var2, var3, PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr)); + if(Block.isBlockContainer[PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.getBlockId(var1, var2, var3)]) { + this.func_776_a(new Packet59ComplexEntity(var1, var2, var3, PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.getBlock(var1, var2, var3))); + } + } else { + int var4; + if(this.field_1067_g == 10) { + this.field_1064_j = this.field_1064_j / 2 * 2; + this.field_1063_k = (this.field_1063_k / 2 + 1) * 2; + var1 = this.field_1066_h + this.field_1071_c * 16; + var2 = this.field_1064_j; + var3 = this.field_1062_l + this.field_1070_d * 16; + var4 = this.field_1065_i - this.field_1066_h + 1; + int var5 = this.field_1063_k - this.field_1064_j + 2; + int var6 = this.field_1061_m - this.field_1062_l + 1; + this.func_776_a(new Packet51MapChunk(var1, var2, var3, var4, var5, var6, PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr)); + List var7 = PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.func_532_d(var1, var2, var3, var1 + var4, var2 + var5, var3 + var6); + + for(int var8 = 0; var8 < var7.size(); ++var8) { + TileEntity var9 = (TileEntity)var7.get(var8); + this.func_776_a(new Packet59ComplexEntity(var9.xCoord, var9.yCoord, var9.zCoord, var9)); + } + } else { + this.func_776_a(new Packet52MultiBlockChange(this.field_1071_c, this.field_1070_d, this.field_1068_f, this.field_1067_g, PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr)); + + for(var1 = 0; var1 < this.field_1067_g; ++var1) { + var2 = this.field_1071_c * 16 + (this.field_1067_g >> 12 & 15); + var3 = this.field_1067_g & 255; + var4 = this.field_1070_d * 16 + (this.field_1067_g >> 8 & 15); + if(Block.isBlockContainer[PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.getBlockId(var2, var3, var4)]) { + this.func_776_a(new Packet59ComplexEntity(var2, var3, var4, PlayerManager.getMinecraftServer(this.field_1073_a).worldMngr.getBlock(var2, var3, var4))); + } + } + } + } + + this.field_1067_g = 0; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/PlayerListBox.java b/minecraft_server/src/net/minecraft/src/PlayerListBox.java new file mode 100644 index 0000000..ec78876 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PlayerListBox.java @@ -0,0 +1,28 @@ +package net.minecraft.src; + +import java.util.Vector; +import javax.swing.JList; +import net.minecraft.server.MinecraftServer; + +public class PlayerListBox extends JList implements IUpdatePlayerListBox { + private MinecraftServer mcServer; + private int updateCounter = 0; + + public PlayerListBox(MinecraftServer var1) { + this.mcServer = var1; + var1.func_6022_a(this); + } + + public void update() { + if(this.updateCounter++ % 20 == 0) { + Vector var1 = new Vector(); + + for(int var2 = 0; var2 < this.mcServer.configManager.playerEntities.size(); ++var2) { + var1.add(((EntityPlayerMP)this.mcServer.configManager.playerEntities.get(var2)).username); + } + + this.setListData(var1); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/PlayerManager.java b/minecraft_server/src/net/minecraft/src/PlayerManager.java new file mode 100644 index 0000000..81c1282 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PlayerManager.java @@ -0,0 +1,141 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.server.MinecraftServer; + +public class PlayerManager { + private List field_9216_a = new ArrayList(); + private MCHashTable2 field_9215_b = new MCHashTable2(); + private List field_833_c = new ArrayList(); + private MinecraftServer mcServer; + + public PlayerManager(MinecraftServer var1) { + this.mcServer = var1; + } + + public void func_538_a() { + for(int var1 = 0; var1 < this.field_833_c.size(); ++var1) { + ((PlayerInstance)this.field_833_c.get(var1)).func_777_a(); + } + + this.field_833_c.clear(); + } + + private PlayerInstance func_537_a(int var1, int var2, boolean var3) { + long var4 = (long)var1 + 2147483647L | (long)var2 + 2147483647L << 32; + PlayerInstance var6 = (PlayerInstance)this.field_9215_b.func_677_a(var4); + if(var6 == null && var3) { + var6 = new PlayerInstance(this, var1, var2); + this.field_9215_b.func_675_a(var4, var6); + } + + return var6; + } + + public void func_541_a(Packet var1, int var2, int var3, int var4) { + int var5 = var2 >> 4; + int var6 = var4 >> 4; + PlayerInstance var7 = this.func_537_a(var5, var6, false); + if(var7 != null) { + var7.func_776_a(var1); + } + + } + + public void func_535_a(int var1, int var2, int var3) { + int var4 = var1 >> 4; + int var5 = var3 >> 4; + PlayerInstance var6 = this.func_537_a(var4, var5, false); + if(var6 != null) { + var6.func_775_a(var1 & 15, var2, var3 & 15); + } + + } + + public void func_9214_a(EntityPlayerMP var1) { + int var2 = (int)var1.posX >> 4; + int var3 = (int)var1.posZ >> 4; + var1.field_9155_d = var1.posX; + var1.field_9154_e = var1.posZ; + + for(int var4 = var2 - 10; var4 <= var2 + 10; ++var4) { + for(int var5 = var3 - 10; var5 <= var3 + 10; ++var5) { + this.func_537_a(var4, var5, true).func_779_a(var1); + } + } + + this.field_9216_a.add(var1); + } + + public void func_9213_b(EntityPlayerMP var1) { + int var2 = (int)var1.field_9155_d >> 4; + int var3 = (int)var1.field_9154_e >> 4; + + for(int var4 = var2 - 10; var4 <= var2 + 10; ++var4) { + for(int var5 = var3 - 10; var5 <= var3 + 10; ++var5) { + PlayerInstance var6 = this.func_537_a(var4, var5, false); + if(var6 != null) { + var6.func_778_b(var1); + } + } + } + + this.field_9216_a.remove(var1); + } + + private boolean func_544_a(int var1, int var2, int var3, int var4) { + int var5 = var1 - var3; + int var6 = var2 - var4; + return var5 >= -10 && var5 <= 10 ? var6 >= -10 && var6 <= 10 : false; + } + + public void func_543_c(EntityPlayerMP var1) { + int var2 = (int)var1.posX >> 4; + int var3 = (int)var1.posZ >> 4; + double var4 = var1.field_9155_d - var1.posX; + double var6 = var1.field_9154_e - var1.posZ; + double var8 = var4 * var4 + var6 * var6; + if(var8 >= 64.0D) { + int var10 = (int)var1.field_9155_d >> 4; + int var11 = (int)var1.field_9154_e >> 4; + int var12 = var2 - var10; + int var13 = var3 - var11; + if(var12 != 0 || var13 != 0) { + for(int var14 = var2 - 10; var14 <= var2 + 10; ++var14) { + for(int var15 = var3 - 10; var15 <= var3 + 10; ++var15) { + if(!this.func_544_a(var14, var15, var10, var11)) { + this.func_537_a(var14, var15, true).func_779_a(var1); + } + + if(!this.func_544_a(var14 - var12, var15 - var13, var2, var3)) { + PlayerInstance var16 = this.func_537_a(var14 - var12, var15 - var13, false); + if(var16 != null) { + var16.func_778_b(var1); + } + } + } + } + + var1.field_9155_d = var1.posX; + var1.field_9154_e = var1.posZ; + } + } + } + + public int func_542_b() { + return 144; + } + + static MinecraftServer getMinecraftServer(PlayerManager var0) { + return var0.mcServer; + } + + static MCHashTable2 func_539_b(PlayerManager var0) { + return var0.field_9215_b; + } + + static List func_533_c(PlayerManager var0) { + return var0.field_833_c; + } +} diff --git a/minecraft_server/src/net/minecraft/src/PlayerNBTManager.java b/minecraft_server/src/net/minecraft/src/PlayerNBTManager.java new file mode 100644 index 0000000..d782473 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PlayerNBTManager.java @@ -0,0 +1,49 @@ +package net.minecraft.src; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.logging.Logger; + +public class PlayerNBTManager { + public static Logger logger = Logger.getLogger("Minecraft"); + private File worldFile; + + public PlayerNBTManager(File var1) { + this.worldFile = var1; + var1.mkdir(); + } + + public void writePlayerData(EntityPlayerMP var1) { + try { + NBTTagCompound var2 = new NBTTagCompound(); + var1.writeToNBT(var2); + File var3 = new File(this.worldFile, "_tmp_.dat"); + File var4 = new File(this.worldFile, var1.username + ".dat"); + CompressedStreamTools.func_769_a(var2, new FileOutputStream(var3)); + if(var4.exists()) { + var4.delete(); + } + + var3.renameTo(var4); + } catch (Exception var5) { + logger.warning("Failed to save player data for " + var1.username); + } + + } + + public void readPlayerData(EntityPlayerMP var1) { + try { + File var2 = new File(this.worldFile, var1.username + ".dat"); + if(var2.exists()) { + NBTTagCompound var3 = CompressedStreamTools.func_770_a(new FileInputStream(var2)); + if(var3 != null) { + var1.readFromNBT(var3); + } + } + } catch (Exception var4) { + logger.warning("Failed to load player data for " + var1.username); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/PropertyManager.java b/minecraft_server/src/net/minecraft/src/PropertyManager.java new file mode 100644 index 0000000..5ff9dab --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/PropertyManager.java @@ -0,0 +1,72 @@ +package net.minecraft.src; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.Properties; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class PropertyManager { + public static Logger logger = Logger.getLogger("Minecraft"); + private Properties serverProperties = new Properties(); + private File serverPropertiesFile; + + public PropertyManager(File var1) { + this.serverPropertiesFile = var1; + if(var1.exists()) { + try { + this.serverProperties.load(new FileInputStream(var1)); + } catch (Exception var3) { + logger.log(Level.WARNING, "Failed to load " + var1, var3); + this.generateNewProperties(); + } + } else { + logger.log(Level.WARNING, var1 + " does not exist"); + this.generateNewProperties(); + } + + } + + public void generateNewProperties() { + logger.log(Level.INFO, "Generating new properties file"); + this.saveProperties(); + } + + public void saveProperties() { + try { + this.serverProperties.store(new FileOutputStream(this.serverPropertiesFile), "Minecraft server properties"); + } catch (Exception var2) { + logger.log(Level.WARNING, "Failed to save " + this.serverPropertiesFile, var2); + this.generateNewProperties(); + } + + } + + public String getStringProperty(String var1, String var2) { + if(!this.serverProperties.containsKey(var1)) { + this.serverProperties.setProperty(var1, var2); + this.saveProperties(); + } + + return this.serverProperties.getProperty(var1, var2); + } + + public int getIntProperty(String var1, int var2) { + try { + return Integer.parseInt(this.getStringProperty(var1, "" + var2)); + } catch (Exception var4) { + this.serverProperties.setProperty(var1, "" + var2); + return var2; + } + } + + public boolean getBooleanProperty(String var1, boolean var2) { + try { + return Boolean.parseBoolean(this.getStringProperty(var1, "" + var2)); + } catch (Exception var4) { + this.serverProperties.setProperty(var1, "" + var2); + return var2; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/RedstoneUpdateInfo.java b/minecraft_server/src/net/minecraft/src/RedstoneUpdateInfo.java new file mode 100644 index 0000000..27017b5 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/RedstoneUpdateInfo.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +class RedstoneUpdateInfo { + int field_775_a; + int field_774_b; + int field_777_c; + long field_776_d; + + public RedstoneUpdateInfo(int var1, int var2, int var3, long var4) { + this.field_775_a = var1; + this.field_774_b = var2; + this.field_777_c = var3; + this.field_776_d = var4; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerCommand.java b/minecraft_server/src/net/minecraft/src/ServerCommand.java new file mode 100644 index 0000000..741f466 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerCommand.java @@ -0,0 +1,11 @@ +package net.minecraft.src; + +public class ServerCommand { + public final String command; + public final ICommandListener commandListener; + + public ServerCommand(String var1, ICommandListener var2) { + this.command = var1; + this.commandListener = var2; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerConfigurationManager.java b/minecraft_server/src/net/minecraft/src/ServerConfigurationManager.java new file mode 100644 index 0000000..f5e61b8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerConfigurationManager.java @@ -0,0 +1,369 @@ +package net.minecraft.src; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.logging.Logger; +import net.minecraft.server.MinecraftServer; + +public class ServerConfigurationManager { + public static Logger logger = Logger.getLogger("Minecraft"); + public List playerEntities = new ArrayList(); + private MinecraftServer mcServer; + private PlayerManager playerManagerObj; + private int maxPlayers; + private Set field_9252_f = new HashSet(); + private Set bannedIPs = new HashSet(); + private Set ops = new HashSet(); + private File bannedPlayersFile; + private File ipBanFile; + private File opFile; + private PlayerNBTManager playerNBTManagerObj; + + public ServerConfigurationManager(MinecraftServer var1) { + this.mcServer = var1; + this.bannedPlayersFile = var1.getFile("banned-players.txt"); + this.ipBanFile = var1.getFile("banned-ips.txt"); + this.opFile = var1.getFile("ops.txt"); + this.playerManagerObj = new PlayerManager(var1); + this.maxPlayers = var1.propertyManagerObj.getIntProperty("max-players", 20); + this.readBannedPlayers(); + this.loadBannedList(); + this.loadOps(); + this.writeBannedPlayers(); + this.saveBannedList(); + this.saveOps(); + } + + public void setPlayerManager(WorldServer var1) { + this.playerNBTManagerObj = new PlayerNBTManager(new File(var1.field_797_s, "players")); + } + + public int func_640_a() { + return this.playerManagerObj.func_542_b(); + } + + public void playerLoggedIn(EntityPlayerMP var1) { + this.playerEntities.add(var1); + this.playerNBTManagerObj.readPlayerData(var1); + this.mcServer.worldMngr.A.loadChunk((int)var1.posX >> 4, (int)var1.posZ >> 4); + + while(this.mcServer.worldMngr.getCollidingBoundingBoxes(var1, var1.boundingBox).size() != 0) { + var1.setPosition(var1.posX, var1.posY + 1.0D, var1.posZ); + } + + this.mcServer.worldMngr.entityJoinedWorld(var1); + this.playerManagerObj.func_9214_a(var1); + } + + public void func_613_b(EntityPlayerMP var1) { + this.playerManagerObj.func_543_c(var1); + } + + public void playerLoggedOut(EntityPlayerMP var1) { + this.playerNBTManagerObj.writePlayerData(var1); + this.mcServer.worldMngr.func_12016_d(var1); + this.playerEntities.remove(var1); + this.playerManagerObj.func_9213_b(var1); + } + + public EntityPlayerMP login(NetLoginHandler var1, String var2, String var3) { + if(this.field_9252_f.contains(var2.trim().toLowerCase())) { + var1.kickUser("You are banned from this server!"); + return null; + } else { + String var4 = var1.netManager.getRemoteAddress().toString(); + var4 = var4.substring(var4.indexOf("/") + 1); + var4 = var4.substring(0, var4.indexOf(":")); + if(this.bannedIPs.contains(var4)) { + var1.kickUser("Your IP address is banned from this server!"); + return null; + } else if(this.playerEntities.size() >= this.maxPlayers) { + var1.kickUser("The server is full!"); + return null; + } else { + for(int var5 = 0; var5 < this.playerEntities.size(); ++var5) { + EntityPlayerMP var6 = (EntityPlayerMP)this.playerEntities.get(var5); + if(var6.username.equalsIgnoreCase(var2)) { + var6.field_421_a.func_43_c("You logged in from another location"); + } + } + + return new EntityPlayerMP(this.mcServer, this.mcServer.worldMngr, var2, new ItemInWorldManager(this.mcServer.worldMngr)); + } + } + } + + public EntityPlayerMP func_9242_d(EntityPlayerMP var1) { + this.mcServer.field_6028_k.func_9238_a(var1); + this.mcServer.field_6028_k.func_610_b(var1); + this.playerManagerObj.func_9213_b(var1); + this.playerEntities.remove(var1); + this.mcServer.worldMngr.func_12014_e(var1); + EntityPlayerMP var2 = new EntityPlayerMP(this.mcServer, this.mcServer.worldMngr, var1.username, new ItemInWorldManager(this.mcServer.worldMngr)); + var2.field_331_c = var1.field_331_c; + var2.field_421_a = var1.field_421_a; + this.mcServer.worldMngr.A.loadChunk((int)var2.posX >> 4, (int)var2.posZ >> 4); + + while(this.mcServer.worldMngr.getCollidingBoundingBoxes(var2, var2.boundingBox).size() != 0) { + var2.setPosition(var2.posX, var2.posY + 1.0D, var2.posZ); + } + + var2.field_421_a.sendPacket(new Packet9()); + var2.field_421_a.func_41_a(var2.posX, var2.posY, var2.posZ, var2.rotationYaw, var2.rotationPitch); + this.playerManagerObj.func_9214_a(var2); + this.mcServer.worldMngr.entityJoinedWorld(var2); + this.playerEntities.add(var2); + return var2; + } + + public void func_637_b() { + this.playerManagerObj.func_538_a(); + } + + public void func_622_a(int var1, int var2, int var3) { + this.playerManagerObj.func_535_a(var1, var2, var3); + } + + public void sendPacketToAllPlayers(Packet var1) { + for(int var2 = 0; var2 < this.playerEntities.size(); ++var2) { + EntityPlayerMP var3 = (EntityPlayerMP)this.playerEntities.get(var2); + var3.field_421_a.sendPacket(var1); + } + + } + + public String getPlayerList() { + String var1 = ""; + + for(int var2 = 0; var2 < this.playerEntities.size(); ++var2) { + if(var2 > 0) { + var1 = var1 + ", "; + } + + var1 = var1 + ((EntityPlayerMP)this.playerEntities.get(var2)).username; + } + + return var1; + } + + public void banPlayer(String var1) { + this.field_9252_f.add(var1.toLowerCase()); + this.writeBannedPlayers(); + } + + public void unbanPlayer(String var1) { + this.field_9252_f.remove(var1.toLowerCase()); + this.writeBannedPlayers(); + } + + private void readBannedPlayers() { + try { + this.field_9252_f.clear(); + BufferedReader var1 = new BufferedReader(new FileReader(this.bannedPlayersFile)); + String var2 = ""; + + while(true) { + var2 = var1.readLine(); + if(var2 == null) { + var1.close(); + break; + } + + this.field_9252_f.add(var2.trim().toLowerCase()); + } + } catch (Exception var3) { + logger.warning("Failed to load ban list: " + var3); + } + + } + + private void writeBannedPlayers() { + try { + PrintWriter var1 = new PrintWriter(new FileWriter(this.bannedPlayersFile, false)); + Iterator var2 = this.field_9252_f.iterator(); + + while(var2.hasNext()) { + String var3 = (String)var2.next(); + var1.println(var3); + } + + var1.close(); + } catch (Exception var4) { + logger.warning("Failed to save ban list: " + var4); + } + + } + + public void banIP(String var1) { + this.bannedIPs.add(var1.toLowerCase()); + this.saveBannedList(); + } + + public void unbanIP(String var1) { + this.bannedIPs.remove(var1.toLowerCase()); + this.saveBannedList(); + } + + private void loadBannedList() { + try { + this.bannedIPs.clear(); + BufferedReader var1 = new BufferedReader(new FileReader(this.ipBanFile)); + String var2 = ""; + + while(true) { + var2 = var1.readLine(); + if(var2 == null) { + var1.close(); + break; + } + + this.bannedIPs.add(var2.trim().toLowerCase()); + } + } catch (Exception var3) { + logger.warning("Failed to load ip ban list: " + var3); + } + + } + + private void saveBannedList() { + try { + PrintWriter var1 = new PrintWriter(new FileWriter(this.ipBanFile, false)); + Iterator var2 = this.bannedIPs.iterator(); + + while(var2.hasNext()) { + String var3 = (String)var2.next(); + var1.println(var3); + } + + var1.close(); + } catch (Exception var4) { + logger.warning("Failed to save ip ban list: " + var4); + } + + } + + public void opPlayer(String var1) { + this.ops.add(var1.toLowerCase()); + this.saveOps(); + } + + public void deopPlayer(String var1) { + this.ops.remove(var1.toLowerCase()); + this.saveOps(); + } + + private void loadOps() { + try { + this.ops.clear(); + BufferedReader var1 = new BufferedReader(new FileReader(this.opFile)); + String var2 = ""; + + while(true) { + var2 = var1.readLine(); + if(var2 == null) { + var1.close(); + break; + } + + this.ops.add(var2.trim().toLowerCase()); + } + } catch (Exception var3) { + logger.warning("Failed to load ip ban list: " + var3); + } + + } + + private void saveOps() { + try { + PrintWriter var1 = new PrintWriter(new FileWriter(this.opFile, false)); + Iterator var2 = this.ops.iterator(); + + while(var2.hasNext()) { + String var3 = (String)var2.next(); + var1.println(var3); + } + + var1.close(); + } catch (Exception var4) { + logger.warning("Failed to save ip ban list: " + var4); + } + + } + + public boolean isOp(String var1) { + return this.ops.contains(var1.trim().toLowerCase()); + } + + public EntityPlayerMP getPlayerEntity(String var1) { + for(int var2 = 0; var2 < this.playerEntities.size(); ++var2) { + EntityPlayerMP var3 = (EntityPlayerMP)this.playerEntities.get(var2); + if(var3.username.equalsIgnoreCase(var1)) { + return var3; + } + } + + return null; + } + + public void sendChatMessageToPlayer(String var1, String var2) { + EntityPlayerMP var3 = this.getPlayerEntity(var1); + if(var3 != null) { + var3.field_421_a.sendPacket(new Packet3Chat(var2)); + } + + } + + public void func_12022_a(double var1, double var3, double var5, double var7, Packet var9) { + for(int var10 = 0; var10 < this.playerEntities.size(); ++var10) { + EntityPlayerMP var11 = (EntityPlayerMP)this.playerEntities.get(var10); + double var12 = var1 - var11.posX; + double var14 = var3 - var11.posY; + double var16 = var5 - var11.posZ; + if(var12 * var12 + var14 * var14 + var16 * var16 < var7 * var7) { + var11.field_421_a.sendPacket(var9); + } + } + + } + + public void sendChatMessageToAllPlayers(String var1) { + Packet3Chat var2 = new Packet3Chat(var1); + + for(int var3 = 0; var3 < this.playerEntities.size(); ++var3) { + EntityPlayerMP var4 = (EntityPlayerMP)this.playerEntities.get(var3); + if(this.isOp(var4.username)) { + var4.field_421_a.sendPacket(var2); + } + } + + } + + public boolean sendPacketToPlayer(String var1, Packet var2) { + EntityPlayerMP var3 = this.getPlayerEntity(var1); + if(var3 != null) { + var3.field_421_a.sendPacket(var2); + return true; + } else { + return false; + } + } + + public void sentTileEntityToPlayer(int var1, int var2, int var3, TileEntity var4) { + this.playerManagerObj.func_541_a(new Packet59ComplexEntity(var1, var2, var3, var4), var1, var2, var3); + } + + public void savePlayerStates() { + for(int var1 = 0; var1 < this.playerEntities.size(); ++var1) { + this.playerNBTManagerObj.writePlayerData((EntityPlayerMP)this.playerEntities.get(var1)); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerGUI.java b/minecraft_server/src/net/minecraft/src/ServerGUI.java new file mode 100644 index 0000000..0514bfa --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerGUI.java @@ -0,0 +1,92 @@ +package net.minecraft.src; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.util.logging.Logger; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.UIManager; +import javax.swing.border.EtchedBorder; +import javax.swing.border.TitledBorder; +import net.minecraft.server.MinecraftServer; + +public class ServerGUI extends JComponent implements ICommandListener { + public static Logger logger = Logger.getLogger("Minecraft"); + private MinecraftServer mcServer; + + public static void initGui(MinecraftServer var0) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception var3) { + } + + ServerGUI var1 = new ServerGUI(var0); + JFrame var2 = new JFrame("Minecraft server"); + var2.add(var1); + var2.pack(); + var2.setLocationRelativeTo((Component)null); + var2.setVisible(true); + var2.addWindowListener(new ServerWindowAdapter(var0)); + } + + public ServerGUI(MinecraftServer var1) { + this.mcServer = var1; + this.setPreferredSize(new Dimension(854, 480)); + this.setLayout(new BorderLayout()); + + try { + this.add(this.getLogComponent(), "Center"); + this.add(this.getStatsComponent(), "West"); + } catch (Exception var3) { + var3.printStackTrace(); + } + + } + + private JComponent getStatsComponent() { + JPanel var1 = new JPanel(new BorderLayout()); + var1.add(new GuiStatsComponent(), "North"); + var1.add(this.getPlayerListComponent(), "Center"); + var1.setBorder(new TitledBorder(new EtchedBorder(), "Stats")); + return var1; + } + + private JComponent getPlayerListComponent() { + PlayerListBox var1 = new PlayerListBox(this.mcServer); + JScrollPane var2 = new JScrollPane(var1, 22, 30); + var2.setBorder(new TitledBorder(new EtchedBorder(), "Players")); + return var2; + } + + private JComponent getLogComponent() { + JPanel var1 = new JPanel(new BorderLayout()); + JTextArea var2 = new JTextArea(); + logger.addHandler(new GuiLogOutputHandler(var2)); + JScrollPane var3 = new JScrollPane(var2, 22, 30); + var2.setEditable(false); + JTextField var4 = new JTextField(); + var4.addActionListener(new ServerGuiCommandListener(this, var4)); + var2.addFocusListener(new ServerGuiFocusAdapter(this)); + var1.add(var3, "Center"); + var1.add(var4, "South"); + var1.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat")); + return var1; + } + + public void log(String var1) { + logger.info(var1); + } + + public String getUsername() { + return "CONSOLE"; + } + + static MinecraftServer getMinecraftServer(ServerGUI var0) { + return var0.mcServer; + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerGuiCommandListener.java b/minecraft_server/src/net/minecraft/src/ServerGuiCommandListener.java new file mode 100644 index 0000000..e6e14bb --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerGuiCommandListener.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JTextField; + +class ServerGuiCommandListener implements ActionListener { + final JTextField textField; + final ServerGUI mcServerGui; + + ServerGuiCommandListener(ServerGUI var1, JTextField var2) { + this.mcServerGui = var1; + this.textField = var2; + } + + public void actionPerformed(ActionEvent var1) { + String var2 = this.textField.getText().trim(); + if(var2.length() > 0) { + ServerGUI.getMinecraftServer(this.mcServerGui).addCommand(var2, this.mcServerGui); + } + + this.textField.setText(""); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerGuiFocusAdapter.java b/minecraft_server/src/net/minecraft/src/ServerGuiFocusAdapter.java new file mode 100644 index 0000000..8fa603f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerGuiFocusAdapter.java @@ -0,0 +1,15 @@ +package net.minecraft.src; + +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; + +class ServerGuiFocusAdapter extends FocusAdapter { + final ServerGUI mcServerGui; + + ServerGuiFocusAdapter(ServerGUI var1) { + this.mcServerGui = var1; + } + + public void focusGained(FocusEvent var1) { + } +} diff --git a/minecraft_server/src/net/minecraft/src/ServerWindowAdapter.java b/minecraft_server/src/net/minecraft/src/ServerWindowAdapter.java new file mode 100644 index 0000000..3a3c77d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ServerWindowAdapter.java @@ -0,0 +1,27 @@ +package net.minecraft.src; + +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import net.minecraft.server.MinecraftServer; + +final class ServerWindowAdapter extends WindowAdapter { + final MinecraftServer mcServer; + + ServerWindowAdapter(MinecraftServer var1) { + this.mcServer = var1; + } + + public void windowClosing(WindowEvent var1) { + this.mcServer.func_6016_a(); + + while(!this.mcServer.field_6032_g) { + try { + Thread.sleep(100L); + } catch (InterruptedException var3) { + var3.printStackTrace(); + } + } + + System.exit(0); + } +} diff --git a/minecraft_server/src/net/minecraft/src/SpawnerAnimals.java b/minecraft_server/src/net/minecraft/src/SpawnerAnimals.java new file mode 100644 index 0000000..6289187 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/SpawnerAnimals.java @@ -0,0 +1,133 @@ +package net.minecraft.src; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +public final class SpawnerAnimals { + private static Set field_4311_a = new HashSet(); + + protected static ChunkPosition func_4112_a(World var0, int var1, int var2) { + int var3 = var1 + var0.rand.nextInt(16); + int var4 = var0.rand.nextInt(128); + int var5 = var2 + var0.rand.nextInt(16); + return new ChunkPosition(var3, var4, var5); + } + + public static final int func_4111_a(World var0) { + field_4311_a.clear(); + + int var1; + for(var1 = 0; var1 < var0.playerEntities.size(); ++var1) { + EntityPlayer var2 = (EntityPlayer)var0.playerEntities.get(var1); + int var3 = MathHelper.floor_double(var2.posX / 16.0D); + int var4 = MathHelper.floor_double(var2.posZ / 16.0D); + byte var5 = 8; + + for(int var6 = -var5; var6 <= var5; ++var6) { + for(int var7 = -var5; var7 <= var5; ++var7) { + field_4311_a.add(new ChunkCoordIntPair(var6 + var3, var7 + var4)); + } + } + } + + var1 = 0; + + label113: + for(int var28 = 0; var28 < EnumCreatureType.values().length; ++var28) { + EnumCreatureType var29 = EnumCreatureType.values()[var28]; + if(var0.countEntities(var29.field_4221_c) <= var29.field_4220_d * field_4311_a.size() / 256) { + Iterator var30 = field_4311_a.iterator(); + + label110: + while(true) { + int var8; + int var10; + int var11; + int var12; + Class[] var33; + do { + do { + ChunkCoordIntPair var31; + do { + do { + do { + if(!var30.hasNext()) { + continue label113; + } + + var31 = (ChunkCoordIntPair)var30.next(); + } while(var0.rand.nextInt(50) != 0); + + MobSpawnerBase var32 = var0.func_4077_a().func_4066_a(var31); + var33 = var32.getEntitiesForType(var29); + } while(var33 == null); + } while(var33.length == 0); + + var8 = var0.rand.nextInt(var33.length); + ChunkPosition var9 = func_4112_a(var0, var31.field_152_a * 16, var31.field_151_b * 16); + var10 = var9.field_846_a; + var11 = var9.field_845_b; + var12 = var9.field_847_c; + } while(var0.doesBlockAllowAttachment(var10, var11, var12)); + } while(var0.getBlockMaterial(var10, var11, var12) != Material.air); + + int var13 = 0; + + for(int var14 = 0; var14 < 3; ++var14) { + int var15 = var10; + int var16 = var11; + int var17 = var12; + byte var18 = 6; + + for(int var19 = 0; var19 < 4; ++var19) { + var15 += var0.rand.nextInt(var18) - var0.rand.nextInt(var18); + var16 += var0.rand.nextInt(1) - var0.rand.nextInt(1); + var17 += var0.rand.nextInt(var18) - var0.rand.nextInt(var18); + if(var0.doesBlockAllowAttachment(var15, var16 - 1, var17) && !var0.doesBlockAllowAttachment(var15, var16, var17) && !var0.getBlockMaterial(var15, var16, var17).getIsLiquid() && !var0.doesBlockAllowAttachment(var15, var16 + 1, var17)) { + float var20 = (float)var15 + 0.5F; + float var21 = (float)var16; + float var22 = (float)var17 + 0.5F; + if(var0.getClosestPlayer((double)var20, (double)var21, (double)var22, 24.0D) == null) { + float var23 = var20 - (float)var0.spawnX; + float var24 = var21 - (float)var0.spawnY; + float var25 = var22 - (float)var0.spawnZ; + float var26 = var23 * var23 + var24 * var24 + var25 * var25; + if(var26 >= 576.0F) { + EntityLiving var34; + try { + var34 = (EntityLiving)var33[var8].getConstructor(new Class[]{World.class}).newInstance(new Object[]{var0}); + } catch (Exception var27) { + var27.printStackTrace(); + return var1; + } + + var34.func_107_c((double)var20, (double)var21, (double)var22, var0.rand.nextFloat() * 360.0F, 0.0F); + if(var34.getCanSpawnHere()) { + ++var13; + var0.entityJoinedWorld(var34); + if(var34 instanceof EntitySpider && var0.rand.nextInt(100) == 0) { + EntitySkeleton var35 = new EntitySkeleton(var0); + var35.func_107_c((double)var20, (double)var21, (double)var22, var34.rotationYaw, 0.0F); + var0.entityJoinedWorld(var35); + var35.func_6094_e(var34); + } + + if(var13 >= var34.func_4045_i()) { + continue label110; + } + } + + var1 += var13; + } + } + } + } + } + } + } + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/StepSound.java b/minecraft_server/src/net/minecraft/src/StepSound.java new file mode 100644 index 0000000..e5424cf --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/StepSound.java @@ -0,0 +1,25 @@ +package net.minecraft.src; + +public class StepSound { + public final String field_1029_a; + public final float field_1028_b; + public final float field_1030_c; + + public StepSound(String var1, float var2, float var3) { + this.field_1029_a = var1; + this.field_1028_b = var2; + this.field_1030_c = var3; + } + + public float func_738_a() { + return this.field_1028_b; + } + + public float func_739_b() { + return this.field_1030_c; + } + + public String func_737_c() { + return "step." + this.field_1029_a; + } +} diff --git a/minecraft_server/src/net/minecraft/src/StepSoundSand.java b/minecraft_server/src/net/minecraft/src/StepSoundSand.java new file mode 100644 index 0000000..f5eb99e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/StepSoundSand.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +final class StepSoundSand extends StepSound { + StepSoundSand(String var1, float var2, float var3) { + super(var1, var2, var3); + } +} diff --git a/minecraft_server/src/net/minecraft/src/StepSoundStone.java b/minecraft_server/src/net/minecraft/src/StepSoundStone.java new file mode 100644 index 0000000..e12a567 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/StepSoundStone.java @@ -0,0 +1,7 @@ +package net.minecraft.src; + +final class StepSoundStone extends StepSound { + StepSoundStone(String var1, float var2, float var3) { + super(var1, var2, var3); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ThreadCommandReader.java b/minecraft_server/src/net/minecraft/src/ThreadCommandReader.java new file mode 100644 index 0000000..ec2e34f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ThreadCommandReader.java @@ -0,0 +1,33 @@ +package net.minecraft.src; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import net.minecraft.server.MinecraftServer; + +public class ThreadCommandReader extends Thread { + final MinecraftServer mcServer; + + public ThreadCommandReader(MinecraftServer var1) { + this.mcServer = var1; + } + + public void run() { + BufferedReader var1 = new BufferedReader(new InputStreamReader(System.in)); + String var2 = null; + + try { + while(!this.mcServer.field_6032_g && MinecraftServer.func_6015_a(this.mcServer)) { + var2 = var1.readLine(); + if(var2 == null) { + break; + } + + this.mcServer.addCommand(var2, this.mcServer); + } + } catch (IOException var4) { + var4.printStackTrace(); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/ThreadLoginVerifier.java b/minecraft_server/src/net/minecraft/src/ThreadLoginVerifier.java new file mode 100644 index 0000000..8afe7a4 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ThreadLoginVerifier.java @@ -0,0 +1,34 @@ +package net.minecraft.src; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; + +class ThreadLoginVerifier extends Thread { + final Packet1Login loginPacket; + final NetLoginHandler loginHandler; + + ThreadLoginVerifier(NetLoginHandler var1, Packet1Login var2) { + this.loginHandler = var1; + this.loginPacket = var2; + } + + public void run() { + try { + String var1 = NetLoginHandler.getServerId(this.loginHandler); + URL var2 = new URL("http://www.minecraft.net/game/checkserver.jsp?user=" + this.loginPacket.username + "&serverId=" + var1); + BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.openStream())); + String var4 = var3.readLine(); + var3.close(); + System.out.println("THE REPLY IS " + var4); + if(var4.equals("YES")) { + NetLoginHandler.setLoginPacket(this.loginHandler, this.loginPacket); + } else { + this.loginHandler.kickUser("Failed to verify username!"); + } + } catch (Exception var5) { + var5.printStackTrace(); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/ThreadMonitorConnection.java b/minecraft_server/src/net/minecraft/src/ThreadMonitorConnection.java new file mode 100644 index 0000000..b244c52 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ThreadMonitorConnection.java @@ -0,0 +1,22 @@ +package net.minecraft.src; + +class ThreadMonitorConnection extends Thread { + final NetworkManager netManager; + + ThreadMonitorConnection(NetworkManager var1) { + this.netManager = var1; + } + + public void run() { + try { + Thread.sleep(2000L); + if(NetworkManager.isRunning(this.netManager)) { + NetworkManager.getWriteThread(this.netManager).interrupt(); + this.netManager.networkShutdown("Connection closed"); + } + } catch (Exception var2) { + var2.printStackTrace(); + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/ThreadServerApplication.java b/minecraft_server/src/net/minecraft/src/ThreadServerApplication.java new file mode 100644 index 0000000..39eca63 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ThreadServerApplication.java @@ -0,0 +1,16 @@ +package net.minecraft.src; + +import net.minecraft.server.MinecraftServer; + +public final class ThreadServerApplication extends Thread { + final MinecraftServer mcServer; + + public ThreadServerApplication(String var1, MinecraftServer var2) { + super(var1); + this.mcServer = var2; + } + + public void run() { + this.mcServer.run(); + } +} diff --git a/minecraft_server/src/net/minecraft/src/ThreadSleepForever.java b/minecraft_server/src/net/minecraft/src/ThreadSleepForever.java new file mode 100644 index 0000000..1590ef0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/ThreadSleepForever.java @@ -0,0 +1,22 @@ +package net.minecraft.src; + +import net.minecraft.server.MinecraftServer; + +public class ThreadSleepForever extends Thread { + final MinecraftServer mc; + + public ThreadSleepForever(MinecraftServer var1) { + this.mc = var1; + this.setDaemon(true); + this.start(); + } + + public void run() { + while(true) { + try { + Thread.sleep(2147483647L); + } catch (InterruptedException var2) { + } + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/TileEntity.java b/minecraft_server/src/net/minecraft/src/TileEntity.java new file mode 100644 index 0000000..9c4e2b2 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/TileEntity.java @@ -0,0 +1,75 @@ +package net.minecraft.src; + +import java.util.HashMap; +import java.util.Map; + +public class TileEntity { + private static Map nameToClassMap = new HashMap(); + private static Map classToNameMap = new HashMap(); + public World worldObj; + public int xCoord; + public int yCoord; + public int zCoord; + + private static void addMapping(Class var0, String var1) { + if(classToNameMap.containsKey(var1)) { + throw new IllegalArgumentException("Duplicate id: " + var1); + } else { + nameToClassMap.put(var1, var0); + classToNameMap.put(var0, var1); + } + } + + public void readFromNBT(NBTTagCompound var1) { + this.xCoord = var1.getInteger("x"); + this.yCoord = var1.getInteger("y"); + this.zCoord = var1.getInteger("z"); + } + + public void writeToNBT(NBTTagCompound var1) { + String var2 = (String)classToNameMap.get(this.getClass()); + if(var2 == null) { + throw new RuntimeException(this.getClass() + " is missing a mapping! This is a bug!"); + } else { + var1.setString("id", var2); + var1.setInteger("x", this.xCoord); + var1.setInteger("y", this.yCoord); + var1.setInteger("z", this.zCoord); + } + } + + public void updateEntity() { + } + + public static TileEntity createAndLoadEntity(NBTTagCompound var0) { + TileEntity var1 = null; + + try { + Class var2 = (Class)nameToClassMap.get(var0.getString("id")); + if(var2 != null) { + var1 = (TileEntity)var2.newInstance(); + } + } catch (Exception var3) { + var3.printStackTrace(); + } + + if(var1 != null) { + var1.readFromNBT(var0); + } else { + System.out.println("Skipping TileEntity with id " + var0.getString("id")); + } + + return var1; + } + + public void func_183_c() { + this.worldObj.func_515_b(this.xCoord, this.yCoord, this.zCoord, this); + } + + static { + addMapping(TileEntityFurnace.class, "Furnace"); + addMapping(TileEntityChest.class, "Chest"); + addMapping(TileEntitySign.class, "Sign"); + addMapping(TileEntityMobSpawner.class, "MobSpawner"); + } +} diff --git a/minecraft_server/src/net/minecraft/src/TileEntityChest.java b/minecraft_server/src/net/minecraft/src/TileEntityChest.java new file mode 100644 index 0000000..ff18dd9 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/TileEntityChest.java @@ -0,0 +1,57 @@ +package net.minecraft.src; + +public class TileEntityChest extends TileEntity implements IInventory { + private ItemStack[] field_494_e = new ItemStack[36]; + + public int func_83_a() { + return 27; + } + + public ItemStack getStackInSlot(int var1) { + return this.field_494_e[var1]; + } + + public void func_197_a(int var1, ItemStack var2) { + this.field_494_e[var1] = var2; + if(var2 != null && var2.stackSize > this.func_198_d()) { + var2.stackSize = this.func_198_d(); + } + + this.func_183_c(); + } + + public void readFromNBT(NBTTagCompound var1) { + super.readFromNBT(var1); + NBTTagList var2 = var1.getTagList("Items"); + this.field_494_e = new ItemStack[this.func_83_a()]; + + for(int var3 = 0; var3 < var2.tagCount(); ++var3) { + NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); + int var5 = var4.getByte("Slot") & 255; + if(var5 >= 0 && var5 < this.field_494_e.length) { + this.field_494_e[var5] = new ItemStack(var4); + } + } + + } + + public void writeToNBT(NBTTagCompound var1) { + super.writeToNBT(var1); + NBTTagList var2 = new NBTTagList(); + + for(int var3 = 0; var3 < this.field_494_e.length; ++var3) { + if(this.field_494_e[var3] != null) { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte)var3); + this.field_494_e[var3].writeToNBT(var4); + var2.setTag(var4); + } + } + + var1.setTag("Items", var2); + } + + public int func_198_d() { + return 64; + } +} diff --git a/minecraft_server/src/net/minecraft/src/TileEntityFurnace.java b/minecraft_server/src/net/minecraft/src/TileEntityFurnace.java new file mode 100644 index 0000000..66fe1d7 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/TileEntityFurnace.java @@ -0,0 +1,143 @@ +package net.minecraft.src; + +public class TileEntityFurnace extends TileEntity implements IInventory { + private ItemStack[] field_489_e = new ItemStack[3]; + private int field_488_f = 0; + private int field_487_g = 0; + private int field_486_h = 0; + + public int func_83_a() { + return this.field_489_e.length; + } + + public ItemStack getStackInSlot(int var1) { + return this.field_489_e[var1]; + } + + public void readFromNBT(NBTTagCompound var1) { + super.readFromNBT(var1); + NBTTagList var2 = var1.getTagList("Items"); + this.field_489_e = new ItemStack[this.func_83_a()]; + + for(int var3 = 0; var3 < var2.tagCount(); ++var3) { + NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); + byte var5 = var4.getByte("Slot"); + if(var5 >= 0 && var5 < this.field_489_e.length) { + this.field_489_e[var5] = new ItemStack(var4); + } + } + + this.field_488_f = var1.getShort("BurnTime"); + this.field_486_h = var1.getShort("CookTime"); + this.field_487_g = this.func_194_a(this.field_489_e[1]); + } + + public void writeToNBT(NBTTagCompound var1) { + super.writeToNBT(var1); + var1.setShort("BurnTime", (short)this.field_488_f); + var1.setShort("CookTime", (short)this.field_486_h); + NBTTagList var2 = new NBTTagList(); + + for(int var3 = 0; var3 < this.field_489_e.length; ++var3) { + if(this.field_489_e[var3] != null) { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte)var3); + this.field_489_e[var3].writeToNBT(var4); + var2.setTag(var4); + } + } + + var1.setTag("Items", var2); + } + + public int func_190_d() { + return 64; + } + + public boolean func_191_e() { + return this.field_488_f > 0; + } + + public void updateEntity() { + boolean var1 = this.field_488_f > 0; + boolean var2 = false; + if(this.field_488_f > 0) { + --this.field_488_f; + } + + if(!this.worldObj.multiplayerWorld) { + if(this.field_488_f == 0 && this.func_193_g()) { + this.field_487_g = this.field_488_f = this.func_194_a(this.field_489_e[1]); + if(this.field_488_f > 0) { + var2 = true; + if(this.field_489_e[1] != null) { + --this.field_489_e[1].stackSize; + if(this.field_489_e[1].stackSize == 0) { + this.field_489_e[1] = null; + } + } + } + } + + if(this.func_191_e() && this.func_193_g()) { + ++this.field_486_h; + if(this.field_486_h == 200) { + this.field_486_h = 0; + this.func_189_f(); + var2 = true; + } + } else { + this.field_486_h = 0; + } + + if(var1 != this.field_488_f > 0) { + var2 = true; + BlockFurnace.func_295_a(this.field_488_f > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + } + } + + if(var2) { + this.func_183_c(); + } + + } + + private boolean func_193_g() { + if(this.field_489_e[0] == null) { + return false; + } else { + int var1 = this.func_192_b(this.field_489_e[0].getItem().swiftedIndex); + return var1 < 0 ? false : (this.field_489_e[2] == null ? true : (this.field_489_e[2].itemID != var1 ? false : (this.field_489_e[2].stackSize < this.func_190_d() && this.field_489_e[2].stackSize < this.field_489_e[2].getMaxStackSize() ? true : this.field_489_e[2].stackSize < Item.itemsList[var1].getItemStackLimit()))); + } + } + + public void func_189_f() { + if(this.func_193_g()) { + int var1 = this.func_192_b(this.field_489_e[0].getItem().swiftedIndex); + if(this.field_489_e[2] == null) { + this.field_489_e[2] = new ItemStack(var1, 1); + } else if(this.field_489_e[2].itemID == var1) { + ++this.field_489_e[2].stackSize; + } + + --this.field_489_e[0].stackSize; + if(this.field_489_e[0].stackSize <= 0) { + this.field_489_e[0] = null; + } + + } + } + + private int func_192_b(int var1) { + return var1 == Block.oreIron.blockID ? Item.ingotIron.swiftedIndex : (var1 == Block.oreGold.blockID ? Item.ingotGold.swiftedIndex : (var1 == Block.oreDiamond.blockID ? Item.diamond.swiftedIndex : (var1 == Block.sand.blockID ? Block.glass.blockID : (var1 == Item.porkRaw.swiftedIndex ? Item.porkCooked.swiftedIndex : (var1 == Item.fishRaw.swiftedIndex ? Item.fishCooked.swiftedIndex : (var1 == Block.cobblestone.blockID ? Block.stone.blockID : (var1 == Item.clay.swiftedIndex ? Item.brick.swiftedIndex : -1))))))); + } + + private int func_194_a(ItemStack var1) { + if(var1 == null) { + return 0; + } else { + int var2 = var1.getItem().swiftedIndex; + return var2 < 256 && Block.blocksList[var2].blockMaterial == Material.wood ? 300 : (var2 == Item.stick.swiftedIndex ? 100 : (var2 == Item.coal.swiftedIndex ? 1600 : (var2 == Item.bucketLava.swiftedIndex ? 20000 : 0))); + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/TileEntityMobSpawner.java b/minecraft_server/src/net/minecraft/src/TileEntityMobSpawner.java new file mode 100644 index 0000000..86ab851 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/TileEntityMobSpawner.java @@ -0,0 +1,93 @@ +package net.minecraft.src; + +public class TileEntityMobSpawner extends TileEntity { + public int delay = -1; + public String entityID = "Pig"; + public double field_491_g; + public double field_490_h = 0.0D; + + public TileEntityMobSpawner() { + this.delay = 20; + } + + public boolean func_195_a() { + return this.worldObj.getClosestPlayer((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D, 16.0D) != null; + } + + public void updateEntity() { + this.field_490_h = this.field_491_g; + if(this.func_195_a()) { + double var1 = (double)((float)this.xCoord + this.worldObj.rand.nextFloat()); + double var3 = (double)((float)this.yCoord + this.worldObj.rand.nextFloat()); + double var5 = (double)((float)this.zCoord + this.worldObj.rand.nextFloat()); + this.worldObj.spawnParticle("smoke", var1, var3, var5, 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", var1, var3, var5, 0.0D, 0.0D, 0.0D); + + for(this.field_491_g += (double)(1000.0F / ((float)this.delay + 200.0F)); this.field_491_g > 360.0D; this.field_490_h -= 360.0D) { + this.field_491_g -= 360.0D; + } + + if(this.delay == -1) { + this.updateDelay(); + } + + if(this.delay > 0) { + --this.delay; + } else { + byte var7 = 4; + + for(int var8 = 0; var8 < var7; ++var8) { + EntityLiving var9 = (EntityLiving)((EntityLiving)EntityList.func_567_a(this.entityID, this.worldObj)); + if(var9 == null) { + return; + } + + int var10 = this.worldObj.getEntitiesWithinAABB(var9.getClass(), AxisAlignedBB.getBoundingBoxFromPool((double)this.xCoord, (double)this.yCoord, (double)this.zCoord, (double)(this.xCoord + 1), (double)(this.yCoord + 1), (double)(this.zCoord + 1)).expands(8.0D, 4.0D, 8.0D)).size(); + if(var10 >= 6) { + this.updateDelay(); + return; + } + + if(var9 != null) { + double var11 = (double)this.xCoord + (this.worldObj.rand.nextDouble() - this.worldObj.rand.nextDouble()) * 4.0D; + double var13 = (double)(this.yCoord + this.worldObj.rand.nextInt(3) - 1); + double var15 = (double)this.zCoord + (this.worldObj.rand.nextDouble() - this.worldObj.rand.nextDouble()) * 4.0D; + var9.func_107_c(var11, var13, var15, this.worldObj.rand.nextFloat() * 360.0F, 0.0F); + if(var9.getCanSpawnHere()) { + this.worldObj.entityJoinedWorld(var9); + + for(int var17 = 0; var17 < 20; ++var17) { + var1 = (double)this.xCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; + var3 = (double)this.yCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; + var5 = (double)this.zCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; + this.worldObj.spawnParticle("smoke", var1, var3, var5, 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", var1, var3, var5, 0.0D, 0.0D, 0.0D); + } + + var9.func_156_D(); + this.updateDelay(); + } + } + } + + super.updateEntity(); + } + } + } + + private void updateDelay() { + this.delay = 200 + this.worldObj.rand.nextInt(600); + } + + public void readFromNBT(NBTTagCompound var1) { + super.readFromNBT(var1); + this.entityID = var1.getString("EntityId"); + this.delay = var1.getShort("Delay"); + } + + public void writeToNBT(NBTTagCompound var1) { + super.writeToNBT(var1); + var1.setString("EntityId", this.entityID); + var1.setShort("Delay", (short)this.delay); + } +} diff --git a/minecraft_server/src/net/minecraft/src/TileEntitySign.java b/minecraft_server/src/net/minecraft/src/TileEntitySign.java new file mode 100644 index 0000000..a2c8421 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/TileEntitySign.java @@ -0,0 +1,26 @@ +package net.minecraft.src; + +public class TileEntitySign extends TileEntity { + public String[] signText = new String[]{"", "", "", ""}; + public int lineBeingEdited = -1; + + public void writeToNBT(NBTTagCompound var1) { + super.writeToNBT(var1); + var1.setString("Text1", this.signText[0]); + var1.setString("Text2", this.signText[1]); + var1.setString("Text3", this.signText[2]); + var1.setString("Text4", this.signText[3]); + } + + public void readFromNBT(NBTTagCompound var1) { + super.readFromNBT(var1); + + for(int var2 = 0; var2 < 4; ++var2) { + this.signText[var2] = var1.getString("Text" + (var2 + 1)); + if(this.signText[var2].length() > 15) { + this.signText[var2] = this.signText[var2].substring(0, 15); + } + } + + } +} diff --git a/minecraft_server/src/net/minecraft/src/Vec3D.java b/minecraft_server/src/net/minecraft/src/Vec3D.java new file mode 100644 index 0000000..bbfcba8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/Vec3D.java @@ -0,0 +1,127 @@ +package net.minecraft.src; + +import java.util.ArrayList; +import java.util.List; + +public class Vec3D { + private static List vectorList = new ArrayList(); + private static int nextVector = 0; + public double xCoord; + public double yCoord; + public double zCoord; + + public static Vec3D createVectorHelper(double var0, double var2, double var4) { + return new Vec3D(var0, var2, var4); + } + + public static void initialize() { + nextVector = 0; + } + + public static Vec3D createVector(double var0, double var2, double var4) { + if(nextVector >= vectorList.size()) { + vectorList.add(createVectorHelper(0.0D, 0.0D, 0.0D)); + } + + return ((Vec3D)vectorList.get(nextVector++)).setComponents(var0, var2, var4); + } + + private Vec3D(double var1, double var3, double var5) { + if(var1 == -0.0D) { + var1 = 0.0D; + } + + if(var3 == -0.0D) { + var3 = 0.0D; + } + + if(var5 == -0.0D) { + var5 = 0.0D; + } + + this.xCoord = var1; + this.yCoord = var3; + this.zCoord = var5; + } + + private Vec3D setComponents(double var1, double var3, double var5) { + this.xCoord = var1; + this.yCoord = var3; + this.zCoord = var5; + return this; + } + + public Vec3D normalize() { + double var1 = (double)MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); + return var1 < 1.0E-4D ? createVector(0.0D, 0.0D, 0.0D) : createVector(this.xCoord / var1, this.yCoord / var1, this.zCoord / var1); + } + + public Vec3D addVector(double var1, double var3, double var5) { + return createVector(this.xCoord + var1, this.yCoord + var3, this.zCoord + var5); + } + + public double distanceTo(Vec3D var1) { + double var2 = var1.xCoord - this.xCoord; + double var4 = var1.yCoord - this.yCoord; + double var6 = var1.zCoord - this.zCoord; + return (double)MathHelper.sqrt_double(var2 * var2 + var4 * var4 + var6 * var6); + } + + public double squareDistanceTo(Vec3D var1) { + double var2 = var1.xCoord - this.xCoord; + double var4 = var1.yCoord - this.yCoord; + double var6 = var1.zCoord - this.zCoord; + return var2 * var2 + var4 * var4 + var6 * var6; + } + + public double squareDistanceTo(double var1, double var3, double var5) { + double var7 = var1 - this.xCoord; + double var9 = var3 - this.yCoord; + double var11 = var5 - this.zCoord; + return var7 * var7 + var9 * var9 + var11 * var11; + } + + public double lengthVector() { + return (double)MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); + } + + public Vec3D getIntermediateWithXValue(Vec3D var1, double var2) { + double var4 = var1.xCoord - this.xCoord; + double var6 = var1.yCoord - this.yCoord; + double var8 = var1.zCoord - this.zCoord; + if(var4 * var4 < (double)1.0E-7F) { + return null; + } else { + double var10 = (var2 - this.xCoord) / var4; + return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; + } + } + + public Vec3D getIntermediateWithYValue(Vec3D var1, double var2) { + double var4 = var1.xCoord - this.xCoord; + double var6 = var1.yCoord - this.yCoord; + double var8 = var1.zCoord - this.zCoord; + if(var6 * var6 < (double)1.0E-7F) { + return null; + } else { + double var10 = (var2 - this.yCoord) / var6; + return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; + } + } + + public Vec3D getIntermediateWithZValue(Vec3D var1, double var2) { + double var4 = var1.xCoord - this.xCoord; + double var6 = var1.yCoord - this.yCoord; + double var8 = var1.zCoord - this.zCoord; + if(var8 * var8 < (double)1.0E-7F) { + return null; + } else { + double var10 = (var2 - this.zCoord) / var8; + return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; + } + } + + public String toString() { + return "(" + this.xCoord + ", " + this.yCoord + ", " + this.zCoord + ")"; + } +} diff --git a/minecraft_server/src/net/minecraft/src/World.java b/minecraft_server/src/net/minecraft/src/World.java new file mode 100644 index 0000000..246af30 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/World.java @@ -0,0 +1,1658 @@ +package net.minecraft.src; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import java.util.Set; +import java.util.TreeSet; + +public class World implements IBlockAccess { + public boolean field_4280_a = false; + private List field_821 = new ArrayList(); + public List field_815_a = new ArrayList(); + private List field_790_z = new ArrayList(); + private TreeSet scheduledTickTreeSet = new TreeSet(); + private Set scheduledTickSet = new HashSet(); + public List field_814_b = new ArrayList(); + public List playerEntities = new ArrayList(); + public long worldTime = 0L; + private long field_6159_E = 16777215L; + public int skylightSubtracted = 0; + protected int field_4279_g = (new Random()).nextInt(); + protected int field_4278_h = 1013904223; + public boolean field_808_h = false; + private long field_784_F = System.currentTimeMillis(); + protected int field_4277_j = 40; + public int monstersEnabled; + public Random rand = new Random(); + public int spawnX; + public int spawnY; + public int spawnZ; + public boolean field_9212_p = false; + public final WorldProvider field_4272_q; + protected List field_798_r = new ArrayList(); + private IChunkProvider chunkProvider; + public File field_9211_s; + public File field_797_s; + public long randomSeed = 0L; + private NBTTagCompound nbtCompoundPlayer; + public long sizeOnDisk = 0L; + public final String field_9210_w; + public boolean field_9209_x; + private ArrayList field_9207_I = new ArrayList(); + private int field_4265_J = 0; + static int field_4268_y = 0; + private Set field_4264_K = new HashSet(); + private int field_4263_L = this.rand.nextInt(12000); + private List field_778_L = new ArrayList(); + public boolean multiplayerWorld = false; + + public WorldChunkManager func_4077_a() { + return this.field_4272_q.field_4301_b; + } + + public World(File var1, String var2, long var3, WorldProvider var5) { + this.field_9211_s = var1; + this.field_9210_w = var2; + var1.mkdirs(); + this.field_797_s = new File(var1, var2); + this.field_797_s.mkdirs(); + + try { + File var6 = new File(this.field_797_s, "session.lock"); + DataOutputStream var7 = new DataOutputStream(new FileOutputStream(var6)); + + try { + var7.writeLong(this.field_784_F); + } finally { + var7.close(); + } + } catch (IOException var16) { + var16.printStackTrace(); + throw new RuntimeException("Failed to check session lock, aborting"); + } + + Object var17 = new WorldProvider(); + File var18 = new File(this.field_797_s, "level.dat"); + this.field_9212_p = !var18.exists(); + if(var18.exists()) { + try { + NBTTagCompound var8 = CompressedStreamTools.func_770_a(new FileInputStream(var18)); + NBTTagCompound var9 = var8.getCompoundTag("Data"); + this.randomSeed = var9.getLong("RandomSeed"); + this.spawnX = var9.getInteger("SpawnX"); + this.spawnY = var9.getInteger("SpawnY"); + this.spawnZ = var9.getInteger("SpawnZ"); + this.worldTime = var9.getLong("Time"); + this.sizeOnDisk = var9.getLong("SizeOnDisk"); + if(var9.hasKey("Player")) { + this.nbtCompoundPlayer = var9.getCompoundTag("Player"); + int var10 = this.nbtCompoundPlayer.getInteger("Dimension"); + if(var10 == -1) { + var17 = new WorldProviderHell(); + } + } + } catch (Exception var14) { + var14.printStackTrace(); + } + } + + if(var5 != null) { + var17 = var5; + } + + boolean var19 = false; + if(this.randomSeed == 0L) { + this.randomSeed = var3; + var19 = true; + } + + this.field_4272_q = (WorldProvider)var17; + this.field_4272_q.func_4093_a(this); + this.chunkProvider = this.func_4076_a(this.field_797_s); + if(var19) { + this.field_9209_x = true; + this.spawnX = 0; + this.spawnY = 64; + + for(this.spawnZ = 0; !this.field_4272_q.canCoordinateBeSpawn(this.spawnX, this.spawnZ); this.spawnZ += this.rand.nextInt(64) - this.rand.nextInt(64)) { + this.spawnX += this.rand.nextInt(64) - this.rand.nextInt(64); + } + + this.field_9209_x = false; + } + + this.calculateInitialSkylight(); + } + + protected IChunkProvider func_4076_a(File var1) { + return new ChunkProviderLoadOrGenerate(this, this.field_4272_q.getChunkLoader(var1), this.field_4272_q.getChunkProvider()); + } + + public int func_528_f(int var1, int var2) { + int var3; + for(var3 = 63; this.getBlockId(var1, var3 + 1, var2) != 0; ++var3) { + } + + return this.getBlockId(var1, var3, var2); + } + + public void func_485_a(boolean var1, IProgressUpdate var2) { + if(this.chunkProvider.func_364_b()) { + if(var2 != null) { + var2.func_438_a("Saving level"); + } + + this.func_478_h(); + if(var2 != null) { + var2.func_439_b("Saving chunks"); + } + + this.chunkProvider.saveWorld(var1, var2); + } + } + + private void func_478_h() { + this.func_476_g(); + NBTTagCompound var1 = new NBTTagCompound(); + var1.setLong("RandomSeed", this.randomSeed); + var1.setInteger("SpawnX", this.spawnX); + var1.setInteger("SpawnY", this.spawnY); + var1.setInteger("SpawnZ", this.spawnZ); + var1.setLong("Time", this.worldTime); + var1.setLong("SizeOnDisk", this.sizeOnDisk); + var1.setLong("LastPlayed", System.currentTimeMillis()); + EntityPlayer var2 = null; + if(this.playerEntities.size() > 0) { + var2 = (EntityPlayer)this.playerEntities.get(0); + } + + NBTTagCompound var3; + if(var2 != null) { + var3 = new NBTTagCompound(); + var2.writeToNBT(var3); + var1.setCompoundTag("Player", var3); + } + + var3 = new NBTTagCompound(); + var3.setTag("Data", var1); + + try { + File var4 = new File(this.field_797_s, "level.dat_new"); + File var5 = new File(this.field_797_s, "level.dat_old"); + File var6 = new File(this.field_797_s, "level.dat"); + CompressedStreamTools.func_769_a(var3, new FileOutputStream(var4)); + if(var5.exists()) { + var5.delete(); + } + + var6.renameTo(var5); + if(var6.exists()) { + var6.delete(); + } + + var4.renameTo(var6); + if(var4.exists()) { + var4.delete(); + } + } catch (Exception var7) { + var7.printStackTrace(); + } + + } + + public int getBlockId(int var1, int var2, int var3) { + return var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000 ? (var2 < 0 ? 0 : (var2 >= 128 ? 0 : this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4).getBlockID(var1 & 15, var2, var3 & 15))) : 0; + } + + public boolean func_530_e(int var1, int var2, int var3) { + return var2 >= 0 && var2 < 128 ? this.chunkExists(var1 >> 4, var3 >> 4) : false; + } + + public boolean checkChunksExist(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var5 >= 0 && var2 < 128) { + var1 >>= 4; + var2 >>= 4; + var3 >>= 4; + var4 >>= 4; + var5 >>= 4; + var6 >>= 4; + + for(int var7 = var1; var7 <= var4; ++var7) { + for(int var8 = var3; var8 <= var6; ++var8) { + if(!this.chunkExists(var7, var8)) { + return false; + } + } + } + + return true; + } else { + return false; + } + } + + private boolean chunkExists(int var1, int var2) { + return this.chunkProvider.chunkExists(var1, var2); + } + + public Chunk getChunkFromBlockCoords(int var1, int var2) { + return this.getChunkFromChunkCoords(var1 >> 4, var2 >> 4); + } + + public Chunk getChunkFromChunkCoords(int var1, int var2) { + return this.chunkProvider.func_363_b(var1, var2); + } + + public boolean func_470_a(int var1, int var2, int var3, int var4, int var5) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + if(var2 < 0) { + return false; + } else if(var2 >= 128) { + return false; + } else { + Chunk var6 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + return var6.setBlockIDWithMetadata(var1 & 15, var2, var3 & 15, var4, var5); + } + } else { + return false; + } + } + + public boolean setBlock(int var1, int var2, int var3, int var4) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + if(var2 < 0) { + return false; + } else if(var2 >= 128) { + return false; + } else { + Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + return var5.setBlockID(var1 & 15, var2, var3 & 15, var4); + } + } else { + return false; + } + } + + public Material getBlockMaterial(int var1, int var2, int var3) { + int var4 = this.getBlockId(var1, var2, var3); + return var4 == 0 ? Material.air : Block.blocksList[var4].blockMaterial; + } + + public int getBlockMetadata(int var1, int var2, int var3) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + if(var2 < 0) { + return 0; + } else if(var2 >= 128) { + return 0; + } else { + Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + var1 &= 15; + var3 &= 15; + return var4.getBlockMetadata(var1, var2, var3); + } + } else { + return 0; + } + } + + public void setBlockMetadataWithNotify(int var1, int var2, int var3, int var4) { + if(this.setBlockMetadata(var1, var2, var3, var4)) { + this.notifyBlockChange(var1, var2, var3, this.getBlockId(var1, var2, var3)); + } + + } + + public boolean setBlockMetadata(int var1, int var2, int var3, int var4) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + if(var2 < 0) { + return false; + } else if(var2 >= 128) { + return false; + } else { + Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + var1 &= 15; + var3 &= 15; + var5.setBlockMetadata(var1, var2, var3, var4); + return true; + } + } else { + return false; + } + } + + public boolean setBlockWithNotify(int var1, int var2, int var3, int var4) { + if(this.setBlock(var1, var2, var3, var4)) { + this.notifyBlockChange(var1, var2, var3, var4); + return true; + } else { + return false; + } + } + + public boolean func_507_b(int var1, int var2, int var3, int var4, int var5) { + if(this.func_470_a(var1, var2, var3, var4, var5)) { + this.notifyBlockChange(var1, var2, var3, var4); + return true; + } else { + return false; + } + } + + public void func_521_f(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.field_798_r.size(); ++var4) { + ((IWorldAccess)this.field_798_r.get(var4)).func_683_a(var1, var2, var3); + } + + } + + protected void notifyBlockChange(int var1, int var2, int var3, int var4) { + this.func_521_f(var1, var2, var3); + this.notifyBlocksOfNeighborChange(var1, var2, var3, var4); + } + + public void func_498_f(int var1, int var2, int var3, int var4) { + if(var3 > var4) { + int var5 = var4; + var4 = var3; + var3 = var5; + } + + this.func_519_b(var1, var3, var2, var1, var4, var2); + } + + public void func_519_b(int var1, int var2, int var3, int var4, int var5, int var6) { + for(int var7 = 0; var7 < this.field_798_r.size(); ++var7) { + ((IWorldAccess)this.field_798_r.get(var7)).func_685_a(var1, var2, var3, var4, var5, var6); + } + + } + + public void notifyBlocksOfNeighborChange(int var1, int var2, int var3, int var4) { + this.notifyBlockOfNeighborChange(var1 - 1, var2, var3, var4); + this.notifyBlockOfNeighborChange(var1 + 1, var2, var3, var4); + this.notifyBlockOfNeighborChange(var1, var2 - 1, var3, var4); + this.notifyBlockOfNeighborChange(var1, var2 + 1, var3, var4); + this.notifyBlockOfNeighborChange(var1, var2, var3 - 1, var4); + this.notifyBlockOfNeighborChange(var1, var2, var3 + 1, var4); + } + + private void notifyBlockOfNeighborChange(int var1, int var2, int var3, int var4) { + if(!this.field_808_h && !this.multiplayerWorld) { + Block var5 = Block.blocksList[this.getBlockId(var1, var2, var3)]; + if(var5 != null) { + var5.onNeighborBlockChange(this, var1, var2, var3, var4); + } + + } + } + + public boolean canBlockSeeTheSky(int var1, int var2, int var3) { + return this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4).canBlockSeeTheSky(var1 & 15, var2, var3 & 15); + } + + public int getBlockLightValue(int var1, int var2, int var3) { + return this.getBlockLightValue(var1, var2, var3, true); + } + + public int getBlockLightValue(int var1, int var2, int var3, boolean var4) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + int var5; + if(var4) { + var5 = this.getBlockId(var1, var2, var3); + if(var5 == Block.stairSingle.blockID || var5 == Block.tilledField.blockID) { + int var6 = this.getBlockLightValue(var1, var2 + 1, var3, false); + int var7 = this.getBlockLightValue(var1 + 1, var2, var3, false); + int var8 = this.getBlockLightValue(var1 - 1, var2, var3, false); + int var9 = this.getBlockLightValue(var1, var2, var3 + 1, false); + int var10 = this.getBlockLightValue(var1, var2, var3 - 1, false); + if(var7 > var6) { + var6 = var7; + } + + if(var8 > var6) { + var6 = var8; + } + + if(var9 > var6) { + var6 = var9; + } + + if(var10 > var6) { + var6 = var10; + } + + return var6; + } + } + + if(var2 < 0) { + return 0; + } else if(var2 >= 128) { + var5 = 15 - this.skylightSubtracted; + if(var5 < 0) { + var5 = 0; + } + + return var5; + } else { + Chunk var11 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + var1 &= 15; + var3 &= 15; + return var11.getBlockLightValue(var1, var2, var3, this.skylightSubtracted); + } + } else { + return 15; + } + } + + public boolean canExistingBlockSeeTheSky(int var1, int var2, int var3) { + if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { + if(var2 < 0) { + return false; + } else if(var2 >= 128) { + return true; + } else if(!this.chunkExists(var1 >> 4, var3 >> 4)) { + return false; + } else { + Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + var1 &= 15; + var3 &= 15; + return var4.canBlockSeeTheSky(var1, var2, var3); + } + } else { + return false; + } + } + + public int getHeightValue(int var1, int var2) { + if(var1 >= -32000000 && var2 >= -32000000 && var1 < 32000000 && var2 <= 32000000) { + if(!this.chunkExists(var1 >> 4, var2 >> 4)) { + return 0; + } else { + Chunk var3 = this.getChunkFromChunkCoords(var1 >> 4, var2 >> 4); + return var3.getHeightValue(var1 & 15, var2 & 15); + } + } else { + return 0; + } + } + + public void neighborLightPropagationChanged(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { + if(!this.field_4272_q.field_4306_c || var1 != EnumSkyBlock.Sky) { + if(this.func_530_e(var2, var3, var4)) { + if(var1 == EnumSkyBlock.Sky) { + if(this.canExistingBlockSeeTheSky(var2, var3, var4)) { + var5 = 15; + } + } else if(var1 == EnumSkyBlock.Block) { + int var6 = this.getBlockId(var2, var3, var4); + if(Block.lightValue[var6] > var5) { + var5 = Block.lightValue[var6]; + } + } + + if(this.getSavedLightValue(var1, var2, var3, var4) != var5) { + this.func_483_a(var1, var2, var3, var4, var2, var3, var4); + } + + } + } + } + + public int getSavedLightValue(EnumSkyBlock var1, int var2, int var3, int var4) { + if(var3 >= 0 && var3 < 128 && var2 >= -32000000 && var4 >= -32000000 && var2 < 32000000 && var4 <= 32000000) { + int var5 = var2 >> 4; + int var6 = var4 >> 4; + if(!this.chunkExists(var5, var6)) { + return 0; + } else { + Chunk var7 = this.getChunkFromChunkCoords(var5, var6); + return var7.getSavedLightValue(var1, var2 & 15, var3, var4 & 15); + } + } else { + return var1.field_984_c; + } + } + + public void setLightValue(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { + if(var2 >= -32000000 && var4 >= -32000000 && var2 < 32000000 && var4 <= 32000000) { + if(var3 >= 0) { + if(var3 < 128) { + if(this.chunkExists(var2 >> 4, var4 >> 4)) { + Chunk var6 = this.getChunkFromChunkCoords(var2 >> 4, var4 >> 4); + var6.setLightValue(var1, var2 & 15, var3, var4 & 15, var5); + + for(int var7 = 0; var7 < this.field_798_r.size(); ++var7) { + ((IWorldAccess)this.field_798_r.get(var7)).func_683_a(var2, var3, var4); + } + + } + } + } + } + } + + public float getLightBrightness(int var1, int var2, int var3) { + return this.field_4272_q.lightBrightnessTable[this.getBlockLightValue(var1, var2, var3)]; + } + + public boolean isDaytime() { + return this.skylightSubtracted < 4; + } + + public MovingObjectPosition func_486_a(Vec3D var1, Vec3D var2) { + return this.func_505_a(var1, var2, false); + } + + public MovingObjectPosition func_505_a(Vec3D var1, Vec3D var2, boolean var3) { + if(!Double.isNaN(var1.xCoord) && !Double.isNaN(var1.yCoord) && !Double.isNaN(var1.zCoord)) { + if(!Double.isNaN(var2.xCoord) && !Double.isNaN(var2.yCoord) && !Double.isNaN(var2.zCoord)) { + int var4 = MathHelper.floor_double(var2.xCoord); + int var5 = MathHelper.floor_double(var2.yCoord); + int var6 = MathHelper.floor_double(var2.zCoord); + int var7 = MathHelper.floor_double(var1.xCoord); + int var8 = MathHelper.floor_double(var1.yCoord); + int var9 = MathHelper.floor_double(var1.zCoord); + int var10 = 200; + + while(var10-- >= 0) { + if(Double.isNaN(var1.xCoord) || Double.isNaN(var1.yCoord) || Double.isNaN(var1.zCoord)) { + return null; + } + + if(var7 == var4 && var8 == var5 && var9 == var6) { + return null; + } + + double var11 = 999.0D; + double var13 = 999.0D; + double var15 = 999.0D; + if(var4 > var7) { + var11 = (double)var7 + 1.0D; + } + + if(var4 < var7) { + var11 = (double)var7 + 0.0D; + } + + if(var5 > var8) { + var13 = (double)var8 + 1.0D; + } + + if(var5 < var8) { + var13 = (double)var8 + 0.0D; + } + + if(var6 > var9) { + var15 = (double)var9 + 1.0D; + } + + if(var6 < var9) { + var15 = (double)var9 + 0.0D; + } + + double var17 = 999.0D; + double var19 = 999.0D; + double var21 = 999.0D; + double var23 = var2.xCoord - var1.xCoord; + double var25 = var2.yCoord - var1.yCoord; + double var27 = var2.zCoord - var1.zCoord; + if(var11 != 999.0D) { + var17 = (var11 - var1.xCoord) / var23; + } + + if(var13 != 999.0D) { + var19 = (var13 - var1.yCoord) / var25; + } + + if(var15 != 999.0D) { + var21 = (var15 - var1.zCoord) / var27; + } + + boolean var29 = false; + byte var35; + if(var17 < var19 && var17 < var21) { + if(var4 > var7) { + var35 = 4; + } else { + var35 = 5; + } + + var1.xCoord = var11; + var1.yCoord += var25 * var17; + var1.zCoord += var27 * var17; + } else if(var19 < var21) { + if(var5 > var8) { + var35 = 0; + } else { + var35 = 1; + } + + var1.xCoord += var23 * var19; + var1.yCoord = var13; + var1.zCoord += var27 * var19; + } else { + if(var6 > var9) { + var35 = 2; + } else { + var35 = 3; + } + + var1.xCoord += var23 * var21; + var1.yCoord += var25 * var21; + var1.zCoord = var15; + } + + Vec3D var30 = Vec3D.createVector(var1.xCoord, var1.yCoord, var1.zCoord); + var7 = (int)(var30.xCoord = (double)MathHelper.floor_double(var1.xCoord)); + if(var35 == 5) { + --var7; + ++var30.xCoord; + } + + var8 = (int)(var30.yCoord = (double)MathHelper.floor_double(var1.yCoord)); + if(var35 == 1) { + --var8; + ++var30.yCoord; + } + + var9 = (int)(var30.zCoord = (double)MathHelper.floor_double(var1.zCoord)); + if(var35 == 3) { + --var9; + ++var30.zCoord; + } + + int var31 = this.getBlockId(var7, var8, var9); + int var32 = this.getBlockMetadata(var7, var8, var9); + Block var33 = Block.blocksList[var31]; + if(var31 > 0 && var33.canCollideCheck(var32, var3)) { + MovingObjectPosition var34 = var33.collisionRayTrace(this, var7, var8, var9, var1, var2); + if(var34 != null) { + return var34; + } + } + } + + return null; + } else { + return null; + } + } else { + return null; + } + } + + public void playSoundAtEntity(Entity var1, String var2, float var3, float var4) { + for(int var5 = 0; var5 < this.field_798_r.size(); ++var5) { + ((IWorldAccess)this.field_798_r.get(var5)).playSound(var2, var1.posX, var1.posY - (double)var1.yOffset, var1.posZ, var3, var4); + } + + } + + public void playSoundEffect(double var1, double var3, double var5, String var7, float var8, float var9) { + for(int var10 = 0; var10 < this.field_798_r.size(); ++var10) { + ((IWorldAccess)this.field_798_r.get(var10)).playSound(var7, var1, var3, var5, var8, var9); + } + + } + + public void playRecord(String var1, int var2, int var3, int var4) { + for(int var5 = 0; var5 < this.field_798_r.size(); ++var5) { + ((IWorldAccess)this.field_798_r.get(var5)).playRecord(var1, var2, var3, var4); + } + + } + + public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { + for(int var14 = 0; var14 < this.field_798_r.size(); ++var14) { + ((IWorldAccess)this.field_798_r.get(var14)).spawnParticle(var1, var2, var4, var6, var8, var10, var12); + } + + } + + public boolean entityJoinedWorld(Entity var1) { + int var2 = MathHelper.floor_double(var1.posX / 16.0D); + int var3 = MathHelper.floor_double(var1.posZ / 16.0D); + boolean var4 = false; + if(var1 instanceof EntityPlayer) { + var4 = true; + } + + if(!var4 && !this.chunkExists(var2, var3)) { + return false; + } else { + if(var1 instanceof EntityPlayer) { + this.playerEntities.add((EntityPlayer)var1); + System.out.println("Player count: " + this.playerEntities.size()); + } + + this.getChunkFromChunkCoords(var2, var3).addEntity(var1); + this.field_815_a.add(var1); + this.func_479_b(var1); + return true; + } + } + + protected void func_479_b(Entity var1) { + for(int var2 = 0; var2 < this.field_798_r.size(); ++var2) { + ((IWorldAccess)this.field_798_r.get(var2)).func_681_a(var1); + } + + } + + protected void func_531_c(Entity var1) { + for(int var2 = 0; var2 < this.field_798_r.size(); ++var2) { + ((IWorldAccess)this.field_798_r.get(var2)).func_688_b(var1); + } + + } + + public void func_12016_d(Entity var1) { + var1.setEntityDead(); + if(var1 instanceof EntityPlayer) { + this.playerEntities.remove((EntityPlayer)var1); + } + + } + + public void func_12014_e(Entity var1) { + var1.setEntityDead(); + if(var1 instanceof EntityPlayer) { + this.playerEntities.remove((EntityPlayer)var1); + } + + int var2 = var1.field_307_aa; + int var3 = var1.field_303_ac; + if(var1.field_276_Z && this.chunkExists(var2, var3)) { + this.getChunkFromChunkCoords(var2, var3).func_350_b(var1); + } + + this.field_815_a.remove(var1); + this.func_531_c(var1); + } + + public void func_4072_a(IWorldAccess var1) { + this.field_798_r.add(var1); + } + + public List getCollidingBoundingBoxes(Entity var1, AxisAlignedBB var2) { + this.field_9207_I.clear(); + int var3 = MathHelper.floor_double(var2.minX); + int var4 = MathHelper.floor_double(var2.maxX + 1.0D); + int var5 = MathHelper.floor_double(var2.minY); + int var6 = MathHelper.floor_double(var2.maxY + 1.0D); + int var7 = MathHelper.floor_double(var2.minZ); + int var8 = MathHelper.floor_double(var2.maxZ + 1.0D); + + for(int var9 = var3; var9 < var4; ++var9) { + for(int var10 = var7; var10 < var8; ++var10) { + if(this.func_530_e(var9, 64, var10)) { + for(int var11 = var5 - 1; var11 < var6; ++var11) { + Block var12 = Block.blocksList[this.getBlockId(var9, var11, var10)]; + if(var12 != null) { + var12.getCollidingBoundingBoxes(this, var9, var11, var10, var2, this.field_9207_I); + } + } + } + } + } + + double var14 = 0.25D; + List var15 = this.getEntitiesWithinAABBExcludingEntity(var1, var2.expands(var14, var14, var14)); + + for(int var16 = 0; var16 < var15.size(); ++var16) { + AxisAlignedBB var13 = ((Entity)var15.get(var16)).func_93_n(); + if(var13 != null && var13.intersectsWith(var2)) { + this.field_9207_I.add(var13); + } + + var13 = var1.func_89_d((Entity)var15.get(var16)); + if(var13 != null && var13.intersectsWith(var2)) { + this.field_9207_I.add(var13); + } + } + + return this.field_9207_I; + } + + public int calculateSkylightSubtracted(float var1) { + float var2 = this.func_477_b(var1); + float var3 = 1.0F - (MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 0.5F); + if(var3 < 0.0F) { + var3 = 0.0F; + } + + if(var3 > 1.0F) { + var3 = 1.0F; + } + + return (int)(var3 * 11.0F); + } + + public float func_477_b(float var1) { + return this.field_4272_q.func_4089_a(this.worldTime, var1); + } + + public int func_4075_e(int var1, int var2) { + Chunk var3 = this.getChunkFromBlockCoords(var1, var2); + + int var4; + for(var4 = 127; this.getBlockMaterial(var1, var4, var2).func_218_c() && var4 > 0; --var4) { + } + + var1 &= 15; + + for(var2 &= 15; var4 > 0; --var4) { + int var5 = var3.getBlockID(var1, var4, var2); + if(var5 != 0 && (Block.blocksList[var5].blockMaterial.func_218_c() || Block.blocksList[var5].blockMaterial.getIsLiquid())) { + return var4 + 1; + } + } + + return -1; + } + + public void scheduleBlockUpdate(int var1, int var2, int var3, int var4) { + NextTickListEntry var5 = new NextTickListEntry(var1, var2, var3, var4); + byte var6 = 8; + if(this.field_4280_a) { + if(this.checkChunksExist(var5.xCoord - var6, var5.yCoord - var6, var5.zCoord - var6, var5.xCoord + var6, var5.yCoord + var6, var5.zCoord + var6)) { + int var7 = this.getBlockId(var5.xCoord, var5.yCoord, var5.zCoord); + if(var7 == var5.blockID && var7 > 0) { + Block.blocksList[var7].updateTick(this, var5.xCoord, var5.yCoord, var5.zCoord, this.rand); + } + } + + } else { + if(this.checkChunksExist(var1 - var6, var2 - var6, var3 - var6, var1 + var6, var2 + var6, var3 + var6)) { + if(var4 > 0) { + var5.setScheduledTime((long)Block.blocksList[var4].tickRate() + this.worldTime); + } + + if(!this.scheduledTickSet.contains(var5)) { + this.scheduledTickSet.add(var5); + this.scheduledTickTreeSet.add(var5); + } + } + + } + } + + public void func_459_b() { + this.field_815_a.removeAll(this.field_790_z); + + int var1; + Entity var2; + int var3; + int var4; + for(var1 = 0; var1 < this.field_790_z.size(); ++var1) { + var2 = (Entity)this.field_790_z.get(var1); + var3 = var2.field_307_aa; + var4 = var2.field_303_ac; + if(var2.field_276_Z && this.chunkExists(var3, var4)) { + this.getChunkFromChunkCoords(var3, var4).func_350_b(var2); + } + } + + for(var1 = 0; var1 < this.field_790_z.size(); ++var1) { + this.func_531_c((Entity)this.field_790_z.get(var1)); + } + + this.field_790_z.clear(); + + for(var1 = 0; var1 < this.field_815_a.size(); ++var1) { + var2 = (Entity)this.field_815_a.get(var1); + if(var2.field_327_g != null) { + if(!var2.field_327_g.field_304_B && var2.field_327_g.field_328_f == var2) { + continue; + } + + var2.field_327_g.field_328_f = null; + var2.field_327_g = null; + } + + if(!var2.field_304_B) { + this.func_520_e(var2); + } + + if(var2.field_304_B) { + var3 = var2.field_307_aa; + var4 = var2.field_303_ac; + if(var2.field_276_Z && this.chunkExists(var3, var4)) { + this.getChunkFromChunkCoords(var3, var4).func_350_b(var2); + } + + this.field_815_a.remove(var1--); + this.func_531_c(var2); + } + } + + for(var1 = 0; var1 < this.field_814_b.size(); ++var1) { + TileEntity var5 = (TileEntity)this.field_814_b.get(var1); + var5.updateEntity(); + } + + } + + public void func_520_e(Entity var1) { + this.func_4074_a(var1, true); + } + + public void func_4074_a(Entity var1, boolean var2) { + int var3 = MathHelper.floor_double(var1.posX); + int var4 = MathHelper.floor_double(var1.posZ); + byte var5 = 16; + if(var2 || this.checkChunksExist(var3 - var5, 0, var4 - var5, var3 + var5, 128, var4 + var5)) { + var1.field_9071_O = var1.posX; + var1.field_9070_P = var1.posY; + var1.field_9069_Q = var1.posZ; + var1.prevRotationYaw = var1.rotationYaw; + var1.prevRotationPitch = var1.rotationPitch; + if(var2 && var1.field_276_Z) { + if(var1.field_327_g != null) { + var1.func_115_v(); + } else { + var1.onUpdate(); + } + } + + if(Double.isNaN(var1.posX) || Double.isInfinite(var1.posX)) { + var1.posX = var1.field_9071_O; + } + + if(Double.isNaN(var1.posY) || Double.isInfinite(var1.posY)) { + var1.posY = var1.field_9070_P; + } + + if(Double.isNaN(var1.posZ) || Double.isInfinite(var1.posZ)) { + var1.posZ = var1.field_9069_Q; + } + + if(Double.isNaN((double)var1.rotationPitch) || Double.isInfinite((double)var1.rotationPitch)) { + var1.rotationPitch = var1.prevRotationPitch; + } + + if(Double.isNaN((double)var1.rotationYaw) || Double.isInfinite((double)var1.rotationYaw)) { + var1.rotationYaw = var1.prevRotationYaw; + } + + int var6 = MathHelper.floor_double(var1.posX / 16.0D); + int var7 = MathHelper.floor_double(var1.posY / 16.0D); + int var8 = MathHelper.floor_double(var1.posZ / 16.0D); + if(!var1.field_276_Z || var1.field_307_aa != var6 || var1.field_305_ab != var7 || var1.field_303_ac != var8) { + if(var1.field_276_Z && this.chunkExists(var1.field_307_aa, var1.field_303_ac)) { + this.getChunkFromChunkCoords(var1.field_307_aa, var1.field_303_ac).func_332_a(var1, var1.field_305_ab); + } + + if(this.chunkExists(var6, var8)) { + var1.field_276_Z = true; + this.getChunkFromChunkCoords(var6, var8).addEntity(var1); + } else { + var1.field_276_Z = false; + } + } + + if(var2 && var1.field_276_Z && var1.field_328_f != null) { + if(!var1.field_328_f.field_304_B && var1.field_328_f.field_327_g == var1) { + this.func_520_e(var1.field_328_f); + } else { + var1.field_328_f.field_327_g = null; + var1.field_328_f = null; + } + } + + } + } + + public boolean func_522_a(AxisAlignedBB var1) { + List var2 = this.getEntitiesWithinAABBExcludingEntity((Entity)null, var1); + + for(int var3 = 0; var3 < var2.size(); ++var3) { + Entity var4 = (Entity)var2.get(var3); + if(!var4.field_304_B && var4.field_329_e) { + return false; + } + } + + return true; + } + + public boolean getIsAnyLiquid(AxisAlignedBB var1) { + int var2 = MathHelper.floor_double(var1.minX); + int var3 = MathHelper.floor_double(var1.maxX + 1.0D); + int var4 = MathHelper.floor_double(var1.minY); + int var5 = MathHelper.floor_double(var1.maxY + 1.0D); + int var6 = MathHelper.floor_double(var1.minZ); + int var7 = MathHelper.floor_double(var1.maxZ + 1.0D); + if(var1.minX < 0.0D) { + --var2; + } + + if(var1.minY < 0.0D) { + --var4; + } + + if(var1.minZ < 0.0D) { + --var6; + } + + for(int var8 = var2; var8 < var3; ++var8) { + for(int var9 = var4; var9 < var5; ++var9) { + for(int var10 = var6; var10 < var7; ++var10) { + Block var11 = Block.blocksList[this.getBlockId(var8, var9, var10)]; + if(var11 != null && var11.blockMaterial.getIsLiquid()) { + return true; + } + } + } + } + + return false; + } + + public boolean func_523_c(AxisAlignedBB var1) { + int var2 = MathHelper.floor_double(var1.minX); + int var3 = MathHelper.floor_double(var1.maxX + 1.0D); + int var4 = MathHelper.floor_double(var1.minY); + int var5 = MathHelper.floor_double(var1.maxY + 1.0D); + int var6 = MathHelper.floor_double(var1.minZ); + int var7 = MathHelper.floor_double(var1.maxZ + 1.0D); + + for(int var8 = var2; var8 < var3; ++var8) { + for(int var9 = var4; var9 < var5; ++var9) { + for(int var10 = var6; var10 < var7; ++var10) { + int var11 = this.getBlockId(var8, var9, var10); + if(var11 == Block.fire.blockID || var11 == Block.lavaStill.blockID || var11 == Block.lavaMoving.blockID) { + return true; + } + } + } + } + + return false; + } + + public boolean func_490_a(AxisAlignedBB var1, Material var2, Entity var3) { + int var4 = MathHelper.floor_double(var1.minX); + int var5 = MathHelper.floor_double(var1.maxX + 1.0D); + int var6 = MathHelper.floor_double(var1.minY); + int var7 = MathHelper.floor_double(var1.maxY + 1.0D); + int var8 = MathHelper.floor_double(var1.minZ); + int var9 = MathHelper.floor_double(var1.maxZ + 1.0D); + boolean var10 = false; + Vec3D var11 = Vec3D.createVector(0.0D, 0.0D, 0.0D); + + for(int var12 = var4; var12 < var5; ++var12) { + for(int var13 = var6; var13 < var7; ++var13) { + for(int var14 = var8; var14 < var9; ++var14) { + Block var15 = Block.blocksList[this.getBlockId(var12, var13, var14)]; + if(var15 != null && var15.blockMaterial == var2) { + double var16 = (double)((float)(var13 + 1) - BlockFluids.setFluidHeight(this.getBlockMetadata(var12, var13, var14))); + if((double)var7 >= var16) { + var10 = true; + var15.velocityToAddToEntity(this, var12, var13, var14, var3, var11); + } + } + } + } + } + + if(var11.lengthVector() > 0.0D) { + var11 = var11.normalize(); + double var18 = 0.004D; + var3.motionX += var11.xCoord * var18; + var3.motionY += var11.yCoord * var18; + var3.motionZ += var11.zCoord * var18; + } + + return var10; + } + + public boolean isMaterialInBB(AxisAlignedBB var1, Material var2) { + int var3 = MathHelper.floor_double(var1.minX); + int var4 = MathHelper.floor_double(var1.maxX + 1.0D); + int var5 = MathHelper.floor_double(var1.minY); + int var6 = MathHelper.floor_double(var1.maxY + 1.0D); + int var7 = MathHelper.floor_double(var1.minZ); + int var8 = MathHelper.floor_double(var1.maxZ + 1.0D); + + for(int var9 = var3; var9 < var4; ++var9) { + for(int var10 = var5; var10 < var6; ++var10) { + for(int var11 = var7; var11 < var8; ++var11) { + Block var12 = Block.blocksList[this.getBlockId(var9, var10, var11)]; + if(var12 != null && var12.blockMaterial == var2) { + return true; + } + } + } + } + + return false; + } + + public boolean func_524_b(AxisAlignedBB var1, Material var2) { + int var3 = MathHelper.floor_double(var1.minX); + int var4 = MathHelper.floor_double(var1.maxX + 1.0D); + int var5 = MathHelper.floor_double(var1.minY); + int var6 = MathHelper.floor_double(var1.maxY + 1.0D); + int var7 = MathHelper.floor_double(var1.minZ); + int var8 = MathHelper.floor_double(var1.maxZ + 1.0D); + + for(int var9 = var3; var9 < var4; ++var9) { + for(int var10 = var5; var10 < var6; ++var10) { + for(int var11 = var7; var11 < var8; ++var11) { + Block var12 = Block.blocksList[this.getBlockId(var9, var10, var11)]; + if(var12 != null && var12.blockMaterial == var2) { + int var13 = this.getBlockMetadata(var9, var10, var11); + double var14 = (double)(var10 + 1); + if(var13 < 8) { + var14 = (double)(var10 + 1) - (double)var13 / 8.0D; + } + + if(var14 >= var1.minY) { + return true; + } + } + } + } + } + + return false; + } + + public Explosion func_12013_a(Entity var1, double var2, double var4, double var6, float var8) { + return this.func_12015_a(var1, var2, var4, var6, var8, false); + } + + public Explosion func_12015_a(Entity var1, double var2, double var4, double var6, float var8, boolean var9) { + Explosion var10 = new Explosion(this, var1, var2, var4, var6, var8); + var10.field_12031_a = var9; + var10.func_12023_a(); + var10.func_732_a(); + return var10; + } + + public float func_494_a(Vec3D var1, AxisAlignedBB var2) { + double var3 = 1.0D / ((var2.maxX - var2.minX) * 2.0D + 1.0D); + double var5 = 1.0D / ((var2.maxY - var2.minY) * 2.0D + 1.0D); + double var7 = 1.0D / ((var2.maxZ - var2.minZ) * 2.0D + 1.0D); + int var9 = 0; + int var10 = 0; + + for(float var11 = 0.0F; var11 <= 1.0F; var11 = (float)((double)var11 + var3)) { + for(float var12 = 0.0F; var12 <= 1.0F; var12 = (float)((double)var12 + var5)) { + for(float var13 = 0.0F; var13 <= 1.0F; var13 = (float)((double)var13 + var7)) { + double var14 = var2.minX + (var2.maxX - var2.minX) * (double)var11; + double var16 = var2.minY + (var2.maxY - var2.minY) * (double)var12; + double var18 = var2.minZ + (var2.maxZ - var2.minZ) * (double)var13; + if(this.func_486_a(Vec3D.createVector(var14, var16, var18), var1) == null) { + ++var9; + } + + ++var10; + } + } + } + + return (float)var9 / (float)var10; + } + + public TileEntity getBlock(int var1, int var2, int var3) { + Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + return var4 != null ? var4.func_338_d(var1 & 15, var2, var3 & 15) : null; + } + + public void func_473_a(int var1, int var2, int var3, TileEntity var4) { + Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + if(var5 != null) { + var5.func_352_a(var1 & 15, var2, var3 & 15, var4); + } + + } + + public void func_513_l(int var1, int var2, int var3) { + Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); + if(var4 != null) { + var4.func_359_e(var1 & 15, var2, var3 & 15); + } + + } + + public boolean doesBlockAllowAttachment(int var1, int var2, int var3) { + Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)]; + return var4 == null ? false : var4.allowsAttachment(); + } + + public boolean func_6156_d() { + if(this.field_4265_J >= 50) { + return false; + } else { + ++this.field_4265_J; + + try { + int var1 = 5000; + + boolean var2; + while(this.field_821.size() > 0) { + --var1; + if(var1 <= 0) { + var2 = true; + return var2; + } + + ((MetadataChunkBlock)this.field_821.remove(this.field_821.size() - 1)).func_4107_a(this); + } + + var2 = false; + return var2; + } finally { + --this.field_4265_J; + } + } + } + + public void func_483_a(EnumSkyBlock var1, int var2, int var3, int var4, int var5, int var6, int var7) { + this.func_484_a(var1, var2, var3, var4, var5, var6, var7, true); + } + + public void func_484_a(EnumSkyBlock var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8) { + if(!this.field_4272_q.field_4306_c || var1 != EnumSkyBlock.Sky) { + ++field_4268_y; + if(field_4268_y == 50) { + --field_4268_y; + } else { + int var9 = (var5 + var2) / 2; + int var10 = (var7 + var4) / 2; + if(!this.func_530_e(var9, 64, var10)) { + --field_4268_y; + } else { + int var11 = this.field_821.size(); + if(var8) { + int var12 = 4; + if(var12 > var11) { + var12 = var11; + } + + for(int var13 = 0; var13 < var12; ++var13) { + MetadataChunkBlock var14 = (MetadataChunkBlock)this.field_821.get(this.field_821.size() - var13 - 1); + if(var14.field_957_a == var1 && var14.func_692_a(var2, var3, var4, var5, var6, var7)) { + --field_4268_y; + return; + } + } + } + + this.field_821.add(new MetadataChunkBlock(var1, var2, var3, var4, var5, var6, var7)); + if(this.field_821.size() > 100000) { + this.field_821.clear(); + } + + --field_4268_y; + } + } + } + } + + public void calculateInitialSkylight() { + int var1 = this.calculateSkylightSubtracted(1.0F); + if(var1 != this.skylightSubtracted) { + this.skylightSubtracted = var1; + } + + } + + public void tick() { + SpawnerAnimals.func_4111_a(this); + this.chunkProvider.func_361_a(); + int var1 = this.calculateSkylightSubtracted(1.0F); + if(var1 != this.skylightSubtracted) { + this.skylightSubtracted = var1; + + for(int var2 = 0; var2 < this.field_798_r.size(); ++var2) { + ((IWorldAccess)this.field_798_r.get(var2)).func_684_a(); + } + } + + ++this.worldTime; + if(this.worldTime % (long)this.field_4277_j == 0L) { + this.func_485_a(false, (IProgressUpdate)null); + } + + this.TickUpdates(false); + this.func_4073_g(); + } + + protected void func_4073_g() { + this.field_4264_K.clear(); + + int var3; + int var4; + int var6; + int var7; + for(int var1 = 0; var1 < this.playerEntities.size(); ++var1) { + EntityPlayer var2 = (EntityPlayer)this.playerEntities.get(var1); + var3 = MathHelper.floor_double(var2.posX / 16.0D); + var4 = MathHelper.floor_double(var2.posZ / 16.0D); + byte var5 = 9; + + for(var6 = -var5; var6 <= var5; ++var6) { + for(var7 = -var5; var7 <= var5; ++var7) { + this.field_4264_K.add(new ChunkCoordIntPair(var6 + var3, var7 + var4)); + } + } + } + + if(this.field_4263_L > 0) { + --this.field_4263_L; + } + + Iterator var12 = this.field_4264_K.iterator(); + + while(var12.hasNext()) { + ChunkCoordIntPair var13 = (ChunkCoordIntPair)var12.next(); + var3 = var13.field_152_a * 16; + var4 = var13.field_151_b * 16; + Chunk var14 = this.getChunkFromChunkCoords(var13.field_152_a, var13.field_151_b); + int var8; + int var9; + int var10; + if(this.field_4263_L == 0) { + this.field_4279_g = this.field_4279_g * 3 + this.field_4278_h; + var6 = this.field_4279_g >> 2; + var7 = var6 & 15; + var8 = var6 >> 8 & 15; + var9 = var6 >> 16 & 127; + var10 = var14.getBlockID(var7, var9, var8); + var7 += var3; + var8 += var4; + if(var10 == 0 && this.getBlockLightValue(var7, var9, var8) <= this.rand.nextInt(8) && this.getSavedLightValue(EnumSkyBlock.Sky, var7, var9, var8) <= 0) { + EntityPlayer var11 = this.getClosestPlayer((double)var7 + 0.5D, (double)var9 + 0.5D, (double)var8 + 0.5D, 8.0D); + if(var11 != null && var11.getDistanceSq((double)var7 + 0.5D, (double)var9 + 0.5D, (double)var8 + 0.5D) > 4.0D) { + this.playSoundEffect((double)var7 + 0.5D, (double)var9 + 0.5D, (double)var8 + 0.5D, "ambient.cave.cave", 0.7F, 0.8F + this.rand.nextFloat() * 0.2F); + this.field_4263_L = this.rand.nextInt(12000) + 6000; + } + } + } + + for(var6 = 0; var6 < 80; ++var6) { + this.field_4279_g = this.field_4279_g * 3 + this.field_4278_h; + var7 = this.field_4279_g >> 2; + var8 = var7 & 15; + var9 = var7 >> 8 & 15; + var10 = var7 >> 16 & 127; + byte var15 = var14.blocks[var8 << 11 | var9 << 7 | var10]; + if(Block.tickOnLoad[var15]) { + Block.blocksList[var15].updateTick(this, var8 + var3, var10, var9 + var4, this.rand); + } + } + } + + } + + public boolean TickUpdates(boolean var1) { + int var2 = this.scheduledTickTreeSet.size(); + if(var2 != this.scheduledTickSet.size()) { + throw new IllegalStateException("TickNextTick list out of synch"); + } else { + if(var2 > 1000) { + var2 = 1000; + } + + for(int var3 = 0; var3 < var2; ++var3) { + NextTickListEntry var4 = (NextTickListEntry)this.scheduledTickTreeSet.first(); + if(!var1 && var4.scheduledTime > this.worldTime) { + break; + } + + this.scheduledTickTreeSet.remove(var4); + this.scheduledTickSet.remove(var4); + byte var5 = 8; + if(this.checkChunksExist(var4.xCoord - var5, var4.yCoord - var5, var4.zCoord - var5, var4.xCoord + var5, var4.yCoord + var5, var4.zCoord + var5)) { + int var6 = this.getBlockId(var4.xCoord, var4.yCoord, var4.zCoord); + if(var6 == var4.blockID && var6 > 0) { + Block.blocksList[var6].updateTick(this, var4.xCoord, var4.yCoord, var4.zCoord, this.rand); + } + } + } + + return this.scheduledTickTreeSet.size() != 0; + } + } + + public List getEntitiesWithinAABBExcludingEntity(Entity var1, AxisAlignedBB var2) { + this.field_778_L.clear(); + int var3 = MathHelper.floor_double((var2.minX - 2.0D) / 16.0D); + int var4 = MathHelper.floor_double((var2.maxX + 2.0D) / 16.0D); + int var5 = MathHelper.floor_double((var2.minZ - 2.0D) / 16.0D); + int var6 = MathHelper.floor_double((var2.maxZ + 2.0D) / 16.0D); + + for(int var7 = var3; var7 <= var4; ++var7) { + for(int var8 = var5; var8 <= var6; ++var8) { + if(this.chunkExists(var7, var8)) { + this.getChunkFromChunkCoords(var7, var8).getEntitiesWithinAABBForEntity(var1, var2, this.field_778_L); + } + } + } + + return this.field_778_L; + } + + public List getEntitiesWithinAABB(Class var1, AxisAlignedBB var2) { + int var3 = MathHelper.floor_double((var2.minX - 2.0D) / 16.0D); + int var4 = MathHelper.floor_double((var2.maxX + 2.0D) / 16.0D); + int var5 = MathHelper.floor_double((var2.minZ - 2.0D) / 16.0D); + int var6 = MathHelper.floor_double((var2.maxZ + 2.0D) / 16.0D); + ArrayList var7 = new ArrayList(); + + for(int var8 = var3; var8 <= var4; ++var8) { + for(int var9 = var5; var9 <= var6; ++var9) { + if(this.chunkExists(var8, var9)) { + this.getChunkFromChunkCoords(var8, var9).getEntitiesOfTypeWithinAAAB(var1, var2, var7); + } + } + } + + return var7; + } + + public void func_515_b(int var1, int var2, int var3, TileEntity var4) { + if(this.func_530_e(var1, var2, var3)) { + this.getChunkFromBlockCoords(var1, var3).func_336_e(); + } + + for(int var5 = 0; var5 < this.field_798_r.size(); ++var5) { + ((IWorldAccess)this.field_798_r.get(var5)).func_686_a(var1, var2, var3, var4); + } + + } + + public int countEntities(Class var1) { + int var2 = 0; + + for(int var3 = 0; var3 < this.field_815_a.size(); ++var3) { + Entity var4 = (Entity)this.field_815_a.get(var3); + if(var1.isAssignableFrom(var4.getClass())) { + ++var2; + } + } + + return var2; + } + + public void func_464_a(List var1) { + this.field_815_a.addAll(var1); + + for(int var2 = 0; var2 < var1.size(); ++var2) { + this.func_479_b((Entity)var1.get(var2)); + } + + } + + public void func_461_b(List var1) { + this.field_790_z.addAll(var1); + } + + public boolean func_516_a(int var1, int var2, int var3, int var4, boolean var5) { + int var6 = this.getBlockId(var2, var3, var4); + Block var7 = Block.blocksList[var6]; + Block var8 = Block.blocksList[var1]; + AxisAlignedBB var9 = var8.getCollisionBoundingBoxFromPool(this, var2, var3, var4); + if(var5) { + var9 = null; + } + + return var9 != null && !this.func_522_a(var9) ? false : (var7 != Block.waterStill && var7 != Block.waterMoving && var7 != Block.lavaStill && var7 != Block.lavaMoving && var7 != Block.fire && var7 != Block.snow ? var1 > 0 && var7 == null && var8.canPlaceBlockAt(this, var2, var3, var4) : true); + } + + public PathEntity func_482_a(Entity var1, Entity var2, float var3) { + int var4 = MathHelper.floor_double(var1.posX); + int var5 = MathHelper.floor_double(var1.posY); + int var6 = MathHelper.floor_double(var1.posZ); + int var7 = (int)(var3 + 16.0F); + int var8 = var4 - var7; + int var9 = var5 - var7; + int var10 = var6 - var7; + int var11 = var4 + var7; + int var12 = var5 + var7; + int var13 = var6 + var7; + ChunkCache var14 = new ChunkCache(this, var8, var9, var10, var11, var12, var13); + return (new Pathfinder(var14)).createEntityPathTo(var1, var2, var3); + } + + public PathEntity func_501_a(Entity var1, int var2, int var3, int var4, float var5) { + int var6 = MathHelper.floor_double(var1.posX); + int var7 = MathHelper.floor_double(var1.posY); + int var8 = MathHelper.floor_double(var1.posZ); + int var9 = (int)(var5 + 8.0F); + int var10 = var6 - var9; + int var11 = var7 - var9; + int var12 = var8 - var9; + int var13 = var6 + var9; + int var14 = var7 + var9; + int var15 = var8 + var9; + ChunkCache var16 = new ChunkCache(this, var10, var11, var12, var13, var14, var15); + return (new Pathfinder(var16)).createEntityPathTo(var1, var2, var3, var4, var5); + } + + public boolean isBlockProvidingPowerTo(int var1, int var2, int var3, int var4) { + int var5 = this.getBlockId(var1, var2, var3); + return var5 == 0 ? false : Block.blocksList[var5].isIndirectlyPoweringTo(this, var1, var2, var3, var4); + } + + public boolean isBlockGettingPowered(int var1, int var2, int var3) { + return this.isBlockProvidingPowerTo(var1, var2 - 1, var3, 0) ? true : (this.isBlockProvidingPowerTo(var1, var2 + 1, var3, 1) ? true : (this.isBlockProvidingPowerTo(var1, var2, var3 - 1, 2) ? true : (this.isBlockProvidingPowerTo(var1, var2, var3 + 1, 3) ? true : (this.isBlockProvidingPowerTo(var1 - 1, var2, var3, 4) ? true : this.isBlockProvidingPowerTo(var1 + 1, var2, var3, 5))))); + } + + public boolean isBlockIndirectlyProvidingPowerTo(int var1, int var2, int var3, int var4) { + if(this.doesBlockAllowAttachment(var1, var2, var3)) { + return this.isBlockGettingPowered(var1, var2, var3); + } else { + int var5 = this.getBlockId(var1, var2, var3); + return var5 == 0 ? false : Block.blocksList[var5].isPoweringTo(this, var1, var2, var3, var4); + } + } + + public boolean isBlockIndirectlyGettingPowered(int var1, int var2, int var3) { + return this.isBlockIndirectlyProvidingPowerTo(var1, var2 - 1, var3, 0) ? true : (this.isBlockIndirectlyProvidingPowerTo(var1, var2 + 1, var3, 1) ? true : (this.isBlockIndirectlyProvidingPowerTo(var1, var2, var3 - 1, 2) ? true : (this.isBlockIndirectlyProvidingPowerTo(var1, var2, var3 + 1, 3) ? true : (this.isBlockIndirectlyProvidingPowerTo(var1 - 1, var2, var3, 4) ? true : this.isBlockIndirectlyProvidingPowerTo(var1 + 1, var2, var3, 5))))); + } + + public EntityPlayer getClosestPlayerToEntity(Entity var1, double var2) { + return this.getClosestPlayer(var1.posX, var1.posY, var1.posZ, var2); + } + + public EntityPlayer getClosestPlayer(double var1, double var3, double var5, double var7) { + double var9 = -1.0D; + EntityPlayer var11 = null; + + for(int var12 = 0; var12 < this.playerEntities.size(); ++var12) { + EntityPlayer var13 = (EntityPlayer)this.playerEntities.get(var12); + double var14 = var13.getDistanceSq(var1, var3, var5); + if((var7 < 0.0D || var14 < var7 * var7) && (var9 == -1.0D || var14 < var9)) { + var9 = var14; + var11 = var13; + } + } + + return var11; + } + + public byte[] func_504_c(int var1, int var2, int var3, int var4, int var5, int var6) { + byte[] var7 = new byte[var4 * var5 * var6 * 5 / 2]; + int var8 = var1 >> 4; + int var9 = var3 >> 4; + int var10 = var1 + var4 - 1 >> 4; + int var11 = var3 + var6 - 1 >> 4; + int var12 = 0; + int var13 = var2; + int var14 = var2 + var5; + if(var2 < 0) { + var13 = 0; + } + + if(var14 > 128) { + var14 = 128; + } + + for(int var15 = var8; var15 <= var10; ++var15) { + int var16 = var1 - var15 * 16; + int var17 = var1 + var4 - var15 * 16; + if(var16 < 0) { + var16 = 0; + } + + if(var17 > 16) { + var17 = 16; + } + + for(int var18 = var9; var18 <= var11; ++var18) { + int var19 = var3 - var18 * 16; + int var20 = var3 + var6 - var18 * 16; + if(var19 < 0) { + var19 = 0; + } + + if(var20 > 16) { + var20 = 16; + } + + var12 = this.getChunkFromChunkCoords(var15, var18).func_340_a(var7, var16, var13, var19, var17, var14, var20, var12); + } + } + + return var7; + } + + public void func_476_g() { + try { + File var1 = new File(this.field_797_s, "session.lock"); + DataInputStream var2 = new DataInputStream(new FileInputStream(var1)); + + try { + if(var2.readLong() != this.field_784_F) { + throw new MinecraftException("The save is being accessed from another location, aborting"); + } + } finally { + var2.close(); + } + + } catch (IOException var7) { + throw new MinecraftException("Failed to check session lock, aborting"); + } + } + + public boolean func_6157_a(EntityPlayer var1, int var2, int var3, int var4) { + return true; + } + + public void func_9206_a(Entity var1, byte var2) { + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldChunkManager.java b/minecraft_server/src/net/minecraft/src/WorldChunkManager.java new file mode 100644 index 0000000..33703f4 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldChunkManager.java @@ -0,0 +1,112 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldChunkManager { + private NoiseGeneratorOctaves2 field_4255_e; + private NoiseGeneratorOctaves2 field_4254_f; + private NoiseGeneratorOctaves2 field_4253_g; + public double[] temperature; + public double[] humidity; + public double[] field_4257_c; + public MobSpawnerBase[] field_4256_d; + + protected WorldChunkManager() { + } + + public WorldChunkManager(World var1) { + this.field_4255_e = new NoiseGeneratorOctaves2(new Random(var1.randomSeed * 9871L), 4); + this.field_4254_f = new NoiseGeneratorOctaves2(new Random(var1.randomSeed * 39811L), 4); + this.field_4253_g = new NoiseGeneratorOctaves2(new Random(var1.randomSeed * 543321L), 2); + } + + public MobSpawnerBase func_4066_a(ChunkCoordIntPair var1) { + return this.func_4067_a(var1.field_152_a, var1.field_151_b); + } + + public MobSpawnerBase func_4067_a(int var1, int var2) { + return this.func_4065_a(var1, var2, 1, 1)[0]; + } + + public MobSpawnerBase[] func_4065_a(int var1, int var2, int var3, int var4) { + this.field_4256_d = this.loadBlockGeneratorData(this.field_4256_d, var1, var2, var3, var4); + return this.field_4256_d; + } + + public double[] getTemperatures(double[] var1, int var2, int var3, int var4, int var5) { + if(var1 == null || var1.length < var4 * var5) { + var1 = new double[var4 * var5]; + } + + var1 = this.field_4255_e.func_4101_a(var1, (double)var2, (double)var3, var4, var4, (double)0.025F, (double)0.025F, 0.25D); + this.field_4257_c = this.field_4253_g.func_4101_a(this.field_4257_c, (double)var2, (double)var3, var4, var4, 0.25D, 0.25D, 0.5882352941176471D); + int var6 = 0; + + for(int var7 = 0; var7 < var4; ++var7) { + for(int var8 = 0; var8 < var5; ++var8) { + double var9 = this.field_4257_c[var6] * 1.1D + 0.5D; + double var11 = 0.01D; + double var13 = 1.0D - var11; + double var15 = (var1[var6] * 0.15D + 0.7D) * var13 + var9 * var11; + var15 = 1.0D - (1.0D - var15) * (1.0D - var15); + if(var15 < 0.0D) { + var15 = 0.0D; + } + + if(var15 > 1.0D) { + var15 = 1.0D; + } + + var1[var6] = var15; + ++var6; + } + } + + return var1; + } + + public MobSpawnerBase[] loadBlockGeneratorData(MobSpawnerBase[] var1, int var2, int var3, int var4, int var5) { + if(var1 == null || var1.length < var4 * var5) { + var1 = new MobSpawnerBase[var4 * var5]; + } + + this.temperature = this.field_4255_e.func_4101_a(this.temperature, (double)var2, (double)var3, var4, var4, (double)0.025F, (double)0.025F, 0.25D); + this.humidity = this.field_4254_f.func_4101_a(this.humidity, (double)var2, (double)var3, var4, var4, (double)0.05F, (double)0.05F, 1.0D / 3.0D); + this.field_4257_c = this.field_4253_g.func_4101_a(this.field_4257_c, (double)var2, (double)var3, var4, var4, 0.25D, 0.25D, 0.5882352941176471D); + int var6 = 0; + + for(int var7 = 0; var7 < var4; ++var7) { + for(int var8 = 0; var8 < var5; ++var8) { + double var9 = this.field_4257_c[var6] * 1.1D + 0.5D; + double var11 = 0.01D; + double var13 = 1.0D - var11; + double var15 = (this.temperature[var6] * 0.15D + 0.7D) * var13 + var9 * var11; + var11 = 0.002D; + var13 = 1.0D - var11; + double var17 = (this.humidity[var6] * 0.15D + 0.5D) * var13 + var9 * var11; + var15 = 1.0D - (1.0D - var15) * (1.0D - var15); + if(var15 < 0.0D) { + var15 = 0.0D; + } + + if(var17 < 0.0D) { + var17 = 0.0D; + } + + if(var15 > 1.0D) { + var15 = 1.0D; + } + + if(var17 > 1.0D) { + var17 = 1.0D; + } + + this.temperature[var6] = var15; + this.humidity[var6] = var17; + var1[var6++] = MobSpawnerBase.getBiomeFromLookup(var15, var17); + } + } + + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldChunkManagerHell.java b/minecraft_server/src/net/minecraft/src/WorldChunkManagerHell.java new file mode 100644 index 0000000..55eb19d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldChunkManagerHell.java @@ -0,0 +1,50 @@ +package net.minecraft.src; + +import java.util.Arrays; + +public class WorldChunkManagerHell extends WorldChunkManager { + private MobSpawnerBase field_4262_e; + private double field_4261_f; + private double field_4260_g; + + public WorldChunkManagerHell(MobSpawnerBase var1, double var2, double var4) { + this.field_4262_e = var1; + this.field_4261_f = var2; + this.field_4260_g = var4; + } + + public MobSpawnerBase func_4066_a(ChunkCoordIntPair var1) { + return this.field_4262_e; + } + + public MobSpawnerBase func_4067_a(int var1, int var2) { + return this.field_4262_e; + } + + public MobSpawnerBase[] func_4065_a(int var1, int var2, int var3, int var4) { + this.field_4256_d = this.loadBlockGeneratorData(this.field_4256_d, var1, var2, var3, var4); + return this.field_4256_d; + } + + public double[] getTemperatures(double[] var1, int var2, int var3, int var4, int var5) { + if(var1 == null || var1.length < var4 * var5) { + var1 = new double[var4 * var5]; + } + + Arrays.fill(var1, 0, var4 * var5, this.field_4261_f); + return var1; + } + + public MobSpawnerBase[] loadBlockGeneratorData(MobSpawnerBase[] var1, int var2, int var3, int var4, int var5) { + if(var1 == null || var1.length < var4 * var5) { + var1 = new MobSpawnerBase[var4 * var5]; + this.temperature = new double[var4 * var5]; + this.humidity = new double[var4 * var5]; + } + + Arrays.fill(var1, 0, var4 * var5, this.field_4262_e); + Arrays.fill(this.humidity, 0, var4 * var5, this.field_4260_g); + Arrays.fill(this.temperature, 0, var4 * var5, this.field_4261_f); + return var1; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenBigTree.java b/minecraft_server/src/net/minecraft/src/WorldGenBigTree.java new file mode 100644 index 0000000..e4643e8 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenBigTree.java @@ -0,0 +1,348 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenBigTree extends WorldGenerator { + static final byte[] field_760_a = new byte[]{(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; + Random field_759_b = new Random(); + World worldObj; + int[] field_757_d = new int[]{0, 0, 0}; + int field_756_e = 0; + int field_755_f; + double field_754_g = 0.618D; + double field_753_h = 1.0D; + double field_752_i = 0.381D; + double field_751_j = 1.0D; + double field_750_k = 1.0D; + int field_749_l = 1; + int field_748_m = 12; + int field_747_n = 4; + int[][] field_746_o; + + void func_424_a() { + this.field_755_f = (int)((double)this.field_756_e * this.field_754_g); + if(this.field_755_f >= this.field_756_e) { + this.field_755_f = this.field_756_e - 1; + } + + int var1 = (int)(1.382D + Math.pow(this.field_750_k * (double)this.field_756_e / 13.0D, 2.0D)); + if(var1 < 1) { + var1 = 1; + } + + int[][] var2 = new int[var1 * this.field_756_e][4]; + int var3 = this.field_757_d[1] + this.field_756_e - this.field_747_n; + int var4 = 1; + int var5 = this.field_757_d[1] + this.field_755_f; + int var6 = var3 - this.field_757_d[1]; + var2[0][0] = this.field_757_d[0]; + var2[0][1] = var3; + var2[0][2] = this.field_757_d[2]; + var2[0][3] = var5; + --var3; + + while(true) { + while(var6 >= 0) { + int var7 = 0; + float var8 = this.func_431_a(var6); + if(var8 < 0.0F) { + --var3; + --var6; + } else { + for(double var9 = 0.5D; var7 < var1; ++var7) { + double var11 = this.field_751_j * (double)var8 * ((double)this.field_759_b.nextFloat() + 0.328D); + double var13 = (double)this.field_759_b.nextFloat() * 2.0D * 3.14159D; + int var15 = (int)(var11 * Math.sin(var13) + (double)this.field_757_d[0] + var9); + int var16 = (int)(var11 * Math.cos(var13) + (double)this.field_757_d[2] + var9); + int[] var17 = new int[]{var15, var3, var16}; + int[] var18 = new int[]{var15, var3 + this.field_747_n, var16}; + if(this.func_427_a(var17, var18) == -1) { + int[] var19 = new int[]{this.field_757_d[0], this.field_757_d[1], this.field_757_d[2]}; + double var20 = Math.sqrt(Math.pow((double)Math.abs(this.field_757_d[0] - var17[0]), 2.0D) + Math.pow((double)Math.abs(this.field_757_d[2] - var17[2]), 2.0D)); + double var22 = var20 * this.field_752_i; + if((double)var17[1] - var22 > (double)var5) { + var19[1] = var5; + } else { + var19[1] = (int)((double)var17[1] - var22); + } + + if(this.func_427_a(var19, var17) == -1) { + var2[var4][0] = var15; + var2[var4][1] = var3; + var2[var4][2] = var16; + var2[var4][3] = var19[1]; + ++var4; + } + } + } + + --var3; + --var6; + } + } + + this.field_746_o = new int[var4][4]; + System.arraycopy(var2, 0, this.field_746_o, 0, var4); + return; + } + } + + void func_426_a(int var1, int var2, int var3, float var4, byte var5, int var6) { + int var7 = (int)((double)var4 + 0.618D); + byte var8 = field_760_a[var5]; + byte var9 = field_760_a[var5 + 3]; + int[] var10 = new int[]{var1, var2, var3}; + int[] var11 = new int[]{0, 0, 0}; + int var12 = -var7; + int var13 = -var7; + + label32: + for(var11[var5] = var10[var5]; var12 <= var7; ++var12) { + var11[var8] = var10[var8] + var12; + var13 = -var7; + + while(true) { + while(true) { + if(var13 > var7) { + continue label32; + } + + double var15 = Math.sqrt(Math.pow((double)Math.abs(var12) + 0.5D, 2.0D) + Math.pow((double)Math.abs(var13) + 0.5D, 2.0D)); + if(var15 > (double)var4) { + ++var13; + } else { + var11[var9] = var10[var9] + var13; + int var14 = this.worldObj.getBlockId(var11[0], var11[1], var11[2]); + if(var14 != 0 && var14 != 18) { + ++var13; + } else { + this.worldObj.setBlock(var11[0], var11[1], var11[2], var6); + ++var13; + } + } + } + } + } + + } + + float func_431_a(int var1) { + if((double)var1 < (double)((float)this.field_756_e) * 0.3D) { + return -1.618F; + } else { + float var2 = (float)this.field_756_e / 2.0F; + float var3 = (float)this.field_756_e / 2.0F - (float)var1; + float var4; + if(var3 == 0.0F) { + var4 = var2; + } else if(Math.abs(var3) >= var2) { + var4 = 0.0F; + } else { + var4 = (float)Math.sqrt(Math.pow((double)Math.abs(var2), 2.0D) - Math.pow((double)Math.abs(var3), 2.0D)); + } + + var4 *= 0.5F; + return var4; + } + } + + float func_429_b(int var1) { + return var1 >= 0 && var1 < this.field_747_n ? (var1 != 0 && var1 != this.field_747_n - 1 ? 3.0F : 2.0F) : -1.0F; + } + + void func_423_a(int var1, int var2, int var3) { + int var4 = var2; + + for(int var5 = var2 + this.field_747_n; var4 < var5; ++var4) { + float var6 = this.func_429_b(var4 - var2); + this.func_426_a(var1, var4, var3, var6, (byte)1, 18); + } + + } + + void func_425_a(int[] var1, int[] var2, int var3) { + int[] var4 = new int[]{0, 0, 0}; + byte var5 = 0; + + byte var6; + for(var6 = 0; var5 < 3; ++var5) { + var4[var5] = var2[var5] - var1[var5]; + if(Math.abs(var4[var5]) > Math.abs(var4[var6])) { + var6 = var5; + } + } + + if(var4[var6] != 0) { + byte var7 = field_760_a[var6]; + byte var8 = field_760_a[var6 + 3]; + byte var9; + if(var4[var6] > 0) { + var9 = 1; + } else { + var9 = -1; + } + + double var10 = (double)var4[var7] / (double)var4[var6]; + double var12 = (double)var4[var8] / (double)var4[var6]; + int[] var14 = new int[]{0, 0, 0}; + int var15 = 0; + + for(int var16 = var4[var6] + var9; var15 != var16; var15 += var9) { + var14[var6] = MathHelper.floor_double((double)(var1[var6] + var15) + 0.5D); + var14[var7] = MathHelper.floor_double((double)var1[var7] + (double)var15 * var10 + 0.5D); + var14[var8] = MathHelper.floor_double((double)var1[var8] + (double)var15 * var12 + 0.5D); + this.worldObj.setBlock(var14[0], var14[1], var14[2], var3); + } + + } + } + + void func_421_b() { + int var1 = 0; + + for(int var2 = this.field_746_o.length; var1 < var2; ++var1) { + int var3 = this.field_746_o[var1][0]; + int var4 = this.field_746_o[var1][1]; + int var5 = this.field_746_o[var1][2]; + this.func_423_a(var3, var4, var5); + } + + } + + boolean func_430_c(int var1) { + return (double)var1 >= (double)this.field_756_e * 0.2D; + } + + void func_432_c() { + int var1 = this.field_757_d[0]; + int var2 = this.field_757_d[1]; + int var3 = this.field_757_d[1] + this.field_755_f; + int var4 = this.field_757_d[2]; + int[] var5 = new int[]{var1, var2, var4}; + int[] var6 = new int[]{var1, var3, var4}; + this.func_425_a(var5, var6, 17); + if(this.field_749_l == 2) { + ++var5[0]; + ++var6[0]; + this.func_425_a(var5, var6, 17); + ++var5[2]; + ++var6[2]; + this.func_425_a(var5, var6, 17); + var5[0] += -1; + var6[0] += -1; + this.func_425_a(var5, var6, 17); + } + + } + + void func_428_d() { + int var1 = 0; + int var2 = this.field_746_o.length; + + for(int[] var3 = new int[]{this.field_757_d[0], this.field_757_d[1], this.field_757_d[2]}; var1 < var2; ++var1) { + int[] var4 = this.field_746_o[var1]; + int[] var5 = new int[]{var4[0], var4[1], var4[2]}; + var3[1] = var4[3]; + int var6 = var3[1] - this.field_757_d[1]; + if(this.func_430_c(var6)) { + this.func_425_a(var3, var5, 17); + } + } + + } + + int func_427_a(int[] var1, int[] var2) { + int[] var3 = new int[]{0, 0, 0}; + byte var4 = 0; + + byte var5; + for(var5 = 0; var4 < 3; ++var4) { + var3[var4] = var2[var4] - var1[var4]; + if(Math.abs(var3[var4]) > Math.abs(var3[var5])) { + var5 = var4; + } + } + + if(var3[var5] == 0) { + return -1; + } else { + byte var6 = field_760_a[var5]; + byte var7 = field_760_a[var5 + 3]; + byte var8; + if(var3[var5] > 0) { + var8 = 1; + } else { + var8 = -1; + } + + double var9 = (double)var3[var6] / (double)var3[var5]; + double var11 = (double)var3[var7] / (double)var3[var5]; + int[] var13 = new int[]{0, 0, 0}; + int var14 = 0; + + int var15; + for(var15 = var3[var5] + var8; var14 != var15; var14 += var8) { + var13[var5] = var1[var5] + var14; + var13[var6] = (int)((double)var1[var6] + (double)var14 * var9); + var13[var7] = (int)((double)var1[var7] + (double)var14 * var11); + int var16 = this.worldObj.getBlockId(var13[0], var13[1], var13[2]); + if(var16 != 0 && var16 != 18) { + break; + } + } + + return var14 == var15 ? -1 : Math.abs(var14); + } + } + + boolean func_422_e() { + int[] var1 = new int[]{this.field_757_d[0], this.field_757_d[1], this.field_757_d[2]}; + int[] var2 = new int[]{this.field_757_d[0], this.field_757_d[1] + this.field_756_e - 1, this.field_757_d[2]}; + int var3 = this.worldObj.getBlockId(this.field_757_d[0], this.field_757_d[1] - 1, this.field_757_d[2]); + if(var3 != 2 && var3 != 3) { + return false; + } else { + int var4 = this.func_427_a(var1, var2); + if(var4 == -1) { + return true; + } else if(var4 < 6) { + return false; + } else { + this.field_756_e = var4; + return true; + } + } + } + + public void func_420_a(double var1, double var3, double var5) { + this.field_748_m = (int)(var1 * 12.0D); + if(var1 > 0.5D) { + this.field_747_n = 5; + } + + this.field_751_j = var3; + this.field_750_k = var5; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + this.worldObj = var1; + long var6 = var2.nextLong(); + this.field_759_b.setSeed(var6); + this.field_757_d[0] = var3; + this.field_757_d[1] = var4; + this.field_757_d[2] = var5; + if(this.field_756_e == 0) { + this.field_756_e = 5 + this.field_759_b.nextInt(this.field_748_m); + } + + if(!this.func_422_e()) { + return false; + } else { + this.func_424_a(); + this.func_421_b(); + this.func_432_c(); + this.func_428_d(); + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenCactus.java b/minecraft_server/src/net/minecraft/src/WorldGenCactus.java new file mode 100644 index 0000000..1429c39 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenCactus.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenCactus extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + for(int var6 = 0; var6 < 10; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0) { + int var10 = 1 + var2.nextInt(var2.nextInt(3) + 1); + + for(int var11 = 0; var11 < var10; ++var11) { + if(Block.cactus.canBlockStay(var1, var7, var8 + var11, var9)) { + var1.setBlock(var7, var8 + var11, var9, Block.cactus.blockID); + } + } + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenClay.java b/minecraft_server/src/net/minecraft/src/WorldGenClay.java new file mode 100644 index 0000000..03906d0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenClay.java @@ -0,0 +1,53 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenClay extends WorldGenerator { + private int clayBlockId = Block.blockClay.blockID; + private int numberOfBlocks; + + public WorldGenClay(int var1) { + this.numberOfBlocks = var1; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + if(var1.getBlockMaterial(var3, var4, var5) != Material.water) { + return false; + } else { + float var6 = var2.nextFloat() * (float)Math.PI; + double var7 = (double)((float)(var3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var9 = (double)((float)(var3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var11 = (double)((float)(var5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var13 = (double)((float)(var5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var15 = (double)(var4 + var2.nextInt(3) + 2); + double var17 = (double)(var4 + var2.nextInt(3) + 2); + + for(int var19 = 0; var19 <= this.numberOfBlocks; ++var19) { + double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; + double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; + double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; + double var26 = var2.nextDouble() * (double)this.numberOfBlocks / 16.0D; + double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + + for(int var32 = (int)(var20 - var28 / 2.0D); var32 <= (int)(var20 + var28 / 2.0D); ++var32) { + for(int var33 = (int)(var22 - var30 / 2.0D); var33 <= (int)(var22 + var30 / 2.0D); ++var33) { + for(int var34 = (int)(var24 - var28 / 2.0D); var34 <= (int)(var24 + var28 / 2.0D); ++var34) { + double var35 = ((double)var32 + 0.5D - var20) / (var28 / 2.0D); + double var37 = ((double)var33 + 0.5D - var22) / (var30 / 2.0D); + double var39 = ((double)var34 + 0.5D - var24) / (var28 / 2.0D); + if(var35 * var35 + var37 * var37 + var39 * var39 < 1.0D) { + int var41 = var1.getBlockId(var32, var33, var34); + if(var41 == Block.sand.blockID) { + var1.setBlock(var32, var33, var34, this.clayBlockId); + } + } + } + } + } + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenDungeons.java b/minecraft_server/src/net/minecraft/src/WorldGenDungeons.java new file mode 100644 index 0000000..675b16b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenDungeons.java @@ -0,0 +1,116 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenDungeons extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + byte var6 = 3; + int var7 = var2.nextInt(2) + 2; + int var8 = var2.nextInt(2) + 2; + int var9 = 0; + + int var10; + int var11; + int var12; + for(var10 = var3 - var7 - 1; var10 <= var3 + var7 + 1; ++var10) { + for(var11 = var4 - 1; var11 <= var4 + var6 + 1; ++var11) { + for(var12 = var5 - var8 - 1; var12 <= var5 + var8 + 1; ++var12) { + Material var13 = var1.getBlockMaterial(var10, var11, var12); + if(var11 == var4 - 1 && !var13.func_216_a()) { + return false; + } + + if(var11 == var4 + var6 + 1 && !var13.func_216_a()) { + return false; + } + + if((var10 == var3 - var7 - 1 || var10 == var3 + var7 + 1 || var12 == var5 - var8 - 1 || var12 == var5 + var8 + 1) && var11 == var4 && var1.getBlockId(var10, var11, var12) == 0 && var1.getBlockId(var10, var11 + 1, var12) == 0) { + ++var9; + } + } + } + } + + if(var9 >= 1 && var9 <= 5) { + for(var10 = var3 - var7 - 1; var10 <= var3 + var7 + 1; ++var10) { + for(var11 = var4 + var6; var11 >= var4 - 1; --var11) { + for(var12 = var5 - var8 - 1; var12 <= var5 + var8 + 1; ++var12) { + if(var10 != var3 - var7 - 1 && var11 != var4 - 1 && var12 != var5 - var8 - 1 && var10 != var3 + var7 + 1 && var11 != var4 + var6 + 1 && var12 != var5 + var8 + 1) { + var1.setBlockWithNotify(var10, var11, var12, 0); + } else if(var11 >= 0 && !var1.getBlockMaterial(var10, var11 - 1, var12).func_216_a()) { + var1.setBlockWithNotify(var10, var11, var12, 0); + } else if(var1.getBlockMaterial(var10, var11, var12).func_216_a()) { + if(var11 == var4 - 1 && var2.nextInt(4) != 0) { + var1.setBlockWithNotify(var10, var11, var12, Block.cobblestoneMossy.blockID); + } else { + var1.setBlockWithNotify(var10, var11, var12, Block.cobblestone.blockID); + } + } + } + } + } + + label110: + for(var10 = 0; var10 < 2; ++var10) { + for(var11 = 0; var11 < 3; ++var11) { + var12 = var3 + var2.nextInt(var7 * 2 + 1) - var7; + int var14 = var5 + var2.nextInt(var8 * 2 + 1) - var8; + if(var1.getBlockId(var12, var4, var14) == 0) { + int var15 = 0; + if(var1.getBlockMaterial(var12 - 1, var4, var14).func_216_a()) { + ++var15; + } + + if(var1.getBlockMaterial(var12 + 1, var4, var14).func_216_a()) { + ++var15; + } + + if(var1.getBlockMaterial(var12, var4, var14 - 1).func_216_a()) { + ++var15; + } + + if(var1.getBlockMaterial(var12, var4, var14 + 1).func_216_a()) { + ++var15; + } + + if(var15 == 1) { + var1.setBlockWithNotify(var12, var4, var14, Block.crate.blockID); + TileEntityChest var16 = (TileEntityChest)var1.getBlock(var12, var4, var14); + int var17 = 0; + + while(true) { + if(var17 >= 8) { + continue label110; + } + + ItemStack var18 = this.func_434_a(var2); + if(var18 != null) { + var16.func_197_a(var2.nextInt(var16.func_83_a()), var18); + } + + ++var17; + } + } + } + } + } + + var1.setBlockWithNotify(var3, var4, var5, Block.mobSpawner.blockID); + TileEntityMobSpawner var19 = (TileEntityMobSpawner)var1.getBlock(var3, var4, var5); + var19.entityID = this.func_433_b(var2); + return true; + } else { + return false; + } + } + + private ItemStack func_434_a(Random var1) { + int var2 = var1.nextInt(11); + return var2 == 0 ? new ItemStack(Item.saddle) : (var2 == 1 ? new ItemStack(Item.ingotIron, var1.nextInt(4) + 1) : (var2 == 2 ? new ItemStack(Item.bread) : (var2 == 3 ? new ItemStack(Item.wheat, var1.nextInt(4) + 1) : (var2 == 4 ? new ItemStack(Item.gunpowder, var1.nextInt(4) + 1) : (var2 == 5 ? new ItemStack(Item.silk, var1.nextInt(4) + 1) : (var2 == 6 ? new ItemStack(Item.bucketEmpty) : (var2 == 7 && var1.nextInt(100) == 0 ? new ItemStack(Item.appleGold) : (var2 == 8 && var1.nextInt(2) == 0 ? new ItemStack(Item.redstone, var1.nextInt(4) + 1) : (var2 == 9 && var1.nextInt(10) == 0 ? new ItemStack(Item.itemsList[Item.record13.swiftedIndex + var1.nextInt(2)]) : null))))))))); + } + + private String func_433_b(Random var1) { + int var2 = var1.nextInt(4); + return var2 == 0 ? "Skeleton" : (var2 == 1 ? "Zombie" : (var2 == 2 ? "Zombie" : (var2 == 3 ? "Spider" : ""))); + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenFire.java b/minecraft_server/src/net/minecraft/src/WorldGenFire.java new file mode 100644 index 0000000..aa1d9dd --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenFire.java @@ -0,0 +1,18 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenFire extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + for(int var6 = 0; var6 < 64; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0 && var1.getBlockId(var7, var8 - 1, var9) == Block.bloodStone.blockID) { + var1.setBlockWithNotify(var7, var8, var9, Block.fire.blockID); + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenFlowers.java b/minecraft_server/src/net/minecraft/src/WorldGenFlowers.java new file mode 100644 index 0000000..0434d48 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenFlowers.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenFlowers extends WorldGenerator { + private int plantBlockId; + + public WorldGenFlowers(int var1) { + this.plantBlockId = var1; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + for(int var6 = 0; var6 < 64; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0 && ((BlockFlower)Block.blocksList[this.plantBlockId]).canBlockStay(var1, var7, var8, var9)) { + var1.setBlock(var7, var8, var9, this.plantBlockId); + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenHellLava.java b/minecraft_server/src/net/minecraft/src/WorldGenHellLava.java new file mode 100644 index 0000000..c75918b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenHellLava.java @@ -0,0 +1,70 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenHellLava extends WorldGenerator { + private int field_4250_a; + + public WorldGenHellLava(int var1) { + this.field_4250_a = var1; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + if(var1.getBlockId(var3, var4 + 1, var5) != Block.bloodStone.blockID) { + return false; + } else if(var1.getBlockId(var3, var4, var5) != 0 && var1.getBlockId(var3, var4, var5) != Block.bloodStone.blockID) { + return false; + } else { + int var6 = 0; + if(var1.getBlockId(var3 - 1, var4, var5) == Block.bloodStone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3 + 1, var4, var5) == Block.bloodStone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3, var4, var5 - 1) == Block.bloodStone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3, var4, var5 + 1) == Block.bloodStone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3, var4 - 1, var5) == Block.bloodStone.blockID) { + ++var6; + } + + int var7 = 0; + if(var1.getBlockId(var3 - 1, var4, var5) == 0) { + ++var7; + } + + if(var1.getBlockId(var3 + 1, var4, var5) == 0) { + ++var7; + } + + if(var1.getBlockId(var3, var4, var5 - 1) == 0) { + ++var7; + } + + if(var1.getBlockId(var3, var4, var5 + 1) == 0) { + ++var7; + } + + if(var1.getBlockId(var3, var4 - 1, var5) == 0) { + ++var7; + } + + if(var6 == 4 && var7 == 1) { + var1.setBlockWithNotify(var3, var4, var5, this.field_4250_a); + var1.field_4280_a = true; + Block.blocksList[this.field_4250_a].updateTick(var1, var3, var4, var5, var2); + var1.field_4280_a = false; + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenLakes.java b/minecraft_server/src/net/minecraft/src/WorldGenLakes.java new file mode 100644 index 0000000..80c560f --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenLakes.java @@ -0,0 +1,88 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenLakes extends WorldGenerator { + private int field_15005_a; + + public WorldGenLakes(int var1) { + this.field_15005_a = var1; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + var3 -= 8; + + for(var5 -= 8; var4 > 0 && var1.getBlockId(var3, var4, var5) == 0; --var4) { + } + + var4 -= 4; + boolean[] var6 = new boolean[2048]; + int var7 = var2.nextInt(4) + 4; + + int var8; + for(var8 = 0; var8 < var7; ++var8) { + double var9 = var2.nextDouble() * 6.0D + 3.0D; + double var11 = var2.nextDouble() * 4.0D + 2.0D; + double var13 = var2.nextDouble() * 6.0D + 3.0D; + double var15 = var2.nextDouble() * (16.0D - var9 - 2.0D) + 1.0D + var9 / 2.0D; + double var17 = var2.nextDouble() * (8.0D - var11 - 4.0D) + 2.0D + var11 / 2.0D; + double var19 = var2.nextDouble() * (16.0D - var13 - 2.0D) + 1.0D + var13 / 2.0D; + + for(int var21 = 1; var21 < 15; ++var21) { + for(int var22 = 1; var22 < 15; ++var22) { + for(int var23 = 1; var23 < 7; ++var23) { + double var24 = ((double)var21 - var15) / (var9 / 2.0D); + double var26 = ((double)var23 - var17) / (var11 / 2.0D); + double var28 = ((double)var22 - var19) / (var13 / 2.0D); + double var30 = var24 * var24 + var26 * var26 + var28 * var28; + if(var30 < 1.0D) { + var6[(var21 * 16 + var22) * 8 + var23] = true; + } + } + } + } + } + + int var10; + int var32; + for(var8 = 0; var8 < 16; ++var8) { + for(var32 = 0; var32 < 16; ++var32) { + for(var10 = 0; var10 < 8; ++var10) { + boolean var33 = !var6[(var8 * 16 + var32) * 8 + var10] && (var8 < 15 && var6[((var8 + 1) * 16 + var32) * 8 + var10] || var8 > 0 && var6[((var8 - 1) * 16 + var32) * 8 + var10] || var32 < 15 && var6[(var8 * 16 + var32 + 1) * 8 + var10] || var32 > 0 && var6[(var8 * 16 + (var32 - 1)) * 8 + var10] || var10 < 7 && var6[(var8 * 16 + var32) * 8 + var10 + 1] || var10 > 0 && var6[(var8 * 16 + var32) * 8 + (var10 - 1)]); + if(var33) { + Material var12 = var1.getBlockMaterial(var3 + var8, var4 + var10, var5 + var32); + if(var10 >= 4 && var12.getIsLiquid()) { + return false; + } + + if(var10 < 4 && !var12.func_216_a() && var1.getBlockId(var3 + var8, var4 + var10, var5 + var32) != this.field_15005_a) { + return false; + } + } + } + } + } + + for(var8 = 0; var8 < 16; ++var8) { + for(var32 = 0; var32 < 16; ++var32) { + for(var10 = 0; var10 < 8; ++var10) { + if(var6[(var8 * 16 + var32) * 8 + var10]) { + var1.setBlockWithNotify(var3 + var8, var4 + var10, var5 + var32, var10 >= 4 ? 0 : this.field_15005_a); + } + } + } + } + + for(var8 = 0; var8 < 16; ++var8) { + for(var32 = 0; var32 < 16; ++var32) { + for(var10 = 4; var10 < 8; ++var10) { + if(var6[(var8 * 16 + var32) * 8 + var10] && var1.getBlockId(var3 + var8, var4 + var10 - 1, var5 + var32) == Block.dirt.blockID && var1.getSavedLightValue(EnumSkyBlock.Sky, var3 + var8, var4 + var10, var5 + var32) > 0) { + var1.setBlockWithNotify(var3 + var8, var4 + var10 - 1, var5 + var32, Block.grass.blockID); + } + } + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenLightStone1.java b/minecraft_server/src/net/minecraft/src/WorldGenLightStone1.java new file mode 100644 index 0000000..1a3fe1a --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenLightStone1.java @@ -0,0 +1,61 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenLightStone1 extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + if(var1.getBlockId(var3, var4, var5) != 0) { + return false; + } else if(var1.getBlockId(var3, var4 + 1, var5) != Block.bloodStone.blockID) { + return false; + } else { + var1.setBlockWithNotify(var3, var4, var5, Block.lightStone.blockID); + + for(int var6 = 0; var6 < 1500; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 - var2.nextInt(12); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0) { + int var10 = 0; + + for(int var11 = 0; var11 < 6; ++var11) { + int var12 = 0; + if(var11 == 0) { + var12 = var1.getBlockId(var7 - 1, var8, var9); + } + + if(var11 == 1) { + var12 = var1.getBlockId(var7 + 1, var8, var9); + } + + if(var11 == 2) { + var12 = var1.getBlockId(var7, var8 - 1, var9); + } + + if(var11 == 3) { + var12 = var1.getBlockId(var7, var8 + 1, var9); + } + + if(var11 == 4) { + var12 = var1.getBlockId(var7, var8, var9 - 1); + } + + if(var11 == 5) { + var12 = var1.getBlockId(var7, var8, var9 + 1); + } + + if(var12 == Block.lightStone.blockID) { + ++var10; + } + } + + if(var10 == 1) { + var1.setBlockWithNotify(var7, var8, var9, Block.lightStone.blockID); + } + } + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenLightStone2.java b/minecraft_server/src/net/minecraft/src/WorldGenLightStone2.java new file mode 100644 index 0000000..9ec8ec3 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenLightStone2.java @@ -0,0 +1,61 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenLightStone2 extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + if(var1.getBlockId(var3, var4, var5) != 0) { + return false; + } else if(var1.getBlockId(var3, var4 + 1, var5) != Block.bloodStone.blockID) { + return false; + } else { + var1.setBlockWithNotify(var3, var4, var5, Block.lightStone.blockID); + + for(int var6 = 0; var6 < 1500; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 - var2.nextInt(12); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0) { + int var10 = 0; + + for(int var11 = 0; var11 < 6; ++var11) { + int var12 = 0; + if(var11 == 0) { + var12 = var1.getBlockId(var7 - 1, var8, var9); + } + + if(var11 == 1) { + var12 = var1.getBlockId(var7 + 1, var8, var9); + } + + if(var11 == 2) { + var12 = var1.getBlockId(var7, var8 - 1, var9); + } + + if(var11 == 3) { + var12 = var1.getBlockId(var7, var8 + 1, var9); + } + + if(var11 == 4) { + var12 = var1.getBlockId(var7, var8, var9 - 1); + } + + if(var11 == 5) { + var12 = var1.getBlockId(var7, var8, var9 + 1); + } + + if(var12 == Block.lightStone.blockID) { + ++var10; + } + } + + if(var10 == 1) { + var1.setBlockWithNotify(var7, var8, var9, Block.lightStone.blockID); + } + } + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenLiquids.java b/minecraft_server/src/net/minecraft/src/WorldGenLiquids.java new file mode 100644 index 0000000..15b3d45 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenLiquids.java @@ -0,0 +1,64 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenLiquids extends WorldGenerator { + private int liquidBlockId; + + public WorldGenLiquids(int var1) { + this.liquidBlockId = var1; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + if(var1.getBlockId(var3, var4 + 1, var5) != Block.stone.blockID) { + return false; + } else if(var1.getBlockId(var3, var4 - 1, var5) != Block.stone.blockID) { + return false; + } else if(var1.getBlockId(var3, var4, var5) != 0 && var1.getBlockId(var3, var4, var5) != Block.stone.blockID) { + return false; + } else { + int var6 = 0; + if(var1.getBlockId(var3 - 1, var4, var5) == Block.stone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3 + 1, var4, var5) == Block.stone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3, var4, var5 - 1) == Block.stone.blockID) { + ++var6; + } + + if(var1.getBlockId(var3, var4, var5 + 1) == Block.stone.blockID) { + ++var6; + } + + int var7 = 0; + if(var1.getBlockId(var3 - 1, var4, var5) == 0) { + ++var7; + } + + if(var1.getBlockId(var3 + 1, var4, var5) == 0) { + ++var7; + } + + if(var1.getBlockId(var3, var4, var5 - 1) == 0) { + ++var7; + } + + if(var1.getBlockId(var3, var4, var5 + 1) == 0) { + ++var7; + } + + if(var6 == 3 && var7 == 1) { + var1.setBlockWithNotify(var3, var4, var5, this.liquidBlockId); + var1.field_4280_a = true; + Block.blocksList[this.liquidBlockId].updateTick(var1, var3, var4, var5, var2); + var1.field_4280_a = false; + } + + return true; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenMinable.java b/minecraft_server/src/net/minecraft/src/WorldGenMinable.java new file mode 100644 index 0000000..f852d5b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenMinable.java @@ -0,0 +1,47 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenMinable extends WorldGenerator { + private int minableBlockId; + private int numberOfBlocks; + + public WorldGenMinable(int var1, int var2) { + this.minableBlockId = var1; + this.numberOfBlocks = var2; + } + + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + float var6 = var2.nextFloat() * (float)Math.PI; + double var7 = (double)((float)(var3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var9 = (double)((float)(var3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); + double var11 = (double)((float)(var5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var13 = (double)((float)(var5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); + double var15 = (double)(var4 + var2.nextInt(3) + 2); + double var17 = (double)(var4 + var2.nextInt(3) + 2); + + for(int var19 = 0; var19 <= this.numberOfBlocks; ++var19) { + double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; + double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; + double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; + double var26 = var2.nextDouble() * (double)this.numberOfBlocks / 16.0D; + double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; + + for(int var32 = (int)(var20 - var28 / 2.0D); var32 <= (int)(var20 + var28 / 2.0D); ++var32) { + for(int var33 = (int)(var22 - var30 / 2.0D); var33 <= (int)(var22 + var30 / 2.0D); ++var33) { + for(int var34 = (int)(var24 - var28 / 2.0D); var34 <= (int)(var24 + var28 / 2.0D); ++var34) { + double var35 = ((double)var32 + 0.5D - var20) / (var28 / 2.0D); + double var37 = ((double)var33 + 0.5D - var22) / (var30 / 2.0D); + double var39 = ((double)var34 + 0.5D - var24) / (var28 / 2.0D); + if(var35 * var35 + var37 * var37 + var39 * var39 < 1.0D && var1.getBlockId(var32, var33, var34) == Block.stone.blockID) { + var1.setBlock(var32, var33, var34, this.minableBlockId); + } + } + } + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenPumpkin.java b/minecraft_server/src/net/minecraft/src/WorldGenPumpkin.java new file mode 100644 index 0000000..9cdacc5 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenPumpkin.java @@ -0,0 +1,18 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenPumpkin extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + for(int var6 = 0; var6 < 64; ++var6) { + int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); + int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); + int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); + if(var1.getBlockId(var7, var8, var9) == 0 && var1.getBlockId(var7, var8 - 1, var9) == Block.grass.blockID && Block.pumpkin.canPlaceBlockAt(var1, var7, var8, var9)) { + var1.func_470_a(var7, var8, var9, Block.pumpkin.blockID, var2.nextInt(4)); + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenReed.java b/minecraft_server/src/net/minecraft/src/WorldGenReed.java new file mode 100644 index 0000000..cfd177e --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenReed.java @@ -0,0 +1,24 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenReed extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + for(int var6 = 0; var6 < 20; ++var6) { + int var7 = var3 + var2.nextInt(4) - var2.nextInt(4); + int var8 = var4; + int var9 = var5 + var2.nextInt(4) - var2.nextInt(4); + if(var1.getBlockId(var7, var4, var9) == 0 && (var1.getBlockMaterial(var7 - 1, var4 - 1, var9) == Material.water || var1.getBlockMaterial(var7 + 1, var4 - 1, var9) == Material.water || var1.getBlockMaterial(var7, var4 - 1, var9 - 1) == Material.water || var1.getBlockMaterial(var7, var4 - 1, var9 + 1) == Material.water)) { + int var10 = 2 + var2.nextInt(var2.nextInt(3) + 1); + + for(int var11 = 0; var11 < var10; ++var11) { + if(Block.reed.canBlockStay(var1, var7, var8 + var11, var9)) { + var1.setBlock(var7, var8 + var11, var9, Block.reed.blockID); + } + } + } + } + + return true; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenTrees.java b/minecraft_server/src/net/minecraft/src/WorldGenTrees.java new file mode 100644 index 0000000..985f46d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenTrees.java @@ -0,0 +1,78 @@ +package net.minecraft.src; + +import java.util.Random; + +public class WorldGenTrees extends WorldGenerator { + public boolean generate(World var1, Random var2, int var3, int var4, int var5) { + int var6 = var2.nextInt(3) + 4; + boolean var7 = true; + if(var4 >= 1 && var4 + var6 + 1 <= 128) { + int var8; + int var10; + int var11; + int var12; + for(var8 = var4; var8 <= var4 + 1 + var6; ++var8) { + byte var9 = 1; + if(var8 == var4) { + var9 = 0; + } + + if(var8 >= var4 + 1 + var6 - 2) { + var9 = 2; + } + + for(var10 = var3 - var9; var10 <= var3 + var9 && var7; ++var10) { + for(var11 = var5 - var9; var11 <= var5 + var9 && var7; ++var11) { + if(var8 >= 0 && var8 < 128) { + var12 = var1.getBlockId(var10, var8, var11); + if(var12 != 0 && var12 != Block.leaves.blockID) { + var7 = false; + } + } else { + var7 = false; + } + } + } + } + + if(!var7) { + return false; + } else { + var8 = var1.getBlockId(var3, var4 - 1, var5); + if((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && var4 < 128 - var6 - 1) { + var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); + + int var16; + for(var16 = var4 - 3 + var6; var16 <= var4 + var6; ++var16) { + var10 = var16 - (var4 + var6); + var11 = 1 - var10 / 2; + + for(var12 = var3 - var11; var12 <= var3 + var11; ++var12) { + int var13 = var12 - var3; + + for(int var14 = var5 - var11; var14 <= var5 + var11; ++var14) { + int var15 = var14 - var5; + if((Math.abs(var13) != var11 || Math.abs(var15) != var11 || var2.nextInt(2) != 0 && var10 != 0) && !Block.field_540_p[var1.getBlockId(var12, var16, var14)]) { + var1.setBlock(var12, var16, var14, Block.leaves.blockID); + } + } + } + } + + for(var16 = 0; var16 < var6; ++var16) { + var10 = var1.getBlockId(var3, var4 + var16, var5); + if(var10 == 0 || var10 == Block.leaves.blockID) { + var1.setBlock(var3, var4 + var16, var5, Block.wood.blockID); + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldGenerator.java b/minecraft_server/src/net/minecraft/src/WorldGenerator.java new file mode 100644 index 0000000..53289b0 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldGenerator.java @@ -0,0 +1,10 @@ +package net.minecraft.src; + +import java.util.Random; + +public abstract class WorldGenerator { + public abstract boolean generate(World var1, Random var2, int var3, int var4, int var5); + + public void func_420_a(double var1, double var3, double var5) { + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldManager.java b/minecraft_server/src/net/minecraft/src/WorldManager.java new file mode 100644 index 0000000..6c98c2d --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldManager.java @@ -0,0 +1,42 @@ +package net.minecraft.src; + +import net.minecraft.server.MinecraftServer; + +public class WorldManager implements IWorldAccess { + private MinecraftServer mcServer; + + public WorldManager(MinecraftServer var1) { + this.mcServer = var1; + } + + public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { + } + + public void func_681_a(Entity var1) { + this.mcServer.field_6028_k.func_611_a(var1); + } + + public void func_688_b(Entity var1) { + this.mcServer.field_6028_k.func_610_b(var1); + } + + public void playSound(String var1, double var2, double var4, double var6, float var8, float var9) { + } + + public void func_685_a(int var1, int var2, int var3, int var4, int var5, int var6) { + } + + public void func_684_a() { + } + + public void func_683_a(int var1, int var2, int var3) { + this.mcServer.configManager.func_622_a(var1, var2, var3); + } + + public void playRecord(String var1, int var2, int var3, int var4) { + } + + public void func_686_a(int var1, int var2, int var3, TileEntity var4) { + this.mcServer.configManager.sentTileEntityToPlayer(var1, var2, var3, var4); + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldProvider.java b/minecraft_server/src/net/minecraft/src/WorldProvider.java new file mode 100644 index 0000000..e7d64ed --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldProvider.java @@ -0,0 +1,68 @@ +package net.minecraft.src; + +import java.io.File; + +public class WorldProvider { + public World field_4302_a; + public WorldChunkManager field_4301_b; + public boolean field_6167_c = false; + public boolean field_6166_d = false; + public boolean field_4306_c = false; + public float[] lightBrightnessTable = new float[16]; + public int field_6165_g = 0; + private float[] field_6164_h = new float[4]; + + public final void func_4093_a(World var1) { + this.field_4302_a = var1; + this.func_4090_a(); + this.generateLightBrightnessTable(); + } + + protected void generateLightBrightnessTable() { + float var1 = 0.05F; + + for(int var2 = 0; var2 <= 15; ++var2) { + float var3 = 1.0F - (float)var2 / 15.0F; + this.lightBrightnessTable[var2] = (1.0F - var3) / (var3 * 3.0F + 1.0F) * (1.0F - var1) + var1; + } + + } + + protected void func_4090_a() { + this.field_4301_b = new WorldChunkManager(this.field_4302_a); + } + + public IChunkProvider getChunkProvider() { + return new ChunkProviderGenerate(this.field_4302_a, this.field_4302_a.randomSeed); + } + + public IChunkLoader getChunkLoader(File var1) { + return new ChunkLoader(var1, true); + } + + public boolean canCoordinateBeSpawn(int var1, int var2) { + int var3 = this.field_4302_a.func_528_f(var1, var2); + return var3 == Block.sand.blockID; + } + + public float func_4089_a(long var1, float var3) { + int var4 = (int)(var1 % 24000L); + float var5 = ((float)var4 + var3) / 24000.0F - 0.25F; + if(var5 < 0.0F) { + ++var5; + } + + if(var5 > 1.0F) { + --var5; + } + + float var6 = var5; + var5 = 1.0F - (float)((Math.cos((double)var5 * Math.PI) + 1.0D) / 2.0D); + var5 = var6 + (var5 - var6) / 3.0F; + return var5; + } + + public static WorldProvider func_4091_a(int var0) { + return (WorldProvider)(var0 == 0 ? new WorldProvider() : (var0 == -1 ? new WorldProviderHell() : null)); + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldProviderHell.java b/minecraft_server/src/net/minecraft/src/WorldProviderHell.java new file mode 100644 index 0000000..406085b --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldProviderHell.java @@ -0,0 +1,42 @@ +package net.minecraft.src; + +import java.io.File; + +public class WorldProviderHell extends WorldProvider { + public void func_4090_a() { + this.field_4301_b = new WorldChunkManagerHell(MobSpawnerBase.hell, 1.0D, 0.0D); + this.field_6167_c = true; + this.field_6166_d = true; + this.field_4306_c = true; + this.field_6165_g = -1; + } + + protected void generateLightBrightnessTable() { + float var1 = 0.1F; + + for(int var2 = 0; var2 <= 15; ++var2) { + float var3 = 1.0F - (float)var2 / 15.0F; + this.lightBrightnessTable[var2] = (1.0F - var3) / (var3 * 3.0F + 1.0F) * (1.0F - var1) + var1; + } + + } + + public IChunkProvider getChunkProvider() { + return new ChunkProviderHell(this.field_4302_a, this.field_4302_a.randomSeed); + } + + public IChunkLoader getChunkLoader(File var1) { + File var2 = new File(var1, "DIM-1"); + var2.mkdirs(); + return new ChunkLoader(var2, true); + } + + public boolean canCoordinateBeSpawn(int var1, int var2) { + int var3 = this.field_4302_a.func_528_f(var1, var2); + return var3 == Block.bedrock.blockID ? false : (var3 == 0 ? false : Block.field_540_p[var3]); + } + + public float func_4089_a(long var1, float var3) { + return 0.5F; + } +} diff --git a/minecraft_server/src/net/minecraft/src/WorldServer.java b/minecraft_server/src/net/minecraft/src/WorldServer.java new file mode 100644 index 0000000..2b5a575 --- /dev/null +++ b/minecraft_server/src/net/minecraft/src/WorldServer.java @@ -0,0 +1,92 @@ +package net.minecraft.src; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import net.minecraft.server.MinecraftServer; + +public class WorldServer extends World { + public ChunkProviderServer A; + public boolean field_819_z = false; + public boolean field_816_A; + private MinecraftServer field_6160_D; + private MCHashTable E = new MCHashTable(); + + public WorldServer(MinecraftServer var1, File var2, String var3, int var4) { + super(var2, var3, (new Random()).nextLong(), WorldProvider.func_4091_a(var4)); + this.field_6160_D = var1; + } + + public void tick() { + super.tick(); + } + + public void func_4074_a(Entity var1, boolean var2) { + if(!this.field_6160_D.noAnimals && var1 instanceof EntityAnimals) { + var1.setEntityDead(); + } + + if(var1.field_328_f == null || !(var1.field_328_f instanceof EntityPlayer)) { + super.func_4074_a(var1, var2); + } + + } + + public void func_12017_b(Entity var1, boolean var2) { + super.func_4074_a(var1, var2); + } + + protected IChunkProvider func_4076_a(File var1) { + this.A = new ChunkProviderServer(this, this.field_4272_q.getChunkLoader(var1), this.field_4272_q.getChunkProvider()); + return this.A; + } + + public List func_532_d(int var1, int var2, int var3, int var4, int var5, int var6) { + ArrayList var7 = new ArrayList(); + + for(int var8 = 0; var8 < this.field_814_b.size(); ++var8) { + TileEntity var9 = (TileEntity)this.field_814_b.get(var8); + if(var9.xCoord >= var1 && var9.yCoord >= var2 && var9.zCoord >= var3 && var9.xCoord < var4 && var9.yCoord < var5 && var9.zCoord < var6) { + var7.add(var9); + } + } + + return var7; + } + + public boolean func_6157_a(EntityPlayer var1, int var2, int var3, int var4) { + int var5 = (int)MathHelper.abs((float)(var2 - this.spawnX)); + int var6 = (int)MathHelper.abs((float)(var4 - this.spawnZ)); + if(var5 > var6) { + var6 = var5; + } + + return var6 > 16 || this.field_6160_D.configManager.isOp(var1.username); + } + + protected void func_479_b(Entity var1) { + super.func_479_b(var1); + this.E.addKey(var1.field_331_c, var1); + } + + protected void func_531_c(Entity var1) { + super.func_531_c(var1); + this.E.removeObject(var1.field_331_c); + } + + public Entity func_6158_a(int var1) { + return (Entity)this.E.lookup(var1); + } + + public void func_9206_a(Entity var1, byte var2) { + Packet38 var3 = new Packet38(var1.field_331_c, var2); + this.field_6160_D.field_6028_k.func_609_a(var1, var3); + } + + public Explosion func_12015_a(Entity var1, double var2, double var4, double var6, float var8, boolean var9) { + Explosion var10 = super.func_12015_a(var1, var2, var4, var6, var8, var9); + this.field_6160_D.configManager.func_12022_a(var2, var4, var6, 64.0D, new Packet60(var2, var4, var6, var8, var10.field_12025_g)); + return var10; + } +}