aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-08 07:48:27 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-03-08 07:48:27 +0000
commit4b089469f052772b65ccdbed0dbbf41339f8c924 (patch)
tree7ba4a7cc83d4bb7585ffcef3f34145cb20716a1b /src/Java/gtPlusPlus
parent40644c9f57ce7a931d9d955529583cc1cba623a5 (diff)
downloadGT5-Unofficial-4b089469f052772b65ccdbed0dbbf41339f8c924.tar.gz
GT5-Unofficial-4b089469f052772b65ccdbed0dbbf41339f8c924.tar.bz2
GT5-Unofficial-4b089469f052772b65ccdbed0dbbf41339f8c924.zip
$ Attempted to rewrite unused fluid system.
$ Made Queued Chemistry Packages load recipes in Post-Init.
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r--src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java94
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FactoryFluid.java25
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidFactory.java168
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidPackage.java65
-rw-r--r--src/Java/gtPlusPlus/core/fluids/GenericFluid.java70
-rw-r--r--src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java250
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java3
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java6
8 files changed, 535 insertions, 146 deletions
diff --git a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
index 9a3958a908..24ebf0ecca 100644
--- a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
+++ b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
@@ -1,19 +1,15 @@
package gtPlusPlus.core.fluids;
-import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-
+import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.potion.Potion;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
-
-import gtPlusPlus.core.creative.AddToCreativeTab;
-import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.material.Material;
-import gtPlusPlus.core.util.Utils;
-import gtPlusPlus.core.util.math.MathUtils;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fluids.Fluid;
@@ -24,90 +20,46 @@ public class BlockFluidBase extends BlockFluidClassic {
@SideOnly(Side.CLIENT)
protected IIcon flowingIcon;
- protected int colour;
- protected Material fluidMaterial;
- final String displayName;
-
- @SuppressWarnings("deprecation")
- public BlockFluidBase(final Fluid fluid, final Material material) {
- super(fluid, net.minecraft.block.material.Material.lava);
- final short[] tempColour = material.getRGBA();
- this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
- this.fluidMaterial = material;
- this.setCreativeTab(AddToCreativeTab.tabOther);
- this.displayName = material.getLocalizedName();
- LanguageRegistry.addName(this, "Molten "+this.displayName+" ["+MathUtils.celsiusToKelvin(this.fluidMaterial.getBoilingPointC())+"K]");
- this.setBlockName(this.GetProperName());
+ public BlockFluidBase(Fluid fluid, Material material) {
+ super(fluid, material);
}
- @SuppressWarnings("deprecation")
- public BlockFluidBase(final String fluidName, final Fluid fluid, final short[] colour) {
- super(fluid, net.minecraft.block.material.Material.lava);
- final short[] tempColour = colour;
- this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
- this.setCreativeTab(AddToCreativeTab.tabOther);
- this.displayName = fluidName;
- LanguageRegistry.addName(this, "Molten "+this.displayName);
- this.setBlockName(this.GetProperName());
+ @Override
+ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity ent) {
+ if (!(ent instanceof EntityLivingBase)) {
+ return;
+ }
+ EntityLivingBase player = (EntityLivingBase) ent;
+ int pot = world.rand.nextInt(Potion.potionTypes.length);
+ Potion.potionTypes[pot].performEffect(player, 40);
}
@Override
- public IIcon getIcon(final int side, final int meta) {
- return ((side == 0) || (side == 1))? this.stillIcon : this.flowingIcon;
+ public IIcon getIcon(int side, int meta) {
+ return (side == 0 || side == 1) ? stillIcon : flowingIcon;
}
@SideOnly(Side.CLIENT)
@Override
- public void registerBlockIcons(final IIconRegister register) {
- this.stillIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
- this.flowingIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
+ public void registerBlockIcons(IIconRegister register) {
+ stillIcon = register.registerIcon("chaotica:pureChaosStill");
+ flowingIcon = register.registerIcon("chaotica:pureChaosFlowing");
}
@Override
- public boolean canDisplace(final IBlockAccess world, final int x, final int y, final int z) {
- if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
+ 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(final World world, final int x, final int y, final int z) {
- if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
+ 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);
}
- @Override
- public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, final int par3, final int par4){
-
- if (this.colour == 0){
- return MathUtils.generateSingularRandomHexValue();
- }
-
- return this.colour;
- }
-
- @Override
- public int getRenderColor(final int aMeta) {
- if (this.colour == 0){
- return MathUtils.generateSingularRandomHexValue();
- }
-
- return this.colour;
- }
-
- public String GetProperName() {
- String tempIngot;
-
- tempIngot = "Molten "+this.displayName;
-
- return tempIngot;
- }
-
- public Material getFluidMaterial(){
- return this.fluidMaterial;
- }
-
}
diff --git a/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java b/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java
new file mode 100644
index 0000000000..9755dd42b2
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/FactoryFluid.java
@@ -0,0 +1,25 @@
+package gtPlusPlus.core.fluids;
+import net.minecraft.block.Block;
+import net.minecraft.item.EnumRarity;
+import net.minecraftforge.fluids.Fluid;
+
+public class FactoryFluid extends Fluid {
+
+
+ public FactoryFluid(String fluidName, int luminosity, int density, int temp, int viscosity) {
+ this(fluidName, null, luminosity, density, temp, viscosity, false, EnumRarity.common);
+ }
+
+
+ public FactoryFluid(String fluidName, Block aBlock, int luminosity, int density, int temp, int viscosity, boolean gas, EnumRarity aRarity) {
+ super(fluidName);
+ this.setBlock(aBlock);
+ this.setLuminosity(luminosity);
+ this.setDensity(density);
+ this.setTemperature(temp);
+ this.setViscosity(viscosity);
+ this.setGaseous(gas);
+ this.setRarity(aRarity);
+ }
+
+ } \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidFactory.java b/src/Java/gtPlusPlus/core/fluids/FluidFactory.java
new file mode 100644
index 0000000000..fec008ecff
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/FluidFactory.java
@@ -0,0 +1,168 @@
+package gtPlusPlus.core.fluids;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import cpw.mods.fml.common.eventhandler.Event.Result;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
+import gtPlusPlus.GTplusplus;
+import gtPlusPlus.GTplusplus.INIT_PHASE;
+import gtPlusPlus.api.objects.GregtechException;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.FillBucketEvent;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class FluidFactory {
+
+ public static final Map<String, Fluid> mNameToFluidMap = new LinkedHashMap<String, Fluid>();
+ public static final Map<String, ItemStack> mNameToBucketMap = new LinkedHashMap<String, ItemStack>();
+ public static final Map<String, Block> mNameToBlockMap = new LinkedHashMap<String, Block>();
+ public static final Map<String, Integer> mNameToMetaMap = new LinkedHashMap<String, Integer>();
+
+ public static final Map<Fluid, String> mFluidToNameMap = new LinkedHashMap<Fluid, String>();
+ public static final Map<Fluid, ItemStack> mFluidToBucketMap = new LinkedHashMap<Fluid, ItemStack>();
+ public static final Map<Fluid, Block> mFluidToBlockMap = new LinkedHashMap<Fluid, Block>();
+ public static final Map<Fluid, Integer> mFluidToMetaMap = new LinkedHashMap<Fluid, Integer>();
+
+ public static final Map<ItemStack, Fluid> mBucketToFluidMap = new LinkedHashMap<ItemStack, Fluid>();
+ public static final Map<ItemStack, String> mBucketToNameMap = new LinkedHashMap<ItemStack, String>();
+ public static final Map<ItemStack, Block> mBucketToBlockMap = new LinkedHashMap<ItemStack, Block>();
+ public static final Map<ItemStack, Integer> mBucketToMetaMap = new LinkedHashMap<ItemStack, Integer>();
+
+ public static final Map<Block, String> mBlockToNameMap = new LinkedHashMap<Block, String>();
+ public static final Map<Block, Fluid> mBlockToFluidMap = new LinkedHashMap<Block, Fluid>();
+ public static final Map<Block, ItemStack> mBlockToBucketMap = new LinkedHashMap<Block, ItemStack>();
+ public static final Map<Block, Integer> mBlockToMetaMap = new LinkedHashMap<Block, Integer>();
+
+ public static final Map<Integer, String> mMetaToNameMap = new LinkedHashMap<Integer, String>();
+ 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>();
+
+
+ private static Fluid mErrorFluid;
+ private static AutoMap<FluidPackage> mGeneratedFluids = new AutoMap<FluidPackage>();
+
+ public static void preInit() {
+
+ }
+
+ public static void init() {
+ GameRegistry.registerItem(new ItemGenericFluidBucket(Blocks.air), "gtpp.bucket.generic");
+ for (FluidPackage y : mGeneratedFluids) {
+ FluidRegistry.registerFluid(y.get());
+ GameRegistry.registerBlock(y.mBlock, "gtpp_" + y.mName);
+ FluidContainerRegistry.registerFluidContainer(y.get(), y.mBucket, new ItemStack(Items.bucket));
+ }
+ Utils.registerEvent(BucketHandler.INSTANCE);
+ }
+
+ public static void postInit() {
+
+ }
+
+ public static FluidPackage generate(int aID, String aUnlocalName, int luminosity, int density, int temp,
+ int viscosity) {
+
+ FluidPackage aFluidToGenerate = null;
+
+ // Check Load Phase for some Safety, only allow this to be called in Pre-Init.
+ if (GTplusplus.CURRENT_LOAD_PHASE != INIT_PHASE.PRE_INIT) {
+ try {
+ throw new GregtechException("Cannot generate Fluid Packages outside of Pre-Init!");
+ } catch (GregtechException e) {
+ System.exit(0);
+ }
+ }
+
+ Fluid aGenFluid = fluid(aUnlocalName, 0, 0, 0, 0);
+ Block aGenBlock = block();
+ ItemStack aGenBucket = bucket();
+
+ aFluidToGenerate = new FluidPackage(aID, aUnlocalName, aGenFluid, aGenBucket, aGenBlock);
+
+ if (aFluidToGenerate.valid()) {
+ FluidRegistry.registerFluid(aFluidToGenerate.get());
+ }
+
+
+ // Handle Bad generation
+ if (mErrorFluid == null) {
+ mErrorFluid = new Fluid("baderrorfluid.gtpp").setViscosity(4000);
+ }
+ if (aFluidToGenerate != null) {
+ mGeneratedFluids.put(aFluidToGenerate);
+ }
+ return aFluidToGenerate;
+ }
+
+
+
+ private static Fluid fluid(String aUnlocalName, int luminosity, int density, int temp,
+ int viscosity) {
+ return new FactoryFluid(aUnlocalName, 0, 0, 0, 0);
+ }
+
+ private static ItemStack bucket() {
+ return null;
+ }
+
+ private static Block block() {
+ return null;
+ }
+
+ /**
+ * Copyright © SpaceToad, 2011 http://www.mod-buildcraft.com BuildCraft is
+ * distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL.
+ * Please check the contents of the license located in
+ * http://www.mod-buildcraft.com/MMPL-1.0.txt
+ *
+ * Modified version of the BC BucketHandler, except using ItemStacks > Items
+ * (Why?)
+ *
+ * @author Alkalus
+ */
+
+ public static class BucketHandler {
+
+ public static BucketHandler INSTANCE = new BucketHandler();
+
+ private BucketHandler() {
+
+ }
+
+ @SubscribeEvent
+ public void onBucketFill(FillBucketEvent event) {
+ ItemStack result = fillCustomBucket(event.world, event.target);
+ if (result == null) {
+ return;
+ }
+ event.result = result;
+ event.setResult(Result.ALLOW);
+ }
+
+ private ItemStack fillCustomBucket(World world, MovingObjectPosition pos) {
+ Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ);
+ ItemStack bucket = mBlockToBucketMap.get(block);
+ if (bucket != null && world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ) == 0) {
+ world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ);
+ return ItemUtils.getSimpleStack(bucket, 1);
+ } else {
+ return null;
+ }
+ }
+
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidPackage.java b/src/Java/gtPlusPlus/core/fluids/FluidPackage.java
new file mode 100644
index 0000000000..7c8cf70c70
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/FluidPackage.java
@@ -0,0 +1,65 @@
+package gtPlusPlus.core.fluids;
+
+import static gtPlusPlus.core.fluids.FluidFactory.*;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+
+public class FluidPackage {
+
+
+ public final int mID;
+ public final String mName;
+ private final Fluid mFluid;
+ public final ItemStack mBucket;
+ public final Block mBlock;
+
+ public FluidPackage(int aID, String aName, Fluid aFluid, ItemStack aBucket, Block aBlock) {
+
+ mNameToFluidMap.put(aName, aFluid);
+ mNameToBucketMap.put(aName, aBucket);
+ mNameToBlockMap.put(aName, aBlock);
+ mNameToMetaMap.put(aName, aID);
+
+ mFluidToNameMap.put(aFluid, aName);
+ mFluidToBucketMap.put(aFluid, aBucket);
+ mFluidToBlockMap.put(aFluid, aBlock);
+ mFluidToMetaMap.put(aFluid, aID);
+
+ mBucketToFluidMap.put(aBucket, aFluid);
+ mBucketToNameMap.put(aBucket, aName);
+ mBucketToBlockMap.put(aBucket, aBlock);
+ mBucketToMetaMap.put(aBucket, aID);
+
+ mBlockToNameMap.put(aBlock, aName);
+ mBlockToFluidMap.put(aBlock, aFluid);
+ mBlockToBucketMap.put(aBlock, aBucket);
+ mBlockToMetaMap.put(aBlock, aID);
+
+ mMetaToNameMap.put(aID, aName);
+ mMetaToFluidMap.put(aID, aFluid);
+ mMetaToBucketMap.put(aID, aBucket);
+ mMetaToBlockMap.put(aID, aBlock);
+
+
+ mID = aID;
+ mName = aName;
+ mFluid = aFluid;
+ mBucket = aBucket;
+ mBlock = aBlock;
+
+ }
+
+ public Fluid get() {
+ return mFluid;
+ }
+
+ public boolean valid() {
+ return mName != null && mName.length() > 0 && mFluid != null && mBucket != null && mBlock != null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/fluids/GenericFluid.java b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
deleted file mode 100644
index 4f1f5df006..0000000000
--- a/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package gtPlusPlus.core.fluids;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-
-import net.minecraft.block.Block;
-
-import gtPlusPlus.core.item.base.itemblock.ItemBlockFluid;
-import gtPlusPlus.core.material.Material;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidRegistry;
-
-public class GenericFluid extends Fluid{
-
- protected final String fluidName;
- protected final Fluid fluidFactory;
- protected final Block blockFactory;
- protected final short[] rgba;
-
- public GenericFluid(final String displayName, final String fluidName, final int luminosity, final int density, final int temperature, final int viscosity, final boolean isGas, final short[] rgba) {
- super(fluidName);
- this.fluidFactory = this;
- this.rgba = rgba;
- this.fluidName = fluidName;
- this.fluidFactory.setLuminosity(luminosity);
- this.fluidFactory.setDensity(density);
- this.fluidFactory.setTemperature(temperature);
- this.fluidFactory.setViscosity(viscosity);
- this.fluidFactory.setGaseous(isGas);
- this.fluidFactory.setUnlocalizedName("fluid"+fluidName);
- FluidRegistry.registerFluid(this.fluidFactory);
- this.blockFactory = new BlockFluidBase(displayName, this.fluidFactory, rgba).setBlockName("fluidblock"+fluidName);
- GameRegistry.registerBlock(this.blockFactory, ItemBlockFluid.class, this.blockFactory.getUnlocalizedName().substring(5));
- this.fluidFactory.setBlock(this.blockFactory);
-
- //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
-
- }
-
- public GenericFluid(final Material fluidMaterial, final int luminosity, final int density, final int temperature, final int viscosity, final boolean isGas) {
-
- super(fluidMaterial.getUnlocalizedName());
- //IC2_ItemFluidCell fullFluidCell = emptyCell.fill(emptyCell, FluidUtils.getFluidStack(getUnlocalizedName(), 1), true);
-
- this.fluidFactory = this;
- this.rgba = fluidMaterial.getRGBA();
- this.fluidName = fluidMaterial.getUnlocalizedName();
- this.fluidFactory.setLuminosity(luminosity);
- this.fluidFactory.setDensity(density);
- this.fluidFactory.setTemperature(temperature);
- this.fluidFactory.setViscosity(viscosity);
- this.fluidFactory.setGaseous(isGas);
- this.fluidFactory.setUnlocalizedName("fluid"+this.fluidName);
- FluidRegistry.registerFluid(this.fluidFactory);
- this.blockFactory = new BlockFluidBase(this.fluidFactory, fluidMaterial).setBlockName("fluidblock"+this.fluidName);
- GameRegistry.registerBlock(this.blockFactory, ItemBlockFluid.class, this.blockFactory.getUnlocalizedName().substring(5));
- this.fluidFactory.setBlock(this.blockFactory);
- //IC2_ItemFluidCell emptyCell = new IC2_ItemFluidCell(fluidName);
- /*if (aFullContainer != null && aEmptyContainer != null && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) {
- GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
- }*/
- //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
-
- }
-
- @Override
- public int getColor() {
- return (Math.max(0, Math.min(255, this.rgba[0])) << 16) | (Math.max(0, Math.min(255, this.rgba[1])) << 8) | Math.max(0, Math.min(255, this.rgba[2]));
- }
-
-}
diff --git a/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java b/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java
new file mode 100644
index 0000000000..ab2fe11d8c
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/ItemGenericFluidBucket.java
@@ -0,0 +1,250 @@
+package gtPlusPlus.core.fluids;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import cpw.mods.fml.common.eventhandler.Event;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBucket;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.player.FillBucketEvent;
+
+public class ItemGenericFluidBucket extends ItemBucket {
+
+ public ItemGenericFluidBucket(Block aFluid) {
+ super(aFluid);
+ this.setContainerItem(Items.bucket);
+ this.maxStackSize = 1;
+ }
+
+ Map<Integer, IIcon> mIconCache = new LinkedHashMap<Integer, IIcon>();
+
+ /**
+ * Called whenever this item is equipped and the right mouse button is pressed.
+ * Args: itemStack, world, entityPlayer
+ */
+ public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+
+ Block isFull = FluidFactory.mBucketToBlockMap.get(aStack);
+
+ boolean flag = isFull == Blocks.air;
+ MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(aWorld, aPlayer, flag);
+
+ if (movingobjectposition == null || isFull == null) {
+ return aStack;
+ } else {
+ FillBucketEvent event = new FillBucketEvent(aPlayer, aStack, aWorld, movingobjectposition);
+ if (MinecraftForge.EVENT_BUS.post(event)) {
+ return aStack;
+ }
+
+ if (event.getResult() == Event.Result.ALLOW) {
+ if (aPlayer.capabilities.isCreativeMode) {
+ return aStack;
+ }
+
+ if (--aStack.stackSize <= 0) {
+ return event.result;
+ }
+
+ if (!aPlayer.inventory.addItemStackToInventory(event.result)) {
+ aPlayer.dropPlayerItemWithRandomChoice(event.result, false);
+ }
+
+ return aStack;
+ }
+ if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ int i = movingobjectposition.blockX;
+ int j = movingobjectposition.blockY;
+ int k = movingobjectposition.blockZ;
+
+ if (!aWorld.canMineBlock(aPlayer, i, j, k)) {
+ return aStack;
+ }
+
+ if (flag) {
+ if (!aPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, aStack)) {
+ return aStack;
+ }
+
+ Material material = aWorld.getBlock(i, j, k).getMaterial();
+ int l = aWorld.getBlockMetadata(i, j, k);
+
+ if (material == Material.water && l == 0) {
+ aWorld.setBlockToAir(i, j, k);
+ return this.func_150910_a(aStack, aPlayer, Items.water_bucket);
+ }
+
+ if (material == Material.lava && l == 0) {
+ aWorld.setBlockToAir(i, j, k);
+ return this.func_150910_a(aStack, aPlayer, Items.lava_bucket);
+ }
+ } else {
+ if (isFull == Blocks.air) {
+ return new ItemStack(Items.bucket);
+ }
+
+ if (movingobjectposition.sideHit == 0) {
+ --j;
+ }
+
+ if (movingobjectposition.sideHit == 1) {
+ ++j;
+ }
+
+ if (movingobjectposition.sideHit == 2) {
+ --k;
+ }
+
+ if (movingobjectposition.sideHit == 3) {
+ ++k;
+ }
+
+ if (movingobjectposition.sideHit == 4) {
+ --i;
+ }
+
+ if (movingobjectposition.sideHit == 5) {
+ ++i;
+ }
+
+ if (!aPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, aStack)) {
+ return aStack;
+ }
+
+ if (this.tryPlaceContainedLiquid(isFull, aWorld, i, j, k) && !aPlayer.capabilities.isCreativeMode) {
+ return new ItemStack(Items.bucket);
+ }
+ }
+ }
+
+ return aStack;
+ }
+ }
+
+ private ItemStack func_150910_a(ItemStack p_150910_1_, EntityPlayer p_150910_2_, Item p_150910_3_) {
+ if (p_150910_2_.capabilities.isCreativeMode) {
+ return p_150910_1_;
+ } else if (--p_150910_1_.stackSize <= 0) {
+ return new ItemStack(p_150910_3_);
+ } else {
+ if (!p_150910_2_.inventory.addItemStackToInventory(new ItemStack(p_150910_3_))) {
+ p_150910_2_.dropPlayerItemWithRandomChoice(new ItemStack(p_150910_3_, 1, 0), false);
+ }
+
+ return p_150910_1_;
+ }
+ }
+
+ /**
+ * Attempts to place the liquid contained inside the bucket.
+ */
+ public boolean tryPlaceContainedLiquid(Block isFull, World aWorld, int aX, int aY, int aZ) {
+ if (isFull == Blocks.air) {
+ return false;
+ } else {
+ Material material = aWorld.getBlock(aX, aY, aZ).getMaterial();
+ boolean flag = !material.isSolid();
+
+ if (!aWorld.isAirBlock(aX, aY, aZ) && !flag) {
+ return false;
+ } else {
+
+ if (!aWorld.isRemote && flag && !material.isLiquid()) {
+ aWorld.func_147480_a(aX, aY, aZ, true);
+ }
+
+ aWorld.setBlock(aX, aY, aZ, isFull, 0, 3);
+
+ return true;
+ }
+ }
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int aMeta) {
+ IIcon aTemp = mIconCache.get(aMeta);
+ return aTemp != null ? aTemp : super.getIconFromDamage(aMeta);
+ }
+
+ @Override
+ public int getMetadata(int p_77647_1_) {
+ // TODO Auto-generated method stub
+ return super.getMetadata(p_77647_1_);
+ }
+
+ @Override
+ public boolean getHasSubtypes() {
+ return super.getHasSubtypes();
+ }
+
+ @Override
+ public int getMaxDamage() {
+ return super.getMaxDamage();
+ }
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) {
+ // TODO Auto-generated method stub
+ super.addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_);
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @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);
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
+ return false;
+ }
+
+ @Override
+ public int getMaxDamage(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public boolean isDamaged(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public int getItemEnchantability(ItemStack stack) {
+ return 0;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index d8d43ebbd3..a5b876efb6 100644
--- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -204,7 +204,8 @@ public class COMPAT_HANDLER {
}
}
}
- RecipeGen_Recycling.executeGenerators();
+ RecipeGen_Recycling.executeGenerators();
+ runQueuedMisc();
}
public static final AutoMap<RunnableWithInfo<String>> mRecipesToGenerate = new AutoMap<RunnableWithInfo<String>>();
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
index 789371c9e4..ddac7f1d88 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
@@ -1,8 +1,5 @@
package gtPlusPlus.core.item.chemistry;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
import java.util.HashMap;
import java.util.HashSet;
@@ -11,13 +8,14 @@ import gregtech.api.enums.Materials;
import gregtech.api.util.Recipe_GT;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.minecraft.ItemPackage;
-import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.item.base.BaseItemComponent;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;