change tools

This commit is contained in:
Sen 2025-07-31 16:13:40 +02:00
parent 1272f87ea0
commit 37f912cb6d
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
26 changed files with 194 additions and 435 deletions

View file

@ -1176,16 +1176,8 @@ public class Client implements IThreadListener {
Block block = state.getBlock();
if(block != Blocks.air) {
desc = block.getDisplay();
if(block.getMiningLevel() >= 0)
line2 = "Werkzeug: Spitzhacke Level " + (block.getMiningLevel() + 1);
else if(block.canAxeHarvest())
line2 = "Werkzeug: Axt";
else if(block.canShovelHarvest())
line2 = "Werkzeug: Schaufel";
else if(block.canShearsHarvest())
line2 = "Werkzeug: Schere";
else if(block.canSwordHarvest())
line2 = "Werkzeug: Schwert";
if(block.getMiningTool() != null)
line2 = "Werkzeug: " + block.getMiningTool().getDisplay() + (block.getMiningTool().isLevelled() ? "Level " + (block.getMiningLevel() + 1) : "");
}
}
else if(this.pointed != null && this.pointed.type == ObjectType.ENTITY && this.pointed.entity != null) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View file

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -46,6 +46,7 @@ import common.util.BlockPos;
import common.util.BoundingBox;
import common.util.Clientside;
import common.util.Facing;
import common.util.HarvestTool;
import common.util.HitPosition;
import common.util.Vec3;
import common.util.HitPosition.ObjectType;
@ -174,10 +175,6 @@ public class Block {
private boolean fullBlock;
private boolean sumBrightness;
private boolean axeHarvest;
private boolean shovelHarvest;
private boolean shearsHarvest;
private boolean swordHarvest;
private boolean ticked;
private int opacity;
private int light;
@ -198,6 +195,7 @@ public class Block {
private String display;
private CheatTab tab;
private SoundType sound;
private HarvestTool miningTool;
private Item item;
private static <T> Iterable<List<T>> cartesianProduct(Iterable<? extends Iterable<? extends T>> sets) {
@ -362,11 +360,8 @@ public class Block {
}
public Block(Material material) {
this.miningLevel = (material == Material.SOLID || material == Material.HEAVY) ? 0 : -1;
this.axeHarvest = material == Material.WOOD || material == Material.PLANT || material == Material.BUSH || material == Material.SOFT;
this.shovelHarvest = material == Material.POWDER || material == Material.DIGGABLE;
this.shearsHarvest = material == Material.LEAVES;
this.swordHarvest = material == Material.FLUFF;
this.miningTool = material.getTool();
this.miningLevel = material.getTool() != null && material.getTool().isLevelled() ? 0 : -1;
this.sound = SoundType.STONE;
this.slipperiness = 0.6F;
this.material = material;
@ -430,28 +425,19 @@ public class Block {
return this;
}
public final Block setMiningLevel(int level) {
public final Block setMiningTool(HarvestTool tool, int level) {
if(!tool.isLevelled())
throw new IllegalArgumentException("Abbauwerkzeug " + tool.getDisplay() + " muss Levels besitzen");
this.miningTool = tool;
this.miningLevel = level;
return this;
}
public final Block setAxeHarvestable() {
this.axeHarvest = true;
return this;
}
public final Block setShovelHarvestable() {
this.shovelHarvest = true;
return this;
}
public final Block setShearsHarvestable() {
this.shearsHarvest = true;
return this;
}
public final Block setSwordHarvestable() {
this.swordHarvest = true;
public final Block setMiningTool(HarvestTool tool) {
if(tool.isLevelled())
throw new IllegalArgumentException("Abbauwerkzeug " + tool.getDisplay() + " darf keine Levels besitzen");
this.miningTool = tool;
this.miningLevel = -1;
return this;
}
@ -593,20 +579,8 @@ public class Block {
return this.miningLevel;
}
public final boolean canAxeHarvest() {
return this.axeHarvest;
}
public final boolean canShovelHarvest() {
return this.shovelHarvest;
}
public final boolean canShearsHarvest() {
return this.shearsHarvest;
}
public final boolean canSwordHarvest() {
return this.swordHarvest;
public final HarvestTool getMiningTool() {
return this.miningTool;
}
public final float getRadiation() {

View file

@ -1,5 +1,7 @@
package common.block;
import common.util.HarvestTool;
public enum Material {
NONE {{
this.setNonSolid().setReplaceable();
@ -8,13 +10,13 @@ public enum Material {
;
}},
WOOD {{
this.setBurning();
this.setBurning().setTool(HarvestTool.AXE);
}},
SOLID {{
this.setRequiresTool();
this.setRequiredTool(HarvestTool.PICKAXE);
}},
DIGGABLE {{ // can harvest with shovel
this.setRequiresTool();
this.setRequiredTool(HarvestTool.SHOVEL);
}},
TRANSLUCENT {{
this.setTranslucent();
@ -23,16 +25,16 @@ public enum Material {
this.setBurning();
}},
SOFT {{ // can break faster with sword, can't connect to fences+walls
this.setNoPushMobility();
this.setNoPushMobility().setTool(HarvestTool.AXE);
}},
PISTON {{
this.setImmovableMobility();
}},
HEAVY {{
this.setRequiresTool().setImmovableMobility();
this.setRequiredTool(HarvestTool.PICKAXE).setImmovableMobility();
}},
PLANT {{ // can break faster with sword
this.setNonSolid().setNoPushMobility();
this.setNonSolid().setNoPushMobility().setTool(HarvestTool.AXE);
}},
SMALL {{ // can be placed more easily
this.setNonSolid().setNoPushMobility();
@ -62,19 +64,19 @@ public enum Material {
this.setLiquid(true).setReplaceable().setNoPushMobility();
}},
LEAVES {{ // can break faster with sword, precipitation block, special treatment in some worldgen
this.setBurning().setTranslucent().setNoPushMobility();
this.setBurning().setTranslucent().setNoPushMobility().setTool(HarvestTool.SHEARS);
}},
BUSH {{ // can break faster with sword, can be replaced by small tree leaves
this.setNonSolid().setBurning().setNoPushMobility().setReplaceable();
this.setNonSolid().setBurning().setNoPushMobility().setReplaceable().setTool(HarvestTool.AXE);
}},
FIRE {{
this.setNonSolid().setReplaceable().setNoPushMobility();
}},
POWDER {{ // can harvest with shovel, precipitation block
this.setNonSolid().setReplaceable().setRequiresTool().setNoPushMobility();
this.setNonSolid().setReplaceable().setRequiredTool(HarvestTool.SHOVEL).setNoPushMobility();
}},
FLUFF {{ // can harvest with shears
this.setPassable().setRequiresTool().setNoPushMobility();
this.setPassable().setRequiredTool(HarvestTool.SWORD).setNoPushMobility();
}};
private boolean solid = true;
@ -89,6 +91,7 @@ public enum Material {
private boolean requiresTool;
// 0 - normal; 1 - can't push other blocks; 2 - can't be pushed
private int mobility;
private HarvestTool tool;
protected Material setTranslucent() {
this.opaque = false;
@ -121,8 +124,14 @@ public enum Material {
return this;
}
protected Material setRequiresTool() {
protected Material setRequiredTool(HarvestTool tool) {
this.requiresTool = true;
this.tool = tool;
return this;
}
protected Material setTool(HarvestTool tool) {
this.tool = tool;
return this;
}
@ -189,4 +198,8 @@ public enum Material {
public int getMobility() {
return this.mobility;
}
public HarvestTool getTool() {
return this.tool;
}
}

View file

@ -8,7 +8,6 @@ import common.entity.types.EntityLiving;
import common.item.ItemStack;
import common.item.material.ItemArmor;
import common.item.tool.ItemAxe;
import common.item.tool.ItemShears;
import common.rng.Random;
import common.util.Displayable;
import common.util.ExtMath;
@ -313,11 +312,6 @@ public enum Enchantment implements Displayable, Identifyable
{
return 5;
}
public boolean canApply(ItemStack stack)
{
return stack.getItem() instanceof ItemShears ? true : super.canApply(stack);
}
},
SILK_TOUCH("silk_touch", 1, EnchantmentType.DIGGER, "Behutsamkeit") {
public int getMinEnchantability(int enchantmentLevel)
@ -339,11 +333,6 @@ public enum Enchantment implements Displayable, Identifyable
{
return super.canApplyTogether(ench) && ench != FORTUNE;
}
public boolean canApply(ItemStack stack)
{
return stack.getItem() instanceof ItemShears ? true : super.canApply(stack);
}
},
UNBREAKING("unbreaking", 5, EnchantmentType.BREAKABLE, "Haltbarkeit") {
public int getMinEnchantability(int enchantmentLevel)

View file

@ -63,9 +63,7 @@ import common.item.ItemAction;
import common.item.ItemStack;
import common.item.consumable.ItemPotion;
import common.item.material.ItemArmor;
import common.item.tool.ItemHoe;
import common.item.tool.ItemKey;
import common.item.tool.ItemShears;
import common.item.tool.ItemTool;
import common.item.weapon.ItemBow;
import common.item.weapon.ItemGunBase;
@ -630,8 +628,7 @@ public abstract class EntityNPC extends EntityLiving
public boolean interact(EntityNPC player)
{
ItemStack stack = player.inventory.getCurrentItem();
boolean flag = stack != null && !(stack.getItem() instanceof ItemTool || stack.getItem() instanceof ItemSword ||
stack.getItem() instanceof ItemHoe || stack.getItem() instanceof ItemShears);
boolean flag = stack != null && !(stack.getItem() instanceof ItemTool);
if (stack != null && !this.isPlayer() && this.isBreedingItem(stack) && this.getGrowingAge() == 0 && !this.isMating())
{
@ -1324,8 +1321,8 @@ public abstract class EntityNPC extends EntityLiving
ItemSword itemsword = (ItemSword)stack.getItem();
ItemSword itemsword1 = (ItemSword)old.getItem();
if(itemsword.getDamageVsEntity() != itemsword1.getDamageVsEntity()) {
flag = itemsword.getDamageVsEntity() > itemsword1.getDamageVsEntity();
if(itemsword.getAttackDamageBonus() != itemsword1.getAttackDamageBonus()) {
flag = itemsword.getAttackDamageBonus() > itemsword1.getAttackDamageBonus();
}
else {
flag = stack.getItemDamage() > old.getItemDamage() || stack.isItemEnchanted() && !old.isItemEnchanted();

View file

@ -135,6 +135,7 @@ import common.model.TextureAnimation;
import common.properties.Property;
import common.util.PortalType;
import common.util.Color;
import common.util.HarvestTool;
import common.util.Util;
import common.world.State;
@ -243,7 +244,7 @@ public abstract class BlockRegistry {
Block stone = (new BlockStone()).setHardness(1.5F).setResistance(10.0F).setSound(SoundType.STONE).setDisplay("Stein");
register("stone", stone);
register("bedrock", (new BlockBedrock()).setHardness(1000.0F).setResistance(100000.0F).setSound(SoundType.STONE)
.setDisplay("Grundgestein").setTab(CheatTab.ROCK).setMiningLevel(6));
.setDisplay("Grundgestein").setTab(CheatTab.ROCK).setMiningTool(HarvestTool.PICKAXE, 6));
register("rock", (new Block(Material.SOLID)).setHardness(2.0F).setResistance(15.0F).setSound(SoundType.STONE).setDisplay("Felsen").setTab(CheatTab.ROCK));
register("smooth_rock", (new Block(Material.SOLID)).setHardness(2.0F).setResistance(15.0F).setSound(SoundType.STONE).setDisplay("Glatter Felsen").setTab(CheatTab.ROCK));
register("hellrock", (new BlockHellRock()).setHardness(0.4F).setSound(SoundType.STONE).setDisplay("Höllenstein"));
@ -262,8 +263,8 @@ public abstract class BlockRegistry {
register("smooth_sandstone", (new BlockSandStone("smooth")).setSound(SoundType.STONE).setHardness(0.8F).setDisplay("Glatter Sandstein"));
register("carved_sandstone", (new BlockSandStone("carved")).setSound(SoundType.STONE).setHardness(0.8F).setDisplay("Gemeißelter Sandstein"));
register("obsidian", (new BlockObsidian()).setHardness(50.0F).setResistance(2000.0F).setSound(SoundType.STONE)
.setDisplay("Obsidian").setMiningLevel(3));
register("clay", (new BlockClay()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Ton").setShovelHarvestable());
.setDisplay("Obsidian").setMiningTool(HarvestTool.PICKAXE, 3));
register("clay", (new BlockClay()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Ton").setMiningTool(HarvestTool.SHOVEL));
register("hardened_clay", (new BlockHardenedClay()).setHardness(1.25F).setResistance(7.0F).setSound(SoundType.STONE).setDisplay("Gebrannter Ton"));
for(Color color : Color.values()) {
register(color.getName() + "_clay", (new BlockColoredClay(color)).setHardness(1.25F).setResistance(7.0F)
@ -271,17 +272,16 @@ public abstract class BlockRegistry {
}
register("coal_block", (new Block(Material.SOLID)).setHardness(5.0F).setResistance(10.0F)
.setSound(SoundType.STONE).setDisplay("Kohleblock").setTab(CheatTab.NATURE).setFlammable(5, 5));
register("sand", (new BlockFalling(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Sand").setShovelHarvestable().setTab(CheatTab.NATURE));
register("red_sand", (new BlockFalling(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Roter Sand").setShovelHarvestable().setTab(CheatTab.NATURE));
register("gravel", (new BlockGravel()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Kies").setShovelHarvestable());
register("sand", (new BlockFalling(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Sand").setMiningTool(HarvestTool.SHOVEL).setTab(CheatTab.NATURE));
register("red_sand", (new BlockFalling(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Roter Sand").setMiningTool(HarvestTool.SHOVEL).setTab(CheatTab.NATURE));
register("gravel", (new BlockGravel()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Kies").setMiningTool(HarvestTool.SHOVEL));
register("ash", (new BlockFalling(Material.LOOSE)).setHardness(0.2F).setSound(SoundType.SAND).setDisplay("Asche")
.setTab(CheatTab.NATURE).setShovelHarvestable());
register("snow_layer", (new BlockSnow()).setHardness(0.1F).setSound(SoundType.SNOW).setDisplay("Schnee").setOpacity(0)
.setShovelHarvestable());
register("snow", (new BlockSnowBlock()).setHardness(0.2F).setSound(SoundType.SNOW).setDisplay("Schnee").setShovelHarvestable());
register("ice", (new BlockIce()).setHardness(0.5F).setOpacity(3).setSound(SoundType.GLASS).setDisplay("Eis").setMiningLevel(0));
register("packed_ice", (new BlockPackedIce()).setHardness(0.5F).setSound(SoundType.GLASS).setDisplay("Packeis").setMiningLevel(0));
register("soul_sand", (new BlockSoulSand()).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Seelensand").setShovelHarvestable());
.setTab(CheatTab.NATURE).setMiningTool(HarvestTool.SHOVEL));
register("snow_layer", (new BlockSnow()).setHardness(0.1F).setSound(SoundType.SNOW).setDisplay("Schnee").setOpacity(0).setMiningTool(HarvestTool.SHOVEL));
register("snow", (new BlockSnowBlock()).setHardness(0.2F).setSound(SoundType.SNOW).setDisplay("Schnee").setMiningTool(HarvestTool.SHOVEL));
register("ice", (new BlockIce()).setHardness(0.5F).setOpacity(3).setSound(SoundType.GLASS).setDisplay("Eis").setMiningTool(HarvestTool.PICKAXE, 0));
register("packed_ice", (new BlockPackedIce()).setHardness(0.5F).setSound(SoundType.GLASS).setDisplay("Packeis").setMiningTool(HarvestTool.PICKAXE, 0));
register("soul_sand", (new BlockSoulSand()).setHardness(0.5F).setSound(SoundType.SAND).setDisplay("Seelensand").setMiningTool(HarvestTool.SHOVEL));
register("glowstone", (new BlockGlowstone(Material.TRANSLUCENT)).setHardness(0.3F).setSound(SoundType.GLASS).setLight(1.0F)
.setDisplay("Glowstone"));
register("blackened_stone", (new BlockBlackenedStone()).setHardness(1.5F).setResistance(10.0F).setSound(SoundType.STONE).setDisplay("Schwarzstein"));
@ -307,35 +307,35 @@ public abstract class BlockRegistry {
register("coal_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE).setDisplay("Steinkohle"));
register("lapis_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay("Lapislazulierz").setMiningLevel(1));
.setDisplay("Lapislazulierz").setMiningTool(HarvestTool.PICKAXE, 1));
register("emerald_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay("Smaragderz").setMiningLevel(2));
.setDisplay("Smaragderz").setMiningTool(HarvestTool.PICKAXE, 2));
register("quartz_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay("Quarzerz"));
register("black_quartz_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay("Schwarzes Quarzerz"));
register("charge_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay("Geladenes Erz").setMiningLevel(2));
.setDisplay("Geladenes Erz").setMiningTool(HarvestTool.PICKAXE, 2));
for(MetalType metal : MetalType.values()) {
// String loc = metal.name.substring(0, 1).toUpperCase() + metal.name.substring(1);
register(metal.name + "_ore", (new BlockMetalOre(metal)).setHardness(3.0F).setResistance(5.0F)
.setDisplay(metal.display + "erz").setMiningLevel(1));
.setDisplay(metal.display + "erz").setMiningTool(HarvestTool.PICKAXE, 1));
}
for(OreType ore : OreType.values()) {
// String loc = ore.name.substring(0, 1).toUpperCase() + ore.name.substring(1);
register(ore.name + "_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE)
.setDisplay(ore.display + "erz").setMiningLevel(ore.material.getHarvestLevel() - 1));
.setDisplay(ore.display + "erz").setMiningTool(HarvestTool.PICKAXE, ore.material.getHarvestLevel() - 1));
}
register("dirt", (new Block(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Erde").setShovelHarvestable().setTab(CheatTab.NATURE));
register("grass", (new BlockGrass()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Gras").setShovelHarvestable());
register("coarse_dirt", (new Block(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Grobe Erde").setShovelHarvestable().setTab(CheatTab.NATURE));
register("podzol", (new BlockPodzol()).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Podsol").setShovelHarvestable());
register("mycelium", (new BlockMycelium()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Myzel").setShovelHarvestable());
register("dirt", (new Block(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Erde").setMiningTool(HarvestTool.SHOVEL).setTab(CheatTab.NATURE));
register("grass", (new BlockGrass()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Gras").setMiningTool(HarvestTool.SHOVEL));
register("coarse_dirt", (new Block(Material.LOOSE)).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Grobe Erde").setMiningTool(HarvestTool.SHOVEL).setTab(CheatTab.NATURE));
register("podzol", (new BlockPodzol()).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Podsol").setMiningTool(HarvestTool.SHOVEL));
register("mycelium", (new BlockMycelium()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Myzel").setMiningTool(HarvestTool.SHOVEL));
register("tian", (new Block(Material.SOLID)).setHardness(2.0F).setResistance(15.0F).setSound(SoundType.STONE)
.setDisplay("Tian").setTab(CheatTab.NATURE));
register("tian_soil", (new BlockTianSoil()).setHardness(2.0F).setResistance(15.0F).setSound(SoundType.STONE)
@ -343,15 +343,15 @@ public abstract class BlockRegistry {
register("moon_cheese", (new BlockTreasure(Material.SOFT)).setHardness(1.5F).setResistance(5.0F)
.setSound(SoundType.CLOTH).setDisplay("Mondkäse").setTab(CheatTab.NATURE));
register("slime_block", (new BlockSlime()).setDisplay("Schleimblock").setSound(SoundType.SLIME));
register("blackened_dirt", (new BlockBlackenedDirt()).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Schwarzerde").setShovelHarvestable());
register("blackened_soil", (new BlockBlackenedSoil()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Schwarzgrund").setShovelHarvestable());
register("swamp", (new BlockSwamp()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Sumpf").setShovelHarvestable());
register("blackened_dirt", (new BlockBlackenedDirt()).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Schwarzerde").setMiningTool(HarvestTool.SHOVEL));
register("blackened_soil", (new BlockBlackenedSoil()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Schwarzgrund").setMiningTool(HarvestTool.SHOVEL));
register("swamp", (new BlockSwamp()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Sumpf").setMiningTool(HarvestTool.SHOVEL));
for(BlockTallGrass.EnumType type : BlockTallGrass.EnumType.values()) {
register(type.getName(), (new BlockTallGrass(type)).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay(type.getDisplay()).setShearsHarvestable());
register(type.getName(), (new BlockTallGrass(type)).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay(type.getDisplay()).setMiningTool(HarvestTool.SHEARS));
}
register("deadbush", (new BlockDeadBush()).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay("Toter Busch"));
for(BlockFlower.EnumFlowerType type : BlockFlower.EnumFlowerType.values()) {
@ -363,8 +363,8 @@ public abstract class BlockRegistry {
Block cactus = (new BlockCactus()).setHardness(0.4F).setSound(SoundType.CLOTH).setDisplay("Kaktus");
register("cactus", cactus);
register("reeds", (new BlockReed()).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay("Zuckerrohr").setTab(CheatTab.PLANTS));
register("vine", (new BlockVine(false)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Ranken").setShearsHarvestable());
register("swamp_vine", (new BlockVine(true)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Sumpfranken").setShearsHarvestable());
register("vine", (new BlockVine(false)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Ranken").setMiningTool(HarvestTool.SHEARS));
register("swamp_vine", (new BlockVine(true)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Sumpfranken").setMiningTool(HarvestTool.SHEARS));
register("waterlily", (new BlockLilyPad()).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay("Seerosenblatt"));
@ -407,9 +407,9 @@ public abstract class BlockRegistry {
register("lapis_block", (new Block(Material.SOLID)).setHardness(3.0F).setResistance(5.0F)
.setSound(SoundType.STONE).setDisplay("Lapislazuliblock").setTab(CheatTab.GEMS).setMiningLevel(1));
.setSound(SoundType.STONE).setDisplay("Lapislazuliblock").setTab(CheatTab.GEMS).setMiningTool(HarvestTool.PICKAXE, 1));
register("emerald_block", (new Block(Material.SOLID)).setHardness(5.0F).setResistance(10.0F)
.setSound(SoundType.STONE).setDisplay("Smaragdblock").setTab(CheatTab.GEMS).setMiningLevel(2));
.setSound(SoundType.STONE).setDisplay("Smaragdblock").setTab(CheatTab.GEMS).setMiningTool(HarvestTool.PICKAXE, 2));
register("charged_block", (new BlockMagnetic(Material.SOLID)).setHardness(5.0F).setResistance(10.0F)
.setSound(SoundType.STONE).setDisplay("Geladener Block").setTab(CheatTab.GEMS));
@ -424,8 +424,7 @@ public abstract class BlockRegistry {
for(Color color : Color.values()) {
register(color.getName() + "_wool", (new BlockWool(color)).setHardness(0.8F).setSound(SoundType.CLOTH).setDisplay(color.getSubject(-1) + " Wolle")
.setShearsHarvestable());
register(color.getName() + "_wool", (new BlockWool(color)).setHardness(0.8F).setSound(SoundType.CLOTH).setDisplay(color.getSubject(-1) + " Wolle").setMiningTool(HarvestTool.SHEARS));
}
for(Color color : Color.values()) {
register(color.getName() + "_carpet", (new BlockCarpet(color)).setHardness(0.1F).setSound(SoundType.CLOTH).setDisplay(color.getSubject(1) + " Teppich").setOpacity(0));
@ -434,7 +433,7 @@ public abstract class BlockRegistry {
register(color.getName() + "_bed", (new BlockBed(color)).setSound(SoundType.WOOD).setHardness(0.2F).setDisplay(color.getSubject(0) + " Bett"));
}
register("ladder", (new BlockLadder()).setHardness(0.4F).setSound(SoundType.LADDER).setDisplay("Leiter").setAxeHarvestable());
register("ladder", (new BlockLadder()).setHardness(0.4F).setSound(SoundType.LADDER).setDisplay("Leiter").setMiningTool(HarvestTool.AXE));
register("bookshelf", (new BlockBookshelf()).setHardness(1.5F).setSound(SoundType.WOOD).setDisplay("Bücherregal"));
register("cake", (new BlockCake()).setHardness(0.5F).setSound(SoundType.CLOTH).setDisplay("Kuchen").setTab(CheatTab.DECORATION));
register("dragon_egg", (new BlockDragonEgg()).setHardness(3.0F).setResistance(15.0F).setSound(SoundType.STONE)
@ -467,8 +466,7 @@ public abstract class BlockRegistry {
register("portal_frame", (new BlockPortalFrame()).setSound(SoundType.GLASS).setLight(0.125F).setHardness(5.0F)
.setDisplay("Portalrahmen").setResistance(2000.0F).setTab(CheatTab.TECHNOLOGY));
register("farmland", (new BlockFarmland()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Ackerboden")
.setShovelHarvestable().setTab(CheatTab.PLANTS));
register("farmland", (new BlockFarmland()).setHardness(0.6F).setSound(SoundType.GRAVEL).setDisplay("Ackerboden").setMiningTool(HarvestTool.SHOVEL).setTab(CheatTab.PLANTS));
register("wheats", (new BlockCrops()).setDisplay("Getreide"));
register("carrots", (new BlockCarrot()).setDisplay("Karotten"));
register("potatoes", (new BlockPotato()).setDisplay("Kartoffeln"));
@ -480,13 +478,12 @@ public abstract class BlockRegistry {
for(MetalType metal : MetalType.values()) {
// String loc = metal.name.substring(0, 1).toUpperCase() + metal.name.substring(1);
register(metal.name + "_block", (new BlockMetalBlock(metal)).setHardness(5.0F).setResistance(10.0F)
.setDisplay(metal.display + "block").setMiningLevel(1));
.setDisplay(metal.display + "block").setMiningTool(HarvestTool.PICKAXE, 1));
}
for(OreType ore : OreType.values()) {
// String loc = ore.name.substring(0, 1).toUpperCase() + ore.name.substring(1);
register(ore.name + "_block", (new Block(Material.SOLID)).setHardness(5.0F).setResistance(10.0F).setSound(SoundType.STONE)
.setDisplay(ore.display + "block").setTab(CheatTab.GEMS)
.setMiningLevel(ore.material.getHarvestLevel() - 1));
.setDisplay(ore.display + "block").setTab(CheatTab.GEMS).setMiningTool(HarvestTool.PICKAXE, ore.material.getHarvestLevel() - 1));
}
@ -639,7 +636,7 @@ public abstract class BlockRegistry {
register("hopper", (new BlockHopper()).setHardness(3.0F).setResistance(8.0F).setSound(SoundType.STONE).setDisplay("Trichter"));
register("tian_reactor", (new BlockTianReactor()).setHardness(3.0F).setResistance(8.0F).setSound(SoundType.STONE).setDisplay("Tianreaktor"));
register("rail", (new BlockRail()).setHardness(0.7F).setSound(SoundType.STONE).setDisplay("Schiene").setMiningLevel(0));
register("rail", (new BlockRail()).setHardness(0.7F).setSound(SoundType.STONE).setDisplay("Schiene").setMiningTool(HarvestTool.PICKAXE, 0));
register("lever", (new BlockLever()).setHardness(0.5F).setSound(SoundType.WOOD).setDisplay("Hebel"));

View file

@ -23,7 +23,7 @@ import common.util.Color;
public abstract class CraftingRegistry
{
private static final String[][] TOOLS = new String[][] {
{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}, {"XX", " #", " #"}
{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}
};
private static final String[][] WEAPONS = new String[][] {{"X", "X", "#"}};
private static final String[][] ARMOR = new String[][] {
@ -49,7 +49,6 @@ public abstract class CraftingRegistry
add(new ItemStack(ItemRegistry.byName(ore.name + "_pickaxe")), TOOLS[0], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(ore.name + "_shovel")), TOOLS[1], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(ore.name + "_axe")), TOOLS[2], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(ore.name + "_hoe")), TOOLS[3], '#', Items.stick, 'X', item);
}
if(ore.material.hasExtras()) {
add(new ItemStack(ItemRegistry.byName(ore.name + "_shears")), " #", "# ", '#', item);
@ -75,7 +74,6 @@ public abstract class CraftingRegistry
add(new ItemStack(ItemRegistry.byName(metal.name + "_pickaxe")), TOOLS[0], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(metal.name + "_shovel")), TOOLS[1], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(metal.name + "_axe")), TOOLS[2], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(metal.name + "_hoe")), TOOLS[3], '#', Items.stick, 'X', item);
}
if(metal.material != null && metal.material.hasExtras()) {
add(new ItemStack(ItemRegistry.byName(metal.name + "_shears")), " #", "# ", '#', item);
@ -101,7 +99,6 @@ public abstract class CraftingRegistry
add(new ItemStack(ItemRegistry.byName(tool.name + "_pickaxe")), TOOLS[0], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(tool.name + "_shovel")), TOOLS[1], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(tool.name + "_axe")), TOOLS[2], '#', Items.stick, 'X', item);
add(new ItemStack(ItemRegistry.byName(tool.name + "_hoe")), TOOLS[3], '#', Items.stick, 'X', item);
}
if(tool.material.hasExtras()) {
add(new ItemStack(ItemRegistry.byName(tool.name + "_shears")), " #", "# ", '#', item);
@ -118,6 +115,7 @@ public abstract class CraftingRegistry
}
}
add(new ItemStack(Items.hoe), "XX", " #", " #", '#', Items.stick, 'X', Items.cobblestone);
add(new ItemStack(Items.bow, 1), " #X", "# X", " #X", 'X', Items.string, '#', Items.stick);
add(new ItemStack(Items.arrow, 4), "X", "#", "Y", 'Y', Items.feather, 'X', Items.flint, '#', Items.stick);

View file

@ -134,7 +134,6 @@ public abstract class ItemRegistry {
register(name + "_shovel", (new ItemShovel(material)).setDisplay(prefix + "schaufel"));
register(name + "_pickaxe", (new ItemPickaxe(material)).setDisplay(prefix + "spitzhacke"));
register(name + "_axe", (new ItemAxe(material)).setDisplay(prefix + "axt"));
register(name + "_hoe", (new ItemHoe(material)).setDisplay(prefix + "hacke"));
}
if(material.hasExtras()) {
register(name + "_shears", (new ItemShears(material)).setDisplay(prefix + "schere"));
@ -219,6 +218,7 @@ public abstract class ItemRegistry {
register("lighter", (new ItemFire(Blocks.fire)).setDisplay("Feuerzeug"));
register("burning_soul", (new ItemFire(Blocks.soul_fire)).setDisplay("Brennende Seele"));
register("dark_lighter", (new ItemFire(Blocks.black_fire)).setDisplay("Verdunkelndes Feuerzeug"));
register("hoe", (new ItemHoe()).setDisplay("Hacke"));
register("apple", (new ItemFood(4, false)).setDisplay("Apfel").setMaxAmount(StackSize.L));
register("bow", (new ItemBow()).setDisplay("Bogen"));
register("boltgun", (new ItemBoltgun()).setDisplay("Bolter"));

View file

@ -306,7 +306,6 @@ public abstract class Items {
public static final ItemArmor diamond_boots = get("diamond_boots");
public static final ItemArmor diamond_chestplate = get("diamond_chestplate");
public static final ItemArmor diamond_helmet = get("diamond_helmet");
public static final ItemHoe diamond_hoe = get("diamond_hoe");
public static final ItemHorseArmor diamond_horse_armor = get("diamond_horse_armor");
public static final ItemArmor diamond_leggings = get("diamond_leggings");
public static final Item diamond_ore = get("diamond_ore");
@ -363,7 +362,6 @@ public abstract class Items {
public static final ItemArmor gold_boots = get("gold_boots");
public static final ItemArmor gold_chestplate = get("gold_chestplate");
public static final ItemArmor gold_helmet = get("gold_helmet");
public static final ItemHoe gold_hoe = get("gold_hoe");
public static final ItemHorseArmor gold_horse_armor = get("gold_horse_armor");
public static final ItemMetal gold_ingot = get("gold_ingot");
public static final ItemArmor gold_leggings = get("gold_leggings");
@ -392,7 +390,6 @@ public abstract class Items {
public static final Item gunpowder = get("gunpowder");
public static final ItemAxe gyriyn_axe = get("gyriyn_axe");
public static final Item gyriyn_block = get("gyriyn_block");
public static final ItemHoe gyriyn_hoe = get("gyriyn_hoe");
public static final Item gyriyn_ore = get("gyriyn_ore");
public static final ItemPickaxe gyriyn_pickaxe = get("gyriyn_pickaxe");
public static final ItemShovel gyriyn_shovel = get("gyriyn_shovel");
@ -415,7 +412,6 @@ public abstract class Items {
public static final ItemArmor iron_chestplate = get("iron_chestplate");
public static final Item iron_door = get("iron_door");
public static final ItemArmor iron_helmet = get("iron_helmet");
public static final ItemHoe iron_hoe = get("iron_hoe");
public static final ItemHorseArmor iron_horse_armor = get("iron_horse_armor");
public static final ItemMetal iron_ingot = get("iron_ingot");
public static final ItemArmor iron_leggings = get("iron_leggings");
@ -518,7 +514,6 @@ public abstract class Items {
public static final ItemArmor nichun_boots = get("nichun_boots");
public static final ItemArmor nichun_chestplate = get("nichun_chestplate");
public static final ItemArmor nichun_helmet = get("nichun_helmet");
public static final ItemHoe nichun_hoe = get("nichun_hoe");
public static final ItemArmor nichun_leggings = get("nichun_leggings");
public static final Item nichun_ore = get("nichun_ore");
public static final ItemPickaxe nichun_pickaxe = get("nichun_pickaxe");
@ -690,7 +685,6 @@ public abstract class Items {
public static final Item stone = get("stone");
public static final ItemAxe stone_axe = get("stone_axe");
public static final Item stone_button = get("stone_button");
public static final ItemHoe stone_hoe = get("stone_hoe");
public static final ItemPickaxe stone_pickaxe = get("stone_pickaxe");
public static final Item stone_pressure_plate = get("stone_pressure_plate");
public static final ItemShovel stone_shovel = get("stone_shovel");
@ -713,7 +707,6 @@ public abstract class Items {
public static final ItemArmor thetium_boots = get("thetium_boots");
public static final ItemArmor thetium_chestplate = get("thetium_chestplate");
public static final ItemArmor thetium_helmet = get("thetium_helmet");
public static final ItemHoe thetium_hoe = get("thetium_hoe");
public static final ItemArmor thetium_leggings = get("thetium_leggings");
public static final Item thetium_ore = get("thetium_ore");
public static final ItemPickaxe thetium_pickaxe = get("thetium_pickaxe");
@ -794,7 +787,6 @@ public abstract class Items {
public static final Item white_tulip = get("white_tulip");
public static final Item white_wool = get("white_wool");
public static final ItemAxe wood_axe = get("wood_axe");
public static final ItemHoe wood_hoe = get("wood_hoe");
public static final ItemPickaxe wood_pickaxe = get("wood_pickaxe");
public static final ItemShovel wood_shovel = get("wood_shovel");
public static final ItemSword wood_sword = get("wood_sword");
@ -1072,6 +1064,7 @@ public abstract class Items {
public static final Item cocoa_powder = get("cocoa_powder");
public static final Item ink_sack = get("ink_sack");
public static final Item lapis_lazuli = get("lapis_lazuli");
public static final ItemHoe hoe = get("hoe");
private static <T extends Item> T get(String id) {
T item = (T)ItemRegistry.byName(id);

View file

@ -1,19 +1,10 @@
package common.item.tool;
import common.block.Block;
import common.init.ToolMaterial;
import common.item.ItemStack;
import common.util.HarvestTool;
public class ItemAxe extends ItemTool {
public ItemAxe(ToolMaterial material) {
super(3, material);
}
public boolean canUseOn(ItemStack stack, Block block) {
return block.canAxeHarvest();
}
public boolean canHarvestBlock(Block block) {
return block.canAxeHarvest();
super(material, HarvestTool.AXE);
}
}

View file

@ -3,7 +3,6 @@ package common.item.tool;
import common.block.Block;
import common.entity.npc.EntityNPC;
import common.init.Blocks;
import common.init.ToolMaterial;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemStack;
@ -15,22 +14,12 @@ import common.world.World;
public class ItemHoe extends Item
{
protected ToolMaterial theToolMaterial;
public ItemHoe(ToolMaterial material)
public ItemHoe()
{
this.theToolMaterial = material;
this.setMaxDamage(material.getDurability());
this.setMaxDamage(131);
this.setTab(CheatTab.TOOLS);
if(this.theToolMaterial.isMagnetic())
this.setMagnetic();
}
/**
* Called when a Block is right-clicked with this Item
*/
public boolean onItemUse(ItemStack stack, EntityNPC playerIn, World worldIn, BlockPos pos, Facing side, float hitX, float hitY, float hitZ)
{
if (!playerIn.canPlayerEdit(pos.offset(side), side, stack))
@ -81,28 +70,6 @@ public class ItemHoe extends Item
}
}
// /**
// * Returns True is the item is renderer in full 3D when hold.
// */
// public boolean isFull3D()
// {
// return true;
// }
// /**
// * Returns the name of the material this tool is made from as it is declared in EnumToolMaterial (meaning diamond
// * would return "EMERALD")
// */
// public String getMaterialName()
// {
// return this.theToolMaterial.toString();
// }
public ToolMaterial getToolMaterial()
{
return this.theToolMaterial;
}
public WieldType getWieldType() {
return WieldType.TOOL;
}

View file

@ -1,31 +1,10 @@
package common.item.tool;
import java.util.List;
import common.block.Block;
import common.entity.npc.EntityNPC;
import common.init.ToolMaterial;
import common.item.ItemStack;
import common.util.Clientside;
import common.util.Color;
import common.util.HarvestTool;
public class ItemPickaxe extends ItemTool {
public ItemPickaxe(ToolMaterial material) {
super(2, material);
super(material, HarvestTool.PICKAXE);
}
public boolean canHarvestBlock(Block block) {
return block.getMiningLevel() >= 0 && this.getToolMaterial().getHarvestLevel() >= block.getMiningLevel();
}
public boolean canUseOn(ItemStack stack, Block block) {
return block.getMiningLevel() >= 0;
}
@Clientside
public void addInformation(ItemStack stack, EntityNPC playerIn, List<String> tooltip)
{
tooltip.add(Color.VIOLET + "Level " + (this.getToolMaterial().getHarvestLevel() + 1));
super.addInformation(stack, playerIn, tooltip);
}
}

View file

@ -1,63 +1,10 @@
package common.item.tool;
import java.util.List;
import common.block.Block;
import common.entity.npc.EntityNPC;
import common.entity.types.EntityLiving;
import common.init.ToolMaterial;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemStack;
import common.item.WieldType;
import common.util.BlockPos;
import common.util.Clientside;
import common.util.Color;
import common.world.World;
import common.util.HarvestTool;
public class ItemShears extends Item
{
private final ToolMaterial material;
public ItemShears(ToolMaterial material)
{
this.setMaxDamage(material.getDurability() - 12);
this.setTab(CheatTab.TOOLS);
this.material = material;
if(this.material.isMagnetic())
this.setMagnetic();
}
public boolean onBlockDestroyed(ItemStack stack, World worldIn, Block blockIn, BlockPos pos, EntityLiving playerIn)
{
if (!blockIn.canShearsHarvest())
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, playerIn);
stack.damage(1, playerIn);
return true;
}
public boolean canHarvestBlock(Block blockIn)
{
return blockIn.canShearsHarvest();
}
public float getStrVsBlock(ItemStack stack, Block state)
{
return !state.canShearsHarvest() ? 1.0F : (float)this.material.getEfficiency();
}
@Clientside
public void addInformation(ItemStack stack, EntityNPC playerIn, List<String> tooltip)
{
tooltip.add(Color.DARK_GREEN + "+ " + (this.material.getEfficiency() - 1) + " Abbaueffizienz");
}
public boolean getIsRepairable(ItemStack toRepair, ItemStack repair)
{
return this.material.isRepairItem(repair.getItem());
}
public WieldType getWieldType() {
return WieldType.TOOL;
}
public class ItemShears extends ItemTool {
public ItemShears(ToolMaterial material) {
super(material, HarvestTool.SHEARS);
}
}

View file

@ -1,19 +1,10 @@
package common.item.tool;
import common.block.Block;
import common.init.ToolMaterial;
import common.item.ItemStack;
import common.util.HarvestTool;
public class ItemShovel extends ItemTool {
public ItemShovel(ToolMaterial material) {
super(1, material);
}
public boolean canUseOn(ItemStack stack, Block block) {
return block.canShovelHarvest();
}
public boolean canHarvestBlock(Block block) {
return block.canShovelHarvest();
super(material, HarvestTool.SHOVEL);
}
}

View file

@ -8,40 +8,46 @@ import common.entity.types.EntityLiving;
import common.init.ToolMaterial;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemAction;
import common.item.ItemStack;
import common.item.WieldType;
import common.util.BlockPos;
import common.util.Clientside;
import common.util.Color;
import common.util.HarvestTool;
import common.world.World;
public abstract class ItemTool extends Item {
private final int damage;
private final ToolMaterial material;
private final HarvestTool type;
public ItemTool(int damage, ToolMaterial material) {
public ItemTool(ToolMaterial material, HarvestTool type) {
this.material = material;
this.type = type;
this.setMaxDamage(material.getDurability());
this.damage = damage + material.getDamage();
this.setTab(CheatTab.TOOLS);
this.setTab(this.type.isMelee() ? CheatTab.WEAPONS : CheatTab.TOOLS);
if(this.material.isMagnetic())
this.setMagnetic();
}
public abstract boolean canUseOn(ItemStack stack, Block block);
public boolean canHarvestBlock(Block block) {
return block.getMiningTool() == this.type && (!this.type.isLevelled() || this.getToolMaterial().getHarvestLevel() >= block.getMiningLevel());
}
public float getStrVsBlock(ItemStack stack, Block block) {
return !this.canUseOn(stack, block) ? 1.0F : (float)this.material.getEfficiency();
return block.getMiningTool() == this.type ? (float)this.material.getEfficiency() : 1.0f;
}
@Clientside
public void addInformation(ItemStack stack, EntityNPC playerIn, List<String> tooltip)
{
if(this.type.isLevelled())
tooltip.add(Color.VIOLET + "Level " + (this.getToolMaterial().getHarvestLevel() + 1));
tooltip.add(Color.DARK_GREEN + "+ " + (this.material.getEfficiency() - 1) + " Abbaueffizienz");
}
public boolean hitEntity(ItemStack stack, EntityLiving target, EntityLiving attacker) {
stack.damage(2, attacker);
stack.damage(this.type.isMelee() ? 1 : 2, attacker);
return true;
}
@ -55,19 +61,37 @@ public abstract class ItemTool extends Item {
return this.material;
}
public HarvestTool getToolType() {
return this.type;
}
public int getItemEnchantability() {
return this.material.getEnchantability();
}
public boolean getIsRepairable(ItemStack stack, ItemStack repair) {
return this.material.isRepairItem(repair.getItem()) ? true : super.getIsRepairable(stack, repair);
return this.material.isRepairItem(repair.getItem());
}
public int getAttackDamageBonus() {
return this.damage;
return this.type.getDamage() >= 0 ? this.material.getDamage() + this.type.getDamage() : 0;
}
public WieldType getWieldType() {
return WieldType.TOOL;
}
public ItemAction getItemUseAction() {
return this.type.isMelee() ? ItemAction.BLOCK : super.getItemUseAction();
}
public int getMaxItemUseDuration(ItemStack stack) {
return this.type.isMelee() ? 72000 : super.getMaxItemUseDuration(stack);
}
public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityNPC playerIn) {
if(this.type.isMelee())
playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn));
return itemStackIn;
}
}

View file

@ -1,154 +1,11 @@
package common.item.weapon;
import java.util.List;
import common.block.Block;
import common.entity.npc.EntityNPC;
import common.entity.types.EntityLiving;
import common.init.ToolMaterial;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemAction;
import common.item.ItemStack;
import common.item.WieldType;
import common.util.BlockPos;
import common.util.Clientside;
import common.util.Color;
import common.world.World;
import common.item.tool.ItemTool;
import common.util.HarvestTool;
public class ItemSword extends Item
{
private int attackDamage;
private final ToolMaterial material;
public ItemSword(ToolMaterial material)
{
this.material = material;
this.setMaxDamage(material.getDurability());
this.setTab(CheatTab.WEAPONS);
this.attackDamage = 4 + material.getDamage();
if(this.material.isMagnetic())
this.setMagnetic();
}
/**
* Returns the amount of damage this item will deal. One heart of damage is equal to 2 damage points.
*/
public int getDamageVsEntity()
{
return this.material.getDamage();
}
public ToolMaterial getToolMaterial()
{
return this.material;
}
public float getStrVsBlock(ItemStack stack, Block state)
{
return state.canSwordHarvest() ? (float)this.material.getEfficiency() : 1.0f;
}
public boolean canHarvestBlock(Block blockIn)
{
return blockIn.canSwordHarvest();
}
@Clientside
public void addInformation(ItemStack stack, EntityNPC playerIn, List<String> tooltip)
{
tooltip.add(Color.DARK_GREEN + "+ " + (this.material.getEfficiency() - 1) + " Abbaueffizienz");
}
/**
* Current implementations of this method in child classes do not use the entry argument beside ev. They just raise
* the damage on the stack.
*/
public boolean hitEntity(ItemStack stack, EntityLiving target, EntityLiving attacker)
{
stack.damage(1, attacker);
return true;
}
/**
* Called when a Block is destroyed using this Item. Return true to trigger the "Use Item" statistic.
*/
public boolean onBlockDestroyed(ItemStack stack, World worldIn, Block blockIn, BlockPos pos, EntityLiving playerIn)
{
if ((double)blockIn.getHardness(worldIn, pos) != 0.0D)
{
stack.damage(2, playerIn);
}
return true;
}
// /**
// * Returns True is the item is renderer in full 3D when hold.
// */
// public boolean isFull3D()
// {
// return true;
// }
/**
* returns the action that specifies what animation to play when the items is being used
*/
public ItemAction getItemUseAction()
{
return ItemAction.BLOCK;
}
/**
* How long it takes to use or consume an item
*/
public int getMaxItemUseDuration(ItemStack stack)
{
return 72000;
}
/**
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityNPC playerIn)
{
playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn));
return itemStackIn;
}
/**
* Return the enchantability factor of the item, most of the time is based on material.
*/
public int getItemEnchantability()
{
return this.material.getEnchantability();
}
// /**
// * Return the name for this tool's material.
// */
// public String getToolMaterialName()
// {
// return this.material.toString();
// }
/**
* Return whether this item is repairable in an anvil.
*/
public boolean getIsRepairable(ItemStack toRepair, ItemStack repair)
{
return this.material.isRepairItem(repair.getItem()) ? true : super.getIsRepairable(toRepair, repair);
}
public int getAttackDamageBonus() {
return this.attackDamage;
}
// public boolean canBreakBlocks() {
// return false;
// }
public WieldType getWieldType() {
return WieldType.TOOL;
}
public class ItemSword extends ItemTool {
public ItemSword(ToolMaterial material) {
super(material, HarvestTool.SWORD);
}
}

View file

@ -20,9 +20,7 @@ import common.inventory.SlotFurnaceFuel;
import common.item.Item;
import common.item.ItemStack;
import common.item.material.ItemBucket;
import common.item.tool.ItemHoe;
import common.item.tool.ItemTool;
import common.item.weapon.ItemSword;
import common.tags.TagObject;
import java.util.List;
import common.util.ExtMath;
@ -362,14 +360,13 @@ public class TileEntityFurnace extends TileEntityInventory implements ITickable,
}
return item instanceof ItemTool && ((ItemTool)item).getToolMaterial() == ToolType.WOOD.material ? 200 :
(item instanceof ItemSword && ((ItemSword)item).getToolMaterial() == ToolType.WOOD.material ? 200 :
(item instanceof ItemHoe && ((ItemHoe)item).getToolMaterial() == ToolType.WOOD.material ? 200 :
(item == Items.hoe ? 200 :
(item == Items.stick ? 100 :
(item == Items.coal ? 1600 :
(item == Items.charcoal ? 1200 :
(item instanceof ItemBucket && ((ItemBucket)item).getLiquid() != null &&
((ItemBucket)item).getLiquid().getMaterial() == Material.LAVA ? 20000 :
(item == Items.demon_rod ? 2400 : 0)))))));
(item == Items.demon_rod ? 2400 : 0))))));
}
}

View file

@ -0,0 +1,53 @@
package common.util;
public enum HarvestTool implements Displayable {
PICKAXE("Spitzhacke", true, 2),
AXE("Axt", 3),
SHOVEL("Schaufel", 1),
SHEARS("Schere"),
SWORD("Schwert", 4, true);
private final String display;
private final boolean levelled;
private final boolean melee;
private final int damage;
private HarvestTool(String display, boolean levelled, int damage, boolean melee) {
this.display = display;
this.levelled = levelled;
this.damage = damage;
this.melee = melee;
}
private HarvestTool(String display, boolean levelled, int damage) {
this(display, levelled, damage, false);
}
private HarvestTool(String display, int damage, boolean melee) {
this(display, false, damage, melee);
}
private HarvestTool(String display, int damage) {
this(display, false, damage, false);
}
private HarvestTool(String display) {
this(display, false, -1, false);
}
public String getDisplay() {
return this.display;
}
public boolean isLevelled() {
return this.levelled;
}
public boolean isMelee() {
return this.melee;
}
public int getDamage() {
return this.damage;
}
}