Fixed errors in NEI support, made RecipeTypes a java enum, and more general updating
This commit is contained in:
parent
c09d9af837
commit
5eb0b4d380
20 changed files with 55 additions and 74 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
8
src/main/scala/resonantinduction/core/RecipeType.java
Normal file
8
src/main/scala/resonantinduction/core/RecipeType.java
Normal file
|
@ -0,0 +1,8 @@
|
|||
package resonantinduction.core;
|
||||
|
||||
/**
|
||||
* Created by robert on 8/11/2014.
|
||||
*/
|
||||
public enum RecipeType {
|
||||
CRUSHER, GRINDER, MIXER, SMELTER, SAWMILL
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -35,7 +35,7 @@ class TankGrid extends FluidDistributionGrid
|
|||
}
|
||||
})
|
||||
|
||||
heightPriorityQueue ++= (getNodes() map (_.genericParent))
|
||||
heightPriorityQueue ++= (getNodes() map (_.getParent.asInstanceOf[TileTankNode]))
|
||||
|
||||
var didChange = false
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue