Add buttons in SP/MP menu for quick en-/disabling of recording

This commit is contained in:
Jonas Herzig
2018-01-16 14:21:38 +01:00
parent 08e0d65685
commit 5bc5ef5fb8
3 changed files with 56 additions and 1 deletions

2
jGui

Submodule jGui updated: 9e84e724aa...59ef539033

View File

@@ -3,6 +3,7 @@ package com.replaymod.recording;
import com.replaymod.core.ReplayMod; import com.replaymod.core.ReplayMod;
import com.replaymod.core.utils.Restrictions; import com.replaymod.core.utils.Restrictions;
import com.replaymod.recording.handler.ConnectionEventHandler; import com.replaymod.recording.handler.ConnectionEventHandler;
import com.replaymod.recording.handler.GuiHandler;
import com.replaymod.recording.packet.PacketListener; import com.replaymod.recording.packet.PacketListener;
import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandler;
@@ -57,6 +58,8 @@ public class ReplayModRecording {
EventBus bus = FMLCommonHandler.instance().bus(); EventBus bus = FMLCommonHandler.instance().bus();
bus.register(connectionEventHandler = new ConnectionEventHandler(logger, core)); bus.register(connectionEventHandler = new ConnectionEventHandler(logger, core));
new GuiHandler(core).register();
NetworkRegistry.INSTANCE.newChannel(Restrictions.PLUGIN_CHANNEL, new RestrictionsChannelHandler()); NetworkRegistry.INSTANCE.newChannel(Restrictions.PLUGIN_CHANNEL, new RestrictionsChannelHandler());
} }

View File

@@ -0,0 +1,52 @@
package com.replaymod.recording.handler;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.SettingsRegistry;
import com.replaymod.recording.Setting;
import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.container.VanillaGuiScreen;
import de.johni0702.minecraft.gui.element.GuiCheckbox;
import de.johni0702.minecraft.gui.layout.CustomLayout;
import net.minecraft.client.gui.GuiMultiplayer;
import net.minecraft.client.gui.GuiSelectWorld;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class GuiHandler {
private final ReplayMod mod;
public GuiHandler(ReplayMod mod) {
this.mod = mod;
}
public void register() {
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) {
if (event.gui instanceof GuiSelectWorld || event.gui instanceof GuiMultiplayer) {
SettingsRegistry settingsRegistry = mod.getSettingsRegistry();
boolean sp = event.gui instanceof GuiSelectWorld;
Setting<Boolean> setting = sp ? Setting.RECORD_SINGLEPLAYER : Setting.RECORD_SERVER;
GuiCheckbox recordingCheckbox = new GuiCheckbox()
.setI18nLabel("replaymod.gui.settings.record" + (sp ? "singleplayer" : "server"))
.setChecked(settingsRegistry.get(setting));
recordingCheckbox.onClick(() -> {
settingsRegistry.set(setting, recordingCheckbox.isChecked());
settingsRegistry.save();
});
VanillaGuiScreen.setup(event.gui).setLayout(new CustomLayout<GuiScreen>() {
@Override
protected void layout(GuiScreen container, int width, int height) {
//size(recordingCheckbox, 200, 20);
pos(recordingCheckbox, width - width(recordingCheckbox) - 5, 5);
}
}).addElements(null, recordingCheckbox);
}
}
}