Upload server source
This commit is contained in:
parent
de3b03d9de
commit
36d1426e90
25
minecraft_server/.classpath
Normal file
25
minecraft_server/.classpath
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft Server/libraries/natives"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="lib" path="libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar" sourcepath="libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar" sourcepath="libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/lwjgl/lwjgl/lwjgl/2.9.4/lwjgl-2.9.4.jar" sourcepath="libraries/org/lwjgl/lwjgl/lwjgl/2.9.4/lwjgl-2.9.4-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4/lwjgl_util-2.9.4.jar" sourcepath="libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4/lwjgl_util-2.9.4-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/mcphackers/launchwrapper/1.0/launchwrapper-1.0.jar" sourcepath="libraries/org/mcphackers/launchwrapper/1.0/launchwrapper-1.0-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar" sourcepath="libraries/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/ow2/asm/asm/9.2/asm-9.2.jar" sourcepath="libraries/org/ow2/asm/asm/9.2/asm-9.2-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/json/json/20230311/json-20230311.jar" sourcepath="libraries/org/json/json/20230311/json-20230311-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/com/paulscode/codecjorbis/20230120/codecjorbis-20230120.jar" sourcepath="libraries/com/paulscode/codecjorbis/20230120/codecjorbis-20230120-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar" sourcepath="libraries/com/paulscode/codecwav/20101023/codecwav-20101023-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar" sourcepath="libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar-sources"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar" sourcepath="libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar" sourcepath="libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="libraries/org/mcphackers/rdi/rdi/1.0/rdi-1.0.jar" sourcepath="libraries/org/mcphackers/rdi/rdi/1.0/rdi-1.0-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="jars/deobfuscated.jar" sourcepath="jars/deobfuscated-source.jar"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
|
<classpathentry kind="output" path="output"/>
|
||||||
|
</classpath>
|
53
minecraft_server/.project
Normal file
53
minecraft_server/.project
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>Minecraft Server</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>libraries</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/libraries</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>-1002749744921918690</id>
|
||||||
|
<name></name>
|
||||||
|
<type>9</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-name-matches-false-false-src</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<id>-1002749744921918689</id>
|
||||||
|
<name></name>
|
||||||
|
<type>9</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-name-matches-false-false-jars</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<id>-1002749744921918688</id>
|
||||||
|
<name></name>
|
||||||
|
<type>9</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-name-matches-false-false-source</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
|
</projectDescription>
|
19
minecraft_server/Server.launch
Normal file
19
minecraft_server/Server.launch
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/Minecraft Server"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||||
|
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||||
|
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.minecraft.server.MinecraftServer"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="Minecraft Server"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft Server"/>
|
||||||
|
</launchConfiguration>
|
BIN
minecraft_server/jars/deobfuscated-source.jar
Normal file
BIN
minecraft_server/jars/deobfuscated-source.jar
Normal file
Binary file not shown.
BIN
minecraft_server/jars/deobfuscated.jar
Normal file
BIN
minecraft_server/jars/deobfuscated.jar
Normal file
Binary file not shown.
502
minecraft_server/src/net/minecraft/server/MinecraftServer.java
Normal file
502
minecraft_server/src/net/minecraft/server/MinecraftServer.java
Normal file
|
@ -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 <player> removes a player from the server");
|
||||||
|
var3.log(" ban <player> bans a player from the server");
|
||||||
|
var3.log(" pardon <player> pardons a banned player so that they can connect again");
|
||||||
|
var3.log(" ban-ip <ip> bans an IP address from the server");
|
||||||
|
var3.log(" pardon-ip <ip> pardons a banned IP address so that they can connect again");
|
||||||
|
var3.log(" op <player> turns a player into an op");
|
||||||
|
var3.log(" deop <player> removes op status from a player");
|
||||||
|
var3.log(" tp <player1> <player2> moves one player to the same location as another player");
|
||||||
|
var3.log(" give <player> <id> [num] gives a player a resource");
|
||||||
|
var3.log(" tell <player> <message> 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 <message> 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;
|
||||||
|
}
|
||||||
|
}
|
340
minecraft_server/src/net/minecraft/src/AxisAlignedBB.java
Normal file
340
minecraft_server/src/net/minecraft/src/AxisAlignedBB.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
455
minecraft_server/src/net/minecraft/src/Block.java
Normal file
455
minecraft_server/src/net/minecraft/src/Block.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package net.minecraft.src;
|
||||||
|
|
||||||
|
public class BlockBloodStone extends Block {
|
||||||
|
public BlockBloodStone(int var1, int var2) {
|
||||||
|
super(var1, var2, Material.rock);
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockBookshelf.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockBookshelf.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
19
minecraft_server/src/net/minecraft/src/BlockBreakable.java
Normal file
19
minecraft_server/src/net/minecraft/src/BlockBreakable.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
225
minecraft_server/src/net/minecraft/src/BlockButton.java
Normal file
225
minecraft_server/src/net/minecraft/src/BlockButton.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
73
minecraft_server/src/net/minecraft/src/BlockCactus.java
Normal file
73
minecraft_server/src/net/minecraft/src/BlockCactus.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
109
minecraft_server/src/net/minecraft/src/BlockChest.java
Normal file
109
minecraft_server/src/net/minecraft/src/BlockChest.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockClay.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockClay.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
24
minecraft_server/src/net/minecraft/src/BlockContainer.java
Normal file
24
minecraft_server/src/net/minecraft/src/BlockContainer.java
Normal file
|
@ -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_();
|
||||||
|
}
|
98
minecraft_server/src/net/minecraft/src/BlockCrops.java
Normal file
98
minecraft_server/src/net/minecraft/src/BlockCrops.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
7
minecraft_server/src/net/minecraft/src/BlockDirt.java
Normal file
7
minecraft_server/src/net/minecraft/src/BlockDirt.java
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package net.minecraft.src;
|
||||||
|
|
||||||
|
public class BlockDirt extends Block {
|
||||||
|
protected BlockDirt(int var1, int var2) {
|
||||||
|
super(var1, var2, Material.ground);
|
||||||
|
}
|
||||||
|
}
|
162
minecraft_server/src/net/minecraft/src/BlockDoor.java
Normal file
162
minecraft_server/src/net/minecraft/src/BlockDoor.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
21
minecraft_server/src/net/minecraft/src/BlockFence.java
Normal file
21
minecraft_server/src/net/minecraft/src/BlockFence.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
155
minecraft_server/src/net/minecraft/src/BlockFire.java
Normal file
155
minecraft_server/src/net/minecraft/src/BlockFire.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
minecraft_server/src/net/minecraft/src/BlockFlower.java
Normal file
50
minecraft_server/src/net/minecraft/src/BlockFlower.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
263
minecraft_server/src/net/minecraft/src/BlockFlowing.java
Normal file
263
minecraft_server/src/net/minecraft/src/BlockFlowing.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
221
minecraft_server/src/net/minecraft/src/BlockFluids.java
Normal file
221
minecraft_server/src/net/minecraft/src/BlockFluids.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
94
minecraft_server/src/net/minecraft/src/BlockFurnace.java
Normal file
94
minecraft_server/src/net/minecraft/src/BlockFurnace.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
13
minecraft_server/src/net/minecraft/src/BlockGlass.java
Normal file
13
minecraft_server/src/net/minecraft/src/BlockGlass.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
33
minecraft_server/src/net/minecraft/src/BlockGrass.java
Normal file
33
minecraft_server/src/net/minecraft/src/BlockGrass.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
13
minecraft_server/src/net/minecraft/src/BlockGravel.java
Normal file
13
minecraft_server/src/net/minecraft/src/BlockGravel.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
35
minecraft_server/src/net/minecraft/src/BlockIce.java
Normal file
35
minecraft_server/src/net/minecraft/src/BlockIce.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
44
minecraft_server/src/net/minecraft/src/BlockJukeBox.java
Normal file
44
minecraft_server/src/net/minecraft/src/BlockJukeBox.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
91
minecraft_server/src/net/minecraft/src/BlockLadder.java
Normal file
91
minecraft_server/src/net/minecraft/src/BlockLadder.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
116
minecraft_server/src/net/minecraft/src/BlockLeaves.java
Normal file
116
minecraft_server/src/net/minecraft/src/BlockLeaves.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
19
minecraft_server/src/net/minecraft/src/BlockLeavesBase.java
Normal file
19
minecraft_server/src/net/minecraft/src/BlockLeavesBase.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
192
minecraft_server/src/net/minecraft/src/BlockLever.java
Normal file
192
minecraft_server/src/net/minecraft/src/BlockLever.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
13
minecraft_server/src/net/minecraft/src/BlockLightStone.java
Normal file
13
minecraft_server/src/net/minecraft/src/BlockLightStone.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
22
minecraft_server/src/net/minecraft/src/BlockLog.java
Normal file
22
minecraft_server/src/net/minecraft/src/BlockLog.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
minecraft_server/src/net/minecraft/src/BlockMobSpawner.java
Normal file
25
minecraft_server/src/net/minecraft/src/BlockMobSpawner.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockMushroom.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockMushroom.java
Normal file
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockObsidian.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockObsidian.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockOre.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockOre.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
12
minecraft_server/src/net/minecraft/src/BlockOreBlock.java
Normal file
12
minecraft_server/src/net/minecraft/src/BlockOreBlock.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
130
minecraft_server/src/net/minecraft/src/BlockPortal.java
Normal file
130
minecraft_server/src/net/minecraft/src/BlockPortal.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
140
minecraft_server/src/net/minecraft/src/BlockPressurePlate.java
Normal file
140
minecraft_server/src/net/minecraft/src/BlockPressurePlate.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
30
minecraft_server/src/net/minecraft/src/BlockPumpkin.java
Normal file
30
minecraft_server/src/net/minecraft/src/BlockPumpkin.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
97
minecraft_server/src/net/minecraft/src/BlockRedstoneOre.java
Normal file
97
minecraft_server/src/net/minecraft/src/BlockRedstoneOre.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
126
minecraft_server/src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
126
minecraft_server/src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
286
minecraft_server/src/net/minecraft/src/BlockRedstoneWire.java
Normal file
286
minecraft_server/src/net/minecraft/src/BlockRedstoneWire.java
Normal file
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
65
minecraft_server/src/net/minecraft/src/BlockReed.java
Normal file
65
minecraft_server/src/net/minecraft/src/BlockReed.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
53
minecraft_server/src/net/minecraft/src/BlockSand.java
Normal file
53
minecraft_server/src/net/minecraft/src/BlockSand.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
minecraft_server/src/net/minecraft/src/BlockSapling.java
Normal file
32
minecraft_server/src/net/minecraft/src/BlockSapling.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
100
minecraft_server/src/net/minecraft/src/BlockSign.java
Normal file
100
minecraft_server/src/net/minecraft/src/BlockSign.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockSlowSand.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockSlowSand.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
71
minecraft_server/src/net/minecraft/src/BlockSnow.java
Normal file
71
minecraft_server/src/net/minecraft/src/BlockSnow.java
Normal file
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
26
minecraft_server/src/net/minecraft/src/BlockSnowBlock.java
Normal file
26
minecraft_server/src/net/minecraft/src/BlockSnowBlock.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
85
minecraft_server/src/net/minecraft/src/BlockSoil.java
Normal file
85
minecraft_server/src/net/minecraft/src/BlockSoil.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
35
minecraft_server/src/net/minecraft/src/BlockSponge.java
Normal file
35
minecraft_server/src/net/minecraft/src/BlockSponge.java
Normal file
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
156
minecraft_server/src/net/minecraft/src/BlockStairs.java
Normal file
156
minecraft_server/src/net/minecraft/src/BlockStairs.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
57
minecraft_server/src/net/minecraft/src/BlockStationary.java
Normal file
57
minecraft_server/src/net/minecraft/src/BlockStationary.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
55
minecraft_server/src/net/minecraft/src/BlockStep.java
Normal file
55
minecraft_server/src/net/minecraft/src/BlockStep.java
Normal file
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
13
minecraft_server/src/net/minecraft/src/BlockStone.java
Normal file
13
minecraft_server/src/net/minecraft/src/BlockStone.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
39
minecraft_server/src/net/minecraft/src/BlockTNT.java
Normal file
39
minecraft_server/src/net/minecraft/src/BlockTNT.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
132
minecraft_server/src/net/minecraft/src/BlockTorch.java
Normal file
132
minecraft_server/src/net/minecraft/src/BlockTorch.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
17
minecraft_server/src/net/minecraft/src/BlockWorkbench.java
Normal file
17
minecraft_server/src/net/minecraft/src/BlockWorkbench.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
575
minecraft_server/src/net/minecraft/src/Chunk.java
Normal file
575
minecraft_server/src/net/minecraft/src/Chunk.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
58
minecraft_server/src/net/minecraft/src/ChunkCache.java
Normal file
58
minecraft_server/src/net/minecraft/src/ChunkCache.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
24
minecraft_server/src/net/minecraft/src/ChunkCoordinates.java
Normal file
24
minecraft_server/src/net/minecraft/src/ChunkCoordinates.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
207
minecraft_server/src/net/minecraft/src/ChunkLoader.java
Normal file
207
minecraft_server/src/net/minecraft/src/ChunkLoader.java
Normal file
|
@ -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 {
|
||||||
|
}
|
||||||
|
}
|
26
minecraft_server/src/net/minecraft/src/ChunkPosition.java
Normal file
26
minecraft_server/src/net/minecraft/src/ChunkPosition.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
370
minecraft_server/src/net/minecraft/src/ChunkProviderHell.java
Normal file
370
minecraft_server/src/net/minecraft/src/ChunkProviderHell.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
200
minecraft_server/src/net/minecraft/src/ChunkProviderServer.java
Normal file
200
minecraft_server/src/net/minecraft/src/ChunkProviderServer.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
816
minecraft_server/src/net/minecraft/src/Entity.java
Normal file
816
minecraft_server/src/net/minecraft/src/Entity.java
Normal file
|
@ -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() {
|
||||||
|
}
|
||||||
|
}
|
30
minecraft_server/src/net/minecraft/src/EntityAnimals.java
Normal file
30
minecraft_server/src/net/minecraft/src/EntityAnimals.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
225
minecraft_server/src/net/minecraft/src/EntityArrow.java
Normal file
225
minecraft_server/src/net/minecraft/src/EntityArrow.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
288
minecraft_server/src/net/minecraft/src/EntityBoat.java
Normal file
288
minecraft_server/src/net/minecraft/src/EntityBoat.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
77
minecraft_server/src/net/minecraft/src/EntityChicken.java
Normal file
77
minecraft_server/src/net/minecraft/src/EntityChicken.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
49
minecraft_server/src/net/minecraft/src/EntityCow.java
Normal file
49
minecraft_server/src/net/minecraft/src/EntityCow.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
151
minecraft_server/src/net/minecraft/src/EntityCreature.java
Normal file
151
minecraft_server/src/net/minecraft/src/EntityCreature.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
106
minecraft_server/src/net/minecraft/src/EntityCreeper.java
Normal file
106
minecraft_server/src/net/minecraft/src/EntityCreeper.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
193
minecraft_server/src/net/minecraft/src/EntityFireball.java
Normal file
193
minecraft_server/src/net/minecraft/src/EntityFireball.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
313
minecraft_server/src/net/minecraft/src/EntityFish.java
Normal file
313
minecraft_server/src/net/minecraft/src/EntityFish.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
66
minecraft_server/src/net/minecraft/src/EntityFlying.java
Normal file
66
minecraft_server/src/net/minecraft/src/EntityFlying.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
139
minecraft_server/src/net/minecraft/src/EntityGhast.java
Normal file
139
minecraft_server/src/net/minecraft/src/EntityGhast.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
191
minecraft_server/src/net/minecraft/src/EntityItem.java
Normal file
191
minecraft_server/src/net/minecraft/src/EntityItem.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
87
minecraft_server/src/net/minecraft/src/EntityList.java
Normal file
87
minecraft_server/src/net/minecraft/src/EntityList.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
719
minecraft_server/src/net/minecraft/src/EntityLiving.java
Normal file
719
minecraft_server/src/net/minecraft/src/EntityLiving.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
601
minecraft_server/src/net/minecraft/src/EntityMinecart.java
Normal file
601
minecraft_server/src/net/minecraft/src/EntityMinecart.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
80
minecraft_server/src/net/minecraft/src/EntityMobs.java
Normal file
80
minecraft_server/src/net/minecraft/src/EntityMobs.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
213
minecraft_server/src/net/minecraft/src/EntityPainting.java
Normal file
213
minecraft_server/src/net/minecraft/src/EntityPainting.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
47
minecraft_server/src/net/minecraft/src/EntityPig.java
Normal file
47
minecraft_server/src/net/minecraft/src/EntityPig.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
88
minecraft_server/src/net/minecraft/src/EntityPigZombie.java
Normal file
88
minecraft_server/src/net/minecraft/src/EntityPigZombie.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
266
minecraft_server/src/net/minecraft/src/EntityPlayer.java
Normal file
266
minecraft_server/src/net/minecraft/src/EntityPlayer.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
169
minecraft_server/src/net/minecraft/src/EntityPlayerMP.java
Normal file
169
minecraft_server/src/net/minecraft/src/EntityPlayerMP.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user