added unrest upgradeHandler

This commit is contained in:
modmuss50 2015-06-09 11:24:15 +01:00
parent 776fd328c3
commit 6826cfe4be
7 changed files with 153 additions and 1 deletions

View file

@ -97,7 +97,7 @@ public class RecipeCrafter {
double speedMultiplier = 0;
/**
* This is used to change the speed of the crafting operation.
* This is used to change the power of the crafting operation.
*
* 1 = none;
* 1.2 = 20% speed increase

View file

@ -0,0 +1,9 @@
package techreborn.api.upgrade;
import net.minecraft.item.ItemStack;
import techreborn.api.recipe.RecipeCrafter;
public interface IMachineUpgrade {
public void processUpgrade(RecipeCrafter crafter, ItemStack stack);
}

View file

@ -0,0 +1,37 @@
package techreborn.api.upgrade;
import net.minecraft.item.ItemStack;
import techreborn.api.recipe.RecipeCrafter;
import techreborn.util.Inventory;
import java.util.ArrayList;
public class UpgradeHandler {
RecipeCrafter crafter;
Inventory inventory;
ArrayList<Integer> slots = new ArrayList<Integer>();
public UpgradeHandler(RecipeCrafter crafter, Inventory inventory, int... slots) {
this.crafter = crafter;
this.inventory = inventory;
for(int slot : slots){
this.slots.add(slot);
}
}
public void tick(){
if(crafter.parentTile.getWorldObj().isRemote)
return;
crafter.resetPowerMulti();
crafter.resetSpeedMulti();
for(int slot : this.slots){
ItemStack stack = inventory.getStackInSlot(slot);
if(stack != null && stack.getItem() instanceof IMachineUpgrade){
((IMachineUpgrade) stack.getItem()).processUpgrade(crafter, stack);
}
}
}
}

View file

@ -0,0 +1,5 @@
@API(apiVersion = "@MODVERSION@", owner = "techreborn", provides = "techrebornAPI")
package techreborn.api.upgrade;
import cpw.mods.fml.common.API;

View file

@ -23,6 +23,7 @@ import techreborn.items.ItemPurifiedCrushedOre;
import techreborn.items.ItemRods;
import techreborn.items.ItemUUmatter;
import techreborn.items.ItemLapotronicOrb;
import techreborn.items.ItemUpgrade;
import techreborn.items.armor.ItemGravityChest;
import techreborn.items.armor.ItemLapotronPack;
import techreborn.items.armor.ItemLithiumBatpack;
@ -86,6 +87,7 @@ public class ModItems {
public static Item hammerIron;
public static Item hammerDiamond;
public static Item upgrades;
@ -134,6 +136,9 @@ public class ModItems {
uuMatter = new ItemUUmatter();
GameRegistry.registerItem(uuMatter, "uumatter");
upgrades = new ItemUpgrade();
GameRegistry.registerItem(upgrades, "upgrades");
hammerIron = new ItemHammer(80);
hammerIron.setUnlocalizedName("hammerIron").setContainerItem(hammerIron);
GameRegistry.registerItem(hammerIron, "hammerIron");

View file

@ -0,0 +1,92 @@
package techreborn.items;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import techreborn.api.recipe.RecipeCrafter;
import techreborn.api.upgrade.IMachineUpgrade;
import techreborn.client.TechRebornCreativeTabMisc;
import techreborn.init.ModItems;
import java.util.List;
public class ItemUpgrade extends ItemTR implements IMachineUpgrade {
public static ItemStack getUpgradeByName(String name, int count) {
int index = -1;
for (int i = 0; i < types.length; i++) {
if (types[i].equals(name)) {
index = i;
break;
}
}
return new ItemStack(ModItems.plate, count, index);
}
public static ItemStack getUpgradeByName(String name) {
return getUpgradeByName(name, 1);
}
public static final String[] types = new String[]
{"20xSpeed", "20xPower"};
private IIcon[] textures;
public ItemUpgrade() {
setUnlocalizedName("techreborn.upgrade");
setHasSubtypes(true);
setCreativeTab(TechRebornCreativeTabMisc.instance);
}
@Override
// Registers Textures For All Dusts
public void registerIcons(IIconRegister iconRegister) {
textures = new IIcon[types.length];
for (int i = 0; i < types.length; ++i) {
textures[i] = iconRegister.registerIcon("techreborn:" + "upgrade/"
+ types[i] + "Upgrade");
}
}
@Override
// Adds Texture what match's meta data
public IIcon getIconFromDamage(int meta) {
if (meta < 0 || meta >= textures.length) {
meta = 0;
}
return textures[meta];
}
@Override
// gets Unlocalized Name depending on meta data
public String getUnlocalizedName(ItemStack itemStack) {
int meta = itemStack.getItemDamage();
if (meta < 0 || meta >= types.length) {
meta = 0;
}
return super.getUnlocalizedName() + "." + types[meta];
}
// Adds Dusts SubItems To Creative Tab
public void getSubItems(Item item, CreativeTabs creativeTabs, List list) {
for (int meta = 0; meta < types.length; ++meta) {
list.add(new ItemStack(item, 1, meta));
}
}
@Override
public void processUpgrade(RecipeCrafter crafter, ItemStack stack) {
if(stack.getItemDamage() == 0){
crafter.addSpeedMulti(0.2);
crafter.addPowerMulti(0.5);
}
if(stack.getItemDamage() == 1){
crafter.addPowerMulti(-0.2);
}
}
}

View file

@ -10,6 +10,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import techreborn.api.recipe.RecipeCrafter;
import techreborn.api.upgrade.UpgradeHandler;
import techreborn.init.ModBlocks;
import techreborn.util.Inventory;
@ -22,6 +23,7 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
public Inventory inventory = new Inventory(8, "TileAlloySmelter", 64);
public RecipeCrafter crafter;
public int capacity = 1000;
UpgradeHandler upgrades;
public TileAlloySmelter(){
//TODO configs
@ -33,6 +35,7 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
int[] outputs = new int[1];
outputs[0] = 2;
crafter = new RecipeCrafter("alloySmelterRecipe", this, energy, 2, 1, inventory, inputs, outputs);
upgrades = new UpgradeHandler(crafter, inventory, 4, 5, 6, 7);
}
@Override
@ -40,6 +43,7 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
super.updateEntity();
energy.updateEntity();
crafter.updateEntity();
upgrades.tick();
}
@Override