Merge branch 'singleplayer' of https://github.com/EaglerMods/eaglercraft-sp into singleplayer

This commit is contained in:
LAX1DUDE 2022-08-09 19:04:43 -07:00
commit aebd77e886
12 changed files with 13092 additions and 12960 deletions

11
eaglercraft-sp.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="EclipseModuleManager">
<conelement value="org.eclipse.buildship.core.gradleclasspathcontainer" />
<src_description expected_position="0">
<src_folder value="file://$MODULE_DIR$/src/main/java" expected_position="0" />
<src_folder value="file://$MODULE_DIR$/src/teavm/java" expected_position="1" />
<src_folder value="file://$MODULE_DIR$/sp-server/src/ipc/java" expected_position="2" />
</src_description>
</component>
</module>

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -468,5 +468,5 @@ window.startLANServer = () => {
if(typeof window.constructLANServer !== "function") { if(typeof window.constructLANServer !== "function") {
window.initializeLANServer(); window.initializeLANServer();
} }
return window.constructLANerver(); return window.constructLANServer();
}; };

View File

@ -32,6 +32,7 @@ menu.convertingLevel=Converting world
menu.simulating=Simulating the world for a bit menu.simulating=Simulating the world for a bit
menu.respawning=Respawning menu.respawning=Respawning
menu.shareToLan=Open to LAN menu.shareToLan=Open to LAN
menu.closeLan=Close LAN
menu.skinCapeSettings=Skins/Capes Settings menu.skinCapeSettings=Skins/Capes Settings
menu.skinCapeSettingsNote0=I put the button up here so menu.skinCapeSettingsNote0=I put the button up here so
@ -232,6 +233,7 @@ selectServer.direct=Direct Connect
selectServer.edit=Edit selectServer.edit=Edit
selectServer.delete=Delete selectServer.delete=Delete
selectServer.add=Add server selectServer.add=Add server
selectServer.lan=§3LAN
selectServer.defaultName=Minecraft Server selectServer.defaultName=Minecraft Server
selectServer.deleteQuestion=Are you sure you want to remove this server? selectServer.deleteQuestion=Are you sure you want to remove this server?
selectServer.deleteWarning=will be lost forever! (A long time!) selectServer.deleteWarning=will be lost forever! (A long time!)

View File

@ -6,6 +6,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import net.lax1dude.eaglercraft.sp.ipc.*; import net.lax1dude.eaglercraft.sp.ipc.*;
import net.minecraft.src.EnumGameType;
import net.minecraft.src.NBTTagCompound; import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NetHandler; import net.minecraft.src.NetHandler;
import net.minecraft.src.WorldSettings; import net.minecraft.src.WorldSettings;
@ -426,5 +427,19 @@ public class IntegratedServer {
EaglerAdapter.disableChannel("NET|" + channel); EaglerAdapter.disableChannel("NET|" + channel);
sendIPCPacket(new IPCPacket0CPlayerChannel(channel, false)); sendIPCPacket(new IPCPacket0CPlayerChannel(channel, false));
} }
private static boolean hostingLAN = false;
public static final String shareToLAN(EnumGameType gameType, boolean allowCommands) {
hostingLAN = true;
return "yee";
}
public static final void closeLAN() {
hostingLAN = false;
}
public static final boolean isHostingLAN() {
return hostingLAN;
}
} }

View File

