This commit is contained in:
DarkGuardsman 2013-07-08 01:09:08 -04:00
commit 00bd3a9e8e
52 changed files with 930 additions and 1151 deletions

3
.gitmodules vendored
View file

@ -5,9 +5,6 @@
[submodule "Dark-Library"] [submodule "Dark-Library"]
path = Dark-Library path = Dark-Library
url = git@github.com:DarkGuardsman/Dark-Library.git url = git@github.com:DarkGuardsman/Dark-Library.git
[submodule "Basic-Compoents"]
path = Basic-Compoents
url = git://github.com/calclavia/Basic-Components.git
[submodule "API-Bank"] [submodule "API-Bank"]
path = API-Bank path = API-Bank
url = git://github.com/DarkGuardsman/API-Bank.git url = git://github.com/DarkGuardsman/API-Bank.git

@ -1 +0,0 @@
Subproject commit f3030ef09eb2f8ed6f28b4ffbf4fe8c1145ce2ea

View file

@ -1 +0,0 @@
90

View file

@ -1 +0,0 @@
* 1.5.1 AssemblyLine_mc1.5.1_v0.3.0.90.jar AssemblyLine_mc1.5.1_v0.3.0.90_api.zip

View file

@ -1 +0,0 @@
1.5.1

View file

@ -1,9 +0,0 @@
# Ignore all classes
.class **
# Except a specific class
!class assemblyline/**
.option Annotations
.option Trim

View file

@ -1 +0,0 @@
assemblyline-mod.com

View file

@ -1 +0,0 @@
al

View file

@ -5,35 +5,22 @@ import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
/** /** Should be used to interact with the armbot and not to create a new armbot */
* An interface applied to Armbots.
*
* @author Calclavia
*/
public interface IArmbot public interface IArmbot
{ {
/** /** Adds an entity to the Armbot's grab list. */
* Adds an entity to the Armbot's grab list.
*/
public void grabEntity(Entity entity); public void grabEntity(Entity entity);
public void grabItem(ItemStack itemStack); public void grabItem(ItemStack itemStack);
/** /** Drops the given object
* Drops a specific entity from the Armbot's hand. *
*/ * @param object - Entity or ItemStack
public void dropEntity(Entity entity); *
* String "All" should cause the armbot to drop all items */
public void drop(Object object);
public void dropItem(ItemStack itemStack); /** @return Returns all entities being grabbed by the Armbot. */
/**
* Drops all entities in the Armbot's hand.
*/
public void dropAll();
/**
* @return Returns all entities being grabbed by the Armbot.
*/
public List<Entity> getGrabbedEntities(); public List<Entity> getGrabbedEntities();
public List<ItemStack> getGrabbedItems(); public List<ItemStack> getGrabbedItems();

View file

@ -4,25 +4,16 @@ import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
/** /** An interface applied to the tile entity of a conveyor belt */
* An interface applied to the tile entity of a conveyor belt.
*
* @author Calclavia
*
*/
public interface IBelt public interface IBelt
{ {
/** /** Used to get a list of entities the belt exerts an effect upon.
* Used to get a list of entities the belt exerts an effect upon.
* *
* @return list of entities in the belts are of effect * @return list of entities in the belts are of effect */
*/
public List<Entity> getAffectedEntities(); public List<Entity> getAffectedEntities();
/** /** Adds and entity to the ignore list so its not moved has to be done every 20 ticks
* Adds and entity to the ignore list so its not moved *
* has to be done every 20 ticks * @param entity */
* @param entity public void ignoreEntity(Entity entity);
*/
public void IgnoreEntity(Entity entity);
} }

View file

@ -1,8 +0,0 @@
package assemblyline.api;
public interface IBotArm
{
// TODO will add methods here to change the
// arms task, target, location,etc as need by
// other mods
}

View file

@ -21,8 +21,8 @@ import assemblyline.client.render.RenderManipulator;
import assemblyline.client.render.RenderRejector; import assemblyline.client.render.RenderRejector;
import assemblyline.common.CommonProxy; import assemblyline.common.CommonProxy;
import assemblyline.common.armbot.TileEntityArmbot; import assemblyline.common.armbot.TileEntityArmbot;
import assemblyline.common.block.TileEntityCrate;
import assemblyline.common.imprinter.TileEntityImprinter; import assemblyline.common.imprinter.TileEntityImprinter;
import assemblyline.common.machine.TileEntityCrate;
import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.belt.TileEntityConveyorBelt;
@ -72,12 +72,15 @@ public class ClientProxy extends CommonProxy
switch (ID) switch (ID)
{ {
case GUI_IMPRINTER: case GUI_IMPRINTER:
{
return new GuiImprinter(player.inventory, (TileEntityImprinter) tileEntity); return new GuiImprinter(player.inventory, (TileEntityImprinter) tileEntity);
}
case GUI_ENCODER: case GUI_ENCODER:
if (tileEntity != null && tileEntity instanceof TileEntityEncoder) {
return new GuiEncoder(player.inventory, (TileEntityEncoder) tileEntity); return new GuiEncoder(player.inventory, (TileEntityEncoder) tileEntity);
} }
} }
}
return null; return null;
} }
@ -88,15 +91,13 @@ public class ClientProxy extends CommonProxy
return GuiScreen.isCtrlKeyDown(); return GuiScreen.isCtrlKeyDown();
} }
/** /** Renders a laser beam from one power to another by a set color for a set time
* Renders a laser beam from one power to another by a set color for a set time
* *
* @param world - world this laser is to be rendered in * @param world - world this laser is to be rendered in
* @param position - start vector3 * @param position - start vector3
* @param target - end vector3 * @param target - end vector3
* @param color - color of the beam * @param color - color of the beam
* @param age - life of the beam in 1/20 secs * @param age - life of the beam in 1/20 secs */
*/
public void renderBeam(World world, Vector3 position, Vector3 target, Color color, int age) public void renderBeam(World world, Vector3 position, Vector3 target, Color color, int age)
{ {
if (world.isRemote || FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) if (world.isRemote || FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT)

View file

@ -18,7 +18,7 @@ import net.minecraftforge.common.ForgeDirection;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import assemblyline.common.block.TileEntityCrate; import assemblyline.common.machine.TileEntityCrate;
public class RenderCrate extends TileEntitySpecialRenderer public class RenderCrate extends TileEntitySpecialRenderer
{ {

View file

@ -1,7 +1,5 @@
package assemblyline.common; package assemblyline.common;
import ic2.api.item.Items;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -10,30 +8,38 @@ import net.minecraft.block.Block;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Configuration; import net.minecraftforge.common.Configuration;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import org.modstats.ModstatInfo; import org.modstats.ModstatInfo;
import org.modstats.Modstats; import org.modstats.Modstats;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.multiblock.BlockMulti; import universalelectricity.prefab.multiblock.BlockMulti;
import universalelectricity.prefab.multiblock.TileEntityMulti;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.armbot.BlockArmbot; import assemblyline.common.armbot.BlockArmbot;
import assemblyline.common.armbot.command.GrabDictionary; import assemblyline.common.armbot.TileEntityArmbot;
import assemblyline.common.block.BlockCrate;
import assemblyline.common.block.BlockTurntable;
import assemblyline.common.block.ItemBlockCrate;
import assemblyline.common.imprinter.BlockImprinter; import assemblyline.common.imprinter.BlockImprinter;
import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.ItemImprinter;
import assemblyline.common.imprinter.TileEntityImprinter;
import assemblyline.common.machine.BlockCrate;
import assemblyline.common.machine.BlockManipulator; import assemblyline.common.machine.BlockManipulator;
import assemblyline.common.machine.BlockRejector; import assemblyline.common.machine.BlockRejector;
import assemblyline.common.machine.BlockTurntable;
import assemblyline.common.machine.ItemBlockCrate;
import assemblyline.common.machine.TileEntityCrate;
import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.belt.BlockConveyorBelt; import assemblyline.common.machine.belt.BlockConveyorBelt;
import assemblyline.common.machine.belt.TileEntityConveyorBelt;
import assemblyline.common.machine.crane.BlockCraneController; import assemblyline.common.machine.crane.BlockCraneController;
import assemblyline.common.machine.crane.BlockCraneFrame; import assemblyline.common.machine.crane.BlockCraneFrame;
import assemblyline.common.machine.crane.TileEntityCraneController;
import assemblyline.common.machine.crane.TileEntityCraneRail;
import assemblyline.common.machine.detector.BlockDetector; import assemblyline.common.machine.detector.BlockDetector;
import assemblyline.common.machine.detector.TileEntityDetector;
import assemblyline.common.machine.encoder.BlockEncoder; import assemblyline.common.machine.encoder.BlockEncoder;
import assemblyline.common.machine.encoder.ItemDisk; import assemblyline.common.machine.encoder.ItemDisk;
import assemblyline.common.machine.encoder.TileEntityEncoder;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Loader;
@ -50,8 +56,6 @@ import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import dark.core.DarkMain;
import dark.core.PowerSystems;
@ModstatInfo(prefix = "asmline") @ModstatInfo(prefix = "asmline")
@Mod(modid = AssemblyLine.CHANNEL, name = AssemblyLine.MOD_NAME, version = AssemblyLine.VERSION, dependencies = "after:BasicComponents; after:IC2", useMetadata = true) @Mod(modid = AssemblyLine.CHANNEL, name = AssemblyLine.MOD_NAME, version = AssemblyLine.VERSION, dependencies = "after:BasicComponents; after:IC2", useMetadata = true)
@ -94,11 +98,11 @@ public class AssemblyLine
public static final String TEXTURE_NAME_PREFIX = "assemblyline:"; public static final String TEXTURE_NAME_PREFIX = "assemblyline:";
private static final String[] LANGUAGES_SUPPORTED = new String[] { "en_US","nl_NL","fr_FR" }; private static final String[] LANGUAGES_SUPPORTED = new String[] { "en_US", "nl_NL", "fr_FR" };
public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg")); public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg"));
public static final int BLOCK_ID_PREFIX = 3030; public static int BLOCK_ID_PREFIX = 3030;
public static Block blockConveyorBelt; public static Block blockConveyorBelt;
public static Block blockManipulator; public static Block blockManipulator;
@ -123,39 +127,44 @@ public class AssemblyLine
// TODO: MAKE THIS FALSE EVERY BUILD! // TODO: MAKE THIS FALSE EVERY BUILD!
public static final boolean DEBUG = false; public static final boolean DEBUG = false;
public static boolean REQUIRE_NO_POWER = false; public static boolean REQUIRE_NO_POWER = false;
public static boolean VINALLA_RECIPES = false;
@PreInit @PreInit
public void preInit(FMLPreInitializationEvent event) public void preInit(FMLPreInitializationEvent event)
{ {
FMLog.setParent(FMLLog.getLogger()); FMLog.setParent(FMLLog.getLogger());
// UniversalElectricity.register(this, 1, 2, 6, false);
instance = this; instance = this;
/* UPDATE NOTIFIER */ /* UPDATE NOTIFIER */
Modstats.instance().getReporter().registerMod(this); Modstats.instance().getReporter().registerMod(this);
CONFIGURATION.load(); CONFIGURATION.load();
blockConveyorBelt = new BlockConveyorBelt(CONFIGURATION.getBlock("Conveyor Belt", BLOCK_ID_PREFIX).getInt()); blockConveyorBelt = new BlockConveyorBelt(BLOCK_ID_PREFIX);
blockManipulator = new BlockManipulator(CONFIGURATION.getBlock("Manipulator", BLOCK_ID_PREFIX + 1).getInt()); blockManipulator = new BlockManipulator(BLOCK_ID_PREFIX++);
blockCrate = new BlockCrate(CONFIGURATION.getBlock("Crate", BLOCK_ID_PREFIX + 3).getInt(), 0); blockCrate = new BlockCrate(BLOCK_ID_PREFIX++);
blockImprinter = new BlockImprinter(CONFIGURATION.getBlock("Imprinter", BLOCK_ID_PREFIX + 4).getInt(), 4); blockImprinter = new BlockImprinter(BLOCK_ID_PREFIX++);
blockDetector = new BlockDetector(CONFIGURATION.getBlock("Detector", BLOCK_ID_PREFIX + 5).getInt(), 1); blockDetector = new BlockDetector(BLOCK_ID_PREFIX++);
blockRejector = new BlockRejector(CONFIGURATION.getBlock("Rejector", BLOCK_ID_PREFIX + 6).getInt()); blockRejector = new BlockRejector(BLOCK_ID_PREFIX++);
blockEncoder = new BlockEncoder(CONFIGURATION.getBlock("Encoder", BLOCK_ID_PREFIX + 7).getInt(), 7); blockEncoder = new BlockEncoder(BLOCK_ID_PREFIX++);
blockArmbot = new BlockArmbot(CONFIGURATION.getBlock("Armbot", BLOCK_ID_PREFIX + 8).getInt()); blockArmbot = new BlockArmbot(BLOCK_ID_PREFIX++);
blockMulti = new BlockMulti(CONFIGURATION.getBlock("Multiblock", BLOCK_ID_PREFIX + 9).getInt()); blockMulti = new BlockMulti(BLOCK_ID_PREFIX++);
blockCraneController = new BlockCraneController(CONFIGURATION.getBlock("Crane Controller", BLOCK_ID_PREFIX + 10).getInt()); blockCraneController = new BlockCraneController(BLOCK_ID_PREFIX++);
blockCraneFrame = new BlockCraneFrame(CONFIGURATION.getBlock("Crane Frame", BLOCK_ID_PREFIX + 11).getInt()); blockCraneFrame = new BlockCraneFrame(BLOCK_ID_PREFIX++);
blockTurntable = new BlockTurntable(CONFIGURATION.getBlock("Turntable", BLOCK_ID_PREFIX + 12).getInt()); blockTurntable = new BlockTurntable(BLOCK_ID_PREFIX++);
itemImprint = new ItemImprinter(CONFIGURATION.getItem("Imprint", ITEM_ID_PREFIX).getInt()); itemImprint = new ItemImprinter(CONFIGURATION.getItem("Imprint", ITEM_ID_PREFIX).getInt());
itemDisk = new ItemDisk(CONFIGURATION.getItem("Disk", ITEM_ID_PREFIX + 1).getInt()); itemDisk = new ItemDisk(CONFIGURATION.getItem("Disk", ITEM_ID_PREFIX + 1).getInt());
REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true) || PowerSystems.runPowerLess(PowerSystems.INDUSTRIALCRAFT, PowerSystems.BUILDCRAFT, PowerSystems.MEKANISM); AssemblyLine.REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true);
AssemblyLine.VINALLA_RECIPES = CONFIGURATION.get("general", "Vinalla_Recipes", false).getBoolean(false);
if (CONFIGURATION.hasChanged())
{
CONFIGURATION.save(); CONFIGURATION.save();
}
NetworkRegistry.instance().registerGuiHandler(this, this.proxy); NetworkRegistry.instance().registerGuiHandler(this, this.proxy);
GameRegistry.registerBlock(blockConveyorBelt, "Conveyor Belt");
GameRegistry.registerBlock(blockConveyorBelt, "ConveyorBelt");
GameRegistry.registerBlock(blockCrate, ItemBlockCrate.class, "Crate"); GameRegistry.registerBlock(blockCrate, ItemBlockCrate.class, "Crate");
GameRegistry.registerBlock(blockManipulator, "Manipulator"); GameRegistry.registerBlock(blockManipulator, "Manipulator");
GameRegistry.registerBlock(blockImprinter, "Imprinter"); GameRegistry.registerBlock(blockImprinter, "Imprinter");
@ -164,9 +173,21 @@ public class AssemblyLine
GameRegistry.registerBlock(blockRejector, "Rejector"); GameRegistry.registerBlock(blockRejector, "Rejector");
GameRegistry.registerBlock(blockArmbot, "Armbot"); GameRegistry.registerBlock(blockArmbot, "Armbot");
GameRegistry.registerBlock(blockTurntable, "Turntable"); GameRegistry.registerBlock(blockTurntable, "Turntable");
GameRegistry.registerBlock(blockCraneController, "Crane Controller"); GameRegistry.registerBlock(blockCraneController, "CraneController");
GameRegistry.registerBlock(blockCraneFrame, "Crane Frame"); GameRegistry.registerBlock(blockCraneFrame, "Crane Frame");
GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "ALConveyorBelt");
GameRegistry.registerTileEntity(TileEntityRejector.class, "ALSorter");
GameRegistry.registerTileEntity(TileEntityManipulator.class, "ALManipulator");
GameRegistry.registerTileEntity(TileEntityCrate.class, "ALCrate");
GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector");
GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder");
GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot");
GameRegistry.registerTileEntity(TileEntityCraneController.class, "ALCraneController");
GameRegistry.registerTileEntity(TileEntityCraneRail.class, "ALCraneRail");
GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter");
GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti");
TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt); TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt);
proxy.preInit(); proxy.preInit();
@ -176,155 +197,26 @@ public class AssemblyLine
public void load(FMLInitializationEvent evt) public void load(FMLInitializationEvent evt)
{ {
proxy.init(); proxy.init();
GrabDictionary.registerList();
FMLog.info("Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " languages."); FMLog.info("Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " languages.");
/* MCMOD.INFO FILE BUILDER? */ /* MCMOD.INFO FILE BUILDER? */
meta.modId = AssemblyLine.MOD_ID; meta.modId = AssemblyLine.MOD_ID;
meta.name = AssemblyLine.MOD_NAME; meta.name = AssemblyLine.MOD_NAME;
meta.description = "A mod that brings conveyor belt transporting systems to Minecraft."; meta.description = "Simi Realistic factory system for minecraft bring in conveyor belts, robotic arms, and simple machines";
meta.url = "http://calclavia.com/universalelectricity/?m=18"; meta.url = "http://universalelectricity.com/assembly-line";
meta.logoFile = "/al_logo.png"; meta.logoFile = "/al_logo.png";
meta.version = AssemblyLine.VERSION; meta.version = AssemblyLine.VERSION;
meta.authorList = Arrays.asList(new String[] { "DarkGuardsman, Briaman, Calclavia" }); meta.authorList = Arrays.asList(new String[] { "DarkGuardsman" });
meta.credits = "Please see the website."; meta.credits = "Please see the website.";
meta.autogenerated = false; meta.autogenerated = false;
this.createStandardRecipes(); Recipes.loadRecipes();
this.createUERecipes();
if (PowerSystems.isPowerSystemLoaded(PowerSystems.INDUSTRIALCRAFT, true))
{
createIC2Recipes();
}
} }
private void createVanillaRecipes()
{
System.out.println("No crafting ingredient source found. Creating cheap-o vanilla recipes.");
// Armbot
GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', "ingotIron", 'C', Item.redstoneRepeater, 'I', "ingotIron", 'M', Block.pistonBase }));
// Disk
GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] { "III", "ICI", "III", 'I', itemImprint, 'C', Item.redstoneRepeater }));
// Encoder
GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotIron", 'C', Item.redstoneRepeater }));
// Detector
GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { "SES", "SCS", "S S", 'S', "ingotIron", 'C', Block.torchRedstoneActive, 'E', Item.eyeOfEnder }));
// Conveyor Belt
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', "ingotIron", 'W', Block.planks, 'M', Block.pistonBase }));
// Rejector
GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] { "WPW", "@R@", '@', "ingotIron", 'R', Item.redstone, 'P', Block.pistonBase, 'C', Block.torchRedstoneActive, 'W', Item.redstone }));
// Turntable
GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] { "P", "P", 'P', Block.pistonBase }));
// Manipulator
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockManipulator, 2), new Object[] { Block.dispenser, Block.torchRedstoneActive }));
}
private void createUERecipes()
{
DarkMain.forceLoadBCItems(this, AssemblyLine.CHANNEL);
System.out.println("BasicComponents Found...adding UE recipes for Assembly Line.");
// Armbot
GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] {
"II ",
"SIS",
"MCM",
'S', "plateSteel",
'C', "advancedCircuit",
'I', "ingotSteel",
'M', "motor" }));
// Disk
GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] {
"III",
"ICI",
"III",
'I', itemImprint,
'C', "advancedCircuit" }));
// Encoder
GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] {
"SIS",
"SCS",
"SSS",
'I', itemImprint,
'S', "ingotSteel",
'C', "advancedCircuit" }));
// Detector
GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] {
"SES",
"SCS",
"S S",
'S', "ingotSteel",
'C', "basicCircuit",
'E', Item.eyeOfEnder }));
// Conveyor Belt
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] {
"III",
"WMW",
'I', "ingotSteel",
'W', Block.planks,
'M', "motor" }));
// Rejector
GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] {
"CPC",
"@R@",
'@', "ingotSteel",
'R', Item.redstone,
'P', Block.pistonBase,
'C', "basicCircuit"}));
// Turntable
GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] {
"M",
"P",
'M', "motor",
'P', Block.pistonBase }));
// Manipulator
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockManipulator, 2), new Object[] { Block.dispenser, "basicCircuit" }));
}
private void createIC2Recipes()
{
try
{
System.out.println("IC2 Found...adding IC2 recipes for Assembly Line.");
// Armbot
GameRegistry.addRecipe(new ItemStack(blockArmbot, 1), "II ", "SIS", "MCM", 'S', Items.getItem("advancedAlloy"), 'C', Items.getItem("electronicCircuit"), 'I', "ingotRefinedIron", 'M', Items.getItem("generator"));
// Disk
GameRegistry.addRecipe(new ItemStack(itemDisk, 1), "III", "ICI", "III", 'I', itemImprint, 'C', Items.getItem("advancedCircuit"));
// Encoder
GameRegistry.addRecipe(new ItemStack(blockEncoder, 1), "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotRefinedIron", 'C', Items.getItem("advancedCircuit"));
// Detector
GameRegistry.addRecipe(new ItemStack(blockDetector, 1), "SES", "SCS", "S S", 'S', "ingotRefinedIron", 'C', Items.getItem("electronicCircuit"), 'E', Item.eyeOfEnder);
// Conveyor Belt
GameRegistry.addRecipe(new ItemStack(blockConveyorBelt, 10), "III", "WMW", 'I', "ingotRefinedIron", 'W', Block.planks, 'M', Items.getItem("generator"));
// Rejector
GameRegistry.addRecipe(new ItemStack(blockRejector, 1), "WPW", "@R@", '@', "ingotRefinedIron", 'R', Item.redstone, 'P', Block.pistonBase, 'C', Items.getItem("electronicCircuit"), 'W', Items.getItem("insulatedCopperCableItem"));
// Turntable
GameRegistry.addRecipe(new ItemStack(blockTurntable, 1), "M", "P", 'M', Items.getItem("generator"), 'P', Block.pistonBase);
// Manipulator
GameRegistry.addShapelessRecipe(new ItemStack(blockManipulator, 2), Block.dispenser, Items.getItem("electronicCircuit"));
}
catch (Exception e)
{
System.out.print("AssemblyLine: Failed to load IC2 recipes");
e.printStackTrace();
}
}
private void createStandardRecipes()
{
// Imprint
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemImprint, 2), new Object[] { "R", "P", "I", 'P', Item.paper, 'R', Item.redstone, 'I', new ItemStack(Item.dyePowder, 1, 0) }));
// Imprinter
GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, new Object[] { "SIS", "SPS", "WCW", 'S', Item.ingotIron, 'C', Block.chest, 'W', Block.workbench, 'P', Block.pistonBase, 'I', new ItemStack(Item.dyePowder, 1, 0) }));
// Crate
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), new Object[] { "TST", "S S", "TST", 'S', Item.ingotIron, 'T', Block.wood }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 1), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(blockCrate, 1, 0), 'S', Item.ingotIron, 'T', Block.wood }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 2), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(blockCrate, 1, 1), 'S', Item.ingotIron, 'T', Block.wood }));
}
public static void printSidedData(String data) public static void printSidedData(String data)
{ {
System.out.print(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? "[C]" : "[S]"); System.out.print(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? "[C]" : "[S]");

View file

@ -13,9 +13,9 @@ import net.minecraft.world.World;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.multiblock.TileEntityMulti;
import assemblyline.common.armbot.TileEntityArmbot; import assemblyline.common.armbot.TileEntityArmbot;
import assemblyline.common.block.TileEntityCrate;
import assemblyline.common.imprinter.ContainerImprinter; import assemblyline.common.imprinter.ContainerImprinter;
import assemblyline.common.imprinter.TileEntityImprinter; import assemblyline.common.imprinter.TileEntityImprinter;
import assemblyline.common.machine.TileEntityCrate;
import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.belt.TileEntityConveyorBelt;
@ -40,17 +40,7 @@ public class CommonProxy implements IGuiHandler
public void init() public void init()
{ {
GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "ALConveyorBelt");
GameRegistry.registerTileEntity(TileEntityRejector.class, "ALSorter");
GameRegistry.registerTileEntity(TileEntityManipulator.class, "ALManipulator");
GameRegistry.registerTileEntity(TileEntityCrate.class, "ALCrate");
GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector");
GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder");
GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot");
GameRegistry.registerTileEntity(TileEntityCraneController.class, "ALCraneController");
GameRegistry.registerTileEntity(TileEntityCraneRail.class, "ALCraneRail");
GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter");
GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti");
} }
private void extractZipToLocation(File zipFile, String sourceFolder, String destFolder) private void extractZipToLocation(File zipFile, String sourceFolder, String destFolder)

View file

@ -0,0 +1,87 @@
package assemblyline.common;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import cpw.mods.fml.common.registry.GameRegistry;
public class Recipes
{
static Object circuit;
static Object circuit2;
static Object circuit3;
static Object steel;
static Object steelPlate;
static Object motor;
public static void loadRecipes()
{
circuit = Item.redstoneRepeater;
circuit2 = Item.comparator;
steel = Item.ingotIron;
steelPlate = Item.ingotGold;
motor = Block.pistonBase;
if (!AssemblyLine.VINALLA_RECIPES)
{
if (OreDictionary.getOres("basicCircuit").size() > 0)
{
circuit = "basicCircuit";
}
if (OreDictionary.getOres("advancedCircuit").size() > 0)
{
circuit = "advancedCircuit";
}
if (OreDictionary.getOres("ingotSteel").size() > 0)
{
steel = "ingotSteel";
}
if (OreDictionary.getOres("plateSteel").size() > 0)
{
steelPlate = "plateSteel";
}
if (OreDictionary.getOres("motor").size() > 0)
{
motor = "motor";
}
}
Recipes.createStandardRecipes();
Recipes.createUERecipes();
}
private static void createUERecipes()
{
// Armbot
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', Recipes.steelPlate, 'C', Recipes.circuit2, 'I', Recipes.steel, 'M', Recipes.motor }));
// Disk
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.itemDisk, new Object[] { "III", "ICI", "III", 'I', AssemblyLine.itemImprint, 'C', Recipes.circuit2 }));
// Encoder
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', AssemblyLine.itemImprint, 'S', Recipes.steel, 'C', Recipes.circuit2 }));
// Detector
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockDetector, new Object[] { "SES", "SCS", "S S", 'S', Recipes.steel, 'C', Recipes.circuit, 'E', Item.eyeOfEnder }));
// Conveyor Belt
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', Recipes.steel, 'W', Block.planks, 'M', Recipes.motor }));
// Rejector
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockRejector, new Object[] { "CPC", "@R@", '@', Recipes.steel, 'R', Item.redstone, 'P', Block.pistonBase, 'C', Recipes.circuit }));
// Turntable
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockTurntable, new Object[] { "IMI", " P ", 'M', Recipes.motor, 'P', Block.pistonBase, 'I', Recipes.steel }));
// Manipulator
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(AssemblyLine.blockManipulator, 2), new Object[] { Block.dispenser, Recipes.circuit }));
}
private static void createStandardRecipes()
{
// Imprint
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.itemImprint, 2), new Object[] { "R", "P", "I", 'P', Item.paper, 'R', Item.redstone, 'I', new ItemStack(Item.dyePowder, 1, 0) }));
// Imprinter
GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockImprinter, new Object[] { "SIS", "SPS", "WCW", 'S', Item.ingotIron, 'C', Block.chest, 'W', Block.workbench, 'P', Block.pistonBase, 'I', new ItemStack(Item.dyePowder, 1, 0) }));
// Crate
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 0), new Object[] { "TST", "S S", "TST", 'S', Item.ingotIron, 'T', Block.planks }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 1), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(AssemblyLine.blockCrate, 1, 0), 'S', Recipes.steel, 'T', Block.wood }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 2), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(AssemblyLine.blockCrate, 1, 1), 'S', Recipes.steelPlate, 'T', Block.wood }));
}
}

