package joshie.harvest.calendar.packet;
import io.netty.buffer.ByteBuf;
import joshie.harvest.api.HFApi;
import joshie.harvest.api.calendar.CalendarDate;
import joshie.harvest.api.calendar.Season;
import joshie.harvest.api.calendar.Weekday;
import joshie.harvest.calendar.CalendarHelper;
import joshie.harvest.core.HFTrackers;
import joshie.harvest.core.helpers.MCClientHelper;
import joshie.harvest.core.network.Packet;
import joshie.harvest.core.network.Packet.Side;
import joshie.harvest.core.network.PenguinPacket;
import net.minecraft.entity.player.EntityPlayer;
@Packet(Side.CLIENT)
public class PacketSyncCalendar extends PenguinPacket {
private int daysPerSeason;
private Weekday weekday;
private int day;
private Season season;
private int year;
public PacketSyncCalendar() {}
public PacketSyncCalendar(CalendarDate date) {
this.daysPerSeason = CalendarDate.DAYS_PER_SEASON;
this.weekday = date.getWeekday();
this.day = date.getDay();
this.season = date.getSeason();
this.year = date.getYear();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(daysPerSeason);
buf.writeByte(weekday.ordinal());
buf.writeInt(day);
buf.writeByte(season.ordinal());
buf.writeInt(year);
}
@Override
public void fromBytes(ByteBuf buf) {
daysPerSeason = buf.readInt();
weekday = CalendarHelper.DAYS[buf.readByte()];
day = buf.readInt();
season = CalendarHelper.SEASONS[buf.readByte()];
year = buf.readInt();
}
@Override
public void handlePacket(EntityPlayer player) {
CalendarDate.DAYS_PER_SEASON = daysPerSeason;
CalendarDate date = HFApi.calendar.getDate(player.worldObj);
Season previous = date.getSeason();
date.setDate(weekday, day, season, year);
//Refresh all Blocks in Render range
//If the seasons are not the same, re-render the client
if (previous != season) {
HFTrackers.getCalendar(player.worldObj).onSeasonChanged();
MCClientHelper.refresh();
}
}
}