Skip to content
This repository has been archived by the owner on Nov 23, 2020. It is now read-only.

v3.1.0 RELEASE #8

Merged
merged 24 commits into from
Feb 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
05150b9
Small fixes
jonahseguin Dec 4, 2019
f07eb64
Fixes to termination saving and some debug messages + other small imp…
jonahseguin Dec 6, 2019
198728f
Final stuff
jonahseguin Dec 10, 2019
4d41ddd
Major fixes to handshake system and profile loading/networking
jonahseguin Dec 18, 2019
7a3ac7c
Add handshake timeout threshold bypass
jonahseguin Dec 20, 2019
c475eba
Last for 3.0.0
jonahseguin Dec 23, 2019
70f91b7
Start of 3.1.0
jonahseguin Dec 23, 2019
58d020a
3.1.0: lettuce.io, remove sync service, remove handshake service, use…
jonahseguin Dec 24, 2019
2ca0231
remove prepareUpdate functions, replaced by Cache#pushUpdate
jonahseguin Dec 24, 2019
53668cb
Update redis db config
jonahseguin Dec 24, 2019
245a03a
New profile updater system to allow editing profiles that might be on…
jonahseguin Dec 25, 2019
d21e0a7
Make the updater only apply to Payloads that are already in the cache
jonahseguin Dec 25, 2019
db6ac95
Add an option to force payloads to be cached (even if not cached) for…
jonahseguin Dec 25, 2019
87876fa
Merge branch 'master' of github.com:jonahseguin/Payload into dev
jonahseguin Dec 25, 2019
66571fe
Merge branch 'dev' of github.com:jonahseguin/Payload into dev
jonahseguin Dec 25, 2019
f7a3c5e
Debug toggling is now cache-specific
jonahseguin Jan 3, 2020
cc4b826
Merge branch 'dev' of github.com:jonahseguin/Payload into dev
jonahseguin Jan 6, 2020
d6fe829
Fixes to subscribers
jonahseguin Jan 14, 2020
921bd04
Merge branch 'dev' of github.com:jonahseguin/Payload into dev
jonahseguin Jan 14, 2020
aa29ba8
Make updater return success properly on shutdown
jonahseguin Jan 16, 2020
6556a5f
Also fix ProfileUpdater
jonahseguin Jan 16, 2020
92567af
HandlerList methods for events
jonahseguin Jan 26, 2020
c784213
Call profile events before uninit
jonahseguin Jan 26, 2020
6be0577
Memory optimization in Object Controller via Weak References
jonahseguin Feb 11, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<groupId>com.jonahseguin</groupId>
<artifactId>Payload</artifactId>
<version>3.0.0</version>
<version>3.1.0</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down Expand Up @@ -41,7 +41,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>3.5</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
Expand All @@ -50,7 +50,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
Expand All @@ -59,6 +59,14 @@
</goals>
</execution>
</executions>
<configuration>
<relocations>
<relocation>
<pattern>com.google.common</pattern>
<shadedPattern>shaded.com.google.common</shadedPattern>
</relocation>
</relocations>
</configuration>
</plugin>
</plugins>
</build>
Expand All @@ -80,7 +88,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand All @@ -102,10 +110,9 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
<type>jar</type>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>5.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand All @@ -126,13 +133,6 @@
<version>4.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.jonahseguin</groupId>
<artifactId>lang</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>

</dependencies>

<distributionManagement>
Expand Down
33 changes: 6 additions & 27 deletions src/main/java/com/jonahseguin/payload/PayloadAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import com.google.common.base.Preconditions;
import com.jonahseguin.payload.base.Cache;
import com.jonahseguin.payload.base.PayloadCache;
import com.jonahseguin.payload.base.handshake.HandshakeService;
import com.jonahseguin.payload.base.network.NetworkPayload;
import com.jonahseguin.payload.base.type.Payload;
import com.jonahseguin.payload.database.DatabaseModule;
import com.jonahseguin.payload.database.PayloadDatabase;
Expand All @@ -31,7 +29,6 @@ public class PayloadAPI {
private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap<>();
private final ConcurrentMap<String, PayloadDatabase> databases = new ConcurrentHashMap<>();
private final ConcurrentMap<String, ServerService> serverServices = new ConcurrentHashMap<>();
private final ConcurrentMap<String, HandshakeService> handshakeServices = new ConcurrentHashMap<>();
private final Set<String> requested = new HashSet<>();

private List<Cache> _sortedCaches = null;
Expand Down Expand Up @@ -105,33 +102,17 @@ public void registerServerService(ServerService serverService) {
}
}

