mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Most assembler functionality, fixed drill.
This commit is contained in:
parent
54442c1ae4
commit
fe136abab1
1129
assets/hbm/models/assembler.obj
Normal file
1129
assets/hbm/models/assembler.obj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
assets/hbm/textures/gui/gui_assembler.png
Normal file
BIN
assets/hbm/textures/gui/gui_assembler.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
BIN
assets/hbm/textures/items/assembly_template.png
Normal file
BIN
assets/hbm/textures/items/assembly_template.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 242 B |
@ -352,6 +352,9 @@ public class ModBlocks {
|
||||
public static Block drill_pipe;
|
||||
public static final int guiID_machine_drill = 45;
|
||||
|
||||
public static Block machine_assembler;
|
||||
public static final int guiID_machine_assembler = 48;
|
||||
|
||||
public static Block launch_pad;
|
||||
public static Block launch_pad_generic;
|
||||
public static Block launch_pad_incendiary;
|
||||
@ -411,6 +414,8 @@ public class ModBlocks {
|
||||
public static Block dummy_port_flare;
|
||||
public static Block dummy_block_drill;
|
||||
public static Block dummy_port_drill;
|
||||
public static Block dummy_block_assembler;
|
||||
public static Block dummy_port_assembler;
|
||||
|
||||
|
||||
private static void initializeBlock() {
|
||||
@ -694,6 +699,7 @@ public class ModBlocks {
|
||||
machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_refinery_side");
|
||||
machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_drill");
|
||||
drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe");
|
||||
machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_assembler");
|
||||
|
||||
machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock);
|
||||
|
||||
@ -733,6 +739,8 @@ public class ModBlocks {
|
||||
dummy_port_flare = new DummyBlockFlare(Material.iron).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
dummy_block_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
dummy_port_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
dummy_block_assembler = new DummyBlockAssembler(Material.iron).setBlockName("dummy_block_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
dummy_port_assembler = new DummyBlockAssembler(Material.iron).setBlockName("dummy_port_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
}
|
||||
|
||||
private static void registerBlock() {
|
||||
@ -929,6 +937,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_electric_furnace_on, machine_electric_furnace_on.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_shredder, machine_shredder.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_deuterium, machine_deuterium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_well, machine_well.getUnlocalizedName());
|
||||
@ -1040,6 +1049,8 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(dummy_port_flare, dummy_port_flare.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(dummy_block_assembler, dummy_block_assembler.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(dummy_port_assembler, dummy_port_assembler.getUnlocalizedName());
|
||||
|
||||
//Other Technical Blocks
|
||||
GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName());
|
||||
|
||||
109
com/hbm/blocks/machine/DummyBlockAssembler.java
Normal file
109
com/hbm/blocks/machine/DummyBlockAssembler.java
Normal file
@ -0,0 +1,109 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.interfaces.IDummy;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityDummy;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityMachineCentrifuge;
|
||||
import com.hbm.tileentity.TileEntityMachineElectricFurnace;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class DummyBlockAssembler extends BlockContainer implements IDummy {
|
||||
|
||||
public static boolean safeBreak = false;
|
||||
|
||||
public DummyBlockAssembler(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityDummy();
|
||||
}
|
||||
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int i)
|
||||
{
|
||||
if(!safeBreak) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
//world.getBlock(a, b, c).breakBlock(world, a, b, c, block, i);
|
||||
if(!world.isRemote)
|
||||
world.func_147480_a(a, b, c, true);
|
||||
}
|
||||
}
|
||||
world.removeTileEntity(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Item getItem(World world, int x, int y, int z)
|
||||
{
|
||||
return Item.getItemFromBlock(ModBlocks.machine_assembler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te != null && te instanceof TileEntityDummy) {
|
||||
int a = ((TileEntityDummy)te).targetX;
|
||||
int b = ((TileEntityDummy)te).targetY;
|
||||
int c = ((TileEntityDummy)te).targetZ;
|
||||
|
||||
TileEntityMachineAssembler entity = (TileEntityMachineAssembler) world.getTileEntity(a, b, c);
|
||||
if(entity != null)
|
||||
{
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_assembler, world, a, b, c);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
176
com/hbm/blocks/machine/MachineAssembler.java
Normal file
176
com/hbm/blocks/machine/MachineAssembler.java
Normal file
@ -0,0 +1,176 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandler;
|
||||
import com.hbm.interfaces.IMultiblock;
|
||||
import com.hbm.tileentity.TileEntityDummy;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityNukeGadget;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class MachineAssembler extends BlockContainer implements IMultiblock {
|
||||
|
||||
public MachineAssembler(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityMachineAssembler();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.machine_assembler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if (i == 0) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
|
||||
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionEast)) {
|
||||
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionEast, ModBlocks.dummy_block_assembler);
|
||||
|
||||
//
|
||||
/*DummyBlockIGenerator.safeBreak = true;
|
||||
world.setBlock(x + 2, y, z, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te = world.getTileEntity(x + 2, y, z);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
world.setBlock(x - 3, y, z, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te2 = world.getTileEntity(x - 3, y, z);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te2;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
DummyBlockIGenerator.safeBreak = false;*/
|
||||
//
|
||||
|
||||
} else
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
if (i == 1) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionSouth)) {
|
||||
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionSouth, ModBlocks.dummy_block_assembler);
|
||||
|
||||
//
|
||||
/*DummyBlockIGenerator.safeBreak = true;
|
||||
world.setBlock(x, y, z + 2, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te = world.getTileEntity(x, y, z + 2);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
world.setBlock(x, y, z - 3, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te2 = world.getTileEntity(x, y, z - 3);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te2;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
DummyBlockIGenerator.safeBreak = false;*/
|
||||
//
|
||||
|
||||
} else
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
if (i == 2) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionWest)) {
|
||||
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionWest, ModBlocks.dummy_block_assembler);
|
||||
|
||||
//
|
||||
/*DummyBlockIGenerator.safeBreak = true;
|
||||
world.setBlock(x + 3, y, z, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te = world.getTileEntity(x + 3, y, z);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
world.setBlock(x - 2, y, z, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te2 = world.getTileEntity(x - 2, y, z);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te2;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
DummyBlockIGenerator.safeBreak = false;*/
|
||||
//
|
||||
|
||||
} else
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
if (i == 3) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionNorth)) {
|
||||
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionNorth, ModBlocks.dummy_block_assembler);
|
||||
|
||||
//
|
||||
/*DummyBlockIGenerator.safeBreak = true;
|
||||
world.setBlock(x, y, z + 3, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te = world.getTileEntity(x, y, z + 3);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
world.setBlock(x, y, z - 2, ModBlocks.dummy_port_igenerator);
|
||||
TileEntity te2 = world.getTileEntity(x, y, z - 2);
|
||||
if(te instanceof TileEntityDummy) {
|
||||
TileEntityDummy dummy = (TileEntityDummy)te2;
|
||||
dummy.targetX = x;
|
||||
dummy.targetY = y;
|
||||
dummy.targetZ = z;
|
||||
}
|
||||
DummyBlockIGenerator.safeBreak = false;*/
|
||||
//
|
||||
|
||||
} else
|
||||
world.func_147480_a(x, y, z, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -14,6 +14,7 @@ import com.hbm.inventory.container.ContainerFusionMultiblock;
|
||||
import com.hbm.inventory.container.ContainerGenerator;
|
||||
import com.hbm.inventory.container.ContainerIGenerator;
|
||||
import com.hbm.inventory.container.ContainerLaunchPadTier1;
|
||||
import com.hbm.inventory.container.ContainerMachineAssembler;
|
||||
import com.hbm.inventory.container.ContainerMachineBattery;
|
||||
import com.hbm.inventory.container.ContainerMachineCMBFactory;
|
||||
import com.hbm.inventory.container.ContainerMachineCoal;
|
||||
@ -54,6 +55,7 @@ import com.hbm.inventory.gui.GUIFWatzCore;
|
||||
import com.hbm.inventory.gui.GUIFusionMultiblock;
|
||||
import com.hbm.inventory.gui.GUIIGenerator;
|
||||
import com.hbm.inventory.gui.GUILaunchPadTier1;
|
||||
import com.hbm.inventory.gui.GUIMachineAssembler;
|
||||
import com.hbm.inventory.gui.GUIMachineBattery;
|
||||
import com.hbm.inventory.gui.GUIMachineCMBFactory;
|
||||
import com.hbm.inventory.gui.GUIMachineCentrifuge;
|
||||
@ -101,6 +103,7 @@ import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityMachineMiningDrill;
|
||||
import com.hbm.tileentity.TileEntityMachineOilWell;
|
||||
import com.hbm.tileentity.TileEntityLaunchPad;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineBattery;
|
||||
import com.hbm.tileentity.TileEntityMachineCMBFactory;
|
||||
import com.hbm.tileentity.TileEntityMachineCentrifuge;
|
||||
@ -499,6 +502,14 @@ public class GUIHandler implements IGuiHandler {
|
||||
return new ContainerMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity);
|
||||
}
|
||||
}
|
||||
|
||||
case ModBlocks.guiID_machine_assembler:
|
||||
{
|
||||
if(entity instanceof TileEntityMachineAssembler)
|
||||
{
|
||||
return new ContainerMachineAssembler(player.inventory, (TileEntityMachineAssembler) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -863,6 +874,14 @@ public class GUIHandler implements IGuiHandler {
|
||||
return new GUIMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity);
|
||||
}
|
||||
}
|
||||
|
||||
case ModBlocks.guiID_machine_assembler:
|
||||
{
|
||||
if(entity instanceof TileEntityMachineAssembler)
|
||||
{
|
||||
return new GUIMachineAssembler(player.inventory, (TileEntityMachineAssembler) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@ -49,6 +49,10 @@ public class MultiblockHandler {
|
||||
public static final int[] wellDimension = new int[] { 1, 1, 5, 0, 1, 1 };
|
||||
public static final int[] flareDimension = new int[] { 1, 1, 9, 0, 1, 1 };
|
||||
public static final int[] drillDimension = new int[] { 1, 1, 3, 0, 1, 1 };
|
||||
public static final int[] assemblerDimensionNorth = new int[] { 2, 1, 1, 0, 1, 2 };
|
||||
public static final int[] assemblerDimensionEast = new int[] { 2, 1, 1, 0, 2, 1 };
|
||||
public static final int[] assemblerDimensionSouth = new int[] { 1, 2, 1, 0, 2, 1 };
|
||||
public static final int[] assemblerDimensionWest = new int[] { 1, 2, 1, 0, 1, 2 };
|
||||
|
||||
//Approved!
|
||||
public static boolean checkSpace(World world, int x, int y, int z, int[] i) {
|
||||
|
||||
@ -9,6 +9,8 @@ import java.util.Set;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.tool.ItemAssemblyTemplate;
|
||||
import com.hbm.items.tool.ItemAssemblyTemplate.EnumAssemblyTemplate;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import cpw.mods.fml.common.registry.GameData;
|
||||
@ -1489,4 +1491,41 @@ public class MachineRecipes {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static List<ItemStack> getRecipeFromTempate(ItemStack stack) {
|
||||
|
||||
if(stack == null || !(stack.getItem() instanceof ItemAssemblyTemplate))
|
||||
return null;
|
||||
|
||||
List<ItemStack> list = new ArrayList<ItemStack>();
|
||||
|
||||
switch(ItemAssemblyTemplate.EnumAssemblyTemplate.getEnum(stack.getItemDamage())) {
|
||||
case TEST:
|
||||
list.add(new ItemStack(Items.iron_ingot, 4));
|
||||
list.add(new ItemStack(Items.gold_ingot, 2));
|
||||
list.add(new ItemStack(Items.coal, 8));
|
||||
break;
|
||||
}
|
||||
|
||||
if(list.isEmpty())
|
||||
return null;
|
||||
else
|
||||
return list;
|
||||
}
|
||||
|
||||
public static ItemStack getOutputFromTempate(ItemStack stack) {
|
||||
|
||||
if(stack == null || !(stack.getItem() instanceof ItemAssemblyTemplate))
|
||||
return null;
|
||||
|
||||
ItemStack output = null;
|
||||
|
||||
switch(ItemAssemblyTemplate.EnumAssemblyTemplate.getEnum(stack.getItemDamage())) {
|
||||
case TEST:
|
||||
output = new ItemStack(ModItems.rotor_steel, 2);
|
||||
break;
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
||||
148
com/hbm/inventory/container/ContainerMachineAssembler.java
Normal file
148
com/hbm/inventory/container/ContainerMachineAssembler.java
Normal file
@ -0,0 +1,148 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotMachineOutput;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineMiningDrill;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ICrafting;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerMachineAssembler extends Container {
|
||||
|
||||
private TileEntityMachineAssembler nukeBoy;
|
||||
|
||||
private int power;
|
||||
private int progress;
|
||||
private int maxProgress;
|
||||
|
||||
public ContainerMachineAssembler(InventoryPlayer invPlayer, TileEntityMachineAssembler tedf) {
|
||||
|
||||
nukeBoy = tedf;
|
||||
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 80, 18));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 152, 18));
|
||||
this.addSlotToContainer(new Slot(tedf, 2, 152, 36));
|
||||
this.addSlotToContainer(new Slot(tedf, 3, 152, 54));
|
||||
//Schematic
|
||||
this.addSlotToContainer(new Slot(tedf, 4, 80, 54));
|
||||
//Output
|
||||
this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 5, 134, 90));
|
||||
//Input
|
||||
this.addSlotToContainer(new Slot(tedf, 6, 8, 18));
|
||||
this.addSlotToContainer(new Slot(tedf, 7, 26, 18));
|
||||
this.addSlotToContainer(new Slot(tedf, 8, 8, 36));
|
||||
this.addSlotToContainer(new Slot(tedf, 9, 26, 36));
|
||||
this.addSlotToContainer(new Slot(tedf, 10, 8, 54));
|
||||
this.addSlotToContainer(new Slot(tedf, 11, 26, 54));
|
||||
this.addSlotToContainer(new Slot(tedf, 12, 8, 72));
|
||||
this.addSlotToContainer(new Slot(tedf, 13, 26, 72));
|
||||
this.addSlotToContainer(new Slot(tedf, 14, 8, 90));
|
||||
this.addSlotToContainer(new Slot(tedf, 15, 26, 90));
|
||||
this.addSlotToContainer(new Slot(tedf, 16, 8, 108));
|
||||
this.addSlotToContainer(new Slot(tedf, 17, 26, 108));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
|
||||
{
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 <= 12) {
|
||||
if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 0, 13, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return nukeBoy.isUseableByPlayer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detectAndSendChanges() {
|
||||
super.detectAndSendChanges();
|
||||
|
||||
for(int i = 0; i < this.crafters.size(); i++)
|
||||
{
|
||||
ICrafting par1 = (ICrafting)this.crafters.get(i);
|
||||
|
||||
if(this.power != this.nukeBoy.power)
|
||||
{
|
||||
par1.sendProgressBarUpdate(this, 0, this.nukeBoy.power);
|
||||
}
|
||||
|
||||
if(this.progress != this.nukeBoy.progress)
|
||||
{
|
||||
par1.sendProgressBarUpdate(this, 1, this.nukeBoy.progress);
|
||||
}
|
||||
|
||||
if(this.maxProgress != this.nukeBoy.maxProgress)
|
||||
{
|
||||
par1.sendProgressBarUpdate(this, 2, this.nukeBoy.maxProgress);
|
||||
}
|
||||
}
|
||||
|
||||
this.power = this.nukeBoy.power;
|
||||
this.progress= this.nukeBoy.progress;
|
||||
this.maxProgress= this.nukeBoy.maxProgress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProgressBar(int i, int j) {
|
||||
if(i == 0)
|
||||
{
|
||||
nukeBoy.power = j;
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
nukeBoy.progress = j;
|
||||
}
|
||||
if(i == 2)
|
||||
{
|
||||
nukeBoy.maxProgress = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
50
com/hbm/inventory/gui/GUIMachineAssembler.java
Normal file
50
com/hbm/inventory/gui/GUIMachineAssembler.java
Normal file
@ -0,0 +1,50 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachineAssembler;
|
||||
import com.hbm.inventory.container.ContainerMachineOilWell;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineOilWell;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIMachineAssembler extends GuiContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_assembler.png");
|
||||
private TileEntityMachineAssembler assembler;
|
||||
|
||||
public GUIMachineAssembler(InventoryPlayer invPlayer, TileEntityMachineAssembler tedf) {
|
||||
super(new ContainerMachineAssembler(invPlayer, tedf));
|
||||
assembler = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 222;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int i = assembler.getPowerScaled(52);
|
||||
drawTexturedModalRect(guiLeft + 116, guiTop + 70 - i, 176, 52 - i, 16, i);
|
||||
|
||||
int j = assembler.getProgressScaled(83);
|
||||
drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32);
|
||||
}
|
||||
}
|
||||
@ -505,6 +505,8 @@ public class ModItems {
|
||||
public static Item designator_range;
|
||||
public static Item linker;
|
||||
public static Item oil_detector;
|
||||
|
||||
public static Item assembly_template;
|
||||
|
||||
public static Item missile_generic;
|
||||
public static Item missile_anti_ballistic;
|
||||
@ -1659,6 +1661,8 @@ public class ModItems {
|
||||
chopper = new ItemChopper().setUnlocalizedName("chopper").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":chopper");
|
||||
linker = new ItemTeleLink().setUnlocalizedName("linker").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":linker");
|
||||
oil_detector = new ItemOilDetector().setUnlocalizedName("oil_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":oil_detector");
|
||||
|
||||
assembly_template = new ItemAssemblyTemplate().setUnlocalizedName("assembly_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":assembly_template");
|
||||
|
||||
euphemium_helmet = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 0).setUnlocalizedName("astatine_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet");
|
||||
euphemium_plate = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 1).setUnlocalizedName("astatine_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_plate");
|
||||
@ -2257,6 +2261,9 @@ public class ModItems {
|
||||
GameRegistry.registerItem(factory_core_titanium, factory_core_titanium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(factory_core_advanced, factory_core_advanced.getUnlocalizedName());
|
||||
|
||||
//Machine Templates
|
||||
GameRegistry.registerItem(assembly_template, assembly_template.getUnlocalizedName());
|
||||
|
||||
//Machine Upgrades
|
||||
GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName());
|
||||
GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName());
|
||||
|
||||
118
com/hbm/items/tool/ItemAssemblyTemplate.java
Normal file
118
com/hbm/items/tool/ItemAssemblyTemplate.java
Normal file
@ -0,0 +1,118 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.inventory.MachineRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.Event.Result;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockColored;
|
||||
import net.minecraft.block.BlockLog;
|
||||
import net.minecraft.block.IGrowable;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.passive.EntitySheep;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||
import net.minecraftforge.event.entity.player.BonemealEvent;
|
||||
|
||||
public class ItemAssemblyTemplate extends Item {
|
||||
|
||||
public enum EnumAssemblyTemplate {
|
||||
|
||||
TEST(0);
|
||||
|
||||
private final int value;
|
||||
private EnumAssemblyTemplate(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static EnumAssemblyTemplate getEnum(int i) {
|
||||
return EnumAssemblyTemplate.values()[i];
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public ItemAssemblyTemplate()
|
||||
{
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
}
|
||||
|
||||
public String getUnlocalizedName(ItemStack stack)
|
||||
{
|
||||
int i = stack.getItemDamage();
|
||||
return super.getUnlocalizedName() + "." + EnumAssemblyTemplate.getEnum(i).getName();
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List list)
|
||||
{
|
||||
for (int i = 0; i < EnumAssemblyTemplate.values().length; ++i)
|
||||
{
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
public static int getProcessTime(ItemStack stack) {
|
||||
|
||||
if(!(stack.getItem() instanceof ItemAssemblyTemplate))
|
||||
return 100;
|
||||
|
||||
int i = stack.getItemDamage();
|
||||
EnumAssemblyTemplate enum1 = EnumAssemblyTemplate.getEnum(i);
|
||||
|
||||
switch (enum1) {
|
||||
case TEST:
|
||||
return 200;
|
||||
default:
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool)
|
||||
{
|
||||
|
||||
if(!(stack.getItem() instanceof ItemAssemblyTemplate))
|
||||
return;
|
||||
|
||||
List<ItemStack> stacks = MachineRecipes.getRecipeFromTempate(stack);
|
||||
ItemStack out = MachineRecipes.getOutputFromTempate(stack);
|
||||
|
||||
try {
|
||||
list.add("Output:");
|
||||
list.add(out.stackSize + "x " + out.getDisplayName());
|
||||
list.add("Inputs:");
|
||||
|
||||
for(int i = 0; i < stacks.size(); i++) {
|
||||
if(stacks.get(i) != null)
|
||||
list.add(stacks.get(i).stackSize + "x " + stacks.get(i).getDisplayName());
|
||||
}
|
||||
} catch(Exception e) {
|
||||
list.add("###INVALID###");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -164,6 +164,7 @@ import com.hbm.render.item.ItemRenderTestContainer;
|
||||
import com.hbm.render.item.ItemRenderUboinik;
|
||||
import com.hbm.render.item.ItemRenderXVL1456;
|
||||
import com.hbm.render.item.ItemRenderZOMG;
|
||||
import com.hbm.render.tileentity.RenderAssembler;
|
||||
import com.hbm.render.tileentity.RenderBombMulti;
|
||||
import com.hbm.render.tileentity.RenderCable;
|
||||
import com.hbm.render.tileentity.RenderCentrifuge;
|
||||
@ -219,6 +220,7 @@ import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityMachineMiningDrill;
|
||||
import com.hbm.tileentity.TileEntityMachineOilWell;
|
||||
import com.hbm.tileentity.TileEntityLaunchPad;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineCentrifuge;
|
||||
import com.hbm.tileentity.TileEntityMachineCyclotron;
|
||||
import com.hbm.tileentity.TileEntityMachineGasFlare;
|
||||
@ -279,6 +281,7 @@ public class ClientProxy extends ServerProxy
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler());
|
||||
|
||||
//RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core));
|
||||
|
||||
@ -142,6 +142,7 @@ import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityMachineMiningDrill;
|
||||
import com.hbm.tileentity.TileEntityMachineOilWell;
|
||||
import com.hbm.tileentity.TileEntityLaunchPad;
|
||||
import com.hbm.tileentity.TileEntityMachineAssembler;
|
||||
import com.hbm.tileentity.TileEntityMachineBattery;
|
||||
import com.hbm.tileentity.TileEntityMachineCMBFactory;
|
||||
import com.hbm.tileentity.TileEntityMachineCentrifuge;
|
||||
@ -455,6 +456,7 @@ public class MainRegistry
|
||||
GameRegistry.registerTileEntity(TileEntityPylonRedWire.class, "tileentity_pylon_redwire");
|
||||
GameRegistry.registerTileEntity(TileEntityStructureMarker.class, "tileentity_structure_marker");
|
||||
GameRegistry.registerTileEntity(TileEntityMachineMiningDrill.class, "tileentity_mining_drill");
|
||||
GameRegistry.registerTileEntity(TileEntityMachineAssembler.class, "tileentity_assembly_machine");
|
||||
|
||||
EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true);
|
||||
EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true);
|
||||
|
||||
58
com/hbm/render/tileentity/RenderAssembler.java
Normal file
58
com/hbm/render/tileentity/RenderAssembler.java
Normal file
@ -0,0 +1,58 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.TileEntityMachineIGenerator;
|
||||
import com.hbm.tileentity.TileEntityMachineMiningDrill;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class RenderAssembler extends TileEntitySpecialRenderer {
|
||||
|
||||
private static final ResourceLocation body = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/assembler.obj");
|
||||
|
||||
private IModelCustom bodyModel;
|
||||
private ResourceLocation bodyTexture;
|
||||
|
||||
public RenderAssembler()
|
||||
{
|
||||
bodyModel = AdvancedModelLoader.loadModel(body);
|
||||
bodyTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||
switch(tileEntity.getBlockMetadata())
|
||||
{
|
||||
case 2:
|
||||
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||
GL11.glTranslated(0.5D, 0.0D, -0.5D); break;
|
||||
case 4:
|
||||
GL11.glRotatef(270, 0F, 1F, 0F);
|
||||
GL11.glTranslated(0.5D, 0.0D, -0.5D); break;
|
||||
case 3:
|
||||
GL11.glRotatef(0, 0F, 1F, 0F);
|
||||
GL11.glTranslated(0.5D, 0.0D, -0.5D); break;
|
||||
case 5:
|
||||
GL11.glRotatef(90, 0F, 1F, 0F);
|
||||
GL11.glTranslated(0.5D, 0.0D, -0.5D); break;
|
||||
}
|
||||
|
||||
bindTexture(bodyTexture);
|
||||
|
||||
bodyModel.renderAll();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
457
com/hbm/tileentity/TileEntityMachineAssembler.java
Normal file
457
com/hbm/tileentity/TileEntityMachineAssembler.java
Normal file
@ -0,0 +1,457 @@
|
||||
package com.hbm.tileentity;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.interfaces.IConsumer;
|
||||
import com.hbm.inventory.MachineRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.special.ItemBattery;
|
||||
import com.hbm.items.tool.ItemAssemblyTemplate;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.TEDrillPacket;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityChest;
|
||||
import net.minecraft.tileentity.TileEntityHopper;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class TileEntityMachineAssembler extends TileEntity implements ISidedInventory, IConsumer {
|
||||
|
||||
private ItemStack slots[];
|
||||
|
||||
public int power;
|
||||
public static final int maxPower = 100000;
|
||||
public int progress;
|
||||
public int maxProgress = 100;
|
||||
int age = 0;
|
||||
|
||||
Random rand = new Random();
|
||||
|
||||
private String customName;
|
||||
|
||||
public TileEntityMachineAssembler() {
|
||||
slots = new ItemStack[18];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSizeInventory() {
|
||||
return slots.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlot(int i) {
|
||||
return slots[i];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlotOnClosing(int i) {
|
||||
if(slots[i] != null)
|
||||
{
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInventorySlotContents(int i, ItemStack itemStack) {
|
||||
slots[i] = itemStack;
|
||||
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
||||
{
|
||||
itemStack.stackSize = getInventoryStackLimit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryName() {
|
||||
return this.hasCustomInventoryName() ? this.customName : "container.assembler";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInventoryName() {
|
||||
return this.customName != null && this.customName.length() > 0;
|
||||
}
|
||||
|
||||
public void setCustomName(String name) {
|
||||
this.customName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInventoryStackLimit() {
|
||||
return 64;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this)
|
||||
{
|
||||
return false;
|
||||
}else{
|
||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128;
|
||||
}
|
||||
}
|
||||
|
||||
//You scrubs aren't needed for anything (right now)
|
||||
@Override
|
||||
public void openInventory() {}
|
||||
@Override
|
||||
public void closeInventory() {}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
|
||||
if(i == 0)
|
||||
if(itemStack.getItem() instanceof ItemBattery)
|
||||
return true;
|
||||
|
||||
if(i == 1)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack decrStackSize(int i, int j) {
|
||||
if(slots[i] != null)
|
||||
{
|
||||
if(slots[i].stackSize <= j)
|
||||
{
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
}
|
||||
ItemStack itemStack1 = slots[i].splitStack(j);
|
||||
if (slots[i].stackSize == 0)
|
||||
{
|
||||
slots[i] = null;
|
||||
}
|
||||
|
||||
return itemStack1;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
NBTTagList list = nbt.getTagList("items", 10);
|
||||
|
||||
this.power = nbt.getInteger("powerTime");
|
||||
slots = new ItemStack[getSizeInventory()];
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++)
|
||||
{
|
||||
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
||||
byte b0 = nbt1.getByte("slot");
|
||||
if(b0 >= 0 && b0 < slots.length)
|
||||
{
|
||||
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("powerTime", power);
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
for(int i = 0; i < slots.length; i++)
|
||||
{
|
||||
if(slots[i] != null)
|
||||
{
|
||||
NBTTagCompound nbt1 = new NBTTagCompound();
|
||||
nbt1.setByte("slot", (byte)i);
|
||||
slots[i].writeToNBT(nbt1);
|
||||
list.appendTag(nbt1);
|
||||
}
|
||||
}
|
||||
nbt.setTag("items", list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int p_94128_1_)
|
||||
{
|
||||
return new int[] { 0 };
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
|
||||
return this.isItemValidForSlot(i, itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getPowerScaled(int i) {
|
||||
return (power * i) / maxPower;
|
||||
}
|
||||
|
||||
public int getProgressScaled(int i) {
|
||||
return (progress * i) / maxProgress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
||||
|
||||
if(MachineRecipes.getOutputFromTempate(slots[4]) != null && MachineRecipes.getRecipeFromTempate(slots[4]) != null) {
|
||||
this.maxProgress = ItemAssemblyTemplate.getProcessTime(slots[4]);
|
||||
|
||||
if(power >= 100 && removeItems(MachineRecipes.getRecipeFromTempate(slots[4]), cloneItemStackProper(slots))) {
|
||||
|
||||
if(slots[5] == null || (slots[5] != null && slots[5].getItem() == MachineRecipes.getOutputFromTempate(slots[4]).copy().getItem()) && slots[5].stackSize + MachineRecipes.getOutputFromTempate(slots[4]).copy().stackSize <= slots[5].getMaxStackSize()) {
|
||||
progress++;
|
||||
|
||||
if(progress >= maxProgress) {
|
||||
progress = 0;
|
||||
if(slots[5] == null) {
|
||||
slots[5] = MachineRecipes.getOutputFromTempate(slots[4]).copy();
|
||||
} else {
|
||||
slots[5].stackSize += MachineRecipes.getOutputFromTempate(slots[4]).copy().stackSize;
|
||||
}
|
||||
|
||||
removeItems(MachineRecipes.getRecipeFromTempate(slots[4]), slots);
|
||||
}
|
||||
|
||||
power -= 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//I can't believe that worked.
|
||||
public ItemStack[] cloneItemStackProper(ItemStack[] array) {
|
||||
ItemStack[] stack = new ItemStack[array.length];
|
||||
|
||||
for(int i = 0; i < array.length; i++)
|
||||
if(array[i] != null)
|
||||
stack[i] = array[i].copy();
|
||||
else
|
||||
stack[i] = null;
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
public boolean tryFillContainer(IInventory inventory, int slot) {
|
||||
|
||||
int size = inventory.getSizeInventory();
|
||||
|
||||
for(int i = 0; i < size; i++) {
|
||||
if(inventory.getStackInSlot(i) != null) {
|
||||
|
||||
if(slots[slot] == null)
|
||||
return false;
|
||||
|
||||
ItemStack sta1 = inventory.getStackInSlot(i).copy();
|
||||
ItemStack sta2 = slots[slot].copy();
|
||||
if(sta1 != null && sta2 != null) {
|
||||
sta1.stackSize = 1;
|
||||
sta2.stackSize = 1;
|
||||
|
||||
if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) {
|
||||
slots[slot].stackSize--;
|
||||
|
||||
if(slots[slot].stackSize <= 0)
|
||||
slots[slot] = null;
|
||||
|
||||
ItemStack sta3 = inventory.getStackInSlot(i).copy();
|
||||
sta3.stackSize++;
|
||||
inventory.setInventorySlotContents(i, sta3);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < size; i++) {
|
||||
|
||||
if(slots[slot] == null)
|
||||
return false;
|
||||
|
||||
ItemStack sta2 = slots[slot].copy();
|
||||
if(inventory.getStackInSlot(i) == null && sta2 != null) {
|
||||
sta2.stackSize = 1;
|
||||
slots[slot].stackSize--;
|
||||
|
||||
if(slots[slot].stackSize <= 0)
|
||||
slots[slot] = null;
|
||||
|
||||
inventory.setInventorySlotContents(i, sta2);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean hasSpace(ItemStack stack) {
|
||||
|
||||
ItemStack st = stack.copy();
|
||||
|
||||
if(st == null)
|
||||
return true;
|
||||
|
||||
for(int i = 1; i < 10; i++) {
|
||||
if(slots[i] == null)
|
||||
return true;
|
||||
}
|
||||
|
||||
int size = st.stackSize;
|
||||
st.stackSize = 1;
|
||||
|
||||
ItemStack[] fakeArray = slots.clone();
|
||||
boolean flag = true;
|
||||
for(int i = 0; i < stack.stackSize; i++) {
|
||||
if(!canAddItemToArray(st, fakeArray))
|
||||
flag = false;
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
public void addItemToInventory(ItemStack stack) {
|
||||
|
||||
ItemStack st = stack.copy();
|
||||
|
||||
if(st == null)
|
||||
return;
|
||||
|
||||
int size = st.stackSize;
|
||||
st.stackSize = 1;
|
||||
|
||||
for(int i = 0; i < size; i++)
|
||||
canAddItemToArray(st, this.slots);
|
||||
|
||||
}
|
||||
|
||||
public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) {
|
||||
|
||||
ItemStack st = stack.copy();
|
||||
|
||||
if(st == null)
|
||||
return true;
|
||||
|
||||
for(int i = 1; i < 10; i++) {
|
||||
|
||||
if(array[i] != null) {
|
||||
ItemStack sta = array[i].copy();
|
||||
|
||||
if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) {
|
||||
array[i].stackSize++;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 1; i < 10; i++) {
|
||||
if(array[i] == null) {
|
||||
array[i] = stack.copy();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//boolean true: remove items, boolean false: simulation mode
|
||||
public boolean removeItems(List<ItemStack> stack, ItemStack[] array) {
|
||||
|
||||
if(stack == null)
|
||||
return false;
|
||||
|
||||
for(int i = 0; i < stack.size(); i++) {
|
||||
for(int j = 0; j < stack.get(i).stackSize; j++) {
|
||||
ItemStack sta = stack.get(i).copy();
|
||||
sta.stackSize = 1;
|
||||
|
||||
if(!canRemoveItemFromArray(sta, array))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public boolean canRemoveItemFromArray(ItemStack stack, ItemStack[] array) {
|
||||
|
||||
ItemStack st = stack.copy();
|
||||
|
||||
if(st == null)
|
||||
return true;
|
||||
|
||||
for(int i = 6; i < 18; i++) {
|
||||
|
||||
if(array[i] != null) {
|
||||
ItemStack sta = array[i].copy();
|
||||
sta.stackSize = 1;
|
||||
|
||||
if(sta != null && sta.isItemEqual(st) && array[i].stackSize > 0) {
|
||||
array[i].stackSize--;
|
||||
|
||||
if(array[i].stackSize <= 0)
|
||||
array[i] = null;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(int i) {
|
||||
power = i;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPower() {
|
||||
return power;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxPower() {
|
||||
return maxPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return TileEntity.INFINITE_EXTENT_AABB;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared()
|
||||
{
|
||||
return 65536.0D;
|
||||
}
|
||||
}
|
||||
@ -576,7 +576,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn
|
||||
if(!tryDrill(x - 1, y, z - 1))
|
||||
if(!tryDrill(x, y, z - 1))
|
||||
if(!tryDrill(x + 1, y, z - 1))
|
||||
return false;
|
||||
|
||||
if(!tryDrill(x, y - 1, z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -607,7 +609,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn
|
||||
if(!tryDrill(x, y, z - 2))
|
||||
if(!tryDrill(x + 1, y, z - 2))
|
||||
if(!tryDrill(x + 2, y, z - 1))
|
||||
return false;
|
||||
|
||||
if(!tryDrill(x, y - 1, z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -655,7 +659,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn
|
||||
if(!tryDrill(x + 1, y, z - 3))
|
||||
if(!tryDrill(x + 2, y, z - 2))
|
||||
if(!tryDrill(x + 3, y, z - 1))
|
||||
return false;
|
||||
|
||||
if(!tryDrill(x, y - 1, z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -736,7 +742,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn
|
||||
if(!tryDrill(x + 3, y, z - 2))
|
||||
if(!tryDrill(x + 4, y, z - 2))
|
||||
if(!tryDrill(x + 4, y, z - 1))
|
||||
return false;
|
||||
|
||||
if(!tryDrill(x, y - 1, z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user