Initial work complete for factory installers! Still need to add recipes and algorithm to transform generic machines into basic factories
This commit is contained in:
parent
6889bba52d
commit
274930fd8a
|
@ -11,6 +11,7 @@ import mekanism.common.item.ItemDirtyDust;
|
|||
import mekanism.common.item.ItemDust;
|
||||
import mekanism.common.item.ItemElectricBow;
|
||||
import mekanism.common.item.ItemEnergized;
|
||||
import mekanism.common.item.ItemFactoryInstaller;
|
||||
import mekanism.common.item.ItemFilterCard;
|
||||
import mekanism.common.item.ItemFlamethrower;
|
||||
import mekanism.common.item.ItemFreeRunners;
|
||||
|
@ -62,6 +63,7 @@ public class MekanismItems
|
|||
public static final Item SpeedUpgrade = new ItemUpgrade(Upgrade.SPEED).setUnlocalizedName("SpeedUpgrade");
|
||||
public static final Item EnergyUpgrade = new ItemUpgrade(Upgrade.ENERGY).setUnlocalizedName("EnergyUpgrade");
|
||||
public static final Item FilterUpgrade = new ItemUpgrade(Upgrade.FILTER).setUnlocalizedName("FilterUpgrade");
|
||||
public static final Item FactoryInstaller = new ItemFactoryInstaller().setUnlocalizedName("FactoryInstaller");
|
||||
public static final ItemEnergized EnergyTablet = (ItemEnergized)new ItemEnergized(1000000).setUnlocalizedName("EnergyTablet");
|
||||
public static final ItemRobit Robit = (ItemRobit)new ItemRobit().setUnlocalizedName("Robit");
|
||||
public static final ItemAtomicDisassembler AtomicDisassembler = (ItemAtomicDisassembler)new ItemAtomicDisassembler().setUnlocalizedName("AtomicDisassembler");
|
||||
|
@ -149,6 +151,7 @@ public class MekanismItems
|
|||
GameRegistry.registerItem(GlowPanel, "GlowPanel");
|
||||
GameRegistry.registerItem(Flamethrower, "Flamethrower");
|
||||
GameRegistry.registerItem(GaugeDropper, "GaugeDropper");
|
||||
GameRegistry.registerItem(FactoryInstaller, "FactoryInstaller");
|
||||
|
||||
FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluid("brine"), new ItemStack(BrineBucket), FluidContainerRegistry.EMPTY_BUCKET);
|
||||
FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluid("lithium"), new ItemStack(LithiumBucket), FluidContainerRegistry.EMPTY_BUCKET);
|
||||
|
|
|
@ -2,9 +2,7 @@ package mekanism.common.item;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.Resource;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -19,7 +17,6 @@ public class ItemClump extends ItemMekanism
|
|||
{
|
||||
super();
|
||||
setHasSubtypes(true);
|
||||
setCreativeTab(Mekanism.tabMekanism);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,9 +2,7 @@ package mekanism.common.item;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.Resource;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -19,7 +17,6 @@ public class ItemCrystal extends ItemMekanism
|
|||
{
|
||||
super();
|
||||
setHasSubtypes(true);
|
||||
setCreativeTab(Mekanism.tabMekanism);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,8 +2,6 @@ package mekanism.common.item;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Mekanism;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -23,7 +21,6 @@ public class ItemDust extends ItemMekanism
|
|||
{
|
||||
super();
|
||||
setHasSubtypes(true);
|
||||
setCreativeTab(Mekanism.tabMekanism);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -44,7 +41,7 @@ public class ItemDust extends ItemMekanism
|
|||
@Override
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List itemList)
|
||||
{
|
||||
for(int counter = 0; counter <= 11; ++counter)
|
||||
for(int counter = 0; counter <= 11; counter++)
|
||||
{
|
||||
itemList.add(new ItemStack(item, 1, counter));
|
||||
}
|
||||
|
|
124
src/main/java/mekanism/common/item/ItemFactoryInstaller.java
Normal file
124
src/main/java/mekanism/common/item/ItemFactoryInstaller.java
Normal file
|
@ -0,0 +1,124 @@
|
|||
package mekanism.common.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Tier.BaseTier;
|
||||
import mekanism.common.Tier.FactoryTier;
|
||||
import mekanism.common.base.IFactory.RecipeType;
|
||||
import mekanism.common.tile.TileEntityBasicBlock;
|
||||
import mekanism.common.tile.TileEntityFactory;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
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.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemFactoryInstaller extends ItemMekanism
|
||||
{
|
||||
public IIcon[] icons = new IIcon[256];
|
||||
|
||||
public ItemFactoryInstaller()
|
||||
{
|
||||
super();
|
||||
setMaxStackSize(1);
|
||||
setHasSubtypes(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if(world.isRemote)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
FactoryTier tier = FactoryTier.values()[stack.getItemDamage()];
|
||||
|
||||
if(tile instanceof TileEntityBasicBlock && ((TileEntityBasicBlock)tile).playersUsing.size() > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if(tile instanceof TileEntityFactory && tier != FactoryTier.BASIC)
|
||||
{
|
||||
TileEntityFactory factory = (TileEntityFactory)tile;
|
||||
|
||||
if(factory.tier.ordinal()+1 == tier.ordinal())
|
||||
{
|
||||
if(!world.isRemote)
|
||||
{
|
||||
factory.upgrade();
|
||||
}
|
||||
|
||||
if(!player.capabilities.isCreativeMode)
|
||||
{
|
||||
stack.stackSize = 0;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(tile != null && tier == FactoryTier.BASIC)
|
||||
{
|
||||
RecipeType type = null;
|
||||
|
||||
for(RecipeType iterType : RecipeType.values())
|
||||
{
|
||||
ItemStack machineStack = iterType.getStack();
|
||||
|
||||
if(Block.getBlockFromItem(machineStack.getItem()) == world.getBlock(x, y, z) && machineStack.getItemDamage() == world.getBlockMetadata(x, y, z))
|
||||
{
|
||||
type = iterType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(type != null)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private int getOutputSlot(FactoryTier tier, int operation)
|
||||
{
|
||||
return 5+tier.processes+operation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerIcons(IIconRegister register)
|
||||
{
|
||||
for(FactoryTier tier : FactoryTier.values())
|
||||
{
|
||||
icons[tier.ordinal()] = register.registerIcon("mekanism:" + tier.getBaseTier().getName() + "FactoryInstaller");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIconFromDamage(int meta)
|
||||
{
|
||||
return icons[meta];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List itemList)
|
||||
{
|
||||
for(FactoryTier tier : FactoryTier.values())
|
||||
{
|
||||
itemList.add(new ItemStack(item, 1, tier.ordinal()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName(ItemStack item)
|
||||
{
|
||||
return "item." + BaseTier.values()[item.getItemDamage()].getName().toLowerCase() + "FactoryInstaller";
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ package mekanism.common.item;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Mekanism;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -20,7 +18,6 @@ public class ItemIngot extends ItemMekanism
|
|||
{
|
||||
super();
|
||||
setHasSubtypes(true);
|
||||
setCreativeTab(Mekanism.tabMekanism);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -41,7 +38,7 @@ public class ItemIngot extends ItemMekanism
|
|||
@Override
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List itemList)
|
||||
{
|
||||
for(int counter = 0; counter <= 6; ++counter)
|
||||
for(int counter = 0; counter <= 6; counter++)
|
||||
{
|
||||
itemList.add(new ItemStack(item, 1, counter));
|
||||
}
|
||||
|
|
|
@ -2,9 +2,7 @@ package mekanism.common.item;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.Resource;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
|
@ -19,7 +17,6 @@ public class ItemShard extends ItemMekanism
|
|||
{
|
||||
super();
|
||||
setHasSubtypes(true);
|
||||
setCreativeTab(Mekanism.tabMekanism);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package mekanism.common.tile;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -19,6 +21,7 @@ import mekanism.api.util.StackUtils;
|
|||
import mekanism.client.sound.IResettableSound;
|
||||
import mekanism.client.sound.TileSound;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.MekanismBlocks;
|
||||
import mekanism.common.MekanismItems;
|
||||
import mekanism.common.SideData;
|
||||
import mekanism.common.Tier.FactoryTier;
|
||||
|
@ -44,7 +47,6 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import dan200.computercraft.api.lua.ILuaContext;
|
||||
import dan200.computercraft.api.lua.LuaException;
|
||||
import dan200.computercraft.api.peripheral.IComputerAccess;
|
||||
|
@ -104,6 +106,8 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
public GasTank gasTank;
|
||||
|
||||
public boolean sorting;
|
||||
|
||||
public boolean upgraded;
|
||||
|
||||
public IResettableSound[] sounds = new IResettableSound[RecipeType.values().length];
|
||||
|
||||
|
@ -138,6 +142,79 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
|
||||
gasTank = new GasTank(TileEntityAdvancedElectricMachine.MAX_GAS*tier.processes);
|
||||
}
|
||||
|
||||
public void upgrade()
|
||||
{
|
||||
worldObj.setBlockToAir(xCoord, yCoord, zCoord);
|
||||
worldObj.setBlock(xCoord, yCoord, zCoord, MekanismBlocks.MachineBlock, 5+tier.ordinal()+1, 3);
|
||||
|
||||
TileEntityFactory factory = (TileEntityFactory)worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
|
||||
//Basic
|
||||
factory.facing = facing;
|
||||
factory.clientFacing = clientFacing;
|
||||
factory.ticker = ticker;
|
||||
factory.redstone = redstone;
|
||||
factory.redstoneLastTick = redstoneLastTick;
|
||||
factory.doAutoSync = doAutoSync;
|
||||
factory.components = components;
|
||||
|
||||
//Electric
|
||||
factory.electricityStored = electricityStored;
|
||||
factory.ic2Registered = ic2Registered;
|
||||
|
||||
//Noisy
|
||||
factory.soundURL = soundURL;
|
||||
factory.sound = sound;
|
||||
|
||||
//Factory
|
||||
factory.sideConfig = sideConfig;
|
||||
|
||||
for(int i = 0; i < tier.processes; i++)
|
||||
{
|
||||
factory.progress[i] = progress[i];
|
||||
}
|
||||
|
||||
factory.recipeTicks = recipeTicks;
|
||||
factory.clientActive = clientActive;
|
||||
factory.isActive = isActive;
|
||||
factory.updateDelay = updateDelay;
|
||||
factory.recipeType = recipeType;
|
||||
factory.prevEnergy = prevEnergy;
|
||||
factory.gasTank.setGas(gasTank.getGas());
|
||||
factory.sorting = sorting;
|
||||
factory.sounds = sounds;
|
||||
factory.controlType = controlType;
|
||||
factory.upgradeComponent = upgradeComponent;
|
||||
factory.ejectorComponent = ejectorComponent;
|
||||
|
||||
for(int i = 0; i < tier.processes+5; i++)
|
||||
{
|
||||
factory.inventory[i] = inventory[i];
|
||||
}
|
||||
|
||||
for(int i = 0; i < tier.processes; i++)
|
||||
{
|
||||
int output = getOutputSlot(i);
|
||||
|
||||
if(inventory[output] != null)
|
||||
{
|
||||
int newOutput = 5+factory.tier.processes+i;
|
||||
|
||||
factory.inventory[newOutput] = inventory[output];
|
||||
}
|
||||
}
|
||||
|
||||
for(Upgrade upgrade : upgradeComponent.getSupportedTypes())
|
||||
{
|
||||
factory.recalculateUpgradables(upgrade);
|
||||
}
|
||||
|
||||
factory.upgraded = true;
|
||||
|
||||
markDirty();
|
||||
Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(factory), factory.getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(factory)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate()
|
||||
|
@ -588,6 +665,7 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
recipeTicks = dataStream.readInt();
|
||||
controlType = RedstoneControl.values()[dataStream.readInt()];
|
||||
sorting = dataStream.readBoolean();
|
||||
upgraded = dataStream.readBoolean();
|
||||
|
||||
for(int i = 0; i < tier.processes; i++)
|
||||
{
|
||||
|
@ -613,6 +691,13 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
isActive = clientActive;
|
||||
MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
|
||||
if(upgraded)
|
||||
{
|
||||
markDirty();
|
||||
MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord);
|
||||
upgraded = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -685,6 +770,7 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
data.add(recipeTicks);
|
||||
data.add(controlType.ordinal());
|
||||
data.add(sorting);
|
||||
data.add(upgraded);
|
||||
data.add(progress);
|
||||
data.add(sideConfig);
|
||||
|
||||
|
@ -697,18 +783,20 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
|
|||
else {
|
||||
data.add(false);
|
||||
}
|
||||
|
||||
upgraded = false;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public int getInputSlot(int operation)
|
||||
{
|
||||
return operation+5;
|
||||
return 5+operation;
|
||||
}
|
||||
|
||||
public int getOutputSlot(int operation)
|
||||
{
|
||||
return tier.processes+5+operation;
|
||||
return 5+tier.processes+operation;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -181,6 +181,11 @@ tile.EnergyCube.Elite.name=Elite Energy Cube
|
|||
tile.EnergyCube.Ultimate.name=Ultimate Energy Cube
|
||||
tile.EnergyCube.Creative.name=Creative Energy Cube
|
||||
|
||||
//Factory Installers
|
||||
item.basicFactoryInstaller.name=Basic Factory Installer
|
||||
item.advancedFactoryInstaller.name=Advanced Factory Installer
|
||||
item.eliteFactoryInstaller.name=Elite Factory Installer
|
||||
|
||||
//Dust
|
||||
item.ironDust.name=Iron Dust
|
||||
item.goldDust.name=Gold Dust
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Loading…
Reference in a new issue