View file

@ -11,17 +11,15 @@ import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.multiblock.IMultiBlock; import universalelectricity.prefab.multiblock.IMultiBlock;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockArmbot extends BlockALMachine public class BlockArmbot extends BlockAssembly
{ {
public BlockArmbot(int id) public BlockArmbot(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine,"armbot");
this.setUnlocalizedName("armbot");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@Override @Override

View file

@ -1,8 +1,5 @@
package assemblyline.common.armbot; package assemblyline.common.armbot;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -15,14 +12,11 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.block.IElectricityStorage;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.multiblock.IMultiBlock; import universalelectricity.prefab.multiblock.IMultiBlock;
@ -39,62 +33,45 @@ import assemblyline.common.armbot.command.CommandReturn;
import assemblyline.common.armbot.command.CommandRotateBy; import assemblyline.common.armbot.command.CommandRotateBy;
import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandRotateTo;
import assemblyline.common.armbot.command.CommandUse; import assemblyline.common.armbot.command.CommandUse;
import assemblyline.common.machine.TileEntityAssemblyNetwork; import assemblyline.common.machine.TileEntityAssembly;
import assemblyline.common.machine.encoder.ItemDisk; import assemblyline.common.machine.encoder.ItemDisk;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import dan200.computer.api.IComputerAccess; import dan200.computer.api.IComputerAccess;
import dan200.computer.api.IPeripheral; import dan200.computer.api.IPeripheral;
import dark.helpers.ItemFindingHelper; import dark.helpers.ItemFindingHelper;
public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMultiBlock, IInventory, IPacketReceiver, IElectricityStorage, IArmbot, IPeripheral public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, IInventory, IPacketReceiver, IArmbot, IPeripheral
{ {
private final CommandManager commandManager = new CommandManager(); private final CommandManager commandManager = new CommandManager();
private static final int PACKET_COMMANDS = 128; /** The items this container contains. */
/**
* The items this container contains.
*/
protected ItemStack disk = null; protected ItemStack disk = null;
public final double WATT_REQUEST = 20; public final double WATT_REQUEST = 20;
public double wattsReceived = 0;
private int playerUsing = 0;
private int computersAttached = 0; private int computersAttached = 0;
private List<IComputerAccess> connectedComputers = new ArrayList<IComputerAccess>(); private List<IComputerAccess> connectedComputers = new ArrayList<IComputerAccess>();
/** /** The rotation of the arms. In Degrees. */
* The rotation of the arms. In Degrees.
*/
public float rotationPitch = 0; public float rotationPitch = 0;
public float rotationYaw = 0; public float rotationYaw = 0;
public float renderPitch = 0; public float renderPitch = 0;
public float renderYaw = 0; public float renderYaw = 0;
private int ticksSincePower = 0;
public final float ROTATION_SPEED = 2.0f; public final float ROTATION_SPEED = 2.0f;
private String displayText = ""; private String displayText = "";
public boolean isProvidingPower = false; public boolean isProvidingPower = false;
/** /** An entity that the Armbot is grabbed onto. Entity Items are held separately. */
* An entity that the Armbot is grabbed onto. Entity Items are held separately.
*/
private final List<Entity> grabbedEntities = new ArrayList<Entity>(); private final List<Entity> grabbedEntities = new ArrayList<Entity>();
private final List<ItemStack> grabbedItems = new ArrayList<ItemStack>(); private final List<ItemStack> grabbedItems = new ArrayList<ItemStack>();
/** /** Client Side Object Storage */
* Client Side Object Storage
*/
public EntityItem renderEntityItem = null; public EntityItem renderEntityItem = null;
@Override @Override
public void initiate() public void initiate()
{ {
super.initiate(); super.initiate();
if(!this.commandManager.hasTasks()) if (!this.commandManager.hasTasks())
{ {
this.onInventoryChanged(); this.onInventoryChanged();
} }
@ -150,12 +127,9 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
} }
if (!this.worldObj.isRemote) if (!this.worldObj.isRemote)
this.commandManager.onUpdate(); this.commandManager.onUpdate();
this.ticksSincePower = 0;
} }
else else
{ {
this.ticksSincePower++;
} }
if (!this.worldObj.isRemote) if (!this.worldObj.isRemote)
@ -280,9 +254,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
return null; return null;
} }
/** /** @return The current hand position of the armbot. */
* @return The current hand position of the armbot.
*/
public Vector3 getHandPosition() public Vector3 getHandPosition()
{ {
Vector3 position = new Vector3(this); Vector3 position = new Vector3(this);
@ -306,46 +278,16 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
return delta; return delta;
} }
/** Data */
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt = new NBTTagCompound();
writeToNBT(nbt); this.writeToNBT(nbt);
return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.powerTransferRange, nbt); return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT, nbt);
} }
/** /** Inventory */
* Data
*/
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
if (this.worldObj.isRemote)
{
try
{
ByteArrayInputStream bis = new ByteArrayInputStream(packet.data);
DataInputStream dis = new DataInputStream(bis);
int id, x, y, z;
id = dis.readInt();
x = dis.readInt();
y = dis.readInt();
z = dis.readInt();
this.powerTransferRange = dis.readInt();
NBTTagCompound tag = Packet.readNBTTagCompound(dis);
readFromNBT(tag);
}
catch (IOException e)
{
FMLLog.severe("Failed to receive packet for Armbot");
e.printStackTrace();
}
}
}
/**
* Inventory
*/
@Override @Override
public int getSizeInventory() public int getSizeInventory()
{ {
@ -358,9 +300,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
return TranslationHelper.getLocal("tile.armbot.name"); return TranslationHelper.getLocal("tile.armbot.name");
} }
/** /** Inventory functions. */
* Inventory functions.
*/
@Override @Override
public ItemStack getStackInSlot(int par1) public ItemStack getStackInSlot(int par1)
{ {
@ -435,13 +375,11 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
@Override @Override
public void openChest() public void openChest()
{ {
this.playerUsing++;
} }
@Override @Override
public void closeChest() public void closeChest()
{ {
this.playerUsing--;
} }
public String getCommandDisplayText() public String getCommandDisplayText()
@ -449,9 +387,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
return this.displayText; return this.displayText;
} }
/** /** NBT Data */
* NBT Data
*/
@Override @Override
public void readFromNBT(NBTTagCompound nbt) public void readFromNBT(NBTTagCompound nbt)
{ {
@ -506,9 +442,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
} }
} }
/** /** Writes a tile entity to NBT. */
* Writes a tile entity to NBT.
*/
@Override @Override
public void writeToNBT(NBTTagCompound nbt) public void writeToNBT(NBTTagCompound nbt)
{ {
@ -559,24 +493,6 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
nbt.setTag("items", items); nbt.setTag("items", items);
} }
@Override
public double getJoules()
{
return this.wattsReceived;
}
@Override
public void setJoules(double joules)
{
this.wattsReceived = joules;
}
@Override
public double getMaxJoules()
{
return 1000;
}
@Override @Override
public boolean onActivated(EntityPlayer player) public boolean onActivated(EntityPlayer player)
{ {
@ -913,21 +829,22 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
} }
@Override @Override
public void dropEntity(Entity entity) public void drop(Object object)
{ {
this.grabbedEntities.remove(entity); if (object instanceof Entity)
{
this.grabbedEntities.remove((Entity) object);
} }
if (object instanceof ItemStack)
@Override
public void dropItem(ItemStack itemStack)
{ {
Vector3 handPosition = this.getHandPosition(); Vector3 handPosition = this.getHandPosition();
this.worldObj.spawnEntityInWorld(new EntityItem(worldObj, handPosition.x, handPosition.y, handPosition.z, itemStack)); ItemFindingHelper.dropItemStackExact(worldObj, handPosition.x, handPosition.y, handPosition.z, (ItemStack) object);
this.grabbedItems.remove(itemStack); this.grabbedItems.remove((ItemStack) object);
} }
if (object instanceof String)
@Override {
public void dropAll() String string = ((String) object).toLowerCase();
if (string.equalsIgnoreCase("all"))
{ {
Vector3 handPosition = this.getHandPosition(); Vector3 handPosition = this.getHandPosition();
Iterator<ItemStack> it = this.grabbedItems.iterator(); Iterator<ItemStack> it = this.grabbedItems.iterator();
@ -940,18 +857,16 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
this.grabbedEntities.clear(); this.grabbedEntities.clear();
this.grabbedItems.clear(); this.grabbedItems.clear();
} }
}
}
/** /** called by the block when another checks it too see if it is providing power to a direction */
* called by the block when another checks it too see if it is providing power to a direction
*/
public boolean isProvidingPowerSide(ForgeDirection dir) public boolean isProvidingPowerSide(ForgeDirection dir)
{ {
return this.isProvidingPower && dir.getOpposite() == this.getFacingDirectionFromAngle(); return this.isProvidingPower && dir.getOpposite() == this.getFacingDirectionFromAngle();
} }
/** /** gets the facing direction using the yaw angle */
* gets the facing direction using the yaw angle
*/
public ForgeDirection getFacingDirectionFromAngle() public ForgeDirection getFacingDirectionFromAngle()
{ {
float angle = MathHelper.wrapAngleTo180_float(this.rotationYaw); float angle = MathHelper.wrapAngleTo180_float(this.rotationYaw);
@ -993,4 +908,13 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
return false; return false;
} }
@Override
public double getWattLoad()
{
if (this.getCurrentCommand() != null)
{
return 2;
}
return .1;
}
} }

