package joshie.harvest.core.handlers; import joshie.harvest.calendar.data.CalendarServer; import joshie.harvest.core.HFTrackers; import joshie.harvest.core.helpers.MCServerHelper; import joshie.harvest.core.util.annotations.HFEvents; import joshie.harvest.player.PlayerTrackerServer; import joshie.harvest.town.tracker.TownTrackerServer; import net.minecraft.client.gui.GuiMultiplayer; import net.minecraft.client.gui.GuiWorldSelection; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @HFEvents @SuppressWarnings("unused") public class SyncHandler { @HFEvents @SuppressWarnings("unused") public static class ClientReset { @SideOnly(Side.CLIENT) @SubscribeEvent public void onOpenGui(GuiOpenEvent event) { if (event.getGui() instanceof GuiWorldSelection || event.getGui() instanceof GuiMultiplayer) { HFTrackers.resetClient(); } } } //Sync data on login @SubscribeEvent public void onPlayerLogin(PlayerLoggedInEvent event) { if (event.player instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP) event.player; HFTrackers.<PlayerTrackerServer>getPlayerTrackerFromPlayer(player).getStats().setBirthday(player.worldObj); //Set birthday to overworld date HFTrackers.<CalendarServer>getCalendar(player.worldObj).syncToPlayer(player); HFTrackers.<TownTrackerServer>getTowns(event.player.worldObj).syncToPlayer(player); HFTrackers.<PlayerTrackerServer>getPlayerTrackerFromPlayer(player).syncPlayerStats(player); } } @SubscribeEvent public void onChangeDimension(PlayerChangedDimensionEvent event) { if (event.player instanceof EntityPlayerMP && event.toDim == 0) { HFTrackers.<TownTrackerServer>getTowns(MCServerHelper.getWorld(event.toDim)).syncToPlayer((EntityPlayerMP)event.player); //Resync the town data } } }