From 2504f24b7b7a0c12c98c86006e02b8f8f40b0fd7 Mon Sep 17 00:00:00 2001 From: Sen Date: Wed, 10 Sep 2025 14:13:10 +0200 Subject: [PATCH] fix block hardness + sounds --- .../client/gui/container/GuiContainer.java | 2 +- .../java/client/network/ClientPlayer.java | 6 ++++ .../java/client/util/PlayerController.java | 12 -------- .../src/main/resources/sounds/block_break.ogg | Bin 7126 -> 9177 bytes .../main/resources/sounds/block_damage.ogg | Bin 7007 -> 0 bytes .../main/java/common/ai/EntityAIEatGrass.java | 2 +- common/src/main/java/common/block/Block.java | 29 +++++++++++++----- .../src/main/java/common/block/Material.java | 13 +++----- .../common/block/artificial/BlockSlab.java | 2 +- .../common/block/artificial/BlockStairs.java | 2 +- .../common/block/artificial/BlockWall.java | 2 +- .../java/common/block/natural/BlockSnow.java | 10 ++++-- .../common/block/natural/BlockSnowBlock.java | 18 +++++++++-- .../common/block/tech/BlockPistonBase.java | 5 --- .../common/entity/animal/EntityRabbit.java | 2 +- .../main/java/common/init/BlockRegistry.java | 12 ++++---- .../src/main/java/common/init/SoundEvent.java | 1 - .../main/java/common/item/tool/ItemTool.java | 2 +- common/src/main/java/common/world/World.java | 2 +- .../main/java/server/world/WorldServer.java | 2 +- 20 files changed, 70 insertions(+), 54 deletions(-) delete mode 100644 client/src/main/resources/sounds/block_damage.ogg diff --git a/client/src/main/java/client/gui/container/GuiContainer.java b/client/src/main/java/client/gui/container/GuiContainer.java index c3511a88..75744ac8 100755 --- a/client/src/main/java/client/gui/container/GuiContainer.java +++ b/client/src/main/java/client/gui/container/GuiContainer.java @@ -901,7 +901,7 @@ public abstract class GuiContainer extends Gui for(Iterator iter = ITEM_LIST.iterator(); iter.hasNext();) { ItemStack stack = iter.next(); for(String line : this.getTooltip(stack)) { - if(line.toLowerCase().contains(this.cheatLast.toLowerCase())) { + if(Color.stripCodes(line).toLowerCase().contains(this.cheatLast.toLowerCase())) { stack = null; break; } diff --git a/client/src/main/java/client/network/ClientPlayer.java b/client/src/main/java/client/network/ClientPlayer.java index 936fb923..005cfd51 100755 --- a/client/src/main/java/client/network/ClientPlayer.java +++ b/client/src/main/java/client/network/ClientPlayer.java @@ -1491,6 +1491,12 @@ public class ClientPlayer implements IClientPlayer this.gm.effectRenderer.destroyBlock(blockPosIn, state); break; + case 2003: + State state1 = BlockRegistry.byId(data); + if(state1 != null) + this.gm.effectRenderer.destroyBlock(blockPosIn, state1); + break; + case 2002: double d13 = (double)blockPosIn.getX(); double d14 = (double)blockPosIn.getY(); diff --git a/client/src/main/java/client/util/PlayerController.java b/client/src/main/java/client/util/PlayerController.java index 24c205d6..96598078 100755 --- a/client/src/main/java/client/util/PlayerController.java +++ b/client/src/main/java/client/util/PlayerController.java @@ -8,14 +8,12 @@ import common.entity.npc.EntityNPC; import common.init.BlockRegistry; import common.init.Blocks; import common.init.EntityRegistry; -import common.init.SoundEvent; import common.item.ItemControl; import common.item.ItemStack; import common.packet.CPacketAction; import common.packet.CPacketBreak; import common.packet.CPacketClick; import common.packet.CPacketPlace; -import common.sound.PositionedSound; import common.util.LocalPos; import common.util.Facing; import common.util.Vec3; @@ -29,7 +27,6 @@ public class PlayerController { private LocalPos position = new LocalPos(-1, -World.MAX_SIZE_Y - 1, -1); private ItemStack stack; private float damage; - private float stepCounter; private int delay; private boolean hitting; private int lastSelected; @@ -109,7 +106,6 @@ public class PlayerController { this.position = pos; this.stack = this.gm.player.getHeldItem(); this.damage = 0.0F; - this.stepCounter = 0.0F; } } @@ -148,19 +144,11 @@ public class PlayerController { else { this.damage += block.getHardness(this.gm.player, this.gm.player.worldObj, pos); - if(this.stepCounter % 4.0F == 0.0F) { - this.gm.getSoundManager().playSound(new PositionedSound(SoundEvent.BLOCK_DAMAGE, 0.05F, - (float)pos.getX() + 0.5F, (float)pos.getY() + 0.5F, (float)pos.getZ() + 0.5F)); - } - - ++this.stepCounter; - if(this.damage >= 1.0F) { this.hitting = false; this.handler.addToSendQueue(new CPacketBreak(CPacketBreak.Action.STOP_DESTROY_BLOCK, pos, face)); this.destroyBlock(pos, face); this.damage = 0.0F; - this.stepCounter = 0.0F; this.delay = 5; } return true; diff --git a/client/src/main/resources/sounds/block_break.ogg b/client/src/main/resources/sounds/block_break.ogg index 16cd3666d4a188d50e45e2e3f3397fa2d19b8467..5eed954d138afe32798680db973d21762091ac91 100644 GIT binary patch literal 9177 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 literal 7126 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 list, Entity colliding) { BoundingBox bb = this.getCollisionBox(world, pos, state); if(bb != null && mask.intersectsWith(bb)) @@ -1072,6 +1083,8 @@ public class Block { public void getTooltips(ItemStack stack, EntityNPC player, List tooltip) { if(this.light != 0) tooltip.add(Color.BLUE + "Licht" + Color.DARK_GRAY + ": " + Color.NEON + String.format("%06x", this.light)); + if(this.hardness != 0) + tooltip.add(Color.BLUE + "Härte" + Color.DARK_GRAY + ": " + Color.NEON + this.hardness); } @Clientside diff --git a/common/src/main/java/common/block/Material.java b/common/src/main/java/common/block/Material.java index 48ea47f1..887d353c 100755 --- a/common/src/main/java/common/block/Material.java +++ b/common/src/main/java/common/block/Material.java @@ -15,9 +15,6 @@ public enum Material { SOLID {{ this.setRequiredTool(Equipment.PICKAXE); }}, - DIGGABLE {{ // can harvest with shovel - this.setRequiredTool(Equipment.SHOVEL); - }}, TRANSLUCENT {{ this.setTranslucent(); }}, @@ -25,7 +22,7 @@ public enum Material { this.setBurning(); }}, SOFT {{ // can break faster with sword, can't connect to fences+walls - this.setNoPushMobility().setTool(Equipment.AXE); + this.setNoPushMobility(); }}, PISTON {{ this.setImmovableMobility(); @@ -34,7 +31,7 @@ public enum Material { this.setRequiredTool(Equipment.PICKAXE).setImmovableMobility(); }}, PLANT {{ // can break faster with sword - this.setNonSolid().setNoPushMobility().setTool(Equipment.AXE); + this.setNonSolid().setNoPushMobility(); }}, SMALL {{ // can be placed more easily this.setNonSolid().setNoPushMobility(); @@ -64,16 +61,16 @@ 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().setTool(Equipment.SHEARS); + this.setBurning().setTranslucent().setNoPushMobility(); }}, BUSH {{ // can break faster with sword, can be replaced by small tree leaves - this.setNonSolid().setBurning().setNoPushMobility().setReplaceable().setTool(Equipment.AXE); + this.setNonSolid().setBurning().setNoPushMobility().setReplaceable(); }}, FIRE {{ this.setNonSolid().setReplaceable().setNoPushMobility(); }}, POWDER {{ // can harvest with shovel, precipitation block - this.setNonSolid().setReplaceable().setRequiredTool(Equipment.SHOVEL).setNoPushMobility(); + this.setNonSolid().setReplaceable().setNoPushMobility(); }}, FLUFF {{ // can harvest with shears this.setPassable().setRequiredTool(Equipment.SWORD).setNoPushMobility(); diff --git a/common/src/main/java/common/block/artificial/BlockSlab.java b/common/src/main/java/common/block/artificial/BlockSlab.java index 7d40fe65..8ffc4f04 100755 --- a/common/src/main/java/common/block/artificial/BlockSlab.java +++ b/common/src/main/java/common/block/artificial/BlockSlab.java @@ -54,7 +54,7 @@ public class BlockSlab extends Block implements Directional { this.setOpacity(255); this.base = base; - this.setHardness(this.base.getRawHardness()); + this.setHardness(this.base.getHardness()); this.textureTop = top; this.textureBottom = bottom; this.textureSide = side; diff --git a/common/src/main/java/common/block/artificial/BlockStairs.java b/common/src/main/java/common/block/artificial/BlockStairs.java index 48d9abde..207e3a30 100755 --- a/common/src/main/java/common/block/artificial/BlockStairs.java +++ b/common/src/main/java/common/block/artificial/BlockStairs.java @@ -52,7 +52,7 @@ public class BlockStairs extends Block implements Rotatable super(base.getMaterial()); this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(HALF, BlockStairs.EnumHalf.BOTTOM).withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT)); this.base = base; - this.setHardness(this.base.getRawHardness()); + this.setHardness(this.base.getHardness()); this.setOpacity(255); this.setTab(base.getTab()); this.downTex = down; diff --git a/common/src/main/java/common/block/artificial/BlockWall.java b/common/src/main/java/common/block/artificial/BlockWall.java index 91f8bab9..6fe206c1 100755 --- a/common/src/main/java/common/block/artificial/BlockWall.java +++ b/common/src/main/java/common/block/artificial/BlockWall.java @@ -42,7 +42,7 @@ public class BlockWall extends Block this.base = modelBlock; this.texture = texture; this.setDefaultState(this.getBaseState().withProperty(UP, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))); - this.setHardness(modelBlock.getRawHardness()); + this.setHardness(modelBlock.getHardness()); this.setTab(modelBlock.getTab()); WALLS.add(this); } diff --git a/common/src/main/java/common/block/natural/BlockSnow.java b/common/src/main/java/common/block/natural/BlockSnow.java index d42b70c0..5d6cbb24 100755 --- a/common/src/main/java/common/block/natural/BlockSnow.java +++ b/common/src/main/java/common/block/natural/BlockSnow.java @@ -2,6 +2,7 @@ package common.block.natural; import common.block.Block; import common.block.Material; +import common.enchantment.EnchantmentHelper; import common.entity.npc.EntityNPC; import common.init.Blocks; import common.init.Items; @@ -9,6 +10,7 @@ import common.init.SoundEvent; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; +import common.item.tool.ItemTool; import common.model.Model; import common.model.Model.ModelProvider; import common.properties.Property; @@ -17,6 +19,7 @@ import common.rng.Random; import common.tileentity.TileEntity; import common.util.LocalPos; import common.util.BoundingBox; +import common.util.Equipment; import common.util.Facing; import common.vars.Vars; import common.world.IBlockAccess; @@ -108,9 +111,10 @@ public class BlockSnow extends Block public void postBroken(World worldIn, EntityNPC player, LocalPos pos, State state, TileEntity te) { - dropItem(worldIn, pos, new ItemStack(Items.snowball, ((Integer)state.getValue(LAYERS)).intValue() + 1)); - worldIn.setBlockToAir(pos); -// player.triggerAchievement(StatRegistry.mineBlockStatArray[BlockRegistry.getIdFromBlock(this)]); + if (!worldIn.client && player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool tool && tool.getToolType() == Equipment.SHOVEL) + dropItem(worldIn, pos, new ItemStack(Items.snowball, ((Integer)state.getValue(LAYERS)).intValue() + 1)); + else + super.postBroken(worldIn, player, pos, state, te); } /** diff --git a/common/src/main/java/common/block/natural/BlockSnowBlock.java b/common/src/main/java/common/block/natural/BlockSnowBlock.java index 4b2732eb..e43d9d8c 100755 --- a/common/src/main/java/common/block/natural/BlockSnowBlock.java +++ b/common/src/main/java/common/block/natural/BlockSnowBlock.java @@ -2,18 +2,25 @@ package common.block.natural; import common.block.Block; import common.block.Material; +import common.enchantment.EnchantmentHelper; +import common.entity.npc.EntityNPC; import common.init.Items; import common.item.CheatTab; import common.item.Item; +import common.item.ItemStack; +import common.item.tool.ItemTool; import common.rng.Random; +import common.tileentity.TileEntity; +import common.util.Equipment; import common.util.LocalPos; import common.vars.Vars; import common.world.State; +import common.world.World; import common.world.AWorldServer; public class BlockSnowBlock extends Block { public BlockSnowBlock() { - super(Material.DIGGABLE); + super(Material.LOOSE); this.setTicked(); this.setTab(CheatTab.NATURE); } @@ -23,7 +30,14 @@ public class BlockSnowBlock extends Block { } protected int getDropAmount(Random rand) { - return rand.range(2, 4); + return 0; + } + + public void postBroken(World worldIn, EntityNPC player, LocalPos pos, State state, TileEntity te) { + if(!worldIn.client && player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool tool && tool.getToolType() == Equipment.SHOVEL && !EnchantmentHelper.getSilkTouchModifier(player)) + dropItem(worldIn, pos, new ItemStack(Items.snowball, worldIn.rand.range(2, 4))); + else + super.postBroken(worldIn, player, pos, state, te); } public void tick(AWorldServer world, LocalPos pos, State state, Random rand) { diff --git a/common/src/main/java/common/block/tech/BlockPistonBase.java b/common/src/main/java/common/block/tech/BlockPistonBase.java index ea13f5b6..1104f51e 100755 --- a/common/src/main/java/common/block/tech/BlockPistonBase.java +++ b/common/src/main/java/common/block/tech/BlockPistonBase.java @@ -476,11 +476,6 @@ public class BlockPistonBase extends Block implements Directional { if (blockIn != Blocks.piston && blockIn != Blocks.sticky_piston) { - if (blockIn.getHardness(worldIn, pos) == -1.0F) - { - return false; - } - if (blockIn.getMobilityFlag() == 2) { return false; diff --git a/common/src/main/java/common/entity/animal/EntityRabbit.java b/common/src/main/java/common/entity/animal/EntityRabbit.java index ce496e83..fec4a7b8 100755 --- a/common/src/main/java/common/entity/animal/EntityRabbit.java +++ b/common/src/main/java/common/entity/animal/EntityRabbit.java @@ -317,7 +317,7 @@ public class EntityRabbit extends EntityAnimal { } protected void consumeBlock(LocalPos pos, State state) { - this.worldObj.playEffect(2001, pos, BlockRegistry.getId(state)); + this.worldObj.playEffect(2003, pos, BlockRegistry.getId(state)); this.foodCooldown = this.rand.excl(10, this.isChild() ? 20 : 50); if(this.isChild()) this.grow(this.rand.range(250, 350)); diff --git a/common/src/main/java/common/init/BlockRegistry.java b/common/src/main/java/common/init/BlockRegistry.java index bd62a718..d161d359 100755 --- a/common/src/main/java/common/init/BlockRegistry.java +++ b/common/src/main/java/common/init/BlockRegistry.java @@ -165,8 +165,8 @@ public abstract class BlockRegistry { register("gravel", (new BlockGravel()).setHardness(0.6F).setDisplay("Kies").setMiningTool(Equipment.SHOVEL)); register("ash", (new BlockFalling(Material.LOOSE)).setHardness(0.2F).setDisplay("Asche") .setTab(CheatTab.NATURE).setMiningTool(Equipment.SHOVEL)); - register("snow_layer", (new BlockSnow()).setHardness(0.1F).setDisplay("Schnee").setOpacity(0).setMiningTool(Equipment.SHOVEL)); - register("snow", (new BlockSnowBlock()).setHardness(0.2F).setDisplay("Schnee").setMiningTool(Equipment.SHOVEL)); + register("snow_layer", (new BlockSnow()).setHardness(0.1F).setDisplay("Schnee").setOpacity(0)); + register("snow", (new BlockSnowBlock()).setHardness(0.2F).setDisplay("Schnee")); register("ice", (new BlockIce()).setHardness(0.5F).setOpacity(3).setDisplay("Eis").setMiningTool(Equipment.PICKAXE, 0)); register("packed_ice", (new BlockPackedIce()).setHardness(0.5F).setDisplay("Packeis").setMiningTool(Equipment.PICKAXE, 0)); register("soul_sand", (new BlockSoulSand()).setHardness(0.5F).setDisplay("Seelensand").setMiningTool(Equipment.SHOVEL)); @@ -242,7 +242,7 @@ public abstract class BlockRegistry { for(BlockTallGrass.EnumType type : BlockTallGrass.EnumType.values()) { - register(type.getName(), (new BlockTallGrass(type)).setHardness(0.0F).setDisplay(type.getDisplay()).setMiningTool(Equipment.SHEARS)); + register(type.getName(), (new BlockTallGrass(type)).setHardness(0.0F).setDisplay(type.getDisplay())); } register("deadbush", (new BlockDeadBush()).setHardness(0.0F).setDisplay("Toter Busch")); for(BlockFlower.EnumFlowerType type : BlockFlower.EnumFlowerType.values()) { @@ -254,8 +254,8 @@ public abstract class BlockRegistry { Block cactus = (new BlockCactus()).setHardness(0.4F).setDisplay("Kaktus"); register("cactus", cactus); register("reeds", (new BlockReed()).setHardness(0.0F).setDisplay("Zuckerrohr").setTab(CheatTab.PLANTS)); - register("vine", (new BlockVine(false)).setHardness(0.2F).setDisplay("Ranken").setMiningTool(Equipment.SHEARS)); - register("swamp_vine", (new BlockVine(true)).setHardness(0.2F).setDisplay("Sumpfranken").setMiningTool(Equipment.SHEARS)); + register("vine", (new BlockVine(false)).setHardness(0.2F).setDisplay("Ranken")); + register("swamp_vine", (new BlockVine(true)).setHardness(0.2F).setDisplay("Sumpfranken")); register("waterlily", (new BlockLilyPad()).setHardness(0.0F).setDisplay("Seerosenblatt")); @@ -322,7 +322,7 @@ public abstract class BlockRegistry { for(Color color : Color.values()) { - Block block = register(color.getName() + "_wool", (new BlockWool(color)).setHardness(0.8F).setDisplay(color.getSubject(-1) + " Wolle").setMiningTool(Equipment.SHEARS)); + Block block = register(color.getName() + "_wool", (new BlockWool(color)).setHardness(0.8F).setDisplay(color.getSubject(-1) + " Wolle")); register(color.getName() + "_wool_slab", (new BlockSlab(block)).setDisplay(color.getSubject(-1) + " Wollstufe")); register(color.getName() + "_wool_stairs", (new BlockStairs(block)).setDisplay(color.getSubject(-1) + " Wolltreppe")); } diff --git a/common/src/main/java/common/init/SoundEvent.java b/common/src/main/java/common/init/SoundEvent.java index 4f630455..2d0d4868 100755 --- a/common/src/main/java/common/init/SoundEvent.java +++ b/common/src/main/java/common/init/SoundEvent.java @@ -5,7 +5,6 @@ public enum SoundEvent { BLOCK_PLACE("block_place"), BLOCK_BREAK("block_break"), - BLOCK_DAMAGE("block_damage"), GLASS_BREAK("glass_break"), SPELL("spell"), diff --git a/common/src/main/java/common/item/tool/ItemTool.java b/common/src/main/java/common/item/tool/ItemTool.java index 57a39fab..75c0fde8 100755 --- a/common/src/main/java/common/item/tool/ItemTool.java +++ b/common/src/main/java/common/item/tool/ItemTool.java @@ -60,7 +60,7 @@ public class ItemTool extends Item { } public boolean onBlockDestroyed(ItemStack stack, World world, Block block, LocalPos pos, EntityLiving player) { - if(block.getHardness(world, pos) != 0.0f) + if(block.getHardness() != 0) stack.damage(1, player); return true; } diff --git a/common/src/main/java/common/world/World.java b/common/src/main/java/common/world/World.java index 760f0a5a..02ef07b8 100755 --- a/common/src/main/java/common/world/World.java +++ b/common/src/main/java/common/world/World.java @@ -208,7 +208,7 @@ public abstract class World implements IWorldAccess { return false; } else { - this.playEffect(2001, pos, BlockRegistry.getId(iblockstate)); + this.playEffect(dropBlock ? 2001 : 2003, pos, BlockRegistry.getId(iblockstate)); if(dropBlock) { block.drop(this, pos, iblockstate, 0); diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index d535b7ca..ba0c11e9 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -939,7 +939,7 @@ public final class WorldServer extends AWorldServer { private boolean destroyBlock(LocalPos pos, float power, EntityLiving source) { State state = this.getState(pos); Block block = state.getBlock(); - if(block != Blocks.air && (block.getMaterial().isLiquid() || power - (block.getRawHardness() + 0.3F) * 0.3F > 0.0F)) { + if(block != Blocks.air && (block.getMaterial().isLiquid() || power - ((float)block.getHardness() + 0.3F) * 0.3F > 0.0F)) { if(block.canExplosionDrop() && this.rand.floatv() <= 1.0F / (power * power)) block.drop(this, pos, state, 0); this.setState(pos, Blocks.air.getState(), 2);