Merge remote-tracking branch 'origin/master' into feature/floodgate-merge

# Conflicts:
#	bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
#	bootstrap/fabric/src/main/java/org/geysermc/geyser/platform/fabric/GeyserFabricMod.java
#	bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotPlugin.java
#	bootstrap/standalone/src/main/java/org/geysermc/geyser/platform/standalone/GeyserStandaloneBootstrap.java
#	bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPlugin.java
#	bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/floodgate/FloodgateModule.java
#	common/src/main/java/org/geysermc/floodgate/crypto/AesKeyProducer.java
#	common/src/main/java/org/geysermc/floodgate/crypto/FloodgateCipher.java
#	common/src/main/java/org/geysermc/floodgate/news/NewsItem.java
#	common/src/main/java/org/geysermc/floodgate/news/NewsItemMessage.java
#	common/src/main/java/org/geysermc/floodgate/news/NewsType.java
#	common/src/main/java/org/geysermc/floodgate/news/data/BuildSpecificData.java
#	common/src/main/java/org/geysermc/floodgate/news/data/ConfigSpecificData.java
#	common/src/main/java/org/geysermc/floodgate/util/BedrockData.java
#	common/src/main/java/org/geysermc/floodgate/util/LinkedPlayer.java
#	common/src/main/java/org/geysermc/floodgate/util/WebsocketEventType.java
#	core/src/main/java/org/geysermc/geyser/GeyserBootstrap.java
#	core/src/main/java/org/geysermc/geyser/GeyserImpl.java
#	core/src/main/java/org/geysermc/geyser/floodgate/FloodgateProvider.java
#	core/src/main/java/org/geysermc/geyser/floodgate/GeyserLoadStage.java
#	core/src/main/java/org/geysermc/geyser/floodgate/NoFloodgateProvider.java
#	core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
#	core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
#	gradle.properties
This commit is contained in:
Tim203 2024-02-18 16:37:26 +01:00
commit c8fd024e4a
No known key found for this signature in database
371 changed files with 15591 additions and 11773 deletions

View file

