mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
work it work it
This commit is contained in:
@@ -1,302 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Thu, 8 Aug 2019 15:29:15 -0500
|
|
||||||
Subject: [PATCH] AFK API
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
|
||||||
index 75bcfb3a2b4a104aeebb2fe3298714b2e5b569d2..0130b0329691f696107a4d1e6a01043b59077000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
|
|
||||||
@@ -1913,8 +1913,54 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
||||||
|
|
||||||
public void resetIdleTimer() {
|
|
||||||
this.ca = SystemUtils.getMonotonicMillis();
|
|
||||||
+ setAfk(false); // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ private boolean isAfk = false;
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void setAfk(boolean setAfk) {
|
|
||||||
+ if (this.isAfk == setAfk) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ String msg = setAfk ? net.pl3x.purpur.PurpurConfig.afkBroadcastAway : net.pl3x.purpur.PurpurConfig.afkBroadcastBack;
|
|
||||||
+
|
|
||||||
+ net.pl3x.purpur.event.PlayerAFKEvent event = new net.pl3x.purpur.event.PlayerAFKEvent(getBukkitEntity(), setAfk, world.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread());
|
|
||||||
+ if (!event.callEvent() || event.shouldKick()) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.isAfk = setAfk;
|
|
||||||
+
|
|
||||||
+ if (!setAfk) {
|
|
||||||
+ resetIdleTimer();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ msg = event.getBroadcastMsg();
|
|
||||||
+ if (msg != null && !msg.isEmpty()) {
|
|
||||||
+ server.getPlayerList().sendMessage(org.bukkit.craftbukkit.util.CraftChatMessage.fromStringOrNull(String.format(msg, getProfile().getName())));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (world.purpurConfig.idleTimeoutUpdateTabList) {
|
|
||||||
+ getBukkitEntity().setPlayerListName((setAfk ? net.pl3x.purpur.PurpurConfig.afkTabListPrefix : "") + getName());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ((WorldServer) world).everyoneSleeping();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public boolean isAfk() {
|
|
||||||
+ return isAfk;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public boolean isCollidable() {
|
|
||||||
+ return !isAfk() && super.isCollidable();
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
public ServerStatisticManager getStatisticManager() {
|
|
||||||
return this.serverStatisticManager;
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
|
|
||||||
index f68a252378a94c8fcab622d2d89d738aceab45a4..27c471c94312f10c4357ec87ccc96b5b2bca11f4 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
|
|
||||||
@@ -546,7 +546,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> {
|
|
||||||
- return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping; // CraftBukkit
|
|
||||||
+ return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping && !(purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk()); // CraftBukkit // Purpur
|
|
||||||
})) {
|
|
||||||
// CraftBukkit start
|
|
||||||
long l = this.worldData.getDayTime() + 24000L;
|
|
||||||
@@ -866,7 +866,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
|
|
||||||
|
|
||||||
- if (entityplayer.isSpectator() || (entityplayer.fauxSleeping && !entityplayer.isSleeping())) { // CraftBukkit
|
|
||||||
+ if (entityplayer.isSpectator() || (entityplayer.fauxSleeping && !entityplayer.isSleeping()) || (purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk())) { // CraftBukkit // Purpur
|
|
||||||
++i;
|
|
||||||
} else if (entityplayer.isSleeping()) {
|
|
||||||
++j;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java
|
|
||||||
index 4001078e2a408dfd5a93c21f55a58c1fde32abbb..d228d07ee4febfdc931da5e142825f314f0a8848 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/PlayerConnection.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java
|
|
||||||
@@ -399,6 +399,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.player.F() > 0L && this.minecraftServer.getIdleTimeout() > 0 && SystemUtils.getMonotonicMillis() - this.player.F() > (long) (this.minecraftServer.getIdleTimeout() * 1000 * 60)) {
|
|
||||||
+ // Purpur start
|
|
||||||
+ this.player.setAfk(true);
|
|
||||||
+ if (!this.player.world.purpurConfig.idleTimeoutKick) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
this.player.resetIdleTimer(); // CraftBukkit - SPIGOT-854
|
|
||||||
this.disconnect(new ChatMessage("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
|
|
||||||
}
|
|
||||||
@@ -663,6 +669,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
||||||
this.lastYaw = to.getYaw();
|
|
||||||
this.lastPitch = to.getPitch();
|
|
||||||
|
|
||||||
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetIdleTimer(); // Purpur
|
|
||||||
+
|
|
||||||
// Skip the first time we do this
|
|
||||||
if (true) { // Spigot - don't skip any move events
|
|
||||||
Location oldTo = to.clone();
|
|
||||||
@@ -1378,7 +1386,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
||||||
|
|
||||||
if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot
|
|
||||||
flag1 = true;
|
|
||||||
- PlayerConnection.LOGGER.warn("{} moved wrongly!", this.player.getDisplayName().getString());
|
|
||||||
+ PlayerConnection.LOGGER.warn("{} moved wrongly! ({})", this.player.getDisplayName().getString(), d11); // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
this.player.setLocation(d4, d5, d6, f, f1);
|
|
||||||
@@ -1417,6 +1425,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
||||||
this.lastYaw = to.getYaw();
|
|
||||||
this.lastPitch = to.getPitch();
|
|
||||||
|
|
||||||
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetIdleTimer(); // Purpur
|
|
||||||
+
|
|
||||||
// Skip the first time we do this
|
|
||||||
if (from.getX() != Double.MAX_VALUE) {
|
|
||||||
Location oldTo = to.clone();
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/IEntitySelector.java b/src/main/java/net/minecraft/world/entity/IEntitySelector.java
|
|
||||||
index f5e32faeb6d937cf90b1f3ea251b5cfc91f2338d..f9908fb7cc27a8947030c2100dccf1dc1a4e24f7 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/IEntitySelector.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/IEntitySelector.java
|
|
||||||
@@ -15,6 +15,7 @@ import net.minecraft.world.scores.ScoreboardTeamBase;
|
|
||||||
public final class IEntitySelector {
|
|
||||||
|
|
||||||
public static final Predicate<Entity> a = Entity::isAlive;
|
|
||||||
+ public static Predicate<EntityLiving> isLivingAlive() { return b; } // Purpur - OBFHELPER
|
|
||||||
public static final Predicate<EntityLiving> b = EntityLiving::isAlive;
|
|
||||||
public static final Predicate<Entity> c = (entity) -> {
|
|
||||||
return entity.isAlive() && !entity.isVehicle() && !entity.isPassenger();
|
|
||||||
@@ -35,6 +36,7 @@ public final class IEntitySelector {
|
|
||||||
return !entity.isSpectator();
|
|
||||||
};
|
|
||||||
public static Predicate<EntityHuman> isInsomniac = (player) -> MathHelper.clamp(((EntityPlayer) player).getStatisticManager().getStatisticValue(StatisticList.CUSTOM.get(StatisticList.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= 72000; // Paper
|
|
||||||
+ public static Predicate<EntityHuman> notAfk = (player) -> !player.isAfk(); // Purpur
|
|
||||||
|
|
||||||
// Paper start
|
|
||||||
public static final Predicate<Entity> affectsSpawning = (entity) -> {
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
||||||
index c39c50e53549e9cb9d3520bc7e8b7e89cfa20163..1d4021049bba4b8b23cf40d252ba2dd0b55c15ae 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
||||||
@@ -181,6 +181,15 @@ public abstract class EntityHuman extends EntityLiving {
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ public void setAfk(boolean setAfk){
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean isAfk() {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
public EntityHuman(World world, BlockPosition blockposition, float f, GameProfile gameprofile) {
|
|
||||||
super(EntityTypes.PLAYER, world);
|
|
||||||
this.bL = ItemStack.b;
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/IEntityAccess.java b/src/main/java/net/minecraft/world/level/IEntityAccess.java
|
|
||||||
index 1ff9e771788a4ab52129070e355ca48df2949470..d7fc4756d14ed0360c6fb09048dc0052d1e61a1f 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/IEntityAccess.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/IEntityAccess.java
|
|
||||||
@@ -173,28 +173,18 @@ public interface IEntityAccess {
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
|
|
||||||
- default boolean isPlayerNearby(double d0, double d1, double d2, double d3) {
|
|
||||||
- Iterator iterator = this.getPlayers().iterator();
|
|
||||||
-
|
|
||||||
- double d4;
|
|
||||||
-
|
|
||||||
- do {
|
|
||||||
- EntityHuman entityhuman;
|
|
||||||
-
|
|
||||||
- do {
|
|
||||||
- do {
|
|
||||||
- if (!iterator.hasNext()) {
|
|
||||||
- return false;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- entityhuman = (EntityHuman) iterator.next();
|
|
||||||
- } while (!IEntitySelector.g.test(entityhuman));
|
|
||||||
- } while (!IEntitySelector.b.test(entityhuman));
|
|
||||||
-
|
|
||||||
- d4 = entityhuman.h(d0, d1, d2);
|
|
||||||
- } while (d3 >= 0.0D && d4 >= d3 * d3);
|
|
||||||
-
|
|
||||||
- return true;
|
|
||||||
+ // Purpur start
|
|
||||||
+ default boolean isPlayerNearby(double x, double y, double z, double distance) {
|
|
||||||
+ double distanceSq = distance * distance;
|
|
||||||
+ for (EntityHuman player : getPlayers()) {
|
|
||||||
+ if (IEntitySelector.notSpectator().test(player) && IEntitySelector.isLivingAlive().test(player) && IEntitySelector.notAfk.test(player)) {
|
|
||||||
+ if (distance < 0.0D || player.getDistanceSquared(x, y, z) < distanceSq) {
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
||||||
index 2f329bae9f09d0ed21a4538fba6b95919ec35887..95b55fb93049c6686e13aab78ba1ae2b2fd5785b 100644
|
|
||||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
||||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
package net.pl3x.purpur;
|
|
||||||
|
|
||||||
import com.google.common.base.Throwables;
|
|
||||||
+import net.minecraft.locale.LocaleLanguage;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.pl3x.purpur.command.PurpurCommand;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
@@ -129,6 +130,15 @@ public class PurpurConfig {
|
|
||||||
return config.getString(path, config.getString(path));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public static String afkBroadcastAway = "§e§o%s is now AFK";
|
|
||||||
+ public static String afkBroadcastBack = "§e§o%s is no longer AFK";
|
|
||||||
+ public static String afkTabListPrefix = "[AFK] ";
|
|
||||||
+ private static void messages() {
|
|
||||||
+ afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
|
|
||||||
+ afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
|
|
||||||
+ afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
public static String timingsUrl = "https://timings.pl3x.net";
|
|
||||||
private static void timingsSettings() {
|
|
||||||
timingsUrl = getString("settings.timings.url", timingsUrl);
|
|
||||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
||||||
index 361f7857e461578e90cb71e15027dadaf794cb69..2578a4677d1ee060f687be531e696b7c7be89e84 100644
|
|
||||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -56,4 +56,15 @@ public class PurpurWorldConfig {
|
|
||||||
PurpurConfig.config.addDefault("world-settings.default." + path, def);
|
|
||||||
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ public boolean idleTimeoutKick = true;
|
|
||||||
+ public boolean idleTimeoutTickNearbyEntities = true;
|
|
||||||
+ public boolean idleTimeoutCountAsSleeping = false;
|
|
||||||
+ public boolean idleTimeoutUpdateTabList = false;
|
|
||||||
+ private void playerIdleTimeoutSettings() {
|
|
||||||
+ idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick);
|
|
||||||
+ idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities);
|
|
||||||
+ idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping);
|
|
||||||
+ idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
||||||
index cfe6898dc373fe55a08acf5c90e200061aa7d0fc..8e36d1dbde5128eea79d321496210065620acebd 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
||||||
@@ -2444,4 +2444,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
||||||
return spigot;
|
|
||||||
}
|
|
||||||
// Spigot end
|
|
||||||
+
|
|
||||||
+ // Purpur start
|
|
||||||
+ @Override
|
|
||||||
+ public boolean isAfk() {
|
|
||||||
+ return getHandle().isAfk();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void setAfk(boolean setAfk) {
|
|
||||||
+ getHandle().setAfk(setAfk);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void resetIdleTimer() {
|
|
||||||
+ getHandle().resetIdleTimer();
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
|
||||||
index 5c2eaca0bc63c7880ee928aba6a24761737aa649..2bbbd4a7ae87c2ead3dc2fd5520adfaefe2776b8 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
|
||||||
@@ -204,6 +204,7 @@ public class ActivationRange
|
|
||||||
{
|
|
||||||
|
|
||||||
player.activatedTick = MinecraftServer.currentTick;
|
|
||||||
+ if (!player.world.purpurConfig.idleTimeoutTickNearbyEntities && player.isAfk()) continue; // Purpur
|
|
||||||
maxBB = player.getBoundingBox().grow( maxRange, 256, maxRange );
|
|
||||||
ActivationType.MISC.boundingBox = player.getBoundingBox().grow( miscActivationRange, 256, miscActivationRange );
|
|
||||||
ActivationType.RAIDER.boundingBox = player.getBoundingBox().grow( raiderActivationRange, 256, raiderActivationRange );
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Sun, 26 May 2019 15:19:14 -0500
|
|
||||||
Subject: [PATCH] Bring back server name
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
index 1fab9b9c7d41a0d2a551096c2c15f741a887fa2d..f33309f4c1ad92960d0634f3f5b8105c284f26a2 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
@@ -20,6 +20,7 @@ public class DedicatedServerProperties extends PropertyManager<DedicatedServerPr
|
|
||||||
public final boolean onlineMode = this.getBoolean("online-mode", true);
|
|
||||||
public final boolean preventProxyConnections = this.getBoolean("prevent-proxy-connections", false);
|
|
||||||
public final String serverIp = this.getString("server-ip", "");
|
|
||||||
+ public final String serverName = this.getString("server-name", "Unknown Server"); // Purpur
|
|
||||||
public final boolean spawnAnimals = this.getBoolean("spawn-animals", true);
|
|
||||||
public final boolean spawnNpcs = this.getBoolean("spawn-npcs", true);
|
|
||||||
public final boolean pvp = this.getBoolean("pvp", true);
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
index 65ce132f0584abfb2d8496f1a7ea4a987a42ad94..673d9bdcd794f5fb0b74430a222ea3d2697d590b 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -2555,4 +2555,11 @@ public final class CraftServer implements Server {
|
|
||||||
}
|
|
||||||
|
|
||||||
// Paper end
|
|
||||||
+
|
|
||||||
+ // Purpur start
|
|
||||||
+ @Override
|
|
||||||
+ public String getServerName() {
|
|
||||||
+ return getProperties().serverName;
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
254
patches/server/0007-AFK-API.patch
Normal file
254
patches/server/0007-AFK-API.patch
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||||
|
Date: Thu, 8 Aug 2019 15:29:15 -0500
|
||||||
|
Subject: [PATCH] AFK API
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
index 9f218a4b253fe2ab0e70e871eeee05bb4f0b3fcf..2ddce62629be9fc1af38306ca50ad3e81150f94c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -1904,8 +1904,54 @@ public class ServerPlayer extends Player {
|
||||||
|
|
||||||
|
public void resetLastActionTime() {
|
||||||
|
this.lastActionTime = Util.getMillis();
|
||||||
|
+ this.setAfk(false); // Purpur
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur Start
|
||||||
|
+ private boolean isAfk = false;
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void setAfk(boolean afk) {
|
||||||
|
+ if (this.isAfk == afk) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ String msg = afk ? net.pl3x.purpur.PurpurConfig.afkBroadcastAway : net.pl3x.purpur.PurpurConfig.afkBroadcastBack;
|
||||||
|
+
|
||||||
|
+ net.pl3x.purpur.event.PlayerAFKEvent event = new net.pl3x.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread());
|
||||||
|
+ if (!event.callEvent() || event.shouldKick()) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ this.isAfk = afk;
|
||||||
|
+
|
||||||
|
+ if (!afk) {
|
||||||
|
+ resetLastActionTime();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ msg = event.getBroadcastMsg();
|
||||||
|
+ if (msg != null && !msg.isEmpty()) {
|
||||||
|
+ server.getPlayerList().sendMessage(org.bukkit.craftbukkit.util.CraftChatMessage.fromString(String.format(msg, this.getGameProfile().getName())));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (level.purpurConfig.idleTimeoutUpdateTabList) {
|
||||||
|
+ this.getBukkitEntity().setPlayerListName((afk ? net.pl3x.purpur.PurpurConfig.afkTabListPrefix : "") + this.getName());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ((ServerLevel) level).updateSleepingPlayerList();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isAfk() {
|
||||||
|
+ return this.isAfk;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean canBeCollidedWith() {
|
||||||
|
+ return !this.isAfk() && super.canBeCollidedWith();
|
||||||
|
+ }
|
||||||
|
+ // Purpur End
|
||||||
|
+
|
||||||
|
public ServerStatsCounter getStats() {
|
||||||
|
return this.stats;
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
index f1ffabb1226e568b64e3aadd695197d0c9742de8..c2d4c8dc38f2bdf376a02b243e1b8fba8b133979 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
@@ -391,6 +391,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) (this.server.getPlayerIdleTimeout() * 1000 * 60)) {
|
||||||
|
+ // Purpur start
|
||||||
|
+ this.player.setAfk(true);
|
||||||
|
+ if (!this.player.level.purpurConfig.idleTimeoutKick) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
|
||||||
|
this.disconnect(new TranslatableComponent("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
|
||||||
|
}
|
||||||
|
@@ -649,6 +655,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||||
|
this.lastYaw = to.getYaw();
|
||||||
|
this.lastPitch = to.getPitch();
|
||||||
|
|
||||||
|
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur
|
||||||
|
+
|
||||||
|
// Skip the first time we do this
|
||||||
|
if (true) { // Spigot - don't skip any move events
|
||||||
|
Location oldTo = to.clone();
|
||||||
|
@@ -1394,7 +1402,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||||
|
|
||||||
|
if (!this.player.isChangingDimension() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot
|
||||||
|
flag1 = true;
|
||||||
|
- ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString());
|
||||||
|
+ ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur
|
||||||
|
}
|
||||||
|
|
||||||
|
this.player.absMoveTo(d0, d1, d2, f, f1);
|
||||||
|
@@ -1433,6 +1441,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||||
|
this.lastYaw = to.getYaw();
|
||||||
|
this.lastPitch = to.getPitch();
|
||||||
|
|
||||||
|
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur
|
||||||
|
+
|
||||||
|
// Skip the first time we do this
|
||||||
|
if (from.getX() != Double.MAX_VALUE) {
|
||||||
|
Location oldTo = to.clone();
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java
|
||||||
|
index 823efad652d8ff9e96b99375b102fef6f017716e..60f89d7c77a5e792e21e93e35ed1670bd565799a 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/players/SleepStatus.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/players/SleepStatus.java
|
||||||
|
@@ -19,7 +19,7 @@ public class SleepStatus {
|
||||||
|
|
||||||
|
public boolean areEnoughDeepSleeping(int percentage, List<ServerPlayer> players) {
|
||||||
|
// CraftBukkit start
|
||||||
|
- int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping; }).count();
|
||||||
|
+ int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping || (eh.level.purpurConfig.idleTimeoutCountAsSleeping && eh.isAfk()); }).count(); // Purpur
|
||||||
|
boolean anyDeepSleep = players.stream().anyMatch(Player::isSleepingLongEnough);
|
||||||
|
|
||||||
|
return anyDeepSleep && j >= this.sleepersNeeded(percentage);
|
||||||
|
@@ -52,7 +52,7 @@ public class SleepStatus {
|
||||||
|
|
||||||
|
if (!entityplayer.isSpectator()) {
|
||||||
|
++this.activePlayers;
|
||||||
|
- if (entityplayer.isSleeping() || entityplayer.fauxSleeping) { // CraftBukkit
|
||||||
|
+ if ((entityplayer.isSleeping() || entityplayer.fauxSleeping) || (entityplayer.level.purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk())) { // CraftBukkit // Purpur
|
||||||
|
++this.sleepingPlayers;
|
||||||
|
}
|
||||||
|
// CraftBukkit start
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||||
|
index a060cca08631fb42041e3a79a9abc422fe7757af..e7b11d1ba984ea14f0cdf8e84f9eaab46b3f1684 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||||
|
@@ -27,6 +27,7 @@ public final class EntitySelector {
|
||||||
|
return !entity.isSpectator();
|
||||||
|
};
|
||||||
|
public static Predicate<Player> isInsomniac = (player) -> net.minecraft.util.Mth.clamp(((net.minecraft.server.level.ServerPlayer) player).getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= 72000; // Paper
|
||||||
|
+ public static Predicate<Player> notAfk = (player) -> !player.isAfk(); // Purpur
|
||||||
|
|
||||||
|
private EntitySelector() {}
|
||||||
|
// Paper start
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||||
|
index 20b286fc905fa77f0d862305b73f3f74f73cfccd..1c99b930003dcf6e0b20a150dbb13f3391dd20c8 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||||
|
@@ -193,6 +193,15 @@ public abstract class Player extends LivingEntity {
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ public void setAfk(boolean afk) {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public boolean isAfk() {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
public Player(Level world, BlockPos pos, float yaw, GameProfile profile) {
|
||||||
|
super(EntityType.PLAYER, world);
|
||||||
|
this.lastItemInMainHand = ItemStack.EMPTY;
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||||
|
index b0cafe6e0bdb3f297c13f310fdbe9e3158a6715d..2d953133a7e15699952ec0f8a7dc00c91ed32e03 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||||
|
@@ -146,7 +146,7 @@ public interface EntityGetter {
|
||||||
|
|
||||||
|
default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) {
|
||||||
|
for(Player player : this.players()) {
|
||||||
|
- if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
|
||||||
|
+ if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player) && EntitySelector.notAfk.test(player)) {
|
||||||
|
double d = player.distanceToSqr(x, y, z);
|
||||||
|
if (range < 0.0D || d < range * range) {
|
||||||
|
return true;
|
||||||
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
|
index 7e0c9505427f58df767ab44f18bec66212b7dd57..5842f8fad24c08cb001a192bf36de690fd14cd32 100644
|
||||||
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
|
@@ -128,6 +128,15 @@ public class PurpurConfig {
|
||||||
|
return config.getString(path, config.getString(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public static String afkBroadcastAway = "§e§o%s is now AFK";
|
||||||
|
+ public static String afkBroadcastBack = "§e§o%s is no longer AFK";
|
||||||
|
+ public static String afkTabListPrefix = "[AFK] ";
|
||||||
|
+ private static void messages() {
|
||||||
|
+ afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
|
||||||
|
+ afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
|
||||||
|
+ afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
public static String timingsUrl = "https://timings.pl3x.net";
|
||||||
|
private static void timingsSettings() {
|
||||||
|
timingsUrl = getString("settings.timings.url", timingsUrl);
|
||||||
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
index 361f7857e461578e90cb71e15027dadaf794cb69..2578a4677d1ee060f687be531e696b7c7be89e84 100644
|
||||||
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
@@ -56,4 +56,15 @@ public class PurpurWorldConfig {
|
||||||
|
PurpurConfig.config.addDefault("world-settings.default." + path, def);
|
||||||
|
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ public boolean idleTimeoutKick = true;
|
||||||
|
+ public boolean idleTimeoutTickNearbyEntities = true;
|
||||||
|
+ public boolean idleTimeoutCountAsSleeping = false;
|
||||||
|
+ public boolean idleTimeoutUpdateTabList = false;
|
||||||
|
+ private void playerIdleTimeoutSettings() {
|
||||||
|
+ idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick);
|
||||||
|
+ idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities);
|
||||||
|
+ idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping);
|
||||||
|
+ idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
index a210ce9438455e3bf15e189fb5aea8f23dc9aae0..391d7ebe71b7e741f058566cc5cdb9bb6a5a879a 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
@@ -2446,4 +2446,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
|
return this.spigot;
|
||||||
|
}
|
||||||
|
// Spigot end
|
||||||
|
+
|
||||||
|
+ // Purpur start
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isAfk() {
|
||||||
|
+ return getHandle().isAfk();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void setAfk(boolean setAfk) {
|
||||||
|
+ getHandle().setAfk(setAfk);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void resetIdleTimer() {
|
||||||
|
+ getHandle().resetLastActionTime();
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
index a08583863f9fa08016bdfc7949a273eaa4429927..f36c97529edbd3642d0ba37887a232226f766a35 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
@@ -194,6 +194,7 @@ public class ActivationRange
|
||||||
|
{
|
||||||
|
|
||||||
|
player.activatedTick = MinecraftServer.currentTick;
|
||||||
|
+ if (!player.level.purpurConfig.idleTimeoutTickNearbyEntities && player.isAfk()) continue; // Purpur
|
||||||
|
ActivationRange.maxBB = player.getBoundingBox().inflate( maxRange, 256, maxRange );
|
||||||
|
ActivationType.MISC.boundingBox = player.getBoundingBox().inflate( miscActivationRange, 256, miscActivationRange );
|
||||||
|
ActivationType.RAIDER.boundingBox = player.getBoundingBox().inflate( raiderActivationRange, 256, raiderActivationRange );
|
||||||
34
patches/server/0008-Bring-back-server-name.patch
Normal file
34
patches/server/0008-Bring-back-server-name.patch
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||||
|
Date: Sun, 26 May 2019 15:19:14 -0500
|
||||||
|
Subject: [PATCH] Bring back server name
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
index c9d80a5430cc66d6189bf337770af43121a5bfd5..329336d413317388455fbbf03036cee13186b00d 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
@@ -18,6 +18,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||||
|
public final boolean onlineMode = this.get("online-mode", true);
|
||||||
|
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
|
||||||
|
public final String serverIp = this.get("server-ip", "");
|
||||||
|
+ public final String serverName = this.get("server-name", "Unknown Server"); // Purpur
|
||||||
|
public final boolean spawnAnimals = this.get("spawn-animals", true);
|
||||||
|
public final boolean spawnNpcs = this.get("spawn-npcs", true);
|
||||||
|
public final boolean pvp = this.get("pvp", true);
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
index 2ae64cad8b482f943163494ac8264faabd3dd0bd..afb817d7aeeaf06a0308b84e22e7290f6f39904f 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
@@ -2537,4 +2537,11 @@ public final class CraftServer implements Server {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper end
|
||||||
|
+
|
||||||
|
+ // Purpur start
|
||||||
|
+ @Override
|
||||||
|
+ public String getServerName() {
|
||||||
|
+ return this.getProperties().serverName;
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
@@ -5,23 +5,23 @@ Subject: [PATCH] Configurable server mod name
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 67988051844898e7ce3c60135c7bc9711be41102..7aa50a1e4ecb03a4cbe1ccf45ad7d900a8509f6f 100644
|
index 43abef32c56a5d1260fe2fb78b25260780d80935..e21ad36be8a95c7d6e3d4b1ee920b6317d13e503 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1583,7 +1583,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
@@ -1649,7 +1649,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
public String getServerModName() {
|
public String getServerModName() {
|
||||||
- return "Purpur"; // Purpur // Tuinity // Paper // Spigot // CraftBukkit
|
- return "Purpur"; // Purpur // Tuinity // Paper // Spigot // CraftBukkit
|
||||||
+ return net.pl3x.purpur.PurpurConfig.serverModName; // Purpur // Tuinity // Paper // Spigot // CraftBukkit
|
+ return net.pl3x.purpur.PurpurConfig.serverModName; // Purpur // Tuinity // Paper // Spigot // CraftBukkit
|
||||||
}
|
}
|
||||||
|
|
||||||
public CrashReport b(CrashReport crashreport) {
|
public SystemReport fillSystemReport(SystemReport systemreport) {
|
||||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
index 95b55fb93049c6686e13aab78ba1ae2b2fd5785b..2442309843bb62e08ae13c46d335c65f7d072510 100644
|
index 5842f8fad24c08cb001a192bf36de690fd14cd32..538dffe906da7f30a1ac8fd0d96b8cbe058242a9 100644
|
||||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||||
@@ -139,6 +139,11 @@ public class PurpurConfig {
|
@@ -137,6 +137,11 @@ public class PurpurConfig {
|
||||||
afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
|
afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user