package com.replaymod.online.handler; import com.replaymod.online.ReplayModOnline; import com.replaymod.online.gui.GuiLoginPrompt; import com.replaymod.online.gui.GuiReplayCenter; import com.replaymod.online.gui.GuiUploadReplay; import com.replaymod.replay.gui.screen.GuiReplayViewer; import de.johni0702.minecraft.gui.container.AbstractGuiScreen; import de.johni0702.minecraft.gui.container.GuiPanel; import de.johni0702.minecraft.gui.container.GuiScreen; import de.johni0702.minecraft.gui.element.GuiElement; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.resources.I18n; import net.minecraftforge.client.event.GuiScreenEvent; //#if MC>=10800 //#if MC>=11300 import net.minecraftforge.eventbus.api.SubscribeEvent; import java.util.ArrayList; //#else //$$ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; //#endif //#else //$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent; //#endif import java.io.File; import static com.replaymod.core.versions.MCVer.*; public class GuiHandler { private static final int BUTTON_REPLAY_CENTER = 17890236; private final ReplayModOnline mod; public GuiHandler(ReplayModOnline mod) { this.mod = mod; } public void register() { FML_BUS.register(this); FORGE_BUS.register(this); } @SubscribeEvent public void injectIntoMainMenu(GuiScreenEvent.InitGuiEvent event) { if (!(getGui(event) instanceof GuiMainMenu)) { return; } GuiButton button = new GuiButton(BUTTON_REPLAY_CENTER, getGui(event).width / 2 - 100, getGui(event).height / 4 + 10 + 4 * 24, I18n.format("replaymod.gui.replaycenter")) { //#if MC>=11300 @Override public void onClick(double mouseX, double mouseY) { onButton(new GuiScreenEvent.ActionPerformedEvent.Pre(getGui(event), this, new ArrayList<>())); } //#endif }; addButton(event, button); } @SubscribeEvent public void injectIntoReplayViewer(GuiScreenEvent.InitGuiEvent.Post event) { AbstractGuiScreen guiScreen = GuiScreen.from(getGui(event)); if (!(guiScreen instanceof GuiReplayViewer)) { return; } final GuiReplayViewer replayViewer = (GuiReplayViewer) guiScreen; // Inject Upload button for (GuiElement element : replayViewer.replayButtonPanel.getChildren()) { if (element instanceof GuiPanel && (((GuiPanel) element).getChildren().isEmpty())) { new de.johni0702.minecraft.gui.element.GuiButton((GuiPanel) element).onClick(new Runnable() { @Override public void run() { File replayFile = replayViewer.list.getSelected().file; GuiUploadReplay uploadGui = new GuiUploadReplay(replayViewer, mod, replayFile); if (mod.isLoggedIn()) { uploadGui.display(); } else { new GuiLoginPrompt(mod.getApiClient(), replayViewer, uploadGui, true); } } }).setSize(73, 20).setI18nLabel("replaymod.gui.upload").setDisabled(); } } } @SubscribeEvent public void onButton(GuiScreenEvent.ActionPerformedEvent.Pre event) { if(!getButton(event).enabled) return; if (getGui(event) instanceof GuiMainMenu) { if (getButton(event).id == BUTTON_REPLAY_CENTER) { GuiReplayCenter replayCenter = new GuiReplayCenter(mod); if (mod.isLoggedIn()) { replayCenter.display(); } else { new GuiLoginPrompt(mod.getApiClient(), GuiScreen.wrap(getGui(event)), replayCenter, true).display(); } } } } }