diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/DrillItem.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/DrillItem.java index ebfb834a2..a029d2df2 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/DrillItem.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/DrillItem.java @@ -20,6 +20,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.Util; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -231,11 +232,9 @@ public class DrillItem extends ItemEnergy { : 1); } } - //Block hit - HitResult ray = player.pick(8f, 1f, false); - if (ray != null && ray.getType() == HitResult.Type.BLOCK) { - BlockHitResult trace = (BlockHitResult) ray; + HitResult ray = player.pick(Util.getReachDistance(player), 1f, false); + if (ray instanceof BlockHitResult trace) { //Breaks the Blocks if (!player.isShiftKeyDown() && this.getHasUpgrade(stack, ItemDrillUpgrade.UpgradeType.THREE_BY_THREE)) { if (this.getHasUpgrade(stack, ItemDrillUpgrade.UpgradeType.FIVE_BY_FIVE)) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java index 103a3a11f..1d8d98800 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.util.StackUtil; +import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; @@ -111,7 +112,7 @@ public class ItemFillingWand extends ItemEnergy { if (!world.isClientSide) { boolean clear = true; if (entity instanceof Player player) { - HitResult result = player.pick(8f, 1f, false); + HitResult result = player.pick(Util.getReachDistance(player), 1f, false); if (result instanceof BlockHitResult) { CompoundTag compound = stack.getOrCreateTag(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java index 9547e60f1..6d7f132fe 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java @@ -13,7 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.config.CommonConfig; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.util.StackUtil; -import de.ellpeck.actuallyadditions.mod.util.WorldUtil; +import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; @@ -49,8 +49,8 @@ public class ItemWaterBowl extends ItemBase { public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event) { if (event.getLevel() != null) { if (CommonConfig.Other.WATER_BOWL.get()) { - if (StackUtil.isValid(event.getItemStack()) && event.getItemStack().getItem() == Items.BOWL) { - HitResult rayTrace = event.getEntity().pick(8f, 1f, true); + if (!event.getItemStack().isEmpty() && event.getItemStack().getItem() == Items.BOWL) { + HitResult rayTrace = event.getEntity().pick(Util.getReachDistance(event.getEntity()), 1f, true); if (rayTrace.getType() != HitResult.Type.BLOCK) { return; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/Util.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/Util.java index 22b4e774c..0a88f78c3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/Util.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/Util.java @@ -11,7 +11,10 @@ package de.ellpeck.actuallyadditions.mod.util; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.player.Player; import net.neoforged.fml.loading.FMLLoader; +import net.neoforged.neoforge.common.NeoForgeMod; public final class Util { @@ -40,4 +43,9 @@ public final class Util { public static String getMajorModVersion() { return splitVersion()[1].substring(1); } + + public static double getReachDistance(Player player) { + AttributeInstance attribute = player.getAttribute(NeoForgeMod.BLOCK_REACH.value()); + return attribute == null ? 4.5d : attribute.getValue(); + } }