View file

@ -7,7 +7,7 @@ public class CommandDrop extends Command
{ {
super.doTask(); super.doTask();
this.tileEntity.dropAll(); this.tileEntity.drop("all");
this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true); this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true);
return false; return false;

View file

@ -9,7 +9,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import assemblyline.common.machine.InvExtractionHelper; import assemblyline.common.machine.InvInteractionHelper;
public class CommandGive extends Command public class CommandGive extends Command
{ {
@ -63,7 +63,7 @@ public class CommandGive extends Command
{ {
stacks.add(stack); stacks.add(stack);
} }
InvExtractionHelper invEx = new InvExtractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); InvInteractionHelper invEx = new InvInteractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false);
Iterator<ItemStack> targetIt = this.tileEntity.getGrabbedItems().iterator(); Iterator<ItemStack> targetIt = this.tileEntity.getGrabbedItems().iterator();
boolean flag = true; boolean flag = true;

View file

@ -90,7 +90,7 @@ public class CommandGrab extends Command
{ {
this.tileEntity.grabEntity(found.get(i)); this.tileEntity.grabEntity(found.get(i));
this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true); this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true);
if(this.belt != null){belt.IgnoreEntity(found.get(i));} if(this.belt != null){belt.ignoreEntity(found.get(i));}
return false; return false;
} }
} }

