added Item for ItemRailing, and registered in Multipart factory including in load phase, EXPERIMENTAL

This commit is contained in:
tgame14 2014-04-17 18:01:17 +03:00
parent 35a430dc7e
commit 8485dd2e59
5 changed files with 85 additions and 5 deletions

View file

@ -21,6 +21,7 @@ import resonantinduction.electrical.generator.TileMotor;
import resonantinduction.electrical.generator.solar.TileSolarPanel;
import resonantinduction.electrical.generator.thermopile.BlockThermopile;
import resonantinduction.electrical.generator.thermopile.TileThermopile;
import resonantinduction.electrical.itemrailing.ItemItemRailing;
import resonantinduction.electrical.levitator.ItemLevitator;
import resonantinduction.electrical.multimeter.ItemMultimeter;
import resonantinduction.electrical.tesla.BlockTesla;
@ -79,6 +80,9 @@ public class Electrical
public static Block blockBattery;
public static Block blockEncoder;
// Railings
public static Item itemRailing;
// Generators
public static Block blockSolarPanel;
public static Block blockMotor;
@ -123,6 +127,10 @@ public class Electrical
// Quantum
itemQuantumGlyph = contentRegistry.createItem(ItemQuantumGlyph.class);
//Railings
itemRailing = contentRegistry.createItem(ItemItemRailing.class);
Settings.CONFIGURATION.save();
OreDictionary.registerOre("wire", itemWire);

View file

@ -1,6 +1,7 @@
package resonantinduction.electrical;
import resonantinduction.electrical.charger.PartCharger;
import resonantinduction.electrical.itemrailing.PartRailing;
import resonantinduction.electrical.levitator.PartLevitator;
import resonantinduction.electrical.multimeter.PartMultimeter;
import resonantinduction.electrical.transformer.PartTransformer;
@ -18,7 +19,7 @@ public class MultipartElectrical implements IPartFactory
{
public static MultipartElectrical INSTANCE;
public static final String[] PART_TYPES = { "resonant_induction_quantum_glyph", "resonant_induction_wire", "resonant_induction_switch_wire", "resonant_induction_flat_wire", "resonant_induction_flat_switch_wire", "resonant_induction_multimeter", "resonant_induction_transformer", "resonant_induction_charger", "resonant_induction_levitator" };
public static final String[] PART_TYPES = { "resonant_induction_quantum_glyph", "resonant_induction_wire", "resonant_induction_switch_wire", "resonant_induction_flat_wire", "resonant_induction_flat_switch_wire", "resonant_induction_multimeter", "resonant_induction_transformer", "resonant_induction_charger", "resonant_induction_levitator", "resonant_induction_itemrailing" };
public MultipartElectrical()
{
@ -51,6 +52,8 @@ public class MultipartElectrical implements IPartFactory
return new PartLevitator();
else if (name.equals("resonant_induction_quantum_glyph"))
return new PartQuantumGlyph();
else if (name.equals("resonant_induction_itemrailing"))
return new PartRailing();
return null;
}

View file

@ -1,6 +1,7 @@
package resonantinduction.electrical.itemrailing;
import calclavia.lib.grid.NodeGrid;
import net.minecraft.item.ItemStack;
import resonantinduction.electrical.itemrailing.interfaces.IItemRailing;
import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer;
@ -40,10 +41,15 @@ public class GridRailing extends NodeGrid<NodeRailing>
return arr[0];
}
public IItemRailing chooseNextGoal(IItemRailingTransfer itemwrapper)
public IItemRailing chooseNextInstantGoal(IItemRailingTransfer itemwrapper)
{
IItemRailing[] arr = (IItemRailing[]) itemwrapper.getRailing().getConnectionMap().entrySet().toArray();
Arrays.sort(arr, new RailingDistanceComparator(itemwrapper.getEndGoal()));
return arr[0];
}
public void onItemEnterGrid(IItemRailing railing, ItemStack item)
{
}
}

View file

@ -0,0 +1,60 @@
package resonantinduction.electrical.itemrailing;
import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3;
import codechicken.multipart.ControlKeyModifer;
import codechicken.multipart.JItemMultiPart;
import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.TMultiPart;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.MultipartUtility;
/**
* @author tgame14
* @since 17/04/14
*/
public class ItemItemRailing extends JItemMultiPart
{
public ItemItemRailing(int id)
{
super(id);
}
@Override
public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 vhit)
{
BlockCoord onPos = pos.copy().offset(side ^ 1);
if (player.isSneaking() && !ControlKeyModifer.isControlDown(player))
{
PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false);
if (railing != null)
{
railing.preparePlacement(itemStack.getItemDamage());
}
return railing;
}
else
{
if (!MultipartUtility.canPlaceWireOnSide(world, onPos.x, onPos.y, onPos.z, ForgeDirection.getOrientation(side), false))
{
return null;
}
PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false);
if (railing != null)
{
railing.preparePlacement(side);
}
return railing;
}
}
}

View file

@ -2,6 +2,7 @@ package resonantinduction.electrical.itemrailing;
import calclavia.lib.grid.INode;
import calclavia.lib.grid.INodeProvider;
import codechicken.multipart.TileMultipart;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -39,6 +40,7 @@ public class PartRailing extends PartFramedConnection<PartRailing.EnumRailing, I
public PartRailing ()
{
super(Electrical.itemInsulation);
this.material = EnumRailing.DEFAULT;
}
@ -104,7 +106,8 @@ public class PartRailing extends PartFramedConnection<PartRailing.EnumRailing, I
@Override
protected boolean canConnectTo (TileEntity tile, ForgeDirection to)
{
return tile instanceof IItemRailing ? node.canConnectToRailing((IItemRailing) tile, to) : tile instanceof IInventory ? true : false;
Object obj = tile instanceof TileMultipart ? ((TileMultipart) tile).partMap(ForgeDirection.UNKNOWN.ordinal()) : tile;
return obj instanceof IInventory ? true : obj instanceof PartRailing;
}
@Override
@ -128,13 +131,13 @@ public class PartRailing extends PartFramedConnection<PartRailing.EnumRailing, I
@Override
public void setMaterial (int i)
{
this.material = EnumRailing.values()[i];
}
@Override
protected ItemStack getItem ()
{
return null;
return new ItemStack(Electrical.itemRailing);
}
@Override