Fixed errors in NEI support, made RecipeTypes a java enum, and more general updating

This commit is contained in:
Robert S 2014-08-11 08:41:08 -04:00
parent c09d9af837
commit 5eb0b4d380
20 changed files with 55 additions and 74 deletions

View file

@ -1,6 +1,8 @@
package resonantinduction.compatibility.nei;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import resonantinduction.core.CoreContent;
import resonantinduction.core.ResonantInduction;
import codechicken.nei.api.API;
import codechicken.nei.api.IConfigureNEI;
@ -26,14 +28,14 @@ public class NEIResonantInductionConfig implements IConfigureNEI
API.registerRecipeHandler(new RISmelterRecipeHandler());
API.registerUsageHandler(new RISmelterRecipeHandler());
for (Block block : ResonantInduction.blockMixtureFluids.values())
API.hideItem(block.blockID);
for (Block block : CoreContent.blockMixtureFluids().values())
API.hideItem(new ItemStack(block));
for (Block block : ResonantInduction.blockMoltenFluid.values())
API.hideItem(block.blockID);
for (Block block : CoreContent.blockMoltenFluid().values())
API.hideItem(new ItemStack(block));
API.hideItem(ResonantInduction.blockDust.blockID);
API.hideItem(ResonantInduction.blockRefinedDust.blockID);
API.hideItem(new ItemStack(CoreContent.blockDust()));
API.hideItem(new ItemStack(CoreContent.blockRefinedDust()));
}
@Override

View file