public boolean isHandshakeServiceRegistered(String name) {
return this.handshakeServices.containsKey(name.toLowerCase());
}

public HandshakeService getHandshakeService(String name) {
return this.handshakeServices.get(name.toLowerCase());
}

public void registerHandshakeService(HandshakeService handshakeService) {
if (!isHandshakeServiceRegistered(handshakeService.getName())) {
this.handshakeServices.put(handshakeService.getName(), handshakeService);
} else {
throw new IllegalArgumentException("A Payload Server Service (database) with the name '" + handshakeService.getName() + "' has already been registered. Choose a different name.");
}
}


/**
* Get a cache by name
*
* @param name Name of the cache
* @param <K> Key type (i.e String for uuid)
* @param <X> Value type (object to cache; i.e Profile)
* @param <K> Key type (i.e String for uuid)
* @param <X> Value type (object to cache; i.e Profile)
* @return The Cache
*/
@SuppressWarnings("unchecked") // bad, oops
public <K, X extends Payload<K>, N extends NetworkPayload<K>> Cache<K, X, N> getCache(String name) {
return (Cache<K, X, N>) this.caches.get(convertCacheName(name));
public <K, X extends Payload<K>> Cache<K, X> getCache(String name) {
return (Cache<K, X>) this.caches.get(convertCacheName(name));
}

public Cache getCacheRaw(String name) {
Expand Down Expand Up @@ -178,9 +159,7 @@ public void setPayloadID(String name) {
for (Cache cache : getCaches().values()) {
cache.updatePayloadID();
}
for (PayloadDatabase database : getDatabases().values()) {
database.getServerService().getPublisher().publishUpdateName(oldName, name);
}
serverServices.values().forEach(s -> s.getPublisher().publishUpdateName(oldName, name));
} else {
throw new IllegalArgumentException("Payload ID must be alphanumeric, '" + name + "' is not valid.");
}
Expand Down
17 changes: 2 additions & 15 deletions src/main/java/com/jonahseguin/payload/PayloadLocal.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@

package com.jonahseguin.payload;

import com.jonahseguin.lang.LangDefinitions;
import com.jonahseguin.lang.LangModule;
import com.jonahseguin.payload.base.PayloadPermission;
import lombok.Getter;
import lombok.Setter;
Expand All @@ -26,7 +24,7 @@
*/
@Getter
@Setter
public class PayloadLocal implements LangModule {
public class PayloadLocal {

private final PayloadPlugin plugin;
private String payloadID = null;
Expand All @@ -39,16 +37,6 @@ public class PayloadLocal implements LangModule {
this.plugin = plugin;
}

@Override
public void define(LangDefinitions l) {
l.define("loading-failed", "&cFailed to load payload.yml file, necessary for Payload to function.");
}

@Override
public String langModule() {
return "local";
}

public String getPayloadID() {
return payloadID;
}
Expand Down Expand Up @@ -134,8 +122,7 @@ public boolean isFirstStartup() {
}

private void handleError() {
plugin.setLocked(true); // Lock server
plugin.alert(PayloadPermission.ADMIN, langModule(), "loading-failed"); // Alert online staff if any + console
plugin.alert(PayloadPermission.ADMIN, "&cFailed to load payload.yml file, necessary for Payload to function."); // Alert online staff if any + console
}

}
5 changes: 2 additions & 3 deletions src/main/java/com/jonahseguin/payload/PayloadModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
import com.google.inject.Singleton;
import com.jonahseguin.payload.base.CacheService;
import com.jonahseguin.payload.base.DatabaseCacheService;
import com.jonahseguin.payload.base.lang.LangService;
import com.jonahseguin.payload.base.lang.PayloadLangService;
import com.jonahseguin.payload.base.lang.PLangService;
import com.jonahseguin.payload.base.lifecycle.LifecycleService;
import com.jonahseguin.payload.base.lifecycle.PluginLifecycleService;
import com.jonahseguin.payload.base.uuid.UUIDService;
Expand Down Expand Up @@ -40,7 +39,7 @@ protected void configure() {
bind(PayloadAPI.class).toInstance(payloadPlugin.getApi());
bind(PayloadPlugin.class).toInstance(payloadPlugin);
bind(PayloadLocal.class).toInstance(payloadPlugin.getLocal());
bind(LangService.class).to(PayloadLangService.class);
bind(PLangService.class).toInstance(payloadPlugin.getLang());

bind(Plugin.class).toInstance(plugin);
bind(JavaPlugin.class).toInstance(plugin);
Expand Down
63 changes: 8 additions & 55 deletions src/main/java/com/jonahseguin/payload/PayloadPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,15 @@
import com.google.inject.Singleton;
import com.google.inject.Stage;
import com.jonahseguin.payload.base.PayloadPermission;
import com.jonahseguin.payload.base.lang.LangService;
import com.jonahseguin.payload.base.lang.PayloadLangService;
import com.jonahseguin.payload.base.listener.LockListener;
import com.jonahseguin.payload.base.lang.PLangService;
import com.jonahseguin.payload.command.PCommandHandler;
import com.jonahseguin.payload.mode.profile.listener.ProfileListener;
import lombok.Getter;
import org.bukkit.ChatColor;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;

/**
* Created by Jonah on 11/16/2017.
Expand All @@ -39,10 +35,9 @@ public class PayloadPlugin extends JavaPlugin {
private final PayloadAPI api = new PayloadAPI(this);
private static PayloadPlugin plugin = null;
private Injector injector = null;
private boolean locked = false;
private PayloadLocal local = new PayloadLocal(this);
private final PayloadLocal local = new PayloadLocal(this);
private PCommandHandler commandHandler;
private LangService lang;
private PLangService lang;

/**
* Format a string with arguments
Expand All @@ -56,7 +51,7 @@ public static String format(String s, Object... args) {
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
if (s.contains("{" + i + "}")) {
s = s.replace("{" + i + "}", args[i].toString());
s = s.replace("{" + i + "}", args[i] != null ? args[i].toString() : "null");
}
}
}
Expand Down Expand Up @@ -93,51 +88,17 @@ public void onEnable() {
this.getLogger().info("This is the first startup for Payload on this server instance. Files created.");
}

this.lang = new PLangService(this);

injector = Guice.createInjector(Stage.PRODUCTION, PayloadAPI.install(this, "PayloadDatabase"));

lang = new PayloadLangService(this);
commandHandler = new PCommandHandler(this, lang, injector);

this.getServer().getPluginManager().registerEvents(injector.getInstance(LockListener.class), this);
this.getServer().getPluginManager().registerEvents(injector.getInstance(ProfileListener.class), this);
this.getCommand("payload").setExecutor(this.commandHandler);
this.getLogger().info(PayloadPlugin.format("Payload v{0} by Jonah Seguin enabled.", getDescription().getVersion()));
}

/**
* Get the simple IP address from an {@link InetAddress}
* @param inetAddress The InetAddress
* @return The simple IP in {@link String} form
*/
public static String getIP(InetAddress inetAddress) {
return inetAddress.toString().split("/")[1];
}

/**
* Run a task async. via Bukkit scheduler
* @param plugin {@link JavaPlugin} to run via
* @param runnable What to run
*/
public static void runASync(Plugin plugin, Runnable runnable) {
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, runnable);
}

/**
* Whether to globally lock the server from players joining that don't have the bypass permission
* @return Locked
*/
public boolean isLocked() {
return locked;
}

/**
* Change the status of server join lock
* @param locked is it locked?
*/
public void setLocked(boolean locked) {
this.locked = locked;
}

/**
* Get the Local ID handler for this Payload instance on a specific server instance
* The {@link PayloadLocal} instance can be used to get the unique ID for this server.
Expand All @@ -157,6 +118,8 @@ public boolean isDebug() {

@Override
public void onDisable() {
lang.load();
lang.save();
this.getLogger().info(PayloadPlugin.format("Payload v{0} by Jonah Seguin disabled.", getDescription().getVersion()));
plugin = null;
}
Expand All @@ -171,10 +134,6 @@ public PCommandHandler getCommandHandler() {
return commandHandler;
}

public ClassLoader getPayloadClassLoader() {
return this.getClassLoader();
}

public void setDebug(boolean debug) {
this.local.setDebug(debug);
this.local.getConfig().set("debug", debug);
Expand All @@ -188,12 +147,6 @@ public void setDebug(boolean debug) {
}
}

public void alert(PayloadPermission permission, String module, String key, Object... args) {
String l = lang.get(module, key, args);
getLogger().info(l);
getServer().getOnlinePlayers().stream().filter(p -> p.hasPermission(permission.getPermission())).forEach(p -> p.sendMessage(l));
}

public void alert(PayloadPermission permission, String msg) {
getLogger().info(msg);
getServer().getOnlinePlayers().stream().filter(p -> p.hasPermission(permission.getPermission())).forEach(p -> p.sendMessage(msg));
Expand Down
Loading