*Remade module system. Much more efficient and just plain better.
*Client update thread works much better now. *Fixed bug where client update doesn't remove old modules. *Removed Mekanism damage source, useless. *Removed MachineryManager, it's the cause of world leaks. *Much better upgrade notification, lets you know which modules are outdated. *Gave each module a unique version number. *Crafting recipe for the Electric Pump. *Removed IC2 coal dust dependency. *Crusher recipe for Charcoal Dust in a different mod. *Made the pump work much, much better.
This commit is contained in:
parent
5f496a00ec
commit
f464d2143b
13 changed files with 338 additions and 275 deletions
|
@ -2,8 +2,10 @@ package mekanism.client;
|
||||||
|
|
||||||
import cpw.mods.fml.common.Loader;
|
import cpw.mods.fml.common.Loader;
|
||||||
import mekanism.api.EnumColor;
|
import mekanism.api.EnumColor;
|
||||||
|
import mekanism.common.IModule;
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
import mekanism.common.MekanismUtils;
|
import mekanism.common.MekanismUtils;
|
||||||
|
import mekanism.common.Version;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
|
|
||||||
|
@ -19,7 +21,7 @@ public class GuiCredits extends GuiScreen
|
||||||
buttonList.clear();
|
buttonList.clear();
|
||||||
buttonList.add(new GuiButton(0, width / 2 - 100, height / 4 + 72 + 12, "Update"));
|
buttonList.add(new GuiButton(0, width / 2 - 100, height / 4 + 72 + 12, "Update"));
|
||||||
buttonList.add(new GuiButton(1, width / 2 - 100, height / 4 + 96 + 12, "Cancel"));
|
buttonList.add(new GuiButton(1, width / 2 - 100, height / 4 + 96 + 12, "Cancel"));
|
||||||
((GuiButton)buttonList.get(0)).enabled = !MekanismUtils.isNotOutdated() && !ThreadClientUpdate.hasUpdated;
|
((GuiButton)buttonList.get(0)).enabled = !MekanismUtils.noUpdates() && !ThreadClientUpdate.hasUpdated;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onFinishedDownloading()
|
public static void onFinishedDownloading()
|
||||||
|
@ -43,22 +45,23 @@ public class GuiCredits extends GuiScreen
|
||||||
}
|
}
|
||||||
if(guibutton.id == 0)
|
if(guibutton.id == 0)
|
||||||
{
|
{
|
||||||
if(!MekanismUtils.isNotOutdated())
|
if(!MekanismUtils.noUpdates())
|
||||||
{
|
{
|
||||||
updatedRecently = true;
|
updatedRecently = true;
|
||||||
updateProgress = "Downloading latest version...";
|
updateProgress = "Downloading latest version...";
|
||||||
guibutton.enabled = false;
|
guibutton.enabled = false;
|
||||||
|
|
||||||
new ThreadClientUpdate("http://dl.dropbox.com/u/90411166/Mekanism-v" + Mekanism.latestVersionNumber + ".jar", 0);
|
if(Mekanism.versionNumber.comparedState(Version.get(Mekanism.latestVersionNumber)) == -1)
|
||||||
|
|
||||||
if(Loader.isModLoaded("MekanismGenerators"))
|
|
||||||
{
|
{
|
||||||
new ThreadClientUpdate("http://dl.dropbox.com/u/90411166/MekanismGenerators-v" + Mekanism.latestVersionNumber + ".jar", 1);
|
new ThreadClientUpdate("http://dl.dropbox.com/u/90411166/Mekanism-v" + Mekanism.latestVersionNumber + ".jar", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Loader.isModLoaded("MekanismTools"))
|
for(IModule module : Mekanism.modulesLoaded)
|
||||||
{
|
{
|
||||||
new ThreadClientUpdate("http://dl.dropbox.com/u/90411166/MekanismTools-v" + Mekanism.latestVersionNumber + ".jar", 2);
|
if(module.getVersion().comparedState(Version.get(Mekanism.latestVersionNumber)) == -1)
|
||||||
|
{
|
||||||
|
new ThreadClientUpdate("http://dl.dropbox.com/u/90411166/Mekanism" + module.getName() + "-v" + Mekanism.latestVersionNumber + ".jar", module.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -100,12 +103,21 @@ public class GuiCredits extends GuiScreen
|
||||||
|
|
||||||
drawDefaultBackground();
|
drawDefaultBackground();
|
||||||
drawCenteredString(fontRenderer, EnumColor.DARK_BLUE + "Mekanism" + EnumColor.GREY + " by aidancbrady", width / 2, (height / 4 - 60) + 20, 0xffffff);
|
drawCenteredString(fontRenderer, EnumColor.DARK_BLUE + "Mekanism" + EnumColor.GREY + " by aidancbrady", width / 2, (height / 4 - 60) + 20, 0xffffff);
|
||||||
writeText(EnumColor.GREY + "Your version: " + (MekanismUtils.isNotOutdated() ? Mekanism.versionNumber : EnumColor.DARK_RED + Mekanism.versionNumber.toString() + EnumColor.GREY + " -- OUTDATED"), 36);
|
writeText(EnumColor.INDIGO + "Mekanism " + (Mekanism.versionNumber.comparedState(Version.get(Mekanism.latestVersionNumber)) == -1 ? EnumColor.DARK_RED : EnumColor.GREY) + Mekanism.versionNumber, 36);
|
||||||
writeText(EnumColor.GREY + "Newest version: " + Mekanism.latestVersionNumber, 45);
|
|
||||||
writeText(EnumColor.GREY + "*Developed on Mac OS X 10.8 Mountain Lion", 63);
|
int size = 36;
|
||||||
writeText(EnumColor.GREY + "*Code, textures, and ideas by aidancbrady", 72);
|
|
||||||
writeText(EnumColor.GREY + "Recent news: " + EnumColor.DARK_BLUE + (!Mekanism.recentNews.contains("null") ? Mekanism.recentNews : "couldn't access."), 81);
|
for(IModule module : Mekanism.modulesLoaded)
|
||||||
writeText(EnumColor.GREY + updateProgress, 99);
|
{
|
||||||
|
size += 9;
|
||||||
|
writeText(EnumColor.INDIGO + "Mekanism" + module.getName() + (module.getVersion().comparedState(Version.get(Mekanism.latestVersionNumber)) == -1 ? EnumColor.DARK_RED : EnumColor.GREY) + " " + module.getVersion(), size);
|
||||||
|
}
|
||||||
|
|
||||||
|
writeText(EnumColor.GREY + "Newest version: " + Mekanism.latestVersionNumber, size+9);
|
||||||
|
writeText(EnumColor.GREY + "*Developed on Mac OS X 10.8 Mountain Lion", size+18);
|
||||||
|
writeText(EnumColor.GREY + "*Code, textures, and ideas by aidancbrady", size+27);
|
||||||
|
writeText(EnumColor.GREY + "Recent news: " + EnumColor.DARK_BLUE + (!Mekanism.recentNews.contains("null") ? Mekanism.recentNews : "couldn't access."), size+36);
|
||||||
|
writeText(EnumColor.GREY + updateProgress, size+45);
|
||||||
super.drawScreen(i, j, f);
|
super.drawScreen(i, j, f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,19 +16,19 @@ import net.minecraft.client.Minecraft;
|
||||||
*/
|
*/
|
||||||
public class ThreadClientUpdate extends Thread
|
public class ThreadClientUpdate extends Thread
|
||||||
{
|
{
|
||||||
private int downloadType;
|
|
||||||
private int bytesDownloaded;
|
private int bytesDownloaded;
|
||||||
private int lastBytesDownloaded;
|
private int lastBytesDownloaded;
|
||||||
private byte[] buffer = new byte[10240];
|
private byte[] buffer = new byte[10240];
|
||||||
private URL url;
|
private URL url;
|
||||||
|
public String moduleName;
|
||||||
|
|
||||||
public static int modulesBeingDownloaded;
|
public static int modulesBeingDownloaded;
|
||||||
public static boolean hasUpdated;
|
public static boolean hasUpdated;
|
||||||
|
|
||||||
public ThreadClientUpdate(String location, int type)
|
public ThreadClientUpdate(String location, String name)
|
||||||
{
|
{
|
||||||
|
moduleName = name;
|
||||||
modulesBeingDownloaded++;
|
modulesBeingDownloaded++;
|
||||||
downloadType = type;
|
|
||||||
try {
|
try {
|
||||||
url = new URL(location);
|
url = new URL(location);
|
||||||
setDaemon(false);
|
setDaemon(false);
|
||||||
|
@ -41,8 +41,7 @@ public class ThreadClientUpdate extends Thread
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
String downloadName = downloadType == 0 ? "" : (downloadType == 1 ? "Generators" : "Tools");
|
File download = new File(new StringBuilder().append(Minecraft.getMinecraftDir()).append(File.separator + "mods" + File.separator + "Mekanism" + moduleName + "-v" + Mekanism.latestVersionNumber + ".jar").toString());
|
||||||
File download = new File(new StringBuilder().append(Minecraft.getMinecraftDir()).append(File.separator + "mods" + File.separator + "Mekanism" + downloadName + "-v" + Mekanism.latestVersionNumber + ".jar").toString());
|
|
||||||
try {
|
try {
|
||||||
prepareForDownload();
|
prepareForDownload();
|
||||||
download.createNewFile();
|
download.createNewFile();
|
||||||
|
@ -83,7 +82,7 @@ public class ThreadClientUpdate extends Thread
|
||||||
|
|
||||||
for(File file : modsList)
|
for(File file : modsList)
|
||||||
{
|
{
|
||||||
if(file.getName().startsWith("Mekanism") && file.getName().endsWith(".jar") && !file.getName().contains(Mekanism.latestVersionNumber))
|
if(file.getName().startsWith("Mekanism" + moduleName) && file.getName().endsWith(".jar") && !file.getName().contains(Mekanism.latestVersionNumber))
|
||||||
{
|
{
|
||||||
file.delete();
|
file.delete();
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,7 +556,7 @@ public class BlockMachine extends BlockContainer implements IDismantleable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tileEntity != null)
|
if(tileEntity != null)
|
||||||
{
|
{
|
||||||
if(metadata != MachineType.TELEPORTER.meta)
|
if(metadata != MachineType.TELEPORTER.meta)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
package mekanism.common;
|
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.util.DamageSource;
|
|
||||||
import net.minecraft.util.EntityDamageSourceIndirect;
|
|
||||||
|
|
||||||
public class DamageSourceMekanism extends EntityDamageSourceIndirect
|
|
||||||
{
|
|
||||||
private Entity damageSourceProjectile;
|
|
||||||
private Entity damageSourceEntity;
|
|
||||||
|
|
||||||
public DamageSourceMekanism(String s, Entity entity, Entity entity1)
|
|
||||||
{
|
|
||||||
super(s, entity, entity1);
|
|
||||||
damageSourceProjectile = entity;
|
|
||||||
damageSourceEntity = entity1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Entity getProjectile()
|
|
||||||
{
|
|
||||||
return damageSourceProjectile;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Entity getEntity()
|
|
||||||
{
|
|
||||||
return damageSourceEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DamageSource causeWeaponDamage(Entity entity, Entity entity1)
|
|
||||||
{
|
|
||||||
return (new DamageSourceMekanism("weapon", entity, entity1)).setProjectile();
|
|
||||||
}
|
|
||||||
}
|
|
22
src/minecraft/mekanism/common/IModule.java
Normal file
22
src/minecraft/mekanism/common/IModule.java
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
package mekanism.common;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implement in your main class if your mod happens to be completely reliant on Mekanism, or in other words, a Mekanism module.
|
||||||
|
* @author aidancbrady
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IModule
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Gets the version of the module.
|
||||||
|
* @return the module's version
|
||||||
|
*/
|
||||||
|
public Version getVersion();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the name of the module. Note that this doesn't include "Mekanism" like the actual module's name does, just the
|
||||||
|
* unique name. For example, MekanismGenerators returns "Generators" here.
|
||||||
|
* @return unique name of the module
|
||||||
|
*/
|
||||||
|
public String getName();
|
||||||
|
}
|
|
@ -1,108 +0,0 @@
|
||||||
package mekanism.common;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A simple way of managing all machines -- MachineryManager! Contains an ArrayList of
|
|
||||||
* basic machines that all machines are added to on placement.
|
|
||||||
* @author AidanBrady
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class MachineryManager
|
|
||||||
{
|
|
||||||
/** The list of machines used */
|
|
||||||
public List<TileEntityBasicMachine> machines = new ArrayList<TileEntityBasicMachine>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MachineryManager -- the easiest way of managing machines.
|
|
||||||
*/
|
|
||||||
public MachineryManager()
|
|
||||||
{
|
|
||||||
reset();
|
|
||||||
System.out.println("[Mekanism] Successfully initialized Machinery Manager.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a machine with the manager.
|
|
||||||
* @param machine - to be added
|
|
||||||
*/
|
|
||||||
public void register(TileEntityBasicMachine machine)
|
|
||||||
{
|
|
||||||
if(!machines.contains(machine))
|
|
||||||
{
|
|
||||||
machines.add(machine);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
System.out.println("[Mekanism] Attempted to add machine to manager that already exists.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a machine from the manager.
|
|
||||||
* @param machine - to be removed
|
|
||||||
*/
|
|
||||||
public void remove(TileEntityBasicMachine machine)
|
|
||||||
{
|
|
||||||
if(machines.contains(machine))
|
|
||||||
{
|
|
||||||
machines.remove(machine);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
System.out.println("[Mekanism] Attempted to remove machine from manager that doesn't exist.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Grabs a machine from the manager.
|
|
||||||
* @param world - to be grabbed
|
|
||||||
* @param x - block coord
|
|
||||||
* @param y - block coord
|
|
||||||
* @param z - block coord
|
|
||||||
* @return machine grabbed from the manager
|
|
||||||
*/
|
|
||||||
public TileEntityBasicMachine getMachine(World world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(machines.contains((TileEntityBasicMachine)world.getBlockTileEntity(x, y, z)))
|
|
||||||
{
|
|
||||||
return (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
System.out.println("[Mekanism] Attempted to grab machine from manager that doesn't exist.");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Destroys all machines registered, as well as removing them from the manager's ArrayList.
|
|
||||||
* @param explode - whether or not to show fake explosion
|
|
||||||
*/
|
|
||||||
public void destroyAll(boolean explode)
|
|
||||||
{
|
|
||||||
for(TileEntityBasicMachine machine : machines)
|
|
||||||
{
|
|
||||||
if(explode)
|
|
||||||
{
|
|
||||||
MekanismUtils.doFakeBlockExplosion(machine.worldObj, machine.xCoord, machine.yCoord, machine.zCoord);
|
|
||||||
}
|
|
||||||
machine.worldObj.setBlockToAir(machine.xCoord, machine.yCoord, machine.zCoord);
|
|
||||||
machine.worldObj.removeBlockTileEntity(machine.xCoord, machine.yCoord, machine.zCoord);
|
|
||||||
remove(machine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return machines.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets the manager -- removing all machines from the ArrayList
|
|
||||||
*/
|
|
||||||
public void reset()
|
|
||||||
{
|
|
||||||
machines.clear();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -87,16 +87,13 @@ public class Mekanism
|
||||||
public static CreativeTabMekanism tabMekanism = new CreativeTabMekanism();
|
public static CreativeTabMekanism tabMekanism = new CreativeTabMekanism();
|
||||||
|
|
||||||
/** List of Mekanism modules loaded */
|
/** List of Mekanism modules loaded */
|
||||||
public static List modulesLoaded = new ArrayList();
|
public static List<IModule> modulesLoaded = new ArrayList<IModule>();
|
||||||
|
|
||||||
/** The latest version number which is received from the Mekanism server */
|
/** The latest version number which is received from the Mekanism server */
|
||||||
public static String latestVersionNumber;
|
public static String latestVersionNumber;
|
||||||
|
|
||||||
/** The recent news which is received from the Mekanism server */
|
/** The recent news which is received from the Mekanism server */
|
||||||
public static String recentNews;
|
public static String recentNews;
|
||||||
|
|
||||||
/** The main MachineryManager instance that is used by all machines */
|
|
||||||
public static MachineryManager manager;
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
/** The main SoundHandler instance that is used by all audio sources */
|
/** The main SoundHandler instance that is used by all audio sources */
|
||||||
|
@ -305,7 +302,7 @@ public class Mekanism
|
||||||
"OOO", "OGO", "OOO", Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('G'), "ingotRefinedGlowstone"
|
"OOO", "OGO", "OOO", Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('G'), "ingotRefinedGlowstone"
|
||||||
}));
|
}));
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Transmitter, 8, 0), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Transmitter, 8, 0), new Object[] {
|
||||||
"OOO", "GGG", "OOO", Character.valueOf('O'), "ingotOsmium", Character.valueOf('G'), Block.glass
|
"OGO", Character.valueOf('O'), "ingotOsmium", Character.valueOf('G'), Block.glass
|
||||||
}));
|
}));
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 8), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 8), new Object[] {
|
||||||
" S ", "SPS", " S ", Character.valueOf('S'), "ingotSteel", Character.valueOf('P'), "ingotOsmium"
|
" S ", "SPS", " S ", Character.valueOf('S'), "ingotSteel", Character.valueOf('P'), "ingotOsmium"
|
||||||
|
@ -314,7 +311,10 @@ public class Mekanism
|
||||||
"SCS", "GIG", "SCS", Character.valueOf('S'), Block.cobblestone, Character.valueOf('C'), ControlCircuit, Character.valueOf('G'), Block.glass, Character.valueOf('I'), new ItemStack(BasicBlock, 1, 8)
|
"SCS", "GIG", "SCS", Character.valueOf('S'), Block.cobblestone, Character.valueOf('C'), ControlCircuit, Character.valueOf('G'), Block.glass, Character.valueOf('I'), new ItemStack(BasicBlock, 1, 8)
|
||||||
}));
|
}));
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Transmitter, 8, 1), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Transmitter, 8, 1), new Object[] {
|
||||||
"OOO", "RRR", "OOO", Character.valueOf('O'), "ingotOsmium", Character.valueOf('R'), Item.redstone
|
"ORO", Character.valueOf('O'), "ingotOsmium", Character.valueOf('R'), Item.redstone
|
||||||
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(MachineBlock, 1, 12), new Object[] {
|
||||||
|
" B ", "ECE", "OOO", Character.valueOf('B'), Item.bucketWater, Character.valueOf('E'), EnrichedAlloy, Character.valueOf('C'), new ItemStack(BasicBlock, 1, 8), Character.valueOf('O'), "ingotOsmium"
|
||||||
}));
|
}));
|
||||||
|
|
||||||
//Factory Recipes
|
//Factory Recipes
|
||||||
|
@ -652,8 +652,6 @@ public class Mekanism
|
||||||
{
|
{
|
||||||
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(DirtyDust, 1, 6));
|
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(DirtyDust, 1, 6));
|
||||||
}
|
}
|
||||||
|
|
||||||
RecipeHandler.addCrusherRecipe(new ItemStack(Item.coal), hooks.IC2CoalDust);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(ItemStack ore : OreDictionary.getOres("dustRefinedObsidian"))
|
for(ItemStack ore : OreDictionary.getOres("dustRefinedObsidian"))
|
||||||
|
@ -810,6 +808,14 @@ public class Mekanism
|
||||||
FurnaceRecipes.smelting().addSmelting(Dust.itemID, 8, MekanismUtils.getStackWithSize(OreDictionary.getOres("ingotSilver").get(0), 1), 1.0F);
|
FurnaceRecipes.smelting().addSmelting(Dust.itemID, 8, MekanismUtils.getStackWithSize(OreDictionary.getOres("ingotSilver").get(0), 1), 1.0F);
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
RecipeHandler.addCrusherRecipe(new ItemStack(Item.coal), MekanismUtils.getStackWithSize(OreDictionary.getOres("dustCoal").get(0), 1));
|
||||||
|
} catch(Exception e) {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
RecipeHandler.addCrusherRecipe(new ItemStack(Item.coal, 1, 1), MekanismUtils.getStackWithSize(OreDictionary.getOres("dustCharcoal").get(0), 1));
|
||||||
|
} catch(Exception e) {}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for(ItemStack ore : OreDictionary.getOres("ingotCopper"))
|
for(ItemStack ore : OreDictionary.getOres("ingotCopper"))
|
||||||
{
|
{
|
||||||
|
@ -973,18 +979,12 @@ public class Mekanism
|
||||||
@Init
|
@Init
|
||||||
public void init(FMLInitializationEvent event)
|
public void init(FMLInitializationEvent event)
|
||||||
{
|
{
|
||||||
//Add this module to the core list
|
|
||||||
modulesLoaded.add(this);
|
|
||||||
|
|
||||||
//Register the mod's ore handler
|
//Register the mod's ore handler
|
||||||
GameRegistry.registerWorldGenerator(new OreHandler());
|
GameRegistry.registerWorldGenerator(new OreHandler());
|
||||||
|
|
||||||
//Register the mod's GUI handler
|
//Register the mod's GUI handler
|
||||||
NetworkRegistry.instance().registerGuiHandler(this, new CoreGuiHandler());
|
NetworkRegistry.instance().registerGuiHandler(this, new CoreGuiHandler());
|
||||||
|
|
||||||
//Register the MachineryManager
|
|
||||||
manager = new MachineryManager();
|
|
||||||
|
|
||||||
//Initialization notification
|
//Initialization notification
|
||||||
System.out.println("[Mekanism] Version " + versionNumber + " initializing...");
|
System.out.println("[Mekanism] Version " + versionNumber + " initializing...");
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import net.minecraft.item.ItemStack;
|
||||||
*/
|
*/
|
||||||
public final class MekanismHooks
|
public final class MekanismHooks
|
||||||
{
|
{
|
||||||
private Class Ic2Items;
|
|
||||||
private Class IC2;
|
private Class IC2;
|
||||||
|
|
||||||
private Class Railcraft;
|
private Class Railcraft;
|
||||||
|
@ -26,8 +25,6 @@ public final class MekanismHooks
|
||||||
private Class ForestryItem;
|
private Class ForestryItem;
|
||||||
private Class Forestry;
|
private Class Forestry;
|
||||||
|
|
||||||
public ItemStack IC2CoalDust;
|
|
||||||
|
|
||||||
public int BuildCraftFuelID = 19108;
|
public int BuildCraftFuelID = 19108;
|
||||||
public ItemStack BuildCraftFuelBucket;
|
public ItemStack BuildCraftFuelBucket;
|
||||||
|
|
||||||
|
@ -55,8 +52,6 @@ public final class MekanismHooks
|
||||||
|
|
||||||
if(IC2Loaded)
|
if(IC2Loaded)
|
||||||
{
|
{
|
||||||
IC2CoalDust = getIC2Item("coalDust");
|
|
||||||
|
|
||||||
Ic2Recipes.addMaceratorRecipe(new ItemStack(Mekanism.OreBlock, 1, 0), new ItemStack(Mekanism.Dust, 2, 2));
|
Ic2Recipes.addMaceratorRecipe(new ItemStack(Mekanism.OreBlock, 1, 0), new ItemStack(Mekanism.Dust, 2, 2));
|
||||||
|
|
||||||
Ic2Recipes.addMaceratorRecipe(new ItemStack(Mekanism.Ingot, 1, 1), new ItemStack(Mekanism.Dust, 1, 2));
|
Ic2Recipes.addMaceratorRecipe(new ItemStack(Mekanism.Ingot, 1, 1), new ItemStack(Mekanism.Dust, 1, 2));
|
||||||
|
@ -75,10 +70,6 @@ public final class MekanismHooks
|
||||||
|
|
||||||
System.out.println("[Mekanism] Hooked into IC2 successfully.");
|
System.out.println("[Mekanism] Hooked into IC2 successfully.");
|
||||||
}
|
}
|
||||||
if(RailcraftLoaded)
|
|
||||||
{
|
|
||||||
System.out.println("[Mekanism] Hooked into Railcraft successfully.");
|
|
||||||
}
|
|
||||||
if(BasicComponentsLoaded)
|
if(BasicComponentsLoaded)
|
||||||
{
|
{
|
||||||
if(Mekanism.disableBCSteelCrafting)
|
if(Mekanism.disableBCSteelCrafting)
|
||||||
|
@ -111,35 +102,6 @@ public final class MekanismHooks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets an object out of the class Ic2Items.
|
|
||||||
* @param name - name of the item
|
|
||||||
* @return the object
|
|
||||||
*/
|
|
||||||
public ItemStack getIC2Item(String name)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if(Ic2Items == null) Ic2Items = Class.forName("ic2.core.Ic2Items");
|
|
||||||
if(Ic2Items == null) Ic2Items = Class.forName("net.minecraft.src.ic2.core.Ic2Items");
|
|
||||||
Object ret = Ic2Items.getField(name).get(null);
|
|
||||||
|
|
||||||
if(ret instanceof ItemStack)
|
|
||||||
{
|
|
||||||
return (ItemStack)ret;
|
|
||||||
}
|
|
||||||
else if(ret instanceof Block)
|
|
||||||
{
|
|
||||||
return new ItemStack((Block)ret);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Exception("not instanceof ItemStack");
|
|
||||||
}
|
|
||||||
} catch(Exception e) {
|
|
||||||
System.out.println("[Mekanism] Unable to retrieve IC2 item " + name + ".");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getBuildCraftItem(String name)
|
public ItemStack getBuildCraftItem(String name)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -66,10 +66,31 @@ public final class MekanismUtils
|
||||||
{
|
{
|
||||||
if(!Mekanism.latestVersionNumber.equals("null"))
|
if(!Mekanism.latestVersionNumber.equals("null"))
|
||||||
{
|
{
|
||||||
if(Version.get(Mekanism.latestVersionNumber).comparedState(Mekanism.versionNumber) == 1)
|
ArrayList<IModule> list = new ArrayList<IModule>();
|
||||||
|
|
||||||
|
for(IModule module : Mekanism.modulesLoaded)
|
||||||
|
{
|
||||||
|
if(Version.get(Mekanism.latestVersionNumber).comparedState(module.getVersion()) == 1)
|
||||||
|
{
|
||||||
|
list.add(module);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Version.get(Mekanism.latestVersionNumber).comparedState(Mekanism.versionNumber) == 1 || !list.isEmpty())
|
||||||
{
|
{
|
||||||
entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------");
|
entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------");
|
||||||
entityplayer.addChatMessage(EnumColor.GREY + " Using outdated version " + EnumColor.DARK_GREY + Mekanism.versionNumber + EnumColor.GREY + " for your client.");
|
entityplayer.addChatMessage(EnumColor.GREY + " Using outdated version on one or more modules.");
|
||||||
|
|
||||||
|
if(Version.get(Mekanism.latestVersionNumber).comparedState(Mekanism.versionNumber) == 1)
|
||||||
|
{
|
||||||
|
entityplayer.addChatMessage(EnumColor.INDIGO + " Mekanism: " + EnumColor.DARK_RED + Mekanism.versionNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(IModule module : list)
|
||||||
|
{
|
||||||
|
entityplayer.addChatMessage(EnumColor.INDIGO + " Mekanism" + module.getName() + ": " + EnumColor.DARK_RED + module.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
entityplayer.addChatMessage(EnumColor.GREY + " Consider updating to version " + EnumColor.DARK_GREY + Mekanism.latestVersionNumber);
|
entityplayer.addChatMessage(EnumColor.GREY + " Consider updating to version " + EnumColor.DARK_GREY + Mekanism.latestVersionNumber);
|
||||||
entityplayer.addChatMessage(EnumColor.GREY + " New features: " + EnumColor.INDIGO + Mekanism.recentNews);
|
entityplayer.addChatMessage(EnumColor.GREY + " New features: " + EnumColor.INDIGO + Mekanism.recentNews);
|
||||||
entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------");
|
entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------");
|
||||||
|
@ -218,12 +239,30 @@ public final class MekanismUtils
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the mod is running on the latest version.
|
* Checks if the mod doesn't need an update.
|
||||||
* @return if mod is latest version
|
* @return if mod doesn't need an update
|
||||||
*/
|
*/
|
||||||
public static boolean isNotOutdated()
|
public static boolean noUpdates()
|
||||||
{
|
{
|
||||||
return Mekanism.latestVersionNumber.contains("null") || Mekanism.versionNumber.comparedState(Version.get(Mekanism.latestVersionNumber)) != -1;
|
if(Mekanism.latestVersionNumber.contains("null"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Mekanism.versionNumber.comparedState(Version.get(Mekanism.latestVersionNumber)) == -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(IModule module : Mekanism.modulesLoaded)
|
||||||
|
{
|
||||||
|
if(module.getVersion().comparedState(Version.get(Mekanism.latestVersionNumber)) == -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -573,18 +612,18 @@ public final class MekanismUtils
|
||||||
*/
|
*/
|
||||||
public static boolean isLiquid(World world, int x, int y, int z)
|
public static boolean isLiquid(World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
return getLiquidAndCleanup(world, x, y, z) != null;
|
return getLiquid(world, x, y, z) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a liquid from a certain location, or removes it if it's a dead lava block.
|
* Gets a liquid from a certain location.
|
||||||
* @param world - world the block is in
|
* @param world - world the block is in
|
||||||
* @param x - x coordinate
|
* @param x - x coordinate
|
||||||
* @param y - y coordinate
|
* @param y - y coordinate
|
||||||
* @param z - z coordinate
|
* @param z - z coordinate
|
||||||
* @return the liquid at the certain location, null if it doesn't exist
|
* @return the liquid at the certain location, null if it doesn't exist
|
||||||
*/
|
*/
|
||||||
public static LiquidStack getLiquidAndCleanup(World world, int x, int y, int z)
|
public static LiquidStack getLiquid(World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
int id = world.getBlockId(x, y, z);
|
int id = world.getBlockId(x, y, z);
|
||||||
int meta = world.getBlockMetadata(x, y, z);
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
@ -598,20 +637,10 @@ public final class MekanismUtils
|
||||||
{
|
{
|
||||||
return new LiquidStack(Block.waterStill.blockID, LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
return new LiquidStack(Block.waterStill.blockID, LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
||||||
}
|
}
|
||||||
else if((id == Block.waterStill.blockID || id == Block.waterMoving.blockID) && meta != 0)
|
|
||||||
{
|
|
||||||
world.setBlockToAir(x, y, z);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
else if((id == Block.lavaStill.blockID || id == Block.lavaMoving.blockID) && meta == 0)
|
else if((id == Block.lavaStill.blockID || id == Block.lavaMoving.blockID) && meta == 0)
|
||||||
{
|
{
|
||||||
return new LiquidStack(Block.lavaStill.blockID, LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
return new LiquidStack(Block.lavaStill.blockID, LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
||||||
}
|
}
|
||||||
else if((id == Block.lavaStill.blockID || id == Block.lavaMoving.blockID) && meta != 0)
|
|
||||||
{
|
|
||||||
world.setBlockToAir(x, y, z);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
else if(Block.blocksList[id] instanceof ILiquid)
|
else if(Block.blocksList[id] instanceof ILiquid)
|
||||||
{
|
{
|
||||||
ILiquid liquid = (ILiquid)Block.blocksList[id];
|
ILiquid liquid = (ILiquid)Block.blocksList[id];
|
||||||
|
@ -624,14 +653,46 @@ public final class MekanismUtils
|
||||||
{
|
{
|
||||||
return new LiquidStack(liquid.stillLiquidId(), LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
return new LiquidStack(liquid.stillLiquidId(), LiquidContainerRegistry.BUCKET_VOLUME, 0);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
world.setBlockToAir(x, y, z);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isDeadLiquid(World world, int x, int y, int z)
|
||||||
|
{
|
||||||
|
int id = world.getBlockId(x, y, z);
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
|
||||||
|
if(id == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((id == Block.waterStill.blockID || id == Block.waterMoving.blockID) && meta != 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if((id == Block.lavaStill.blockID || id == Block.lavaMoving.blockID) && meta != 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(Block.blocksList[id] instanceof ILiquid)
|
||||||
|
{
|
||||||
|
ILiquid liquid = (ILiquid)Block.blocksList[id];
|
||||||
|
|
||||||
|
if(liquid.isMetaSensitive())
|
||||||
|
{
|
||||||
|
return liquid.stillLiquidMeta() != meta || liquid.stillLiquidId() != id;
|
||||||
|
}
|
||||||
|
else if(meta != 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the distance between one block and another.
|
* Gets the distance between one block and another.
|
||||||
* @param blockOne - first block
|
* @param blockOne - first block
|
||||||
|
|
|
@ -64,9 +64,6 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp
|
||||||
/** The previous active state for this block. */
|
/** The previous active state for this block. */
|
||||||
public boolean prevActive;
|
public boolean prevActive;
|
||||||
|
|
||||||
/** Whether or not this machine has been registered with the MachineryManager. */
|
|
||||||
public boolean registered;
|
|
||||||
|
|
||||||
/** The GUI texture path for this machine. */
|
/** The GUI texture path for this machine. */
|
||||||
public String guiTexturePath;
|
public String guiTexturePath;
|
||||||
|
|
||||||
|
@ -94,12 +91,6 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp
|
||||||
{
|
{
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
|
|
||||||
if(!registered && worldObj != null && !worldObj.isRemote)
|
|
||||||
{
|
|
||||||
Mekanism.manager.register(this);
|
|
||||||
registered = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(worldObj.isRemote)
|
if(worldObj.isRemote)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
@ -212,11 +203,6 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp
|
||||||
public void invalidate()
|
public void invalidate()
|
||||||
{
|
{
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
if(!worldObj.isRemote && registered)
|
|
||||||
{
|
|
||||||
Mekanism.manager.remove(this);
|
|
||||||
registered = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(worldObj.isRemote && audio != null)
|
if(worldObj.isRemote && audio != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,10 +34,16 @@ import net.minecraftforge.liquids.LiquidTank;
|
||||||
|
|
||||||
public class TileEntityElectricPump extends TileEntityElectricBlock implements ITankContainer, ISustainedTank
|
public class TileEntityElectricPump extends TileEntityElectricBlock implements ITankContainer, ISustainedTank
|
||||||
{
|
{
|
||||||
|
/** This pump's tank */
|
||||||
public LiquidTank liquidTank;
|
public LiquidTank liquidTank;
|
||||||
|
|
||||||
|
/** The nodes that have full sources near them or in them */
|
||||||
public Set<BlockWrapper> recurringNodes = new HashSet<BlockWrapper>();
|
public Set<BlockWrapper> recurringNodes = new HashSet<BlockWrapper>();
|
||||||
|
|
||||||
|
/** The nodes that have already been sucked up, but are held on to in order to remove dead blocks */
|
||||||
|
public Set<BlockWrapper> cleaningNodes = new HashSet<BlockWrapper>();
|
||||||
|
|
||||||
|
/** Random for this pump */
|
||||||
public Random random = new Random();
|
public Random random = new Random();
|
||||||
|
|
||||||
public TileEntityElectricPump()
|
public TileEntityElectricPump()
|
||||||
|
@ -117,6 +123,14 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!suck(true) && !clean(true))
|
||||||
|
{
|
||||||
|
cleaningNodes.clear();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
clean(true);
|
||||||
|
}
|
||||||
|
|
||||||
if(liquidTank.getLiquid() != null)
|
if(liquidTank.getLiquid() != null)
|
||||||
{
|
{
|
||||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||||
|
@ -134,24 +148,56 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if(!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0)
|
|
||||||
|
public boolean suck(boolean take)
|
||||||
|
{
|
||||||
|
if(!worldObj.isRemote && worldObj.getWorldTime() % 1 == 0)
|
||||||
{
|
{
|
||||||
if(electricityStored >= 100 && (liquidTank.getLiquid() == null || liquidTank.getLiquid().amount+LiquidContainerRegistry.BUCKET_VOLUME <= 10000))
|
if(/*electricityStored >= 100 && (liquidTank.getLiquid() == null || liquidTank.getLiquid().amount+LiquidContainerRegistry.BUCKET_VOLUME <= 10000)*/true)
|
||||||
{
|
{
|
||||||
List<BlockWrapper> tempPumpList = Arrays.asList(recurringNodes.toArray(new BlockWrapper[recurringNodes.size()]));
|
List<BlockWrapper> tempPumpList = Arrays.asList(recurringNodes.toArray(new BlockWrapper[recurringNodes.size()]));
|
||||||
Collections.shuffle(tempPumpList);
|
Collections.shuffle(tempPumpList);
|
||||||
|
|
||||||
|
for(BlockWrapper wrapper : cleaningNodes)
|
||||||
|
{
|
||||||
|
if(MekanismUtils.isLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
||||||
|
{
|
||||||
|
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z).isLiquidEqual(liquidTank.getLiquid()))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
setJoules(electricityStored - 100);
|
||||||
|
liquidTank.fill(MekanismUtils.getLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z), true);
|
||||||
|
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for(BlockWrapper wrapper : tempPumpList)
|
for(BlockWrapper wrapper : tempPumpList)
|
||||||
{
|
{
|
||||||
if(MekanismUtils.isLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
if(MekanismUtils.isLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
||||||
{
|
{
|
||||||
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquidAndCleanup(worldObj, wrapper.x, wrapper.y, wrapper.z).isLiquidEqual(liquidTank.getLiquid()))
|
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z).isLiquidEqual(liquidTank.getLiquid()))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
setJoules(electricityStored - 100);
|
||||||
|
liquidTank.fill(MekanismUtils.getLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z), true);
|
||||||
|
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(MekanismUtils.isDeadLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
{
|
{
|
||||||
setJoules(electricityStored - 100);
|
|
||||||
liquidTank.fill(MekanismUtils.getLiquidAndCleanup(worldObj, wrapper.x, wrapper.y, wrapper.z), true);
|
|
||||||
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,22 +207,34 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
int y = MekanismUtils.getCoords(wrapper, orientation)[1];
|
int y = MekanismUtils.getCoords(wrapper, orientation)[1];
|
||||||
int z = MekanismUtils.getCoords(wrapper, orientation)[2];
|
int z = MekanismUtils.getCoords(wrapper, orientation)[2];
|
||||||
|
|
||||||
if(MekanismUtils.getDistance(BlockWrapper.get(this), new BlockWrapper(x, y, z)) <= 60)
|
if(MekanismUtils.getDistance(BlockWrapper.get(this), new BlockWrapper(x, y, z)) <= 2340)
|
||||||
{
|
{
|
||||||
if(MekanismUtils.isLiquid(worldObj, x, y, z))
|
if(MekanismUtils.isLiquid(worldObj, x, y, z))
|
||||||
{
|
{
|
||||||
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquidAndCleanup(worldObj, x, y, z).isLiquidEqual(liquidTank.getLiquid()))
|
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquid(worldObj, x, y, z).isLiquidEqual(liquidTank.getLiquid()))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
setJoules(electricityStored - 100);
|
||||||
|
recurringNodes.add(new BlockWrapper(x, y, z));
|
||||||
|
liquidTank.fill(MekanismUtils.getLiquid(worldObj, x, y, z), true);
|
||||||
|
worldObj.setBlockToAir(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(MekanismUtils.isDeadLiquid(worldObj, x, y, z))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
{
|
{
|
||||||
setJoules(electricityStored - 100);
|
|
||||||
recurringNodes.add(new BlockWrapper(x, y, z));
|
|
||||||
liquidTank.fill(MekanismUtils.getLiquidAndCleanup(worldObj, x, y, z), true);
|
|
||||||
worldObj.setBlockToAir(x, y, z);
|
worldObj.setBlockToAir(x, y, z);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cleaningNodes.add(wrapper);
|
||||||
recurringNodes.remove(wrapper);
|
recurringNodes.remove(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,19 +248,65 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
|
|
||||||
if(MekanismUtils.isLiquid(worldObj, x, y, z))
|
if(MekanismUtils.isLiquid(worldObj, x, y, z))
|
||||||
{
|
{
|
||||||
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquidAndCleanup(worldObj, x, y, z).isLiquidEqual(liquidTank.getLiquid()))
|
if(liquidTank.getLiquid() == null || MekanismUtils.getLiquid(worldObj, x, y, z).isLiquidEqual(liquidTank.getLiquid()))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
setJoules(electricityStored - 100);
|
||||||
|
recurringNodes.add(new BlockWrapper(x, y, z));
|
||||||
|
liquidTank.fill(MekanismUtils.getLiquid(worldObj, x, y, z), true);
|
||||||
|
worldObj.setBlockToAir(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(MekanismUtils.isDeadLiquid(worldObj, x, y, z))
|
||||||
|
{
|
||||||
|
if(take)
|
||||||
{
|
{
|
||||||
setJoules(electricityStored - 100);
|
|
||||||
recurringNodes.add(new BlockWrapper(x, y, z));
|
|
||||||
liquidTank.fill(MekanismUtils.getLiquidAndCleanup(worldObj, x, y, z), true);
|
|
||||||
worldObj.setBlockToAir(x, y, z);
|
worldObj.setBlockToAir(x, y, z);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean clean(boolean take)
|
||||||
|
{
|
||||||
|
boolean took = false;
|
||||||
|
if(!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
for(BlockWrapper wrapper : cleaningNodes)
|
||||||
|
{
|
||||||
|
if(MekanismUtils.isDeadLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
||||||
|
{
|
||||||
|
took = true;
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(BlockWrapper wrapper : recurringNodes)
|
||||||
|
{
|
||||||
|
if(MekanismUtils.isDeadLiquid(worldObj, wrapper.x, wrapper.y, wrapper.z))
|
||||||
|
{
|
||||||
|
took = true;
|
||||||
|
if(take)
|
||||||
|
{
|
||||||
|
worldObj.setBlockToAir(wrapper.x, wrapper.y, wrapper.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return took;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -257,18 +361,32 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
nbtTags.setTag("liquidTank", liquidTank.writeToNBT(new NBTTagCompound()));
|
nbtTags.setTag("liquidTank", liquidTank.writeToNBT(new NBTTagCompound()));
|
||||||
}
|
}
|
||||||
|
|
||||||
NBTTagList tagList = new NBTTagList();
|
NBTTagList recurringList = new NBTTagList();
|
||||||
|
|
||||||
for(BlockWrapper wrapper : recurringNodes)
|
for(BlockWrapper wrapper : recurringNodes)
|
||||||
{
|
{
|
||||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
wrapper.write(tagCompound);
|
wrapper.write(tagCompound);
|
||||||
tagList.appendTag(tagCompound);
|
recurringList.appendTag(tagCompound);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!tagList.tagList.isEmpty())
|
if(!recurringList.tagList.isEmpty())
|
||||||
{
|
{
|
||||||
nbtTags.setTag("recurringNodes", tagList);
|
nbtTags.setTag("recurringNodes", recurringList);
|
||||||
|
}
|
||||||
|
|
||||||
|
NBTTagList cleaningList = new NBTTagList();
|
||||||
|
|
||||||
|
for(BlockWrapper wrapper : cleaningNodes)
|
||||||
|
{
|
||||||
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
|
wrapper.write(tagCompound);
|
||||||
|
cleaningList.appendTag(tagCompound);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!cleaningList.tagList.isEmpty())
|
||||||
|
{
|
||||||
|
nbtTags.setTag("cleaningNodes", cleaningList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,6 +409,16 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
recurringNodes.add(BlockWrapper.read((NBTTagCompound)tagList.tagAt(i)));
|
recurringNodes.add(BlockWrapper.read((NBTTagCompound)tagList.tagAt(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(nbtTags.hasKey("cleaningNodes"))
|
||||||
|
{
|
||||||
|
NBTTagList tagList = nbtTags.getTagList("cleaningNodes");
|
||||||
|
|
||||||
|
for(int i = 0; i < tagList.tagCount(); i++)
|
||||||
|
{
|
||||||
|
cleaningNodes.add(BlockWrapper.read((NBTTagCompound)tagList.tagAt(i)));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,9 +2,11 @@ package mekanism.generators.common;
|
||||||
|
|
||||||
import mekanism.api.InfuseObject;
|
import mekanism.api.InfuseObject;
|
||||||
import mekanism.api.InfusionType;
|
import mekanism.api.InfusionType;
|
||||||
|
import mekanism.common.IModule;
|
||||||
import mekanism.common.ItemMekanism;
|
import mekanism.common.ItemMekanism;
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
import mekanism.common.RecipeHandler;
|
import mekanism.common.RecipeHandler;
|
||||||
|
import mekanism.common.Version;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockLeaves;
|
import net.minecraft.block.BlockLeaves;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -12,6 +14,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.crafting.CraftingManager;
|
import net.minecraft.item.crafting.CraftingManager;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||||
|
import cpw.mods.fml.common.Loader;
|
||||||
import cpw.mods.fml.common.Mod;
|
import cpw.mods.fml.common.Mod;
|
||||||
import cpw.mods.fml.common.Mod.Init;
|
import cpw.mods.fml.common.Mod.Init;
|
||||||
import cpw.mods.fml.common.Mod.Instance;
|
import cpw.mods.fml.common.Mod.Instance;
|
||||||
|
@ -24,7 +27,7 @@ import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||||
|
|
||||||
@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "5.5.4", dependencies = "required-after:Mekanism")
|
@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "5.5.4", dependencies = "required-after:Mekanism")
|
||||||
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
|
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
|
||||||
public class MekanismGenerators
|
public class MekanismGenerators implements IModule
|
||||||
{
|
{
|
||||||
@SidedProxy(clientSide = "mekanism.generators.client.GeneratorsClientProxy", serverSide = "mekanism.generators.common.GeneratorsCommonProxy")
|
@SidedProxy(clientSide = "mekanism.generators.client.GeneratorsClientProxy", serverSide = "mekanism.generators.common.GeneratorsCommonProxy")
|
||||||
public static GeneratorsCommonProxy proxy;
|
public static GeneratorsCommonProxy proxy;
|
||||||
|
@ -32,6 +35,9 @@ public class MekanismGenerators
|
||||||
@Instance("MekanismGenerators")
|
@Instance("MekanismGenerators")
|
||||||
public static MekanismGenerators instance;
|
public static MekanismGenerators instance;
|
||||||
|
|
||||||
|
/** MekanismGenerators version number */
|
||||||
|
public static Version versionNumber = new Version(5, 5, 4);
|
||||||
|
|
||||||
//Items
|
//Items
|
||||||
public static Item BioFuel;
|
public static Item BioFuel;
|
||||||
public static Item ElectrolyticCore;
|
public static Item ElectrolyticCore;
|
||||||
|
@ -153,4 +159,16 @@ public class MekanismGenerators
|
||||||
|
|
||||||
OreDictionary.registerOre("itemBioFuel", new ItemStack(BioFuel));
|
OreDictionary.registerOre("itemBioFuel", new ItemStack(BioFuel));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Version getVersion()
|
||||||
|
{
|
||||||
|
return versionNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return "Generators";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,9 @@ import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.ForgeSubscribe;
|
import net.minecraftforge.event.ForgeSubscribe;
|
||||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
||||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||||
|
import mekanism.common.IModule;
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
|
import mekanism.common.Version;
|
||||||
import cpw.mods.fml.common.Mod;
|
import cpw.mods.fml.common.Mod;
|
||||||
import cpw.mods.fml.common.Mod.Instance;
|
import cpw.mods.fml.common.Mod.Instance;
|
||||||
import cpw.mods.fml.common.Mod.Init;
|
import cpw.mods.fml.common.Mod.Init;
|
||||||
|
@ -24,11 +26,14 @@ import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||||
|
|
||||||
@Mod(modid = "MekanismTools", name = "MekanismTools", version = "5.5.4", dependencies = "required-after:Mekanism")
|
@Mod(modid = "MekanismTools", name = "MekanismTools", version = "5.5.4", dependencies = "required-after:Mekanism")
|
||||||
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
|
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
|
||||||
public class MekanismTools
|
public class MekanismTools implements IModule
|
||||||
{
|
{
|
||||||
@Instance("MekanismTools")
|
@Instance("MekanismTools")
|
||||||
public static MekanismTools instance;
|
public static MekanismTools instance;
|
||||||
|
|
||||||
|
/** MekanismTools version number */
|
||||||
|
public static Version versionNumber = new Version(5, 5, 4);
|
||||||
|
|
||||||
//Enums: Tools
|
//Enums: Tools
|
||||||
public static EnumToolMaterial toolOBSIDIAN = EnumHelper.addToolMaterial("OBSIDIAN", 3, 2500, 20F, 10, 100);
|
public static EnumToolMaterial toolOBSIDIAN = EnumHelper.addToolMaterial("OBSIDIAN", 3, 2500, 20F, 10, 100);
|
||||||
public static EnumToolMaterial toolOBSIDIAN2 = EnumHelper.addToolMaterial("OBSIDIAN2", 3, 3000, 25F, 10, 100);
|
public static EnumToolMaterial toolOBSIDIAN2 = EnumHelper.addToolMaterial("OBSIDIAN2", 3, 3000, 25F, 10, 100);
|
||||||
|
@ -588,4 +593,16 @@ public class MekanismTools
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Version getVersion()
|
||||||
|
{
|
||||||
|
return versionNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return "Tools";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue