- Reformatted Code using IntelliJ
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.addon;
|
package dev.unlegitdqrk.unlegitlibrary.addon;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonLoadedEvent;
|
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonLoadedEvent;
|
||||||
@@ -10,7 +8,6 @@ import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -30,7 +27,7 @@ public final class AddonLoader extends DefaultMethodsOverrider {
|
|||||||
this.eventManager = eventManager;
|
this.eventManager = eventManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void loadAddonsFromDirectory(File addonFolder) throws IOException {
|
public void loadAddonsFromDirectory(File addonFolder) throws IOException {
|
||||||
if (!addonFolder.exists()) return;
|
if (!addonFolder.exists()) return;
|
||||||
if (!addonFolder.isDirectory()) return;
|
if (!addonFolder.isDirectory()) return;
|
||||||
|
|
||||||
@@ -40,7 +37,7 @@ public final class AddonLoader extends DefaultMethodsOverrider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void loadAddonFromJar(File file) throws IOException {
|
public void loadAddonFromJar(File file) throws IOException {
|
||||||
try (JarFile jarFile = new JarFile(file)) {
|
try (JarFile jarFile = new JarFile(file)) {
|
||||||
URL[] urls = {new URL("jar:file:" + file.getAbsolutePath() + "!/")};
|
URL[] urls = {new URL("jar:file:" + file.getAbsolutePath() + "!/")};
|
||||||
URLClassLoader classLoader = URLClassLoader.newInstance(urls, getClass().getClassLoader());
|
URLClassLoader classLoader = URLClassLoader.newInstance(urls, getClass().getClassLoader());
|
||||||
@@ -66,35 +63,35 @@ public final class AddonLoader extends DefaultMethodsOverrider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void enableAddon(Addon addon) {
|
public void enableAddon(Addon addon) {
|
||||||
if (!addons.contains(addon)) return;
|
if (!addons.contains(addon)) return;
|
||||||
addon.enable();
|
addon.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void disableAddon(Addon addon) {
|
public void disableAddon(Addon addon) {
|
||||||
if (!addons.contains(addon)) return;
|
if (!addons.contains(addon)) return;
|
||||||
addon.disable();
|
addon.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void enableAll() {
|
public void enableAll() {
|
||||||
addons.forEach(this::enableAddon);
|
addons.forEach(this::enableAddon);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void disableAll() {
|
public void disableAll() {
|
||||||
addons.forEach(this::disableAddon);
|
addons.forEach(this::disableAddon);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void registerEventListener(Addon addon, Class<? extends EventListener> eventListener) throws Exception {
|
public void registerEventListener(Addon addon, Class<? extends EventListener> eventListener) throws Exception {
|
||||||
if (!addons.contains(addon)) return;
|
if (!addons.contains(addon)) return;
|
||||||
addon.registerEventListener(eventListener);
|
addon.registerEventListener(eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void unregisterEventListener(Addon addon, Class<? extends EventListener> eventListener) {
|
public void unregisterEventListener(Addon addon, Class<? extends EventListener> eventListener) {
|
||||||
if (!addons.contains(addon)) return;
|
if (!addons.contains(addon)) return;
|
||||||
addon.unregisterEventListener(eventListener);
|
addon.unregisterEventListener(eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<Addon> getLoadedAddons() {
|
public List<Addon> getLoadedAddons() {
|
||||||
return new ArrayList<>(addons);
|
return new ArrayList<>(addons);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.addon.events;
|
package dev.unlegitdqrk.unlegitlibrary.addon.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.addon.impl.Addon;
|
import dev.unlegitdqrk.unlegitlibrary.addon.impl.Addon;
|
||||||
@@ -18,22 +16,22 @@ public final class AddonDisabledEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Object clone() throws CloneNotSupportedException {
|
protected Object clone() throws CloneNotSupportedException {
|
||||||
return super.clone();
|
return super.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return super.equals(obj);
|
return super.equals(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String toString() {
|
public String toString() {
|
||||||
return super.toString();
|
return super.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int hashCode() {
|
public int hashCode() {
|
||||||
return super.hashCode();
|
return super.hashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.addon.events;
|
package dev.unlegitdqrk.unlegitlibrary.addon.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.addon.impl.Addon;
|
import dev.unlegitdqrk.unlegitlibrary.addon.impl.Addon;
|
||||||
@@ -18,22 +16,22 @@ public final class AddonEnabledEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Object clone() throws CloneNotSupportedException {
|
protected Object clone() throws CloneNotSupportedException {
|
||||||
return super.clone();
|
return super.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return super.equals(obj);
|
return super.equals(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String toString() {
|
public String toString() {
|
||||||
return super.toString();
|
return super.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int hashCode() {
|
public int hashCode() {
|
||||||
return super.hashCode();
|
return super.hashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,22 +16,22 @@ public final class AddonLoadedEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Object clone() throws CloneNotSupportedException {
|
protected Object clone() throws CloneNotSupportedException {
|
||||||
return super.clone();
|
return super.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return super.equals(obj);
|
return super.equals(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String toString() {
|
public String toString() {
|
||||||
return super.toString();
|
return super.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int hashCode() {
|
public int hashCode() {
|
||||||
return super.hashCode();
|
return super.hashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,15 +1,10 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.addon.impl;
|
package dev.unlegitdqrk.unlegitlibrary.addon.impl;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonDisabledEvent;
|
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonDisabledEvent;
|
||||||
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonEnabledEvent;
|
import dev.unlegitdqrk.unlegitlibrary.addon.events.AddonEnabledEvent;
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
|
import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
|
|
||||||
public abstract class Addon {
|
public abstract class Addon {
|
||||||
|
|
||||||
private final AddonInfo addonInfo;
|
private final AddonInfo addonInfo;
|
||||||
@@ -29,15 +24,15 @@ public abstract class Addon {
|
|||||||
|
|
||||||
public void executeEvent(Event event) {
|
public void executeEvent(Event event) {
|
||||||
if (!isEnabled) return;
|
if (!isEnabled) return;
|
||||||
addonInfo.getEventManager().executeEvent(event);
|
addonInfo.eventManager().executeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void registerEventListener(Class<? extends EventListener> eventListener) throws Exception {
|
public final void registerEventListener(Class<? extends EventListener> eventListener) throws Exception {
|
||||||
addonInfo.getEventManager().registerListener(eventListener);
|
addonInfo.eventManager().registerListener(eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void unregisterEventListener(Class<? extends EventListener> eventListener) {
|
public final void unregisterEventListener(Class<? extends EventListener> eventListener) {
|
||||||
addonInfo.getEventManager().unregisterListener(eventListener);
|
addonInfo.eventManager().unregisterListener(eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void onEnable();
|
public abstract void onEnable();
|
||||||
@@ -49,7 +44,7 @@ public abstract class Addon {
|
|||||||
|
|
||||||
isEnabled = true;
|
isEnabled = true;
|
||||||
onEnable();
|
onEnable();
|
||||||
addonInfo.getEventManager().executeEvent(new AddonEnabledEvent(this));
|
addonInfo.eventManager().executeEvent(new AddonEnabledEvent(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void disable() {
|
public final void disable() {
|
||||||
@@ -57,6 +52,6 @@ public abstract class Addon {
|
|||||||
|
|
||||||
isEnabled = false;
|
isEnabled = false;
|
||||||
onDisable();
|
onDisable();
|
||||||
addonInfo.getEventManager().executeEvent(new AddonDisabledEvent(this));
|
addonInfo.eventManager().executeEvent(new AddonDisabledEvent(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,38 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.addon.impl;
|
package dev.unlegitdqrk.unlegitlibrary.addon.impl;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
||||||
|
|
||||||
public class AddonInfo {
|
public record AddonInfo(String name, String version, String author, EventManager eventManager) {
|
||||||
|
|
||||||
private final String name;
|
|
||||||
private final String version;
|
|
||||||
private final String author;
|
|
||||||
private final EventManager eventManager;
|
|
||||||
|
|
||||||
public AddonInfo(String name, String version, String author, EventManager eventManager) {
|
|
||||||
this.name = name;
|
|
||||||
this.version = version;
|
|
||||||
this.author = author;
|
|
||||||
this.eventManager = eventManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final String getAuthor() {
|
|
||||||
return author;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final String getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final EventManager getEventManager() {
|
|
||||||
return eventManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected AddonInfo clone() throws CloneNotSupportedException {
|
protected AddonInfo clone() throws CloneNotSupportedException {
|
||||||
@@ -41,8 +11,7 @@ public class AddonInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
if (!(obj instanceof AddonInfo)) return false;
|
if (!(obj instanceof AddonInfo other)) return false;
|
||||||
AddonInfo other = (AddonInfo) obj;
|
|
||||||
return other.name.equalsIgnoreCase(name) && other.version.equalsIgnoreCase(version) && other.author.equalsIgnoreCase(author);
|
return other.name.equalsIgnoreCase(name) && other.version.equalsIgnoreCase(version) && other.author.equalsIgnoreCase(author);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command;
|
package dev.unlegitdqrk.unlegitlibrary.command;
|
||||||
|
|
||||||
import javax.management.InstanceAlreadyExistsException;
|
import javax.management.InstanceAlreadyExistsException;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command;
|
package dev.unlegitdqrk.unlegitlibrary.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -16,18 +16,19 @@ public final class CommandManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Registriere die Klasse, instanziiere sie einmalig
|
// Registriere die Klasse, instanziiere sie einmalig
|
||||||
public final void registerCommand(Class<? extends Command> commandClass) {
|
public void registerCommand(Class<? extends Command> commandClass) {
|
||||||
if (commandInstances.containsKey(commandClass)) return;
|
if (commandInstances.containsKey(commandClass)) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Command instance = commandClass.getDeclaredConstructor().newInstance();
|
Command instance = commandClass.getDeclaredConstructor().newInstance();
|
||||||
commandInstances.put(commandClass, instance);
|
commandInstances.put(commandClass, instance);
|
||||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
|
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
|
||||||
|
NoSuchMethodException e) {
|
||||||
e.printStackTrace(); // Oder Logger verwenden
|
e.printStackTrace(); // Oder Logger verwenden
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void unregisterCommand(Class<? extends Command> commandClass) {
|
public void unregisterCommand(Class<? extends Command> commandClass) {
|
||||||
commandInstances.remove(commandClass);
|
commandInstances.remove(commandClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command;
|
package dev.unlegitdqrk.unlegitlibrary.command;
|
||||||
|
|
||||||
public final record CommandPermission(String name, int level) {
|
public record CommandPermission(String name, int level) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
||||||
@@ -12,6 +10,12 @@ public final class CommandExecuteEvent extends CancellableEvent {
|
|||||||
private final CommandExecutor commandExecutor;
|
private final CommandExecutor commandExecutor;
|
||||||
private final Command command;
|
private final Command command;
|
||||||
|
|
||||||
|
public CommandExecuteEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
this.commandExecutor = commandExecutor;
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
public CommandManager getCommandManager() {
|
public CommandManager getCommandManager() {
|
||||||
return commandManager;
|
return commandManager;
|
||||||
}
|
}
|
||||||
@@ -23,10 +27,4 @@ public final class CommandExecuteEvent extends CancellableEvent {
|
|||||||
public Command getCommand() {
|
public Command getCommand() {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandExecuteEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.commandExecutor = commandExecutor;
|
|
||||||
this.command = command;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
||||||
@@ -12,6 +10,12 @@ public final class CommandExecutedEvent extends Event {
|
|||||||
private final CommandExecutor commandExecutor;
|
private final CommandExecutor commandExecutor;
|
||||||
private final Command command;
|
private final Command command;
|
||||||
|
|
||||||
|
public CommandExecutedEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
this.commandExecutor = commandExecutor;
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
public CommandExecutor getCommandExecutor() {
|
public CommandExecutor getCommandExecutor() {
|
||||||
return commandExecutor;
|
return commandExecutor;
|
||||||
}
|
}
|
||||||
@@ -23,10 +27,4 @@ public final class CommandExecutedEvent extends Event {
|
|||||||
public Command getCommand() {
|
public Command getCommand() {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandExecutedEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.commandExecutor = commandExecutor;
|
|
||||||
this.command = command;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
||||||
@@ -12,6 +10,12 @@ public final class CommandExecutorMissingPermissionEvent extends Event {
|
|||||||
private final CommandExecutor commandExecutor;
|
private final CommandExecutor commandExecutor;
|
||||||
private final Command command;
|
private final Command command;
|
||||||
|
|
||||||
|
public CommandExecutorMissingPermissionEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
this.commandExecutor = commandExecutor;
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
public CommandManager getCommandManager() {
|
public CommandManager getCommandManager() {
|
||||||
return commandManager;
|
return commandManager;
|
||||||
}
|
}
|
||||||
@@ -23,10 +27,4 @@ public final class CommandExecutorMissingPermissionEvent extends Event {
|
|||||||
public CommandExecutor getCommandExecutor() {
|
public CommandExecutor getCommandExecutor() {
|
||||||
return commandExecutor;
|
return commandExecutor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandExecutorMissingPermissionEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.commandExecutor = commandExecutor;
|
|
||||||
this.command = command;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.command.CommandExecutor;
|
import dev.unlegitdqrk.unlegitlibrary.command.CommandExecutor;
|
||||||
@@ -12,6 +10,13 @@ public final class CommandNotFoundEvent extends Event {
|
|||||||
private final String name;
|
private final String name;
|
||||||
private final String[] args;
|
private final String[] args;
|
||||||
|
|
||||||
|
public CommandNotFoundEvent(CommandManager commandManager, CommandExecutor commandExecutor, String name, String[] args) {
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
this.commandExecutor = commandExecutor;
|
||||||
|
this.name = name;
|
||||||
|
this.args = args;
|
||||||
|
}
|
||||||
|
|
||||||
public CommandManager getCommandManager() {
|
public CommandManager getCommandManager() {
|
||||||
return commandManager;
|
return commandManager;
|
||||||
}
|
}
|
||||||
@@ -27,11 +32,4 @@ public final class CommandNotFoundEvent extends Event {
|
|||||||
public String[] getArgs() {
|
public String[] getArgs() {
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandNotFoundEvent(CommandManager commandManager, CommandExecutor commandExecutor, String name, String[] args) {
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.commandExecutor = commandExecutor;
|
|
||||||
this.name = name;
|
|
||||||
this.args = args;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
package dev.unlegitdqrk.unlegitlibrary.command.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
import dev.unlegitdqrk.unlegitlibrary.command.Command;
|
||||||
@@ -12,6 +10,12 @@ public final class PreCommandExecuteEvent extends CancellableEvent {
|
|||||||
private final CommandExecutor commandExecutor;
|
private final CommandExecutor commandExecutor;
|
||||||
private final Command command;
|
private final Command command;
|
||||||
|
|
||||||
|
public PreCommandExecuteEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
this.commandExecutor = commandExecutor;
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
public Command getCommand() {
|
public Command getCommand() {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
@@ -23,10 +27,4 @@ public final class PreCommandExecuteEvent extends CancellableEvent {
|
|||||||
public CommandManager getCommandManager() {
|
public CommandManager getCommandManager() {
|
||||||
return commandManager;
|
return commandManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PreCommandExecuteEvent(CommandManager commandManager, CommandExecutor commandExecutor, Command command) {
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.commandExecutor = commandExecutor;
|
|
||||||
this.command = command;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.event;
|
package dev.unlegitdqrk.unlegitlibrary.event;
|
||||||
|
|
||||||
public abstract class EventListener {
|
public abstract class EventListener {
|
||||||
|
@@ -5,14 +5,17 @@ import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
|||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class EventManager extends DefaultMethodsOverrider {
|
public final class EventManager extends DefaultMethodsOverrider {
|
||||||
|
|
||||||
private final Map<Class<? extends Event>, Map<EventPriority, Map<Object, Method>>> registeredListener = new HashMap<>();
|
private final Map<Class<? extends Event>, Map<EventPriority, Map<Object, Method>>> registeredListener = new HashMap<>();
|
||||||
private final Map<Class<? extends EventListener>, Object> eventListeners = new HashMap<>();
|
private final Map<Class<? extends EventListener>, Object> eventListeners = new HashMap<>();
|
||||||
|
|
||||||
public final void registerListener(Class<? extends EventListener> listenerClass) throws Exception {
|
public void registerListener(Class<? extends EventListener> listenerClass) throws Exception {
|
||||||
if (isListenerRegistered(listenerClass)) return;
|
if (isListenerRegistered(listenerClass)) return;
|
||||||
|
|
||||||
Object instance = listenerClass.getDeclaredConstructor().newInstance();
|
Object instance = listenerClass.getDeclaredConstructor().newInstance();
|
||||||
@@ -37,7 +40,7 @@ public final class EventManager extends DefaultMethodsOverrider {
|
|||||||
eventListeners.put(listenerClass, instance);
|
eventListeners.put(listenerClass, instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized final void unregisterListener(Class<? extends EventListener> listenerClass) {
|
public synchronized void unregisterListener(Class<? extends EventListener> listenerClass) {
|
||||||
if (!isListenerRegistered(listenerClass)) return;
|
if (!isListenerRegistered(listenerClass)) return;
|
||||||
|
|
||||||
Object instance = eventListeners.get(listenerClass);
|
Object instance = eventListeners.get(listenerClass);
|
||||||
@@ -55,11 +58,11 @@ public final class EventManager extends DefaultMethodsOverrider {
|
|||||||
eventListeners.remove(listenerClass);
|
eventListeners.remove(listenerClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean isListenerRegistered(Class<? extends EventListener> listenerClass) {
|
public boolean isListenerRegistered(Class<? extends EventListener> listenerClass) {
|
||||||
return eventListeners.containsKey(listenerClass);
|
return eventListeners.containsKey(listenerClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void executeEvent(Event event) {
|
public void executeEvent(Event event) {
|
||||||
Map<EventPriority, Map<Object, Method>> listenersByPriority = registeredListener.get(event.getClass());
|
Map<EventPriority, Map<Object, Method>> listenersByPriority = registeredListener.get(event.getClass());
|
||||||
if (listenersByPriority == null) return;
|
if (listenersByPriority == null) return;
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.event;
|
package dev.unlegitdqrk.unlegitlibrary.event;
|
||||||
|
|
||||||
public enum EventPriority {
|
public enum EventPriority {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.event;
|
package dev.unlegitdqrk.unlegitlibrary.event;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.event.impl;
|
package dev.unlegitdqrk.unlegitlibrary.event.impl;
|
||||||
|
|
||||||
public class CancellableEvent extends Event {
|
public class CancellableEvent extends Event {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.event.impl;
|
package dev.unlegitdqrk.unlegitlibrary.event.impl;
|
||||||
|
|
||||||
public abstract class Event {
|
public abstract class Event {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.file;
|
package dev.unlegitdqrk.unlegitlibrary.file;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.file;
|
package dev.unlegitdqrk.unlegitlibrary.file;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
@@ -18,39 +17,39 @@ public final class ConfigurationManager extends DefaultMethodsOverrider {
|
|||||||
this.configFile = configFile;
|
this.configFile = configFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean isSet(String key) {
|
public boolean isSet(String key) {
|
||||||
return properties.containsKey(key);
|
return properties.containsKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void loadProperties() throws IOException {
|
public void loadProperties() throws IOException {
|
||||||
try (FileInputStream in = new FileInputStream(configFile)) {
|
try (FileInputStream in = new FileInputStream(configFile)) {
|
||||||
properties.load(in);
|
properties.load(in);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void saveProperties() throws IOException {
|
public void saveProperties() throws IOException {
|
||||||
try (FileOutputStream out = new FileOutputStream(configFile)) {
|
try (FileOutputStream out = new FileOutputStream(configFile)) {
|
||||||
properties.store(out, null);
|
properties.store(out, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final long getLong(String key) {
|
public long getLong(String key) {
|
||||||
return Long.parseLong(properties.getProperty(key));
|
return Long.parseLong(properties.getProperty(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final double getDouble(String key) {
|
public double getDouble(String key) {
|
||||||
return Double.parseDouble(properties.getProperty(key));
|
return Double.parseDouble(properties.getProperty(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final float getFloat(String key) {
|
public float getFloat(String key) {
|
||||||
return Float.parseFloat(properties.getProperty(key));
|
return Float.parseFloat(properties.getProperty(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final int getInt(String key) {
|
public int getInt(String key) {
|
||||||
return Integer.parseInt(properties.getProperty(key));
|
return Integer.parseInt(properties.getProperty(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Object getObject(String key) {
|
public Object getObject(String key) {
|
||||||
return properties.getProperty(key);
|
return properties.getProperty(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,42 +69,42 @@ public final class ConfigurationManager extends DefaultMethodsOverrider {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getString(String key) {
|
public String getString(String key) {
|
||||||
return properties.getProperty(key);
|
return properties.getProperty(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<String> getList(String key) {
|
public List<String> getList(String key) {
|
||||||
String value = properties.getProperty(key);
|
String value = properties.getProperty(key);
|
||||||
|
|
||||||
if (value != null) return Arrays.asList(value.split(","));
|
if (value != null) return Arrays.asList(value.split(","));
|
||||||
else return new ArrayList<>();
|
else return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, long value) {
|
public void set(String key, long value) {
|
||||||
properties.setProperty(key, String.valueOf(value));
|
properties.setProperty(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, int value) {
|
public void set(String key, int value) {
|
||||||
properties.setProperty(key, String.valueOf(value));
|
properties.setProperty(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, double value) {
|
public void set(String key, double value) {
|
||||||
properties.setProperty(key, String.valueOf(value));
|
properties.setProperty(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, float value) {
|
public void set(String key, float value) {
|
||||||
properties.setProperty(key, String.valueOf(value));
|
properties.setProperty(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, Object value) {
|
public void set(String key, Object value) {
|
||||||
properties.setProperty(key, String.valueOf(value));
|
properties.setProperty(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, String value) {
|
public void set(String key, String value) {
|
||||||
properties.setProperty(key, value);
|
properties.setProperty(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, Map<String, String> map) {
|
public void set(String key, Map<String, String> map) {
|
||||||
String value = map.entrySet().stream()
|
String value = map.entrySet().stream()
|
||||||
.map(entry -> entry.getKey() + "=" + entry.getValue())
|
.map(entry -> entry.getKey() + "=" + entry.getValue())
|
||||||
.collect(Collectors.joining(","));
|
.collect(Collectors.joining(","));
|
||||||
@@ -113,7 +112,7 @@ public final class ConfigurationManager extends DefaultMethodsOverrider {
|
|||||||
properties.setProperty(key, value);
|
properties.setProperty(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void set(String key, List<String> list) {
|
public void set(String key, List<String> list) {
|
||||||
String value = list.stream().collect(Collectors.joining(","));
|
String value = list.stream().collect(Collectors.joining(","));
|
||||||
properties.setProperty(key, value);
|
properties.setProperty(key, value);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.file;
|
package dev.unlegitdqrk.unlegitlibrary.file;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.file;
|
package dev.unlegitdqrk.unlegitlibrary.file;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
||||||
@@ -26,13 +25,31 @@ public final class NetworkClient {
|
|||||||
private final EventManager eventManager;
|
private final EventManager eventManager;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private final int timeout;
|
private final int timeout;
|
||||||
|
private final SSLSocketFactory sslSocketFactory;
|
||||||
|
private final SSLParameters sslParameters;
|
||||||
|
private final Proxy proxy;
|
||||||
private SSLSocket socket;
|
private SSLSocket socket;
|
||||||
private ObjectOutputStream outputStream;
|
private ObjectOutputStream outputStream;
|
||||||
private ObjectInputStream inputStream;
|
private ObjectInputStream inputStream;
|
||||||
private final SSLSocketFactory sslSocketFactory;
|
|
||||||
private final SSLParameters sslParameters;
|
|
||||||
private int clientID = -1;
|
private int clientID = -1;
|
||||||
private final Proxy proxy;
|
|
||||||
|
private NetworkClient(String host, int port, PacketHandler packetHandler,
|
||||||
|
EventManager eventManager, Logger logger,
|
||||||
|
int timeout, SSLSocketFactory sslSocketFactory,
|
||||||
|
SSLParameters sslParameters, Proxy proxy) {
|
||||||
|
this.host = host;
|
||||||
|
this.port = port;
|
||||||
|
this.packetHandler = packetHandler;
|
||||||
|
this.eventManager = eventManager;
|
||||||
|
this.logger = logger;
|
||||||
|
this.timeout = timeout;
|
||||||
|
this.sslSocketFactory = sslSocketFactory;
|
||||||
|
this.sslParameters = sslParameters;
|
||||||
|
|
||||||
|
this.packetHandler.setClientInstance(this);
|
||||||
|
this.packetHandler.registerPacket(new ClientIDPacket());
|
||||||
|
this.proxy = proxy;
|
||||||
|
}
|
||||||
|
|
||||||
public Proxy getProxy() {
|
public Proxy getProxy() {
|
||||||
return proxy;
|
return proxy;
|
||||||
@@ -44,9 +61,7 @@ public final class NetworkClient {
|
|||||||
|
|
||||||
public void setClientID(int clientID) {
|
public void setClientID(int clientID) {
|
||||||
if (this.clientID == -1) this.clientID = clientID;
|
if (this.clientID == -1) this.clientID = clientID;
|
||||||
}
|
} private final Thread receiveThread = new Thread(this::receive);
|
||||||
|
|
||||||
private final Thread receiveThread = new Thread(this::receive);
|
|
||||||
|
|
||||||
public PacketHandler getPacketHandler() {
|
public PacketHandler getPacketHandler() {
|
||||||
return packetHandler;
|
return packetHandler;
|
||||||
@@ -80,24 +95,6 @@ public final class NetworkClient {
|
|||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkClient(String host, int port, PacketHandler packetHandler,
|
|
||||||
EventManager eventManager, Logger logger,
|
|
||||||
int timeout, SSLSocketFactory sslSocketFactory,
|
|
||||||
SSLParameters sslParameters, Proxy proxy) {
|
|
||||||
this.host = host;
|
|
||||||
this.port = port;
|
|
||||||
this.packetHandler = packetHandler;
|
|
||||||
this.eventManager = eventManager;
|
|
||||||
this.logger = logger;
|
|
||||||
this.timeout = timeout;
|
|
||||||
this.sslSocketFactory = sslSocketFactory;
|
|
||||||
this.sslParameters = sslParameters;
|
|
||||||
|
|
||||||
this.packetHandler.setClientInstance(this);
|
|
||||||
this.packetHandler.registerPacket(new ClientIDPacket());
|
|
||||||
this.proxy = proxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isConnected() {
|
public boolean isConnected() {
|
||||||
return socket != null && socket.isConnected() && !socket.isClosed()
|
return socket != null && socket.isConnected() && !socket.isClosed()
|
||||||
&& receiveThread.isAlive() && !receiveThread.isInterrupted();
|
&& receiveThread.isAlive() && !receiveThread.isInterrupted();
|
||||||
@@ -110,7 +107,8 @@ public final class NetworkClient {
|
|||||||
else System.out.println("Trying to connect to " + host + ":" + port + "...");
|
else System.out.println("Trying to connect to " + host + ":" + port + "...");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (sslSocketFactory == null) throw new ConnectException("SSL socket factory not set. Client certificate required!");
|
if (sslSocketFactory == null)
|
||||||
|
throw new ConnectException("SSL socket factory not set. Client certificate required!");
|
||||||
|
|
||||||
if (proxy != null) {
|
if (proxy != null) {
|
||||||
Socket rawSocket = new Socket(proxy);
|
Socket rawSocket = new Socket(proxy);
|
||||||
@@ -152,7 +150,9 @@ public final class NetworkClient {
|
|||||||
Object received = inputStream.readObject();
|
Object received = inputStream.readObject();
|
||||||
handleReceived(received);
|
handleReceived(received);
|
||||||
}
|
}
|
||||||
} catch (Exception e) { disconnect(); }
|
} catch (Exception e) {
|
||||||
|
disconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleReceived(Object received) throws IOException, ClassNotFoundException {
|
private void handleReceived(Object received) throws IOException, ClassNotFoundException {
|
||||||
@@ -216,28 +216,6 @@ public final class NetworkClient {
|
|||||||
private File keyFolder;
|
private File keyFolder;
|
||||||
private Proxy proxy;
|
private Proxy proxy;
|
||||||
|
|
||||||
public ClientBuilder setHost(String host) { this.host = host; return this; }
|
|
||||||
public ClientBuilder setPort(int port) { this.port = port; return this; }
|
|
||||||
public ClientBuilder setPacketHandler(PacketHandler handler) { this.packetHandler = handler; return this; }
|
|
||||||
public ClientBuilder setEventManager(EventManager manager) { this.eventManager = manager; return this; }
|
|
||||||
public ClientBuilder setLogger(Logger logger) { this.logger = logger; return this; }
|
|
||||||
public ClientBuilder setTimeout(int timeout) { this.timeout = timeout; return this; }
|
|
||||||
public ClientBuilder setSSLSocketFactory(SSLSocketFactory factory) { this.sslSocketFactory = factory; return this; }
|
|
||||||
public ClientBuilder setSSLParameters(SSLParameters params) { this.sslParameters = params; return this; }
|
|
||||||
public ClientBuilder setRootCAFolder(File folder) { this.caFolder = folder; return this; }
|
|
||||||
public ClientBuilder setClientCertificatesFolder(File clientFolder, File keyFolder) { this.clientFolder = clientFolder; this.keyFolder = keyFolder; return this; }
|
|
||||||
public ClientBuilder setProxy(Proxy proxy) { this.proxy = proxy; return this; }
|
|
||||||
|
|
||||||
public NetworkClient build() {
|
|
||||||
if (sslSocketFactory == null && caFolder != null) {
|
|
||||||
try { sslSocketFactory = createSSLSocketFactory(caFolder, clientFolder, keyFolder); }
|
|
||||||
catch (Exception e) { throw new RuntimeException("Failed to create SSLFactory", e); }
|
|
||||||
}
|
|
||||||
|
|
||||||
return new NetworkClient(host, port, packetHandler, eventManager, logger,
|
|
||||||
timeout, sslSocketFactory, sslParameters, proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SSLSocketFactory createSSLSocketFactory(File caFolder, File clientCertFolder, File clientKeyFolder) throws Exception {
|
public static SSLSocketFactory createSSLSocketFactory(File caFolder, File clientCertFolder, File clientKeyFolder) throws Exception {
|
||||||
// TrustStore (Root-CAs)
|
// TrustStore (Root-CAs)
|
||||||
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
@@ -278,5 +256,76 @@ public final class NetworkClient {
|
|||||||
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
|
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
|
||||||
return sslContext.getSocketFactory();
|
return sslContext.getSocketFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setHost(String host) {
|
||||||
|
this.host = host;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setPort(int port) {
|
||||||
|
this.port = port;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setPacketHandler(PacketHandler handler) {
|
||||||
|
this.packetHandler = handler;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setEventManager(EventManager manager) {
|
||||||
|
this.eventManager = manager;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setLogger(Logger logger) {
|
||||||
|
this.logger = logger;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setTimeout(int timeout) {
|
||||||
|
this.timeout = timeout;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setSSLSocketFactory(SSLSocketFactory factory) {
|
||||||
|
this.sslSocketFactory = factory;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setSSLParameters(SSLParameters params) {
|
||||||
|
this.sslParameters = params;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setRootCAFolder(File folder) {
|
||||||
|
this.caFolder = folder;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setClientCertificatesFolder(File clientFolder, File keyFolder) {
|
||||||
|
this.clientFolder = clientFolder;
|
||||||
|
this.keyFolder = keyFolder;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientBuilder setProxy(Proxy proxy) {
|
||||||
|
this.proxy = proxy;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkClient build() {
|
||||||
|
if (sslSocketFactory == null && caFolder != null) {
|
||||||
|
try {
|
||||||
|
sslSocketFactory = createSSLSocketFactory(caFolder, clientFolder, keyFolder);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Failed to create SSLFactory", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new NetworkClient(host, port, packetHandler, eventManager, logger,
|
||||||
|
timeout, sslSocketFactory, sslParameters, proxy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class C_PacketReceivedEvent extends Event {
|
|||||||
private final NetworkClient networkClient;
|
private final NetworkClient networkClient;
|
||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
public C_PacketReceivedEvent(NetworkClient networkClient, Packet packet) {
|
||||||
|
this.networkClient = networkClient;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkClient getNetworkClient() {
|
public NetworkClient getNetworkClient() {
|
||||||
return networkClient;
|
return networkClient;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class C_PacketReceivedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public C_PacketReceivedEvent(NetworkClient networkClient, Packet packet) {
|
|
||||||
this.networkClient = networkClient;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class C_PacketReceivedFailedEvent extends Event {
|
|||||||
private final NetworkClient networkClient;
|
private final NetworkClient networkClient;
|
||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
public C_PacketReceivedFailedEvent(NetworkClient networkClient, Packet packet) {
|
||||||
|
this.networkClient = networkClient;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkClient getNetworkClient() {
|
public NetworkClient getNetworkClient() {
|
||||||
return networkClient;
|
return networkClient;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class C_PacketReceivedFailedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public C_PacketReceivedFailedEvent(NetworkClient networkClient, Packet packet) {
|
|
||||||
this.networkClient = networkClient;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class C_PacketSendEvent extends Event {
|
|||||||
private final NetworkClient networkClient;
|
private final NetworkClient networkClient;
|
||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
public C_PacketSendEvent(NetworkClient networkClient, Packet packet) {
|
||||||
|
this.networkClient = networkClient;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkClient getNetworkClient() {
|
public NetworkClient getNetworkClient() {
|
||||||
return networkClient;
|
return networkClient;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class C_PacketSendEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public C_PacketSendEvent(NetworkClient networkClient, Packet packet) {
|
|
||||||
this.networkClient = networkClient;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -11,6 +9,11 @@ public final class C_PacketSendFailedEvent extends Event {
|
|||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
|
||||||
|
public C_PacketSendFailedEvent(NetworkClient networkClient, Packet packet) {
|
||||||
|
this.networkClient = networkClient;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkClient getNetworkClient() {
|
public NetworkClient getNetworkClient() {
|
||||||
return networkClient;
|
return networkClient;
|
||||||
}
|
}
|
||||||
@@ -18,9 +21,4 @@ public final class C_PacketSendFailedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public C_PacketSendFailedEvent(NetworkClient networkClient, Packet packet) {
|
|
||||||
this.networkClient = networkClient;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -9,6 +7,11 @@ public final class C_UnknownObjectReceivedEvent extends Event {
|
|||||||
private final NetworkClient networkClient;
|
private final NetworkClient networkClient;
|
||||||
private final Object received;
|
private final Object received;
|
||||||
|
|
||||||
|
public C_UnknownObjectReceivedEvent(NetworkClient networkClient, Object received) {
|
||||||
|
this.networkClient = networkClient;
|
||||||
|
this.received = received;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkClient getNetworkClient() {
|
public NetworkClient getNetworkClient() {
|
||||||
return networkClient;
|
return networkClient;
|
||||||
}
|
}
|
||||||
@@ -16,9 +19,4 @@ public final class C_UnknownObjectReceivedEvent extends Event {
|
|||||||
public Object getReceived() {
|
public Object getReceived() {
|
||||||
return received;
|
return received;
|
||||||
}
|
}
|
||||||
|
|
||||||
public C_UnknownObjectReceivedEvent(NetworkClient networkClient, Object received) {
|
|
||||||
this.networkClient = networkClient;
|
|
||||||
this.received = received;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -9,11 +7,11 @@ public final class ClientConnectedEvent extends Event {
|
|||||||
private final NetworkClient client;
|
private final NetworkClient client;
|
||||||
|
|
||||||
|
|
||||||
public NetworkClient getClient() {
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClientConnectedEvent(NetworkClient client) {
|
public ClientConnectedEvent(NetworkClient client) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NetworkClient getClient() {
|
||||||
|
return client;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.client.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -8,11 +6,11 @@ import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient;
|
|||||||
public final class ClientDisconnectedEvent extends Event {
|
public final class ClientDisconnectedEvent extends Event {
|
||||||
private final NetworkClient client;
|
private final NetworkClient client;
|
||||||
|
|
||||||
public NetworkClient getClient() {
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClientDisconnectedEvent(NetworkClient client) {
|
public ClientDisconnectedEvent(NetworkClient client) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NetworkClient getClient() {
|
||||||
|
return client;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.packets;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.packets;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.packets;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.packets;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient;
|
import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.packets.impl;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.packets.impl;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet;
|
import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet;
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet;
|
import dev.unlegitdqrk.unlegitlibrary.network.system.packets.Packet;
|
||||||
@@ -12,36 +11,16 @@ import java.io.ObjectOutputStream;
|
|||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
|
|
||||||
public final class ConnectionHandler {
|
public final class ConnectionHandler {
|
||||||
|
private final NetworkServer server;
|
||||||
private SSLSocket socket;
|
private SSLSocket socket;
|
||||||
private int clientID;
|
private int clientID;
|
||||||
private ObjectOutputStream outputStream;
|
private ObjectOutputStream outputStream;
|
||||||
private ObjectInputStream inputStream;
|
private ObjectInputStream inputStream;
|
||||||
private final NetworkServer server;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (!(obj instanceof ConnectionHandler target)) return false;
|
|
||||||
return target.getClientID() == clientID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final SSLSocket getSocket() {
|
|
||||||
return socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final ObjectOutputStream getOutputStream() {
|
|
||||||
return outputStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final ObjectInputStream getInputStream() {
|
|
||||||
return inputStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final NetworkServer getServer() {
|
|
||||||
return server;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConnectionHandler(NetworkServer server, SSLSocket socket, int clientID) throws IOException, ClassNotFoundException {
|
public ConnectionHandler(NetworkServer server, SSLSocket socket, int clientID) throws IOException, ClassNotFoundException {
|
||||||
this.server = server; this.socket = socket; this.clientID = clientID;
|
this.server = server;
|
||||||
|
this.socket = socket;
|
||||||
|
this.clientID = clientID;
|
||||||
|
|
||||||
outputStream = new ObjectOutputStream(socket.getOutputStream());
|
outputStream = new ObjectOutputStream(socket.getOutputStream());
|
||||||
inputStream = new ObjectInputStream(socket.getInputStream());
|
inputStream = new ObjectInputStream(socket.getInputStream());
|
||||||
@@ -52,17 +31,50 @@ public final class ConnectionHandler {
|
|||||||
server.getEventManager().executeEvent(new ConnectionHandlerConnectedEvent(this));
|
server.getEventManager().executeEvent(new ConnectionHandlerConnectedEvent(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Thread receiveThread = new Thread(this::receive);
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (!(obj instanceof ConnectionHandler target)) return false;
|
||||||
|
return target.getClientID() == clientID;
|
||||||
|
}
|
||||||
|
|
||||||
public int getClientID() { return clientID; }
|
public SSLSocket getSocket() {
|
||||||
public boolean isConnected() { return socket != null && socket.isConnected() && !socket.isClosed() && receiveThread.isAlive(); }
|
return socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectOutputStream getOutputStream() {
|
||||||
|
return outputStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectInputStream getInputStream() {
|
||||||
|
return inputStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkServer getServer() {
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClientID() {
|
||||||
|
return clientID;
|
||||||
|
} public final Thread receiveThread = new Thread(this::receive);
|
||||||
|
|
||||||
|
public boolean isConnected() {
|
||||||
|
return socket != null && socket.isConnected() && !socket.isClosed() && receiveThread.isAlive();
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized boolean disconnect() {
|
public synchronized boolean disconnect() {
|
||||||
if (!isConnected()) return false;
|
if (!isConnected()) return false;
|
||||||
if (receiveThread.isAlive()) receiveThread.interrupt();
|
if (receiveThread.isAlive()) receiveThread.interrupt();
|
||||||
|
|
||||||
try { outputStream.close(); inputStream.close(); socket.close(); } catch (IOException ignored) {}
|
try {
|
||||||
socket = null; outputStream = null; inputStream = null; clientID = -1;
|
outputStream.close();
|
||||||
|
inputStream.close();
|
||||||
|
socket.close();
|
||||||
|
} catch (IOException ignored) {
|
||||||
|
}
|
||||||
|
socket = null;
|
||||||
|
outputStream = null;
|
||||||
|
inputStream = null;
|
||||||
|
clientID = -1;
|
||||||
|
|
||||||
server.getConnectionHandlers().remove(this);
|
server.getConnectionHandlers().remove(this);
|
||||||
server.getEventManager().executeEvent(new ConnectionHandlerDisconnectedEvent(this));
|
server.getEventManager().executeEvent(new ConnectionHandlerDisconnectedEvent(this));
|
||||||
@@ -90,16 +102,21 @@ public final class ConnectionHandler {
|
|||||||
if (server.getPacketHandler().isPacketIDRegistered(id)) {
|
if (server.getPacketHandler().isPacketIDRegistered(id)) {
|
||||||
Packet packet = server.getPacketHandler().getPacketByID(id);
|
Packet packet = server.getPacketHandler().getPacketByID(id);
|
||||||
|
|
||||||
if (server.getPacketHandler().handlePacket(id, packet, inputStream)) server.getEventManager().executeEvent(new S_PacketReceivedEvent(this, packet));
|
if (server.getPacketHandler().handlePacket(id, packet, inputStream))
|
||||||
|
server.getEventManager().executeEvent(new S_PacketReceivedEvent(this, packet));
|
||||||
else server.getEventManager().executeEvent(new S_PacketReceivedFailedEvent(this, packet));
|
else server.getEventManager().executeEvent(new S_PacketReceivedFailedEvent(this, packet));
|
||||||
} else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(received, this));
|
} else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(received, this));
|
||||||
} else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(received, this));
|
} else server.getEventManager().executeEvent(new S_UnknownObjectReceivedEvent(received, this));
|
||||||
} catch (SocketException se) { disconnect(); }
|
} catch (SocketException se) {
|
||||||
catch (Exception ex) {
|
disconnect();
|
||||||
if (server.getLogger() != null) server.getLogger().exception("Receive thread exception for client " + clientID, ex);
|
} catch (Exception ex) {
|
||||||
|
if (server.getLogger() != null)
|
||||||
|
server.getLogger().exception("Receive thread exception for client " + clientID, ex);
|
||||||
else System.err.println("Receive thread exception for client " + clientID + ": " + ex.getMessage());
|
else System.err.println("Receive thread exception for client " + clientID + ": " + ex.getMessage());
|
||||||
disconnect();
|
disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
import dev.unlegitdqrk.unlegitlibrary.event.EventManager;
|
||||||
@@ -23,18 +22,33 @@ public final class NetworkServer {
|
|||||||
private final EventManager eventManager;
|
private final EventManager eventManager;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private final int timeout;
|
private final int timeout;
|
||||||
private SSLServerSocket serverSocket;
|
|
||||||
private final SSLServerSocketFactory sslServerSocketFactory;
|
private final SSLServerSocketFactory sslServerSocketFactory;
|
||||||
|
|
||||||
private final List<ConnectionHandler> connectionHandlers = new ArrayList<>();
|
private final List<ConnectionHandler> connectionHandlers = new ArrayList<>();
|
||||||
|
private final boolean requireClientCert;
|
||||||
|
private SSLServerSocket serverSocket;
|
||||||
private final Thread incomingThread = new Thread(this::incomingConnections);
|
private final Thread incomingThread = new Thread(this::incomingConnections);
|
||||||
|
|
||||||
public final List<ConnectionHandler> getConnectionHandlers() {
|
private NetworkServer(int port, PacketHandler packetHandler, EventManager eventManager,
|
||||||
|
Logger logger, int timeout, SSLServerSocketFactory factory, boolean requireClientCert) {
|
||||||
|
this.port = port;
|
||||||
|
this.packetHandler = packetHandler;
|
||||||
|
this.eventManager = eventManager;
|
||||||
|
this.logger = logger;
|
||||||
|
this.timeout = timeout;
|
||||||
|
this.sslServerSocketFactory = factory;
|
||||||
|
|
||||||
|
this.packetHandler.setServerInstance(this);
|
||||||
|
this.packetHandler.registerPacket(new ClientIDPacket());
|
||||||
|
this.requireClientCert = requireClientCert;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ConnectionHandler> getConnectionHandlers() {
|
||||||
return connectionHandlers;
|
return connectionHandlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandlerByID(int clientID) {
|
public ConnectionHandler getConnectionHandlerByID(int clientID) {
|
||||||
for (ConnectionHandler connectionHandler : connectionHandlers) if (connectionHandler.getClientID() == clientID) return connectionHandler;
|
for (ConnectionHandler connectionHandler : connectionHandlers)
|
||||||
|
if (connectionHandler.getClientID() == clientID) return connectionHandler;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +58,7 @@ public final class NetworkServer {
|
|||||||
return super.equals(obj);
|
return super.equals(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final int getPort() {
|
public int getPort() {
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,18 +78,6 @@ public final class NetworkServer {
|
|||||||
return eventManager;
|
return eventManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final boolean requireClientCert;
|
|
||||||
|
|
||||||
private NetworkServer(int port, PacketHandler packetHandler, EventManager eventManager,
|
|
||||||
Logger logger, int timeout, SSLServerSocketFactory factory, boolean requireClientCert) {
|
|
||||||
this.port = port; this.packetHandler = packetHandler; this.eventManager = eventManager;
|
|
||||||
this.logger = logger; this.timeout = timeout; this.sslServerSocketFactory = factory;
|
|
||||||
|
|
||||||
this.packetHandler.setServerInstance(this);
|
|
||||||
this.packetHandler.registerPacket(new ClientIDPacket());
|
|
||||||
this.requireClientCert = requireClientCert;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean start() {
|
public boolean start() {
|
||||||
try {
|
try {
|
||||||
serverSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);
|
serverSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);
|
||||||
@@ -86,19 +88,26 @@ public final class NetworkServer {
|
|||||||
if (logger != null) logger.log("Server started on port " + port);
|
if (logger != null) logger.log("Server started on port " + port);
|
||||||
else System.out.println("Server started on port " + port);
|
else System.out.println("Server started on port " + port);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {if (logger != null) logger.exception("Failed to start", e);
|
} catch (Exception e) {
|
||||||
else System.err.println("Failed to start: " + e.getMessage()); return false; }
|
if (logger != null) logger.exception("Failed to start", e);
|
||||||
|
else System.err.println("Failed to start: " + e.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void incomingConnections() {
|
private void incomingConnections() {
|
||||||
try {
|
try {
|
||||||
while (!serverSocket.isClosed()) {
|
while (!serverSocket.isClosed()) {
|
||||||
Socket socket = serverSocket.accept();
|
Socket socket = serverSocket.accept();
|
||||||
if (!(socket instanceof SSLSocket ssl)) { socket.close(); continue; }
|
if (!(socket instanceof SSLSocket ssl)) {
|
||||||
|
socket.close();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ssl.setTcpNoDelay(true);
|
ssl.setTcpNoDelay(true);
|
||||||
ssl.setSoTimeout(timeout);
|
ssl.setSoTimeout(timeout);
|
||||||
try { ssl.startHandshake(); }
|
try {
|
||||||
catch (Exception handshakeEx) {
|
ssl.startHandshake();
|
||||||
|
} catch (Exception handshakeEx) {
|
||||||
if (logger != null) logger.exception("Handshake failed", handshakeEx);
|
if (logger != null) logger.exception("Handshake failed", handshakeEx);
|
||||||
else System.err.println("Handshake failed: " + handshakeEx.getMessage());
|
else System.err.println("Handshake failed: " + handshakeEx.getMessage());
|
||||||
ssl.close();
|
ssl.close();
|
||||||
@@ -107,7 +116,10 @@ public final class NetworkServer {
|
|||||||
|
|
||||||
IncomingConnectionEvent event = new IncomingConnectionEvent(this, ssl);
|
IncomingConnectionEvent event = new IncomingConnectionEvent(this, ssl);
|
||||||
eventManager.executeEvent(event);
|
eventManager.executeEvent(event);
|
||||||
if (event.isCancelled()) { ssl.close(); continue; }
|
if (event.isCancelled()) {
|
||||||
|
ssl.close();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ConnectionHandler connectionHandler = new ConnectionHandler(this, ssl, connectionHandlers.size() + 1);
|
ConnectionHandler connectionHandler = new ConnectionHandler(this, ssl, connectionHandlers.size() + 1);
|
||||||
@@ -117,7 +129,9 @@ public final class NetworkServer {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) { e.printStackTrace(); }
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Builder ---
|
// --- Builder ---
|
||||||
@@ -133,24 +147,6 @@ public final class NetworkServer {
|
|||||||
private File serverCertFile;
|
private File serverCertFile;
|
||||||
private File serverKeyFile;
|
private File serverKeyFile;
|
||||||
|
|
||||||
public ServerBuilder setPort(int port) { this.port = port; return this; }
|
|
||||||
public ServerBuilder setPacketHandler(PacketHandler handler) { this.packetHandler = handler; return this; }
|
|
||||||
public ServerBuilder setEventManager(EventManager manager) { this.eventManager = manager; return this; }
|
|
||||||
public ServerBuilder setLogger(Logger logger) { this.logger = logger; return this; }
|
|
||||||
public ServerBuilder setTimeout(int timeout) { this.timeout = timeout; return this; }
|
|
||||||
public ServerBuilder setSSLServerSocketFactory(SSLServerSocketFactory factory) { this.factory = factory; return this; }
|
|
||||||
public ServerBuilder setRequireClientCertificate(boolean requireClientCertificate) { this.requireClientCert = requireClientCertificate; return this; }
|
|
||||||
public ServerBuilder setRootCAFolder(File folder) { this.caFolder = folder; return this; }
|
|
||||||
public ServerBuilder setServerCertificate(File certFile, File keyFile) { this.serverCertFile = certFile; this.serverKeyFile = keyFile; return this; }
|
|
||||||
|
|
||||||
public NetworkServer build() {
|
|
||||||
if (factory == null && caFolder != null && serverCertFile != null && serverKeyFile != null) {
|
|
||||||
try { factory = createSSLServerSocketFactory(caFolder, serverCertFile, serverKeyFile); }
|
|
||||||
catch (Exception e) { throw new RuntimeException("Failed to create SSLServerSocketFactory", e); }
|
|
||||||
}
|
|
||||||
return new NetworkServer(port, packetHandler, eventManager, logger, timeout, factory, requireClientCert);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SSLServerSocketFactory createSSLServerSocketFactory(File caFolder, File serverCert, File serverKey) throws Exception {
|
public static SSLServerSocketFactory createSSLServerSocketFactory(File caFolder, File serverCert, File serverKey) throws Exception {
|
||||||
// TrustStore (Root-CAs)
|
// TrustStore (Root-CAs)
|
||||||
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
@@ -180,5 +176,62 @@ public final class NetworkServer {
|
|||||||
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
|
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
|
||||||
return sslContext.getServerSocketFactory();
|
return sslContext.getServerSocketFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setPort(int port) {
|
||||||
|
this.port = port;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setPacketHandler(PacketHandler handler) {
|
||||||
|
this.packetHandler = handler;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setEventManager(EventManager manager) {
|
||||||
|
this.eventManager = manager;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setLogger(Logger logger) {
|
||||||
|
this.logger = logger;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setTimeout(int timeout) {
|
||||||
|
this.timeout = timeout;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setSSLServerSocketFactory(SSLServerSocketFactory factory) {
|
||||||
|
this.factory = factory;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setRequireClientCertificate(boolean requireClientCertificate) {
|
||||||
|
this.requireClientCert = requireClientCertificate;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setRootCAFolder(File folder) {
|
||||||
|
this.caFolder = folder;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerBuilder setServerCertificate(File certFile, File keyFile) {
|
||||||
|
this.serverCertFile = certFile;
|
||||||
|
this.serverKeyFile = keyFile;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkServer build() {
|
||||||
|
if (factory == null && caFolder != null && serverCertFile != null && serverKeyFile != null) {
|
||||||
|
try {
|
||||||
|
factory = createSSLServerSocketFactory(caFolder, serverCertFile, serverKeyFile);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Failed to create SSLServerSocketFactory", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new NetworkServer(port, packetHandler, eventManager, logger, timeout, factory, requireClientCert);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -8,11 +6,11 @@ import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler;
|
|||||||
public final class ConnectionHandlerConnectedEvent extends Event {
|
public final class ConnectionHandlerConnectedEvent extends Event {
|
||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
|
||||||
return connectionHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConnectionHandlerConnectedEvent(ConnectionHandler connectionHandler) {
|
public ConnectionHandlerConnectedEvent(ConnectionHandler connectionHandler) {
|
||||||
this.connectionHandler = connectionHandler;
|
this.connectionHandler = connectionHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionHandler getConnectionHandler() {
|
||||||
|
return connectionHandler;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -9,11 +7,11 @@ public final class ConnectionHandlerDisconnectedEvent extends Event {
|
|||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
|
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
|
||||||
return connectionHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConnectionHandlerDisconnectedEvent(ConnectionHandler connectionHandler) {
|
public ConnectionHandlerDisconnectedEvent(ConnectionHandler connectionHandler) {
|
||||||
this.connectionHandler = connectionHandler;
|
this.connectionHandler = connectionHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionHandler getConnectionHandler() {
|
||||||
|
return connectionHandler;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.CancellableEvent;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.CancellableEvent;
|
||||||
@@ -11,6 +9,11 @@ public final class IncomingConnectionEvent extends CancellableEvent {
|
|||||||
private final NetworkServer server;
|
private final NetworkServer server;
|
||||||
private final SSLSocket socket;
|
private final SSLSocket socket;
|
||||||
|
|
||||||
|
public IncomingConnectionEvent(NetworkServer server, SSLSocket socket) {
|
||||||
|
this.server = server;
|
||||||
|
this.socket = socket;
|
||||||
|
}
|
||||||
|
|
||||||
public SSLSocket getSocket() {
|
public SSLSocket getSocket() {
|
||||||
return socket;
|
return socket;
|
||||||
}
|
}
|
||||||
@@ -18,9 +21,4 @@ public final class IncomingConnectionEvent extends CancellableEvent {
|
|||||||
public NetworkServer getServer() {
|
public NetworkServer getServer() {
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IncomingConnectionEvent(NetworkServer server, SSLSocket socket) {
|
|
||||||
this.server = server;
|
|
||||||
this.socket = socket;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class S_PacketReceivedEvent extends Event {
|
|||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
public S_PacketReceivedEvent(ConnectionHandler connectionHandler, Packet packet) {
|
||||||
|
this.connectionHandler = connectionHandler;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
public ConnectionHandler getConnectionHandler() {
|
||||||
return connectionHandler;
|
return connectionHandler;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class S_PacketReceivedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public S_PacketReceivedEvent(ConnectionHandler connectionHandler, Packet packet) {
|
|
||||||
this.connectionHandler = connectionHandler;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class S_PacketReceivedFailedEvent extends Event {
|
|||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
|
|
||||||
|
public S_PacketReceivedFailedEvent(ConnectionHandler connectionHandler, Packet packet) {
|
||||||
|
this.connectionHandler = connectionHandler;
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
public ConnectionHandler getConnectionHandler() {
|
||||||
return connectionHandler;
|
return connectionHandler;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class S_PacketReceivedFailedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public S_PacketReceivedFailedEvent(ConnectionHandler connectionHandler, Packet packet) {
|
|
||||||
this.connectionHandler = connectionHandler;
|
|
||||||
this.packet = packet;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class S_PacketSendEvent extends Event {
|
|||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
|
|
||||||
|
public S_PacketSendEvent(Packet packet, ConnectionHandler connectionHandler) {
|
||||||
|
this.packet = packet;
|
||||||
|
this.connectionHandler = connectionHandler;
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
public ConnectionHandler getConnectionHandler() {
|
||||||
return connectionHandler;
|
return connectionHandler;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class S_PacketSendEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public S_PacketSendEvent(Packet packet, ConnectionHandler connectionHandler) {
|
|
||||||
this.packet = packet;
|
|
||||||
this.connectionHandler = connectionHandler;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class S_PacketSendFailedEvent extends Event {
|
|||||||
private final Packet packet;
|
private final Packet packet;
|
||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
|
|
||||||
|
public S_PacketSendFailedEvent(Packet packet, ConnectionHandler connectionHandler) {
|
||||||
|
this.packet = packet;
|
||||||
|
this.connectionHandler = connectionHandler;
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
public ConnectionHandler getConnectionHandler() {
|
||||||
return connectionHandler;
|
return connectionHandler;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class S_PacketSendFailedEvent extends Event {
|
|||||||
public Packet getPacket() {
|
public Packet getPacket() {
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public S_PacketSendFailedEvent(Packet packet, ConnectionHandler connectionHandler) {
|
|
||||||
this.packet = packet;
|
|
||||||
this.connectionHandler = connectionHandler;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
package dev.unlegitdqrk.unlegitlibrary.network.system.server.events;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
|
||||||
@@ -10,6 +8,11 @@ public final class S_UnknownObjectReceivedEvent extends Event {
|
|||||||
private final Object received;
|
private final Object received;
|
||||||
private final ConnectionHandler connectionHandler;
|
private final ConnectionHandler connectionHandler;
|
||||||
|
|
||||||
|
public S_UnknownObjectReceivedEvent(Object received, ConnectionHandler connectionHandler) {
|
||||||
|
this.received = received;
|
||||||
|
this.connectionHandler = connectionHandler;
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionHandler getConnectionHandler() {
|
public ConnectionHandler getConnectionHandler() {
|
||||||
return connectionHandler;
|
return connectionHandler;
|
||||||
}
|
}
|
||||||
@@ -17,9 +20,4 @@ public final class S_UnknownObjectReceivedEvent extends Event {
|
|||||||
public Object getReceived() {
|
public Object getReceived() {
|
||||||
return received;
|
return received;
|
||||||
}
|
}
|
||||||
|
|
||||||
public S_UnknownObjectReceivedEvent(Object received, ConnectionHandler connectionHandler) {
|
|
||||||
this.received = received;
|
|
||||||
this.connectionHandler = connectionHandler;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
@@ -47,7 +45,7 @@ public class InputStreamUtils extends DefaultMethodsOverrider {
|
|||||||
byteArrayOutputStream.close();
|
byteArrayOutputStream.close();
|
||||||
inputStream.close();
|
inputStream.close();
|
||||||
|
|
||||||
return new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
|
return byteArrayOutputStream.toString(StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void downloadFile(String urlStr, File outputFile) throws IOException {
|
public static void downloadFile(String urlStr, File outputFile) throws IOException {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,14 +1,13 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.security.KeyFactory;
|
import java.security.KeyFactory;
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
|
||||||
import java.security.cert.CertificateFactory;
|
import java.security.cert.CertificateFactory;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
|
||||||
public class PemUtils {
|
public class PemUtils {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
package dev.unlegitdqrk.unlegitlibrary.network.utils;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number;
|
package dev.unlegitdqrk.unlegitlibrary.number;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number;
|
package dev.unlegitdqrk.unlegitlibrary.number;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number;
|
package dev.unlegitdqrk.unlegitlibrary.number;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number;
|
package dev.unlegitdqrk.unlegitlibrary.number;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
||||||
|
|
||||||
public interface BitArray {
|
public interface BitArray {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
||||||
|
|
||||||
public enum BitArrayVersion {
|
public enum BitArrayVersion {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
package dev.unlegitdqrk.unlegitlibrary.number.bit;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
package dev.unlegitdqrk.unlegitlibrary.number.math;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.number.math.vector.Vector2;
|
import dev.unlegitdqrk.unlegitlibrary.number.math.vector.Vector2;
|
||||||
@@ -80,8 +76,7 @@ public class Quaternion {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public final boolean equals(Object obj) {
|
||||||
if (!(obj instanceof Quaternion)) return false;
|
if (!(obj instanceof Quaternion quaternion)) return false;
|
||||||
Quaternion quaternion = (Quaternion) obj;
|
|
||||||
return quaternion.x == x && quaternion.y == y && quaternion.z == z && quaternion.w == w;
|
return quaternion.x == x && quaternion.y == y && quaternion.z == z && quaternion.w == w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math.molecular;
|
package dev.unlegitdqrk.unlegitlibrary.number.math.molecular;
|
||||||
|
|
||||||
public class MolecularAdd {
|
public class MolecularAdd {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math.molecular;
|
package dev.unlegitdqrk.unlegitlibrary.number.math.molecular;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
||||||
|
@@ -1,7 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
||||||
|
|
||||||
public enum Axis {
|
public enum Axis {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
||||||
|
|
||||||
public class Vector2 {
|
public class Vector2 {
|
||||||
@@ -94,8 +92,7 @@ public class Vector2 {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public final boolean equals(Object obj) {
|
||||||
if (!(obj instanceof Vector2)) return false;
|
if (!(obj instanceof Vector2 vector2)) return false;
|
||||||
Vector2 vector2 = (Vector2) obj;
|
|
||||||
return vector2.x == x && vector2.y == y;
|
return vector2.x == x && vector2.y == y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
package dev.unlegitdqrk.unlegitlibrary.number.math.vector;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.number.math.Quaternion;
|
import dev.unlegitdqrk.unlegitlibrary.number.math.Quaternion;
|
||||||
@@ -118,8 +116,7 @@ public class Vector3 {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public final boolean equals(Object obj) {
|
||||||
if (!(obj instanceof Vector3)) return false;
|
if (!(obj instanceof Vector3 vector3)) return false;
|
||||||
Vector3 vector3 = (Vector3) obj;
|
|
||||||
return vector3.x == x && vector3.y == y && vector3.z == z;
|
return vector3.x == x && vector3.y == y && vector3.z == z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.string;
|
package dev.unlegitdqrk.unlegitlibrary.string;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
@@ -12,8 +10,8 @@ import java.util.Random;
|
|||||||
public class RandomString extends DefaultMethodsOverrider {
|
public class RandomString extends DefaultMethodsOverrider {
|
||||||
public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
public static final String lower = upper.toLowerCase(Locale.ROOT);
|
public static final String lower = upper.toLowerCase(Locale.ROOT);
|
||||||
public static final String digits = "0123456789";
|
|
||||||
public static final String alphanum = upper + lower + digits;
|
public static final String alphanum = upper + lower + digits;
|
||||||
|
public static final String digits = "0123456789";
|
||||||
private final Random random;
|
private final Random random;
|
||||||
private final char[] symbols;
|
private final char[] symbols;
|
||||||
private final char[] buf;
|
private final char[] buf;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.string;
|
package dev.unlegitdqrk.unlegitlibrary.string;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
@@ -22,7 +20,7 @@ public class SimpleEncoderDecoder extends DefaultMethodsOverrider {
|
|||||||
private static byte[] keyByte;
|
private static byte[] keyByte;
|
||||||
|
|
||||||
private static void setKey(final EncoderDecoderKeys key) throws NoSuchAlgorithmException {
|
private static void setKey(final EncoderDecoderKeys key) throws NoSuchAlgorithmException {
|
||||||
keyByte = key.getKey().getBytes(StandardCharsets.UTF_8);
|
keyByte = key.key().getBytes(StandardCharsets.UTF_8);
|
||||||
MessageDigest sha = MessageDigest.getInstance("SHA-1");
|
MessageDigest sha = MessageDigest.getInstance("SHA-1");
|
||||||
keyByte = sha.digest(keyByte);
|
keyByte = sha.digest(keyByte);
|
||||||
keyByte = Arrays.copyOf(keyByte, 16);
|
keyByte = Arrays.copyOf(keyByte, 16);
|
||||||
@@ -45,19 +43,10 @@ public class SimpleEncoderDecoder extends DefaultMethodsOverrider {
|
|||||||
return new String(cipher.doFinal(Base64.getDecoder().decode(toDecrypt.toString())));
|
return new String(cipher.doFinal(Base64.getDecoder().decode(toDecrypt.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class EncoderDecoderKeys {
|
public record EncoderDecoderKeys(String key) {
|
||||||
public static final EncoderDecoderKeys BIT_KEY_128 = new EncoderDecoderKeys("Bar12345Bar12345");
|
public static final EncoderDecoderKeys BIT_KEY_128 = new EncoderDecoderKeys("Bar12345Bar12345");
|
||||||
public static final EncoderDecoderKeys DEC1632DDCL542 = new EncoderDecoderKeys("Dec1632DDCL542");
|
public static final EncoderDecoderKeys DEC1632DDCL542 = new EncoderDecoderKeys("Dec1632DDCL542");
|
||||||
public static final EncoderDecoderKeys SSSHHHHHHHHHHH = new EncoderDecoderKeys("ssshhhhhhhhhhh!!!!");
|
public static final EncoderDecoderKeys SSSHHHHHHHHHHH = new EncoderDecoderKeys("ssshhhhhhhhhhh!!!!");
|
||||||
|
|
||||||
private final String key;
|
|
||||||
|
|
||||||
public EncoderDecoderKeys(String key) {
|
|
||||||
this.key = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final String getKey() {
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.string;
|
package dev.unlegitdqrk.unlegitlibrary.string;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.string.color;
|
package dev.unlegitdqrk.unlegitlibrary.string.color;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.string.color;
|
package dev.unlegitdqrk.unlegitlibrary.string.color;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.utils;
|
package dev.unlegitdqrk.unlegitlibrary.utils;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
import dev.unlegitdqrk.unlegitlibrary.number.math.MathHelper;
|
||||||
@@ -21,12 +20,14 @@ public class Color {
|
|||||||
public float green = 1;
|
public float green = 1;
|
||||||
public float blue = 1;
|
public float blue = 1;
|
||||||
public float alpha = 1;
|
public float alpha = 1;
|
||||||
|
|
||||||
public Color(float red, float green, float blue, float alpha) {
|
public Color(float red, float green, float blue, float alpha) {
|
||||||
this.red = MathHelper.clamp_float(red, 0f, 1f);
|
this.red = MathHelper.clamp_float(red, 0f, 1f);
|
||||||
this.green = MathHelper.clamp_float(green, 0f, 1f);
|
this.green = MathHelper.clamp_float(green, 0f, 1f);
|
||||||
this.blue = MathHelper.clamp_float(blue, 0f, 1f);
|
this.blue = MathHelper.clamp_float(blue, 0f, 1f);
|
||||||
this.alpha = MathHelper.clamp_float(alpha, 0f, 1f);
|
this.alpha = MathHelper.clamp_float(alpha, 0f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color(float red, float green, float blue) {
|
public Color(float red, float green, float blue) {
|
||||||
this(red, green, blue, 1);
|
this(red, green, blue, 1);
|
||||||
}
|
}
|
||||||
@@ -51,8 +52,7 @@ public class Color {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean equals(Object obj) {
|
public final boolean equals(Object obj) {
|
||||||
if (!(obj instanceof Color)) return false;
|
if (!(obj instanceof Color equalTo)) return false;
|
||||||
Color equalTo = (Color) obj;
|
|
||||||
return equalTo.alpha == alpha && equalTo.red == red && equalTo.green == green && equalTo.blue == blue;
|
return equalTo.alpha == alpha && equalTo.red == red && equalTo.green == green && equalTo.blue == blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.utils;
|
package dev.unlegitdqrk.unlegitlibrary.utils;
|
||||||
|
|
||||||
public class Converter extends DefaultMethodsOverrider {
|
public class Converter extends DefaultMethodsOverrider {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.utils;
|
package dev.unlegitdqrk.unlegitlibrary.utils;
|
||||||
|
|
||||||
public class DefaultMethodsOverrider {
|
public class DefaultMethodsOverrider {
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.utils;
|
package dev.unlegitdqrk.unlegitlibrary.utils;
|
||||||
|
|
||||||
import dev.unlegitdqrk.unlegitlibrary.file.FileUtils;
|
import dev.unlegitdqrk.unlegitlibrary.file.FileUtils;
|
||||||
@@ -204,15 +203,15 @@ public final class Logger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean isInitialized() {
|
public boolean isInitialized() {
|
||||||
return isInitialized;
|
return isInitialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final File getLatestLogFile() {
|
public File getLatestLogFile() {
|
||||||
return latestLogFile;
|
return latestLogFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final File getLogFolder() {
|
public File getLogFolder() {
|
||||||
return logFolder;
|
return logFolder;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
package dev.unlegitdqrk.unlegitlibrary.utils;
|
package dev.unlegitdqrk.unlegitlibrary.utils;
|
||||||
|
|
||||||
public class Tuple<A, B> extends DefaultMethodsOverrider {
|
public class Tuple<A, B> extends DefaultMethodsOverrider {
|
||||||
|
Reference in New Issue
Block a user