View file

@ -47,7 +47,7 @@ public class CommandPlace extends Command
{ {
((ItemBlock) itemStack.getItem()).placeBlockAt(itemStack, null, this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), 0, 0.5f, 0.5f, 0.5f, itemStack.getItemDamage()); ((ItemBlock) itemStack.getItem()).placeBlockAt(itemStack, null, this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), 0, 0.5f, 0.5f, 0.5f, itemStack.getItemDamage());
this.tileEntity.dropEntity(entity); this.tileEntity.drop(entity);
return false; return false;
} }
else if (itemStack.getItem() instanceof IPlantable) else if (itemStack.getItem() instanceof IPlantable)
@ -68,7 +68,7 @@ public class CommandPlace extends Command
{ {
Block.blocksList[blockID].onBlockPlacedBy(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), null, itemStack); Block.blocksList[blockID].onBlockPlacedBy(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), null, itemStack);
Block.blocksList[blockID].onPostBlockPlaced(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockMetadata); Block.blocksList[blockID].onPostBlockPlaced(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockMetadata);
this.tileEntity.dropEntity(entity); this.tileEntity.drop(entity);
return false; return false;
} }
} }

View file

@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import assemblyline.common.machine.InvExtractionHelper; import assemblyline.common.machine.InvInteractionHelper;
public class CommandTake extends Command public class CommandTake extends Command
{ {
@ -62,7 +62,7 @@ public class CommandTake extends Command
{ {
stacks.add(stack); stacks.add(stack);
} }
InvExtractionHelper invEx = new InvExtractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); InvInteractionHelper invEx = new InvInteractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false);
this.tileEntity.grabItem(invEx.tryGrabFromPosition(new Vector3(targetTile), direction, this.stack != null ? stack.stackSize : 1)); this.tileEntity.grabItem(invEx.tryGrabFromPosition(new Vector3(targetTile), direction, this.stack != null ? stack.stackSize : 1));
return !(this.tileEntity.getGrabbedItems().size() > 0); return !(this.tileEntity.getGrabbedItems().size() > 0);

View file

