rebalancing, silk touch and fortune abilities properly implemented

This commit is contained in:
HbmMods 2020-06-18 23:31:16 +02:00
parent c75a813621
commit 16ba158d5a
10 changed files with 99 additions and 22 deletions

View File

@ -71,6 +71,7 @@ potion.hbm_phosphorus=Phosphorverbrennung
tool.ability.recursion=Erzadern-Miner
tool.ability.hammer=AoE
tool.ability.silktouch=Präzisionswerkzeug
tool.ability.fortune=Erz-Extraktor
tool.ability.smelter=Auto-Ofen
tool.ability.shredder=Auto-Brecher
tool.ability.cnetrifuge=Auto-Zentrifuge
@ -655,6 +656,7 @@ item.ingot_steel.name=Stahlbarren
item.plate_steel.name=Stahlplatte
item.ingot_beryllium.name=Berylliumbarren
item.plate_schrabidium.name=Schrabidiumplatte
item.ingot_schraranium.name=Schraraniumbarren
item.ingot_schrabidium.name=Schrabidiumbarren
item.nugget_schrabidium.name=Schrabidiumnugget
item.plate_copper.name=Kupferplatte

View File

@ -71,6 +71,7 @@ potion.hbm_phosphorus=Phosphorus Burns
tool.ability.recursion=Vein Miner
tool.ability.hammer=AoE
tool.ability.silktouch=Precision Miner
tool.ability.fortune=Ore Extractor
tool.ability.smelter=Auto-Smelter
tool.ability.shredder=Auto-Shredder
tool.ability.centrifuge=Auto-Centrifuge
@ -655,6 +656,7 @@ item.ingot_steel.name=Steel Ingot
item.plate_steel.name=Steel Plate
item.ingot_beryllium.name=Beryllium Ingot
item.plate_schrabidium.name=Schrabidium Plate
item.ingot_schraranium.name=Schraranium Ingot
item.ingot_schrabidium.name=Schrabidium Ingot
item.nugget_schrabidium.name=Schrabidium Nugget
item.plate_copper.name=Copper Plate

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

View File

