finish up player converter
This commit is contained in:
parent
a5d0613c69
commit
562e8ff014
@ -11,17 +11,26 @@ public class Messages {
|
|||||||
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040
|
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040
|
||||||
&6- &a&lGovindas Limework&6 -
|
&6- &a&lGovindas Limework&6 -
|
||||||
|
|
||||||
&c&oYour connection has failed to authenticate and cracked mode was enabled!
|
&c[&oIssue was detected in your last connection&c]
|
||||||
|
&c&ofailed to authenticate and offline mode (Cracked) was enabled for next 48 Hours!
|
||||||
|
|
||||||
&7&o This could happen because:
|
&7&o This could happen because:
|
||||||
1. Mojang / Microsoft api is down\040\040\040\040\040\040\040\040\040
|
1. Mojang / Microsoft api is down\040\040\040\040\040\040\040\040\040
|
||||||
2. Using cracked minecraft (if you are using cracked Minecraft please relog!)
|
2. Disconnecting when connection to a server faster!
|
||||||
|
3. Using cracked minecraft (if you are using cracked Minecraft please reconnect!
|
||||||
|
|
||||||
&6If this a mistake and you own a Minecraft account\040
|
&6If this a mistake and you own a Minecraft account\040
|
||||||
&cPlease connect to &a&lreset.limework.net\040\040
|
&cPlease connect to &a&lreset.limework.net\040\040
|
||||||
&7&oPro tip: use Direct connection
|
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m""".replace("&", "§");
|
||||||
|
|
||||||
|
public final static String RESET_MESSAGE = """
|
||||||
|
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m
|
||||||
|
&6- &a&lGovindas Limework&6 -
|
||||||
|
|
||||||
|
&aOffline mode has been disabled &l✔
|
||||||
|
&cNow try reconnecting to server now!
|
||||||
|
|
||||||
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m""".replace("&", "§");
|
&2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m &2&m""".replace("&", "§");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,11 @@ public class PlayerNamesUtils {
|
|||||||
if (username.length() >= 16) {
|
if (username.length() >= 16) {
|
||||||
username = username.substring(0, 15);
|
username = username.substring(0, 15);
|
||||||
}
|
}
|
||||||
|
if (configuration.useTheContainMethod() && !username.contains(configuration.getCrackedCharString())) {
|
||||||
|
username = configuration.getCrackedChar() + username;
|
||||||
|
} else if (username.charAt(0) != configuration.getCrackedChar()) {
|
||||||
|
username = configuration.getCrackedChar() + username;
|
||||||
|
}
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,8 @@ public interface Configuration {
|
|||||||
|
|
||||||
AntiBot getAntiBot();
|
AntiBot getAntiBot();
|
||||||
|
|
||||||
|
String getResetDomain();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,5 +5,6 @@
|
|||||||
"simple-anti-bot": {
|
"simple-anti-bot": {
|
||||||
"max-connections": 590,
|
"max-connections": 590,
|
||||||
"reset": 10
|
"reset": 10
|
||||||
}
|
},
|
||||||
|
"reset-domain": "reset.limework.net"
|
||||||
}
|
}
|
@ -8,7 +8,7 @@
|
|||||||
# Warning: if you put more than 1 character it will use the first one and the rest is ignored.
|
# Warning: if you put more than 1 character it will use the first one and the rest is ignored.
|
||||||
default-cracked-char: "-"
|
default-cracked-char: "-"
|
||||||
|
|
||||||
|
# its recommended being true -ham1255
|
||||||
# if the cracked player name is like this
|
# if the cracked player name is like this
|
||||||
# Ham 1255 system will convert it to Ham_1255
|
# Ham 1255 system will convert it to Ham_1255
|
||||||
# Default: true
|
# Default: true
|
||||||
@ -19,13 +19,14 @@ replace-spaces-with-underscore: true
|
|||||||
# I don't recommend using this. -ham1255
|
# I don't recommend using this. -ham1255
|
||||||
# Example:
|
# Example:
|
||||||
# true: when joining it checks the whole username if it has Cracked character or not!
|
# true: when joining it checks the whole username if it has Cracked character or not!
|
||||||
# so Players who has - in middle or else like this:
|
# so Players who have - in middle or else like this:
|
||||||
# [ Ham-1255 Ham1255- Ha-m1255 -Ham1255 ] will work
|
# [ Ham-1255 Ham1255- Ha-m1255 -Ham1255 ] will work
|
||||||
# in java syntax: .contains(DEFAULT_CRACKED_CHAR)
|
# in java syntax: .contains(DEFAULT_CRACKED_CHAR)
|
||||||
# false: when joining it checks the first character if its
|
# false: when joining it checks the first character if its equals default cracked char
|
||||||
|
# in java syntax .chatAt(0) == DEFAULT_CRACKED_CHAR
|
||||||
use-the-contain-method: false
|
use-the-contain-method: false
|
||||||
|
|
||||||
# Just simple anti bot
|
# Just a simple anti bot
|
||||||
# example:
|
# example:
|
||||||
# when a player joins a server it makes request to mojang api which has 600 per 10 minutes
|
# when a player joins a server it makes request to mojang api which has 600 per 10 minutes
|
||||||
# if the server reach's the limits players can no longer join + possibility of getting banned by mojang api for a day!
|
# if the server reach's the limits players can no longer join + possibility of getting banned by mojang api for a day!
|
||||||
|
@ -16,6 +16,7 @@ public class ConfigLoader implements Configuration {
|
|||||||
private final boolean replaceSpacesWithUnderscore;
|
private final boolean replaceSpacesWithUnderscore;
|
||||||
private final boolean useTheContainMethod;
|
private final boolean useTheContainMethod;
|
||||||
private final AntiBot antiBot;
|
private final AntiBot antiBot;
|
||||||
|
private final String resetDomain;
|
||||||
|
|
||||||
public ConfigLoader(File file) throws FileNotFoundException {
|
public ConfigLoader(File file) throws FileNotFoundException {
|
||||||
JsonObject jsonObject = JsonParser.parseReader(new FileReader(file)).getAsJsonObject();
|
JsonObject jsonObject = JsonParser.parseReader(new FileReader(file)).getAsJsonObject();
|
||||||
@ -24,6 +25,7 @@ public class ConfigLoader implements Configuration {
|
|||||||
this.useTheContainMethod = jsonObject.get("use-the-contain-method").getAsBoolean();
|
this.useTheContainMethod = jsonObject.get("use-the-contain-method").getAsBoolean();
|
||||||
JsonObject antiBotJson = jsonObject.getAsJsonObject("simple-anti-bot");
|
JsonObject antiBotJson = jsonObject.getAsJsonObject("simple-anti-bot");
|
||||||
this.antiBot = new AntiBot(antiBotJson.get("max-connections").getAsInt(), antiBotJson.get("reset").getAsLong(), TimeUnit.MINUTES);
|
this.antiBot = new AntiBot(antiBotJson.get("max-connections").getAsInt(), antiBotJson.get("reset").getAsLong(), TimeUnit.MINUTES);
|
||||||
|
this.resetDomain = jsonObject.get("reset-domain").getAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,4 +52,9 @@ public class ConfigLoader implements Configuration {
|
|||||||
public AntiBot getAntiBot() {
|
public AntiBot getAntiBot() {
|
||||||
return this.antiBot;
|
return this.antiBot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getResetDomain() {
|
||||||
|
return this.resetDomain;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package net.limework.gal;
|
package net.limework.gal;
|
||||||
|
|
||||||
|
import com.google.common.cache.Cache;
|
||||||
|
import com.google.common.cache.CacheBuilder;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.velocitypowered.api.event.Continuation;
|
|
||||||
import com.velocitypowered.api.event.PostOrder;
|
import com.velocitypowered.api.event.PostOrder;
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
import com.velocitypowered.api.event.connection.PreLoginEvent;
|
import com.velocitypowered.api.event.connection.PreLoginEvent;
|
||||||
@ -11,21 +12,25 @@ import com.velocitypowered.api.plugin.Plugin;
|
|||||||
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||||
import com.velocitypowered.api.proxy.ProxyServer;
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
import com.velocitypowered.api.util.GameProfile;
|
import com.velocitypowered.api.util.GameProfile;
|
||||||
import net.limework.gal.utils.config.Configuration;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.limework.gal.utils.Messages;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import static net.limework.gal.utils.PlayerUUIDUtils.*;
|
import static net.limework.gal.utils.PlayerUUIDUtils.*;
|
||||||
import static net.limework.gal.utils.PlayerNamesUtils.*;
|
import static net.limework.gal.utils.PlayerNamesUtils.*;
|
||||||
|
|
||||||
@Plugin(name = "GreenAppleLogin", id = "greenapplelogin", version = "1.0.0", description = "Plugin that handle cracked + premium")
|
@Plugin(name = "GreenAppleLogin", id = "greenapplelogin", version = "1.0.0", description = "Plugin that handle cracked + premium")
|
||||||
public class VelocityGalPlugin {
|
public class VelocityGalPlugin {
|
||||||
|
|
||||||
@ -33,13 +38,27 @@ public class VelocityGalPlugin {
|
|||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private final File dataFolder;
|
private final File dataFolder;
|
||||||
private final ConfigLoader config;
|
private final ConfigLoader config;
|
||||||
|
private final Cache<String, Long> secondAttemptAsCrackedCache;
|
||||||
|
private final Cache<String, Object> offlineModePlayers;
|
||||||
|
private final Cache<String, Object> showFailedMessage;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public VelocityGalPlugin(ProxyServer proxyServer, Logger logger, @DataDirectory Path dataDirectory) {
|
public VelocityGalPlugin(ProxyServer proxyServer, Logger logger, @DataDirectory Path dataDirectory) {
|
||||||
this.proxyServer = proxyServer;
|
this.proxyServer = proxyServer;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.dataFolder = dataDirectory.toFile();
|
this.dataFolder = dataDirectory.toFile();
|
||||||
|
this.showFailedMessage = CacheBuilder.newBuilder()
|
||||||
|
.maximumSize(4000)
|
||||||
|
.expireAfterWrite(10, TimeUnit.MINUTES)
|
||||||
|
.build();
|
||||||
|
this.offlineModePlayers = CacheBuilder.newBuilder()
|
||||||
|
.maximumSize(4000)
|
||||||
|
.expireAfterWrite(48, TimeUnit.HOURS)
|
||||||
|
.build();
|
||||||
|
this.secondAttemptAsCrackedCache = CacheBuilder.newBuilder()
|
||||||
|
.maximumSize(4000)
|
||||||
|
.expireAfterWrite(10, TimeUnit.MINUTES)
|
||||||
|
.build();
|
||||||
if (this.dataFolder.mkdir()) {
|
if (this.dataFolder.mkdir()) {
|
||||||
getLogger().info("Created Plugin data folder.");
|
getLogger().info("Created Plugin data folder.");
|
||||||
}
|
}
|
||||||
@ -58,7 +77,6 @@ public class VelocityGalPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@ -68,15 +86,35 @@ public class VelocityGalPlugin {
|
|||||||
|
|
||||||
@Subscribe(order = PostOrder.FIRST)
|
@Subscribe(order = PostOrder.FIRST)
|
||||||
public void onPreLoginEvent(PreLoginEvent event) {
|
public void onPreLoginEvent(PreLoginEvent event) {
|
||||||
if (isCrackedPlayer(event.getUsername(), config)){
|
if (event.getConnection().getVirtualHost().get().getHostName().toLowerCase(Locale.ROOT).equals(config.getResetDomain())) {
|
||||||
|
secondAttemptAsCrackedCache.invalidate(event.getUsername() + event.getConnection().getRemoteAddress().getHostName());
|
||||||
|
showFailedMessage.invalidate(event.getUsername() + event.getConnection().getRemoteAddress().getHostName());
|
||||||
|
offlineModePlayers.invalidate(event.getUsername() + event.getConnection().getRemoteAddress().getHostName());
|
||||||
|
event.setResult(PreLoginEvent.PreLoginComponentResult.denied(Component.text(Messages.RESET_MESSAGE)));
|
||||||
|
} else if (isCrackedPlayer(event.getUsername(), config)) {
|
||||||
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOfflineMode());
|
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOfflineMode());
|
||||||
}else {
|
} else if (offlineModePlayers.getIfPresent(event.getUsername() + event.getConnection().getRemoteAddress().getHostName()) != null) {
|
||||||
|
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOfflineMode());
|
||||||
|
} else {
|
||||||
|
if (secondAttemptAsCrackedCache.getIfPresent(event.getUsername() + event.getConnection().getRemoteAddress().getHostName()) != null) {
|
||||||
|
if (showFailedMessage.getIfPresent(event.getUsername() + event.getConnection().getRemoteAddress().getHostName()) == null
|
||||||
|
&& offlineModePlayers.getIfPresent(event.getUsername() + event.getConnection().getRemoteAddress().getHostName()) == null) {
|
||||||
|
showFailedMessage.put(event.getUsername() + event.getConnection().getRemoteAddress().getHostName(), new Object());
|
||||||
|
offlineModePlayers.put(event.getUsername() + event.getConnection().getRemoteAddress().getHostName(), new Object());
|
||||||
|
event.setResult(PreLoginEvent.PreLoginComponentResult.denied(Component.text(Messages.FAILED_CONNECTION)));
|
||||||
|
} else {
|
||||||
|
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOfflineMode());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
secondAttemptAsCrackedCache.put(event.getUsername() + event.getConnection().getRemoteAddress().getHostName(), System.currentTimeMillis());
|
||||||
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOnlineMode());
|
event.setResult(PreLoginEvent.PreLoginComponentResult.forceOnlineMode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onGameProfileRequestEvent(GameProfileRequestEvent event) {
|
public void onGameProfileRequestEvent(GameProfileRequestEvent event) {
|
||||||
|
secondAttemptAsCrackedCache.invalidate(event.getUsername() + event.getConnection().getRemoteAddress().getHostName());
|
||||||
if (!event.isOnlineMode()) {
|
if (!event.isOnlineMode()) {
|
||||||
logger.info("handling " + event.getUsername());
|
logger.info("handling " + event.getUsername());
|
||||||
String username = getCorrectCrackedUsername(event.getUsername(), config);
|
String username = getCorrectCrackedUsername(event.getUsername(), config);
|
||||||
|
Loading…
Reference in New Issue
Block a user