added unrest upgradeHandler
This commit is contained in:
parent
776fd328c3
commit
6826cfe4be
7 changed files with 153 additions and 1 deletions
|
@ -97,7 +97,7 @@ public class RecipeCrafter {
|
||||||
double speedMultiplier = 0;
|
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 = none;
|
||||||
* 1.2 = 20% speed increase
|
* 1.2 = 20% speed increase
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
37
src/main/java/techreborn/api/upgrade/UpgradeHandler.java
Normal file
37
src/main/java/techreborn/api/upgrade/UpgradeHandler.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
src/main/java/techreborn/api/upgrade/package-info.java
Normal file
5
src/main/java/techreborn/api/upgrade/package-info.java
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
@API(apiVersion = "@MODVERSION@", owner = "techreborn", provides = "techrebornAPI")
|
||||||
|
package techreborn.api.upgrade;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.API;
|
||||||
|
|
|
@ -23,6 +23,7 @@ import techreborn.items.ItemPurifiedCrushedOre;
|
||||||
import techreborn.items.ItemRods;
|
import techreborn.items.ItemRods;
|
||||||
import techreborn.items.ItemUUmatter;
|
import techreborn.items.ItemUUmatter;
|
||||||
import techreborn.items.ItemLapotronicOrb;
|
import techreborn.items.ItemLapotronicOrb;
|
||||||
|
import techreborn.items.ItemUpgrade;
|
||||||
import techreborn.items.armor.ItemGravityChest;
|
import techreborn.items.armor.ItemGravityChest;
|
||||||
import techreborn.items.armor.ItemLapotronPack;
|
import techreborn.items.armor.ItemLapotronPack;
|
||||||
import techreborn.items.armor.ItemLithiumBatpack;
|
import techreborn.items.armor.ItemLithiumBatpack;
|
||||||
|
@ -86,6 +87,7 @@ public class ModItems {
|
||||||
|
|
||||||
public static Item hammerIron;
|
public static Item hammerIron;
|
||||||
public static Item hammerDiamond;
|
public static Item hammerDiamond;
|
||||||
|
public static Item upgrades;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,6 +135,9 @@ public class ModItems {
|
||||||
GameRegistry.registerItem(manuel, "techmanuel");
|
GameRegistry.registerItem(manuel, "techmanuel");
|
||||||
uuMatter = new ItemUUmatter();
|
uuMatter = new ItemUUmatter();
|
||||||
GameRegistry.registerItem(uuMatter, "uumatter");
|
GameRegistry.registerItem(uuMatter, "uumatter");
|
||||||
|
|
||||||
|
upgrades = new ItemUpgrade();
|
||||||
|
GameRegistry.registerItem(upgrades, "upgrades");
|
||||||
|
|
||||||
hammerIron = new ItemHammer(80);
|
hammerIron = new ItemHammer(80);
|
||||||
hammerIron.setUnlocalizedName("hammerIron").setContainerItem(hammerIron);
|
hammerIron.setUnlocalizedName("hammerIron").setContainerItem(hammerIron);
|
||||||
|
|
92
src/main/java/techreborn/items/ItemUpgrade.java
Normal file
92
src/main/java/techreborn/items/ItemUpgrade.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import techreborn.api.recipe.RecipeCrafter;
|
import techreborn.api.recipe.RecipeCrafter;
|
||||||
|
import techreborn.api.upgrade.UpgradeHandler;
|
||||||
import techreborn.init.ModBlocks;
|
import techreborn.init.ModBlocks;
|
||||||
import techreborn.util.Inventory;
|
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 Inventory inventory = new Inventory(8, "TileAlloySmelter", 64);
|
||||||
public RecipeCrafter crafter;
|
public RecipeCrafter crafter;
|
||||||
public int capacity = 1000;
|
public int capacity = 1000;
|
||||||
|
UpgradeHandler upgrades;
|
||||||
|
|
||||||
public TileAlloySmelter(){
|
public TileAlloySmelter(){
|
||||||
//TODO configs
|
//TODO configs
|
||||||
|
@ -33,6 +35,7 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
|
||||||
int[] outputs = new int[1];
|
int[] outputs = new int[1];
|
||||||
outputs[0] = 2;
|
outputs[0] = 2;
|
||||||
crafter = new RecipeCrafter("alloySmelterRecipe", this, energy, 2, 1, inventory, inputs, outputs);
|
crafter = new RecipeCrafter("alloySmelterRecipe", this, energy, 2, 1, inventory, inputs, outputs);
|
||||||
|
upgrades = new UpgradeHandler(crafter, inventory, 4, 5, 6, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,6 +43,7 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
energy.updateEntity();
|
energy.updateEntity();
|
||||||
crafter.updateEntity();
|
crafter.updateEntity();
|
||||||
|
upgrades.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue