Add buttons in SP/MP menu for quick en-/disabling of recording
This commit is contained in:
@@ -3,6 +3,7 @@ package com.replaymod.recording;
|
||||
import com.replaymod.core.ReplayMod;
|
||||
import com.replaymod.core.utils.Restrictions;
|
||||
import com.replaymod.recording.handler.ConnectionEventHandler;
|
||||
import com.replaymod.recording.handler.GuiHandler;
|
||||
import com.replaymod.recording.packet.PacketListener;
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
@@ -57,6 +58,8 @@ public class ReplayModRecording {
|
||||
EventBus bus = FMLCommonHandler.instance().bus();
|
||||
bus.register(connectionEventHandler = new ConnectionEventHandler(logger, core));
|
||||
|
||||
new GuiHandler(core).register();
|
||||
|
||||
NetworkRegistry.INSTANCE.newChannel(Restrictions.PLUGIN_CHANNEL, new RestrictionsChannelHandler());
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user