@ -1,7 +1,7 @@
package resonantinduction.compatibility.nei;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.RecipeType;
public class RICrusherRecipeHandler extends RITemplateRecipeHandler
{

View file

@ -1,7 +1,7 @@
package resonantinduction.compatibility.nei;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.RecipeType;
public class RIGrinderRecipeHandler extends RITemplateRecipeHandler
{

View file

@ -1,7 +1,7 @@
package resonantinduction.compatibility.nei;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.RecipeType;
public class RIMixerRecipeHandler extends RITemplateRecipeHandler
{

View file

@ -1,7 +1,7 @@
package resonantinduction.compatibility.nei;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.RecipeType;
public class RISawmillRecipeHandler extends RITemplateRecipeHandler
{

View file

@ -1,7 +1,7 @@
package resonantinduction.compatibility.nei;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.RecipeType;
public class RISmelterRecipeHandler extends RITemplateRecipeHandler
{

View file

@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import codechicken.lib.gui.GuiDraw;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
@ -18,9 +19,8 @@ import resonant.api.recipe.RecipeResource.FluidStackResource;
import resonant.api.recipe.RecipeResource.ItemStackResource;
import resonant.api.recipe.RecipeResource.OreDictResource;
import resonant.lib.utility.LanguageUtility;
import resonantinduction.core.RecipeType;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction.RecipeType;
import codechicken.core.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.TemplateRecipeHandler;
@ -56,7 +56,7 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
@Override
public String getGuiTexture()
{
return Reference.PREFIX + Reference.GUI_DIRECTORY + "gui_machine.png";
return Reference.prefix() + Reference.guiDirectory() + "gui_machine.png";
}
@Override

View file

@ -0,0 +1,8 @@
package resonantinduction.core;
/**
* Created by robert on 8/11/2014.
*/
public enum RecipeType {
CRUSHER, GRINDER, MIXER, SMELTER, SAWMILL
}

View file

@ -28,17 +28,6 @@ object ResonantInduction
@SidedProxy(clientSide = "resonantinduction.core.ClientProxy", serverSide = "resonantinduction.core.CommonProxy")
var proxy: CommonProxy = _
/** Recipe Types */
final object RecipeType extends Enumeration
{
final val CRUSHER, GRINDER, MIXER, SMELTER, SAWMILL = Value
implicit class ExtendedValue(value: Value)
{
def name = value.toString
}
}
@EventHandler
def preInit(evt: FMLPreInitializationEvent)
{

View file

@ -171,7 +171,6 @@ class TileTankNode(material: Material) extends TileAdvanced(material) with INode
override def getTankInfo(from: ForgeDirection): Array[FluidTankInfo] = tankNode.getTankInfo(from)
tankNode.onChange = () => sendRenderUpdate
override def initiate()
{

View file

@ -2,6 +2,7 @@ package resonantinduction.core.grid.fluid.distribution
import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids._
import resonantinduction.core.grid.fluid.TileTankNode
import universalelectricity.core.grid.{TickingGrid, UpdateTicker}
/**
@ -35,7 +36,7 @@ abstract class FluidDistributionGrid extends TickingGrid[TankNode] with IFluidHa
override def reconstructNode(node: TankNode)
{
val connectorTank: FluidTank = node.genericParent.getTank
val connectorTank: FluidTank = node.getParent.asInstanceOf[TileTankNode].getTank
if (connectorTank != null)
{

View file

@ -35,7 +35,7 @@ class TankGrid extends FluidDistributionGrid
}
})
heightPriorityQueue ++= (getNodes() map (_.genericParent))
heightPriorityQueue ++= (getNodes() map (_.getParent.asInstanceOf[TileTankNode]))
var didChange = false

View file

@ -5,9 +5,9 @@ import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids.{Fluid, FluidStack, FluidTankInfo, IFluidHandler}
import resonant.lib.utility.WorldUtility
import resonantinduction.core.grid.MultipartNode
import resonantinduction.core.grid.fluid.TileTankNode
import universalelectricity.api.core.grid.INodeProvider
class TankNode(parent: TileTankNode) extends MultipartNode[TankNode](parent) with IFluidHandler
class TankNode(parent: INodeProvider) extends MultipartNode[Any](parent) with IFluidHandler
{
var maxFlowRate: Int = 20
var maxPressure: Int = 100
@ -16,10 +16,6 @@ class TankNode(parent: TileTankNode) extends MultipartNode[TankNode](parent) wit
private var pressure: Int = 0
var connectedSides: Byte = 0
var onChange: () => Unit = null
def genericParent = parent.asInstanceOf[TileTankNode]
def getMaxFlowRate: Int =
{
return maxFlowRate
@ -58,9 +54,9 @@ class TankNode(parent: TileTankNode) extends MultipartNode[TankNode](parent) wit
{
val tile = (position + dir).getTileEntity
if (tile.isInstanceOf[TileTankNode])
if (tile.isInstanceOf[INodeProvider] && tile.asInstanceOf[INodeProvider].getNode(classOf[TankNode], dir.getOpposite).isInstanceOf[TankNode])
{
connections.put(tile.asInstanceOf[TileTankNode].getNode(classOf[TankNode], dir.getOpposite).asInstanceOf[TankNode], dir)
connections.put(tile.asInstanceOf[INodeProvider].getNode(classOf[TankNode], dir.getOpposite).asInstanceOf[TankNode], dir)
connectedSides = WorldUtility.setEnableSide(connectedSides, dir, true)
}
}
@ -69,7 +65,7 @@ class TankNode(parent: TileTankNode) extends MultipartNode[TankNode](parent) wit
{
//TODO: Check and fix
getGrid.reconstruct()
onChange.apply()
//onChange.apply()
}
}
}

View file

@ -1,8 +1,6 @@
package resonantinduction.core.grid.fluid.pressure
import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids.{FluidStack, FluidTank, IFluidHandler}
import resonantinduction.core.grid.fluid.TileTankNode
import resonantinduction.core.grid.fluid.distribution.TankNode
import universalelectricity.api.core.grid.INodeProvider
@ -73,6 +71,7 @@ class FluidPressureNode(parent: INodeProvider) extends TankNode(parent)
def distribute
{
/**
connections.foreach
{
case (obj: AnyRef, dir: ForgeDirection) =>
@ -145,7 +144,7 @@ class FluidPressureNode(parent: INodeProvider) extends TankNode(parent)
}
}
}
}
} */
}
/**

View file

@ -29,7 +29,7 @@ object PartFramedNode {
abstract class PartFramedNode[M](insulationType: Item) extends PartColorableMaterial[M](insulationType: Item) with INodeProvider with TSlottedPart with JNormalOcclusion with JIconHitEffects {
protected var connections: Array[AnyRef] = new Array[AnyRef](6)
protected var node: INode
protected var node: INode = null
/** Bitmask connections */
var currentConnections: Byte = 0x00
/** Client Side */
@ -191,4 +191,8 @@ abstract class PartFramedNode[M](insulationType: Item) extends PartColorableMate
override def toString: String = {
return this.getClass.getSimpleName + this.hashCode
}
def getNode : INode = node
def setNode(n : INode) { node = n}
}

View file

@ -21,10 +21,9 @@ import resonant.lib.recipe.Recipes
import resonant.lib.utility.LanguageUtility
import resonant.lib.utility.nbt.NBTUtility
import resonant.lib.wrapper.StringWrapper._
import resonantinduction.core.ResonantInduction.RecipeType
import resonantinduction.core.prefab.FluidColored
import resonantinduction.core.resource.fluid.{BlockFluidMaterial, BlockFluidMixture}
import resonantinduction.core.{CoreContent, Reference, Settings}
import resonantinduction.core.{RecipeType, CoreContent, Reference, Settings}
import scala.collection.JavaConversions._
import scala.collection.mutable

View file

@ -6,7 +6,7 @@ import net.minecraft.item.ItemStack
import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.fluids.{BlockFluidFinite, Fluid, FluidContainerRegistry, FluidStack}
import resonant.api.recipe.MachineRecipes
import resonantinduction.core.ResonantInduction.RecipeType
import resonantinduction.core.RecipeType
import resonantinduction.core.resource.ResourceGenerator
/**

View file

@ -1,6 +1,5 @@
package resonantinduction.mechanical.fluid.pipe;
import codechicken.lib.render.uv.IconTransformation;
import codechicken.lib.vec.Cuboid6;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.item.ItemStack;
@ -8,13 +7,10 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;
import resonant.lib.type.EvictingList;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.part.PartFramedNode;
import resonantinduction.mechanical.Mechanical;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.RenderUtils;
import codechicken.lib.vec.Translation;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.TSlottedPart;
import cpw.mods.fml.relauncher.Side;
@ -32,14 +28,13 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial> implements TSlott
/** Computes the average fluid for client to render. */
private EvictingList<Integer> averageTankData = new EvictingList<Integer>(20);
private boolean markPacket = true;
private PipePressureNode node = null;
public PartPipe()
{
super(null);
setMaterial(0);
this.setRequiresInsulation(false);
node = new PipePressureNode(this);
setNode((INode) new PipePressureNode(this));
}
@Override
@ -58,9 +53,9 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial> implements TSlott
public void setMaterial(EnumPipeMaterial material)
{
super.setMaterial(material);
node.setMaxFlowRate(getMaterial().maxFlowRate);
node.setMaxPressure(getMaterial().maxPressure);
tank.setCapacity(node.maxFlowRate());
((PipePressureNode)getNode()).setMaxFlowRate(getMaterial().maxFlowRate);
((PipePressureNode)getNode()).setMaxPressure(getMaterial().maxPressure);
tank.setCapacity(((PipePressureNode)getNode()).maxFlowRate());
}
@Override
@ -204,8 +199,8 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial> implements TSlott
{
super.load(nbt);
tank.readFromNBT(nbt);
node().setMaxFlowRate(getMaterial().maxFlowRate);
node().setMaxPressure(getMaterial().maxPressure);
((PipePressureNode)getNode()).setMaxFlowRate(getMaterial().maxFlowRate);
((PipePressureNode)getNode()).setMaxPressure(getMaterial().maxPressure);
}
@Override
@ -217,15 +212,4 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial> implements TSlott
public int getSlotMask() {
return 0;
}
@Override
public INode node() {
return node;
}
@Override
public void node_$eq(INode node) {
if(node instanceof PipePressureNode)
this.node = (PipePresureNode)node;
}
}

View file

@ -32,7 +32,7 @@ public class PipePressureNode extends FluidPressureNode
if (world() != null)
{
byte previousConnections = pipe().getAllCurrentConnections();
pipe().currentConnections(0);
pipe().currentConnections_$eq((byte)0);
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
@ -55,20 +55,20 @@ public class PipePressureNode extends FluidPressureNode
if (check != null && check instanceof FluidPressureNode && canConnect(dir, check) && ((FluidPressureNode) check).canConnect(dir.getOpposite(), this))
{
pipe().currentConnections = WorldUtility.setEnableSide(pipe().currentConnections, dir, true);
connections().put(check, dir);
pipe().currentConnections_$eq(WorldUtility.setEnableSide(pipe().currentConnections(), dir, true));
connections().put((resonantinduction.core.grid.fluid.distribution.TankNode) check, dir);
}
}
else if (canConnect(dir, tile))
{
pipe().currentConnections = WorldUtility.setEnableSide(pipe().currentConnections, dir, true);
connections().put(tile, dir);
pipe().currentConnections_$eq(WorldUtility.setEnableSide(pipe().currentConnections(), dir, true));
connections().put((IFluidHandler) tile, dir);
}
}
}
/** Only send packet updates if visuallyConnected changed. */
if (!world().isRemote && previousConnections != pipe().currentConnections)
if (!world().isRemote && previousConnections != pipe().currentConnections())
{
pipe().sendConnectionUpdate();
}

View file

@ -41,7 +41,7 @@ public class RenderPipe implements ISimpleItemRenderer
FluidStack fluid = part.tank.getFluid();
int capacity = part.tank.getCapacity();
byte renderSides = part.getAllCurrentConnections();
/**
if (fluid != null && fluid.amount > 0)
{
double filledPercentage = Math.min((double) fluid.amount / (double) capacity, 1);
@ -107,7 +107,7 @@ public class RenderPipe implements ISimpleItemRenderer
GL11.glPopMatrix();
}
}
}
}*/
GL11.glPopMatrix();
}