From f81ad670ed1204e201b249aaa1129346a410015a Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Sun, 3 Jan 2021 23:42:27 +0000 Subject: [PATCH] Change donation perk element sync to per-dimension and use EntityJoinWorldEvent instead of PlayerLoggedInEvent, fixes #541 --- .../wizardry/misc/DonationPerksHandler.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/electroblob/wizardry/misc/DonationPerksHandler.java b/src/main/java/electroblob/wizardry/misc/DonationPerksHandler.java index 28a1d2b4..b9197858 100644 --- a/src/main/java/electroblob/wizardry/misc/DonationPerksHandler.java +++ b/src/main/java/electroblob/wizardry/misc/DonationPerksHandler.java @@ -9,9 +9,9 @@ import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.util.Box; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import java.util.List; @@ -62,7 +62,7 @@ public class DonationPerksHandler { Box box = DONOR_UUID_MAP.get(player.getUniqueID()); if(box != null && box.get() != element){ box.set(element); - syncAll(); + syncAll(player.dimension); } } @@ -73,11 +73,11 @@ public class DonationPerksHandler { return box == null ? null : box.get(); } - /** Sends the current donor perk information to all connected players (server-side only). */ - private static void syncAll(){ + /** Sends the current donor perk information to all players in the given dimension (server-side only). */ + private static void syncAll(int dimension){ Wizardry.logger.info("Sending global donation perk settings to all players"); PacketSyncDonationPerks.Message packet = new PacketSyncDonationPerks.Message(DONOR_UUID_MAP.values().stream().map(Box::get).collect(Collectors.toList())); - WizardryPacketHandler.net.sendToAll(packet); + WizardryPacketHandler.net.sendToDimension(packet, dimension); } /** Sends the current donor perk information to the given player (server-side only). */ @@ -95,13 +95,13 @@ public class DonationPerksHandler { } @SubscribeEvent - public static void onPlayerLoggedInEvent(PlayerLoggedInEvent event){ - if(event.player instanceof EntityPlayerMP){ + public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event){ + if(event.getEntity() instanceof EntityPlayerMP){ // Send donation perks to anyone who logs in - syncWith((EntityPlayerMP)event.player); - }else{ + syncWith((EntityPlayerMP)event.getEntity()); + }else if(event.getEntity() instanceof EntityPlayer){ // Send donation perks setting to the server if the player is a donor - if(isDonor(event.player)) sendToServer(event.player); + if(isDonor((EntityPlayer)event.getEntity())) sendToServer((EntityPlayer)event.getEntity()); } }