From c22a1da6b498ceef4ac4c5e5d9c24d8d8f2c8aa3 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 21 Oct 2018 13:12:03 +0200 Subject: [PATCH] made aura properly sync when joining the world --- .../de/ellpeck/naturesaura/aura/chunk/AuraChunk.java | 7 ++++++- .../de/ellpeck/naturesaura/events/CommonEvents.java | 11 +++++++++++ .../de/ellpeck/naturesaura/packet/PacketHandler.java | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/ellpeck/naturesaura/aura/chunk/AuraChunk.java b/src/main/java/de/ellpeck/naturesaura/aura/chunk/AuraChunk.java index be330478..a74f2f74 100644 --- a/src/main/java/de/ellpeck/naturesaura/aura/chunk/AuraChunk.java +++ b/src/main/java/de/ellpeck/naturesaura/aura/chunk/AuraChunk.java @@ -16,6 +16,7 @@ import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.INBTSerializable; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import org.apache.commons.lang3.mutable.MutableDouble; import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableObject; @@ -132,7 +133,7 @@ public class AuraChunk implements ICapabilityProvider, INBTSerializable capability, @Nullable EnumFacing facing) { return capability == Capabilities.auraChunk; diff --git a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java index 9716d82d..33923afc 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/CommonEvents.java @@ -3,10 +3,12 @@ package de.ellpeck.naturesaura.events; import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.aura.Capabilities; import de.ellpeck.naturesaura.aura.chunk.AuraChunk; +import de.ellpeck.naturesaura.packet.PacketHandler; import net.minecraft.util.ResourceLocation; import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.world.ChunkWatchEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -34,4 +36,13 @@ public class CommonEvents { } } } + + @SubscribeEvent + public void onChunkWatch(ChunkWatchEvent.Watch event) { + Chunk chunk = event.getChunkInstance(); + if (!chunk.getWorld().isRemote && chunk.hasCapability(Capabilities.auraChunk, null)) { + AuraChunk auraChunk = chunk.getCapability(Capabilities.auraChunk, null); + PacketHandler.sendTo(event.getPlayer(), auraChunk.makePacket()); + } + } } diff --git a/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java b/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java index 4feffcc5..b645da4f 100644 --- a/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java +++ b/src/main/java/de/ellpeck/naturesaura/packet/PacketHandler.java @@ -1,6 +1,8 @@ package de.ellpeck.naturesaura.packet; import de.ellpeck.naturesaura.NaturesAura; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry; @@ -27,4 +29,7 @@ public final class PacketHandler { network.sendToAllAround(message, new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), range)); } + public static void sendTo(EntityPlayer player, IMessage message) { + network.sendTo(message, (EntityPlayerMP) player); + } }