package joshie.harvest.plugins.buttons; import joshie.harvest.api.calendar.Season; import joshie.harvest.calendar.CalendarHelper; import joshie.harvest.calendar.data.CalendarServer; import joshie.harvest.calendar.HFCalendar; import joshie.harvest.core.HFTrackers; import joshie.harvest.plugins.buttons.ButtonSeason.HFSeason; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.EnumActionResult; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import tehnut.buttons.api.WidgetTexture; import tehnut.buttons.api.button.utility.ButtonMode; import tehnut.buttons.api.button.utility.IMode; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collections; import java.util.List; import java.util.Locale; import static joshie.harvest.core.lib.HFModInfo.MODID; public class ButtonSeason extends ButtonMode<HFSeason> { public ButtonSeason() { super(Buttons.BLANK, HFSeason.class); setServerRequired(); //Check the server } @Override public ResourceLocation getButtonId() { return new ResourceLocation(MODID, "seasons"); } public enum HFSeason implements IMode { SPRING(0, Season.SPRING), SUMMER(20, Season.SUMMER), AUTUMN(40, Season.AUTUMN), WINTER(60, Season.WINTER),; private final WidgetTexture widgetTexture; private final Season season; HFSeason(int x, Season season) { this.widgetTexture = new WidgetTexture(Buttons.RESOURCE, x, 20, 20, 20); this.season = season; } @Nonnull @Override public WidgetTexture getModeTexture() { return widgetTexture; } @Nullable @Override public List<? extends ITextComponent> getTooltip() { return Collections.singletonList(new TextComponentTranslation("harvestfestival.season." + season.name().toLowerCase(Locale.ENGLISH))); } @Override @SideOnly(Side.CLIENT) public EnumActionResult onClientClick(int mouseX, int mouseY) { return EnumActionResult.SUCCESS; } @Override public void onServerClick(EntityPlayerMP player) { World world = player.worldObj; CalendarServer calendar = HFTrackers.getCalendar(world); int day = calendar.getDate().getDay(); int year = Math.max(1, calendar.getDate().getYear()); long leftover = player.worldObj.getWorldTime() % HFCalendar.TICKS_PER_DAY; world.setWorldTime(CalendarHelper.getTime(day, season, year) + leftover); calendar.recalculateAndUpdate(world); } } }