Skip to content

Commit

Permalink
1.1.6
Browse files Browse the repository at this point in the history
  • Loading branch information
jpenilla committed Aug 2, 2020
1 parent 574eca6 commit 2e2fe64
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 14 deletions.
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>xyz.jpenilla</groupId>
<artifactId>MiniMOTD</artifactId>
<version>1.1.5</version>
<version>1.1.6</version>
<packaging>jar</packaging>

<name>MiniMOTD</name>
Expand Down Expand Up @@ -83,8 +83,8 @@

<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>bungeecord-repo</id>
Expand All @@ -106,9 +106,9 @@

<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<groupId>com.destroystokyo.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.16.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
20 changes: 18 additions & 2 deletions src/main/java/xyz/jpenilla/minimotd/spigot/MiniMOTD.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,38 @@
import lombok.Getter;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

public final class MiniMOTD extends JavaPlugin {
@Getter private static MiniMOTD instance;
@Getter private SpigotConfig cfg;
@Getter private PrismaHook prisma;
@Getter private boolean isPaperServer;

@Override
public void onEnable() {
try {
Class.forName("com.destroystokyo.paper.PaperConfig");
isPaperServer = true;
} catch (ClassNotFoundException e) {
isPaperServer = false;
}
instance = this;
if (Bukkit.getPluginManager().isPluginEnabled("Prisma")) {
prisma = new PrismaHook();
}
this.cfg = new SpigotConfig(this);
getServer().getPluginManager().registerEvents(new PingListener(this), this);
getCommand("minimotd").setExecutor(new SpigotCommand(this));
if (isPaperServer) {
getServer().getPluginManager().registerEvents(new PaperPingListener(this), this);
} else {
getServer().getPluginManager().registerEvents(new PingListener(this), this);
}
final PluginCommand command = getCommand("minimotd");
if (command != null) {
command.setExecutor(new SpigotCommand(this));
}

Metrics metrics = new Metrics(this, 8132);
}
}
57 changes: 57 additions & 0 deletions src/main/java/xyz/jpenilla/minimotd/spigot/PaperPingListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package xyz.jpenilla.minimotd.spigot;

import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

import java.util.concurrent.ThreadLocalRandom;

public class PaperPingListener implements Listener {
private final SpigotConfig cfg;
private final LegacyComponentSerializer serializer = LegacyComponentSerializer.builder().hexColors().useUnusualXRepeatedCharacterHexFormat().build();
private final MiniMessage miniMessage = MiniMessage.get();
private final LegacyComponentSerializer legacySerializer = LegacyComponentSerializer.builder().build();

public PaperPingListener(MiniMOTD miniMOTD) {
this.cfg = miniMOTD.getCfg();
}

@EventHandler
public void onPing(PaperServerListPingEvent e) {
int onlinePlayers = e.getNumPlayers();
if (cfg.isFakePlayersEnabled()) {
try {
if (cfg.getFakePlayers().contains(":")) {
final String[] fakePlayers = cfg.getFakePlayers().split(":");
final int start = Integer.parseInt(fakePlayers[0]);
final int end = Integer.parseInt(fakePlayers[1]);
onlinePlayers = onlinePlayers + ThreadLocalRandom.current().nextInt(start, end);
} else if (cfg.getFakePlayers().contains("%")) {
final double factor = 1 + (Double.parseDouble(cfg.getFakePlayers().replace("%", "")) / 100);
onlinePlayers = (int) Math.ceil(factor * onlinePlayers);
} else {
final int addedPlayers = Integer.parseInt(cfg.getFakePlayers());
onlinePlayers = onlinePlayers + addedPlayers;
}
} catch (NumberFormatException ex) {
System.out.println("[MiniMOTD] fakePlayers config incorrect");
}
}
e.setNumPlayers(onlinePlayers);

int maxPlayers = cfg.getAdjustedMaxPlayers(onlinePlayers, e.getMaxPlayers());
e.setMaxPlayers(maxPlayers);

if (cfg.isMotdEnabled()) {
final Component motd = miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers));
if (e.getClient().getProtocolVersion() < 735) {
e.setMotd(legacySerializer.serialize(motd));
} else {
e.setMotd(serializer.serialize(motd));
}
}
}
}
6 changes: 5 additions & 1 deletion src/main/java/xyz/jpenilla/minimotd/spigot/PingListener.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package xyz.jpenilla.minimotd.spigot;

import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.ServerListPingEvent;

public class PingListener implements Listener {
private final SpigotConfig cfg;
private final LegacyComponentSerializer serializer = LegacyComponentSerializer.builder().hexColors().useUnusualXRepeatedCharacterHexFormat().build();
private final MiniMessage miniMessage = MiniMessage.get();

public PingListener(MiniMOTD miniMOTD) {
this.cfg = miniMOTD.getCfg();
Expand All @@ -20,7 +24,7 @@ public void onPing(ServerListPingEvent e) {
e.setMaxPlayers(maxPlayers);

if (cfg.isMotdEnabled()) {
e.setMotd(cfg.getMOTD(onlinePlayers, maxPlayers));
e.setMotd(serializer.serialize(miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers))));
}
}
}
8 changes: 3 additions & 5 deletions src/main/java/xyz/jpenilla/minimotd/spigot/SpigotConfig.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
package xyz.jpenilla.minimotd.spigot;

import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.configuration.file.FileConfiguration;
import xyz.jpenilla.minimotd.common.MiniMOTDConfig;

public class SpigotConfig extends MiniMOTDConfig {
private final MiniMOTD miniMOTD;
private final LegacyComponentSerializer serializer = LegacyComponentSerializer.builder().hexColors().useUnusualXRepeatedCharacterHexFormat().build();
private final MiniMessage miniMessage = MiniMessage.get();

public SpigotConfig(MiniMOTD miniMOTD) {
this.miniMOTD = miniMOTD;
Expand All @@ -28,12 +24,14 @@ public void reload() {
} else {
temp = motd;
}
getMotds().add(serializer.serialize(miniMessage.parse(temp)));
getMotds().add(temp);
}
setMotdEnabled(config.getBoolean(MOTD_ENABLED));
setMaxPlayersEnabled(config.getBoolean(MAX_PLAYERS_ENABLED));
setJustXMoreEnabled(config.getBoolean(JUST_X_MORE_ENABLED));
setMaxPlayers(config.getInt(MAX_PLAYERS));
setXValue(config.getInt(X_VALUE));
setFakePlayersEnabled(config.getBoolean(FAKE_PLAYERS_ENABLED));
setFakePlayers(config.getString(FAKE_PLAYERS));
}
}

0 comments on commit 2e2fe64

Please sign in to comment.