From 444aae4beac90e476a1ae2025addf9e42f7ef04d Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 14 Mar 2020 03:10:56 +0100 Subject: [PATCH] Fixed a huge issue Closes #90 --- .../ellpeck/naturesaura/events/CommonEvents.java | 15 +++++++++++++++ .../naturesaura/items/tools/ItemPickaxe.java | 4 +--- .../de/ellpeck/naturesaura/misc/WorldData.java | 6 ++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java index d5362b94..283c87c4 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java @@ -6,12 +6,14 @@ import de.ellpeck.naturesaura.Helper; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; +import de.ellpeck.naturesaura.api.misc.IWorldData; import de.ellpeck.naturesaura.chunk.AuraChunk; import de.ellpeck.naturesaura.chunk.AuraChunkProvider; import de.ellpeck.naturesaura.commands.CommandAura; import de.ellpeck.naturesaura.misc.WorldData; import de.ellpeck.naturesaura.packet.PacketHandler; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; @@ -21,6 +23,7 @@ import net.minecraft.world.server.ChunkManager; import net.minecraft.world.server.ServerChunkProvider; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.TickEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.world.ChunkWatchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; @@ -47,6 +50,18 @@ public class CommonEvents { event.addCapability(new ResourceLocation(NaturesAura.MOD_ID, "data"), new WorldData()); } + @SubscribeEvent + public void onItemUse(PlayerInteractEvent.RightClickBlock event) { + PlayerEntity player = event.getPlayer(); + if (player.world.isRemote) + return; + ItemStack held = event.getItemStack(); + if (!held.isEmpty() && held.getItem().getRegistryName().getPath().contains("chisel")) { + WorldData data = (WorldData) IWorldData.getWorldData(player.world); + data.addMossStone(event.getPos()); + } + } + @SubscribeEvent public void onWorldTick(TickEvent.WorldTickEvent event) { if (!event.world.isRemote && event.phase == TickEvent.Phase.END) { diff --git a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java index 6485679f..876a7955 100644 --- a/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java +++ b/src/main/java/de/ellpeck/naturesaura/items/tools/ItemPickaxe.java @@ -55,9 +55,7 @@ public class ItemPickaxe extends PickaxeItem implements IModItem, ICustomItemMod world.setBlockState(pos, result); WorldData data = (WorldData) IWorldData.getWorldData(world); - data.recentlyConvertedMossStones.add(pos); - if (data.recentlyConvertedMossStones.size() > 512) - data.recentlyConvertedMossStones.remove(0); + data.addMossStone(pos); } world.playSound(player, pos, SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); stack.damageItem(15, player, playerEntity -> playerEntity.sendBreakAnimation(context.getHand())); diff --git a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java b/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java index c9551179..e29effc0 100644 --- a/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java +++ b/src/main/java/de/ellpeck/naturesaura/misc/WorldData.java @@ -90,4 +90,10 @@ public class WorldData implements IWorldData { } return false; } + + public void addMossStone(BlockPos pos) { + this.recentlyConvertedMossStones.add(pos); + if (this.recentlyConvertedMossStones.size() > 512) + this.recentlyConvertedMossStones.remove(0); + } }