@ -38,9 +38,10 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.geysermc.geyser.api.util.PlatformType;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.geysermc.geyser.GeyserBootstrap;
import org.geysermc.geyser.GeyserImpl;
import org.geysermc.geyser.api.util.PlatformType;
import org.geysermc.geyser.command.GeyserCommandManager;
import org.geysermc.geyser.configuration.GeyserConfiguration;
import org.geysermc.geyser.configuration.GeyserJacksonConfiguration;
@ -51,7 +52,6 @@ import org.geysermc.geyser.platform.standalone.gui.GeyserStandaloneGUI;
import org.geysermc.geyser.text.GeyserLocale;
import org.geysermc.geyser.util.FileUtils;
import org.geysermc.geyser.util.LoopbackUtil;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
@ -59,7 +59,12 @@ import java.lang.reflect.Method;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.MessageFormat;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
public class GeyserStandaloneBootstrap implements GeyserBootstrap {
@ -68,11 +73,10 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
private GeyserStandaloneConfiguration geyserConfig;
private GeyserStandaloneLogger geyserLogger;
private IGeyserPingPassthrough geyserPingPassthrough;
private GeyserStandaloneGUI gui;
@Getter
private boolean useGui = System.console() == null && !isHeadless();
private Logger log4jLogger;
private String configFilename = "config.yml";
private GeyserImpl geyser;
@ -161,23 +165,19 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
}
}
}
bootstrap.onEnable(useGuiOpts, configFilenameOpt);
}
public void onEnable(boolean useGui, String configFilename) {
this.configFilename = configFilename;
this.useGui = useGui;
this.onEnable();
bootstrap.useGui = useGuiOpts;
bootstrap.configFilename = configFilenameOpt;
bootstrap.onGeyserInitialize();
}
@Override
public void onEnable() {
Logger logger = (Logger) LogManager.getRootLogger();
for (Appender appender : logger.getAppenders().values()) {
public void onGeyserInitialize() {
log4jLogger = (Logger) LogManager.getRootLogger();
for (Appender appender : log4jLogger.getAppenders().values()) {
// Remove the appender that is not in use
// Prevents multiple appenders/double logging and removes harmless errors
if ((useGui && appender instanceof TerminalConsoleAppender) || (!useGui && appender instanceof ConsoleAppender)) {
logger.removeAppender(appender);
log4jLogger.removeAppender(appender);
}
}
@ -190,7 +190,12 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
}
LoopbackUtil.checkAndApplyLoopback(geyserLogger);
this.onGeyserEnable();
}
@Override
public void onGeyserEnable() {
try {
File configFile = FileUtils.fileOrCopiedFromResource(new File(configFilename), "config.yml",
(x) -> x.replaceAll("generateduuid", UUID.randomUUID().toString()), this);
@ -215,14 +220,15 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
GeyserConfiguration.checkGeyserConfiguration(geyserConfig, geyserLogger);
// Allow libraries like Protocol to have their debug information passthrough
logger.get().setLevel(geyserConfig.isDebugMode() ? Level.DEBUG : Level.INFO);
log4jLogger.get().setLevel(geyserConfig.isDebugMode() ? Level.DEBUG : Level.INFO);
geyser = GeyserImpl.load(PlatformType.STANDALONE, this, null);
GeyserImpl.start();
geyserCommandManager = new GeyserCommandManager(geyser);
geyserCommandManager.init();
GeyserImpl.start();
if (gui != null) {
gui.enableCommands(geyser.getScheduledThread(), geyserCommandManager);
}
@ -250,7 +256,14 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
}
@Override
public void onDisable() {
public void onGeyserDisable() {
// We can re-register commands on standalone, so why not
GeyserImpl.getInstance().commandManager().getCommands().clear();
geyser.disable();
}
@Override
public void onGeyserShutdown() {
geyser.shutdown();
System.exit(0);
}
@ -292,7 +305,7 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
return new GeyserStandaloneDumpInfo(this);
}
@NotNull
@NonNull
@Override
public String getServerBindAddress() {
throw new IllegalStateException();
@ -325,7 +338,7 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
// Get the ignored properties
Set<String> ignoredProperties = OBJECT_MAPPER.getSerializationConfig().getAnnotationIntrospector()
.findPropertyIgnorals(beanDescription.getClassInfo()).getIgnored();
.findPropertyIgnoralByName(OBJECT_MAPPER.getSerializationConfig() ,beanDescription.getClassInfo()).getIgnored();
// Filter properties removing the ignored ones
return properties.stream()
@ -340,7 +353,7 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap {
* @param parentObject The object to alter
* @param value The new value of the property
*/
@SuppressWarnings("unchecked") // Required for enum usage
@SuppressWarnings({"unchecked", "rawtypes"}) // Required for enum usage
private static void setConfigOption(BeanPropertyDefinition property, Object parentObject, Object value) {
Object parsedValue = value;

View file

@ -49,7 +49,7 @@ public class GeyserStandaloneLogger extends SimpleTerminalConsole implements Gey
@Override
protected void shutdown() {
GeyserImpl.getInstance().getBootstrap().onDisable();
GeyserImpl.getInstance().getBootstrap().onGeyserShutdown();
}
@Override

View file

@ -28,11 +28,16 @@ package org.geysermc.geyser.platform.standalone.gui;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.io.Serial;
/**
* This class was based on this code: https://stackoverflow.com/a/6899478/5299903
* This class was based on this <a href="https://stackoverflow.com/a/6899478/5299903">code</a>
*/
public class ColorPane extends JTextPane {
@Serial
private static final long serialVersionUID = 1L;
private static Color colorCurrent = ANSIColor.RESET.getColor();
private String remaining = "";
@ -62,7 +67,7 @@ public class ColorPane extends JTextPane {
int aPos = 0; // current char position in addString
int aIndex; // index of next Escape sequence
int mIndex; // index of "m" terminating Escape sequence
String tmpString = "";
String tmpString;
boolean stillSearching = true; // true until no more Escape sequences
String addString = remaining + s;
remaining = "";

View file

@ -25,6 +25,7 @@
package org.geysermc.geyser.platform.standalone.gui;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.geysermc.geyser.GeyserImpl;
import org.geysermc.geyser.GeyserLogger;
import org.geysermc.geyser.command.GeyserCommandManager;
@ -64,7 +65,6 @@ public class GeyserStandaloneGUI {
private final List<Integer> ramValues = new ArrayList<>();
private final DefaultTableModel playerTableModel = new DefaultTableModel();
private final JTable playerTable = new JTable(playerTableModel);
/**
* Create and show the Geyser-Standalone GUI
@ -158,6 +158,7 @@ public class GeyserStandaloneGUI {
playerTableModel.addColumn(GeyserLocale.getLocaleStringLog("geyser.gui.table.ip"));
playerTableModel.addColumn(GeyserLocale.getLocaleStringLog("geyser.gui.table.username"));
JTable playerTable = new JTable(playerTableModel);
JScrollPane playerScrollPane = new JScrollPane(playerTable);
rightContentPane.add(playerScrollPane);
@ -253,12 +254,12 @@ public class GeyserStandaloneGUI {
}
@Override
public void write(byte[] b, int off, int len) {
public void write(byte @NonNull [] b, int off, int len) {
appendConsole(new String(b, off, len));
}
@Override
public void write(byte[] b) {
public void write(byte @NonNull[] b) {
write(b, 0, b.length);
}
};

View file

@ -29,15 +29,20 @@ import lombok.Setter;
import javax.swing.*;
import java.awt.*;
import java.io.Serial;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* This has been modified to fit Geyser more but is based on
* https://gist.github.com/roooodcastro/6325153#gistcomment-3107524
* <a href="https://gist.github.com/roooodcastro/6325153#gistcomment-3107524">this Github gist</a>
*/
public final class GraphPanel extends JPanel {
@Serial
private static final long serialVersionUID = 1L;
private final static int padding = 10;
private final static int labelPadding = 25;
private final static int pointWidth = 4;
@ -103,7 +108,7 @@ public final class GraphPanel extends JPanel {
g.drawLine(padding + labelPadding + 1 + pointWidth, y, width - padding, y);
g.setColor(Color.BLACK);
final int tickValue = (int) (minScore + ((scoreRange * i) / numberYDivisions));
final int tickValue = minScore + ((scoreRange * i) / numberYDivisions);
final String yLabel = tickValue + "";
final int labelWidth = fontMetrics.stringWidth(yLabel);
g.drawString(yLabel, x1 - labelWidth - 5, y + (fontHeight / 2) - 3);