aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-08 21:27:30 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-08 21:27:30 +0000
commit15beaef7c208a5ec84c7ef92288c50e39387cdbd (patch)
tree54e9531c866891a0be286c703dd35dd8b7785ded /src/Java
parent11494f1b654a9088896e3e282267e90bb912fde6 (diff)
downloadGT5-Unofficial-15beaef7c208a5ec84c7ef92288c50e39387cdbd.tar.gz
GT5-Unofficial-15beaef7c208a5ec84c7ef92288c50e39387cdbd.tar.bz2
GT5-Unofficial-15beaef7c208a5ec84c7ef92288c50e39387cdbd.zip
% Allowed Hand-Pumps to function on all Tanks again & also allowed GT output slots. Closes #423.
% Adjusted Generic Bucket handling of Textures and Colouring. $ Fixed several issues with Hand-Pump logic, Fixes #353. $ Fixed load issues with FluidFactory.java.
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/core/common/CommonProxy.java5
-rw-r--r--src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java27
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FactoryFluid.java12
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidFactory.java57
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidPackage.java26
-rw-r--r--src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java102
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java125
-rw-r--r--src/Java/gtPlusPlus/plugin/agrichem/Core_Agrichem.java43
-rw-r--r--src/Java/gtPlusPlus/plugin/agrichem/fluids/FluidLoader.java21
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java2
10 files changed, 343 insertions, 77 deletions
diff --git a/src/Java/gtPlusPlus/core/common/CommonProxy.java b/src/Java/gtPlusPlus/core/common/CommonProxy.java
index 03b643abdb..7d4644f275 100644
--- a/src/Java/gtPlusPlus/core/common/CommonProxy.java
+++ b/src/Java/gtPlusPlus/core/common/CommonProxy.java
@@ -18,6 +18,7 @@ import gtPlusPlus.core.entity.InternalEntityRegistry;
import gtPlusPlus.core.entity.monster.EntityGiantChickenBase;
import gtPlusPlus.core.entity.monster.EntitySickBlaze;
import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct;
+import gtPlusPlus.core.fluids.FluidFactory;
import gtPlusPlus.core.handler.BookHandler;
import gtPlusPlus.core.handler.BurnableFuelHandler;
import gtPlusPlus.core.handler.COMPAT_HANDLER;
@@ -81,7 +82,7 @@ public class CommonProxy {
ModItems.init();
ModBlocks.init();
CI.preInit();
-
+ FluidFactory.preInit();
COMPAT_IntermodStaging.preInit(e);
BookHandler.run();
// Registration of entities and renderers
@@ -117,6 +118,7 @@ public class CommonProxy {
Logger.ERROR("[ERROR] Did not generate fluids at all.");
}
CI.init();
+ FluidFactory.init();
/**
* Register the Event Handlers.
@@ -158,6 +160,7 @@ public class CommonProxy {
public void postInit(final FMLPostInitializationEvent e) {
Logger.INFO("Cleaning up, doing postInit.");
PlayerCache.initCache();
+ FluidFactory.postInit();
// Make Burnables burnable
if (!CORE.burnables.isEmpty()) {
diff --git a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
index 2aa598fc96..dc7c9c2e78 100644
--- a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
+++ b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
@@ -9,6 +9,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.BlockFluidClassic;
@@ -20,12 +21,20 @@ public class BlockFluidBase extends BlockFluidClassic {
protected static IIcon stillIcon;
@SideOnly(Side.CLIENT)
protected static IIcon flowingIcon;
-
+
protected final short[] mRGB;
+
+ public BlockFluidBase(Fluid fluid, short[] aRGB) {
+ this(fluid, Material.water, aRGB);
+ }
+
public BlockFluidBase(Fluid fluid, Material material, short[] aRGB) {
super(fluid, material);
mRGB = aRGB;
+ this.setHardness(100.0F);
+ this.setLightOpacity(3);
+ this.disableStats();
}
@Override
@@ -76,4 +85,20 @@ public class BlockFluidBase extends BlockFluidClassic {
return super.recolourBlock(world, x, y, z, side, colour);
}
+ @Override
+ public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
+ return false;
+ }
+ return super.canDisplace(world, x, y, z);
+ }
+
+ @Override
+ public boolean displaceIfPossible(World world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
+ return false;
+ }
+ return super.displaceIfPossible(world, x, y, z);
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java b/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java
index befdf87c27..3359f18f7d 100644
--- a/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java
+++ b/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java
@@ -10,17 +10,25 @@ public class FactoryFluid extends Fluid implements Runnable {
private final String mTextureName;
private final short[] mRGBa;
- public FactoryFluid(String fluidName, int luminosity, int density, int temp, int viscosity, final short[] aRGBa) {
- this(fluidName, null, luminosity, density, temp, viscosity, false, EnumRarity.common, aRGBa);
+ public FactoryFluid(String fluidName, final short[] aRGBa) {
+ this(fluidName, null, Short.MIN_VALUE, Short.MIN_VALUE, Short.MIN_VALUE, Short.MIN_VALUE, false, EnumRarity.common, aRGBa);
}
+ public FactoryFluid(String fluidName, int luminosity, int density, int temp, int viscosity, final short[] aRGBa) {
+ this(fluidName, null, luminosity, density, temp, viscosity, (density == Short.MIN_VALUE || density >= 0 ? false : true), EnumRarity.common, aRGBa);
+ }
+
public FactoryFluid(String fluidName, Block aBlock, int luminosity, int density, int temp, int viscosity, boolean gas, EnumRarity aRarity, final short[] aRGBa) {
super(fluidName);
this.mRGBa = aRGBa;
this.setBlock(aBlock);
+ if (luminosity != Short.MIN_VALUE)
this.setLuminosity(luminosity);
+ if (density != Short.MIN_VALUE)
this.setDensity(density);
+ if (temp != Short.MIN_VALUE)
this.setTemperature(temp);
+ if (viscosity != Short.MIN_VALUE)
this.setViscosity(viscosity);
this.setGaseous(gas);
this.setRarity(aRarity);
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidFactory.java b/src/Java/gtPlusPlus/core/fluids/FluidFactory.java
index fad545ce68..dffd7f55e9 100644
--- a/src/Java/gtPlusPlus/core/fluids/FluidFactory.java
+++ b/src/Java/gtPlusPlus/core/fluids/FluidFactory.java
@@ -18,6 +18,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
@@ -52,8 +53,13 @@ public class FluidFactory {
public static final Map<Integer, Fluid> mMetaToFluidMap = new LinkedHashMap<Integer, Fluid>();
public static final Map<Integer, ItemStack> mMetaToBucketMap = new LinkedHashMap<Integer, ItemStack>();
public static final Map<Integer, Block> mMetaToBlockMap = new LinkedHashMap<Integer, Block>();
+
+
+ //Special Colour Handling
+ public static final Map<Integer, Integer> mMetaToColourMap = new LinkedHashMap<Integer, Integer>();
+ public static Item mGenericBucket;
private static FluidPackage mErrorFluid;
private static AutoMap<FluidPackage> mGeneratedFluids = new AutoMap<FluidPackage>();
@@ -61,10 +67,13 @@ public class FluidFactory {
}
- public static void init() {
- GameRegistry.registerItem(new ItemGenericFluidBucket(Blocks.air), "gtpp.bucket.generic");
- for (FluidPackage y : mGeneratedFluids) {
- FluidRegistry.registerFluid(y.get());
+ public static void init() {
+ mGenericBucket = new ItemGenericFluidBucket(Blocks.air);
+ GameRegistry.registerItem(mGenericBucket, "gtpp.bucket.generic");
+ for (FluidPackage y : mGeneratedFluids) {
+ if (!y.valid()) {
+ continue;
+ }
GameRegistry.registerBlock(y.mBlock, FluidItemBlock.class, "gtpp_" + y.mName);
FluidContainerRegistry.registerFluidContainer(y.get(), y.mBucket, new ItemStack(Items.bucket));
}
@@ -75,6 +84,34 @@ public class FluidFactory {
}
+ /**
+ * Generates a 'Water' type fluid.
+ * @param aID - The Fluid ID (Must be unique)
+ * @param aUnlocalName - Unlocalized Fluid Name
+ * @param aRGB - a {@link Short[]} containing the RGB of the FluidPackage.
+ * @return - A fully constructed & registered {@linkplain FluidPackage}
+ */
+ public static FluidPackage generate(int aID, String aUnlocalName, short[] aRGB) {
+ return generate(aID, aUnlocalName, Short.MIN_VALUE, Short.MIN_VALUE, Short.MIN_VALUE, Short.MIN_VALUE, aRGB);
+ }
+
+ /**
+ * Generate a {@link FluidPackage} from the data provided. This FluidPackage is automatically registered and handled internally.
+ * Pass in {@link Short}.MIN_VALUE for any of the Fluid Fields (Besides ID, Name or RGB) and it will default to water values.
+ * @param aID - The Fluid ID (Must be unique)
+ * @param aUnlocalName - Unlocalized Fluid Name
+ * @param luminosity - How bright is the fluid.
+ * @param density - completely arbitrary; negative density indicates that the fluid is
+ * lighter than air. Default value is approximately the real-life density of water in kg/m^3.
+ * @param temp - completely arbitrary; higher temperature indicates that the fluid is
+ * hotter than air. Default value is approximately the real-life room temperature of water in degrees Kelvin
+ * @param viscosity - completely arbitrary; negative values are not
+ * permissible. Default value is approximately the real-life density of water in m/s^2 (x10^-3). *
+ * Higher viscosity means that a fluid flows more slowly, like molasses.
+ * Lower viscosity means that a fluid flows more quickly, like helium.
+ * @param aRGB - a {@link Short[]} containing the RGB of the FluidPackage.
+ * @return - A fully constructed & registered {@linkplain FluidPackage}
+ */
public static FluidPackage generate(int aID, String aUnlocalName, int luminosity, int density, int temp,
int viscosity, short[] aRGB) {
@@ -91,7 +128,7 @@ public class FluidFactory {
Fluid aGenFluid = fluid(aUnlocalName, luminosity, density, temp, viscosity, aRGB);
Block aGenBlock = block(aGenFluid, aRGB);
- ItemStack aGenBucket = bucket();
+ ItemStack aGenBucket = bucket(aID);
aFluidToGenerate = new FluidPackage(aID, aUnlocalName, aGenFluid, aGenBucket, aGenBlock);
@@ -118,12 +155,16 @@ public class FluidFactory {
return new FactoryFluid(aUnlocalName, luminosity, density, temp, viscosity, aRGB);
}
- private static ItemStack bucket() {
- return null;
+ private static ItemStack bucket(int aID) {
+ return ItemGenericFluidBucket.registerFluidForBucket(aID);
}
private static Block block(Fluid aFluidForBlock, short[] aRGB) {
- return new BlockFluidBase(aFluidForBlock, Material.water, aRGB);
+ if (aFluidForBlock != null) {
+ FluidRegistry.registerFluid(aFluidForBlock);
+ return new BlockFluidBase(aFluidForBlock, aRGB);
+ }
+ return Blocks.dirt;
}
/**
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidPackage.java b/src/Java/gtPlusPlus/core/fluids/FluidPackage.java
index 7c8cf70c70..29f831776b 100644
--- a/src/Java/gtPlusPlus/core/fluids/FluidPackage.java
+++ b/src/Java/gtPlusPlus/core/fluids/FluidPackage.java
@@ -1,9 +1,26 @@
package gtPlusPlus.core.fluids;
-import static gtPlusPlus.core.fluids.FluidFactory.*;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
+import static gtPlusPlus.core.fluids.FluidFactory.mBlockToBucketMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBlockToFluidMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBlockToMetaMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBlockToNameMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBucketToBlockMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBucketToFluidMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBucketToMetaMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mBucketToNameMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mFluidToBlockMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mFluidToBucketMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mFluidToMetaMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mFluidToNameMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mMetaToBlockMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mMetaToBucketMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mMetaToColourMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mMetaToFluidMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mMetaToNameMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mNameToBlockMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mNameToBucketMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mNameToFluidMap;
+import static gtPlusPlus.core.fluids.FluidFactory.mNameToMetaMap;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
@@ -45,6 +62,7 @@ public class FluidPackage {
mMetaToBucketMap.put(aID, aBucket);
mMetaToBlockMap.put(aID, aBlock);
+ mMetaToColourMap.put(aID, aFluid.getColor());
mID = aID;
mName = aName;
diff --git a/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java b/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java
index ab2fe11d8c..d41fccb3ed 100644
--- a/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java
+++ b/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java
@@ -5,8 +5,13 @@ import java.util.List;
import java.util.Map;
import cpw.mods.fml.common.eventhandler.Event;
+import gtPlusPlus.api.objects.GregtechException;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@@ -22,10 +27,28 @@ import net.minecraftforge.event.entity.player.FillBucketEvent;
public class ItemGenericFluidBucket extends ItemBucket {
+ private static IIcon mBaseBucketTexture;
+ private static IIcon mOverlayBucketTexture;
+ private static AutoMap<Block> mInternalFluidCache = new AutoMap<Block>();
+
public ItemGenericFluidBucket(Block aFluid) {
super(aFluid);
this.setContainerItem(Items.bucket);
this.maxStackSize = 1;
+ mInternalFluidCache.put(aFluid);
+ }
+
+ public static ItemStack registerFluidForBucket(int aID) {
+
+ if (FluidFactory.mMetaToBucketMap.containsKey(aID)) {
+ try {
+ throw new GregtechException(""+aID+" is already registered! Unable to register fluid: "+FluidFactory.mMetaToFluidMap.get(aID).getLocalizedName());
+ } catch (GregtechException e) {
+ System.exit(0);
+ }
+ }
+ mInternalFluidCache.put(FluidFactory.mMetaToBlockMap.get(aID));
+ return ItemUtils.simpleMetaStack(FluidFactory.mGenericBucket, aID, 1);
}
Map<Integer, IIcon> mIconCache = new LinkedHashMap<Integer, IIcon>();
@@ -36,7 +59,7 @@ public class ItemGenericFluidBucket extends ItemBucket {
*/
public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- Block isFull = FluidFactory.mBucketToBlockMap.get(aStack);
+ Block isFull = FluidFactory.mMetaToBlockMap.get(aStack.getItemDamage());
boolean flag = isFull == Blocks.air;
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(aWorld, aPlayer, flag);
@@ -179,19 +202,27 @@ public class ItemGenericFluidBucket extends ItemBucket {
}
@Override
- public int getMetadata(int p_77647_1_) {
- // TODO Auto-generated method stub
- return super.getMetadata(p_77647_1_);
+ public boolean getHasSubtypes() {
+ return mInternalFluidCache.size() > 0;
}
@Override
- public boolean getHasSubtypes() {
- return super.getHasSubtypes();
+ public void getSubItems(Item item, CreativeTabs tab, List list) {
+ list.add(new ItemStack(item, 1, 0));
+ for (Block f : mInternalFluidCache) {
+ Integer aMeta;
+ if (f != null) {
+ aMeta = FluidFactory.mBlockToMetaMap.get(f);
+ if (aMeta != null) {
+ list.add(new ItemStack(item, 1, aMeta));
+ }
+ }
+ }
}
@Override
public int getMaxDamage() {
- return super.getMaxDamage();
+ return 512;
}
@Override
@@ -211,20 +242,20 @@ public class ItemGenericFluidBucket extends ItemBucket {
}
@Override
- public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) {
- // TODO Auto-generated method stub
- super.getSubItems(p_150895_1_, p_150895_2_, p_150895_3_);
- }
-
- @Override
public boolean isRepairable() {
return false;
}
@Override
- public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
- IIcon aTemp = mIconCache.get(stack.getItemDamage());
- return aTemp != null ? aTemp : super.getIcon(stack, renderPass, player, usingItem, useRemaining);
+ public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
+ if (stack != null && renderPass == 1) {
+ return mOverlayBucketTexture;
+ }
+ else {
+ return mBaseBucketTexture;
+ }
+ /*IIcon aTemp = mIconCache.get(stack.getItemDamage());
+ return aTemp != null ? aTemp : super.getIcon(stack, renderPass, player, usingItem, useRemaining);*/
}
@Override
@@ -234,7 +265,7 @@ public class ItemGenericFluidBucket extends ItemBucket {
@Override
public int getMaxDamage(ItemStack stack) {
- return 0;
+ return 512;
}
@Override
@@ -245,6 +276,43 @@ public class ItemGenericFluidBucket extends ItemBucket {
@Override
public int getItemEnchantability(ItemStack stack) {
return 0;
+ }
+
+ @Override
+ public IIcon getIconFromDamageForRenderPass(final int damage, final int pass) {
+ if (pass == 1) {
+ return mOverlayBucketTexture;
+ }
+ else {
+ return mBaseBucketTexture;
+ }
+ }
+
+ @Override
+ public void registerIcons(final IIconRegister i) {
+ mBaseBucketTexture = i.registerIcon("bucket_empty");
+ mOverlayBucketTexture = i.registerIcon(CORE.MODID+":bucket.generic.overlay");
+ }
+
+ @Override
+ public boolean tryPlaceContainedLiquid(World p_77875_1_, int p_77875_2_, int p_77875_3_, int p_77875_4_) {
+ return tryPlaceContainedLiquid(Blocks.air, p_77875_1_, p_77875_2_, p_77875_3_, p_77875_4_);
+ }
+
+ @Override
+ public int getColorFromItemStack(ItemStack aStack, int aPass) {
+ if (aPass == 0) {
+ return super.getColorFromItemStack(aStack, aPass);
+ }
+ else {
+ return FluidFactory.mMetaToColourMap.get(aStack.getItemDamage());
+ }
+ }
+
+ @Override
+ public boolean requiresMultipleRenderPasses() {
+ return true;
}
+
}
diff --git a/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java b/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
index 721ebc8c24..4616ab0aa0 100644
--- a/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
+++ b/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
@@ -19,6 +19,7 @@ import gregtech.api.interfaces.IItemBehaviour;
import gregtech.api.interfaces.IItemContainer;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.objects.ItemData;
import gregtech.api.util.GT_LanguageManager;
@@ -110,8 +111,8 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
aPumpName, // Name
aEuMax, // Eu Storage
(short) aTier, // Tier
- "Can be used to remove fluids from GT machine input slots.", // Tooltip
- EnumRarity.common, // Rarity
+ "Can be used to remove fluids from GT machine input & output slots.", // Tooltip
+ aTier <= 0 ? EnumRarity.common : aTier == 1 ? EnumRarity.uncommon : aTier == 2 ? EnumRarity.rare : aTier == 3 ? EnumRarity.epic : EnumRarity.common, // Rarity
EnumChatFormatting.GRAY, // Desc colour
false // Effect?
);
@@ -183,7 +184,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return false;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
+ @SuppressWarnings({ "unchecked" })
@Override
public void addInformation(final ItemStack aStack, final EntityPlayer aPlayer, List aList, final boolean aF3_H) {
// aList.add("Meta: "+(aStack.getItemDamage()-mOffset));
@@ -498,7 +499,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return this;
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings({ "unchecked" })
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(final Item var1, final CreativeTabs aCreativeTab, final List aList) {
@@ -970,9 +971,10 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
if ((tTileEntity instanceof IGregTechTileEntity)) {
return this.drainTankGT(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ);
}
- /*else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) {
+ //Try support Standard Fluid Tanks too (May disable if dupes appear again)
+ else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) {
return this.drainIFluidTank(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ);
- }*/
+ }
}
}
}
@@ -1097,7 +1099,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
FluidStack f = aTileEntity.getFluid();
Logger.WARNING("Returning Fluid stack from tile. Found: "
+ (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing"));
- return f.copy();
+ return f;
}
public FluidStack getStoredFluidOfVanillaTank(IFluidHandler aTileEntity) {
@@ -1128,7 +1130,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
FluidStack f = ((IFluidTank) aTileEntity).getFluid();
if (aSetFluid == null) {
aSetFluid = f;
- aSetFluid.amount = 0;
+ aSetFluid.amount = f.amount;
}
int toDrain = (f.amount - aSetFluid.amount);
FluidStack newStack;
@@ -1146,44 +1148,48 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return false;
}
}
- else {
- Logger.WARNING("Tile Was instanceof IFluidHandler.");
- FluidStack containedStack = null;
- if ((IFluidHandler) aTileEntity != null) {
- FluidTankInfo[] a1 = (((IFluidHandler) aTileEntity).getTankInfo(ForgeDirection.UNKNOWN));
- if (a1 != null) {
- if (a1[0] != null) {
- Logger.WARNING("Found Fluid in Tank.");
- containedStack = a1[0].fluid;
- }
- }
+ else {
+
+ //Rewrite Fluid handling for Vanilla type tanks
+ if (!IFluidHandler.class.isInstance(aTileEntity)) {
+ Logger.WARNING("Tile Was not an instance of IFluidHandler.");
+ return false;
}
- if (containedStack != null) {
- if (aSetFluid == null) {
- aSetFluid = containedStack;
- aSetFluid.amount = 0;
- }
- int toDrain = (containedStack.amount - aSetFluid.amount);
- Logger.WARNING("Found "+containedStack.amount+"L of "+containedStack.getLocalizedName()+". Trying to drain "+toDrain+"L.");
- FluidStack newStack;
- if (toDrain <= 0) {
- Logger.WARNING("Draining Nothing");
- newStack = containedStack;
- } else {
- Logger.WARNING("Draining Something");
- newStack = ((IFluidTank) aTileEntity).drain(toDrain, true);
+
+
+ IFluidHandler aTank = (IFluidHandler) aTileEntity;
+ FluidStack aTankContents = null;
+ FluidTankInfo[] a1 = aTank.getTankInfo(ForgeDirection.UNKNOWN);
+ if (a1 != null) {
+ if (a1[0] != null) {
+ aTankContents = a1[0].fluid;
+ Logger.WARNING("Found Fluid in Tank. "+aTankContents.getLocalizedName()+" - "+aTankContents.amount);
}
-
- if (newStack.isFluidEqual(aSetFluid) && newStack.amount == aSetFluid.amount) {
- Logger.WARNING("Removed fluid from vanilla IFluidHandler successfully.");
+ }
+ if (aSetFluid == null) {
+ Logger.WARNING("Setting fluid to tank contents, as we're going to empty it totally.");
+ aSetFluid = aTankContents.copy();
+ }
+ else {
+ Logger.WARNING("Setting fluid to tank contents, as we're going to empty it totally.");
+ }
+ Logger.WARNING("Tile Was instance of IFluidHandler. Trying to Drain "+aSetFluid.getLocalizedName()+" - "+aSetFluid.amount);
+
+ if (a1 == null || aTankContents == null) {
+ Logger.WARNING("Tank is empty.");
+ return false;
+ }
+ //Found some Fluid in the tank
+ else {
+ FluidStack aDrainedStack = aTank.drain(ForgeDirection.UNKNOWN, aSetFluid, true);
+ if (aDrainedStack.isFluidStackIdentical(aSetFluid)) {
+ Logger.WARNING("Drained!");
return true;
- } else {
- Logger.WARNING("Failed trying to remove fluid from vanilla IFluidHandler.");
- return false;
}
- } else {
- Logger.WARNING("Could not drain vanilla tank, IFluidHandler claims there is no fluid.");
- return false;
+ else {
+ Logger.WARNING("Partially Drained! This is probably an error.");
+ return true;
+ }
}
}
} else {
@@ -1216,9 +1222,36 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
public FluidStack getStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity) {
FluidStack f = aTileEntity.mFluid;
+
+ //Let's see if this machine has output fluid too
+ if (f == null) {
+ Logger.WARNING("Could not find any input fluid, checking output if possible.");
+ if (aTileEntity instanceof GT_MetaTileEntity_BasicMachine) {
+ GT_MetaTileEntity_BasicMachine g = (GT_MetaTileEntity_BasicMachine) aTileEntity;
+ Logger.WARNING("Tile is a Basic Machine of some sort - "+g.mNEIName);
+ if (g != null) {
+ f = g.mOutputFluid;
+ if (f != null) {
+ Logger.WARNING("Found output fluid! "+f.getLocalizedName());
+ }
+ else {
+ Logger.WARNING("Did not find anything!");
+ f = g.getFluid();
+ if (f != null) {
+ Logger.WARNING("Found fluid! "+f.getLocalizedName());
+ }
+ else {
+ Logger.WARNING("Did not find anything!");
+ f = g.getFluid();
+ }
+ }
+ }
+ }
+ }
+
Logger.WARNING("Returning Fluid stack from tile. Found: "
+ (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing"));
- return f.copy();
+ return f;
}
public boolean setStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity, FluidStack aSetFluid) {
@@ -1240,6 +1273,12 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
public boolean setStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity, FluidStack aSetFluid) {
try {
+
+ //Try Handle Outputs First
+ if (aTileEntity.setDrainableStack(aSetFluid) != null) {
+ return true;
+ }
+
aTileEntity.mFluid = aSetFluid;
boolean b = aTileEntity.mFluid == aSetFluid;
Logger.WARNING("Trying to set Tile's tank. - Behaviour Class. [3] " + b);
diff --git a/src/Java/gtPlusPlus/plugin/agrichem/Core_Agrichem.java b/src/Java/gtPlusPlus/plugin/agrichem/Core_Agrichem.java
new file mode 100644
index 0000000000..d515375149
--- /dev/null
+++ b/src/Java/gtPlusPlus/plugin/agrichem/Core_Agrichem.java
@@ -0,0 +1,43 @@
+package gtPlusPlus.plugin.agrichem;
+
+import gtPlusPlus.api.interfaces.IPlugin;
+import gtPlusPlus.plugin.agrichem.fluids.FluidLoader;
+import gtPlusPlus.plugin.manager.Core_Manager;
+
+public class Core_Agrichem implements IPlugin {
+
+ final static Core_Agrichem mInstance;
+
+ static {
+ mInstance = new Core_Agrichem();
+ Core_Manager.registerPlugin(mInstance);
+ mInstance.log("Preparing "+mInstance.getPluginName()+" for use.");
+ }
+
+ @Override
+ public boolean preInit() {
+ FluidLoader.generate();
+ return true;
+ }
+
+ @Override
+ public boolean init() {
+ return true;
+ }
+
+ @Override
+ public boolean postInit() {
+ return true;
+ }
+
+ @Override
+ public String getPluginName() {
+ return "GT++ Agrichemistry Module";
+ }
+
+ @Override
+ public String getPluginAbbreviation() {
+ return "FARM";
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/plugin/agrichem/fluids/FluidLoader.java b/src/Java/gtPlusPlus/plugin/agrichem/fluids/FluidLoader.java
new file mode 100644
index 0000000000..a60a8c09de
--- /dev/null
+++ b/src/Java/gtPlusPlus/plugin/agrichem/fluids/FluidLoader.java
@@ -0,0 +1,21 @@
+package gtPlusPlus.plugin.agrichem.fluids;
+
+import gtPlusPlus.core.fluids.FluidFactory;
+
+public class FluidLoader {
+
+ private static final int ID_DIRTY_WATER = 50;
+ private static final int ID_RAW_SEWERAGE = 51;
+ private static final int ID_GUANO = 52;
+ private static final int ID_POOPJUICE = 53;
+
+ public static void generate() {
+
+ FluidFactory.generate(ID_DIRTY_WATER, "dirtywater", new short[] {25, 25, 180});
+ FluidFactory.generate(ID_RAW_SEWERAGE, "sewerage", new short[] {100, 45, 25});
+ FluidFactory.generate(ID_GUANO, "guano", new short[] {175, 175, 180});
+ FluidFactory.generate(ID_POOPJUICE, "poo", new short[] {75, 45, 10});
+
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
index e6fecf5d18..07c8a4a7ac 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
@@ -93,7 +93,7 @@ public class GregtechMetaTileEntity_Refinery extends GregtechMeta_MultiBlockBase
g.mRecipeMap = null;
}
boolean ab = super.checkRecipeGeneric();
- Logger.INFO("Did Recipe? "+ab);
+ //Logger.INFO("Did Recipe? "+ab);
return ab;
}