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); + } }