diff --git a/src/main/java/nl/requios/effortlessbuilding/BuildConfig.java b/src/main/java/nl/requios/effortlessbuilding/BuildConfig.java index 1f5d331..db4a312 100644 --- a/src/main/java/nl/requios/effortlessbuilding/BuildConfig.java +++ b/src/main/java/nl/requios/effortlessbuilding/BuildConfig.java @@ -17,7 +17,8 @@ public class BuildConfig { "If disabled, reach is set to level 3 for survival players."}) public boolean enableReachUpgrades = true; - @Comment("Maximum reach in creative") + @Comment({"Maximum reach in creative", + "Keep in mind that chunks need to be loaded to be able to place blocks inside."}) public int maxReachCreative = 200; @Comment({"Maximum reach in survival without upgrades", diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java index 11fa002..d1f6c1c 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade1.java @@ -30,6 +30,12 @@ public class ItemReachUpgrade1 extends Item { @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { + if (player.isCreative()) { + if (world.isRemote) EffortlessBuilding.log(player, "Reach upgrades are not necessary in creative."); + if (world.isRemote) EffortlessBuilding.log(player, "Still want increased reach? Use the config."); + return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand)); + } + BuildSettingsManager.BuildSettings buildSettings = BuildSettingsManager.getBuildSettings(player); int currentLevel = buildSettings.getReachUpgrade(); if (currentLevel == 0) { diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java index 0912a04..71d0904 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade2.java @@ -28,6 +28,12 @@ public class ItemReachUpgrade2 extends Item { @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { + if (player.isCreative()) { + if (world.isRemote) EffortlessBuilding.log(player, "Reach upgrades are not necessary in creative."); + if (world.isRemote) EffortlessBuilding.log(player, "Still want increased reach? Use the config."); + return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand)); + } + BuildSettingsManager.BuildSettings buildSettings = BuildSettingsManager.getBuildSettings(player); int currentLevel = buildSettings.getReachUpgrade(); if (currentLevel == 1) { diff --git a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java index 20967a8..cd2de41 100644 --- a/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java +++ b/src/main/java/nl/requios/effortlessbuilding/item/ItemReachUpgrade3.java @@ -28,6 +28,12 @@ public class ItemReachUpgrade3 extends Item { @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { + if (player.isCreative()) { + if (world.isRemote) EffortlessBuilding.log(player, "Reach upgrades are not necessary in creative."); + if (world.isRemote) EffortlessBuilding.log(player, "Still want increased reach? Use the config."); + return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand)); + } + BuildSettingsManager.BuildSettings buildSettings = BuildSettingsManager.getBuildSettings(player); int currentLevel = buildSettings.getReachUpgrade(); if (currentLevel == 2) { diff --git a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java index 78b308b..69d18d6 100644 --- a/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java +++ b/src/main/java/nl/requios/effortlessbuilding/proxy/ClientProxy.java @@ -52,6 +52,7 @@ public class ClientProxy implements IProxy { public static KeyBinding[] keyBindings; public static RayTraceResult previousLookAt; public static RayTraceResult currentLookAt; + private static int breakCooldown = 0; @Override public void preInit(FMLPreInitializationEvent event) { @@ -127,6 +128,16 @@ public class ClientProxy implements IProxy { RayTraceResult lookingAt = getLookingAt(player); if (lookingAt != null && lookingAt.typeOfHit == RayTraceResult.Type.BLOCK) { EffortlessBuilding.packetHandler.sendToServer(new BlockPlacedMessage(lookingAt)); + + //play sound if further than normal + if ((lookingAt.hitVec.subtract(player.getPositionEyes(1f))).lengthSquared() > 25f) { + BlockPos blockPos = lookingAt.getBlockPos(); + IBlockState state = player.world.getBlockState(blockPos); + SoundType soundtype = state.getBlock().getSoundType(state, player.world, blockPos, player); + player.world.playSound(player, blockPos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, + (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); + player.swingArm(EnumHand.MAIN_HAND); + } } } } @@ -136,18 +147,26 @@ public class ClientProxy implements IProxy { //Break block in distance in creative (or survival if enabled in config) if (ReachHelper.canBreakFar(player)) { - RayTraceResult lookingAt = getLookingAt(player); - if (lookingAt != null && lookingAt.typeOfHit == RayTraceResult.Type.BLOCK) { - EffortlessBuilding.packetHandler.sendToServer(new BlockBrokenMessage(lookingAt)); + if (breakCooldown <= 0) { + breakCooldown = 6; + RayTraceResult lookingAt = getLookingAt(player); + if (lookingAt != null && lookingAt.typeOfHit == RayTraceResult.Type.BLOCK) { + EffortlessBuilding.packetHandler.sendToServer(new BlockBrokenMessage(lookingAt)); - //play sound - BlockPos blockPos = lookingAt.getBlockPos(); - IBlockState state = player.world.getBlockState(blockPos); - SoundType soundtype = state.getBlock().getSoundType(state, player.world, blockPos, player); - player.world.playSound(player, blockPos, soundtype.getBreakSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); - player.swingArm(EnumHand.MAIN_HAND); + //play sound + BlockPos blockPos = lookingAt.getBlockPos(); + IBlockState state = player.world.getBlockState(blockPos); + SoundType soundtype = state.getBlock().getSoundType(state, player.world, blockPos, player); + player.world.playSound(player, blockPos, soundtype.getBreakSound(), SoundCategory.BLOCKS, + (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); + player.swingArm(EnumHand.MAIN_HAND); + } + } else { + breakCooldown--; } } + } else { + breakCooldown = 0; } event.setResult(Event.Result.ALLOW); }