@ -11,9 +11,12 @@ import com.hbm.inventory.ShredderRecipes;
import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemToolAbility;
import com.hbm.main.MainRegistry;
import com.hbm.util.EnchantmentUtil;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@ -167,16 +170,18 @@ public abstract class ToolAbility {
@Override
public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) {
//a band-aid on a gaping wound
if(block == Blocks.lit_redstone_ore)
block = Blocks.redstone_ore;
//if the tool is already enchanted, do nothing
if(EnchantmentHelper.getSilkTouchModifier(player) || player.getHeldItem() == null)
return;
ItemStack stack = new ItemStack(block, 1, meta);
//add enchantment
ItemStack stack = player.getHeldItem();
if(stack.getItem() != null) {
world.setBlockToAir(x, y, z);
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, stack));
}
EnchantmentUtil.addEnchantment(stack, Enchantment.silkTouch, 1);
block.harvestBlock(world, player, x, y, z, meta);
EnchantmentUtil.removeEnchantment(stack, Enchantment.silkTouch);
world.setBlockToAir(x, y, z);
}
@Override
@ -190,6 +195,42 @@ public abstract class ToolAbility {
}
}
public static class LuckAbility extends ToolAbility {
int luck;
public LuckAbility(int luck) {
this.luck = luck;
}
@Override
public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) {
//if the tool is already enchanted, do nothing
if(EnchantmentHelper.getFortuneModifier(player) > 0 || player.getHeldItem() == null)
return;
//add enchantment
ItemStack stack = player.getHeldItem();
EnchantmentUtil.addEnchantment(stack, Enchantment.fortune, luck);
block.harvestBlock(world, player, x, y, z, meta);
EnchantmentUtil.removeEnchantment(stack, Enchantment.fortune);
world.setBlockToAir(x, y, z);
}
@Override
public String getName() {
return "tool.ability.luck";
}
@Override
public String getFullName() {
return I18n.format(getName()) + " (" + luck + ")";
}
}
public static class SmelterAbility extends ToolAbility {
@Override

View File

@ -141,10 +141,10 @@ public class MachineRecipes {
list.add(new GasCentOutput(1, new ItemStack(ModItems.fluorite), 4));
return list;
case WATZ:
list.add(new GasCentOutput(1, new ItemStack(ModItems.nugget_schrabidium), 1));
list.add(new GasCentOutput(3, new ItemStack(ModItems.nugget_uranium), 2));
list.add(new GasCentOutput(3, new ItemStack(ModItems.powder_iron), 3));
list.add(new GasCentOutput(3, new ItemStack(ModItems.powder_copper), 4));
list.add(new GasCentOutput(1, new ItemStack(ModItems.nugget_solinium), 1));
list.add(new GasCentOutput(1, new ItemStack(ModItems.nugget_uranium), 1));
list.add(new GasCentOutput(5, new ItemStack(ModItems.powder_lead), 1));
list.add(new GasCentOutput(10, new ItemStack(ModItems.dust), 1));
return list;
case SAS3:
list.add(new GasCentOutput(4, new ItemStack(ModItems.nugget_schrabidium), 1));
@ -200,7 +200,7 @@ public class MachineRecipes {
case PUF6:
return 100;
case WATZ:
return 100;
return 1000;
case SAS3:
return 100;
case COOLANT:
@ -2854,28 +2854,27 @@ public class MachineRecipes {
break;
case LW_ELEMENT:
list.add(new ItemStack(ModItems.ingot_tungsten, 4));
list.add(new ItemStack(ModItems.plate_advanced_alloy, 6));
list.add(new ItemStack(ModItems.rod_empty, 4));
list.add(new ItemStack(ModItems.plate_advanced_alloy, 4));
list.add(new ItemStack(ModItems.rod_empty, 2));
list.add(new ItemStack(ModItems.wire_magnetized_tungsten, 2));
list.add(new ItemStack(ModItems.circuit_red_copper, 1));
list.add(new ItemStack(ModItems.wire_advanced_alloy, 4));
break;
case LW_CONTROL:
list.add(new ItemStack(ModItems.ingot_tungsten, 4));
list.add(new ItemStack(ModItems.ingot_advanced_alloy, 4));
list.add(new ItemStack(ModItems.ingot_lead, 2));
list.add(new ItemStack(ModItems.wire_magnetized_tungsten, 4));
list.add(new ItemStack(ModItems.circuit_copper, 2));
list.add(new ItemStack(ModItems.wire_advanced_alloy, 2));
break;
case LW_COOLER:
list.add(new ItemStack(ModItems.ingot_tungsten, 2));
list.add(new ItemStack(ModItems.ingot_steel, 2));
list.add(new ItemStack(ModItems.niter, 6));
list.add(new ItemStack(ModItems.powder_quartz, 4));
list.add(new ItemStack(ModItems.niter, 4));
break;
case LW_STRUTURE:
list.add(new ItemStack(ModItems.ingot_tungsten, 2));
list.add(new ItemStack(ModItems.ingot_lead, 2));
list.add(new ItemStack(ModItems.ingot_steel, 5));
list.add(new ItemStack(ModItems.ingot_steel, 3));
break;
case LW_HATCH:
list.add(new ItemStack(ModBlocks.reinforced_brick, 1));
@ -2891,7 +2890,7 @@ public class MachineRecipes {
break;
case LW_CORE:
list.add(new ItemStack(ModBlocks.block_meteor, 1));
list.add(new ItemStack(ModItems.circuit_gold, 8));
list.add(new ItemStack(ModItems.circuit_gold, 5));
list.add(new ItemStack(ModItems.circuit_schrabidium, 2));
list.add(new ItemStack(ModItems.wire_magnetized_tungsten, 12));
break;

View File

@ -113,6 +113,7 @@ public class ModItems {
public static Item ingot_aluminium;
public static Item fluorite;
public static Item ingot_beryllium;
public static Item ingot_schraranium;
public static Item ingot_schrabidium;
public static Item ingot_plutonium_fuel;
public static Item ingot_uranium_fuel;
@ -1987,6 +1988,7 @@ public class ModItems {
plate_iron = new Item().setUnlocalizedName("plate_iron").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_iron");
ingot_lead = new Item().setUnlocalizedName("ingot_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lead");
plate_lead = new Item().setUnlocalizedName("plate_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_lead");
ingot_schraranium = new ItemRadioactive(2.5F, false, true).setUnlocalizedName("ingot_schraranium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_schraranium");
ingot_schrabidium = new ItemRadioactive(7.5F, false, true).setUnlocalizedName("ingot_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_schrabidium");
plate_schrabidium = new ItemRadioactive(7.5F, false, true).setUnlocalizedName("plate_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_schrabidium");
plate_copper = new Item().setUnlocalizedName("plate_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_copper");
@ -3898,6 +3900,7 @@ public class ModItems {
GameRegistry.registerItem(ingot_cobalt, ingot_cobalt.getUnlocalizedName());
GameRegistry.registerItem(ingot_dura_steel, ingot_dura_steel.getUnlocalizedName());
GameRegistry.registerItem(ingot_polymer, ingot_polymer.getUnlocalizedName());
GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName());
GameRegistry.registerItem(ingot_magnetized_tungsten, ingot_magnetized_tungsten.getUnlocalizedName());
GameRegistry.registerItem(ingot_combine_steel, ingot_combine_steel.getUnlocalizedName());

View File

@ -9,6 +9,7 @@ import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.hbm.handler.ToolAbility;
import com.hbm.handler.ToolAbility.SilkAbility;
import com.hbm.handler.WeaponAbility;
import cpw.mods.fml.relauncher.Side;
@ -158,6 +159,9 @@ public class ItemToolAbility extends ItemTool {
if(!canOperate(stack)) return false;
if(this.getCurrentAbility(stack) instanceof SilkAbility)
return true;
return getDigSpeed(stack, block, 0) > 1;
}

View File

@ -458,7 +458,7 @@ public class CraftingManager {
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.deco_titanium), new Object[] { "ingotTitanium", ModBlocks.steel_scaffold }));
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.deco_tungsten), new Object[] { "ingotTungsten", ModBlocks.steel_scaffold }));
GameRegistry.addRecipe(new ItemStack(ModItems.nugget_euphemium, 1), new Object[] { "###", "###", "###", '#', ModItems.rod_quad_euphemium });
GameRegistry.addRecipe(new ItemStack(ModItems.nugget_euphemium, 1), new Object[] { "##", "##", '#', ModItems.rod_quad_euphemium });
GameRegistry.addRecipe(new ItemStack(ModItems.ingot_euphemium, 1), new Object[] { "###", "###", "###", '#', ModItems.nugget_euphemium });
GameRegistry.addRecipe(new ItemStack(ModItems.nugget_euphemium, 9), new Object[] { "#", '#', ModItems.ingot_euphemium });

View File

@ -0,0 +1,26 @@
package com.hbm.util;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.ItemStack;
public class EnchantmentUtil {
public static void addEnchantment(ItemStack stack, Enchantment enchantment, int level) {
stack.addEnchantment(enchantment, level);
}
public static void removeEnchantment(ItemStack stack, Enchantment enchantment) {
int i = 0;
for( ; i < stack.getEnchantmentTagList().tagCount(); i++) {
if(stack.getEnchantmentTagList().getCompoundTagAt(i).getShort("id") == enchantment.effectId)
break;
}
stack.getEnchantmentTagList().removeTag(i);
if(stack.getEnchantmentTagList().tagCount() == 0)
stack.getTagCompound().removeTag("ench");
}
}