diff --git a/patches/minecraft/net/minecraft/network/protocol/handshake/ClientIntentionPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/handshake/ClientIntentionPacket.java.patch index b92270be..d93cb949 100644 --- a/patches/minecraft/net/minecraft/network/protocol/handshake/ClientIntentionPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/handshake/ClientIntentionPacket.java.patch @@ -40,7 +40,7 @@ this.f_134722_ = p_179801_.readUnsignedShort(); this.f_134723_ = ConnectionProtocol.m_129583_(p_179801_.m_130242_()); + this.fmlVersion = NetworkHooks.getFMLVersion(f_134721_); -+ //this.hostName = hostName.split("\0")[0]; //Magma moved to [ServerHandshakePacketListenerImpl.java#L93] ++ //this.hostName = hostName.split("\0")[0]; // Magma moved to [ServerHandshakePacketListenerImpl.java#L93] + //Magma start - add Velocity support + if (SpigotConfig.bungee && !Objects.equals(this.fmlVersion, NetworkConstants.NETVERSION)) { + String[] split = this.f_134721_.split("\0"); diff --git a/src/fmllaunchertest/java/net/minecraftforge/fml/test/TopologicalSortTests.java b/src/fmllaunchertest/java/net/minecraftforge/fml/test/TopologicalSortTests.java deleted file mode 100644 index b0639430..00000000 --- a/src/fmllaunchertest/java/net/minecraftforge/fml/test/TopologicalSortTests.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016-2021. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.test; - -import com.google.common.graph.GraphBuilder; -import com.google.common.graph.MutableGraph; -import net.minecraftforge.fml.loading.toposort.CyclePresentException; -import net.minecraftforge.fml.loading.toposort.StronglyConnectedComponentDetector; -import net.minecraftforge.fml.loading.toposort.TopologicalSort; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; - -/** - * Tests for topological sort. - */ -public class TopologicalSortTests { - - @Test - @DisplayName("strongly connected components") - @SuppressWarnings("unchecked") - void testScc() { - MutableGraph graph = GraphBuilder.directed().build(); - graph.putEdge(2, 4); - graph.putEdge(4, 7); - graph.putEdge(4, 6); - graph.putEdge(6, 1); - graph.putEdge(3, 4); - graph.putEdge(1, 4); - graph.putEdge(3, 1); - Set> components = new StronglyConnectedComponentDetector<>(graph).getComponents(); - assertThat(components, containsInAnyOrder(contains(2), contains(3), contains(7), containsInAnyOrder(1, 4, 6))); - } - - @Test - @DisplayName("strongly connected components 2") - @SuppressWarnings("unchecked") - void testScc2() { - MutableGraph graph = GraphBuilder.directed().build(); - graph.putEdge(2, 4); - graph.putEdge(4, 8); - graph.putEdge(8, 2); - graph.putEdge(2, 1); - graph.putEdge(2, 3); - graph.putEdge(1, 9); - graph.putEdge(9, 7); - graph.putEdge(7, 5); - graph.putEdge(5, 1); - graph.putEdge(5, 3); - graph.putEdge(3, 6); - graph.putEdge(6, 5); - graph.putEdge(9, 3); - Set> components = new StronglyConnectedComponentDetector<>(graph).getComponents(); - assertThat(components, containsInAnyOrder(containsInAnyOrder(1, 3, 5, 6, 7, 9), containsInAnyOrder(2, 4, 8))); - } - - @Test - @DisplayName("basic sort") - void testBasicSort() { - MutableGraph graph = GraphBuilder.directed().build(); - graph.putEdge(2, 4); - graph.putEdge(4, 7); - graph.putEdge(4, 6); - graph.putEdge(3, 4); - graph.putEdge(1, 4); - graph.putEdge(3, 1); - List list = TopologicalSort.topologicalSort(graph, Comparator.naturalOrder()); - assertThat(list, contains(2, 3, 1, 4, 6, 7)); - } - - @Test - @DisplayName("basic sort 2") - void testBasicSort2() { - MutableGraph graph = GraphBuilder.directed().build(); - graph.putEdge(7, 6); - graph.putEdge(8, 6); - graph.putEdge(8, 2); - graph.putEdge(12, 2); - graph.putEdge(2, 6); - graph.putEdge(6, 1); - graph.putEdge(2, 4); - graph.putEdge(2, 1); - graph.putEdge(1, 4); - graph.putEdge(1, 3); - graph.putEdge(4, 5); - graph.putEdge(1, 5); - graph.putEdge(5, 3); - graph.putEdge(1, 10); - graph.putEdge(3, 11); - graph.putEdge(5, 9); - graph.putEdge(11, 9); - graph.putEdge(11, 13); - graph.putEdge(10, 13); - List list = TopologicalSort.topologicalSort(graph, Collections.reverseOrder()); - assertThat(list, contains(12, 8, 7, 2, 6, 1, 10, 4, 5, 3, 11, 13, 9)); - } - - @Test - @DisplayName("loop sort") - void testLoopSort() { - MutableGraph graph = GraphBuilder.directed().build(); - graph.putEdge(2, 4); - graph.putEdge(4, 7); - graph.putEdge(4, 6); - graph.putEdge(6, 1); - graph.putEdge(3, 4); - graph.putEdge(1, 4); - graph.putEdge(3, 1); - CyclePresentException ex = Assertions.assertThrows(CyclePresentException.class, () -> { - TopologicalSort.topologicalSort(graph, Comparator.naturalOrder()); - }); - assertThat(ex.getCycles(), contains(containsInAnyOrder(1, 4, 6))); - } -} diff --git a/src/main/java/org/magmafoundation/magma/Metrics.java b/src/main/java/org/magmafoundation/magma/metrics/Metrics.java similarity index 95% rename from src/main/java/org/magmafoundation/magma/Metrics.java rename to src/main/java/org/magmafoundation/magma/metrics/Metrics.java index de2d3866..704d347c 100644 --- a/src/main/java/org/magmafoundation/magma/Metrics.java +++ b/src/main/java/org/magmafoundation/magma/metrics/Metrics.java @@ -16,13 +16,15 @@ * along with this program. If not, see . */ -package org.magmafoundation.magma; +package org.magmafoundation.magma.metrics; import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.Plugin; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import org.magmafoundation.magma.Magma; import org.magmafoundation.magma.api.ServerAPI; import javax.net.ssl.HttpsURLConnection; @@ -56,7 +58,7 @@ public class Metrics { private static String serverUUID; // A list with all custom charts private final List charts = new ArrayList<>(); - private final String pluginName = "Magma"; + private final String pluginName = "Magma Maintained"; private final String pluginVersion = Magma.getVersion(); // Is bStats enabled on this server? private boolean enabled; @@ -106,7 +108,30 @@ public Metrics() { version = version.substring(version.indexOf("MC: ") + 4, version.length() - 1); return version; })); - addCustomChart(new Metrics.SimplePie("number_of_mods", () -> String.valueOf(ServerAPI.getModSize()))); // Report how many mods are running // MAGMA TODO: Add Server API + addCustomChart(new DrilldownPie("mods_vs_plugins", () -> { + Map> map = new HashMap<>(); + + Map modslist = new HashMap<>(); + String[] mods = ServerAPI.getModList().replace("[", "").replace("]", "").split(", "); + for (String x : mods) { + if (x.equals("minecraft") || x.equals("forge")) { + continue; + } + modslist.put(x, 1); + } + + Map pluginlist = new HashMap<>(); + for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) { + if (plugin.isEnabled()) { + pluginlist.put(plugin.getDescription().getName(), 1); + } + } + + map.put("mods", modslist); + map.put("plugins", pluginlist); + + return map; + })); addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online": "offline")); addCustomChart(new Metrics.SimplePie("server_version", Magma::getVersion));