@ -5,6 +5,7 @@ import net.lax1dude.eaglercraft.ConfigConstants;
import net.lax1dude.eaglercraft.EaglerAdapter; import net.lax1dude.eaglercraft.EaglerAdapter;
import net.lax1dude.eaglercraft.GuiScreenSkinCapeSettings; import net.lax1dude.eaglercraft.GuiScreenSkinCapeSettings;
import net.lax1dude.eaglercraft.GuiVoiceMenu; import net.lax1dude.eaglercraft.GuiVoiceMenu;
import net.lax1dude.eaglercraft.IntegratedServer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
public class GuiIngameMenu extends GuiScreen { public class GuiIngameMenu extends GuiScreen {
@ -30,8 +31,8 @@ public class GuiIngameMenu extends GuiScreen {
this.buttonList.add(new GuiButton(4, this.width / 2 - 100, this.height / 4 + 24 + var1, StatCollector.translateToLocal("menu.returnToGame"))); this.buttonList.add(new GuiButton(4, this.width / 2 - 100, this.height / 4 + 24 + var1, StatCollector.translateToLocal("menu.returnToGame")));
this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + var1, 98, 20, StatCollector.translateToLocal("menu.options"))); this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + var1, 98, 20, StatCollector.translateToLocal("menu.options")));
GuiButton var3; GuiButton var3;
this.buttonList.add(var3 = new GuiButton(7, this.width / 2 + 2, this.height / 4 + 96 + var1, 98, 20, StatCollector.translateToLocal("menu.shareToLan"))); this.buttonList.add(var3 = new GuiButton(7, this.width / 2 + 2, this.height / 4 + 96 + var1, 98, 20, StatCollector.translateToLocal(IntegratedServer.isHostingLAN() ? "menu.closeLan" : "menu.shareToLan")));
var3.enabled = false; var3.enabled = mc.isSingleplayer();
this.buttonList.add(new GuiButton(8, 3, 3, 120, 20, StatCollector.translateToLocal("menu.skinCapeSettings"))); this.buttonList.add(new GuiButton(8, 3, 3, 120, 20, StatCollector.translateToLocal("menu.skinCapeSettings")));
} }
@ -61,6 +62,17 @@ public class GuiIngameMenu extends GuiScreen {
this.mc.setIngameFocus(); this.mc.setIngameFocus();
this.mc.sndManager.resumeAllSounds(); this.mc.sndManager.resumeAllSounds();
break; break;
case 7:
if (IntegratedServer.isHostingLAN()) {
IntegratedServer.closeLAN();
this.mc.displayGuiScreen((GuiScreen) null);
this.mc.setIngameFocus();
this.mc.sndManager.resumeAllSounds();
} else {
this.mc.displayGuiScreen(new GuiShareToLan(this));
}
break;
case 8: case 8:
this.mc.displayGuiScreen(new GuiScreenSkinCapeSettings(this)); this.mc.displayGuiScreen(new GuiScreenSkinCapeSettings(this));

View File

@ -123,13 +123,14 @@ public class GuiMultiplayer extends GuiScreen {
*/ */
public void initGuiControls() { public void initGuiControls() {
StringTranslate var1 = StringTranslate.getInstance(); StringTranslate var1 = StringTranslate.getInstance();
this.buttonList.add(this.field_96289_p = new GuiButton(7, this.width / 2 - 154, this.height - 28, 70, 20, var1.translateKey("selectServer.edit"))); this.buttonList.add(this.field_96289_p = new GuiButton(7, this.width / 2 - 154 + 36, this.height - 28, 60, 20, var1.translateKey("selectServer.edit")));
this.buttonList.add(this.buttonDelete = new GuiButton(2, this.width / 2 - 74, this.height - 28, 70, 20, var1.translateKey("selectServer.delete"))); this.buttonList.add(this.buttonDelete = new GuiButton(2, this.width / 2 - 74 + 22, this.height - 28, 60, 20, var1.translateKey("selectServer.delete")));
this.buttonList.add(this.buttonSelect = new GuiButton(1, this.width / 2 - 154, this.height - 52, 100, 20, var1.translateKey("selectServer.select"))); this.buttonList.add(this.buttonSelect = new GuiButton(1, this.width / 2 - 154, this.height - 52, 100, 20, var1.translateKey("selectServer.select")));
this.buttonList.add(new GuiButton(4, this.width / 2 - 50, this.height - 52, 100, 20, var1.translateKey("selectServer.direct"))); this.buttonList.add(new GuiButton(4, this.width / 2 - 50, this.height - 52, 100, 20, var1.translateKey("selectServer.direct")));
this.buttonList.add(new GuiButton(3, this.width / 2 + 4 + 50, this.height - 52, 100, 20, var1.translateKey("selectServer.add"))); this.buttonList.add(new GuiButton(3, this.width / 2 + 4 + 50, this.height - 52, 100, 20, var1.translateKey("selectServer.add")));
this.buttonList.add(new GuiButton(8, this.width / 2 + 4, this.height - 28, 70, 20, var1.translateKey("selectServer.refresh"))); this.buttonList.add(new GuiButton(8, this.width / 2 + 4 + 10, this.height - 28, 60, 20, var1.translateKey("selectServer.refresh")));
this.buttonList.add(new GuiButton(0, this.width / 2 + 4 + 76, this.height - 28, 75, 20, var1.translateKey("gui.cancel"))); this.buttonList.add(new GuiButton(0, this.width / 2 + 4 + 76, this.height - 28, 75, 20, var1.translateKey("gui.cancel")));
this.buttonList.add(new GuiButton(10, this.width / 2 - 154, this.height - 28, 30, 20, var1.translateKey("selectServer.lan")));
boolean var2 = this.selectedServer >= 0 && this.selectedServer < this.serverSlotContainer.getSize(); boolean var2 = this.selectedServer >= 0 && this.selectedServer < this.serverSlotContainer.getSize();
this.buttonSelect.enabled = var2; this.buttonSelect.enabled = var2;
this.field_96289_p.enabled = var2; this.field_96289_p.enabled = var2;
@ -193,6 +194,8 @@ public class GuiMultiplayer extends GuiScreen {
--cooldownTimer; --cooldownTimer;
this.mc.displayGuiScreen(new GuiMultiplayer(this.parentScreen)); this.mc.displayGuiScreen(new GuiMultiplayer(this.parentScreen));
} }
} else if (par1GuiButton.id == 10) {
this.mc.displayGuiScreen(this.parentScreen);
} else { } else {
this.serverSlotContainer.actionPerformed(par1GuiButton); this.serverSlotContainer.actionPerformed(par1GuiButton);
} }

View File

@ -0,0 +1,91 @@
package net.minecraft.src;
import net.lax1dude.eaglercraft.IntegratedServer;
public class GuiShareToLan extends GuiScreen {
/**
* A reference to the screen object that created this. Used for navigating between screens.
*/
private final GuiScreen parentScreen;
private GuiButton buttonAllowCommandsToggle;
private GuiButton buttonGameMode;
/**
* The currently selected game mode. One of 'survival', 'creative', or 'adventure'
*/
private String gameMode = "survival";
/** True if 'Allow Cheats' is currently enabled */
private boolean allowCommands;
public GuiShareToLan(GuiScreen par1GuiScreen) {
this.parentScreen = par1GuiScreen;
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
public void initGui() {
this.buttonList.clear();
this.buttonList.add(new GuiButton(101, this.width / 2 - 155, this.height - 28, 150, 20, StatCollector.translateToLocal("lanServer.start")));
this.buttonList.add(new GuiButton(102, this.width / 2 + 5, this.height - 28, 150, 20, StatCollector.translateToLocal("gui.cancel")));
this.buttonList.add(this.buttonGameMode = new GuiButton(104, this.width / 2 - 155, 100, 150, 20, StatCollector.translateToLocal("selectWorld.gameMode")));
this.buttonList.add(this.buttonAllowCommandsToggle = new GuiButton(103, this.width / 2 + 5, 100, 150, 20, StatCollector.translateToLocal("selectWorld.allowCommands")));
this.func_74088_g();
}
private void func_74088_g() {
this.buttonGameMode.displayString = StatCollector.translateToLocal("selectWorld.gameMode") + " " + StatCollector.translateToLocal("selectWorld.gameMode." + this.gameMode);
this.buttonAllowCommandsToggle.displayString = StatCollector.translateToLocal("selectWorld.allowCommands") + " ";
if (this.allowCommands) {
this.buttonAllowCommandsToggle.displayString = this.buttonAllowCommandsToggle.displayString + StatCollector.translateToLocal("options.on");
} else {
this.buttonAllowCommandsToggle.displayString = this.buttonAllowCommandsToggle.displayString + StatCollector.translateToLocal("options.off");
}
}
/**
* Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
*/
protected void actionPerformed(GuiButton par1GuiButton) {
if (par1GuiButton.id == 102) {
this.mc.displayGuiScreen(this.parentScreen);
} else if (par1GuiButton.id == 104) {
if (this.gameMode.equals("survival")) {
this.gameMode = "creative";
} else if (this.gameMode.equals("creative")) {
this.gameMode = "adventure";
} else {
this.gameMode = "survival";
}
this.func_74088_g();
} else if (par1GuiButton.id == 103) {
this.allowCommands = !this.allowCommands;
this.func_74088_g();
} else if (par1GuiButton.id == 101) {
this.mc.displayGuiScreen((GuiScreen)null);
String var2 = IntegratedServer.shareToLAN(EnumGameType.getByName(this.gameMode), this.allowCommands);
String var3;
if (var2 != null) {
var3 = StatCollector.translateToLocalFormatted("commands.publish.started", var2);
} else {
var3 = StatCollector.translateToLocal("commands.publish.failed");
}
this.mc.ingameGUI.getChatGUI().printChatMessage(var3);
}
}
/**
* Draws the screen and all the components in it.
*/
public void drawScreen(int par1, int par2, float par3) {
this.drawDefaultBackground();
this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("lanServer.title"), this.width / 2, 50, 16777215);
this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("lanServer.otherPlayers"), this.width / 2, 82, 16777215);
super.drawScreen(par1, par2, par3);
}
}

View File

@ -4,7 +4,7 @@ import org.teavm.jso.JSFunctor;
import org.teavm.jso.JSObject; import org.teavm.jso.JSObject;
import org.teavm.jso.typedarrays.ArrayBuffer; import org.teavm.jso.typedarrays.ArrayBuffer;
public interface EaglercraftLANClient { public interface EaglercraftLANClient extends JSObject {
final int READYSTATE_INIT_FAILED = -2; final int READYSTATE_INIT_FAILED = -2;
final int READYSTATE_FAILED = -1; final int READYSTATE_FAILED = -1;

View File

@ -4,7 +4,7 @@ import org.teavm.jso.JSFunctor;
import org.teavm.jso.JSObject; import org.teavm.jso.JSObject;
import org.teavm.jso.typedarrays.ArrayBuffer; import org.teavm.jso.typedarrays.ArrayBuffer;
public interface EaglercraftLANServer { public interface EaglercraftLANServer extends JSObject {
boolean LANServerSupported(); boolean LANServerSupported();