added server sources
This commit is contained in:
415
src/net/minecraft/server/MinecraftServer.java
Normal file
415
src/net/minecraft/server/MinecraftServer.java
Normal file
@@ -0,0 +1,415 @@
|
||||
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.Random;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.ChunkCoordinates;
|
||||
import net.minecraft.src.ConsoleCommandHandler;
|
||||
import net.minecraft.src.ConsoleLogManager;
|
||||
import net.minecraft.src.ConvertProgressUpdater;
|
||||
import net.minecraft.src.EntityTracker;
|
||||
import net.minecraft.src.ICommandListener;
|
||||
import net.minecraft.src.IProgressUpdate;
|
||||
import net.minecraft.src.ISaveFormat;
|
||||
import net.minecraft.src.IUpdatePlayerListBox;
|
||||
import net.minecraft.src.NetworkListenThread;
|
||||
import net.minecraft.src.Packet4UpdateTime;
|
||||
import net.minecraft.src.PropertyManager;
|
||||
import net.minecraft.src.SaveConverterMcRegion;
|
||||
import net.minecraft.src.SaveOldDir;
|
||||
import net.minecraft.src.ServerCommand;
|
||||
import net.minecraft.src.ServerConfigurationManager;
|
||||
import net.minecraft.src.ServerGUI;
|
||||
import net.minecraft.src.StatList;
|
||||
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;
|
||||
import net.minecraft.src.WorldServerMulti;
|
||||
|
||||
public class MinecraftServer implements Runnable, ICommandListener {
|
||||
public static Logger logger = Logger.getLogger("Minecraft");
|
||||
public static HashMap field_6037_b = new HashMap();
|
||||
public NetworkListenThread networkServer;
|
||||
public PropertyManager propertyManagerObj;
|
||||
public WorldServer[] worldMngr;
|
||||
public ServerConfigurationManager configManager;
|
||||
private ConsoleCommandHandler commandHandler;
|
||||
private boolean serverRunning = true;
|
||||
public boolean serverStopped = false;
|
||||
int deathTime = 0;
|
||||
public String currentTask;
|
||||
public int percentDone;
|
||||
private List field_9010_p = new ArrayList();
|
||||
private List commands = Collections.synchronizedList(new ArrayList());
|
||||
public EntityTracker[] entityTracker = new EntityTracker[2];
|
||||
public boolean onlineMode;
|
||||
public boolean spawnPeacefulMobs;
|
||||
public boolean pvpOn;
|
||||
public boolean allowFlight;
|
||||
|
||||
public MinecraftServer() {
|
||||
new ThreadSleepForever(this);
|
||||
}
|
||||
|
||||
private boolean startServer() throws UnknownHostException {
|
||||
this.commandHandler = new ConsoleCommandHandler(this);
|
||||
ThreadCommandReader var1 = new ThreadCommandReader(this);
|
||||
var1.setDaemon(true);
|
||||
var1.start();
|
||||
ConsoleLogManager.init();
|
||||
logger.info("Starting minecraft server version Beta 1.7.3");
|
||||
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.spawnPeacefulMobs = this.propertyManagerObj.getBooleanProperty("spawn-animals", true);
|
||||
this.pvpOn = this.propertyManagerObj.getBooleanProperty("pvp", true);
|
||||
this.allowFlight = this.propertyManagerObj.getBooleanProperty("allow-flight", false);
|
||||
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.networkServer = new NetworkListenThread(this, var3, var4);
|
||||
} catch (IOException var13) {
|
||||
logger.warning("**** FAILED TO BIND TO PORT!");
|
||||
logger.log(Level.WARNING, "The exception was: " + var13.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.entityTracker[0] = new EntityTracker(this, 0);
|
||||
this.entityTracker[1] = new EntityTracker(this, -1);
|
||||
long var5 = System.nanoTime();
|
||||
String var7 = this.propertyManagerObj.getStringProperty("level-name", "world");
|
||||
String var8 = this.propertyManagerObj.getStringProperty("level-seed", "");
|
||||
long var9 = (new Random()).nextLong();
|
||||
if(var8.length() > 0) {
|
||||
try {
|
||||
var9 = Long.parseLong(var8);
|
||||
} catch (NumberFormatException var12) {
|
||||
var9 = (long)var8.hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
logger.info("Preparing level \"" + var7 + "\"");
|
||||
this.initWorld(new SaveConverterMcRegion(new File(".")), var7, var9);
|
||||
logger.info("Done (" + (System.nanoTime() - var5) + "ns)! For help, type \"help\" or \"?\"");
|
||||
return true;
|
||||
}
|
||||
|
||||
private void initWorld(ISaveFormat var1, String var2, long var3) {
|
||||
if(var1.isOldSaveType(var2)) {
|
||||
logger.info("Converting map!");
|
||||
var1.converMapToMCRegion(var2, new ConvertProgressUpdater(this));
|
||||
}
|
||||
|
||||
this.worldMngr = new WorldServer[2];
|
||||
SaveOldDir var5 = new SaveOldDir(new File("."), var2, true);
|
||||
|
||||
for(int var6 = 0; var6 < this.worldMngr.length; ++var6) {
|
||||
if(var6 == 0) {
|
||||
this.worldMngr[var6] = new WorldServer(this, var5, var2, var6 == 0 ? 0 : -1, var3);
|
||||
} else {
|
||||
this.worldMngr[var6] = new WorldServerMulti(this, var5, var2, var6 == 0 ? 0 : -1, var3, this.worldMngr[0]);
|
||||
}
|
||||
|
||||
this.worldMngr[var6].addWorldAccess(new WorldManager(this, this.worldMngr[var6]));
|
||||
this.worldMngr[var6].difficultySetting = this.propertyManagerObj.getBooleanProperty("spawn-monsters", true) ? 1 : 0;
|
||||
this.worldMngr[var6].setAllowedSpawnTypes(this.propertyManagerObj.getBooleanProperty("spawn-monsters", true), this.spawnPeacefulMobs);
|
||||
this.configManager.setPlayerManager(this.worldMngr);
|
||||
}
|
||||
|
||||
short var18 = 196;
|
||||
long var7 = System.currentTimeMillis();
|
||||
|
||||
for(int var9 = 0; var9 < this.worldMngr.length; ++var9) {
|
||||
logger.info("Preparing start region for level " + var9);
|
||||
if(var9 == 0 || this.propertyManagerObj.getBooleanProperty("allow-nether", true)) {
|
||||
WorldServer var10 = this.worldMngr[var9];
|
||||
ChunkCoordinates var11 = var10.getSpawnPoint();
|
||||
|
||||
for(int var12 = -var18; var12 <= var18 && this.serverRunning; var12 += 16) {
|
||||
for(int var13 = -var18; var13 <= var18 && this.serverRunning; var13 += 16) {
|
||||
long var14 = System.currentTimeMillis();
|
||||
if(var14 < var7) {
|
||||
var7 = var14;
|
||||
}
|
||||
|
||||
if(var14 > var7 + 1000L) {
|
||||
int var16 = (var18 * 2 + 1) * (var18 * 2 + 1);
|
||||
int var17 = (var12 + var18) * (var18 * 2 + 1) + var13 + 1;
|
||||
this.outputPercentRemaining("Preparing spawn area", var17 * 100 / var16);
|
||||
var7 = var14;
|
||||
}
|
||||
|
||||
var10.chunkProviderServer.loadChunk(var11.posX + var12 >> 4, var11.posZ + var13 >> 4);
|
||||
|
||||
while(var10.func_6156_d() && this.serverRunning) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.clearCurrentTask();
|
||||
}
|
||||
|
||||
private void outputPercentRemaining(String var1, int var2) {
|
||||
this.currentTask = var1;
|
||||
this.percentDone = var2;
|
||||
logger.info(var1 + ": " + var2 + "%");
|
||||
}
|
||||
|
||||
private void clearCurrentTask() {
|
||||
this.currentTask = null;
|
||||
this.percentDone = 0;
|
||||
}
|
||||
|
||||
private void saveServerWorld() {
|
||||
logger.info("Saving chunks");
|
||||
|
||||
for(int var1 = 0; var1 < this.worldMngr.length; ++var1) {
|
||||
WorldServer var2 = this.worldMngr[var1];
|
||||
var2.saveWorld(true, (IProgressUpdate)null);
|
||||
var2.func_30006_w();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void stopServer() {
|
||||
logger.info("Stopping server");
|
||||
if(this.configManager != null) {
|
||||
this.configManager.savePlayerStates();
|
||||
}
|
||||
|
||||
for(int var1 = 0; var1 < this.worldMngr.length; ++var1) {
|
||||
WorldServer var2 = this.worldMngr[var1];
|
||||
if(var2 != null) {
|
||||
this.saveServerWorld();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void initiateShutdown() {
|
||||
this.serverRunning = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
if(this.startServer()) {
|
||||
long var1 = System.currentTimeMillis();
|
||||
|
||||
for(long var3 = 0L; this.serverRunning; Thread.sleep(1L)) {
|
||||
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;
|
||||
if(this.worldMngr[0].isAllPlayersFullyAsleep()) {
|
||||
this.doTick();
|
||||
var3 = 0L;
|
||||
} else {
|
||||
while(var3 > 50L) {
|
||||
var3 -= 50L;
|
||||
this.doTick();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while(this.serverRunning) {
|
||||
this.commandLineParser();
|
||||
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException var57) {
|
||||
var57.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable var58) {
|
||||
var58.printStackTrace();
|
||||
logger.log(Level.SEVERE, "Unexpected exception", var58);
|
||||
|
||||
while(this.serverRunning) {
|
||||
this.commandLineParser();
|
||||
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException var56) {
|
||||
var56.printStackTrace();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
this.stopServer();
|
||||
this.serverStopped = true;
|
||||
} catch (Throwable var54) {
|
||||
var54.printStackTrace();
|
||||
} finally {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void doTick() {
|
||||
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.deathTime;
|
||||
|
||||
for(var6 = 0; var6 < this.worldMngr.length; ++var6) {
|
||||
if(var6 == 0 || this.propertyManagerObj.getBooleanProperty("allow-nether", true)) {
|
||||
WorldServer var7 = this.worldMngr[var6];
|
||||
if(this.deathTime % 20 == 0) {
|
||||
this.configManager.sendPacketToAllPlayersInDimension(new Packet4UpdateTime(var7.getWorldTime()), var7.worldProvider.worldType);
|
||||
}
|
||||
|
||||
var7.tick();
|
||||
|
||||
while(var7.func_6156_d()) {
|
||||
}
|
||||
|
||||
var7.updateEntities();
|
||||
}
|
||||
}
|
||||
|
||||
this.networkServer.handleNetworkListenThread();
|
||||
this.configManager.onTick();
|
||||
|
||||
for(var6 = 0; var6 < this.entityTracker.length; ++var6) {
|
||||
this.entityTracker[var6].updateTrackedEntities();
|
||||
}
|
||||
|
||||
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);
|
||||
this.commandHandler.handleCommand(var1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void func_6022_a(IUpdatePlayerListBox var1) {
|
||||
this.field_9010_p.add(var1);
|
||||
}
|
||||
|
||||
public static void main(String[] var0) {
|
||||
StatList.func_27092_a();
|
||||
|
||||
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 void logWarning(String var1) {
|
||||
logger.warning(var1);
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return "CONSOLE";
|
||||
}
|
||||
|
||||
public WorldServer getWorldManager(int var1) {
|
||||
return var1 == -1 ? this.worldMngr[1] : this.worldMngr[0];
|
||||
}
|
||||
|
||||
public EntityTracker getEntityTracker(int var1) {
|
||||
return var1 == -1 ? this.entityTracker[1] : this.entityTracker[0];
|
||||
}
|
||||
|
||||
public static boolean isServerRunning(MinecraftServer var0) {
|
||||
return var0.serverRunning;
|
||||
}
|
||||
}
|
||||
67
src/net/minecraft/src/Achievement.java
Normal file
67
src/net/minecraft/src/Achievement.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class Achievement extends StatBase {
|
||||
public final int field_25067_a;
|
||||
public final int field_27991_b;
|
||||
public final Achievement field_27992_c;
|
||||
private final String field_27063_l;
|
||||
public final ItemStack theItemStack;
|
||||
private boolean field_27062_m;
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, Item var5, Achievement var6) {
|
||||
this(var1, var2, var3, var4, new ItemStack(var5), var6);
|
||||
}
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, Block var5, Achievement var6) {
|
||||
this(var1, var2, var3, var4, new ItemStack(var5), var6);
|
||||
}
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, ItemStack var5, Achievement var6) {
|
||||
super(5242880 + var1, StatCollector.translateToLocal("achievement." + var2));
|
||||
this.theItemStack = var5;
|
||||
this.field_27063_l = StatCollector.translateToLocal("achievement." + var2 + ".desc");
|
||||
this.field_25067_a = var3;
|
||||
this.field_27991_b = var4;
|
||||
if(var3 < AchievementList.field_27114_a) {
|
||||
AchievementList.field_27114_a = var3;
|
||||
}
|
||||
|
||||
if(var4 < AchievementList.field_27113_b) {
|
||||
AchievementList.field_27113_b = var4;
|
||||
}
|
||||
|
||||
if(var3 > AchievementList.field_27112_c) {
|
||||
AchievementList.field_27112_c = var3;
|
||||
}
|
||||
|
||||
if(var4 > AchievementList.field_27111_d) {
|
||||
AchievementList.field_27111_d = var4;
|
||||
}
|
||||
|
||||
this.field_27992_c = var6;
|
||||
}
|
||||
|
||||
public Achievement func_27059_a() {
|
||||
this.field_27058_g = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Achievement func_27060_b() {
|
||||
this.field_27062_m = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Achievement func_27061_c() {
|
||||
super.func_27053_d();
|
||||
AchievementList.field_25129_a.add(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
public StatBase func_27053_d() {
|
||||
return this.func_27061_c();
|
||||
}
|
||||
|
||||
public StatBase func_27052_e() {
|
||||
return this.func_27059_a();
|
||||
}
|
||||
}
|
||||
35
src/net/minecraft/src/AchievementList.java
Normal file
35
src/net/minecraft/src/AchievementList.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AchievementList {
|
||||
public static int field_27114_a;
|
||||
public static int field_27113_b;
|
||||
public static int field_27112_c;
|
||||
public static int field_27111_d;
|
||||
public static List field_25129_a = new ArrayList();
|
||||
public static Achievement field_25128_b = (new Achievement(0, "openInventory", 0, 0, Item.book, (Achievement)null)).func_27059_a().func_27061_c();
|
||||
public static Achievement field_25131_c = (new Achievement(1, "mineWood", 2, 1, Block.wood, field_25128_b)).func_27061_c();
|
||||
public static Achievement field_25130_d = (new Achievement(2, "buildWorkBench", 4, -1, Block.workbench, field_25131_c)).func_27061_c();
|
||||
public static Achievement field_27110_i = (new Achievement(3, "buildPickaxe", 4, 2, Item.pickaxeWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27109_j = (new Achievement(4, "buildFurnace", 3, 4, Block.stoneOvenActive, field_27110_i)).func_27061_c();
|
||||
public static Achievement field_27108_k = (new Achievement(5, "acquireIron", 1, 4, Item.ingotIron, field_27109_j)).func_27061_c();
|
||||
public static Achievement field_27107_l = (new Achievement(6, "buildHoe", 2, -3, Item.hoeWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27106_m = (new Achievement(7, "makeBread", -1, -3, Item.bread, field_27107_l)).func_27061_c();
|
||||
public static Achievement field_27105_n = (new Achievement(8, "bakeCake", 0, -5, Item.cake, field_27107_l)).func_27061_c();
|
||||
public static Achievement field_27104_o = (new Achievement(9, "buildBetterPickaxe", 6, 2, Item.pickaxeStone, field_27110_i)).func_27061_c();
|
||||
public static Achievement field_27103_p = (new Achievement(10, "cookFish", 2, 6, Item.fishCooked, field_27109_j)).func_27061_c();
|
||||
public static Achievement field_27102_q = (new Achievement(11, "onARail", 2, 3, Block.minecartTrack, field_27108_k)).func_27060_b().func_27061_c();
|
||||
public static Achievement field_27101_r = (new Achievement(12, "buildSword", 6, -1, Item.swordWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27100_s = (new Achievement(13, "killEnemy", 8, -1, Item.bone, field_27101_r)).func_27061_c();
|
||||
public static Achievement field_27099_t = (new Achievement(14, "killCow", 7, -3, Item.leather, field_27101_r)).func_27061_c();
|
||||
public static Achievement field_27098_u = (new Achievement(15, "flyPig", 8, -4, Item.saddle, field_27099_t)).func_27060_b().func_27061_c();
|
||||
|
||||
public static void func_27097_a() {
|
||||
}
|
||||
|
||||
static {
|
||||
System.out.println(field_25129_a.size() + " achievements");
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/AchievementMap.java
Normal file
36
src/net/minecraft/src/AchievementMap.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class AchievementMap {
|
||||
public static AchievementMap field_25134_a = new AchievementMap();
|
||||
private Map field_25133_b = new HashMap();
|
||||
|
||||
private AchievementMap() {
|
||||
try {
|
||||
BufferedReader var1 = new BufferedReader(new InputStreamReader(AchievementMap.class.getResourceAsStream("/achievement/map.txt")));
|
||||
|
||||
while(true) {
|
||||
String var2 = var1.readLine();
|
||||
if(var2 == null) {
|
||||
var1.close();
|
||||
break;
|
||||
}
|
||||
|
||||
String[] var3 = var2.split(",");
|
||||
int var4 = Integer.parseInt(var3[0]);
|
||||
this.field_25133_b.put(Integer.valueOf(var4), var3[1]);
|
||||
}
|
||||
} catch (Exception var5) {
|
||||
var5.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static String func_25132_a(int var0) {
|
||||
return (String)field_25134_a.field_25133_b.get(Integer.valueOf(var0));
|
||||
}
|
||||
}
|
||||
324
src/net/minecraft/src/AxisAlignedBB.java
Normal file
324
src/net/minecraft/src/AxisAlignedBB.java
Normal file
@@ -0,0 +1,324 @@
|
||||
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 expand(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 calculateXOffset(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 calculateYOffset(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 calculateZOffset(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 boolean isVecInXYZ(Vec3D var1) {
|
||||
return var1.xCoord > this.minX && var1.xCoord < this.maxX ? (var1.yCoord > this.minY && var1.yCoord < this.maxY ? var1.zCoord > this.minZ && var1.zCoord < this.maxZ : false) : false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getInsetBoundingBox(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 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;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "box[" + this.minX + ", " + this.minY + ", " + this.minZ + " -> " + this.maxX + ", " + this.maxY + ", " + this.maxZ + "]";
|
||||
}
|
||||
}
|
||||
112
src/net/minecraft/src/BiomeGenBase.java
Normal file
112
src/net/minecraft/src/BiomeGenBase.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenBase {
|
||||
public static final BiomeGenBase rainforest = (new BiomeGenRainforest()).setColor(588342).setBiomeName("Rainforest").func_4080_a(2094168);
|
||||
public static final BiomeGenBase swampland = (new BiomeGenSwamp()).setColor(522674).setBiomeName("Swampland").func_4080_a(9154376);
|
||||
public static final BiomeGenBase seasonalForest = (new BiomeGenBase()).setColor(10215459).setBiomeName("Seasonal Forest");
|
||||
public static final BiomeGenBase forest = (new BiomeGenForest()).setColor(353825).setBiomeName("Forest").func_4080_a(5159473);
|
||||
public static final BiomeGenBase savanna = (new BiomeGenDesert()).setColor(14278691).setBiomeName("Savanna");
|
||||
public static final BiomeGenBase shrubland = (new BiomeGenBase()).setColor(10595616).setBiomeName("Shrubland");
|
||||
public static final BiomeGenBase taiga = (new BiomeGenTaiga()).setColor(3060051).setBiomeName("Taiga").setEnableSnow().func_4080_a(8107825);
|
||||
public static final BiomeGenBase desert = (new BiomeGenDesert()).setColor(16421912).setBiomeName("Desert").setDisableRain();
|
||||
public static final BiomeGenBase plains = (new BiomeGenDesert()).setColor(16767248).setBiomeName("Plains");
|
||||
public static final BiomeGenBase iceDesert = (new BiomeGenDesert()).setColor(16772499).setBiomeName("Ice Desert").setEnableSnow().setDisableRain().func_4080_a(12899129);
|
||||
public static final BiomeGenBase tundra = (new BiomeGenBase()).setColor(5762041).setBiomeName("Tundra").setEnableSnow().func_4080_a(12899129);
|
||||
public static final BiomeGenBase hell = (new BiomeGenHell()).setColor(16711680).setBiomeName("Hell").setDisableRain();
|
||||
public static final BiomeGenBase field_28054_m = (new BiomeGenSky()).setColor(8421631).setBiomeName("Sky").setDisableRain();
|
||||
public String biomeName;
|
||||
public int color;
|
||||
public byte topBlock = (byte)Block.grass.blockID;
|
||||
public byte fillerBlock = (byte)Block.dirt.blockID;
|
||||
public int field_6161_q = 5169201;
|
||||
protected List spawnableMonsterList = new ArrayList();
|
||||
protected List spawnableCreatureList = new ArrayList();
|
||||
protected List spawnableWaterCreatureList = new ArrayList();
|
||||
private boolean enableSnow;
|
||||
private boolean enableRain = true;
|
||||
private static BiomeGenBase[] biomeLookupTable = new BiomeGenBase[4096];
|
||||
|
||||
protected BiomeGenBase() {
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySpider.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityCreeper.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntitySheep.class, 12));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityPig.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 8));
|
||||
this.spawnableWaterCreatureList.add(new SpawnListEntry(EntitySquid.class, 10));
|
||||
}
|
||||
|
||||
private BiomeGenBase setDisableRain() {
|
||||
this.enableRain = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static void generateBiomeLookup() {
|
||||
for(int var0 = 0; var0 < 64; ++var0) {
|
||||
for(int var1 = 0; var1 < 64; ++var1) {
|
||||
biomeLookupTable[var0 + var1 * 64] = getBiome((float)var0 / 63.0F, (float)var1 / 63.0F);
|
||||
}
|
||||
}
|
||||
|
||||
desert.topBlock = desert.fillerBlock = (byte)Block.sand.blockID;
|
||||
iceDesert.topBlock = iceDesert.fillerBlock = (byte)Block.sand.blockID;
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(10) == 0 ? new WorldGenBigTree() : new WorldGenTrees());
|
||||
}
|
||||
|
||||
protected BiomeGenBase setEnableSnow() {
|
||||
this.enableSnow = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase setBiomeName(String var1) {
|
||||
this.biomeName = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase func_4080_a(int var1) {
|
||||
this.field_6161_q = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase setColor(int var1) {
|
||||
this.color = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static BiomeGenBase getBiomeFromLookup(double var0, double var2) {
|
||||
int var4 = (int)(var0 * 63.0D);
|
||||
int var5 = (int)(var2 * 63.0D);
|
||||
return biomeLookupTable[var4 + var5 * 64];
|
||||
}
|
||||
|
||||
public static BiomeGenBase getBiome(float var0, float var1) {
|
||||
var1 *= var0;
|
||||
return var0 < 0.1F ? tundra : (var1 < 0.2F ? (var0 < 0.5F ? tundra : (var0 < 0.95F ? savanna : desert)) : (var1 > 0.5F && var0 < 0.7F ? swampland : (var0 < 0.5F ? taiga : (var0 < 0.97F ? (var1 < 0.35F ? shrubland : forest) : (var1 < 0.45F ? plains : (var1 < 0.9F ? seasonalForest : rainforest))))));
|
||||
}
|
||||
|
||||
public List getSpawnableList(EnumCreatureType var1) {
|
||||
return var1 == EnumCreatureType.monster ? this.spawnableMonsterList : (var1 == EnumCreatureType.creature ? this.spawnableCreatureList : (var1 == EnumCreatureType.waterCreature ? this.spawnableWaterCreatureList : null));
|
||||
}
|
||||
|
||||
public boolean getEnableSnow() {
|
||||
return this.enableSnow;
|
||||
}
|
||||
|
||||
public boolean canSpawnLightningBolt() {
|
||||
return this.enableSnow ? false : this.enableRain;
|
||||
}
|
||||
|
||||
static {
|
||||
generateBiomeLookup();
|
||||
}
|
||||
}
|
||||
4
src/net/minecraft/src/BiomeGenDesert.java
Normal file
4
src/net/minecraft/src/BiomeGenDesert.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenDesert extends BiomeGenBase {
|
||||
}
|
||||
13
src/net/minecraft/src/BiomeGenForest.java
Normal file
13
src/net/minecraft/src/BiomeGenForest.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenForest extends BiomeGenBase {
|
||||
public BiomeGenForest() {
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 2));
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(5) == 0 ? new WorldGenForest() : (var1.nextInt(3) == 0 ? new WorldGenBigTree() : new WorldGenTrees()));
|
||||
}
|
||||
}
|
||||
11
src/net/minecraft/src/BiomeGenHell.java
Normal file
11
src/net/minecraft/src/BiomeGenHell.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenHell extends BiomeGenBase {
|
||||
public BiomeGenHell() {
|
||||
this.spawnableMonsterList.clear();
|
||||
this.spawnableCreatureList.clear();
|
||||
this.spawnableWaterCreatureList.clear();
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityGhast.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityPigZombie.class, 10));
|
||||
}
|
||||
}
|
||||
9
src/net/minecraft/src/BiomeGenRainforest.java
Normal file
9
src/net/minecraft/src/BiomeGenRainforest.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenRainforest extends BiomeGenBase {
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(3) == 0 ? new WorldGenBigTree() : new WorldGenTrees());
|
||||
}
|
||||
}
|
||||
10
src/net/minecraft/src/BiomeGenSky.java
Normal file
10
src/net/minecraft/src/BiomeGenSky.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenSky extends BiomeGenBase {
|
||||
public BiomeGenSky() {
|
||||
this.spawnableMonsterList.clear();
|
||||
this.spawnableCreatureList.clear();
|
||||
this.spawnableWaterCreatureList.clear();
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10));
|
||||
}
|
||||
}
|
||||
4
src/net/minecraft/src/BiomeGenSwamp.java
Normal file
4
src/net/minecraft/src/BiomeGenSwamp.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenSwamp extends BiomeGenBase {
|
||||
}
|
||||
13
src/net/minecraft/src/BiomeGenTaiga.java
Normal file
13
src/net/minecraft/src/BiomeGenTaiga.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenTaiga extends BiomeGenBase {
|
||||
public BiomeGenTaiga() {
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 2));
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(3) == 0 ? new WorldGenTaiga1() : new WorldGenTaiga2());
|
||||
}
|
||||
}
|
||||
543
src/net/minecraft/src/Block.java
Normal file
543
src/net/minecraft/src/Block.java
Normal file
@@ -0,0 +1,543 @@
|
||||
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[] opaqueCubeLookup = new boolean[256];
|
||||
public static final boolean[] isBlockContainer = new boolean[256];
|
||||
public static final int[] lightOpacity = new int[256];
|
||||
public static final boolean[] canBlockGrass = new boolean[256];
|
||||
public static final int[] lightValue = new int[256];
|
||||
public static final boolean[] requiresSelfNotify = new boolean[256];
|
||||
public static final Block stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stone");
|
||||
public static final BlockGrass grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("grass");
|
||||
public static final Block dirt = (new BlockDirt(3, 2)).setHardness(0.5F).setStepSound(soundGravelFootstep).setBlockName("dirt");
|
||||
public static final Block cobblestone = (new Block(4, 16, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stonebrick");
|
||||
public static final Block planks = (new Block(5, 4, Material.wood)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep).setBlockName("wood").setRequiresSelfNotify();
|
||||
public static final Block sapling = (new BlockSapling(6, 15)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("sapling").setRequiresSelfNotify();
|
||||
public static final Block bedrock = (new Block(7, 17, Material.rock)).setBlockUnbreakable().setResistance(6000000.0F).setStepSound(soundStoneFootstep).setBlockName("bedrock").disableStats();
|
||||
public static final Block waterMoving = (new BlockFlowing(8, Material.water)).setHardness(100.0F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
|
||||
public static final Block waterStill = (new BlockStationary(9, Material.water)).setHardness(100.0F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lavaMoving = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lavaStill = (new BlockStationary(11, Material.lava)).setHardness(100.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify();
|
||||
public static final Block sand = (new BlockSand(12, 18)).setHardness(0.5F).setStepSound(soundSandFootstep).setBlockName("sand");
|
||||
public static final Block gravel = (new BlockGravel(13, 19)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("gravel");
|
||||
public static final Block oreGold = (new BlockOre(14, 32)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreGold");
|
||||
public static final Block oreIron = (new BlockOre(15, 33)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreIron");
|
||||
public static final Block oreCoal = (new BlockOre(16, 34)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreCoal");
|
||||
public static final Block wood = (new BlockLog(17)).setHardness(2.0F).setStepSound(soundWoodFootstep).setBlockName("log").setRequiresSelfNotify();
|
||||
public static final BlockLeaves leaves = (BlockLeaves)(new BlockLeaves(18, 52)).setHardness(0.2F).setLightOpacity(1).setStepSound(soundGrassFootstep).setBlockName("leaves").disableStats().setRequiresSelfNotify();
|
||||
public static final Block sponge = (new BlockSponge(19)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("sponge");
|
||||
public static final Block glass = (new BlockGlass(20, 49, Material.glass, false)).setHardness(0.3F).setStepSound(soundGlassFootstep).setBlockName("glass");
|
||||
public static final Block oreLapis = (new BlockOre(21, 160)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreLapis");
|
||||
public static final Block blockLapis = (new Block(22, 144, Material.rock)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("blockLapis");
|
||||
public static final Block dispenser = (new BlockDispenser(23)).setHardness(3.5F).setStepSound(soundStoneFootstep).setBlockName("dispenser").setRequiresSelfNotify();
|
||||
public static final Block sandStone = (new BlockSandStone(24)).setStepSound(soundStoneFootstep).setHardness(0.8F).setBlockName("sandStone");
|
||||
public static final Block musicBlock = (new BlockNote(25)).setHardness(0.8F).setBlockName("musicBlock").setRequiresSelfNotify();
|
||||
public static final Block bed = (new BlockBed(26)).setHardness(0.2F).setBlockName("bed").disableStats().setRequiresSelfNotify();
|
||||
public static final Block railPowered = (new BlockRail(27, 179, true)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("goldenRail").setRequiresSelfNotify();
|
||||
public static final Block railDetector = (new BlockDetectorRail(28, 195)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("detectorRail").setRequiresSelfNotify();
|
||||
public static final Block pistonStickyBase = (new BlockPistonBase(29, 106, true)).setBlockName("pistonStickyBase").setRequiresSelfNotify();
|
||||
public static final Block web = (new BlockWeb(30, 11)).setLightOpacity(1).setHardness(4.0F).setBlockName("web");
|
||||
public static final BlockTallGrass tallGrass = (BlockTallGrass)(new BlockTallGrass(31, 39)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("tallgrass");
|
||||
public static final BlockDeadBush deadBush = (BlockDeadBush)(new BlockDeadBush(32, 55)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("deadbush");
|
||||
public static final Block pistonBase = (new BlockPistonBase(33, 107, false)).setBlockName("pistonBase").setRequiresSelfNotify();
|
||||
public static final BlockPistonExtension pistonExtension = (BlockPistonExtension)(new BlockPistonExtension(34, 107)).setRequiresSelfNotify();
|
||||
public static final Block cloth = (new BlockCloth()).setHardness(0.8F).setStepSound(soundClothFootstep).setBlockName("cloth").setRequiresSelfNotify();
|
||||
public static final BlockPistonMoving pistonMoving = new BlockPistonMoving(36);
|
||||
public static final BlockFlower plantYellow = (BlockFlower)(new BlockFlower(37, 13)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("flower");
|
||||
public static final BlockFlower plantRed = (BlockFlower)(new BlockFlower(38, 12)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("rose");
|
||||
public static final BlockFlower mushroomBrown = (BlockFlower)(new BlockMushroom(39, 29)).setHardness(0.0F).setStepSound(soundGrassFootstep).setLightValue(2.0F / 16.0F).setBlockName("mushroom");
|
||||
public static final BlockFlower mushroomRed = (BlockFlower)(new BlockMushroom(40, 28)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("mushroom");
|
||||
public static final Block blockGold = (new BlockOreStorage(41, 23)).setHardness(3.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockGold");
|
||||
public static final Block blockSteel = (new BlockOreStorage(42, 22)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockIron");
|
||||
public static final Block stairDouble = (new BlockStep(43, true)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneSlab");
|
||||
public static final Block stairSingle = (new BlockStep(44, false)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneSlab");
|
||||
public static final Block brick = (new Block(45, 7, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("brick");
|
||||
public static final Block tnt = (new BlockTNT(46, 8)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("tnt");
|
||||
public static final Block bookShelf = (new BlockBookshelf(47, 35)).setHardness(1.5F).setStepSound(soundWoodFootstep).setBlockName("bookshelf");
|
||||
public static final Block cobblestoneMossy = (new Block(48, 36, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneMoss");
|
||||
public static final Block obsidian = (new BlockObsidian(49, 37)).setHardness(10.0F).setResistance(2000.0F).setStepSound(soundStoneFootstep).setBlockName("obsidian");
|
||||
public static final Block torchWood = (new BlockTorch(50, 80)).setHardness(0.0F).setLightValue(15.0F / 16.0F).setStepSound(soundWoodFootstep).setBlockName("torch").setRequiresSelfNotify();
|
||||
public static final BlockFire fire = (BlockFire)(new BlockFire(51, 31)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep).setBlockName("fire").disableStats().setRequiresSelfNotify();
|
||||
public static final Block mobSpawner = (new BlockMobSpawner(52, 65)).setHardness(5.0F).setStepSound(soundMetalFootstep).setBlockName("mobSpawner").disableStats();
|
||||
public static final Block stairCompactPlanks = (new BlockStairs(53, planks)).setBlockName("stairsWood").setRequiresSelfNotify();
|
||||
public static final Block chest = (new BlockChest(54)).setHardness(2.5F).setStepSound(soundWoodFootstep).setBlockName("chest").setRequiresSelfNotify();
|
||||
public static final Block redstoneWire = (new BlockRedstoneWire(55, 164)).setHardness(0.0F).setStepSound(soundPowderFootstep).setBlockName("redstoneDust").disableStats().setRequiresSelfNotify();
|
||||
public static final Block oreDiamond = (new BlockOre(56, 50)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreDiamond");
|
||||
public static final Block blockDiamond = (new BlockOreStorage(57, 24)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockDiamond");
|
||||
public static final Block workbench = (new BlockWorkbench(58)).setHardness(2.5F).setStepSound(soundWoodFootstep).setBlockName("workbench");
|
||||
public static final Block crops = (new BlockCrops(59, 88)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("crops").disableStats().setRequiresSelfNotify();
|
||||
public static final Block tilledField = (new BlockFarmland(60)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("farmland");
|
||||
public static final Block stoneOvenIdle = (new BlockFurnace(61, false)).setHardness(3.5F).setStepSound(soundStoneFootstep).setBlockName("furnace").setRequiresSelfNotify();
|
||||
public static final Block stoneOvenActive = (new BlockFurnace(62, true)).setHardness(3.5F).setStepSound(soundStoneFootstep).setLightValue(14.0F / 16.0F).setBlockName("furnace").setRequiresSelfNotify();
|
||||
public static final Block signPost = (new BlockSign(63, TileEntitySign.class, true)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("sign").disableStats().setRequiresSelfNotify();
|
||||
public static final Block doorWood = (new BlockDoor(64, Material.wood)).setHardness(3.0F).setStepSound(soundWoodFootstep).setBlockName("doorWood").disableStats().setRequiresSelfNotify();
|
||||
public static final Block ladder = (new BlockLadder(65, 83)).setHardness(0.4F).setStepSound(soundWoodFootstep).setBlockName("ladder").setRequiresSelfNotify();
|
||||
public static final Block minecartTrack = (new BlockRail(66, 128, false)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("rail").setRequiresSelfNotify();
|
||||
public static final Block stairCompactCobblestone = (new BlockStairs(67, cobblestone)).setBlockName("stairsStone").setRequiresSelfNotify();
|
||||
public static final Block signWall = (new BlockSign(68, TileEntitySign.class, false)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("sign").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lever = (new BlockLever(69, 96)).setHardness(0.5F).setStepSound(soundWoodFootstep).setBlockName("lever").setRequiresSelfNotify();
|
||||
public static final Block pressurePlateStone = (new BlockPressurePlate(70, stone.blockIndexInTexture, EnumMobType.mobs, Material.rock)).setHardness(0.5F).setStepSound(soundStoneFootstep).setBlockName("pressurePlate").setRequiresSelfNotify();
|
||||
public static final Block doorSteel = (new BlockDoor(71, Material.iron)).setHardness(5.0F).setStepSound(soundMetalFootstep).setBlockName("doorIron").disableStats().setRequiresSelfNotify();
|
||||
public static final Block pressurePlatePlanks = (new BlockPressurePlate(72, planks.blockIndexInTexture, EnumMobType.everything, Material.wood)).setHardness(0.5F).setStepSound(soundWoodFootstep).setBlockName("pressurePlate").setRequiresSelfNotify();
|
||||
public static final Block oreRedstone = (new BlockRedstoneOre(73, 51, false)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreRedstone").setRequiresSelfNotify();
|
||||
public static final Block oreRedstoneGlowing = (new BlockRedstoneOre(74, 51, true)).setLightValue(10.0F / 16.0F).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreRedstone").setRequiresSelfNotify();
|
||||
public static final Block torchRedstoneIdle = (new BlockRedstoneTorch(75, 115, false)).setHardness(0.0F).setStepSound(soundWoodFootstep).setBlockName("notGate").setRequiresSelfNotify();
|
||||
public static final Block torchRedstoneActive = (new BlockRedstoneTorch(76, 99, true)).setHardness(0.0F).setLightValue(0.5F).setStepSound(soundWoodFootstep).setBlockName("notGate").setRequiresSelfNotify();
|
||||
public static final Block button = (new BlockButton(77, stone.blockIndexInTexture)).setHardness(0.5F).setStepSound(soundStoneFootstep).setBlockName("button").setRequiresSelfNotify();
|
||||
public static final Block snow = (new BlockSnow(78, 66)).setHardness(0.1F).setStepSound(soundClothFootstep).setBlockName("snow");
|
||||
public static final Block ice = (new BlockIce(79, 67)).setHardness(0.5F).setLightOpacity(3).setStepSound(soundGlassFootstep).setBlockName("ice");
|
||||
public static final Block blockSnow = (new BlockSnowBlock(80, 66)).setHardness(0.2F).setStepSound(soundClothFootstep).setBlockName("snow");
|
||||
public static final Block cactus = (new BlockCactus(81, 70)).setHardness(0.4F).setStepSound(soundClothFootstep).setBlockName("cactus");
|
||||
public static final Block blockClay = (new BlockClay(82, 72)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("clay");
|
||||
public static final Block reed = (new BlockReed(83, 73)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("reeds").disableStats();
|
||||
public static final Block jukebox = (new BlockJukeBox(84, 74)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("jukebox").setRequiresSelfNotify();
|
||||
public static final Block fence = (new BlockFence(85, 4)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep).setBlockName("fence").setRequiresSelfNotify();
|
||||
public static final Block pumpkin = (new BlockPumpkin(86, 102, false)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("pumpkin").setRequiresSelfNotify();
|
||||
public static final Block bloodStone = (new BlockNetherrack(87, 103)).setHardness(0.4F).setStepSound(soundStoneFootstep).setBlockName("hellrock");
|
||||
public static final Block slowSand = (new BlockSoulSand(88, 104)).setHardness(0.5F).setStepSound(soundSandFootstep).setBlockName("hellsand");
|
||||
public static final Block glowStone = (new BlockGlowStone(89, 105, Material.rock)).setHardness(0.3F).setStepSound(soundGlassFootstep).setLightValue(1.0F).setBlockName("lightgem");
|
||||
public static final BlockPortal portal = (BlockPortal)(new BlockPortal(90, 14)).setHardness(-1.0F).setStepSound(soundGlassFootstep).setLightValue(12.0F / 16.0F).setBlockName("portal");
|
||||
public static final Block pumpkinLantern = (new BlockPumpkin(91, 102, true)).setHardness(1.0F).setStepSound(soundWoodFootstep).setLightValue(1.0F).setBlockName("litpumpkin").setRequiresSelfNotify();
|
||||
public static final Block cake = (new BlockCake(92, 121)).setHardness(0.5F).setStepSound(soundClothFootstep).setBlockName("cake").disableStats().setRequiresSelfNotify();
|
||||
public static final Block redstoneRepeaterIdle = (new BlockRedstoneRepeater(93, false)).setHardness(0.0F).setStepSound(soundWoodFootstep).setBlockName("diode").disableStats().setRequiresSelfNotify();
|
||||
public static final Block redstoneRepeaterActive = (new BlockRedstoneRepeater(94, true)).setHardness(0.0F).setLightValue(10.0F / 16.0F).setStepSound(soundWoodFootstep).setBlockName("diode").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lockedChest = (new BlockLockedChest(95)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep).setBlockName("lockedchest").setTickOnLoad(true).setRequiresSelfNotify();
|
||||
public static final Block trapdoor = (new BlockTrapDoor(96, Material.wood)).setHardness(3.0F).setStepSound(soundWoodFootstep).setBlockName("trapdoor").disableStats().setRequiresSelfNotify();
|
||||
public int blockIndexInTexture;
|
||||
public final int blockID;
|
||||
protected float blockHardness;
|
||||
protected float blockResistance;
|
||||
protected boolean blockConstructorCalled;
|
||||
protected boolean enableStats;
|
||||
public double minX;
|
||||
public double minY;
|
||||
public double minZ;
|
||||
public double maxX;
|
||||
public double maxY;
|
||||
public double maxZ;
|
||||
public StepSound stepSound;
|
||||
public float blockParticleGravity;
|
||||
public final Material blockMaterial;
|
||||
public float slipperiness;
|
||||
private String blockName;
|
||||
|
||||
protected Block(int var1, Material var2) {
|
||||
this.blockConstructorCalled = true;
|
||||
this.enableStats = true;
|
||||
this.stepSound = soundPowderFootstep;
|
||||
this.blockParticleGravity = 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);
|
||||
opaqueCubeLookup[var1] = this.isOpaqueCube();
|
||||
lightOpacity[var1] = this.isOpaqueCube() ? 255 : 0;
|
||||
canBlockGrass[var1] = !var2.getCanBlockGrass();
|
||||
isBlockContainer[var1] = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected Block setRequiresSelfNotify() {
|
||||
requiresSelfNotify[this.blockID] = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected void setFireBurnRates() {
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected Block setHardness(float var1) {
|
||||
this.blockHardness = var1;
|
||||
if(this.blockResistance < var1 * 5.0F) {
|
||||
this.blockResistance = var1 * 5.0F;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Block setBlockUnbreakable() {
|
||||
this.setHardness(-1.0F);
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getHardness() {
|
||||
return this.blockHardness;
|
||||
}
|
||||
|
||||
protected Block setTickOnLoad(boolean var1) {
|
||||
tickOnLoad[this.blockID] = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
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 shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return var1.getBlockMaterial(var2, var3, var4).isSolid();
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.getBlockTextureFromSide(var1);
|
||||
}
|
||||
|
||||
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 isOpaqueCube() {
|
||||
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 blockStrength(EntityPlayer var1) {
|
||||
return this.blockHardness < 0.0F ? 0.0F : (!var1.canHarvestBlock(this) ? 1.0F / this.blockHardness / 100.0F : var1.getCurrentPlayerStrVsBlock(this) / this.blockHardness / 30.0F);
|
||||
}
|
||||
|
||||
public final 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.singleplayerWorld) {
|
||||
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) {
|
||||
this.dropBlockAsItem_do(var1, var2, var3, var4, new ItemStack(var9, 1, this.damageDropped(var5)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void dropBlockAsItem_do(World var1, int var2, int var3, int var4, ItemStack var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
float var6 = 0.7F;
|
||||
double var7 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
EntityItem var13 = new EntityItem(var1, (double)var2 + var7, (double)var3 + var9, (double)var4 + var11, var5);
|
||||
var13.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var13);
|
||||
}
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public float getExplosionResistance(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 canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return this.canPlaceBlockAt(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 || blocksList[var5].blockMaterial.func_27090_g();
|
||||
}
|
||||
|
||||
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 harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
this.dropBlockAsItem(var1, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
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) {
|
||||
}
|
||||
|
||||
public Block setBlockName(String var1) {
|
||||
this.blockName = "tile." + var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNameLocalizedForStats() {
|
||||
return StatCollector.translateToLocal(this.getBlockName() + ".name");
|
||||
}
|
||||
|
||||
public String getBlockName() {
|
||||
return this.blockName;
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
}
|
||||
|
||||
public boolean getEnableStats() {
|
||||
return this.enableStats;
|
||||
}
|
||||
|
||||
protected Block disableStats() {
|
||||
this.enableStats = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return this.blockMaterial.getMaterialMobility();
|
||||
}
|
||||
|
||||
static {
|
||||
Item.itemsList[cloth.blockID] = (new ItemCloth(cloth.blockID - 256)).setItemName("cloth");
|
||||
Item.itemsList[wood.blockID] = (new ItemLog(wood.blockID - 256)).setItemName("log");
|
||||
Item.itemsList[stairSingle.blockID] = (new ItemSlab(stairSingle.blockID - 256)).setItemName("stoneSlab");
|
||||
Item.itemsList[sapling.blockID] = (new ItemSapling(sapling.blockID - 256)).setItemName("sapling");
|
||||
Item.itemsList[leaves.blockID] = (new ItemLeaves(leaves.blockID - 256)).setItemName("leaves");
|
||||
Item.itemsList[pistonBase.blockID] = new ItemPiston(pistonBase.blockID - 256);
|
||||
Item.itemsList[pistonStickyBase.blockID] = new ItemPiston(pistonStickyBase.blockID - 256);
|
||||
|
||||
for(int var0 = 0; var0 < 256; ++var0) {
|
||||
if(blocksList[var0] != null && Item.itemsList[var0] == null) {
|
||||
Item.itemsList[var0] = new ItemBlock(var0 - 256);
|
||||
blocksList[var0].setFireBurnRates();
|
||||
}
|
||||
}
|
||||
|
||||
canBlockGrass[0] = true;
|
||||
StatList.func_25088_a();
|
||||
}
|
||||
}
|
||||
190
src/net/minecraft/src/BlockBed.java
Normal file
190
src/net/minecraft/src/BlockBed.java
Normal file
@@ -0,0 +1,190 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockBed extends Block {
|
||||
public static final int[][] field_22023_a = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}};
|
||||
|
||||
public BlockBed(int var1) {
|
||||
super(var1, 134, Material.cloth);
|
||||
this.setBounds();
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(!func_22020_d(var6)) {
|
||||
int var7 = func_22019_c(var6);
|
||||
var2 += field_22023_a[var7][0];
|
||||
var4 += field_22023_a[var7][1];
|
||||
if(var1.getBlockId(var2, var3, var4) != this.blockID) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
}
|
||||
|
||||
if(!var1.worldProvider.func_28108_d()) {
|
||||
double var16 = (double)var2 + 0.5D;
|
||||
double var17 = (double)var3 + 0.5D;
|
||||
double var11 = (double)var4 + 0.5D;
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
int var13 = func_22019_c(var6);
|
||||
var2 += field_22023_a[var13][0];
|
||||
var4 += field_22023_a[var13][1];
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var16 = (var16 + (double)var2 + 0.5D) / 2.0D;
|
||||
var17 = (var17 + (double)var3 + 0.5D) / 2.0D;
|
||||
var11 = (var11 + (double)var4 + 0.5D) / 2.0D;
|
||||
}
|
||||
|
||||
var1.newExplosion((Entity)null, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), 5.0F, true);
|
||||
return true;
|
||||
} else {
|
||||
if(func_22018_f(var6)) {
|
||||
EntityPlayer var14 = null;
|
||||
Iterator var8 = var1.playerEntities.iterator();
|
||||
|
||||
while(var8.hasNext()) {
|
||||
EntityPlayer var9 = (EntityPlayer)var8.next();
|
||||
if(var9.func_22057_E()) {
|
||||
ChunkCoordinates var10 = var9.playerLocation;
|
||||
if(var10.posX == var2 && var10.posY == var3 && var10.posZ == var4) {
|
||||
var14 = var9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var14 != null) {
|
||||
var5.func_22061_a("tile.bed.occupied");
|
||||
return true;
|
||||
}
|
||||
|
||||
func_22022_a(var1, var2, var3, var4, false);
|
||||
}
|
||||
|
||||
EnumStatus var15 = var5.goToSleep(var2, var3, var4);
|
||||
if(var15 == EnumStatus.OK) {
|
||||
func_22022_a(var1, var2, var3, var4, true);
|
||||
return true;
|
||||
} else {
|
||||
if(var15 == EnumStatus.NOT_POSSIBLE_NOW) {
|
||||
var5.func_22061_a("tile.bed.noSleep");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 == 0) {
|
||||
return Block.planks.blockIndexInTexture;
|
||||
} else {
|
||||
int var3 = func_22019_c(var2);
|
||||
int var4 = ModelBed.field_22155_c[var3][var1];
|
||||
return func_22020_d(var2) ? (var4 == 2 ? this.blockIndexInTexture + 2 + 16 : (var4 != 5 && var4 != 4 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture + 1 + 16)) : (var4 == 3 ? this.blockIndexInTexture - 1 + 16 : (var4 != 5 && var4 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 16));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
this.setBounds();
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = func_22019_c(var6);
|
||||
if(func_22020_d(var6)) {
|
||||
if(var1.getBlockId(var2 - field_22023_a[var7][0], var3, var4 - field_22023_a[var7][1]) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
} else if(var1.getBlockId(var2 + field_22023_a[var7][0], var3, var4 + field_22023_a[var7][1]) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return func_22020_d(var1) ? 0 : Item.bed.shiftedIndex;
|
||||
}
|
||||
|
||||
private void setBounds() {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 9.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public static int func_22019_c(int var0) {
|
||||
return var0 & 3;
|
||||
}
|
||||
|
||||
public static boolean func_22020_d(int var0) {
|
||||
return (var0 & 8) != 0;
|
||||
}
|
||||
|
||||
public static boolean func_22018_f(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
|
||||
public static void func_22022_a(World var0, int var1, int var2, int var3, boolean var4) {
|
||||
int var5 = var0.getBlockMetadata(var1, var2, var3);
|
||||
if(var4) {
|
||||
var5 |= 4;
|
||||
} else {
|
||||
var5 &= -5;
|
||||
}
|
||||
|
||||
var0.setBlockMetadataWithNotify(var1, var2, var3, var5);
|
||||
}
|
||||
|
||||
public static ChunkCoordinates func_22021_g(World var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var0.getBlockMetadata(var1, var2, var3);
|
||||
int var6 = func_22019_c(var5);
|
||||
|
||||
for(int var7 = 0; var7 <= 1; ++var7) {
|
||||
int var8 = var1 - field_22023_a[var6][0] * var7 - 1;
|
||||
int var9 = var3 - field_22023_a[var6][1] * var7 - 1;
|
||||
int var10 = var8 + 2;
|
||||
int var11 = var9 + 2;
|
||||
|
||||
for(int var12 = var8; var12 <= var10; ++var12) {
|
||||
for(int var13 = var9; var13 <= var11; ++var13) {
|
||||
if(var0.isBlockNormalCube(var12, var2 - 1, var13) && var0.isAirBlock(var12, var2, var13) && var0.isAirBlock(var12, var2 + 1, var13)) {
|
||||
if(var4 <= 0) {
|
||||
return new ChunkCoordinates(var12, var2, var13);
|
||||
}
|
||||
|
||||
--var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!func_22020_d(var5)) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockBookshelf.java
Normal file
17
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;
|
||||
}
|
||||
}
|
||||
14
src/net/minecraft/src/BlockBreakable.java
Normal file
14
src/net/minecraft/src/BlockBreakable.java
Normal file
@@ -0,0 +1,14 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
215
src/net/minecraft/src/BlockButton.java
Normal file
215
src/net/minecraft/src/BlockButton.java
Normal file
@@ -0,0 +1,215 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : (var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : var1.isBlockNormalCube(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.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
} else if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
} else if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
} else if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 1;
|
||||
} else {
|
||||
var6 = this.getOrientation(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7);
|
||||
}
|
||||
|
||||
private int getOrientation(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? 1 : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? 2 : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? 3 : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? 4 : 1)));
|
||||
}
|
||||
|
||||
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.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(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) {
|
||||
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.markBlocksDirty(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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
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.singleplayerWorld) {
|
||||
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.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
77
src/net/minecraft/src/BlockCactus.java
Normal file
77
src/net/minecraft/src/BlockCactus.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockCactus extends Block {
|
||||
protected BlockCactus(int var1, int var2) {
|
||||
super(var1, var2, Material.cactus);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.isAirBlock(var2, var3 + 1, var4)) {
|
||||
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 isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
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).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2 + 1, var3, var4).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2, var3, var4 - 1).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2, var3, var4 + 1).isSolid()) {
|
||||
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.attackEntityFrom((Entity)null, 1);
|
||||
}
|
||||
}
|
||||
89
src/net/minecraft/src/BlockCake.java
Normal file
89
src/net/minecraft/src/BlockCake.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockCake extends Block {
|
||||
protected BlockCake(int var1, int var2) {
|
||||
super(var1, var2, Material.cakeMaterial);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 1.0F / 16.0F;
|
||||
float var7 = (float)(1 + var5 * 2) / 16.0F;
|
||||
float var8 = 0.5F;
|
||||
this.setBlockBounds(var7, 0.0F, var6, 1.0F - var6, var8, 1.0F - var6);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 1.0F / 16.0F;
|
||||
float var7 = (float)(1 + var5 * 2) / 16.0F;
|
||||
float var8 = 0.5F;
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var6), (double)((float)(var2 + 1) - var6), (double)((float)var3 + var8 - var6), (double)((float)(var4 + 1) - var6));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture + 3 : (var2 > 0 && var1 == 4 ? this.blockIndexInTexture + 2 : this.blockIndexInTexture + 1));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture + 3 : this.blockIndexInTexture + 1);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.eatCakeSlice(var1, var2, var3, var4, var5);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.eatCakeSlice(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
private void eatCakeSlice(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var5.health < 20) {
|
||||
var5.heal(3);
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) + 1;
|
||||
if(var6 >= 6) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
var1.markBlockAsNeedsUpdate(var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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) {
|
||||
return var1.getBlockMaterial(var2, var3 - 1, var4).isSolid();
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
113
src/net/minecraft/src/BlockChest.java
Normal file
113
src/net/minecraft/src/BlockChest.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockChest extends BlockContainer {
|
||||
private Random random = 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.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.random.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.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.random.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.random.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.random.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.getBlockTileEntity(var2, var3, var4);
|
||||
if(var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 - 1, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 + 1, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 - 1)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 + 1)) {
|
||||
return true;
|
||||
} else {
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2 - 1, var3, var4), (IInventory)var6);
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2 + 1, var3, var4));
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 - 1), (IInventory)var6);
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 + 1));
|
||||
}
|
||||
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
var5.displayGUIChest((IInventory)var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityChest();
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockClay.java
Normal file
17
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.shiftedIndex;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
28
src/net/minecraft/src/BlockCloth.java
Normal file
28
src/net/minecraft/src/BlockCloth.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockCloth extends Block {
|
||||
public BlockCloth() {
|
||||
super(35, 64, Material.cloth);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var2 == 0) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
var2 = ~(var2 & 15);
|
||||
return 113 + ((var2 & 8) >> 3) + (var2 & 7) * 16;
|
||||
}
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
|
||||
public static int func_21033_c(int var0) {
|
||||
return ~var0 & 15;
|
||||
}
|
||||
|
||||
public static int func_21034_d(int var0) {
|
||||
return ~var0 & 15;
|
||||
}
|
||||
}
|
||||
25
src/net/minecraft/src/BlockContainer.java
Normal file
25
src/net/minecraft/src/BlockContainer.java
Normal file
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
isBlockContainer[var1] = true;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
var1.setBlockTileEntity(var2, var3, var4, this.getBlockEntity());
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
var1.removeBlockTileEntity(var2, var3, var4);
|
||||
}
|
||||
|
||||
protected abstract TileEntity getBlockEntity();
|
||||
}
|
||||
110
src/net/minecraft/src/BlockCrops.java
Normal file
110
src/net/minecraft/src/BlockCrops.java
Normal file
@@ -0,0 +1,110 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void fertilize(World var1, int var2, int var3, int var4) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 7);
|
||||
}
|
||||
|
||||
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 int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var2 < 0) {
|
||||
var2 = 7;
|
||||
}
|
||||
|
||||
return this.blockIndexInTexture + var2;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
if(!var1.singleplayerWorld) {
|
||||
for(int var7 = 0; var7 < 3; ++var7) {
|
||||
if(var1.rand.nextInt(15) <= var5) {
|
||||
float var8 = 0.7F;
|
||||
float var9 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
float var10 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
float var11 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var9), (double)((float)var3 + var10), (double)((float)var4 + var11), new ItemStack(Item.seeds));
|
||||
var12.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return var1 == 7 ? Item.wheat.shiftedIndex : -1;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
23
src/net/minecraft/src/BlockDeadBush.java
Normal file
23
src/net/minecraft/src/BlockDeadBush.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDeadBush extends BlockFlower {
|
||||
protected BlockDeadBush(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.4F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3);
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return var1 == Block.sand.blockID;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
74
src/net/minecraft/src/BlockDetectorRail.java
Normal file
74
src/net/minecraft/src/BlockDetectorRail.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDetectorRail extends BlockRail {
|
||||
public BlockDetectorRail(int var1, int var2) {
|
||||
super(var1, var2, true);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
this.func_27035_f(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
this.func_27035_f(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
return (var1.getBlockMetadata(var2, var3, var4) & 8) == 0 ? false : var5 == 1;
|
||||
}
|
||||
|
||||
private void func_27035_f(World var1, int var2, int var3, int var4, int var5) {
|
||||
boolean var6 = (var5 & 8) != 0;
|
||||
boolean var7 = false;
|
||||
float var8 = 2.0F / 16.0F;
|
||||
List var9 = var1.getEntitiesWithinAABB(EntityMinecart.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var8), (double)var3, (double)((float)var4 + var8), (double)((float)(var2 + 1) - var8), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var8)));
|
||||
if(var9.size() > 0) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7 && !var6) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5 | 8);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(!var7 && var6) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5 & 7);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
7
src/net/minecraft/src/BlockDirt.java
Normal file
7
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);
|
||||
}
|
||||
}
|
||||
193
src/net/minecraft/src/BlockDispenser.java
Normal file
193
src/net/minecraft/src/BlockDispenser.java
Normal file
@@ -0,0 +1,193 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDispenser extends BlockContainer {
|
||||
private Random field_28032_a = new Random();
|
||||
|
||||
protected BlockDispenser(int var1) {
|
||||
super(var1, Material.rock);
|
||||
this.blockIndexInTexture = 45;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dispenser.blockID;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
this.setDispenserDefaultDirection(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void setDispenserDefaultDirection(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
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.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) {
|
||||
var9 = 3;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) {
|
||||
var9 = 2;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) {
|
||||
var9 = 5;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) {
|
||||
var9 = 4;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture + 17 : (var1 == 0 ? this.blockIndexInTexture + 17 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityDispenser var6 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var5.displayGUIDispenser(var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void dispenseItem(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
byte var9 = 0;
|
||||
byte var10 = 0;
|
||||
if(var6 == 3) {
|
||||
var10 = 1;
|
||||
} else if(var6 == 2) {
|
||||
var10 = -1;
|
||||
} else if(var6 == 5) {
|
||||
var9 = 1;
|
||||
} else {
|
||||
var9 = -1;
|
||||
}
|
||||
|
||||
TileEntityDispenser var11 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
ItemStack var12 = var11.getRandomStackFromInventory();
|
||||
double var13 = (double)var2 + (double)var9 * 0.6D + 0.5D;
|
||||
double var15 = (double)var3 + 0.5D;
|
||||
double var17 = (double)var4 + (double)var10 * 0.6D + 0.5D;
|
||||
if(var12 == null) {
|
||||
var1.func_28097_e(1001, var2, var3, var4, 0);
|
||||
} else {
|
||||
if(var12.itemID == Item.arrow.shiftedIndex) {
|
||||
EntityArrow var19 = new EntityArrow(var1, var13, var15, var17);
|
||||
var19.setArrowHeading((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var19.field_28012_a = true;
|
||||
var1.entityJoinedWorld(var19);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else if(var12.itemID == Item.egg.shiftedIndex) {
|
||||
EntityEgg var22 = new EntityEgg(var1, var13, var15, var17);
|
||||
var22.func_20078_a((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var1.entityJoinedWorld(var22);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else if(var12.itemID == Item.snowball.shiftedIndex) {
|
||||
EntitySnowball var23 = new EntitySnowball(var1, var13, var15, var17);
|
||||
var23.func_6141_a((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var1.entityJoinedWorld(var23);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else {
|
||||
EntityItem var24 = new EntityItem(var1, var13, var15 - 0.3D, var17, var12);
|
||||
double var20 = var5.nextDouble() * 0.1D + 0.2D;
|
||||
var24.motionX = (double)var9 * var20;
|
||||
var24.motionY = (double)0.2F;
|
||||
var24.motionZ = (double)var10 * var20;
|
||||
var24.motionX += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var24.motionY += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var24.motionZ += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var1.entityJoinedWorld(var24);
|
||||
var1.func_28097_e(1000, var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
var1.func_28097_e(2000, var2, var3, var4, var9 + 1 + (var10 + 1) * 3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var6 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4);
|
||||
if(var6) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4)) {
|
||||
this.dispenseItem(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityDispenser();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
TileEntityDispenser var5 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.field_28032_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.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.field_28032_a.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.field_28032_a.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.field_28032_a.nextGaussian() * var13);
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
186
src/net/minecraft/src/BlockDoor.java
Normal file
186
src/net/minecraft/src/BlockDoor.java
Normal file
@@ -0,0 +1,186 @@
|
||||
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 int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 != 0 && var1 != 1) {
|
||||
int var3 = this.func_271_d(var2);
|
||||
if((var3 == 0 || var3 == 2) ^ var1 <= 3) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
int var4 = var3 / 2 + (var1 & 1 ^ var3);
|
||||
var4 += (var2 & 4) / 4;
|
||||
int var5 = this.blockIndexInTexture - (var2 & 8) * 2;
|
||||
if((var4 & 1) != 0) {
|
||||
var5 = -var5;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
} else {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
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.markBlocksDirty(var2, var3 - 1, var4, var2, var3, var4);
|
||||
var1.func_28101_a(var5, 1003, var2, var3, var4, 0);
|
||||
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.markBlocksDirty(var2, var3 - 1, var4, var2, var3, var4);
|
||||
var1.func_28101_a((EntityPlayer)null, 1003, var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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.isBlockNormalCube(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) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
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.shiftedIndex : Item.doorWood.shiftedIndex);
|
||||
}
|
||||
|
||||
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.isBlockNormalCube(var2, var3 - 1, var4) && super.canPlaceBlockAt(var1, var2, var3, var4) && super.canPlaceBlockAt(var1, var2, var3 + 1, var4);
|
||||
}
|
||||
|
||||
public static boolean func_27036_e(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
93
src/net/minecraft/src/BlockFarmland.java
Normal file
93
src/net/minecraft/src/BlockFarmland.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFarmland extends Block {
|
||||
protected BlockFarmland(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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 && var2 > 0 ? this.blockIndexInTexture - 1 : (var1 == 1 ? this.blockIndexInTexture : 2);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var5.nextInt(5) == 0) {
|
||||
if(!this.isWaterNearby(var1, var2, var3, var4) && !var1.canLightningStrikeAt(var2, var3 + 1, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var6 > 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 - 1);
|
||||
} else if(!this.isCropsNearby(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
}
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 7);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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 isCropsNearby(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 isWaterNearby(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.isSolid()) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dirt.idDropped(0, var2);
|
||||
}
|
||||
}
|
||||
23
src/net/minecraft/src/BlockFence.java
Normal file
23
src/net/minecraft/src/BlockFence.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockFence extends Block {
|
||||
public BlockFence(int var1, int var2) {
|
||||
super(var1, var2, Material.wood);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockId(var2, var3 - 1, var4) == this.blockID ? true : (!var1.getBlockMaterial(var2, var3 - 1, var4).isSolid() ? false : super.canPlaceBlockAt(var1, var2, var3, var4));
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)((float)var3 + 1.5F), (double)(var4 + 1));
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
184
src/net/minecraft/src/BlockFire.java
Normal file
184
src/net/minecraft/src/BlockFire.java
Normal file
@@ -0,0 +1,184 @@
|
||||
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.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void setFireBurnRates() {
|
||||
this.setBurnRate(Block.planks.blockID, 5, 20);
|
||||
this.setBurnRate(Block.fence.blockID, 5, 20);
|
||||
this.setBurnRate(Block.stairCompactPlanks.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.tallGrass.blockID, 60, 100);
|
||||
this.setBurnRate(Block.cloth.blockID, 30, 60);
|
||||
}
|
||||
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 40;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
boolean var6 = var1.getBlockId(var2, var3 - 1, var4) == Block.bloodStone.blockID;
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
if(var6 || !var1.func_27068_v() || !var1.canLightningStrikeAt(var2, var3, var4) && !var1.canLightningStrikeAt(var2 - 1, var3, var4) && !var1.canLightningStrikeAt(var2 + 1, var3, var4) && !var1.canLightningStrikeAt(var2, var3, var4 - 1) && !var1.canLightningStrikeAt(var2, var3, var4 + 1)) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var7 < 15) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var7 + var5.nextInt(3) / 2);
|
||||
}
|
||||
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
if(!var6 && !this.func_268_g(var1, var2, var3, var4)) {
|
||||
if(!var1.isBlockNormalCube(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 {
|
||||
this.tryToCatchBlockOnFire(var1, var2 + 1, var3, var4, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2 - 1, var3, var4, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3 - 1, var4, 250, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3 + 1, var4, 250, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3, var4 - 1, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3, var4 + 1, 300, var5, var7);
|
||||
|
||||
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) {
|
||||
int var13 = (var12 + 40) / (var7 + 30);
|
||||
if(var13 > 0 && var5.nextInt(var11) <= var13 && (!var1.func_27068_v() || !var1.canLightningStrikeAt(var8, var10, var9)) && !var1.canLightningStrikeAt(var8 - 1, var10, var4) && !var1.canLightningStrikeAt(var8 + 1, var10, var9) && !var1.canLightningStrikeAt(var8, var10, var9 - 1) && !var1.canLightningStrikeAt(var8, var10, var9 + 1)) {
|
||||
int var14 = var7 + var5.nextInt(5) / 4;
|
||||
if(var14 > 15) {
|
||||
var14 = 15;
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadataWithNotify(var8, var10, var9, this.blockID, var14);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void tryToCatchBlockOnFire(World var1, int var2, int var3, int var4, int var5, Random var6, int var7) {
|
||||
int var8 = this.abilityToCatchFire[var1.getBlockId(var2, var3, var4)];
|
||||
if(var6.nextInt(var5) < var8) {
|
||||
boolean var9 = var1.getBlockId(var2, var3, var4) == Block.tnt.blockID;
|
||||
if(var6.nextInt(var7 + 10) < 5 && !var1.canLightningStrikeAt(var2, var3, var4)) {
|
||||
int var10 = var7 + var6.nextInt(5) / 4;
|
||||
if(var10 > 15) {
|
||||
var10 = 15;
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, this.blockID, var10);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
if(var9) {
|
||||
Block.tnt.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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.isAirBlock(var2, var3, var4)) {
|
||||
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.isBlockNormalCube(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.isBlockNormalCube(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.isBlockNormalCube(var2, var3 - 1, var4) && !this.func_268_g(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
54
src/net/minecraft/src/BlockFlower.java
Normal file
54
src/net/minecraft/src/BlockFlower.java
Normal file
@@ -0,0 +1,54 @@
|
||||
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 super.canPlaceBlockAt(var1, var2, var3, var4) && 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.getBlockLightValueNoChecks(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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
263
src/net/minecraft/src/BlockFlowing.java
Normal file
263
src/net/minecraft/src/BlockFlowing.java
Normal file
@@ -0,0 +1,263 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFlowing extends BlockFluid {
|
||||
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_30004_i(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID + 1, var5);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.markBlockNeedsUpdate(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.worldProvider.isHellWorld) {
|
||||
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.getBlockMaterial(var2, var3 - 1, var4).isSolid()) {
|
||||
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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
}
|
||||
} else if(var8) {
|
||||
this.func_30004_i(var1, var2, var3, var4);
|
||||
}
|
||||
} else {
|
||||
this.func_30004_i(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(this.func_312_l(var1, var2, var3 - 1, var4)) {
|
||||
if(var6 >= 8) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, this.blockID, var6);
|
||||
} else {
|
||||
var1.setBlockAndMetadataWithNotify(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.setBlockAndMetadataWithNotify(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.getIsSolid();
|
||||
}
|
||||
} 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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
225
src/net/minecraft/src/BlockFluid.java
Normal file
225
src/net/minecraft/src/BlockFluid.java
Normal file
@@ -0,0 +1,225 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class BlockFluid extends Block {
|
||||
protected BlockFluid(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 isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canCollideCheck(int var1, boolean var2) {
|
||||
return var2 && var1 == 0;
|
||||
}
|
||||
|
||||
public boolean shouldSideBeRendered(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.shouldSideBeRendered(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).getIsSolid()) {
|
||||
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.shouldSideBeRendered(var1, var2, var3, var4 - 1, 2)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3, var4 + 1, 3)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3, var4, 4)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 + 1, var3, var4, 5)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 - 1, 2)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 + 1, 3)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3 + 1, var4, 4)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(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.checkForHarden(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.checkForHarden(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void checkForHarden(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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
137
src/net/minecraft/src/BlockFurnace.java
Normal file
137
src/net/minecraft/src/BlockFurnace.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFurnace extends BlockContainer {
|
||||
private Random field_28033_a = new Random();
|
||||
private final boolean isActive;
|
||||
private static boolean field_28034_c = false;
|
||||
|
||||
protected BlockFurnace(int var1, boolean var2) {
|
||||
super(var1, Material.rock);
|
||||
this.isActive = 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.setDefaultDirection(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void setDefaultDirection(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
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.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) {
|
||||
var9 = 3;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) {
|
||||
var9 = 2;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) {
|
||||
var9 = 5;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) {
|
||||
var9 = 4;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture + 17 : (var1 == 0 ? this.blockIndexInTexture + 17 : (var1 == 3 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityFurnace var6 = (TileEntityFurnace)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var5.displayGUIFurnace(var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateFurnaceBlockState(boolean var0, World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
TileEntity var6 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
field_28034_c = true;
|
||||
if(var0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenActive.blockID);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenIdle.blockID);
|
||||
}
|
||||
|
||||
field_28034_c = false;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5);
|
||||
var6.validate();
|
||||
var1.setBlockTileEntity(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
if(!field_28034_c) {
|
||||
TileEntityFurnace var5 = (TileEntityFurnace)var1.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.field_28033_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.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.field_28033_a.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.field_28033_a.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.field_28033_a.nextGaussian() * var13);
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockGlass.java
Normal file
13
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;
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockGlowStone.java
Normal file
17
src/net/minecraft/src/BlockGlowStone.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGlowStone extends Block {
|
||||
public BlockGlowStone(int var1, int var2, Material var3) {
|
||||
super(var1, var2, var3);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 2 + var1.nextInt(3);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.lightStoneDust.shiftedIndex;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockGrass.java
Normal file
36
src/net/minecraft/src/BlockGrass.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGrass extends Block {
|
||||
protected BlockGrass(int var1) {
|
||||
super(var1, Material.grass);
|
||||
this.blockIndexInTexture = 3;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if(var1.getBlockLightValue(var2, var3 + 1, var4) < 4 && Block.lightOpacity[var1.getBlockId(var2, var3 + 1, var4)] > 2) {
|
||||
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;
|
||||
int var9 = var1.getBlockId(var6, var7 + 1, var8);
|
||||
if(var1.getBlockId(var6, var7, var8) == Block.dirt.blockID && var1.getBlockLightValue(var6, var7 + 1, var8) >= 4 && Block.lightOpacity[var9] <= 2) {
|
||||
var1.setBlockWithNotify(var6, var7, var8, Block.grass.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dirt.idDropped(0, var2);
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockGravel.java
Normal file
13
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.shiftedIndex : this.blockID;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockIce.java
Normal file
36
src/net/minecraft/src/BlockIce.java
Normal file
@@ -0,0 +1,36 @@
|
||||
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 void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
Material var7 = var1.getBlockMaterial(var3, var4 - 1, var5);
|
||||
if(var7.getIsSolid() || var7.getIsLiquid()) {
|
||||
var1.setBlockWithNotify(var3, var4, var5, Block.waterMoving.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.waterStill.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
65
src/net/minecraft/src/BlockJukeBox.java
Normal file
65
src/net/minecraft/src/BlockJukeBox.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockJukeBox extends BlockContainer {
|
||||
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) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
return false;
|
||||
} else {
|
||||
this.func_28035_b_(var1, var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void ejectRecord(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityRecordPlayer var6 = (TileEntityRecordPlayer)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.field_28009_a = var5;
|
||||
var6.onInventoryChanged();
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void func_28035_b_(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityRecordPlayer var5 = (TileEntityRecordPlayer)var1.getBlockTileEntity(var2, var3, var4);
|
||||
int var6 = var5.field_28009_a;
|
||||
if(var6 != 0) {
|
||||
var1.func_28097_e(1005, var2, var3, var4, 0);
|
||||
var1.playRecord((String)null, var2, var3, var4);
|
||||
var5.field_28009_a = 0;
|
||||
var5.onInventoryChanged();
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
float var8 = 0.7F;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.2D + 0.6D;
|
||||
double var13 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
EntityItem var15 = new EntityItem(var1, (double)var2 + var9, (double)var3 + var11, (double)var4 + var13, new ItemStack(var6, 1, 0));
|
||||
var15.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
this.func_28035_b_(var1, var2, var3, var4);
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityRecordPlayer();
|
||||
}
|
||||
}
|
||||
95
src/net/minecraft/src/BlockLadder.java
Normal file
95
src/net/minecraft/src/BlockLadder.java
Normal file
@@ -0,0 +1,95 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : var1.isBlockNormalCube(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.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 3) && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 4) && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 5) && var1.isBlockNormalCube(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.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 5 && var1.isBlockNormalCube(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;
|
||||
}
|
||||
}
|
||||
166
src/net/minecraft/src/BlockLeaves.java
Normal file
166
src/net/minecraft/src/BlockLeaves.java
Normal file
@@ -0,0 +1,166 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLeaves extends BlockLeavesBase {
|
||||
private int baseIndexInPNG;
|
||||
int[] adjacentTreeBlocks;
|
||||
|
||||
protected BlockLeaves(int var1, int var2) {
|
||||
super(var1, var2, Material.leaves, false);
|
||||
this.baseIndexInPNG = var2;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 1;
|
||||
int var6 = var5 + 1;
|
||||
if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) {
|
||||
for(int var7 = -var5; var7 <= var5; ++var7) {
|
||||
for(int var8 = -var5; var8 <= var5; ++var8) {
|
||||
for(int var9 = -var5; var9 <= var5; ++var9) {
|
||||
int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9);
|
||||
if(var10 == Block.leaves.blockID) {
|
||||
int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9);
|
||||
var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
byte var7 = 4;
|
||||
int var8 = var7 + 1;
|
||||
byte var9 = 32;
|
||||
int var10 = var9 * var9;
|
||||
int var11 = var9 / 2;
|
||||
if(this.adjacentTreeBlocks == null) {
|
||||
this.adjacentTreeBlocks = new int[var9 * var9 * var9];
|
||||
}
|
||||
|
||||
int var12;
|
||||
if(var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
|
||||
var12 = -var7;
|
||||
|
||||
label111:
|
||||
while(true) {
|
||||
int var13;
|
||||
int var14;
|
||||
int var15;
|
||||
if(var12 > var7) {
|
||||
var12 = 1;
|
||||
|
||||
while(true) {
|
||||
if(var12 > 4) {
|
||||
break label111;
|
||||
}
|
||||
|
||||
for(var13 = -var7; var13 <= var7; ++var13) {
|
||||
for(var14 = -var7; var14 <= var7; ++var14) {
|
||||
for(var15 = -var7; var15 <= var7; ++var15) {
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) {
|
||||
if(this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var12;
|
||||
}
|
||||
}
|
||||
|
||||
for(var13 = -var7; var13 <= var7; ++var13) {
|
||||
for(var14 = -var7; var14 <= var7; ++var14) {
|
||||
var15 = var1.getBlockId(var2 + var12, var3 + var13, var4 + var14);
|
||||
if(var15 == Block.wood.blockID) {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
|
||||
} else if(var15 == Block.leaves.blockID) {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
|
||||
} else {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var12;
|
||||
}
|
||||
}
|
||||
|
||||
var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11];
|
||||
if(var12 >= 0) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6 & -9);
|
||||
} else {
|
||||
this.removeLeaves(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void removeLeaves(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 void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
if(!var1.singleplayerWorld && var2.getCurrentEquippedItem() != null && var2.getCurrentEquippedItem().itemID == Item.field_31022_bc.shiftedIndex) {
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
this.dropBlockAsItem_do(var1, var3, var4, var5, new ItemStack(Block.leaves.blockID, 1, var6 & 3));
|
||||
} else {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1 & 3;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return !this.graphicsLevel;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return (var2 & 3) == 1 ? this.blockIndexInTexture + 80 : this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
super.onEntityWalking(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
14
src/net/minecraft/src/BlockLeavesBase.java
Normal file
14
src/net/minecraft/src/BlockLeavesBase.java
Normal file
@@ -0,0 +1,14 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
194
src/net/minecraft/src/BlockLever.java
Normal file
194
src/net/minecraft/src/BlockLever.java
Normal file
@@ -0,0 +1,194 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 == 1 && var1.isBlockNormalCube(var2, var3 - 1, var4) ? true : (var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : (var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4))));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : var1.isBlockNormalCube(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;
|
||||
var6 = -1;
|
||||
if(var5 == 1 && var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var6 = 5 + var1.rand.nextInt(2);
|
||||
}
|
||||
|
||||
if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
if(var6 == -1) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7);
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.checkIfAttachedToBlock(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
boolean var7 = false;
|
||||
if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && var6 == 5) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && var6 == 6) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean checkIfAttachedToBlock(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.singleplayerWorld) {
|
||||
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.markBlocksDirty(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 == 6 && var5 == 1 ? true : (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;
|
||||
}
|
||||
}
|
||||
22
src/net/minecraft/src/BlockLockedChest.java
Normal file
22
src/net/minecraft/src/BlockLockedChest.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLockedChest extends Block {
|
||||
protected BlockLockedChest(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) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
51
src/net/minecraft/src/BlockLog.java
Normal file
51
src/net/minecraft/src/BlockLog.java
Normal file
@@ -0,0 +1,51 @@
|
||||
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 void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 4;
|
||||
int var6 = var5 + 1;
|
||||
if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) {
|
||||
for(int var7 = -var5; var7 <= var5; ++var7) {
|
||||
for(int var8 = -var5; var8 <= var5; ++var8) {
|
||||
for(int var9 = -var5; var9 <= var5; ++var9) {
|
||||
int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9);
|
||||
if(var10 == Block.leaves.blockID) {
|
||||
int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9);
|
||||
if((var11 & 8) == 0) {
|
||||
var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? 21 : (var1 == 0 ? 21 : (var2 == 1 ? 116 : (var2 == 2 ? 117 : 20)));
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
}
|
||||
25
src/net/minecraft/src/BlockMobSpawner.java
Normal file
25
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 getBlockEntity() {
|
||||
return new TileEntityMobSpawner();
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockMushroom.java
Normal file
36
src/net/minecraft/src/BlockMushroom.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
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);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var5.nextInt(100) == 0) {
|
||||
int var6 = var2 + var5.nextInt(3) - 1;
|
||||
int var7 = var3 + var5.nextInt(2) - var5.nextInt(2);
|
||||
int var8 = var4 + var5.nextInt(3) - 1;
|
||||
if(var1.isAirBlock(var6, var7, var8) && this.canBlockStay(var1, var6, var7, var8)) {
|
||||
int var10000 = var2 + (var5.nextInt(3) - 1);
|
||||
var10000 = var4 + (var5.nextInt(3) - 1);
|
||||
if(var1.isAirBlock(var6, var7, var8) && this.canBlockStay(var1, var6, var7, var8)) {
|
||||
var1.setBlockWithNotify(var6, var7, var8, this.blockID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return Block.opaqueCubeLookup[var1];
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return var3 >= 0 && var3 < 128 ? var1.getBlockLightValueNoChecks(var2, var3, var4) < 13 && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)) : false;
|
||||
}
|
||||
}
|
||||
7
src/net/minecraft/src/BlockNetherrack.java
Normal file
7
src/net/minecraft/src/BlockNetherrack.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockNetherrack extends Block {
|
||||
public BlockNetherrack(int var1, int var2) {
|
||||
super(var1, var2, Material.rock);
|
||||
}
|
||||
}
|
||||
71
src/net/minecraft/src/BlockNote.java
Normal file
71
src/net/minecraft/src/BlockNote.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockNote extends BlockContainer {
|
||||
public BlockNote(int var1) {
|
||||
super(var1, 74, Material.wood);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var6 = var1.isBlockGettingPowered(var2, var3, var4);
|
||||
TileEntityNote var7 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
if(var7.previousRedstoneState != var6) {
|
||||
if(var6) {
|
||||
var7.triggerNote(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
var7.previousRedstoneState = var6;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityNote var6 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.changePitch();
|
||||
var6.triggerNote(var1, var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityNote var6 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.triggerNote(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityNote();
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
float var7 = (float)Math.pow(2.0D, (double)(var6 - 12) / 12.0D);
|
||||
String var8 = "harp";
|
||||
if(var5 == 1) {
|
||||
var8 = "bd";
|
||||
}
|
||||
|
||||
if(var5 == 2) {
|
||||
var8 = "snare";
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
var8 = "hat";
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
var8 = "bassattack";
|
||||
}
|
||||
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "note." + var8, 3.0F, var7);
|
||||
var1.spawnParticle("note", (double)var2 + 0.5D, (double)var3 + 1.2D, (double)var4 + 0.5D, (double)var6 / 24.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockObsidian.java
Normal file
17
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;
|
||||
}
|
||||
}
|
||||
21
src/net/minecraft/src/BlockOre.java
Normal file
21
src/net/minecraft/src/BlockOre.java
Normal file
@@ -0,0 +1,21 @@
|
||||
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.shiftedIndex : (this.blockID == Block.oreDiamond.blockID ? Item.diamond.shiftedIndex : (this.blockID == Block.oreLapis.blockID ? Item.dyePowder.shiftedIndex : this.blockID));
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.blockID == Block.oreLapis.blockID ? 4 + var1.nextInt(5) : 1;
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return this.blockID == Block.oreLapis.blockID ? 4 : 0;
|
||||
}
|
||||
}
|
||||
12
src/net/minecraft/src/BlockOreStorage.java
Normal file
12
src/net/minecraft/src/BlockOreStorage.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockOreStorage extends Block {
|
||||
public BlockOreStorage(int var1, int var2) {
|
||||
super(var1, Material.iron);
|
||||
this.blockIndexInTexture = var2;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
}
|
||||
317
src/net/minecraft/src/BlockPistonBase.java
Normal file
317
src/net/minecraft/src/BlockPistonBase.java
Normal file
@@ -0,0 +1,317 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class BlockPistonBase extends Block {
|
||||
private boolean isSticky;
|
||||
private boolean ignoreUpdates;
|
||||
|
||||
public BlockPistonBase(int var1, int var2, boolean var3) {
|
||||
super(var1, var2, Material.piston);
|
||||
this.isSticky = var3;
|
||||
this.setStepSound(soundStoneFootstep);
|
||||
this.setHardness(0.5F);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
int var3 = getOrientation(var2);
|
||||
return var3 > 5 ? this.blockIndexInTexture : (var1 == var3 ? (!isExtended(var2) && this.minX <= 0.0D && this.minY <= 0.0D && this.minZ <= 0.0D && this.maxX >= 1.0D && this.maxY >= 1.0D && this.maxZ >= 1.0D ? this.blockIndexInTexture : 110) : (var1 == PistonBlockTextures.field_31052_a[var3] ? 109 : 108));
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = determineOrientation(var1, var2, var3, var4, (EntityPlayer)var5);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld && !this.ignoreUpdates) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updatePistonState(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var6 = getOrientation(var5);
|
||||
boolean var7 = this.isPowered(var1, var2, var3, var4, var6);
|
||||
if(var5 != 7) {
|
||||
if(var7 && !isExtended(var5)) {
|
||||
if(canExtend(var1, var2, var3, var4, var6)) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6 | 8);
|
||||
var1.playNoteAt(var2, var3, var4, 0, var6);
|
||||
}
|
||||
} else if(!var7 && isExtended(var5)) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6);
|
||||
var1.playNoteAt(var2, var3, var4, 1, var6);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isPowered(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 != 0 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 - 1, var4, 0) ? true : (var5 != 1 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4, 1) ? true : (var5 != 2 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) ? true : (var5 != 3 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) ? true : (var5 != 5 && var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5) ? true : (var5 != 4 && var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4, 0) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 2, var4, 1) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4 - 1, 2) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4 + 1, 3) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3 + 1, var4, 4) ? true : var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3 + 1, var4, 5)))))))))));
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
this.ignoreUpdates = true;
|
||||
if(var5 == 0) {
|
||||
if(this.tryExtend(var1, var2, var3, var4, var6)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 | 8);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "tile.piston.out", 0.5F, var1.rand.nextFloat() * 0.25F + 0.6F);
|
||||
}
|
||||
} else if(var5 == 1) {
|
||||
TileEntity var8 = var1.getBlockTileEntity(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6]);
|
||||
if(var8 != null && var8 instanceof TileEntityPiston) {
|
||||
((TileEntityPiston)var8).clearPistonTileEntity();
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadata(var2, var3, var4, Block.pistonMoving.blockID, var6);
|
||||
var1.setBlockTileEntity(var2, var3, var4, BlockPistonMoving.getTileEntity(this.blockID, var6, var6, false, true));
|
||||
if(this.isSticky) {
|
||||
int var9 = var2 + PistonBlockTextures.field_31051_b[var6] * 2;
|
||||
int var10 = var3 + PistonBlockTextures.field_31054_c[var6] * 2;
|
||||
int var11 = var4 + PistonBlockTextures.field_31053_d[var6] * 2;
|
||||
int var12 = var1.getBlockId(var9, var10, var11);
|
||||
int var13 = var1.getBlockMetadata(var9, var10, var11);
|
||||
boolean var14 = false;
|
||||
if(var12 == Block.pistonMoving.blockID) {
|
||||
TileEntity var15 = var1.getBlockTileEntity(var9, var10, var11);
|
||||
if(var15 != null && var15 instanceof TileEntityPiston) {
|
||||
TileEntityPiston var16 = (TileEntityPiston)var15;
|
||||
if(var16.func_31008_d() == var6 && var16.func_31010_c()) {
|
||||
var16.clearPistonTileEntity();
|
||||
var12 = var16.getStoredBlockID();
|
||||
var13 = var16.func_31005_e();
|
||||
var14 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var14 || var12 <= 0 || !canPushBlock(var12, var1, var9, var10, var11, false) || Block.blocksList[var12].getMobilityFlag() != 0 && var12 != Block.pistonBase.blockID && var12 != Block.pistonStickyBase.blockID) {
|
||||
if(!var14) {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6], 0);
|
||||
this.ignoreUpdates = true;
|
||||
}
|
||||
} else {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var9, var10, var11, 0);
|
||||
this.ignoreUpdates = true;
|
||||
var2 += PistonBlockTextures.field_31051_b[var6];
|
||||
var3 += PistonBlockTextures.field_31054_c[var6];
|
||||
var4 += PistonBlockTextures.field_31053_d[var6];
|
||||
var1.setBlockAndMetadata(var2, var3, var4, Block.pistonMoving.blockID, var13);
|
||||
var1.setBlockTileEntity(var2, var3, var4, BlockPistonMoving.getTileEntity(var12, var13, var6, false, false));
|
||||
}
|
||||
} else {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6], 0);
|
||||
this.ignoreUpdates = true;
|
||||
}
|
||||
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "tile.piston.in", 0.5F, var1.rand.nextFloat() * 0.15F + 0.6F);
|
||||
}
|
||||
|
||||
this.ignoreUpdates = false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(isExtended(var5)) {
|
||||
switch(getOrientation(var5)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.25F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 12.0F / 16.0F, 1.0F);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.25F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 12.0F / 16.0F);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.25F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F);
|
||||
}
|
||||
} else {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int getOrientation(int var0) {
|
||||
return var0 & 7;
|
||||
}
|
||||
|
||||
public static boolean isExtended(int var0) {
|
||||
return (var0 & 8) != 0;
|
||||
}
|
||||
|
||||
private static int determineOrientation(World var0, int var1, int var2, int var3, EntityPlayer var4) {
|
||||
if(MathHelper.abs((float)var4.posX - (float)var1) < 2.0F && MathHelper.abs((float)var4.posZ - (float)var3) < 2.0F) {
|
||||
double var5 = var4.posY + 1.82D - (double)var4.yOffset;
|
||||
if(var5 - (double)var2 > 2.0D) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if((double)var2 - var5 > 0.0D) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int var7 = MathHelper.floor_double((double)(var4.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
return var7 == 0 ? 2 : (var7 == 1 ? 5 : (var7 == 2 ? 3 : (var7 == 3 ? 4 : 0)));
|
||||
}
|
||||
|
||||
private static boolean canPushBlock(int var0, World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(var0 == Block.obsidian.blockID) {
|
||||
return false;
|
||||
} else {
|
||||
if(var0 != Block.pistonBase.blockID && var0 != Block.pistonStickyBase.blockID) {
|
||||
if(Block.blocksList[var0].getHardness() == -1.0F) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var0].getMobilityFlag() == 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!var5 && Block.blocksList[var0].getMobilityFlag() == 1) {
|
||||
return false;
|
||||
}
|
||||
} else if(isExtended(var1.getBlockMetadata(var2, var3, var4))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TileEntity var6 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
return var6 == null;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean canExtend(World var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var1 + PistonBlockTextures.field_31051_b[var4];
|
||||
int var6 = var2 + PistonBlockTextures.field_31054_c[var4];
|
||||
int var7 = var3 + PistonBlockTextures.field_31053_d[var4];
|
||||
int var8 = 0;
|
||||
|
||||
while(true) {
|
||||
if(var8 < 13) {
|
||||
if(var6 <= 0 || var6 >= 127) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int var9 = var0.getBlockId(var5, var6, var7);
|
||||
if(var9 != 0) {
|
||||
if(!canPushBlock(var9, var0, var5, var6, var7, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var9].getMobilityFlag() != 1) {
|
||||
if(var8 == 12) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var5 += PistonBlockTextures.field_31051_b[var4];
|
||||
var6 += PistonBlockTextures.field_31054_c[var4];
|
||||
var7 += PistonBlockTextures.field_31053_d[var4];
|
||||
++var8;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean tryExtend(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var2 + PistonBlockTextures.field_31051_b[var5];
|
||||
int var7 = var3 + PistonBlockTextures.field_31054_c[var5];
|
||||
int var8 = var4 + PistonBlockTextures.field_31053_d[var5];
|
||||
int var9 = 0;
|
||||
|
||||
while(true) {
|
||||
int var10;
|
||||
if(var9 < 13) {
|
||||
if(var7 <= 0 || var7 >= 127) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var10 = var1.getBlockId(var6, var7, var8);
|
||||
if(var10 != 0) {
|
||||
if(!canPushBlock(var10, var1, var6, var7, var8, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var10].getMobilityFlag() != 1) {
|
||||
if(var9 == 12) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var6 += PistonBlockTextures.field_31051_b[var5];
|
||||
var7 += PistonBlockTextures.field_31054_c[var5];
|
||||
var8 += PistonBlockTextures.field_31053_d[var5];
|
||||
++var9;
|
||||
continue;
|
||||
}
|
||||
|
||||
Block.blocksList[var10].dropBlockAsItem(var1, var6, var7, var8, var1.getBlockMetadata(var6, var7, var8));
|
||||
var1.setBlockWithNotify(var6, var7, var8, 0);
|
||||
}
|
||||
}
|
||||
|
||||
while(var6 != var2 || var7 != var3 || var8 != var4) {
|
||||
var9 = var6 - PistonBlockTextures.field_31051_b[var5];
|
||||
var10 = var7 - PistonBlockTextures.field_31054_c[var5];
|
||||
int var11 = var8 - PistonBlockTextures.field_31053_d[var5];
|
||||
int var12 = var1.getBlockId(var9, var10, var11);
|
||||
int var13 = var1.getBlockMetadata(var9, var10, var11);
|
||||
if(var12 == this.blockID && var9 == var2 && var10 == var3 && var11 == var4) {
|
||||
var1.setBlockAndMetadata(var6, var7, var8, Block.pistonMoving.blockID, var5 | (this.isSticky ? 8 : 0));
|
||||
var1.setBlockTileEntity(var6, var7, var8, BlockPistonMoving.getTileEntity(Block.pistonExtension.blockID, var5 | (this.isSticky ? 8 : 0), var5, true, false));
|
||||
} else {
|
||||
var1.setBlockAndMetadata(var6, var7, var8, Block.pistonMoving.blockID, var13);
|
||||
var1.setBlockTileEntity(var6, var7, var8, BlockPistonMoving.getTileEntity(var12, var13, var5, true, false));
|
||||
}
|
||||
|
||||
var6 = var9;
|
||||
var7 = var10;
|
||||
var8 = var11;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
139
src/net/minecraft/src/BlockPistonExtension.java
Normal file
139
src/net/minecraft/src/BlockPistonExtension.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPistonExtension extends Block {
|
||||
private int field_31046_a = -1;
|
||||
|
||||
public BlockPistonExtension(int var1, int var2) {
|
||||
super(var1, var2, Material.piston);
|
||||
this.setStepSound(soundStoneFootstep);
|
||||
this.setHardness(0.5F);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var6 = PistonBlockTextures.field_31052_a[func_31045_b(var5)];
|
||||
var2 += PistonBlockTextures.field_31051_b[var6];
|
||||
var3 += PistonBlockTextures.field_31054_c[var6];
|
||||
var4 += PistonBlockTextures.field_31053_d[var6];
|
||||
int var7 = var1.getBlockId(var2, var3, var4);
|
||||
if(var7 == Block.pistonBase.blockID || var7 == Block.pistonStickyBase.blockID) {
|
||||
var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(BlockPistonBase.isExtended(var5)) {
|
||||
Block.blocksList[var7].dropBlockAsItem(var1, var2, var3, var4, var5);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
int var3 = func_31045_b(var2);
|
||||
return var1 == var3 ? (this.field_31046_a >= 0 ? this.field_31046_a : ((var2 & 8) != 0 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture)) : (var1 == PistonBlockTextures.field_31052_a[var3] ? 107 : 108);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
switch(func_31045_b(var7)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.25F, 6.0F / 16.0F, 10.0F / 16.0F, 1.0F, 10.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 12.0F / 16.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.0F, 6.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.0F, 10.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.25F, 6.0F / 16.0F, 0.25F, 12.0F / 16.0F, 10.0F / 16.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.25F, 6.0F / 16.0F, 0.0F, 12.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.25F, 0.25F, 10.0F / 16.0F, 12.0F / 16.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(12.0F / 16.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.0F, 6.0F / 16.0F, 0.25F, 12.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.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 setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
switch(func_31045_b(var5)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 12.0F / 16.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(12.0F / 16.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = func_31045_b(var1.getBlockMetadata(var2, var3, var4));
|
||||
int var7 = var1.getBlockId(var2 - PistonBlockTextures.field_31051_b[var6], var3 - PistonBlockTextures.field_31054_c[var6], var4 - PistonBlockTextures.field_31053_d[var6]);
|
||||
if(var7 != Block.pistonBase.blockID && var7 != Block.pistonStickyBase.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
Block.blocksList[var7].onNeighborBlockChange(var1, var2 - PistonBlockTextures.field_31051_b[var6], var3 - PistonBlockTextures.field_31054_c[var6], var4 - PistonBlockTextures.field_31053_d[var6], var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static int func_31045_b(int var0) {
|
||||
return var0 & 7;
|
||||
}
|
||||
}
|
||||
138
src/net/minecraft/src/BlockPistonMoving.java
Normal file
138
src/net/minecraft/src/BlockPistonMoving.java
Normal file
@@ -0,0 +1,138 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPistonMoving extends BlockContainer {
|
||||
public BlockPistonMoving(int var1) {
|
||||
super(var1, Material.piston);
|
||||
this.setHardness(-1.0F);
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
if(var5 != null && var5 instanceof TileEntityPiston) {
|
||||
((TileEntityPiston)var5).clearPistonTileEntity();
|
||||
} else {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityPiston var7 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var7 != null) {
|
||||
Block.blocksList[var7.getStoredBlockID()].dropBlockAsItem(var1, var2, var3, var4, var7.func_31005_e());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static TileEntity getTileEntity(int var0, int var1, int var2, boolean var3, boolean var4) {
|
||||
return new TileEntityPiston(var0, var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var5 == null) {
|
||||
return null;
|
||||
} else {
|
||||
float var6 = var5.func_31007_a(0.0F);
|
||||
if(var5.func_31010_c()) {
|
||||
var6 = 1.0F - var6;
|
||||
}
|
||||
|
||||
return this.func_31032_a(var1, var2, var3, var4, var5.getStoredBlockID(), var6, var5.func_31008_d());
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var5 != null) {
|
||||
Block var6 = Block.blocksList[var5.getStoredBlockID()];
|
||||
if(var6 == null || var6 == this) {
|
||||
return;
|
||||
}
|
||||
|
||||
var6.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
float var7 = var5.func_31007_a(0.0F);
|
||||
if(var5.func_31010_c()) {
|
||||
var7 = 1.0F - var7;
|
||||
}
|
||||
|
||||
int var8 = var5.func_31008_d();
|
||||
this.minX = var6.minX - (double)((float)PistonBlockTextures.field_31051_b[var8] * var7);
|
||||
this.minY = var6.minY - (double)((float)PistonBlockTextures.field_31054_c[var8] * var7);
|
||||
this.minZ = var6.minZ - (double)((float)PistonBlockTextures.field_31053_d[var8] * var7);
|
||||
this.maxX = var6.maxX - (double)((float)PistonBlockTextures.field_31051_b[var8] * var7);
|
||||
this.maxY = var6.maxY - (double)((float)PistonBlockTextures.field_31054_c[var8] * var7);
|
||||
this.maxZ = var6.maxZ - (double)((float)PistonBlockTextures.field_31053_d[var8] * var7);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public AxisAlignedBB func_31032_a(World var1, int var2, int var3, int var4, int var5, float var6, int var7) {
|
||||
if(var5 != 0 && var5 != this.blockID) {
|
||||
AxisAlignedBB var8 = Block.blocksList[var5].getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
if(var8 == null) {
|
||||
return null;
|
||||
} else {
|
||||
var8.minX -= (double)((float)PistonBlockTextures.field_31051_b[var7] * var6);
|
||||
var8.maxX -= (double)((float)PistonBlockTextures.field_31051_b[var7] * var6);
|
||||
var8.minY -= (double)((float)PistonBlockTextures.field_31054_c[var7] * var6);
|
||||
var8.maxY -= (double)((float)PistonBlockTextures.field_31054_c[var7] * var6);
|
||||
var8.minZ -= (double)((float)PistonBlockTextures.field_31053_d[var7] * var6);
|
||||
var8.maxZ -= (double)((float)PistonBlockTextures.field_31053_d[var7] * var6);
|
||||
return var8;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private TileEntityPiston getTileEntityAtLocation(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
return var5 != null && var5 instanceof TileEntityPiston ? (TileEntityPiston)var5 : null;
|
||||
}
|
||||
}
|
||||
130
src/net/minecraft/src/BlockPortal.java
Normal file
130
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.portal, 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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
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;
|
||||
}
|
||||
|
||||
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.editingBlocks = 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.editingBlocks = 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 int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(var5.ridingEntity == null && var5.riddenByEntity == null) {
|
||||
var5.setInPortal();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
148
src/net/minecraft/src/BlockPressurePlate.java
Normal file
148
src/net/minecraft/src/BlockPressurePlate.java
Normal file
@@ -0,0 +1,148 @@
|
||||
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, Material var4) {
|
||||
super(var1, var2, var4);
|
||||
this.triggerMobType = var3;
|
||||
this.setTickOnLoad(true);
|
||||
float var5 = 1.0F / 16.0F;
|
||||
this.setBlockBounds(var5, 0.0F, var5, 1.0F - var5, 0.03125F, 1.0F - var5);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(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.isBlockNormalCube(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.singleplayerWorld) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) != 0) {
|
||||
this.setStateIfMobInteractsWithPlate(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) != 1) {
|
||||
this.setStateIfMobInteractsWithPlate(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setStateIfMobInteractsWithPlate(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.markBlocksDirty(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.markBlocksDirty(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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
45
src/net/minecraft/src/BlockPumpkin.java
Normal file
45
src/net/minecraft/src/BlockPumpkin.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockPumpkin extends Block {
|
||||
private boolean blockType;
|
||||
|
||||
protected BlockPumpkin(int var1, int var2, boolean var3) {
|
||||
super(var1, Material.pumpkin);
|
||||
this.blockIndexInTexture = var2;
|
||||
this.setTickOnLoad(true);
|
||||
this.blockType = var3;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 == 1) {
|
||||
return this.blockIndexInTexture;
|
||||
} else if(var1 == 0) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
int var3 = this.blockIndexInTexture + 1 + 16;
|
||||
if(this.blockType) {
|
||||
++var3;
|
||||
}
|
||||
|
||||
return var2 == 2 && var1 == 2 ? var3 : (var2 == 3 && var1 == 5 ? var3 : (var2 == 0 && var1 == 3 ? var3 : (var2 == 1 && var1 == 4 ? var3 : this.blockIndexInTexture + 16)));
|
||||
}
|
||||
}
|
||||
|
||||
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.func_27090_g()) && var1.isBlockNormalCube(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) + 2.5D) & 3;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
246
src/net/minecraft/src/BlockRail.java
Normal file
246
src/net/minecraft/src/BlockRail.java
Normal file
@@ -0,0 +1,246 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRail extends Block {
|
||||
private final boolean field_27034_a;
|
||||
|
||||
public static final boolean func_27029_g(World var0, int var1, int var2, int var3) {
|
||||
int var4 = var0.getBlockId(var1, var2, var3);
|
||||
return var4 == Block.minecartTrack.blockID || var4 == Block.railPowered.blockID || var4 == Block.railDetector.blockID;
|
||||
}
|
||||
|
||||
public static final boolean func_27030_c(int var0) {
|
||||
return var0 == Block.minecartTrack.blockID || var0 == Block.railPowered.blockID || var0 == Block.railDetector.blockID;
|
||||
}
|
||||
|
||||
protected BlockRail(int var1, int var2, boolean var3) {
|
||||
super(var1, var2, Material.circuits);
|
||||
this.field_27034_a = var3;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public boolean func_27028_d() {
|
||||
return this.field_27034_a;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
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 getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(this.field_27034_a) {
|
||||
if(this.blockID == Block.railPowered.blockID && (var2 & 8) == 0) {
|
||||
return this.blockIndexInTexture - 16;
|
||||
}
|
||||
} else if(var2 >= 6) {
|
||||
return this.blockIndexInTexture - 16;
|
||||
}
|
||||
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.func_4038_g(var1, var2, var3, var4, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6;
|
||||
if(this.field_27034_a) {
|
||||
var7 = var6 & 7;
|
||||
}
|
||||
|
||||
boolean var8 = false;
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 2 && !var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 3 && !var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 4 && !var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 5 && !var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var8) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else if(this.blockID == Block.railPowered.blockID) {
|
||||
boolean var9 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4);
|
||||
var9 = var9 || this.func_27032_a(var1, var2, var3, var4, var6, true, 0) || this.func_27032_a(var1, var2, var3, var4, var6, false, 0);
|
||||
boolean var10 = false;
|
||||
if(var9 && (var6 & 8) == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 | 8);
|
||||
var10 = true;
|
||||
} else if(!var9 && (var6 & 8) != 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7);
|
||||
var10 = true;
|
||||
}
|
||||
|
||||
if(var10) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
if(var7 == 2 || var7 == 3 || var7 == 4 || var7 == 5) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
} else if(var5 > 0 && Block.blocksList[var5].canProvidePower() && !this.field_27034_a && RailLogic.getNAdjacentTracks(new RailLogic(this, var1, var2, var3, var4)) == 3) {
|
||||
this.func_4038_g(var1, var2, var3, var4, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void func_4038_g(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
(new RailLogic(this, var1, var2, var3, var4)).func_596_a(var1.isBlockIndirectlyGettingPowered(var2, var3, var4), var5);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_27032_a(World var1, int var2, int var3, int var4, int var5, boolean var6, int var7) {
|
||||
if(var7 >= 8) {
|
||||
return false;
|
||||
} else {
|
||||
int var8 = var5 & 7;
|
||||
boolean var9 = true;
|
||||
switch(var8) {
|
||||
case 0:
|
||||
if(var6) {
|
||||
++var4;
|
||||
} else {
|
||||
--var4;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(var6) {
|
||||
--var2;
|
||||
} else {
|
||||
++var2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(var6) {
|
||||
--var2;
|
||||
} else {
|
||||
++var2;
|
||||
++var3;
|
||||
var9 = false;
|
||||
}
|
||||
|
||||
var8 = 1;
|
||||
break;
|
||||
case 3:
|
||||
if(var6) {
|
||||
--var2;
|
||||
++var3;
|
||||
var9 = false;
|
||||
} else {
|
||||
++var2;
|
||||
}
|
||||
|
||||
var8 = 1;
|
||||
break;
|
||||
case 4:
|
||||
if(var6) {
|
||||
++var4;
|
||||
} else {
|
||||
--var4;
|
||||
++var3;
|
||||
var9 = false;
|
||||
}
|
||||
|
||||
var8 = 0;
|
||||
break;
|
||||
case 5:
|
||||
if(var6) {
|
||||
++var4;
|
||||
++var3;
|
||||
var9 = false;
|
||||
} else {
|
||||
--var4;
|
||||
}
|
||||
|
||||
var8 = 0;
|
||||
}
|
||||
|
||||
return this.func_27031_a(var1, var2, var3, var4, var6, var7, var8) ? true : var9 && this.func_27031_a(var1, var2, var3 - 1, var4, var6, var7, var8);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_27031_a(World var1, int var2, int var3, int var4, boolean var5, int var6, int var7) {
|
||||
int var8 = var1.getBlockId(var2, var3, var4);
|
||||
if(var8 == Block.railPowered.blockID) {
|
||||
int var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var10 = var9 & 7;
|
||||
if(var7 == 1 && (var10 == 0 || var10 == 4 || var10 == 5)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(var7 == 0 && (var10 == 1 || var10 == 2 || var10 == 3)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if((var9 & 8) != 0) {
|
||||
if(!var1.isBlockIndirectlyGettingPowered(var2, var3, var4) && !var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4)) {
|
||||
return this.func_27032_a(var1, var2, var3, var4, var9, var5, var6 + 1);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static boolean func_27033_a(BlockRail var0) {
|
||||
return var0.field_27034_a;
|
||||
}
|
||||
}
|
||||
97
src/net/minecraft/src/BlockRedstoneOre.java
Normal file
97
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.shiftedIndex;
|
||||
}
|
||||
|
||||
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.isBlockOpaqueCube(var2, var3 + 1, var4)) {
|
||||
var11 = (double)(var3 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 1 && !var1.isBlockOpaqueCube(var2, var3 - 1, var4)) {
|
||||
var11 = (double)(var3 + 0) - var6;
|
||||
}
|
||||
|
||||
if(var8 == 2 && !var1.isBlockOpaqueCube(var2, var3, var4 + 1)) {
|
||||
var13 = (double)(var4 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 3 && !var1.isBlockOpaqueCube(var2, var3, var4 - 1)) {
|
||||
var13 = (double)(var4 + 0) - var6;
|
||||
}
|
||||
|
||||
if(var8 == 4 && !var1.isBlockOpaqueCube(var2 + 1, var3, var4)) {
|
||||
var9 = (double)(var2 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 5 && !var1.isBlockOpaqueCube(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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
135
src/net/minecraft/src/BlockRedstoneRepeater.java
Normal file
135
src/net/minecraft/src/BlockRedstoneRepeater.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRedstoneRepeater extends Block {
|
||||
public static final double[] field_22014_a = new double[]{-0.0625D, 1.0D / 16.0D, 0.1875D, 0.3125D};
|
||||
private static final int[] field_22013_b = new int[]{1, 2, 3, 4};
|
||||
private final boolean field_22015_c;
|
||||
|
||||
protected BlockRedstoneRepeater(int var1, boolean var2) {
|
||||
super(var1, 6, Material.circuits);
|
||||
this.field_22015_c = var2;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return !var1.isBlockNormalCube(var2, var3 - 1, var4) ? false : super.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return !var1.isBlockNormalCube(var2, var3 - 1, var4) ? false : super.canBlockStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
if(this.field_22015_c && !var7) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.redstoneRepeaterIdle.blockID, var6);
|
||||
} else if(!this.field_22015_c) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.redstoneRepeaterActive.blockID, var6);
|
||||
if(!var7) {
|
||||
int var8 = (var6 & 12) >> 2;
|
||||
var1.scheduleUpdateTick(var2, var3, var4, Block.redstoneRepeaterActive.blockID, field_22013_b[var8] * 2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 0 ? (this.field_22015_c ? 99 : 115) : (var1 == 1 ? (this.field_22015_c ? 147 : 131) : 5);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.getBlockTextureFromSideAndMetadata(var1, 0);
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return this.isPoweringTo(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.field_22015_c) {
|
||||
return false;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 3;
|
||||
return var6 == 0 && var5 == 3 ? true : (var6 == 1 && var5 == 4 ? true : (var6 == 2 && var5 == 2 ? true : var6 == 3 && var5 == 5));
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
int var8 = (var6 & 12) >> 2;
|
||||
if(this.field_22015_c && !var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, field_22013_b[var8] * 2);
|
||||
} else if(!this.field_22015_c && var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, field_22013_b[var8] * 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_22012_g(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var5 & 3;
|
||||
switch(var6) {
|
||||
case 0:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) || var1.getBlockId(var2, var3, var4 + 1) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2, var3, var4 + 1) > 0;
|
||||
case 1:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) || var1.getBlockId(var2 - 1, var3, var4) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2 - 1, var3, var4) > 0;
|
||||
case 2:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) || var1.getBlockId(var2, var3, var4 - 1) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2, var3, var4 - 1) > 0;
|
||||
case 3:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5) || var1.getBlockId(var2 + 1, var3, var4) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2 + 1, var3, var4) > 0;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = (var6 & 12) >> 2;
|
||||
var7 = var7 + 1 << 2 & 12;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 | var6 & 3);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return false;
|
||||
}
|
||||
|
||||
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) + 2) % 4;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
if(var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
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 boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.redstoneRepeater.shiftedIndex;
|
||||
}
|
||||
}
|
||||
130
src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
130
src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
@@ -0,0 +1,130 @@
|
||||
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();
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? Block.redstoneWire.getBlockTextureFromSideAndMetadata(var1, var2) : super.getBlockTextureFromSideAndMetadata(var1, var2);
|
||||
}
|
||||
|
||||
private boolean checkForBurnout(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(var5) {
|
||||
torchUpdates.add(new RedstoneUpdateInfo(var2, var3, var4, var1.getWorldTime()));
|
||||
}
|
||||
|
||||
int var6 = 0;
|
||||
|
||||
for(int var7 = 0; var7 < torchUpdates.size(); ++var7) {
|
||||
RedstoneUpdateInfo var8 = (RedstoneUpdateInfo)torchUpdates.get(var7);
|
||||
if(var8.x == var2 && var8.y == var3 && var8.z == 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_30003_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_30003_g(var1, var2, var3, var4);
|
||||
|
||||
while(torchUpdates.size() > 0 && var1.getWorldTime() - ((RedstoneUpdateInfo)torchUpdates.get(0)).updateTime > 100L) {
|
||||
torchUpdates.remove(0);
|
||||
}
|
||||
|
||||
if(this.torchActive) {
|
||||
if(var6) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.torchRedstoneIdle.blockID, var1.getBlockMetadata(var2, var3, var4));
|
||||
if(this.checkForBurnout(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.checkForBurnout(var1, var2, var3, var4, false)) {
|
||||
var1.setBlockAndMetadataWithNotify(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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
336
src/net/minecraft/src/BlockRedstoneWire.java
Normal file
336
src/net/minecraft/src/BlockRedstoneWire.java
Normal file
@@ -0,0 +1,336 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class BlockRedstoneWire extends Block {
|
||||
private boolean wiresProvidePower = true;
|
||||
private Set field_21032_b = new HashSet();
|
||||
|
||||
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 int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
private void updateAndPropagateCurrentStrength(World var1, int var2, int var3, int var4) {
|
||||
this.func_21031_a(var1, var2, var3, var4, var2, var3, var4);
|
||||
ArrayList var5 = new ArrayList(this.field_21032_b);
|
||||
this.field_21032_b.clear();
|
||||
|
||||
for(int var6 = 0; var6 < var5.size(); ++var6) {
|
||||
ChunkPosition var7 = (ChunkPosition)var5.get(var6);
|
||||
var1.notifyBlocksOfNeighborChange(var7.x, var7.y, var7.z, this.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_21031_a(World var1, int var2, int var3, int var4, int var5, int var6, int var7) {
|
||||
int var8 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var9 = 0;
|
||||
this.wiresProvidePower = false;
|
||||
boolean var10 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4);
|
||||
this.wiresProvidePower = true;
|
||||
int var11;
|
||||
int var12;
|
||||
int var13;
|
||||
if(var10) {
|
||||
var9 = 15;
|
||||
} else {
|
||||
for(var11 = 0; var11 < 4; ++var11) {
|
||||
var12 = var2;
|
||||
var13 = var4;
|
||||
if(var11 == 0) {
|
||||
var12 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 1) {
|
||||
++var12;
|
||||
}
|
||||
|
||||
if(var11 == 2) {
|
||||
var13 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 3) {
|
||||
++var13;
|
||||
}
|
||||
|
||||
if(var12 != var5 || var3 != var6 || var13 != var7) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3, var13, var9);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var12, var3, var13) && !var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
if(var12 != var5 || var3 + 1 != var6 || var13 != var7) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3 + 1, var13, var9);
|
||||
}
|
||||
} else if(!var1.isBlockNormalCube(var12, var3, var13) && (var12 != var5 || var3 - 1 != var6 || var13 != var7)) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3 - 1, var13, var9);
|
||||
}
|
||||
}
|
||||
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
} else {
|
||||
var9 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(var8 != var9) {
|
||||
var1.editingBlocks = true;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.editingBlocks = false;
|
||||
|
||||
for(var11 = 0; var11 < 4; ++var11) {
|
||||
var12 = var2;
|
||||
var13 = var4;
|
||||
int var14 = var3 - 1;
|
||||
if(var11 == 0) {
|
||||
var12 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 1) {
|
||||
++var12;
|
||||
}
|
||||
|
||||
if(var11 == 2) {
|
||||
var13 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 3) {
|
||||
++var13;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var12, var3, var13)) {
|
||||
var14 += 2;
|
||||
}
|
||||
|
||||
boolean var15 = false;
|
||||
int var16 = this.getMaxCurrentStrength(var1, var12, var3, var13, -1);
|
||||
var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
}
|
||||
|
||||
if(var16 >= 0 && var16 != var9) {
|
||||
this.func_21031_a(var1, var12, var3, var13, var2, var3, var4);
|
||||
}
|
||||
|
||||
var16 = this.getMaxCurrentStrength(var1, var12, var14, var13, -1);
|
||||
var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
}
|
||||
|
||||
if(var16 >= 0 && var16 != var9) {
|
||||
this.func_21031_a(var1, var12, var14, var13, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
if(var8 == 0 || var9 == 0) {
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2 - 1, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2 + 1, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3 - 1, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3 + 1, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4 - 1));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4 + 1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void notifyWireNeighborsOfNeighborChange(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.singleplayerWorld) {
|
||||
this.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 - 1);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 + 1);
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 - 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 - 1);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 + 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(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.singleplayerWorld) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
this.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 - 1);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 + 1);
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 - 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 - 1);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 + 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 + 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private int getMaxCurrentStrength(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.singleplayerWorld) {
|
||||
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.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.redstone.shiftedIndex;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return !this.wiresProvidePower ? false : this.isPoweringTo(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.wiresProvidePower) {
|
||||
return false;
|
||||
} else if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
return false;
|
||||
} else if(var5 == 1) {
|
||||
return true;
|
||||
} else {
|
||||
boolean var6 = isPowerProviderOrWire(var1, var2 - 1, var3, var4, 1) || !var1.isBlockNormalCube(var2 - 1, var3, var4) && isPowerProviderOrWire(var1, var2 - 1, var3 - 1, var4, -1);
|
||||
boolean var7 = isPowerProviderOrWire(var1, var2 + 1, var3, var4, 3) || !var1.isBlockNormalCube(var2 + 1, var3, var4) && isPowerProviderOrWire(var1, var2 + 1, var3 - 1, var4, -1);
|
||||
boolean var8 = isPowerProviderOrWire(var1, var2, var3, var4 - 1, 2) || !var1.isBlockNormalCube(var2, var3, var4 - 1) && isPowerProviderOrWire(var1, var2, var3 - 1, var4 - 1, -1);
|
||||
boolean var9 = isPowerProviderOrWire(var1, var2, var3, var4 + 1, 0) || !var1.isBlockNormalCube(var2, var3, var4 + 1) && isPowerProviderOrWire(var1, var2, var3 - 1, var4 + 1, -1);
|
||||
if(!var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4) && isPowerProviderOrWire(var1, var2 - 1, var3 + 1, var4, -1)) {
|
||||
var6 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4) && isPowerProviderOrWire(var1, var2 + 1, var3 + 1, var4, -1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1) && isPowerProviderOrWire(var1, var2, var3 + 1, var4 - 1, -1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1) && isPowerProviderOrWire(var1, var2, var3 + 1, var4 + 1, -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.wiresProvidePower;
|
||||
}
|
||||
|
||||
public static boolean isPowerProviderOrWire(IBlockAccess var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var0.getBlockId(var1, var2, var3);
|
||||
if(var5 == Block.redstoneWire.blockID) {
|
||||
return true;
|
||||
} else if(var5 == 0) {
|
||||
return false;
|
||||
} else if(Block.blocksList[var5].canProvidePower()) {
|
||||
return true;
|
||||
} else if(var5 != Block.redstoneRepeaterIdle.blockID && var5 != Block.redstoneRepeaterActive.blockID) {
|
||||
return false;
|
||||
} else {
|
||||
int var6 = var0.getBlockMetadata(var1, var2, var3);
|
||||
return var4 == ModelBed.field_22153_b[var6 & 3];
|
||||
}
|
||||
}
|
||||
}
|
||||
69
src/net/minecraft/src/BlockReed.java
Normal file
69
src/net/minecraft/src/BlockReed.java
Normal file
@@ -0,0 +1,69 @@
|
||||
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.isAirBlock(var2, var3 + 1, var4)) {
|
||||
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.checkBlockCoordValid(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
protected final void checkBlockCoordValid(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.shiftedIndex;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
60
src/net/minecraft/src/BlockSand.java
Normal file
60
src/net/minecraft/src/BlockSand.java
Normal file
@@ -0,0 +1,60 @@
|
||||
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.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
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) {
|
||||
byte var8 = 32;
|
||||
if(!fallInstantly && var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
|
||||
EntityFallingSand var9 = new EntityFallingSand(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), this.blockID);
|
||||
var1.entityJoinedWorld(var9);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
|
||||
while(canFallBelow(var1, var2, var3 - 1, var4) && var3 > 0) {
|
||||
--var3;
|
||||
}
|
||||
|
||||
if(var3 > 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
src/net/minecraft/src/BlockSandStone.java
Normal file
11
src/net/minecraft/src/BlockSandStone.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockSandStone extends Block {
|
||||
public BlockSandStone(int var1) {
|
||||
super(var1, 192, Material.rock);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture);
|
||||
}
|
||||
}
|
||||
56
src/net/minecraft/src/BlockSapling.java
Normal file
56
src/net/minecraft/src/BlockSapling.java
Normal file
@@ -0,0 +1,56 @@
|
||||
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) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
super.updateTick(var1, var2, var3, var4, var5);
|
||||
if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9 && var5.nextInt(30) == 0) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 | 8);
|
||||
} else {
|
||||
this.growTree(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
var2 &= 3;
|
||||
return var2 == 1 ? 63 : (var2 == 2 ? 79 : super.getBlockTextureFromSideAndMetadata(var1, var2));
|
||||
}
|
||||
|
||||
public void growTree(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 3;
|
||||
var1.setBlock(var2, var3, var4, 0);
|
||||
Object var7 = null;
|
||||
if(var6 == 1) {
|
||||
var7 = new WorldGenTaiga2();
|
||||
} else if(var6 == 2) {
|
||||
var7 = new WorldGenForest();
|
||||
} else {
|
||||
var7 = new WorldGenTrees();
|
||||
if(var5.nextInt(10) == 0) {
|
||||
var7 = new WorldGenBigTree();
|
||||
}
|
||||
}
|
||||
|
||||
if(!((WorldGenerator)var7).generate(var1, var5, var2, var3, var4)) {
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1 & 3;
|
||||
}
|
||||
}
|
||||
104
src/net/minecraft/src/BlockSign.java
Normal file
104
src/net/minecraft/src/BlockSign.java
Normal file
@@ -0,0 +1,104 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSign extends BlockContainer {
|
||||
private Class signEntityClass;
|
||||
private boolean isFreestanding;
|
||||
|
||||
protected BlockSign(int var1, Class var2, boolean var3) {
|
||||
super(var1, Material.wood);
|
||||
this.isFreestanding = var3;
|
||||
this.blockIndexInTexture = 4;
|
||||
this.signEntityClass = 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.isFreestanding) {
|
||||
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 isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
try {
|
||||
return (TileEntity)this.signEntityClass.newInstance();
|
||||
} catch (Exception var2) {
|
||||
throw new RuntimeException(var2);
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.sign.shiftedIndex;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
boolean var6 = false;
|
||||
if(this.isFreestanding) {
|
||||
if(!var1.getBlockMaterial(var2, var3 - 1, var4).isSolid()) {
|
||||
var6 = true;
|
||||
}
|
||||
} else {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var6 = true;
|
||||
if(var7 == 2 && var1.getBlockMaterial(var2, var3, var4 + 1).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 3 && var1.getBlockMaterial(var2, var3, var4 - 1).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 4 && var1.getBlockMaterial(var2 + 1, var3, var4).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 5 && var1.getBlockMaterial(var2 - 1, var3, var4).isSolid()) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
78
src/net/minecraft/src/BlockSnow.java
Normal file
78
src/net/minecraft/src/BlockSnow.java
Normal file
@@ -0,0 +1,78 @@
|
||||
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) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
return var5 >= 3 ? AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)((float)var3 + 0.5F), (double)var4 + this.maxZ) : null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
float var6 = (float)(2 * (1 + var5)) / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, var6, 1.0F);
|
||||
}
|
||||
|
||||
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].isOpaqueCube() ? var1.getBlockMaterial(var2, var3 - 1, var4).getIsSolid() : 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 harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
int var7 = Item.snowball.shiftedIndex;
|
||||
float var8 = 0.7F;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var13 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
EntityItem var15 = new EntityItem(var1, (double)var3 + var9, (double)var4 + var11, (double)var5 + var13, new ItemStack(var7, 1, 0));
|
||||
var15.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var15);
|
||||
var1.setBlockWithNotify(var3, var4, var5, 0);
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.snowball.shiftedIndex;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
26
src/net/minecraft/src/BlockSnowBlock.java
Normal file
26
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.shiftedIndex;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockSoulSand.java
Normal file
17
src/net/minecraft/src/BlockSoulSand.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockSoulSand extends Block {
|
||||
public BlockSoulSand(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;
|
||||
}
|
||||
}
|
||||
35
src/net/minecraft/src/BlockSponge.java
Normal file
35
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
157
src/net/minecraft/src/BlockStairs.java
Normal file
157
src/net/minecraft/src/BlockStairs.java
Normal file
@@ -0,0 +1,157 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStairs extends Block {
|
||||
private Block modelBlock;
|
||||
|
||||
protected BlockStairs(int var1, Block var2) {
|
||||
super(var1, var2.blockIndexInTexture, var2.blockMaterial);
|
||||
this.modelBlock = var2;
|
||||
this.setHardness(var2.blockHardness);
|
||||
this.setResistance(var2.blockResistance / 3.0F);
|
||||
this.setStepSound(var2.stepSound);
|
||||
this.setLightOpacity(255);
|
||||
}
|
||||
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
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.modelBlock.onBlockClicked(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.modelBlock.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public float getExplosionResistance(Entity var1) {
|
||||
return this.modelBlock.getExplosionResistance(var1);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return this.modelBlock.idDropped(var1, var2);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.modelBlock.quantityDropped(var1);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.modelBlock.getBlockTextureFromSideAndMetadata(var1, var2);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.modelBlock.getBlockTextureFromSide(var1);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return this.modelBlock.tickRate();
|
||||
}
|
||||
|
||||
public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) {
|
||||
this.modelBlock.velocityToAddToEntity(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public boolean isCollidable() {
|
||||
return this.modelBlock.isCollidable();
|
||||
}
|
||||
|
||||
public boolean canCollideCheck(int var1, boolean var2) {
|
||||
return this.modelBlock.canCollideCheck(var1, var2);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return this.modelBlock.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
this.onNeighborBlockChange(var1, var2, var3, var4, 0);
|
||||
this.modelBlock.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
this.modelBlock.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
this.modelBlock.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
this.modelBlock.onEntityWalking(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
this.modelBlock.updateTick(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return this.modelBlock.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) {
|
||||
this.modelBlock.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
src/net/minecraft/src/BlockStationary.java
Normal file
57
src/net/minecraft/src/BlockStationary.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStationary extends BlockFluid {
|
||||
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_30005_i(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_30005_i(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var1.editingBlocks = true;
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID - 1, var5);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID - 1, this.tickRate());
|
||||
var1.editingBlocks = 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.getIsSolid()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean func_4033_j(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockMaterial(var2, var3, var4).getBurning();
|
||||
}
|
||||
}
|
||||
63
src/net/minecraft/src/BlockStep.java
Normal file
63
src/net/minecraft/src/BlockStep.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStep extends Block {
|
||||
public static final String[] field_22027_a = new String[]{"stone", "sand", "wood", "cobble"};
|
||||
private boolean blockType;
|
||||
|
||||
public BlockStep(int var1, boolean var2) {
|
||||
super(var1, 6, Material.rock);
|
||||
this.blockType = var2;
|
||||
if(!var2) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
}
|
||||
|
||||
this.setLightOpacity(255);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var2 == 0 ? (var1 <= 1 ? 6 : 5) : (var2 == 1 ? (var1 == 0 ? 208 : (var1 == 1 ? 176 : 192)) : (var2 == 2 ? 4 : (var2 == 3 ? 16 : 6)));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.getBlockTextureFromSideAndMetadata(var1, 0);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return this.blockType;
|
||||
}
|
||||
|
||||
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);
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var1.getBlockMetadata(var2, var3 - 1, var4);
|
||||
if(var6 == var7) {
|
||||
if(var5 == stairSingle.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, Block.stairDouble.blockID, var6);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.stairSingle.blockID;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.blockType ? 2 : 1;
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return this.blockType;
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockStone.java
Normal file
13
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;
|
||||
}
|
||||
}
|
||||
65
src/net/minecraft/src/BlockTNT.java
Normal file
65
src/net/minecraft/src/BlockTNT.java
Normal file
@@ -0,0 +1,65 @@
|
||||
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 onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) {
|
||||
this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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, 1);
|
||||
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.singleplayerWorld) {
|
||||
if((var5 & 1) == 0) {
|
||||
this.dropBlockAsItem_do(var1, var2, var3, var4, new ItemStack(Block.tnt.blockID, 1, 0));
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var5.getCurrentEquippedItem() != null && var5.getCurrentEquippedItem().itemID == Item.flintAndSteel.shiftedIndex) {
|
||||
var1.setBlockMetadata(var2, var3, var4, 1);
|
||||
}
|
||||
|
||||
super.onBlockClicked(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return super.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
19
src/net/minecraft/src/BlockTallGrass.java
Normal file
19
src/net/minecraft/src/BlockTallGrass.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockTallGrass extends BlockFlower {
|
||||
protected BlockTallGrass(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.4F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var2 == 1 ? this.blockIndexInTexture : (var2 == 2 ? this.blockIndexInTexture + 16 + 1 : (var2 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return var2.nextInt(8) == 0 ? Item.seeds.shiftedIndex : -1;
|
||||
}
|
||||
}
|
||||
140
src/net/minecraft/src/BlockTorch.java
Normal file
140
src/net/minecraft/src/BlockTorch.java
Normal file
@@ -0,0 +1,140 @@
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean func_31028_g(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3, var4) || var1.getBlockId(var2, var3, var4) == Block.fence.blockID;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : this.func_31028_g(var1, 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 && this.func_31028_g(var1, var2, var3 - 1, var4)) {
|
||||
var6 = 5;
|
||||
}
|
||||
|
||||
if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5 && var1.isBlockNormalCube(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.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
} else if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
|
||||
} else if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
|
||||
} else if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 4);
|
||||
} else if(this.func_31028_g(var1, var2, var3 - 1, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 5);
|
||||
}
|
||||
|
||||
this.dropTorchIfCantStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.dropTorchIfCantStay(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = false;
|
||||
if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!this.func_31028_g(var1, 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 dropTorchIfCantStay(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);
|
||||
}
|
||||
}
|
||||
169
src/net/minecraft/src/BlockTrapDoor.java
Normal file
169
src/net/minecraft/src/BlockTrapDoor.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockTrapDoor extends Block {
|
||||
protected BlockTrapDoor(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
this.blockIndexInTexture = 84;
|
||||
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 isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
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_28039_c(var1.getBlockMetadata(var2, var3, var4));
|
||||
}
|
||||
|
||||
public void func_28039_c(int var1) {
|
||||
float var2 = 3.0F / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, var2, 1.0F);
|
||||
if(func_28038_d(var1)) {
|
||||
if((var1 & 3) == 0) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 1) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 2) {
|
||||
this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 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);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.func_28101_a(var5, 1003, var2, var3, var4, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void func_28040_a(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = (var6 & 4) > 0;
|
||||
if(var7 != var5) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.func_28101_a((EntityPlayer)null, 1003, var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var2;
|
||||
int var8 = var4;
|
||||
if((var6 & 3) == 0) {
|
||||
var8 = var4 + 1;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 1) {
|
||||
--var8;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 2) {
|
||||
var7 = var2 + 1;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 3) {
|
||||
--var7;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var7, var3, var8)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var9 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4);
|
||||
this.func_28040_a(var1, var2, var3, var4, var9);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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 onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
byte var6 = 0;
|
||||
if(var5 == 2) {
|
||||
var6 = 0;
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 == 0) {
|
||||
return false;
|
||||
} else if(var5 == 1) {
|
||||
return false;
|
||||
} else {
|
||||
if(var5 == 2) {
|
||||
++var4;
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
--var4;
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
++var2;
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
--var2;
|
||||
}
|
||||
|
||||
return var1.isBlockNormalCube(var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean func_28038_d(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
}
|
||||
29
src/net/minecraft/src/BlockWeb.java
Normal file
29
src/net/minecraft/src/BlockWeb.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockWeb extends Block {
|
||||
public BlockWeb(int var1, int var2) {
|
||||
super(var1, var2, Material.web);
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
var5.field_27012_bb = true;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.silk.shiftedIndex;
|
||||
}
|
||||
}
|
||||
21
src/net/minecraft/src/BlockWorkbench.java
Normal file
21
src/net/minecraft/src/BlockWorkbench.java
Normal file
@@ -0,0 +1,21 @@
|
||||
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) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
var5.displayWorkbenchGUI(var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
33
src/net/minecraft/src/ChatAllowedCharacters.java
Normal file
33
src/net/minecraft/src/ChatAllowedCharacters.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
public class ChatAllowedCharacters {
|
||||
public static final String allowedCharacters = getAllowedCharacters();
|
||||
public static final char[] field_22175_b = new char[]{'/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':'};
|
||||
|
||||
private static String getAllowedCharacters() {
|
||||
String var0 = "";
|
||||
|
||||
try {
|
||||
BufferedReader var1 = new BufferedReader(new InputStreamReader(ChatAllowedCharacters.class.getResourceAsStream("/font.txt"), "UTF-8"));
|
||||
String var2 = "";
|
||||
|
||||
while(true) {
|
||||
var2 = var1.readLine();
|
||||
if(var2 == null) {
|
||||
var1.close();
|
||||
break;
|
||||
}
|
||||
|
||||
if(!var2.startsWith("#")) {
|
||||
var0 = var0 + var2;
|
||||
}
|
||||
}
|
||||
} catch (Exception var3) {
|
||||
}
|
||||
|
||||
return var0;
|
||||
}
|
||||
}
|
||||
597
src/net/minecraft/src/Chunk.java
Normal file
597
src/net/minecraft/src/Chunk.java
Normal file
@@ -0,0 +1,597 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
public class Chunk {
|
||||
public static boolean isLit;
|
||||
public byte[] blocks;
|
||||
public boolean isChunkLoaded;
|
||||
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 chunkTileEntityMap;
|
||||
public List[] entities;
|
||||
public boolean isTerrainPopulated;
|
||||
public boolean isModified;
|
||||
public boolean neverSave;
|
||||
public boolean hasEntities;
|
||||
public long lastSaveTime;
|
||||
|
||||
public Chunk(World var1, int var2, int var3) {
|
||||
this.chunkTileEntityMap = new HashMap();
|
||||
this.entities = new List[8];
|
||||
this.isTerrainPopulated = false;
|
||||
this.isModified = false;
|
||||
this.hasEntities = false;
|
||||
this.lastSaveTime = 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 isAtLocation(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) {
|
||||
int var4 = 127;
|
||||
|
||||
int var5;
|
||||
for(var5 = var2 << 11 | var3 << 7; var4 > 0 && Block.lightOpacity[this.blocks[var5 + var4 - 1] & 255] == 0; --var4) {
|
||||
}
|
||||
|
||||
this.heightMap[var3 << 4 | var2] = (byte)var4;
|
||||
if(var4 < var1) {
|
||||
var1 = var4;
|
||||
}
|
||||
|
||||
if(!this.worldObj.worldProvider.field_4306_c) {
|
||||
int var6 = 15;
|
||||
int var7 = 127;
|
||||
|
||||
do {
|
||||
var6 -= Block.lightOpacity[this.blocks[var5 + var7] & 255];
|
||||
if(var6 > 0) {
|
||||
this.skylightMap.setNibble(var2, var7, var3, var6);
|
||||
}
|
||||
|
||||
--var7;
|
||||
} while(var7 > 0 && var6 > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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() {
|
||||
}
|
||||
|
||||
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.scheduleLightingUpdate(EnumSkyBlock.Sky, var1, var3, var2, var1, var4, var2);
|
||||
this.isModified = true;
|
||||
} else if(var4 < var3) {
|
||||
this.worldObj.scheduleLightingUpdate(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] & 255] == 0; --var5) {
|
||||
}
|
||||
|
||||
if(var5 != var4) {
|
||||
this.worldObj.markBlocksDirtyVertical(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.scheduleLightingUpdate(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.scheduleLightingUpdate(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] & 255;
|
||||
}
|
||||
|
||||
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] = (byte)(var6 & 255);
|
||||
if(var8 != 0 && !this.worldObj.singleplayerWorld) {
|
||||
Block.blocksList[var8].onBlockRemoval(this.worldObj, var9, var2, var10);
|
||||
}
|
||||
|
||||
this.data.setNibble(var1, var2, var3, var5);
|
||||
if(!this.worldObj.worldProvider.field_4306_c) {
|
||||
if(Block.lightOpacity[var6 & 255] != 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.scheduleLightingUpdate(EnumSkyBlock.Sky, var9, var2, var10, var9, var2, var10);
|
||||
}
|
||||
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var9, var2, var10, var9, var2, var10);
|
||||
this.func_333_c(var1, var3);
|
||||
this.data.setNibble(var1, var2, var3, var5);
|
||||
if(var4 != 0) {
|
||||
Block.blocksList[var4].onBlockAdded(this.worldObj, var9, var2, var10);
|
||||
}
|
||||
|
||||
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] = (byte)(var5 & 255);
|
||||
if(var7 != 0) {
|
||||
Block.blocksList[var7].onBlockRemoval(this.worldObj, var8, var2, var9);
|
||||
}
|
||||
|
||||
this.data.setNibble(var1, var2, var3, 0);
|
||||
if(Block.lightOpacity[var5 & 255] != 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.scheduleLightingUpdate(EnumSkyBlock.Sky, var8, var2, var9, var8, var2, var9);
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var8, var2, var9, var8, var2, var9);
|
||||
this.func_333_c(var1, var3);
|
||||
if(var4 != 0 && !this.worldObj.singleplayerWorld) {
|
||||
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) {
|
||||
isLit = true;
|
||||
}
|
||||
|
||||
var5 -= var4;
|
||||
int var6 = this.blocklightMap.getNibble(var1, var2, var3);
|
||||
if(var6 > var5) {
|
||||
var5 = var6;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
|
||||
public void addEntity(Entity var1) {
|
||||
this.hasEntities = 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.addedToChunk = true;
|
||||
var1.chunkCoordX = this.xPosition;
|
||||
var1.chunkCoordY = var4;
|
||||
var1.chunkCoordZ = this.zPosition;
|
||||
this.entities[var4].add(var1);
|
||||
}
|
||||
|
||||
public void removeEntity(Entity var1) {
|
||||
this.removeEntityAtIndex(var1, var1.chunkCoordY);
|
||||
}
|
||||
|
||||
public void removeEntityAtIndex(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 getChunkBlockTileEntity(int var1, int var2, int var3) {
|
||||
ChunkPosition var4 = new ChunkPosition(var1, var2, var3);
|
||||
TileEntity var5 = (TileEntity)this.chunkTileEntityMap.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.chunkTileEntityMap.get(var4);
|
||||
}
|
||||
|
||||
if(var5 != null && var5.isInvalid()) {
|
||||
this.chunkTileEntityMap.remove(var4);
|
||||
return null;
|
||||
} else {
|
||||
return var5;
|
||||
}
|
||||
}
|
||||
|
||||
public void addTileEntity(TileEntity var1) {
|
||||
int var2 = var1.xCoord - this.xPosition * 16;
|
||||
int var3 = var1.yCoord;
|
||||
int var4 = var1.zCoord - this.zPosition * 16;
|
||||
this.setChunkBlockTileEntity(var2, var3, var4, var1);
|
||||
if(this.isChunkLoaded) {
|
||||
this.worldObj.loadedTileEntityList.add(var1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setChunkBlockTileEntity(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) {
|
||||
var4.validate();
|
||||
this.chunkTileEntityMap.put(var5, var4);
|
||||
} else {
|
||||
System.out.println("Attempted to place a tile entity where there was no entity tile!");
|
||||
}
|
||||
}
|
||||
|
||||
public void removeChunkBlockTileEntity(int var1, int var2, int var3) {
|
||||
ChunkPosition var4 = new ChunkPosition(var1, var2, var3);
|
||||
if(this.isChunkLoaded) {
|
||||
TileEntity var5 = (TileEntity)this.chunkTileEntityMap.remove(var4);
|
||||
if(var5 != null) {
|
||||
var5.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onChunkLoad() {
|
||||
this.isChunkLoaded = true;
|
||||
this.worldObj.func_31047_a(this.chunkTileEntityMap.values());
|
||||
|
||||
for(int var1 = 0; var1 < this.entities.length; ++var1) {
|
||||
this.worldObj.addLoadedEntities(this.entities[var1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onChunkUnload() {
|
||||
this.isChunkLoaded = false;
|
||||
Iterator var1 = this.chunkTileEntityMap.values().iterator();
|
||||
|
||||
while(var1.hasNext()) {
|
||||
TileEntity var2 = (TileEntity)var1.next();
|
||||
var2.invalidate();
|
||||
}
|
||||
|
||||
for(int var3 = 0; var3 < this.entities.length; ++var3) {
|
||||
this.worldObj.addUnloadedEntities(this.entities[var3]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setChunkModified() {
|
||||
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 needsSaving(boolean var1) {
|
||||
if(this.neverSave) {
|
||||
return false;
|
||||
} else {
|
||||
if(var1) {
|
||||
if(this.hasEntities && this.worldObj.getWorldTime() != this.lastSaveTime) {
|
||||
return true;
|
||||
}
|
||||
} else if(this.hasEntities && this.worldObj.getWorldTime() >= this.lastSaveTime + 600L) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return this.isModified;
|
||||
}
|
||||
}
|
||||
|
||||
public int getChunkData(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
|
||||
int var9 = var5 - var2;
|
||||
int var10 = var6 - var3;
|
||||
int var11 = var7 - var4;
|
||||
if(var9 * var10 * var11 == this.blocks.length) {
|
||||
System.arraycopy(this.blocks, 0, var1, var8, this.blocks.length);
|
||||
var8 += this.blocks.length;
|
||||
System.arraycopy(this.data.data, 0, var1, var8, this.data.data.length);
|
||||
var8 += this.data.data.length;
|
||||
System.arraycopy(this.blocklightMap.data, 0, var1, var8, this.blocklightMap.data.length);
|
||||
var8 += this.blocklightMap.data.length;
|
||||
System.arraycopy(this.skylightMap.data, 0, var1, var8, this.skylightMap.data.length);
|
||||
var8 += this.skylightMap.data.length;
|
||||
return var8;
|
||||
} else {
|
||||
int var12;
|
||||
int var13;
|
||||
int var14;
|
||||
int var15;
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = var12 << 11 | var13 << 7 | var3;
|
||||
var15 = var6 - var3;
|
||||
System.arraycopy(this.blocks, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.data.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.blocklightMap.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.skylightMap.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
return var8;
|
||||
}
|
||||
}
|
||||
|
||||
public Random func_334_a(long var1) {
|
||||
return new Random(this.worldObj.getRandomSeed() + (long)(this.xPosition * this.xPosition * 4987142) + (long)(this.xPosition * 5947611) + (long)(this.zPosition * this.zPosition) * 4392871L + (long)(this.zPosition * 389711) ^ var1);
|
||||
}
|
||||
|
||||
public boolean func_21101_g() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void func_25083_h() {
|
||||
ChunkBlockMap.func_26001_a(this.blocks);
|
||||
}
|
||||
}
|
||||
28
src/net/minecraft/src/ChunkBlockMap.java
Normal file
28
src/net/minecraft/src/ChunkBlockMap.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkBlockMap {
|
||||
private static byte[] field_26002_a = new byte[256];
|
||||
|
||||
public static void func_26001_a(byte[] var0) {
|
||||
for(int var1 = 0; var1 < var0.length; ++var1) {
|
||||
var0[var1] = field_26002_a[var0[var1] & 255];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
try {
|
||||
for(int var0 = 0; var0 < 256; ++var0) {
|
||||
byte var1 = (byte)var0;
|
||||
if(var1 != 0 && Block.blocksList[var1 & 255] == null) {
|
||||
var1 = 0;
|
||||
}
|
||||
|
||||
field_26002_a[var0] = var1;
|
||||
}
|
||||
} catch (Exception var2) {
|
||||
var2.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
69
src/net/minecraft/src/ChunkCache.java
Normal file
69
src/net/minecraft/src/ChunkCache.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCache implements IBlockAccess {
|
||||
private int chunkX;
|
||||
private int chunkZ;
|
||||
private Chunk[][] chunkArray;
|
||||
private World worldObj;
|
||||
|
||||
public ChunkCache(World var1, int var2, int var3, int var4, int var5, int var6, int var7) {
|
||||
this.worldObj = var1;
|
||||
this.chunkX = var2 >> 4;
|
||||
this.chunkZ = var4 >> 4;
|
||||
int var8 = var5 >> 4;
|
||||
int var9 = var7 >> 4;
|
||||
this.chunkArray = new Chunk[var8 - this.chunkX + 1][var9 - this.chunkZ + 1];
|
||||
|
||||
for(int var10 = this.chunkX; var10 <= var8; ++var10) {
|
||||
for(int var11 = this.chunkZ; var11 <= var9; ++var11) {
|
||||
this.chunkArray[var10 - this.chunkX][var11 - this.chunkZ] = 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.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
if(var4 >= 0 && var4 < this.chunkArray.length && var5 >= 0 && var5 < this.chunkArray[var4].length) {
|
||||
Chunk var6 = this.chunkArray[var4][var5];
|
||||
return var6 == null ? 0 : var6.getBlockID(var1 & 15, var2, var3 & 15);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TileEntity getBlockTileEntity(int var1, int var2, int var3) {
|
||||
int var4 = (var1 >> 4) - this.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
return this.chunkArray[var4][var5].getChunkBlockTileEntity(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.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
return this.chunkArray[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 isBlockNormalCube(int var1, int var2, int var3) {
|
||||
Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)];
|
||||
return var4 == null ? false : var4.blockMaterial.getIsSolid() && var4.isACube();
|
||||
}
|
||||
}
|
||||
24
src/net/minecraft/src/ChunkCoordIntPair.java
Normal file
24
src/net/minecraft/src/ChunkCoordIntPair.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCoordIntPair {
|
||||
public final int chunkXPos;
|
||||
public final int chunkZPos;
|
||||
|
||||
public ChunkCoordIntPair(int var1, int var2) {
|
||||
this.chunkXPos = var1;
|
||||
this.chunkZPos = var2;
|
||||
}
|
||||
|
||||
public static int chunkXZ2Int(int var0, int var1) {
|
||||
return (var0 < 0 ? Integer.MIN_VALUE : 0) | (var0 & Short.MAX_VALUE) << 16 | (var1 < 0 ? -Short.MIN_VALUE : 0) | var1 & Short.MAX_VALUE;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return chunkXZ2Int(this.chunkXPos, this.chunkZPos);
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
ChunkCoordIntPair var2 = (ChunkCoordIntPair)var1;
|
||||
return var2.chunkXPos == this.chunkXPos && var2.chunkZPos == this.chunkZPos;
|
||||
}
|
||||
}
|
||||
50
src/net/minecraft/src/ChunkCoordinates.java
Normal file
50
src/net/minecraft/src/ChunkCoordinates.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCoordinates implements Comparable {
|
||||
public int posX;
|
||||
public int posY;
|
||||
public int posZ;
|
||||
|
||||
public ChunkCoordinates() {
|
||||
}
|
||||
|
||||
public ChunkCoordinates(int var1, int var2, int var3) {
|
||||
this.posX = var1;
|
||||
this.posY = var2;
|
||||
this.posZ = var3;
|
||||
}
|
||||
|
||||
public ChunkCoordinates(ChunkCoordinates var1) {
|
||||
this.posX = var1.posX;
|
||||
this.posY = var1.posY;
|
||||
this.posZ = var1.posZ;
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
if(!(var1 instanceof ChunkCoordinates)) {
|
||||
return false;
|
||||
} else {
|
||||
ChunkCoordinates var2 = (ChunkCoordinates)var1;
|
||||
return this.posX == var2.posX && this.posY == var2.posY && this.posZ == var2.posZ;
|
||||
}
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return this.posX + this.posZ << 8 + this.posY << 16;
|
||||
}
|
||||
|
||||
public int compareChunkCoordinate(ChunkCoordinates var1) {
|
||||
return this.posY == var1.posY ? (this.posZ == var1.posZ ? this.posX - var1.posX : this.posZ - var1.posZ) : this.posY - var1.posY;
|
||||
}
|
||||
|
||||
public double getSqDistanceTo(int var1, int var2, int var3) {
|
||||
int var4 = this.posX - var1;
|
||||
int var5 = this.posY - var2;
|
||||
int var6 = this.posZ - var3;
|
||||
return Math.sqrt((double)(var4 * var4 + var5 * var5 + var6 * var6));
|
||||
}
|
||||
|
||||
public int compareTo(Object var1) {
|
||||
return this.compareChunkCoordinate((ChunkCoordinates)var1);
|
||||
}
|
||||
}
|
||||
51
src/net/minecraft/src/ChunkFile.java
Normal file
51
src/net/minecraft/src/ChunkFile.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
class ChunkFile implements Comparable {
|
||||
private final File field_22209_a;
|
||||
private final int field_22208_b;
|
||||
private final int field_22210_c;
|
||||
|
||||
public ChunkFile(File var1) {
|
||||
this.field_22209_a = var1;
|
||||
Matcher var2 = ChunkFilePattern.field_22119_a.matcher(var1.getName());
|
||||
if(var2.matches()) {
|
||||
this.field_22208_b = Integer.parseInt(var2.group(1), 36);
|
||||
this.field_22210_c = Integer.parseInt(var2.group(2), 36);
|
||||
} else {
|
||||
this.field_22208_b = 0;
|
||||
this.field_22210_c = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int func_22206_a(ChunkFile var1) {
|
||||
int var2 = this.field_22208_b >> 5;
|
||||
int var3 = var1.field_22208_b >> 5;
|
||||
if(var2 == var3) {
|
||||
int var4 = this.field_22210_c >> 5;
|
||||
int var5 = var1.field_22210_c >> 5;
|
||||
return var4 - var5;
|
||||
} else {
|
||||
return var2 - var3;
|
||||
}
|
||||
}
|
||||
|
||||
public File func_22207_a() {
|
||||
return this.field_22209_a;
|
||||
}
|
||||
|
||||
public int func_22205_b() {
|
||||
return this.field_22208_b;
|
||||
}
|
||||
|
||||
public int func_22204_c() {
|
||||
return this.field_22210_c;
|
||||
}
|
||||
|
||||
public int compareTo(Object var1) {
|
||||
return this.func_22206_a((ChunkFile)var1);
|
||||
}
|
||||
}
|
||||
22
src/net/minecraft/src/ChunkFilePattern.java
Normal file
22
src/net/minecraft/src/ChunkFilePattern.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class ChunkFilePattern implements FilenameFilter {
|
||||
public static final Pattern field_22119_a = Pattern.compile("c\\.(-?[0-9a-z]+)\\.(-?[0-9a-z]+)\\.dat");
|
||||
|
||||
private ChunkFilePattern() {
|
||||
}
|
||||
|
||||
public boolean accept(File var1, String var2) {
|
||||
Matcher var3 = field_22119_a.matcher(var2);
|
||||
return var3.matches();
|
||||
}
|
||||
|
||||
ChunkFilePattern(Empty2 var1) {
|
||||
this();
|
||||
}
|
||||
}
|
||||
26
src/net/minecraft/src/ChunkFolderPattern.java
Normal file
26
src/net/minecraft/src/ChunkFolderPattern.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class ChunkFolderPattern implements FileFilter {
|
||||
public static final Pattern field_22214_a = Pattern.compile("[0-9a-z]|([0-9a-z][0-9a-z])");
|
||||
|
||||
private ChunkFolderPattern() {
|
||||
}
|
||||
|
||||
public boolean accept(File var1) {
|
||||
if(var1.isDirectory()) {
|
||||
Matcher var2 = field_22214_a.matcher(var1.getName());
|
||||
return var2.matches();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
ChunkFolderPattern(Empty2 var1) {
|
||||
this();
|
||||
}
|
||||
}
|
||||
210
src/net/minecraft/src/ChunkLoader.java
Normal file
210
src/net/minecraft/src/ChunkLoader.java
Normal file
@@ -0,0 +1,210 @@
|
||||
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 saveDir;
|
||||
private boolean createIfNecessary;
|
||||
|
||||
public ChunkLoader(File var1, boolean var2) {
|
||||
this.saveDir = var1;
|
||||
this.createIfNecessary = var2;
|
||||
}
|
||||
|
||||
private File chunkFileForXZ(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.saveDir, var4);
|
||||
if(!var6.exists()) {
|
||||
if(!this.createIfNecessary) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var6.mkdir();
|
||||
}
|
||||
|
||||
var6 = new File(var6, var5);
|
||||
if(!var6.exists()) {
|
||||
if(!this.createIfNecessary) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var6.mkdir();
|
||||
}
|
||||
|
||||
var6 = new File(var6, var3);
|
||||
return !var6.exists() && !this.createIfNecessary ? null : var6;
|
||||
}
|
||||
|
||||
public Chunk loadChunk(World var1, int var2, int var3) throws IOException {
|
||||
File var4 = this.chunkFileForXZ(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 = loadChunkIntoWorldFromCompound(var1, var6.getCompoundTag("Level"));
|
||||
if(!var7.isAtLocation(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 = loadChunkIntoWorldFromCompound(var1, var6.getCompoundTag("Level"));
|
||||
}
|
||||
|
||||
var7.func_25083_h();
|
||||
return var7;
|
||||
} catch (Exception var8) {
|
||||
var8.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void saveChunk(World var1, Chunk var2) throws IOException {
|
||||
var1.checkSessionLock();
|
||||
File var3 = this.chunkFileForXZ(var2.xPosition, var2.zPosition);
|
||||
if(var3.exists()) {
|
||||
WorldInfo var4 = var1.getWorldInfo();
|
||||
var4.setSizeOnDisk(var4.getSizeOnDisk() - var3.length());
|
||||
}
|
||||
|
||||
try {
|
||||
File var10 = new File(this.saveDir, "tmp_chunk.dat");
|
||||
FileOutputStream var5 = new FileOutputStream(var10);
|
||||
NBTTagCompound var6 = new NBTTagCompound();
|
||||
NBTTagCompound var7 = new NBTTagCompound();
|
||||
var6.setTag("Level", var7);
|
||||
storeChunkInCompound(var2, var1, var7);
|
||||
CompressedStreamTools.writeGzippedCompoundToOutputStream(var6, var5);
|
||||
var5.close();
|
||||
if(var3.exists()) {
|
||||
var3.delete();
|
||||
}
|
||||
|
||||
var10.renameTo(var3);
|
||||
WorldInfo var8 = var1.getWorldInfo();
|
||||
var8.setSizeOnDisk(var8.getSizeOnDisk() + var3.length());
|
||||
} catch (Exception var9) {
|
||||
var9.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void storeChunkInCompound(Chunk var0, World var1, NBTTagCompound var2) {
|
||||
var1.checkSessionLock();
|
||||
var2.setInteger("xPos", var0.xPosition);
|
||||
var2.setInteger("zPos", var0.zPosition);
|
||||
var2.setLong("LastUpdate", var1.getWorldTime());
|
||||
var2.setByteArray("Blocks", var0.blocks);
|
||||
var2.setByteArray("Data", var0.data.data);
|
||||
var2.setByteArray("SkyLight", var0.skylightMap.data);
|
||||
var2.setByteArray("BlockLight", var0.blocklightMap.data);
|
||||
var2.setByteArray("HeightMap", var0.heightMap);
|
||||
var2.setBoolean("TerrainPopulated", var0.isTerrainPopulated);
|
||||
var0.hasEntities = false;
|
||||
NBTTagList var3 = new NBTTagList();
|
||||
|
||||
Iterator var5;
|
||||
NBTTagCompound var7;
|
||||
for(int var4 = 0; var4 < var0.entities.length; ++var4) {
|
||||
var5 = var0.entities[var4].iterator();
|
||||
|
||||
while(var5.hasNext()) {
|
||||
Entity var6 = (Entity)var5.next();
|
||||
var0.hasEntities = true;
|
||||
var7 = new NBTTagCompound();
|
||||
if(var6.addEntityID(var7)) {
|
||||
var3.setTag(var7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var2.setTag("Entities", var3);
|
||||
NBTTagList var8 = new NBTTagList();
|
||||
var5 = var0.chunkTileEntityMap.values().iterator();
|
||||
|
||||
while(var5.hasNext()) {
|
||||
TileEntity var9 = (TileEntity)var5.next();
|
||||
var7 = new NBTTagCompound();
|
||||
var9.writeToNBT(var7);
|
||||
var8.setTag(var7);
|
||||
}
|
||||
|
||||
var2.setTag("TileEntities", var8);
|
||||
}
|
||||
|
||||
public static Chunk loadChunkIntoWorldFromCompound(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.createEntityFromNBT(var7, var0);
|
||||
var4.hasEntities = 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.addTileEntity(var9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var4;
|
||||
}
|
||||
|
||||
public void func_661_a() {
|
||||
}
|
||||
|
||||
public void saveExtraData() {
|
||||
}
|
||||
|
||||
public void saveExtraChunkData(World var1, Chunk var2) throws IOException {
|
||||
}
|
||||
}
|
||||
26
src/net/minecraft/src/ChunkPosition.java
Normal file
26
src/net/minecraft/src/ChunkPosition.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkPosition {
|
||||
public final int x;
|
||||
public final int y;
|
||||
public final int z;
|
||||
|
||||
public ChunkPosition(int var1, int var2, int var3) {
|
||||
this.x = var1;
|
||||
this.y = var2;
|
||||
this.z = var3;
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
if(!(var1 instanceof ChunkPosition)) {
|
||||
return false;
|
||||
} else {
|
||||
ChunkPosition var2 = (ChunkPosition)var1;
|
||||
return var2.x == this.x && var2.y == this.y && var2.z == this.z;
|
||||
}
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return this.x * 8976890 + this.y * 981131 + this.z;
|
||||
}
|
||||
}
|
||||
184
src/net/minecraft/src/ChunkProvider.java
Normal file
184
src/net/minecraft/src/ChunkProvider.java
Normal file
@@ -0,0 +1,184 @@
|
||||
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 ChunkProvider implements IChunkProvider {
|
||||
private Set field_28062_a = new HashSet();
|
||||
private Chunk field_28061_b;
|
||||
private IChunkProvider chunkGenerator;
|
||||
private IChunkLoader field_28066_d;
|
||||
private Map field_28065_e = new HashMap();
|
||||
private List field_28064_f = new ArrayList();
|
||||
private World worldObj;
|
||||
|
||||
public ChunkProvider(World var1, IChunkLoader var2, IChunkProvider var3) {
|
||||
this.field_28061_b = new EmptyChunk(var1, new byte[-Short.MIN_VALUE], 0, 0);
|
||||
this.worldObj = var1;
|
||||
this.field_28066_d = var2;
|
||||
this.chunkGenerator = var3;
|
||||
}
|
||||
|
||||
public boolean chunkExists(int var1, int var2) {
|
||||
return this.field_28065_e.containsKey(Integer.valueOf(ChunkCoordIntPair.chunkXZ2Int(var1, var2)));
|
||||
}
|
||||
|
||||
public Chunk loadChunk(int var1, int var2) {
|
||||
int var3 = ChunkCoordIntPair.chunkXZ2Int(var1, var2);
|
||||
this.field_28062_a.remove(Integer.valueOf(var3));
|
||||
Chunk var4 = (Chunk)this.field_28065_e.get(Integer.valueOf(var3));
|
||||
if(var4 == null) {
|
||||
var4 = this.func_28058_d(var1, var2);
|
||||
if(var4 == null) {
|
||||
if(this.chunkGenerator == null) {
|
||||
var4 = this.field_28061_b;
|
||||
} else {
|
||||
var4 = this.chunkGenerator.provideChunk(var1, var2);
|
||||
}
|
||||
}
|
||||
|
||||
this.field_28065_e.put(Integer.valueOf(var3), var4);
|
||||
this.field_28064_f.add(var4);
|
||||
if(var4 != null) {
|
||||
var4.func_4053_c();
|
||||
var4.onChunkLoad();
|
||||
}
|
||||
|
||||
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.provideChunk(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.provideChunk(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.provideChunk(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 provideChunk(int var1, int var2) {
|
||||
Chunk var3 = (Chunk)this.field_28065_e.get(Integer.valueOf(ChunkCoordIntPair.chunkXZ2Int(var1, var2)));
|
||||
return var3 == null ? this.loadChunk(var1, var2) : var3;
|
||||
}
|
||||
|
||||
private Chunk func_28058_d(int var1, int var2) {
|
||||
if(this.field_28066_d == null) {
|
||||
return null;
|
||||
} else {
|
||||
try {
|
||||
Chunk var3 = this.field_28066_d.loadChunk(this.worldObj, var1, var2);
|
||||
if(var3 != null) {
|
||||
var3.lastSaveTime = this.worldObj.getWorldTime();
|
||||
}
|
||||
|
||||
return var3;
|
||||
} catch (Exception var4) {
|
||||
var4.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void func_28060_a(Chunk var1) {
|
||||
if(this.field_28066_d != null) {
|
||||
try {
|
||||
this.field_28066_d.saveExtraChunkData(this.worldObj, var1);
|
||||
} catch (Exception var3) {
|
||||
var3.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void func_28059_b(Chunk var1) {
|
||||
if(this.field_28066_d != null) {
|
||||
try {
|
||||
var1.lastSaveTime = this.worldObj.getWorldTime();
|
||||
this.field_28066_d.saveChunk(this.worldObj, var1);
|
||||
} catch (IOException var3) {
|
||||
var3.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void populate(IChunkProvider var1, int var2, int var3) {
|
||||
Chunk var4 = this.provideChunk(var2, var3);
|
||||
if(!var4.isTerrainPopulated) {
|
||||
var4.isTerrainPopulated = true;
|
||||
if(this.chunkGenerator != null) {
|
||||
this.chunkGenerator.populate(var1, var2, var3);
|
||||
var4.setChunkModified();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean saveChunks(boolean var1, IProgressUpdate var2) {
|
||||
int var3 = 0;
|
||||
|
||||
for(int var4 = 0; var4 < this.field_28064_f.size(); ++var4) {
|
||||
Chunk var5 = (Chunk)this.field_28064_f.get(var4);
|
||||
if(var1 && !var5.neverSave) {
|
||||
this.func_28060_a(var5);
|
||||
}
|
||||
|
||||
if(var5.needsSaving(var1)) {
|
||||
this.func_28059_b(var5);
|
||||
var5.isModified = false;
|
||||
++var3;
|
||||
if(var3 == 24 && !var1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var1) {
|
||||
if(this.field_28066_d == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
this.field_28066_d.saveExtraData();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean func_361_a() {
|
||||
for(int var1 = 0; var1 < 100; ++var1) {
|
||||
if(!this.field_28062_a.isEmpty()) {
|
||||
Integer var2 = (Integer)this.field_28062_a.iterator().next();
|
||||
Chunk var3 = (Chunk)this.field_28065_e.get(var2);
|
||||
var3.onChunkUnload();
|
||||
this.func_28059_b(var3);
|
||||
this.func_28060_a(var3);
|
||||
this.field_28062_a.remove(var2);
|
||||
this.field_28065_e.remove(var2);
|
||||
this.field_28064_f.remove(var3);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.field_28066_d != null) {
|
||||
this.field_28066_d.func_661_a();
|
||||
}
|
||||
|
||||
return this.chunkGenerator.func_361_a();
|
||||
}
|
||||
|
||||
public boolean func_364_b() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
616
src/net/minecraft/src/ChunkProviderGenerate.java
Normal file
616
src/net/minecraft/src/ChunkProviderGenerate.java
Normal file
@@ -0,0 +1,616 @@
|
||||
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 mobSpawnerNoise;
|
||||
private World worldObj;
|
||||
private double[] field_4224_q;
|
||||
private double[] sandNoise = new double[256];
|
||||
private double[] gravelNoise = new double[256];
|
||||
private double[] stoneNoise = new double[256];
|
||||
private MapGenBase field_695_u = new MapGenCaves();
|
||||
private BiomeGenBase[] 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[] generatedTemperatures;
|
||||
|
||||
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.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8);
|
||||
}
|
||||
|
||||
public void generateTerrain(int var1, int var2, byte[] var3, BiomeGenBase[] 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.waterStill.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, BiomeGenBase[] var4) {
|
||||
byte var5 = 64;
|
||||
double var6 = 1.0D / 32.0D;
|
||||
this.sandNoise = this.field_702_n.generateNoiseOctaves(this.sandNoise, (double)(var1 * 16), (double)(var2 * 16), 0.0D, 16, 16, 1, var6, var6, 1.0D);
|
||||
this.gravelNoise = this.field_702_n.generateNoiseOctaves(this.gravelNoise, (double)(var1 * 16), 109.0134D, (double)(var2 * 16), 16, 1, 16, var6, 1.0D, var6);
|
||||
this.stoneNoise = this.field_701_o.generateNoiseOctaves(this.stoneNoise, (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) {
|
||||
BiomeGenBase var10 = var4[var8 + var9 * 16];
|
||||
boolean var11 = this.sandNoise[var8 + var9 * 16] + this.rand.nextDouble() * 0.2D > 0.0D;
|
||||
boolean var12 = this.gravelNoise[var8 + var9 * 16] + this.rand.nextDouble() * 0.2D > 3.0D;
|
||||
int var13 = (int)(this.stoneNoise[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 = (var9 * 16 + var8) * 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.waterStill.blockID;
|
||||
}
|
||||
|
||||
var14 = var13;
|
||||
if(var17 >= var5 - 1) {
|
||||
var3[var18] = var15;
|
||||
} else {
|
||||
var3[var18] = var16;
|
||||
}
|
||||
} else if(var14 > 0) {
|
||||
--var14;
|
||||
var3[var18] = var16;
|
||||
if(var14 == 0 && var16 == Block.sand.blockID) {
|
||||
var14 = this.rand.nextInt(4);
|
||||
var16 = (byte)Block.sandStone.blockID;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Chunk loadChunk(int var1, int var2) {
|
||||
return this.provideChunk(var1, var2);
|
||||
}
|
||||
|
||||
public Chunk provideChunk(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.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, var1 * 16, var2 * 16, 16, 16);
|
||||
double[] var5 = this.worldObj.getWorldChunkManager().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.getWorldChunkManager().temperature;
|
||||
double[] var13 = this.worldObj.getWorldChunkManager().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.generateNoiseOctaves(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.generateNoiseOctaves(this.field_4228_e, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8);
|
||||
this.field_4227_f = this.field_704_l.generateNoiseOctaves(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;
|
||||
BiomeGenBase var6 = this.worldObj.getWorldChunkManager().getBiomeGenAt(var4 + 16, var5 + 16);
|
||||
this.rand.setSeed(this.worldObj.getRandomSeed());
|
||||
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.getRandomSeed());
|
||||
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.waterStill.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.lavaStill.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);
|
||||
}
|
||||
|
||||
for(var13 = 0; var13 < 1; ++var13) {
|
||||
var14 = var4 + this.rand.nextInt(16);
|
||||
var15 = this.rand.nextInt(16) + this.rand.nextInt(16);
|
||||
var16 = var5 + this.rand.nextInt(16);
|
||||
(new WorldGenMinable(Block.oreLapis.blockID, 6)).generate(this.worldObj, this.rand, var14, var15, var16);
|
||||
}
|
||||
|
||||
var11 = 0.5D;
|
||||
var13 = (int)((this.mobSpawnerNoise.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 == BiomeGenBase.forest) {
|
||||
var14 += var13 + 5;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.rainforest) {
|
||||
var14 += var13 + 5;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.seasonalForest) {
|
||||
var14 += var13 + 2;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.taiga) {
|
||||
var14 += var13 + 5;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.desert) {
|
||||
var14 -= 20;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.tundra) {
|
||||
var14 -= 20;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.plains) {
|
||||
var14 -= 20;
|
||||
}
|
||||
|
||||
int var17;
|
||||
for(var15 = 0; var15 < var14; ++var15) {
|
||||
var16 = var4 + this.rand.nextInt(16) + 8;
|
||||
var17 = var5 + this.rand.nextInt(16) + 8;
|
||||
WorldGenerator var18 = var6.getRandomWorldGenForTrees(this.rand);
|
||||
var18.func_420_a(1.0D, 1.0D, 1.0D);
|
||||
var18.generate(this.worldObj, this.rand, var16, this.worldObj.getHeightValue(var16, var17), var17);
|
||||
}
|
||||
|
||||
byte var27 = 0;
|
||||
if(var6 == BiomeGenBase.forest) {
|
||||
var27 = 2;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.seasonalForest) {
|
||||
var27 = 4;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.taiga) {
|
||||
var27 = 2;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.plains) {
|
||||
var27 = 3;
|
||||
}
|
||||
|
||||
int var19;
|
||||
int var25;
|
||||
for(var16 = 0; var16 < var27; ++var16) {
|
||||
var17 = var4 + this.rand.nextInt(16) + 8;
|
||||
var25 = this.rand.nextInt(128);
|
||||
var19 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.plantYellow.blockID)).generate(this.worldObj, this.rand, var17, var25, var19);
|
||||
}
|
||||
|
||||
byte var28 = 0;
|
||||
if(var6 == BiomeGenBase.forest) {
|
||||
var28 = 2;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.rainforest) {
|
||||
var28 = 10;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.seasonalForest) {
|
||||
var28 = 2;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.taiga) {
|
||||
var28 = 1;
|
||||
}
|
||||
|
||||
if(var6 == BiomeGenBase.plains) {
|
||||
var28 = 10;
|
||||
}
|
||||
|
||||
int var20;
|
||||
int var21;
|
||||
for(var17 = 0; var17 < var28; ++var17) {
|
||||
byte var26 = 1;
|
||||
if(var6 == BiomeGenBase.rainforest && this.rand.nextInt(3) != 0) {
|
||||
var26 = 2;
|
||||
}
|
||||
|
||||
var19 = var4 + this.rand.nextInt(16) + 8;
|
||||
var20 = this.rand.nextInt(128);
|
||||
var21 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenTallGrass(Block.tallGrass.blockID, var26)).generate(this.worldObj, this.rand, var19, var20, var21);
|
||||
}
|
||||
|
||||
var28 = 0;
|
||||
if(var6 == BiomeGenBase.desert) {
|
||||
var28 = 2;
|
||||
}
|
||||
|
||||
for(var17 = 0; var17 < var28; ++var17) {
|
||||
var25 = var4 + this.rand.nextInt(16) + 8;
|
||||
var19 = this.rand.nextInt(128);
|
||||
var20 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenDeadBush(Block.deadBush.blockID)).generate(this.worldObj, this.rand, var25, var19, var20);
|
||||
}
|
||||
|
||||
if(this.rand.nextInt(2) == 0) {
|
||||
var17 = var4 + this.rand.nextInt(16) + 8;
|
||||
var25 = this.rand.nextInt(128);
|
||||
var19 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.plantRed.blockID)).generate(this.worldObj, this.rand, var17, var25, var19);
|
||||
}
|
||||
|
||||
if(this.rand.nextInt(4) == 0) {
|
||||
var17 = var4 + this.rand.nextInt(16) + 8;
|
||||
var25 = this.rand.nextInt(128);
|
||||
var19 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.mushroomBrown.blockID)).generate(this.worldObj, this.rand, var17, var25, var19);
|
||||
}
|
||||
|
||||
if(this.rand.nextInt(8) == 0) {
|
||||
var17 = var4 + this.rand.nextInt(16) + 8;
|
||||
var25 = this.rand.nextInt(128);
|
||||
var19 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.mushroomRed.blockID)).generate(this.worldObj, this.rand, var17, var25, var19);
|
||||
}
|
||||
|
||||
for(var17 = 0; var17 < 10; ++var17) {
|
||||
var25 = var4 + this.rand.nextInt(16) + 8;
|
||||
var19 = this.rand.nextInt(128);
|
||||
var20 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenReed()).generate(this.worldObj, this.rand, var25, var19, var20);
|
||||
}
|
||||
|
||||
if(this.rand.nextInt(32) == 0) {
|
||||
var17 = var4 + this.rand.nextInt(16) + 8;
|
||||
var25 = this.rand.nextInt(128);
|
||||
var19 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenPumpkin()).generate(this.worldObj, this.rand, var17, var25, var19);
|
||||
}
|
||||
|
||||
var17 = 0;
|
||||
if(var6 == BiomeGenBase.desert) {
|
||||
var17 += 10;
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < var17; ++var25) {
|
||||
var19 = var4 + this.rand.nextInt(16) + 8;
|
||||
var20 = this.rand.nextInt(128);
|
||||
var21 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenCactus()).generate(this.worldObj, this.rand, var19, var20, var21);
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < 50; ++var25) {
|
||||
var19 = var4 + this.rand.nextInt(16) + 8;
|
||||
var20 = this.rand.nextInt(this.rand.nextInt(120) + 8);
|
||||
var21 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenLiquids(Block.waterMoving.blockID)).generate(this.worldObj, this.rand, var19, var20, var21);
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < 20; ++var25) {
|
||||
var19 = var4 + this.rand.nextInt(16) + 8;
|
||||
var20 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(112) + 8) + 8);
|
||||
var21 = var5 + this.rand.nextInt(16) + 8;
|
||||
(new WorldGenLiquids(Block.lavaMoving.blockID)).generate(this.worldObj, this.rand, var19, var20, var21);
|
||||
}
|
||||
|
||||
this.generatedTemperatures = this.worldObj.getWorldChunkManager().getTemperatures(this.generatedTemperatures, var4 + 8, var5 + 8, 16, 16);
|
||||
|
||||
for(var25 = var4 + 8; var25 < var4 + 8 + 16; ++var25) {
|
||||
for(var19 = var5 + 8; var19 < var5 + 8 + 16; ++var19) {
|
||||
var20 = var25 - (var4 + 8);
|
||||
var21 = var19 - (var5 + 8);
|
||||
int var22 = this.worldObj.getTopSolidOrLiquidBlock(var25, var19);
|
||||
double var23 = this.generatedTemperatures[var20 * 16 + var21] - (double)(var22 - 64) / 64.0D * 0.3D;
|
||||
if(var23 < 0.5D && var22 > 0 && var22 < 128 && this.worldObj.isAirBlock(var25, var22, var19) && this.worldObj.getBlockMaterial(var25, var22 - 1, var19).getIsSolid() && this.worldObj.getBlockMaterial(var25, var22 - 1, var19) != Material.ice) {
|
||||
this.worldObj.setBlockWithNotify(var25, var22, var19, Block.snow.blockID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BlockSand.fallInstantly = false;
|
||||
}
|
||||
|
||||
public boolean saveChunks(boolean var1, IProgressUpdate var2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean func_361_a() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean func_364_b() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
372
src/net/minecraft/src/ChunkProviderHell.java
Normal file
372
src/net/minecraft/src/ChunkProviderHell.java
Normal file
@@ -0,0 +1,372 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class ChunkProviderHell implements IChunkProvider {
|
||||
private Random hellRNG;
|
||||
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.hellRNG = new Random(var2);
|
||||
this.field_4240_i = new NoiseGeneratorOctaves(this.hellRNG, 16);
|
||||
this.field_4239_j = new NoiseGeneratorOctaves(this.hellRNG, 16);
|
||||
this.field_4238_k = new NoiseGeneratorOctaves(this.hellRNG, 8);
|
||||
this.field_4237_l = new NoiseGeneratorOctaves(this.hellRNG, 4);
|
||||
this.field_4236_m = new NoiseGeneratorOctaves(this.hellRNG, 4);
|
||||
this.field_4248_a = new NoiseGeneratorOctaves(this.hellRNG, 10);
|
||||
this.field_4247_b = new NoiseGeneratorOctaves(this.hellRNG, 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.lavaStill.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.generateNoiseOctaves(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.generateNoiseOctaves(this.field_4232_q, (double)(var1 * 16), 109.0134D, (double)(var2 * 16), 16, 1, 16, var5, 1.0D, var5);
|
||||
this.field_4231_r = this.field_4236_m.generateNoiseOctaves(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.hellRNG.nextDouble() * 0.2D > 0.0D;
|
||||
boolean var10 = this.field_4232_q[var7 + var8 * 16] + this.hellRNG.nextDouble() * 0.2D > 0.0D;
|
||||
int var11 = (int)(this.field_4231_r[var7 + var8 * 16] / 3.0D + 3.0D + this.hellRNG.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 = (var8 * 16 + var7) * 128 + var15;
|
||||
if(var15 >= 127 - this.hellRNG.nextInt(5)) {
|
||||
var3[var16] = (byte)Block.bedrock.blockID;
|
||||
} else if(var15 <= 0 + this.hellRNG.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.lavaStill.blockID;
|
||||
}
|
||||
|
||||
var12 = var11;
|
||||
if(var15 >= var4 - 1) {
|
||||
var3[var16] = var13;
|
||||
} else {
|
||||
var3[var16] = var14;
|
||||
}
|
||||
} else if(var12 > 0) {
|
||||
--var12;
|
||||
var3[var16] = var14;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Chunk loadChunk(int var1, int var2) {
|
||||
return this.provideChunk(var1, var2);
|
||||
}
|
||||
|
||||
public Chunk provideChunk(int var1, int var2) {
|
||||
this.hellRNG.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);
|
||||
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.generateNoiseOctaves(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.generateNoiseOctaves(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.generateNoiseOctaves(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.generateNoiseOctaves(this.field_4245_d, (double)var2, (double)var3, (double)var4, var5, var6, var7, var8, var10, var8);
|
||||
this.field_4244_e = this.field_4239_j.generateNoiseOctaves(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.hellRNG.nextInt(16) + 8;
|
||||
var8 = this.hellRNG.nextInt(120) + 4;
|
||||
var9 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenHellLava(Block.lavaMoving.blockID)).generate(this.field_4235_n, this.hellRNG, var7, var8, var9);
|
||||
}
|
||||
|
||||
var6 = this.hellRNG.nextInt(this.hellRNG.nextInt(10) + 1) + 1;
|
||||
|
||||
int var10;
|
||||
for(var7 = 0; var7 < var6; ++var7) {
|
||||
var8 = var4 + this.hellRNG.nextInt(16) + 8;
|
||||
var9 = this.hellRNG.nextInt(120) + 4;
|
||||
var10 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenFire()).generate(this.field_4235_n, this.hellRNG, var8, var9, var10);
|
||||
}
|
||||
|
||||
var6 = this.hellRNG.nextInt(this.hellRNG.nextInt(10) + 1);
|
||||
|
||||
for(var7 = 0; var7 < var6; ++var7) {
|
||||
var8 = var4 + this.hellRNG.nextInt(16) + 8;
|
||||
var9 = this.hellRNG.nextInt(120) + 4;
|
||||
var10 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenGlowStone1()).generate(this.field_4235_n, this.hellRNG, var8, var9, var10);
|
||||
}
|
||||
|
||||
for(var7 = 0; var7 < 10; ++var7) {
|
||||
var8 = var4 + this.hellRNG.nextInt(16) + 8;
|
||||
var9 = this.hellRNG.nextInt(128);
|
||||
var10 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenGlowStone2()).generate(this.field_4235_n, this.hellRNG, var8, var9, var10);
|
||||
}
|
||||
|
||||
if(this.hellRNG.nextInt(1) == 0) {
|
||||
var7 = var4 + this.hellRNG.nextInt(16) + 8;
|
||||
var8 = this.hellRNG.nextInt(128);
|
||||
var9 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.mushroomBrown.blockID)).generate(this.field_4235_n, this.hellRNG, var7, var8, var9);
|
||||
}
|
||||
|
||||
if(this.hellRNG.nextInt(1) == 0) {
|
||||
var7 = var4 + this.hellRNG.nextInt(16) + 8;
|
||||
var8 = this.hellRNG.nextInt(128);
|
||||
var9 = var5 + this.hellRNG.nextInt(16) + 8;
|
||||
(new WorldGenFlowers(Block.mushroomRed.blockID)).generate(this.field_4235_n, this.hellRNG, var7, var8, var9);
|
||||
}
|
||||
|
||||
BlockSand.fallInstantly = false;
|
||||
}
|
||||
|
||||
public boolean saveChunks(boolean var1, IProgressUpdate var2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean func_361_a() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean func_364_b() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user