@ -113,7 +113,7 @@ public class GrabDictionary
} }
} }
public static void registerList() static
{ {
registerGrabableEntity("chicken", EntityChicken.class); registerGrabableEntity("chicken", EntityChicken.class);
registerGrabableEntity("cow", EntityCow.class); registerGrabableEntity("cow", EntityCow.class);

View file

@ -1,42 +0,0 @@
package assemblyline.common.block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import universalelectricity.prefab.block.BlockAdvanced;
import assemblyline.common.AssemblyLine;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockALMachine extends BlockAdvanced
{
public Icon machine_icon;
public BlockALMachine(int id, Material material)
{
super(id, material);
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister iconReg)
{
this.machine_icon = iconReg.registerIcon(AssemblyLine.TEXTURE_NAME_PREFIX + "machine");
}
@Override
@SideOnly(Side.CLIENT)
public Icon getBlockTexture(IBlockAccess par1iBlockAccess, int par2, int par3, int par4, int par5)
{
return this.machine_icon;
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
return this.machine_icon;
}
}

View file

@ -15,21 +15,19 @@ import net.minecraft.world.World;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.CommonProxy; import assemblyline.common.CommonProxy;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockImprinter extends BlockALMachine public class BlockImprinter extends BlockAssembly
{ {
Icon imprinter_side; Icon imprinter_side;
Icon imprinter_top; Icon imprinter_top;
Icon imprinter_bottom; Icon imprinter_bottom;
public BlockImprinter(int id, int texture) public BlockImprinter(int id)
{ {
super(id, Material.wood); super(id, Material.wood,"imprinter");
this.setUnlocalizedName("imprinter");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -11,20 +11,19 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import universalelectricity.prefab.implement.IRedstoneReceptor; import universalelectricity.prefab.implement.IRedstoneReceptor;
import assemblyline.api.IFilterable; import assemblyline.api.IFilterable;
import assemblyline.common.block.BlockALMachine;
import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.ItemImprinter;
import assemblyline.common.machine.BlockAssembly;
/** /**
* Extend this block class if a filter is allowed to be placed inside of this block. * Extend this block class if a filter is allowed to be placed inside of this block.
* *
* @author Calclavia * @author Calclavia
*/ */
public abstract class BlockImprintable extends BlockALMachine public abstract class BlockImprintable extends BlockAssembly
{ {
public BlockImprintable(String name, int id, Material material, CreativeTabs creativeTab) public BlockImprintable(String name, int id, Material material, CreativeTabs creativeTab)
{ {
super(id, material); super(id, material,name);
this.setUnlocalizedName(name);
this.setCreativeTab(creativeTab); this.setCreativeTab(creativeTab);
} }

View file

@ -20,23 +20,21 @@ import universalelectricity.prefab.network.PacketManager;
import assemblyline.api.IFilterable; import assemblyline.api.IFilterable;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.ItemImprinter;
import assemblyline.common.machine.TileEntityAssemblyNetwork; import assemblyline.common.machine.TileEntityAssembly;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork implements IRotatable, IFilterable, IPacketReceiver public abstract class TileEntityFilterable extends TileEntityAssembly implements IRotatable, IFilterable, IPacketReceiver
{ {
private ItemStack filterItem; private ItemStack filterItem;
private boolean inverted; private boolean inverted;
/** /** Looks through the things in the filter and finds out which item is being filtered.
* Looks through the things in the filter and finds out which item is being filtered.
* *
* @return Is this filterable block filtering this specific ItemStack? * @return Is this filterable block filtering this specific ItemStack? */
*/
public boolean isFiltering(ItemStack itemStack) public boolean isFiltering(ItemStack itemStack)
{ {
if (this.getFilter() != null && itemStack != null) if (this.getFilter() != null && itemStack != null)
@ -65,11 +63,7 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
public void setFilter(ItemStack filter) public void setFilter(ItemStack filter)
{ {
this.filterItem = filter; this.filterItem = filter;
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
} }
@Override @Override
@ -81,10 +75,7 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
public void setInverted(boolean inverted) public void setInverted(boolean inverted)
{ {
this.inverted = inverted; this.inverted = inverted;
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
} }
public boolean isInverted() public boolean isInverted()
@ -119,13 +110,11 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
return this.getDirection(worldObj, xCoord, yCoord, zCoord); return this.getDirection(worldObj, xCoord, yCoord, zCoord);
} }
/** /** Don't override this! Override getPackData() instead! */
* Don't override this! Override getPackData() instead!
*/
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData().toArray()); return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT.ordinal(), this.getPacketData().toArray());
} }
public ArrayList getPacketData() public ArrayList getPacketData()
@ -137,31 +126,6 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
return array; return array;
} }
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
if (worldObj.isRemote)
{
ByteArrayInputStream bis = new ByteArrayInputStream(packet.data);
DataInputStream dis = new DataInputStream(bis);
int id, x, y, z;
try
{
id = dis.readInt();
x = dis.readInt();
y = dis.readInt();
z = dis.readInt();
this.worldObj.markBlockForRenderUpdate(x, y, z);
NBTTagCompound tag = Packet.readNBTTagCompound(dis);
readFromNBT(tag);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
@Override @Override
public void writeToNBT(NBTTagCompound nbt) public void writeToNBT(NBTTagCompound nbt)
{ {

View file

@ -0,0 +1,101 @@
package assemblyline.common.machine;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
import universalelectricity.prefab.block.BlockAdvanced;
import assemblyline.common.AssemblyLine;
import assemblyline.common.TabAssemblyLine;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import dark.core.api.INetworkPart;
public class BlockAssembly extends BlockAdvanced
{
public Icon machine_icon;
public BlockAssembly(int id, Material material, String name)
{
super(AssemblyLine.CONFIGURATION.getBlock(name, id).getInt(), material);
this.setUnlocalizedName(name);
this.setCreativeTab(TabAssemblyLine.INSTANCE);
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{
ItemStack stack = entityPlayer.getHeldItem();
TileEntity ent = world.getBlockTileEntity(x, y, z);
if (!world.isRemote && stack != null && stack.itemID == Item.stick.itemID && ent instanceof TileEntityAssembly && entityPlayer != null)
{
TileEntityAssembly asm = (TileEntityAssembly) ent;
String output = "Debug>>>";
output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|";
entityPlayer.sendChatToPlayer(output);
output = "Debug>>>";
output += "Powered:" + asm.running + " ";
if (asm.getTileNetwork() instanceof NetworkAssembly)
{
output += ElectricityDisplay.getDisplaySimple(((NetworkAssembly) asm.getTileNetwork()).getCurrentBattery(), ElectricUnit.WATT, 2);
output += "/";
output += ElectricityDisplay.getDisplaySimple(((NetworkAssembly) asm.getTileNetwork()).getMaxBattery(), ElectricUnit.WATT, 2);
}
entityPlayer.sendChatToPlayer(output);
}
return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ);
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister iconReg)
{
this.machine_icon = iconReg.registerIcon(AssemblyLine.TEXTURE_NAME_PREFIX + "machine");
}
@Override
@SideOnly(Side.CLIENT)
public Icon getBlockTexture(IBlockAccess par1iBlockAccess, int par2, int par3, int par4, int par5)
{
return this.machine_icon;
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
return this.machine_icon;
}
@Override
public void onBlockAdded(World world, int x, int y, int z)
{
super.onBlockAdded(world, x, y, z);
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof INetworkPart)
{
((INetworkPart) tileEntity).updateNetworkConnections();
}
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof INetworkPart)
{
((INetworkPart) tileEntity).updateNetworkConnections();
}
}
}

View file

@ -1,17 +0,0 @@
package assemblyline.common.machine;
import net.minecraft.block.material.Material;
import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine;
public class BlockBeltSorter extends BlockALMachine
{
public BlockBeltSorter(int id)
{
super(id, Material.iron);
this.setCreativeTab(TabAssemblyLine.INSTANCE);
this.setUnlocalizedName("BeltSorter");
}
}

View file

@ -1,4 +1,4 @@
package assemblyline.common.block; package assemblyline.common.machine;
import java.util.List; import java.util.List;
@ -14,7 +14,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.PathfinderCrate;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -26,15 +25,13 @@ import cpw.mods.fml.relauncher.SideOnly;
* @author Calclavia * @author Calclavia
* *
*/ */
public class BlockCrate extends BlockALMachine public class BlockCrate extends BlockAssembly
{ {
Icon crate_icon; Icon crate_icon;
public BlockCrate(int id, int texture) public BlockCrate(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine,"crate");
this.setUnlocalizedName("crate");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -1,4 +1,4 @@
package assemblyline.common.block; package assemblyline.common.machine;
import java.util.Random; import java.util.Random;
@ -21,15 +21,13 @@ import assemblyline.common.TabAssemblyLine;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockTurntable extends BlockALMachine public class BlockTurntable extends BlockAssembly
{ {
private Icon top; private Icon top;
public BlockTurntable(int par1) public BlockTurntable(int par1)
{ {
super(par1, Material.piston); super(par1, Material.piston,"turntable");
this.setUnlocalizedName("turntable");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@Override @Override

View file

@ -13,18 +13,16 @@ import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.multiblock.TileEntityMulti;
import assemblyline.common.block.BlockCrate;
import assemblyline.common.block.TileEntityCrate;
import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.ItemImprinter;
public class InvExtractionHelper public class InvInteractionHelper
{ {
World world; World world;
Vector3 location; Vector3 location;
List<ItemStack> filterItems; List<ItemStack> filterItems;
boolean inverted; boolean inverted;
public InvExtractionHelper(World world, Vector3 location, List<ItemStack> filters, boolean inverted) public InvInteractionHelper(World world, Vector3 location, List<ItemStack> filters, boolean inverted)
{ {
this.world = world; this.world = world;
this.location = location; this.location = location;

View file

@ -1,4 +1,4 @@
package assemblyline.common.block; package assemblyline.common.machine;
import java.util.List; import java.util.List;

View file

@ -0,0 +1,86 @@
package assemblyline.common.machine;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
import universalelectricity.core.electricity.ElectricityPack;
import net.minecraft.tileentity.TileEntity;
import dark.core.api.INetworkPart;
import dark.core.tile.network.NetworkPowerTiles;
import dark.core.tile.network.NetworkTileEntities;
public class NetworkAssembly extends NetworkPowerTiles
{
public NetworkAssembly(INetworkPart... parts)
{
super(parts);
}
public NetworkTileEntities newInstance()
{
return new NetworkAssembly();
}
/** Consumes power for the tile to run on
*
* @param tile - tileEntity
* @return true if the power was consumed */
public boolean consumePower(TileEntityAssembly tile)
{
if (tile != null && this.wattStored >= tile.getWattLoad())
{
this.wattStored -= tile.getWattLoad();
//System.out.println("Power| ---" + ElectricityDisplay.getDisplaySimple(tile.getWattLoad(), ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2));
return true;
}
return false;
}
/** Adds power to the network. Does not save power on area unload */
public void addPower(double d)
{
double before = this.wattStored;
this.wattStored = Math.min(this.wattStored + d, this.getMaxBattery());
System.out.println("Power| +++" + ElectricityDisplay.getDisplaySimple(d, ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2));
}
@Override
public ElectricityPack getRequest(TileEntity... ents)
{
ElectricityPack pack = super.getRequest(ents);
if (pack == null || pack.voltage == 0 || pack.amperes == 0)
{
pack = new ElectricityPack(0, 120);
}
return ElectricityPack.getFromWatts(pack.getWatts() + this.getMemberRequest(), pack.voltage);
}
@Override
public double getMemberRequest()
{
double watt = 0;
for (INetworkPart part : this.getNetworkMemebers())
{
//TODO do check for ignored tiles/ents
if (part instanceof TileEntityAssembly)
{
watt += ((TileEntityAssembly) part).getWattLoad();
}
}
return watt;
}
@Override
public boolean isValidMember(INetworkPart part)
{
return super.isValidMember(part) && part instanceof TileEntityAssembly;
}
@Override
public String toString()
{
return "AssemblyNetwork[" + this.hashCode() + "][parts:" + this.networkMember.size() + "][Power:" + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2) + "]";
}
}

View file

@ -1,4 +1,4 @@
package assemblyline.common; package assemblyline.common.machine;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -7,7 +7,6 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper; import universalelectricity.core.vector.VectorHelper;
import assemblyline.common.block.TileEntityCrate;
/** /**
* A class that allows flexible path finding in Minecraft Blocks. Back Ported from UE 1.3.0. * A class that allows flexible path finding in Minecraft Blocks. Back Ported from UE 1.3.0.

View file

@ -0,0 +1,321 @@
package assemblyline.common.machine;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.core.block.IConductor;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
import universalelectricity.core.electricity.IElectricityNetwork;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.AssemblyLine;
import buildcraft.api.power.PowerProvider;
import com.google.common.io.ByteArrayDataInput;
import dark.core.api.INetworkPart;
import dark.core.tile.network.NetworkPowerTiles;
import dark.core.tile.network.NetworkTileEntities;
import dark.library.machine.TileEntityRunnableMachine;
/** A class to be inherited by all machines on the assembly line. This class acts as a single peace
* in a network of similar tiles allowing all to share power from one or more sources
*
* @author DarkGuardsman */
public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver, IConductor
{
/** Is the tile currently powered allowing it to run */
public boolean running = false;
private boolean prevRun = false;
/** Network used to link assembly machines together */
private NetworkAssembly assemblyNetwork;
/** Tiles that are connected to this */
public List<TileEntity> connectedTiles = new ArrayList<TileEntity>();
/** Random instance */
public Random random = new Random();
/** Random rate by which this tile updates its connections */
private int updateTick = 1;
public static enum AssemblyTilePacket
{
POWER(),
NBT();
}
@Override
public void invalidate()
{
NetworkAssembly.invalidate(this);
if (this.getTileNetwork() != null)
{
this.getTileNetwork().splitNetwork(this.worldObj, this);
}
super.invalidate();
}
@Override
public void updateEntity()
{
if (!this.worldObj.isRemote)
{
this.prevRun = this.running;
super.updateEntity();
if (ticks % updateTick == 0)
{
this.updateTick = ((int) random.nextInt(10) + 20);
this.updateNetworkConnections();
}
this.running = ((NetworkAssembly) this.getTileNetwork()).consumePower(this);
if (running != prevRun)
{
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.POWER.ordinal(), this.running);
PacketManager.sendPacketToClients(packet, worldObj, new Vector3(this), 64);
}
}
this.onUpdate();
}
@Override
public void onReceive(ForgeDirection side, double voltage, double amperes)
{
if (voltage <= 0 || amperes <= 0)
{
return;
}
if (voltage > this.getVoltage())
{
this.onDisable(2);
return;
}
if (this.getTileNetwork() instanceof NetworkAssembly)
{
((NetworkAssembly) this.getTileNetwork()).addPower(voltage * amperes);
//System.out.println("Tile got power Side:" + side.toString() + " " + ElectricityDisplay.getDisplaySimple(voltage, ElectricUnit.VOLTAGE, 2) + " " + ElectricityDisplay.getDisplaySimple(amperes, ElectricUnit.AMPERE, 2));
}
}
/** Same as updateEntity */
public abstract void onUpdate();
/** Checks to see if this assembly tile can run using several methods */
public boolean isRunning()
{
if (!this.worldObj.isRemote)
{
return this.running || AssemblyLine.REQUIRE_NO_POWER;
}
else
{
return this.running;
}
}
/** Amount of energy this tile runs on per tick */
public double getWattLoad()
{
return 1;
}
@Override
public double getBattery(ForgeDirection side)
{
if (this.getTileNetwork() instanceof NetworkAssembly)
{
return ((NetworkAssembly) this.getTileNetwork()).getMaxBattery();
}
return super.getBattery(side);
}
@Override
public double getCurrentBattery(ForgeDirection side)
{
if (this.getTileNetwork() instanceof NetworkAssembly)
{
return ((NetworkAssembly) this.getTileNetwork()).getCurrentBattery();
}
return super.getCurrentBattery(side);
}
/** Amount of energy the network needs at any given time */
@Override
public double getRequest(ForgeDirection side)
{
if (this.getTileNetwork() instanceof NetworkAssembly)
{
NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork());
return Math.min(100 + net.getMemberRequest(), Math.max(0, net.getRequest(new Vector3(this).modifyPositionFromSide(side).getTileEntity(this.worldObj), this).getWatts()));
}
return 0;
}
@Override
public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{
return entity != null && entity instanceof TileEntityAssembly;
}
@Override
public void updateNetworkConnections()
{
if (this.worldObj != null && !this.worldObj.isRemote)
{
this.connectedTiles.clear();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tileEntity = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj);
if (tileEntity instanceof TileEntityAssembly && ((TileEntityAssembly) tileEntity).canTileConnect(this, dir.getOpposite()))
{
this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this);
connectedTiles.add(tileEntity);
}
}
}
}
@Override
public List<TileEntity> getNetworkConnections()
{
return this.connectedTiles;
}
@Override
public NetworkTileEntities getTileNetwork()
{
if (this.assemblyNetwork == null)
{
this.assemblyNetwork = new NetworkAssembly(this);
}
return this.assemblyNetwork;
}
@Override
public void setTileNetwork(NetworkTileEntities network)
{
if (network instanceof NetworkAssembly)
{
this.assemblyNetwork = (NetworkAssembly) network;
}
}
public String toString()
{
return "[AssemblyTile]@" + (new Vector3(this).toString());
}
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
boolean packetSize = false;
try
{
ByteArrayInputStream bis = new ByteArrayInputStream(packet.data);
DataInputStream dis = new DataInputStream(bis);
int id = dis.readInt();
int x = dis.readInt();
int y = dis.readInt();
int z = dis.readInt();
int pId = dis.readInt();
this.simplePacket(pId, dis, player);
/** DEBUG PACKET SIZE AND INFO */
if (packetSize)
{
System.out.println("TileEntityAssembly>" + new Vector3(this) + ">>>Debug>>Packet" + pId + ">>Size>>bytes>>" + packet.data.length);
}
}
catch (Exception e)
{
System.out.println("Error Reading Packet for a TileEntityAssembly");
e.printStackTrace();
}
}
/** Handles reduced data from the main packet method
*
* @param id - packet ID
* @param dis - data
* @param player - player
* @return true if the packet was used */
public boolean simplePacket(int id, DataInputStream dis, EntityPlayer player)
{
try
{
if (this.worldObj.isRemote)
{
if (id == AssemblyTilePacket.POWER.ordinal())
{
this.running = dis.readBoolean();
return true;
}
if (id == AssemblyTilePacket.NBT.ordinal())
{
this.readFromNBT(Packet.readNBTTagCompound(dis));
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
return false;
}
@Override
public IElectricityNetwork getNetwork()
{
return (this.getTileNetwork() instanceof IElectricityNetwork ? (IElectricityNetwork) this.getTileNetwork() : null);
}
@Override
public void setNetwork(IElectricityNetwork network)
{
// TODO Auto-generated method stub
}
@Override
public TileEntity[] getAdjacentConnections()
{
return new TileEntity[6];
}
@Override
public void updateAdjacentConnections()
{
this.updateNetworkConnections();
}
@Override
public double getResistance()
{
return 0.01;
}
@Override
public double getCurrentCapcity()
{
return 1000;
}
}

View file

@ -1,100 +0,0 @@
package assemblyline.common.machine;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.electricity.ElectricityPack;
import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.AssemblyLine;
import dark.library.machine.TileEntityRunnableMachine;
/**
* A class to be inherited by all machines on the assembly line. This will allow all machines to be
* able to be powered through the powering of only one machine.
*
* @author Calclavia
*
*/
public abstract class TileEntityAssemblyNetwork extends TileEntityRunnableMachine
{
/**
* The range in which power can be transfered.
*/
public int powerTransferRange = 0;
public boolean isRunning()
{
return AssemblyLine.REQUIRE_NO_POWER || this.powerTransferRange > 0 || this.wattsReceived > this.getRequest().getWatts();
}
public void updatePowerTransferRange()
{
int maximumTransferRange = 0;
for (int i = 0; i < 6; i++)
{
ForgeDirection direction = ForgeDirection.getOrientation(i);
TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ);
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityAssemblyNetwork)
{
TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity;
if (assemblyNetwork.powerTransferRange > maximumTransferRange)
{
maximumTransferRange = assemblyNetwork.powerTransferRange;
}
}
}
}
this.powerTransferRange = Math.max(maximumTransferRange - 1, 0);
}
@Override
public void updateEntity()
{
super.updateEntity();
this.onUpdate();
if (this.ticks % 10 == 0)
{
if (this.wattsReceived >= this.getRequest().getWatts())
{
this.wattsReceived -= getRequest().getWatts();
this.powerTransferRange = this.getMaxTransferRange();
}
else
{
this.powerTransferRange = 0;
this.updatePowerTransferRange();
}
if (!this.worldObj.isRemote)
{
if (this.getDescriptionPacket() != null)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
}
}
}
protected void onUpdate()
{
}
@Override
public ElectricityPack getRequest()
{
return new ElectricityPack(1, this.getVoltage());
}
protected int getMaxTransferRange()
{
return 30;
}
}

View file

@ -1,4 +1,4 @@
package assemblyline.common.block; package assemblyline.common.machine;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;

View file

@ -25,10 +25,10 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota
/** True if is currently powered by redstone */ /** True if is currently powered by redstone */
private boolean isRedstonePowered = false; private boolean isRedstonePowered = false;
/** The class that interacts with inventories for this machine */ /** The class that interacts with inventories for this machine */
private InvExtractionHelper invExtractionHelper; private InvInteractionHelper invExtractionHelper;
@Override @Override
protected void onUpdate() public void onUpdate()
{ {
if (!this.worldObj.isRemote) if (!this.worldObj.isRemote)
{ {
@ -201,11 +201,11 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota
} }
/** Gets the class that managed extracting and placing items into inventories */ /** Gets the class that managed extracting and placing items into inventories */
public InvExtractionHelper invHelper() public InvInteractionHelper invHelper()
{ {
if (invExtractionHelper == null || invExtractionHelper.world != this.worldObj) if (invExtractionHelper == null || invExtractionHelper.world != this.worldObj)
{ {
this.invExtractionHelper = new InvExtractionHelper(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemImprinter.getFilters(getFilter()) : null, this.isInverted()); this.invExtractionHelper = new InvInteractionHelper(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemImprinter.getFilters(getFilter()) : null, this.isInverted());
} }
return invExtractionHelper; return invExtractionHelper;
} }

View file

@ -10,59 +10,33 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IBelt;
import assemblyline.common.imprinter.prefab.TileEntityFilterable; import assemblyline.common.imprinter.prefab.TileEntityFilterable;
/** /** @author Darkguardsman */
*
* @author Darkguardsman
*
*/
public class TileEntityRejector extends TileEntityFilterable public class TileEntityRejector extends TileEntityFilterable
{ {
/** /** should the piston fire, or be extended */
* should the piston fire, or be extended
*/
public boolean firePiston = false; public boolean firePiston = false;
public TileEntityRejector()
{
super();
}
@Override
protected int getMaxTransferRange()
{
return 20;
}
@Override @Override
public void onUpdate() public void onUpdate()
{ {
super.onUpdate(); /** Has to update a bit faster than a conveyer belt */
/**
* Has to update a bit faster than a conveyer belt
*/
if (this.ticks % 5 == 0 && !this.isDisabled()) if (this.ticks % 5 == 0 && !this.isDisabled())
{ {
int metadata = this.getBlockMetadata();
this.firePiston = false; this.firePiston = false;
// area to search for items
Vector3 searchPosition = new Vector3(this); Vector3 searchPosition = new Vector3(this);
searchPosition.modifyPositionFromSide(this.getDirection()); searchPosition.modifyPositionFromSide(this.getDirection());
TileEntity tileEntity = searchPosition.getTileEntity(this.worldObj); TileEntity tileEntity = searchPosition.getTileEntity(this.worldObj);
try try
{ {
boolean flag = false;
if (this.isRunning()) if (this.isRunning())
{ {
/** /** Find all entities in the position in which this block is facing and attempt
* Find all entities in the position in which this block is facing and attempt * to push it out of the way. */
* to push it out of the way.
*/
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(searchPosition.x, searchPosition.y, searchPosition.z, searchPosition.x + 1, searchPosition.y + 1, searchPosition.z + 1); AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(searchPosition.x, searchPosition.y, searchPosition.z, searchPosition.x + 1, searchPosition.y + 1, searchPosition.z + 1);
List<Entity> entitiesInFront = this.worldObj.getEntitiesWithinAABB(Entity.class, bounds); List<Entity> entitiesInFront = this.worldObj.getEntitiesWithinAABB(Entity.class, bounds);
@ -70,8 +44,7 @@ public class TileEntityRejector extends TileEntityFilterable
{ {
if (this.canEntityBeThrow(entity)) if (this.canEntityBeThrow(entity))
{ {
this.throwItem(this.getDirection(), entity); this.throwItem(tileEntity, this.getDirection(), entity);
flag = true;
} }
} }
} }
@ -83,23 +56,22 @@ public class TileEntityRejector extends TileEntityFilterable
} }
} }
/** /** Pushs an entity in the direction in which the rejector is facing */
* Used to move after it has been rejected public void throwItem(TileEntity tileEntity, ForgeDirection side, Entity entity)
*
* @param side - used to do the offset
* @param entity - Entity being thrown
*/
public void throwItem(ForgeDirection side, Entity entity)
{ {
this.firePiston = true; this.firePiston = true;
//TODO add config to adjust the motion magnitude per rejector
entity.motionX = (double) side.offsetX * 0.1; entity.motionX = (double) side.offsetX * 0.1;
entity.motionY += 0.10000000298023224D; entity.motionY += 0.10000000298023224D;
entity.motionZ = (double) side.offsetZ * 0.1; entity.motionZ = (double) side.offsetZ * 0.1;
PacketManager.sendPacketToClients(getDescriptionPacket()); if (!this.worldObj.isRemote && tileEntity instanceof IBelt)
{
((IBelt) tileEntity).ignoreEntity(entity);
}
} }
/** Checks to see if the rejector can push the entity in the facing direction */
public boolean canEntityBeThrow(Entity entity) public boolean canEntityBeThrow(Entity entity)
{ {
// TODO Add other things than items // TODO Add other things than items
@ -114,26 +86,6 @@ public class TileEntityRejector extends TileEntityFilterable
return false; return false;
} }
/**
* NBT Data
*/
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
this.firePiston = nbt.getBoolean("piston");
}
/**
* Writes a tile entity to NBT.
*/
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
nbt.setBoolean("piston", this.firePiston);
}
@Override @Override
public boolean canConnect(ForgeDirection dir) public boolean canConnect(ForgeDirection dir)
{ {

View file

@ -1,233 +0,0 @@
package assemblyline.common.machine;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.tile.TileEntityElectricityRunnable;
import assemblyline.common.machine.belt.TileEntityConveyorBelt;
import com.google.common.io.ByteArrayDataInput;
public class TileEntityRoboticSorter extends TileEntityElectricityRunnable implements IPacketReceiver, IInventory
{
/**
* The items this container contains.
*/
protected ItemStack[] containingItems = new ItemStack[this.getSizeInventory()];
/**
* Used to id the packet types
*/
private enum PacketTypes
{
ANIMATION, GUI, SETTINGON
}
/**
* Joules required per tick.
*/
public static final int WATT_REQUEST = 10;
/**
* Stored energy
*/
public double wattsReceived = 0;
/**
* on/off value for the GUI buttons
*/
public boolean[] guiButtons = new boolean[] { true, true, true, true, true };
/**
* the belt found in the search area
*/
public TileEntityConveyorBelt[] beltSide = new TileEntityConveyorBelt[6];
private int playerUsing = 0;
@Override
public String getInvName()
{
return "Sorter";
}
@Override
public int getSizeInventory()
{
return 4;
}
/**
* Inventory functions.
*/
@Override
public ItemStack getStackInSlot(int par1)
{
return this.containingItems[par1];
}
@Override
public ItemStack decrStackSize(int par1, int par2)
{
if (this.containingItems[par1] != null)
{
ItemStack var3;
if (this.containingItems[par1].stackSize <= par2)
{
var3 = this.containingItems[par1];
this.containingItems[par1] = null;
return var3;
}
else
{
var3 = this.containingItems[par1].splitStack(par2);
if (this.containingItems[par1].stackSize == 0)
{
this.containingItems[par1] = null;
}
return var3;
}
}
else
{
return null;
}
}
@Override
public ItemStack getStackInSlotOnClosing(int par1)
{
if (this.containingItems[par1] != null)
{
ItemStack var2 = this.containingItems[par1];
this.containingItems[par1] = null;
return var2;
}
else
{
return null;
}
}
@Override
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
this.containingItems[par1] = par2ItemStack;
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
{
par2ItemStack.stackSize = this.getInventoryStackLimit();
}
}
@Override
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
{
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D;
}
@Override
public void openChest()
{
this.playerUsing++;
}
@Override
public void closeChest()
{
this.playerUsing--;
}
/**
* NBT Data
*/
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
for (int i = 0; i < this.guiButtons.length; i++)
{
this.guiButtons[i] = nbt.getBoolean("guiButton" + i);
}
NBTTagList var2 = nbt.getTagList("Items");
this.containingItems = new ItemStack[this.getSizeInventory()];
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
{
NBTTagCompound var4 = (NBTTagCompound) var2.tagAt(var3);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < this.containingItems.length)
{
this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4);
}
}
}
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
// TODO Auto-generated method stub
}
/**
* Writes a tile entity to NBT.
*/
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
for (int i = 0; i < this.guiButtons.length; i++)
{
nbt.setBoolean("guiButton" + i, this.guiButtons[i]);
}
NBTTagList var2 = new NBTTagList();
for (int var3 = 0; var3 < this.containingItems.length; ++var3)
{
if (this.containingItems[var3] != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte) var3);
this.containingItems[var3].writeToNBT(var4);
var2.appendTag(var4);
}
}
nbt.setTag("Items", var2);
}
@Override
public int getInventoryStackLimit()
{
return 1;
}
@Override
public boolean canConnect(ForgeDirection dir)
{
return dir == ForgeDirection.DOWN;
}
@Override
public boolean isInvNameLocalized()
{
return false;
}
@Override
public boolean isStackValidForSlot(int i, ItemStack itemstack)
{
return false;
}
}

View file

@ -16,7 +16,7 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import assemblyline.common.machine.belt.TileEntityConveyorBelt.SlantType; import assemblyline.common.machine.belt.TileEntityConveyorBelt.SlantType;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -26,14 +26,12 @@ import cpw.mods.fml.relauncher.SideOnly;
* *
* @author Calclavia, DarkGuardsman * @author Calclavia, DarkGuardsman
*/ */
public class BlockConveyorBelt extends BlockALMachine public class BlockConveyorBelt extends BlockAssembly
{ {
public BlockConveyorBelt(int id) public BlockConveyorBelt(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine,"conveyorBelt");
this.setUnlocalizedName("conveyorBelt");
this.setBlockBounds(0, 0, 0, 1, 0.3f, 1); this.setBlockBounds(0, 0, 0, 1, 0.3f, 1);
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@Override @Override
@ -172,6 +170,7 @@ public class BlockConveyorBelt extends BlockALMachine
@Override @Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving par5EntityLiving, ItemStack stack) public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving par5EntityLiving, ItemStack stack)
{ {
super.onBlockPlacedBy(world, x, y, z, par5EntityLiving, stack);
int angle = MathHelper.floor_double((par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; int angle = MathHelper.floor_double((par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
int change = 2; int change = 2;
@ -246,7 +245,6 @@ public class BlockConveyorBelt extends BlockALMachine
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
{ {
TileEntityConveyorBelt tileEntity = (TileEntityConveyorBelt) world.getBlockTileEntity(x, y, z); TileEntityConveyorBelt tileEntity = (TileEntityConveyorBelt) world.getBlockTileEntity(x, y, z);
tileEntity.updatePowerTransferRange();
if (tileEntity.IgnoreList.contains(entity)) if (tileEntity.IgnoreList.contains(entity))
{ {
return; return;

View file

@ -1,6 +1,8 @@
package assemblyline.common.machine.belt; package assemblyline.common.machine.belt;
import java.io.DataInputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -14,129 +16,62 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.implement.IRotatable; import universalelectricity.prefab.implement.IRotatable;
import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.api.IBelt; import assemblyline.api.IBelt;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.TileEntityAssemblyNetwork; import assemblyline.common.machine.TileEntityAssembly;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements IPacketReceiver, IBelt, IRotatable public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacketReceiver, IBelt, IRotatable
{ {
public enum SlantType public enum SlantType
{ {
NONE, UP, DOWN, TOP NONE,
UP,
DOWN,
TOP
} }
public static final int MAX_FRAME = 13; public static final int MAX_FRAME = 13;
public static final int MAX_SLANT_FRAME = 23; public static final int MAX_SLANT_FRAME = 23;
/**
* Joules required to run this thing.
*/
public final float acceleration = 0.01f; public final float acceleration = 0.01f;
public final float maxSpeed = 0.1f; public final float maxSpeed = 0.1f;
/** Current rotation of the model wheels */
public float wheelRotation = 0; public float wheelRotation = 0;
private int animFrame = 0; // this is from 0 to 15 private int animFrame = 0; // this is from 0 to 15
private SlantType slantType = SlantType.NONE; private SlantType slantType = SlantType.NONE;
/** Entities that are ignored allowing for other tiles to interact with them */
public List<Entity> IgnoreList = new ArrayList<Entity>();// Entities that need to be ignored to public List<Entity> IgnoreList = new ArrayList<Entity>();
// prevent movement
/**
* This function is overriden to allow conveyor belts to power belts that are diagonally going
* up.
*/
@Override
public void updatePowerTransferRange()
{
int maximumTransferRange = 0;
for (int i = 0; i < 6; i++)
{
ForgeDirection direction = ForgeDirection.getOrientation(i);
TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ);
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityAssemblyNetwork)
{
TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity;
if (assemblyNetwork.powerTransferRange > maximumTransferRange)
{
maximumTransferRange = assemblyNetwork.powerTransferRange;
}
}
}
}
for (int d = 0; d <= 1; d++)
{
ForgeDirection direction = this.getDirection();
if (d == 1)
{
direction = direction.getOpposite();
}
for (int i = -1; i <= 1; i++)
{
TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + i, this.zCoord + direction.offsetZ);
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityAssemblyNetwork)
{
TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity;
if (assemblyNetwork.powerTransferRange > maximumTransferRange)
{
maximumTransferRange = assemblyNetwork.powerTransferRange;
}
}
}
}
}
this.powerTransferRange = Math.max(maximumTransferRange - 1, 0);
}
@Override @Override
public void onUpdate() public void onUpdate()
{ {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && this.ticks % 10 == 0)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
/* PROCESSES IGNORE LIST AND REMOVES UNNEED ENTRIES */ /* PROCESSES IGNORE LIST AND REMOVES UNNEED ENTRIES */
List<Entity> newList = new ArrayList<Entity>(); Iterator<Entity> it = this.IgnoreList.iterator();
for (Entity ent : IgnoreList) while (it.hasNext())
{ {
if (this.getAffectedEntities().contains(ent)) if (!this.getAffectedEntities().contains(it.next()))
{ {
newList.add(ent); it.remove();
} }
} }
this.IgnoreList = newList;
if (this.isRunning() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)) if (this.worldObj.isRemote && this.isRunning() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord))
{ {
if (this.ticks % 10 == 0 && this.worldObj.isRemote && this.worldObj.getBlockId(this.xCoord - 1, this.yCoord, this.zCoord) != AssemblyLine.blockConveyorBelt.blockID && this.worldObj.getBlockId(xCoord, yCoord, zCoord - 1) != AssemblyLine.blockConveyorBelt.blockID) if (this.ticks % 10 == 0 && this.worldObj.isRemote && this.worldObj.getBlockId(this.xCoord - 1, this.yCoord, this.zCoord) != AssemblyLine.blockConveyorBelt.blockID && this.worldObj.getBlockId(xCoord, yCoord, zCoord - 1) != AssemblyLine.blockConveyorBelt.blockID)
{ {
this.worldObj.playSound(this.xCoord, this.yCoord, this.zCoord, "mods.assemblyline.conveyor", 0.5f, 0.7f, true); this.worldObj.playSound(this.xCoord, this.yCoord, this.zCoord, "mods.assemblyline.conveyor", 0.5f, 0.7f, true);
} }
this.wheelRotation += 40; this.wheelRotation = (40 + this.wheelRotation) % 360;
if (this.wheelRotation > 360)
this.wheelRotation = 0;
float wheelRotPct = wheelRotation / 360f; float wheelRotPct = wheelRotation / 360f;
@ -161,16 +96,10 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
} }
@Override
protected int getMaxTransferRange()
{
return 20;
}
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.wattsReceived, this.slantType.ordinal()); return PacketManager.getPacket(AssemblyLine.CHANNEL, this, 3, this.slantType.ordinal());
} }
public SlantType getSlant() public SlantType getSlant()
@ -184,86 +113,69 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
{ {
slantType = SlantType.NONE; slantType = SlantType.NONE;
} }
this.slantType = slantType; this.slantType = slantType;
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
PacketManager.sendPacketToClients(this.getDescriptionPacket(), this.worldObj);
} }
/** /** Is this belt in the front of a conveyor line? Used for rendering. */
* Is this belt in the front of a conveyor line? Used for rendering.
*/
public boolean getIsFirstBelt() public boolean getIsFirstBelt()
{ {
Vector3 vec = new Vector3(this);
ForgeDirection front = this.getDirection(); TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj);
ForgeDirection back = this.getDirection().getOpposite(); TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj);
TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); if (fBelt instanceof TileEntityConveyorBelt && !(bBelt instanceof TileEntityConveyorBelt))
TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ);
if (fBelt instanceof TileEntityConveyorBelt)
{ {
ForgeDirection fD = ((TileEntityConveyorBelt) fBelt).getDirection(); return ((TileEntityConveyorBelt) fBelt).getDirection() == this.getDirection();
ForgeDirection TD = this.getDirection();
return fD == TD;
} }
return false; return false;
} }
/** /** Is this belt in the middile of two belts? Used for rendering. */
* Is this belt in the middile of two belts? Used for rendering.
*/
public boolean getIsMiddleBelt() public boolean getIsMiddleBelt()
{ {
ForgeDirection front = this.getDirection(); Vector3 vec = new Vector3(this);
ForgeDirection back = this.getDirection().getOpposite(); TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj);
TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj);
TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ); if (fBelt instanceof TileEntityConveyorBelt && bBelt instanceof TileEntityConveyorBelt)
if (fBelt instanceof TileEntityConveyorBelt && BBelt instanceof TileEntityConveyorBelt)
{ {
ForgeDirection fD = ((TileEntityConveyorBelt) fBelt).getDirection(); return ((TileEntityConveyorBelt) fBelt).getDirection() == this.getDirection() && ((TileEntityConveyorBelt) bBelt).getDirection() == this.getDirection();
ForgeDirection BD = ((TileEntityConveyorBelt) BBelt).getDirection();
ForgeDirection TD = this.getDirection();
return fD == TD && BD == TD;
} }
return false; return false;
} }
/** /** Is this belt in the back of a conveyor line? Used for rendering. */
* Is this belt in the back of a conveyor line? Used for rendering.
*/
public boolean getIsLastBelt() public boolean getIsLastBelt()
{ {
Vector3 vec = new Vector3(this);
ForgeDirection front = this.getDirection(); TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj);
ForgeDirection back = this.getDirection().getOpposite(); TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj);
TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); if (bBelt instanceof TileEntityConveyorBelt && !(fBelt instanceof TileEntityConveyorBelt))
TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ);
if (BBelt instanceof TileEntityConveyorBelt)
{ {
ForgeDirection BD = ((TileEntityConveyorBelt) BBelt).getDirection(); return ((TileEntityConveyorBelt) bBelt).getDirection() == this.getDirection().getOpposite();
ForgeDirection TD = this.getDirection();
return BD == TD;
} }
return false; return false;
} }
@Override @Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) public boolean simplePacket(int id, DataInputStream dis, EntityPlayer player)
{ {
if (this.worldObj.isRemote) if (!super.simplePacket(id, dis, player) && this.worldObj.isRemote)
{ {
try try
{ {
this.wattsReceived = dataStream.readDouble(); if (id == 3)
this.slantType = SlantType.values()[dataStream.readInt()]; {
this.slantType = SlantType.values()[dis.readInt()];
return true;
}
} }
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
} }
} }
return false;
} }
@Override @Override
@ -272,6 +184,11 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3); this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3);
} }
public void setDirection(ForgeDirection facingDirection)
{
this.setDirection(worldObj, xCoord, yCoord, zCoord, facingDirection);
}
@Override @Override
public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z)
{ {
@ -283,83 +200,35 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
return this.getDirection(worldObj, xCoord, yCoord, zCoord); return this.getDirection(worldObj, xCoord, yCoord, zCoord);
} }
public void setDirection(ForgeDirection facingDirection)
{
this.setDirection(worldObj, xCoord, yCoord, zCoord, facingDirection);
}
@Override @Override
public List<Entity> getAffectedEntities() public List<Entity> getAffectedEntities()
{ {
AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1); return worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1));
return worldObj.getEntitiesWithinAABB(Entity.class, bounds);
} }
public int getAnimationFrame() public int getAnimationFrame()
{ {
if (!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord))
{
TileEntity te = null;
te = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord);
if (te != null)
{
if (te instanceof TileEntityConveyorBelt)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
}
}
te = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1);
if (te != null)
{
if (te instanceof TileEntityConveyorBelt)
{
if (((TileEntityConveyorBelt) te).getSlant() == this.slantType)
return ((TileEntityConveyorBelt) te).getAnimationFrame();
}
}
}
return this.animFrame; return this.animFrame;
} }
/** /** NBT Data */
* NBT Data
*/
@Override @Override
public void readFromNBT(NBTTagCompound nbt) public void readFromNBT(NBTTagCompound nbt)
{ {
super.readFromNBT(nbt); super.readFromNBT(nbt);
this.slantType = SlantType.values()[nbt.getByte("slant")]; this.slantType = SlantType.values()[nbt.getByte("slant")];
if (worldObj != null)
{
worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, nbt.getInteger("rotation"), 3);
}
} }
/** /** Writes a tile entity to NBT. */
* Writes a tile entity to NBT.
*/
@Override @Override
public void writeToNBT(NBTTagCompound nbt) public void writeToNBT(NBTTagCompound nbt)
{ {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setByte("slant", (byte) this.slantType.ordinal()); nbt.setByte("slant", (byte) this.slantType.ordinal());
if (worldObj != null)
{
nbt.setInteger("rotation", worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord));
}
} }
@Override @Override
public void IgnoreEntity(Entity entity) public void ignoreEntity(Entity entity)
{ {
if (!this.IgnoreList.contains(entity)) if (!this.IgnoreList.contains(entity))
{ {
@ -373,4 +242,50 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements
{ {
return direction == ForgeDirection.DOWN; return direction == ForgeDirection.DOWN;
} }
@Override
public void updateNetworkConnections()
{
super.updateNetworkConnections();
if (this.worldObj != null && !this.worldObj.isRemote)
{
Vector3 face = new Vector3(this).modifyPositionFromSide(this.getDirection());
Vector3 back = new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite());
TileEntity front, rear;
if (this.slantType == SlantType.DOWN)
{
face.add(new Vector3(0, -1, 0));
back.add(new Vector3(0, 1, 0));
}
else if (this.slantType == SlantType.UP)
{
face.add(new Vector3(0, 1, 0));
back.add(new Vector3(0, -1, 0));
}
else
{
return;
}
front = face.getTileEntity(this.worldObj);
rear = back.getTileEntity(this.worldObj);
if (front instanceof TileEntityAssembly)
{
this.getTileNetwork().merge(((TileEntityAssembly) front).getTileNetwork(), this);
this.connectedTiles.add(front);
}
if (rear instanceof TileEntityAssembly)
{
this.getTileNetwork().merge(((TileEntityAssembly) rear).getTileNetwork(), this);
this.connectedTiles.add(rear);
}
}
}
@Override
public double getWattLoad()
{
return 0.1 + (0.1 * this.getAffectedEntities().size());
}
} }

View file

@ -1,13 +0,0 @@
package assemblyline.common.machine.belt;
/**
* For the moment this is just a render place holder, but will be convered to prevent item pickups
* from the belts.
*
* @author Rseifert
*
*/
public class TileEntityCoveredBelt extends TileEntityConveyorBelt
{
}

View file

@ -8,17 +8,15 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockCraneController extends BlockALMachine public class BlockCraneController extends BlockAssembly
{ {
public BlockCraneController(int id) public BlockCraneController(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine,"craneController");
this.setUnlocalizedName("craneController");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@Override @Override

View file

@ -8,17 +8,15 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockCraneFrame extends BlockALMachine public class BlockCraneFrame extends BlockAssembly
{ {
public BlockCraneFrame(int id) public BlockCraneFrame(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine,"craneFrame");
this.setUnlocalizedName("craneFrame");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
this.setBlockBounds(0.25f, 0.25f, 0.25f, 0.75f, 0.75f, 0.75f); this.setBlockBounds(0.25f, 0.25f, 0.25f, 0.75f, 0.75f, 0.75f);
} }

View file

@ -7,9 +7,9 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import assemblyline.api.ICraneStructure; import assemblyline.api.ICraneStructure;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.TileEntityAssemblyNetwork; import assemblyline.common.machine.TileEntityAssembly;
public class TileEntityCraneController extends TileEntityAssemblyNetwork implements ICraneStructure public class TileEntityCraneController extends TileEntityAssembly implements ICraneStructure
{ {
int width, depth; int width, depth;
boolean isCraneValid; boolean isCraneValid;
@ -213,4 +213,10 @@ public class TileEntityCraneController extends TileEntityAssemblyNetwork impleme
{ {
return true; return true;
} }
@Override
public void onUpdate()
{
// TODO Auto-generated method stub
}
} }

View file

@ -2,9 +2,9 @@ package assemblyline.common.machine.crane;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import assemblyline.api.ICraneStructure; import assemblyline.api.ICraneStructure;
import assemblyline.common.machine.TileEntityAssemblyNetwork; import assemblyline.common.machine.TileEntityAssembly;
public class TileEntityCraneRail extends TileEntityAssemblyNetwork implements ICraneStructure public class TileEntityCraneRail extends TileEntityAssembly implements ICraneStructure
{ {
@Override @Override
@ -19,4 +19,11 @@ public class TileEntityCraneRail extends TileEntityAssemblyNetwork implements IC
return false; return false;
} }
@Override
public void onUpdate()
{
// TODO Auto-generated method stub
}
} }

View file

@ -25,7 +25,7 @@ public class BlockDetector extends BlockImprintable
Icon eye_red; Icon eye_red;
Icon eye_green; Icon eye_green;
public BlockDetector(int blockID, int texture) public BlockDetector(int blockID)
{ {
super("detector", blockID, UniversalElectricity.machine, TabAssemblyLine.INSTANCE); super("detector", blockID, UniversalElectricity.machine, TabAssemblyLine.INSTANCE);
} }

View file

@ -110,4 +110,11 @@ public class TileEntityDetector extends TileEntityFilterable
{ {
return direction != this.getDirection(); return direction != this.getDirection();
} }
@Override
public void onUpdate()
{
// TODO Auto-generated method stub
}
} }

View file

@ -10,20 +10,18 @@ import net.minecraft.world.World;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.CommonProxy; import assemblyline.common.CommonProxy;
import assemblyline.common.TabAssemblyLine; import assemblyline.common.TabAssemblyLine;
import assemblyline.common.block.BlockALMachine; import assemblyline.common.machine.BlockAssembly;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockEncoder extends BlockALMachine public class BlockEncoder extends BlockAssembly
{ {
Icon encoder_side; Icon encoder_side;
Icon encoder_top; Icon encoder_top;
Icon encoder_bottom; Icon encoder_bottom;
public BlockEncoder(int id, int texture) public BlockEncoder(int id)
{ {
super(id, Material.wood); super(id, Material.wood,"encoder");
this.setUnlocalizedName("encoder");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)