diff options
author | Luck <git@lucko.me> | 2024-10-26 09:53:12 +0100 |
---|---|---|
committer | Luck <git@lucko.me> | 2024-10-26 09:53:12 +0100 |
commit | c58ddcfc37971178087d7637979a2c17e9a44d09 (patch) | |
tree | c034e18a832f9a660f8288bf7839f7d12851cf92 | |
parent | 6856fcaf96978cfb671c366c1f123815b24c2691 (diff) | |
download | spark-c58ddcfc37971178087d7637979a2c17e9a44d09.tar.gz spark-c58ddcfc37971178087d7637979a2c17e9a44d09.tar.bz2 spark-c58ddcfc37971178087d7637979a2c17e9a44d09.zip |
Update to MC 1.21.3
-rw-r--r-- | spark-fabric/build.gradle | 6 | ||||
-rw-r--r-- | spark-forge/build.gradle | 4 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientCommandSender.java | 71 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerCommandSender.java (renamed from spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java) | 47 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java | 41 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java | 17 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java | 24 | ||||
-rw-r--r-- | spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java | 3 | ||||
-rw-r--r-- | spark-neoforge/build.gradle | 2 |
9 files changed, 130 insertions, 85 deletions
diff --git a/spark-fabric/build.gradle b/spark-fabric/build.gradle index c38f449..d2905cd 100644 --- a/spark-fabric/build.gradle +++ b/spark-fabric/build.gradle @@ -28,8 +28,8 @@ configurations { dependencies { // https://modmuss50.me/fabric.html - minecraft 'com.mojang:minecraft:1.21.2' - mappings 'net.fabricmc:yarn:1.21.2+build.1:v2' + minecraft 'com.mojang:minecraft:1.21.3' + mappings 'net.fabricmc:yarn:1.21.3+build.2:v2' modImplementation 'net.fabricmc:fabric-loader:0.16.7' Set<String> apiModules = [ @@ -40,7 +40,7 @@ dependencies { // Add each module as a dependency apiModules.forEach { - modImplementation(fabricApi.module(it, '0.106.1+1.21.2')) + modImplementation(fabricApi.module(it, '0.106.1+1.21.3')) } include(modImplementation('me.lucko:fabric-permissions-api:0.3.2')) diff --git a/spark-forge/build.gradle b/spark-forge/build.gradle index 948090f..eaf3edc 100644 --- a/spark-forge/build.gradle +++ b/spark-forge/build.gradle @@ -9,7 +9,7 @@ tasks.withType(JavaCompile) { } minecraft { - mappings channel: 'official', version: '1.21.1' + mappings channel: 'official', version: '1.21.3' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') reobf = false } @@ -20,7 +20,7 @@ configurations { } dependencies { - minecraft 'net.minecraftforge:forge:1.21.1-52.0.2' + minecraft 'net.minecraftforge:forge:1.21.3-53.0.0' shade project(':spark-common') } diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientCommandSender.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientCommandSender.java new file mode 100644 index 0000000..5416370 --- /dev/null +++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientCommandSender.java @@ -0,0 +1,71 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) <luck@lucko.me> + * Copyright (c) contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.common.command.sender.AbstractCommandSender; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.RegistryAccess; +import net.minecraft.network.chat.Component.Serializer; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.entity.Entity; + +import java.util.Objects; +import java.util.UUID; + +public class ForgeClientCommandSender extends AbstractCommandSender<CommandSourceStack> { + public ForgeClientCommandSender(CommandSourceStack source) { + super(source); + } + + @Override + public String getName() { + return this.delegate.getTextName(); + } + + @Override + public UUID getUniqueId() { + Entity entity = this.delegate.getEntity(); + if (entity instanceof LocalPlayer player) { + return player.getUUID(); + } + return null; + } + + @Override + public void sendMessage(Component message) { + MutableComponent component = Serializer.fromJson(GsonComponentSerializer.gson().serializeToTree(message), RegistryAccess.EMPTY); + Objects.requireNonNull(component, "component"); + super.delegate.sendSystemMessage(component); + } + + @Override + public boolean hasPermission(String permission) { + return true; + } + + @Override + protected Object getObjectForComparison() { + return this.delegate.getEntity(); + } +} diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerCommandSender.java index 0e65657..6951d9a 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerCommandSender.java @@ -21,47 +21,39 @@ package me.lucko.spark.forge; import me.lucko.spark.common.command.sender.AbstractCommandSender; -import me.lucko.spark.forge.plugin.ForgeSparkPlugin; +import me.lucko.spark.forge.plugin.ForgeServerSparkPlugin; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.RegistryAccess; import net.minecraft.network.chat.Component.Serializer; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.rcon.RconConsoleSource; -import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; import java.util.Objects; import java.util.UUID; -public class ForgeCommandSender extends AbstractCommandSender<CommandSource> { - private final ForgeSparkPlugin plugin; +public class ForgeServerCommandSender extends AbstractCommandSender<CommandSourceStack> { + private final ForgeServerSparkPlugin plugin; - public ForgeCommandSender(CommandSource source, ForgeSparkPlugin plugin) { - super(source); + public ForgeServerCommandSender(CommandSourceStack commandSource, ForgeServerSparkPlugin plugin) { + super(commandSource); this.plugin = plugin; } @Override public String getName() { - if (super.delegate instanceof Player) { - return ((Player) super.delegate).getGameProfile().getName(); - } else if (super.delegate instanceof MinecraftServer) { + String name = this.delegate.getTextName(); + if (this.delegate.getEntity() != null && name.equals("Server")) { return "Console"; - } else if (super.delegate instanceof RconConsoleSource) { - return "RCON Console"; - } else { - return "unknown:" + super.delegate.getClass().getSimpleName(); } + return name; } @Override public UUID getUniqueId() { - if (super.delegate instanceof Player) { - return ((Player) super.delegate).getUUID(); - } - return null; + Entity entity = this.delegate.getEntity(); + return entity != null ? entity.getUUID() : null; } @Override @@ -73,6 +65,19 @@ public class ForgeCommandSender extends AbstractCommandSender<CommandSource> { @Override public boolean hasPermission(String permission) { - return this.plugin.hasPermission(super.delegate, permission); + return this.plugin.hasPermission(this.delegate, permission); + } + + @Override + protected Object getObjectForComparison() { + UUID uniqueId = getUniqueId(); + if (uniqueId != null) { + return uniqueId; + } + Entity entity = this.delegate.getEntity(); + if (entity != null) { + return entity; + } + return getName(); } } diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java index b31b825..61bea72 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeWorldInfoProvider.java @@ -120,20 +120,19 @@ public abstract class ForgeWorldInfoProvider implements WorldInfoProvider { GameRulesResult data = new GameRulesResult(); Iterable<ServerLevel> levels = this.server.getAllLevels(); - GameRules.visitGameRuleTypes(new GameRules.GameRuleTypeVisitor() { - @Override - public <T extends GameRules.Value<T>> void visit(GameRules.Key<T> key, GameRules.Type<T> type) { - String defaultValue = type.createRule().serialize(); - data.putDefault(key.getId(), defaultValue); + for (ServerLevel level : levels) { + level.getGameRules().visitGameRuleTypes(new GameRules.GameRuleTypeVisitor() { + @Override + public <T extends GameRules.Value<T>> void visit(GameRules.Key<T> key, GameRules.Type<T> type) { + String defaultValue = type.createRule().serialize(); + data.putDefault(key.getId(), defaultValue); - for (ServerLevel level : levels) { String levelName = level.dimension().location().getPath(); - String value = level.getGameRules().getRule(key).serialize(); data.put(key.getId(), levelName, value); } - } - }); + }); + } return data; } @@ -190,28 +189,8 @@ public abstract class ForgeWorldInfoProvider implements WorldInfoProvider { @Override public GameRulesResult pollGameRules() { - ClientLevel level = this.client.level; - if (level == null) { - return null; - } - - GameRulesResult data = new GameRulesResult(); - - String levelName = level.dimension().location().getPath(); - GameRules levelRules = level.getGameRules(); - - GameRules.visitGameRuleTypes(new GameRules.GameRuleTypeVisitor() { - @Override - public <T extends GameRules.Value<T>> void visit(GameRules.Key<T> key, GameRules.Type<T> type) { - String defaultValue = type.createRule().serialize(); - data.putDefault(key.getId(), defaultValue); - - String value = levelRules.getRule(key).serialize(); - data.put(key.getId(), levelName, value); - } - }); - - return data; + // Not available on client since 24w39a + return null; } @Override diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java index 86915a4..607dbe1 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java @@ -31,15 +31,15 @@ import me.lucko.spark.common.platform.world.WorldInfoProvider; import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; -import me.lucko.spark.forge.ForgeCommandSender; +import me.lucko.spark.forge.ForgeClientCommandSender; import me.lucko.spark.forge.ForgePlatformInfo; import me.lucko.spark.forge.ForgeSparkMod; import me.lucko.spark.forge.ForgeTickHook; import me.lucko.spark.forge.ForgeTickReporter; import me.lucko.spark.forge.ForgeWorldInfoProvider; import net.minecraft.client.Minecraft; -import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; +import net.minecraftforge.client.ClientCommandHandler; import net.minecraftforge.client.event.RegisterClientCommandsEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.TickEvent; @@ -85,7 +85,7 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin implements Command< return 0; } - this.platform.executeCommand(new ForgeCommandSender(context.getSource().getEntity(), this), args); + this.platform.executeCommand(new ForgeClientCommandSender(context.getSource()), args); return Command.SINGLE_SUCCESS; } @@ -96,17 +96,12 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin implements Command< return Suggestions.empty(); } - return generateSuggestions(new ForgeCommandSender(context.getSource().getEntity(), this), args, builder); + return generateSuggestions(new ForgeClientCommandSender(context.getSource()), args, builder); } @Override - public boolean hasPermission(CommandSource sender, String permission) { - return true; - } - - @Override - public Stream<ForgeCommandSender> getCommandSenders() { - return Stream.of(new ForgeCommandSender(this.minecraft.player, this)); + public Stream<ForgeClientCommandSender> getCommandSenders() { + return Stream.of(new ForgeClientCommandSender(ClientCommandHandler.getSource())); } @Override diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java index 4af45d9..368ae60 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java @@ -35,15 +35,14 @@ import me.lucko.spark.common.platform.world.WorldInfoProvider; import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import me.lucko.spark.common.tick.TickReporter; -import me.lucko.spark.forge.ForgeCommandSender; import me.lucko.spark.forge.ForgePlatformInfo; import me.lucko.spark.forge.ForgePlayerPingProvider; +import me.lucko.spark.forge.ForgeServerCommandSender; import me.lucko.spark.forge.ForgeServerConfigProvider; import me.lucko.spark.forge.ForgeSparkMod; import me.lucko.spark.forge.ForgeTickHook; import me.lucko.spark.forge.ForgeTickReporter; import me.lucko.spark.forge.ForgeWorldInfoProvider; -import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; @@ -173,8 +172,7 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command< return 0; } - CommandSource source = context.getSource().getEntity() != null ? context.getSource().getEntity() : context.getSource().getServer(); - this.platform.executeCommand(new ForgeCommandSender(source, this), args); + this.platform.executeCommand(new ForgeServerCommandSender(context.getSource(), this), args); return Command.SINGLE_SUCCESS; } @@ -185,12 +183,12 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command< return Suggestions.empty(); } - return generateSuggestions(new ForgeCommandSender(context.getSource().getPlayerOrException(), this), args, builder); + return generateSuggestions(new ForgeServerCommandSender(context.getSource(), this), args, builder); } - @Override - public boolean hasPermission(CommandSource sender, String permission) { - if (sender instanceof ServerPlayer) { + public boolean hasPermission(CommandSourceStack stack, String permission) { + ServerPlayer player = stack.getPlayer(); + if (player != null) { if (permission.equals("spark")) { permission = "spark.all"; } @@ -199,18 +197,18 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command< if (permissionNode == null) { throw new IllegalStateException("spark permission not registered: " + permission); } - return PermissionAPI.getPermission((ServerPlayer) sender, permissionNode); + return PermissionAPI.getPermission(player, permissionNode); } else { return true; } } @Override - public Stream<ForgeCommandSender> getCommandSenders() { + public Stream<ForgeServerCommandSender> getCommandSenders() { return Stream.concat( - this.server.getPlayerList().getPlayers().stream(), - Stream.of(this.server) - ).map(sender -> new ForgeCommandSender(sender, this)); + this.server.getPlayerList().getPlayers().stream().map(ServerPlayer::createCommandSourceStack), + Stream.of(this.server.createCommandSourceStack()) + ).map(stack -> new ForgeServerCommandSender(stack, this)); } @Override diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java index 5c0761d..2877326 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java @@ -38,7 +38,6 @@ import me.lucko.spark.common.sampler.source.SourceMetadata; import me.lucko.spark.common.util.SparkThreadFactory; import me.lucko.spark.forge.ForgeClassSourceLookup; import me.lucko.spark.forge.ForgeSparkMod; -import net.minecraft.commands.CommandSource; import net.minecraftforge.fml.ModList; import net.minecraftforge.forgespi.language.IModInfo; import org.apache.logging.log4j.LogManager; @@ -76,8 +75,6 @@ public abstract class ForgeSparkPlugin implements SparkPlugin { this.scheduler.shutdown(); } - public abstract boolean hasPermission(CommandSource sender, String permission); - @Override public String getVersion() { return this.mod.getVersion(); diff --git a/spark-neoforge/build.gradle b/spark-neoforge/build.gradle index a2a246c..2e57e71 100644 --- a/spark-neoforge/build.gradle +++ b/spark-neoforge/build.gradle @@ -15,7 +15,7 @@ java { } neoForge { - version = "21.2.0-beta" + version = "21.3.3-beta" validateAccessTransformers = true runs { |