Moved some things to RE, and converted a few classes
This commit is contained in:
parent
aff1d3c789
commit
58715f9f07
15 changed files with 90 additions and 587 deletions
|
@ -1,50 +0,0 @@
|
||||||
package resonantinduction.core;
|
|
||||||
|
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
public class Timer<K>
|
|
||||||
{
|
|
||||||
private final HashMap<K, Integer> clientTimer = new HashMap<K, Integer>();
|
|
||||||
private final HashMap<K, Integer> serverTimer = new HashMap<K, Integer>();
|
|
||||||
|
|
||||||
public void put(K key, int defaultTime)
|
|
||||||
{
|
|
||||||
getTimeMap().put(key, defaultTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean containsKey(K key)
|
|
||||||
{
|
|
||||||
return getTimeMap().containsKey(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void remove(K key)
|
|
||||||
{
|
|
||||||
getTimeMap().remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int decrease(K key)
|
|
||||||
{
|
|
||||||
return decrease(key, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int decrease(K key, int amount)
|
|
||||||
{
|
|
||||||
int timeLeft = getTimeMap().get(key) - amount;
|
|
||||||
getTimeMap().put(key, timeLeft);
|
|
||||||
return timeLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<K, Integer> getTimeMap()
|
|
||||||
{
|
|
||||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
|
|
||||||
{
|
|
||||||
return serverTimer;
|
|
||||||
}
|
|
||||||
|
|
||||||
return clientTimer;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,233 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Frame;
|
|
||||||
import java.awt.GridLayout;
|
|
||||||
import java.awt.LayoutManager;
|
|
||||||
import java.awt.Panel;
|
|
||||||
import java.awt.event.WindowAdapter;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
|
||||||
import javax.swing.border.Border;
|
|
||||||
import javax.swing.border.EtchedBorder;
|
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import universalelectricity.core.transform.vector.IVectorWorld;
|
|
||||||
|
|
||||||
/** @author Darkguardsman */
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class FrameDebug extends Frame implements IVectorWorld
|
|
||||||
{
|
|
||||||
/** Linked tile */
|
|
||||||
TileEntity tile = null;
|
|
||||||
|
|
||||||
boolean debugNode = false;
|
|
||||||
protected long tick = 0;
|
|
||||||
|
|
||||||
public FrameDebug(TileEntity tile)
|
|
||||||
{
|
|
||||||
this();
|
|
||||||
this.tile = tile;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected FrameDebug()
|
|
||||||
{
|
|
||||||
buildGUI();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Called to build the base of the GUI */
|
|
||||||
protected void buildGUI()
|
|
||||||
{
|
|
||||||
Border loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
|
|
||||||
UpdatePanel topPanel = new UpdatePanel();
|
|
||||||
UpdatePanel botPanel = new UpdatePanel();
|
|
||||||
UpdatePanel rightPanel = new UpdatePanel();
|
|
||||||
|
|
||||||
topPanel.setBorder(loweredetched);
|
|
||||||
botPanel.setBorder(loweredetched);
|
|
||||||
rightPanel.setBorder(loweredetched);
|
|
||||||
|
|
||||||
buildTop(topPanel);
|
|
||||||
buildBottom(botPanel);
|
|
||||||
buildCenter(rightPanel);
|
|
||||||
|
|
||||||
this.add(topPanel, BorderLayout.NORTH);
|
|
||||||
this.add(botPanel, BorderLayout.SOUTH);
|
|
||||||
this.add(rightPanel, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
//exit icon handler
|
|
||||||
addWindowListener(new WindowAdapter()
|
|
||||||
{
|
|
||||||
public void windowClosing(WindowEvent e)
|
|
||||||
{
|
|
||||||
Frame f = (Frame) e.getSource();
|
|
||||||
f.setVisible(false);
|
|
||||||
f.dispose();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Top are of the Frame */
|
|
||||||
public void buildTop(UpdatePanel panel)
|
|
||||||
{
|
|
||||||
panel.setLayout(new GridLayout(1, 2, 0, 0));
|
|
||||||
UpdatedLabel tickLabel = new UpdatedLabel("Tile: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + tile;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(tickLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Bottom are of the Frame */
|
|
||||||
public void buildBottom(UpdatePanel panel)
|
|
||||||
{
|
|
||||||
panel.setLayout(new GridLayout(1, 4, 0, 0));
|
|
||||||
UpdatedLabel tickLabel = new UpdatedLabel("Tick: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + tick;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(tickLabel);
|
|
||||||
|
|
||||||
UpdatedLabel xLabel = new UpdatedLabel("X: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + x();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(xLabel);
|
|
||||||
|
|
||||||
UpdatedLabel yLabel = new UpdatedLabel("Y: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + y();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(yLabel);
|
|
||||||
|
|
||||||
UpdatedLabel zLabel = new UpdatedLabel("Z: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + z();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(zLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Left are of the Frame */
|
|
||||||
public void buildCenter(UpdatePanel panel)
|
|
||||||
{
|
|
||||||
panel.setLayout(new GridLayout(1, 4, 0, 0));
|
|
||||||
UpdatedLabel tickLabel = new UpdatedLabel("Valid: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + (tile != null ? tile.isInvalid() : "null");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(tickLabel);
|
|
||||||
UpdatedLabel block_label = new UpdatedLabel("BLOCK: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + (tile != null ? tile.getBlockType() : "null");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(block_label);
|
|
||||||
|
|
||||||
UpdatedLabel meta_label = new UpdatedLabel("META: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + (tile != null && tile.getBlockType() != null ? tile.getBlockMetadata() : "-");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(meta_label);
|
|
||||||
|
|
||||||
UpdatedLabel id_label = new UpdatedLabel("BLOCK: ")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return super.buildLabel() + (tile != null && tile.getBlockType() != null ? tile.getBlockType() : "-");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
panel.add(id_label);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Called each tick by the host of this GUI */
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
tick++;
|
|
||||||
if (tick >= Long.MAX_VALUE)
|
|
||||||
{
|
|
||||||
tick = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Component component : getComponents())
|
|
||||||
{
|
|
||||||
if (component instanceof IUpdate)
|
|
||||||
{
|
|
||||||
((IUpdate) component).update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Shows the frame */
|
|
||||||
public void showDebugFrame()
|
|
||||||
{
|
|
||||||
setTitle("Resonant Engine Debug Window");
|
|
||||||
setBounds(200, 200, 450, 600);
|
|
||||||
setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Hides the frame and tells it to die off */
|
|
||||||
public void closeDebugFrame()
|
|
||||||
{
|
|
||||||
dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double z()
|
|
||||||
{
|
|
||||||
return tile != null ? tile.zCoord : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double x()
|
|
||||||
{
|
|
||||||
return tile != null ? tile.xCoord : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double y()
|
|
||||||
{
|
|
||||||
return tile != null ? tile.yCoord : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public World world()
|
|
||||||
{
|
|
||||||
return tile != null ? tile.getWorldObj() : null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,109 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
import codechicken.multipart.TMultiPart;
|
|
||||||
import universalelectricity.api.core.grid.INode;
|
|
||||||
import universalelectricity.api.core.grid.INodeProvider;
|
|
||||||
|
|
||||||
/** @author Darkguardsman */
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class FrameNodeDebug extends FrameDebug
|
|
||||||
{
|
|
||||||
protected INodeProvider nodeProvider = null;
|
|
||||||
/** Linked node */
|
|
||||||
protected INode node = null;
|
|
||||||
protected Class<? extends INode> nodeClazz = null;
|
|
||||||
|
|
||||||
/** Are we debugging a node */
|
|
||||||
|
|
||||||
public FrameNodeDebug(TileEntity tile, Class<? extends INode> nodeClazz)
|
|
||||||
{
|
|
||||||
super(tile);
|
|
||||||
this.nodeClazz = nodeClazz;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FrameNodeDebug(INodeProvider node, Class<? extends INode> nodeClazz)
|
|
||||||
{
|
|
||||||
super();
|
|
||||||
this.nodeProvider = node;
|
|
||||||
this.nodeClazz = nodeClazz;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FrameNodeDebug(INode node)
|
|
||||||
{
|
|
||||||
super();
|
|
||||||
this.node = node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Gets the node used for debug */
|
|
||||||
public INode getNode()
|
|
||||||
{
|
|
||||||
if (tile instanceof INodeProvider && nodeClazz != null)
|
|
||||||
{
|
|
||||||
return ((INodeProvider) tile).getNode(nodeClazz, ForgeDirection.UNKNOWN);
|
|
||||||
}
|
|
||||||
else if (nodeProvider != null && nodeClazz != null)
|
|
||||||
{
|
|
||||||
return nodeProvider.getNode(nodeClazz, ForgeDirection.UNKNOWN);
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double z()
|
|
||||||
{
|
|
||||||
if (nodeProvider instanceof TileEntity)
|
|
||||||
{
|
|
||||||
return ((TileEntity) nodeProvider).zCoord;
|
|
||||||
}
|
|
||||||
else if (nodeProvider instanceof TMultiPart)
|
|
||||||
{
|
|
||||||
return ((TMultiPart) nodeProvider).z();
|
|
||||||
}
|
|
||||||
return super.z();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double x()
|
|
||||||
{
|
|
||||||
if (nodeProvider instanceof TileEntity)
|
|
||||||
{
|
|
||||||
return ((TileEntity) nodeProvider).xCoord;
|
|
||||||
}
|
|
||||||
else if (nodeProvider instanceof TMultiPart)
|
|
||||||
{
|
|
||||||
return ((TMultiPart) nodeProvider).x();
|
|
||||||
}
|
|
||||||
return super.x();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double y()
|
|
||||||
{
|
|
||||||
if (nodeProvider instanceof TileEntity)
|
|
||||||
{
|
|
||||||
return ((TileEntity) nodeProvider).yCoord;
|
|
||||||
}
|
|
||||||
else if (nodeProvider instanceof TMultiPart)
|
|
||||||
{
|
|
||||||
return ((TMultiPart) nodeProvider).y();
|
|
||||||
}
|
|
||||||
return super.y();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public World world()
|
|
||||||
{
|
|
||||||
if (nodeProvider instanceof TileEntity)
|
|
||||||
{
|
|
||||||
return ((TileEntity) nodeProvider).getWorldObj();
|
|
||||||
}
|
|
||||||
else if (nodeProvider instanceof TMultiPart)
|
|
||||||
{
|
|
||||||
return ((TMultiPart) nodeProvider).world();
|
|
||||||
}
|
|
||||||
return super.world();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
/** Used to pass info to the debug GUI
|
|
||||||
*
|
|
||||||
* @author Darkguardsman */
|
|
||||||
public interface IDebug
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
/** Used by objects can update each tick
|
|
||||||
*
|
|
||||||
* @author Darkguardsman */
|
|
||||||
public interface IUpdate
|
|
||||||
{
|
|
||||||
public void update();
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Panel;
|
|
||||||
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
|
|
||||||
/** @author Darkguardsman */
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class UpdatePanel extends JPanel implements IUpdate
|
|
||||||
{
|
|
||||||
public UpdatePanel()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdatePanel(BorderLayout borderLayout)
|
|
||||||
{
|
|
||||||
super(borderLayout);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
for (Component component : getComponents())
|
|
||||||
{
|
|
||||||
if (component instanceof IUpdate)
|
|
||||||
{
|
|
||||||
((IUpdate) component).update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
package resonantinduction.core.debug;
|
|
||||||
|
|
||||||
import java.awt.Label;
|
|
||||||
|
|
||||||
/** Simple label with an update method
|
|
||||||
*
|
|
||||||
* @author Darkguardsman */
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class UpdatedLabel extends Label implements IUpdate
|
|
||||||
{
|
|
||||||
String start_string = "I Am a Label";
|
|
||||||
|
|
||||||
public UpdatedLabel(String start)
|
|
||||||
{
|
|
||||||
super(start);
|
|
||||||
this.start_string = start;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
this.setText(buildLabel());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Recreates then returns the label's string value */
|
|
||||||
public String buildLabel()
|
|
||||||
{
|
|
||||||
return start_string;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
package resonantinduction.core.handler;
|
|
||||||
|
|
||||||
import cpw.mods.fml.common.Mod;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
|
||||||
import resonant.lib.render.RenderUtility;
|
|
||||||
import resonantinduction.core.Reference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Calclavia
|
|
||||||
*/
|
|
||||||
public class TextureHookHandler
|
|
||||||
{
|
|
||||||
@Mod.EventHandler
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void preTextureHook(TextureStitchEvent.Pre event)
|
|
||||||
{
|
|
||||||
if (event.map.getTextureType() == 0)
|
|
||||||
{
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "glyph_0", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "glyph_1", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "glyph_2", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "glyph_3", event.map);
|
|
||||||
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "mixture_flow", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "molten_flow", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "multimeter_screen", event.map);
|
|
||||||
RenderUtility.registerIcon(Reference.prefix() + "tankEdge", event.map);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package resonantinduction.core.handler
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.Mod
|
||||||
|
import cpw.mods.fml.relauncher.Side
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly
|
||||||
|
import net.minecraftforge.client.event.TextureStitchEvent
|
||||||
|
import resonant.lib.render.RenderUtility
|
||||||
|
import resonantinduction.core.Reference
|
||||||
|
|
||||||
|
/** Event handler for texture events
|
||||||
|
* @author Calclavia
|
||||||
|
*/
|
||||||
|
class TextureHookHandler
|
||||||
|
{
|
||||||
|
@Mod.EventHandler
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
def preTextureHook(event: TextureStitchEvent.Pre)
|
||||||
|
{
|
||||||
|
if (event.map.getTextureType == 0)
|
||||||
|
{
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "glyph_0", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "glyph_1", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "glyph_2", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "glyph_3", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "mixture_flow", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "molten_flow", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "multimeter_screen", event.map)
|
||||||
|
RenderUtility.registerIcon(Reference.prefix + "tankEdge", event.map)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,21 +0,0 @@
|
||||||
package resonantinduction.core.interfaces;
|
|
||||||
|
|
||||||
import net.minecraft.command.ICommandSender;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used by machines that can be control by chat commands. Mainly for dev debug of the machine.
|
|
||||||
*
|
|
||||||
* @author robert
|
|
||||||
*/
|
|
||||||
public interface ICmdMachine
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Pre-check too see if this machine can even process the command
|
|
||||||
*/
|
|
||||||
public boolean canTakeCommand(ICommandSender sender, String[] args);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processing of the command
|
|
||||||
*/
|
|
||||||
public void processCommand(ICommandSender sender, String[] args);
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
package resonantinduction.core.interfaces;
|
|
||||||
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
import universalelectricity.api.core.grid.INode;
|
|
||||||
import universalelectricity.core.transform.vector.IVectorWorld;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applied to any node that will act as a mechanical object
|
|
||||||
*
|
|
||||||
* @author Darkguardsman
|
|
||||||
*/
|
|
||||||
public interface IMechanicalNode extends INode, IVectorWorld
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Gets the radius of the gear in meters. Used to calculate torque and gear ratio for connections.
|
|
||||||
* Is not applied to direct face to face connections
|
|
||||||
*
|
|
||||||
* @param side - side of the machine
|
|
||||||
* @return radius in meters of the rotation peace
|
|
||||||
*/
|
|
||||||
public double getRadius(ForgeDirection side, IMechanicalNode with);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Rotational speed of the object
|
|
||||||
*
|
|
||||||
* @param side - side of the machine
|
|
||||||
* @return speed in meters per second
|
|
||||||
*/
|
|
||||||
public double getAngularSpeed(ForgeDirection side);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Force applied from this side
|
|
||||||
*
|
|
||||||
* @param side - side of the machine
|
|
||||||
* @return force
|
|
||||||
*/
|
|
||||||
public double getForce(ForgeDirection side);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Does the direction flip on this side for rotation
|
|
||||||
*
|
|
||||||
* @param side - side of the machine
|
|
||||||
* @return boolean, true = flipped, false = not
|
|
||||||
*/
|
|
||||||
public boolean inverseRotation(ForgeDirection side);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies rotational force and velocity to this node increasing its current rotation value
|
|
||||||
*
|
|
||||||
* @param source - should not be null
|
|
||||||
* @param torque - force at an angle
|
|
||||||
* @param angularVelocity - speed of rotation
|
|
||||||
*/
|
|
||||||
public void apply(Object source, double torque, double angularVelocity);
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
package resonantinduction.core.interfaces
|
||||||
|
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection
|
||||||
|
import universalelectricity.api.core.grid.INode
|
||||||
|
import universalelectricity.core.transform.vector.IVectorWorld
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applied to any node that will act as a mechanical object
|
||||||
|
*
|
||||||
|
* @author Darkguardsman
|
||||||
|
*/
|
||||||
|
abstract trait IMechanicalNode extends INode with IVectorWorld {
|
||||||
|
/**
|
||||||
|
* Gets the radius of the gear in meters. Used to calculate torque and gear ratio for connections.
|
||||||
|
* Is not applied to direct face to face connections
|
||||||
|
*
|
||||||
|
* @param side - side of the machine
|
||||||
|
* @return radius in meters of the rotation peace
|
||||||
|
*/
|
||||||
|
def getRadius(side: ForgeDirection, `with`: IMechanicalNode): Double = 0.5
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Rotational speed of the object
|
||||||
|
*
|
||||||
|
* @param side - side of the machine
|
||||||
|
* @return speed in meters per second
|
||||||
|
*/
|
||||||
|
def getAngularSpeed(side: ForgeDirection): Double
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force applied from this side
|
||||||
|
*
|
||||||
|
* @param side - side of the machine
|
||||||
|
* @return force
|
||||||
|
*/
|
||||||
|
def getForce(side: ForgeDirection): Double
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the direction flip on this side for rotation
|
||||||
|
*
|
||||||
|
* @param side - side of the machine
|
||||||
|
* @return boolean, true = flipped, false = not
|
||||||
|
*/
|
||||||
|
def inverseRotation(side: ForgeDirection): Boolean = false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies rotational force and velocity to this node increasing its current rotation value
|
||||||
|
*
|
||||||
|
* @param source - should not be null
|
||||||
|
* @param torque - force at an angle
|
||||||
|
* @param angularVelocity - speed of rotation
|
||||||
|
*/
|
||||||
|
def apply(source: AnyRef, torque: Double, angularVelocity: Double)
|
||||||
|
}
|
|
@ -12,9 +12,9 @@ import javax.swing.table.AbstractTableModel;
|
||||||
import javax.swing.table.TableModel;
|
import javax.swing.table.TableModel;
|
||||||
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import resonantinduction.core.debug.FrameNodeDebug;
|
import resonant.lib.debug.FrameNodeDebug;
|
||||||
import resonantinduction.core.debug.UpdatePanel;
|
import resonant.lib.debug.UpdatePanel;
|
||||||
import resonantinduction.core.debug.UpdatedLabel;
|
import resonant.lib.debug.UpdatedLabel;
|
||||||
import universalelectricity.api.core.grid.INode;
|
import universalelectricity.api.core.grid.INode;
|
||||||
import universalelectricity.api.core.grid.INodeProvider;
|
import universalelectricity.api.core.grid.INodeProvider;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ import resonant.api.recipe.RecipeResource;
|
||||||
import resonantinduction.core.Reference;
|
import resonantinduction.core.Reference;
|
||||||
import resonantinduction.core.ResonantInduction;
|
import resonantinduction.core.ResonantInduction;
|
||||||
import resonant.content.factory.resources.RecipeType;
|
import resonant.content.factory.resources.RecipeType;
|
||||||
import resonantinduction.core.Timer;
|
import resonant.lib.utility.Timer;
|
||||||
import universalelectricity.core.transform.region.Cuboid;
|
import universalelectricity.core.transform.region.Cuboid;
|
||||||
import universalelectricity.core.transform.vector.Vector3;
|
import universalelectricity.core.transform.vector.Vector3;
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.IFluidBlock;
|
import net.minecraftforge.fluids.IFluidBlock;
|
||||||
import resonant.api.recipe.MachineRecipes;
|
import resonant.api.recipe.MachineRecipes;
|
||||||
import resonantinduction.core.Reference;
|
import resonantinduction.core.Reference;
|
||||||
import resonantinduction.core.Timer;
|
import resonant.lib.utility.Timer;
|
||||||
import resonant.content.factory.resources.block.BlockFluidMixture;
|
import resonant.content.factory.resources.block.BlockFluidMixture;
|
||||||
import universalelectricity.api.core.grid.INode;
|
import universalelectricity.api.core.grid.INode;
|
||||||
import universalelectricity.core.transform.rotation.Quaternion;
|
import universalelectricity.core.transform.rotation.Quaternion;
|
||||||
|
|
Loading…
Reference in a new issue