diff --git a/build.gradle b/build.gradle index 27c50be8..edf3a277 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id 'fabric-loom' version '1.0-SNAPSHOT' id 'io.github.juuxel.loom-quiltflower' version '1.7.3' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index de17d3d8..65e3d506 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,17 +1,17 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties -minecraft_version=1.19.2 -yarn_mappings=1.19.2+build.28 +minecraft_version=1.19.3 +yarn_mappings=1.19.3+build.1 loader_version=0.14.11 # Mod Properties -mod_version = 2.3.1 +mod_version = 2.3.2 maven_group = io.icker archives_base_name = factions # Dependencies -fabric_version=0.68.0+1.19.2 +fabric_version=0.68.1+1.19.3 lucko_permissions_version=0.1-SNAPSHOT dynmap_api_version=3.4-beta-3 papi_version=2.0.0-beta.7+1.19 \ No newline at end of file diff --git a/src/main/java/io/icker/factions/command/HomeCommand.java b/src/main/java/io/icker/factions/command/HomeCommand.java index ef19ab74..6a149d4f 100644 --- a/src/main/java/io/icker/factions/command/HomeCommand.java +++ b/src/main/java/io/icker/factions/command/HomeCommand.java @@ -11,6 +11,7 @@ import io.icker.factions.util.Command; import io.icker.factions.util.Message; import net.minecraft.entity.damage.DamageRecord; +import net.minecraft.registry.RegistryKey; import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; @@ -18,14 +19,18 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.World; + +import java.util.Objects; +import java.util.Optional; public class HomeCommand implements Command { private int go(CommandContext context) throws CommandSyntaxException { ServerCommandSource source = context.getSource(); ServerPlayerEntity player = source.getPlayer(); + if (player == null) return 0; + Faction faction = Command.getUser(player).getFaction(); Home home = faction.getHome(); @@ -34,7 +39,16 @@ private int go(CommandContext context) throws CommandSyntax return 0; } - ServerWorld world = player.getServer().getWorld(RegistryKey.of(Registry.WORLD_KEY, new Identifier(home.level))); + if (player.getServer() == null) return 0; + + Optional> worldKey = player.getServer().getWorldRegistryKeys().stream().filter(key -> Objects.equals(key.getValue(), new Identifier(home.level))).findAny(); + + if (worldKey.isEmpty()) { + new Message("Cannot find dimension").fail().send(player, false); + return 0; + } + + ServerWorld world = player.getServer().getWorld(worldKey.get()); if (checkLimitToClaim(faction, world, new BlockPos(home.x, home.y, home.z))) { new Message("Cannot warp home to an unclaimed chunk").fail().send(player, false); diff --git a/src/main/java/io/icker/factions/core/FactionsManager.java b/src/main/java/io/icker/factions/core/FactionsManager.java index 57005b04..423bc4f6 100644 --- a/src/main/java/io/icker/factions/core/FactionsManager.java +++ b/src/main/java/io/icker/factions/core/FactionsManager.java @@ -18,6 +18,9 @@ import net.minecraft.text.Text; import net.minecraft.util.ActionResult; +import java.util.EnumSet; +import java.util.List; + public class FactionsManager { public static PlayerManager playerManager; @@ -82,7 +85,7 @@ private static void powerTick(ServerPlayerEntity player) { } private static void updatePlayerList(ServerPlayerEntity ...players) { - playerManager.sendToAll(new PlayerListS2CPacket(PlayerListS2CPacket.Action.UPDATE_DISPLAY_NAME, players)); + playerManager.sendToAll(new PlayerListS2CPacket(EnumSet.of(PlayerListS2CPacket.Action.UPDATE_DISPLAY_NAME), List.of(players))); } private static ActionResult openSafe(PlayerEntity player, Faction faction) { diff --git a/src/main/java/io/icker/factions/core/SoundManager.java b/src/main/java/io/icker/factions/core/SoundManager.java index 8f1f99a2..c3ddc115 100644 --- a/src/main/java/io/icker/factions/core/SoundManager.java +++ b/src/main/java/io/icker/factions/core/SoundManager.java @@ -4,6 +4,7 @@ import io.icker.factions.api.events.FactionEvents; import io.icker.factions.api.persistents.Faction; import io.icker.factions.api.persistents.User; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.PlayerManager; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; @@ -21,11 +22,11 @@ public static void register() { FactionEvents.MEMBER_LEAVE.register((faction, user) -> playFaction(faction, SoundEvents.BLOCK_NOTE_BLOCK_BIT, 0.5F)); } - private static void playFaction(Faction faction, SoundEvent soundEvent, float pitch) { + private static void playFaction(Faction faction, RegistryEntry.Reference soundEvent, float pitch) { for (User user : faction.getUsers()) { ServerPlayerEntity player = FactionsManager.playerManager.getPlayer(user.getID()); if (player != null && (user.sounds == User.SoundMode.ALL || user.sounds == User.SoundMode.FACTION)) { - player.playSound(soundEvent, SoundCategory.PLAYERS, 0.2F, pitch); + player.playSound(soundEvent.value(), SoundCategory.PLAYERS, 0.2F, pitch); } } } @@ -33,7 +34,7 @@ private static void playFaction(Faction faction, SoundEvent soundEvent, float pi public static void warningSound(ServerPlayerEntity player) { User user = User.get(player.getUuid()); if (user.sounds == User.SoundMode.ALL || user.sounds == User.SoundMode.WARNINGS) { - player.playSound(SoundEvents.BLOCK_NOTE_BLOCK_BASS, SoundCategory.PLAYERS, 0.5F, 1.0F); + player.playSound(SoundEvents.BLOCK_NOTE_BLOCK_BASS.value(), SoundCategory.PLAYERS, 0.5F, 1.0F); } } } diff --git a/src/main/java/io/icker/factions/mixin/PlayerManagerMixin.java b/src/main/java/io/icker/factions/mixin/PlayerManagerMixin.java index 6eafe84e..04de6f19 100644 --- a/src/main/java/io/icker/factions/mixin/PlayerManagerMixin.java +++ b/src/main/java/io/icker/factions/mixin/PlayerManagerMixin.java @@ -11,14 +11,15 @@ @Mixin(PlayerManager.class) public class PlayerManagerMixin { - @Redirect(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageSourceProfile;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;sendChatMessage(Lnet/minecraft/network/message/SentMessage;ZLnet/minecraft/network/message/MessageType$Parameters;)V")) + @Redirect(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;sendChatMessage(Lnet/minecraft/network/message/SentMessage;ZLnet/minecraft/network/message/MessageType$Parameters;)V")) public void sendChatMessage(ServerPlayerEntity player, SentMessage message, boolean bl, MessageType.Parameters parameters) { if (message instanceof SentMessage.Profileless) { player.sendChatMessage(message, bl, parameters); return; } + + User sender = User.get(((SentMessage.Chat)message).message().link().sender()); - User sender = User.get(((SentMessageAccessor)message).getMessage().signedHeader().sender()); User target = User.get(player.getUuid()); if (sender.chat == User.ChatMode.GLOBAL && target.chat != User.ChatMode.FOCUS) { diff --git a/src/main/java/io/icker/factions/mixin/SentMessageAccessor.java b/src/main/java/io/icker/factions/mixin/SentMessageAccessor.java deleted file mode 100644 index 9a796a03..00000000 --- a/src/main/java/io/icker/factions/mixin/SentMessageAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.icker.factions.mixin; - -import net.minecraft.network.message.SentMessage; -import net.minecraft.network.message.SignedMessage; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SentMessage.Chat.class) -public interface SentMessageAccessor { - @Accessor - SignedMessage getMessage(); -} diff --git a/src/main/java/io/icker/factions/mixin/ServerPlayNetworkHandlerMixin.java b/src/main/java/io/icker/factions/mixin/ServerPlayNetworkHandlerMixin.java index 877ceb99..d6b33904 100644 --- a/src/main/java/io/icker/factions/mixin/ServerPlayNetworkHandlerMixin.java +++ b/src/main/java/io/icker/factions/mixin/ServerPlayNetworkHandlerMixin.java @@ -35,7 +35,7 @@ public void onPlayerMove(PlayerMoveC2SPacket packet, CallbackInfo ci) { @Inject(method = "handleDecoratedMessage", at = @At("HEAD"), cancellable = true) public void handleDecoratedMessage(SignedMessage signedMessage, CallbackInfo ci) { - User member = User.get(signedMessage.signedHeader().sender()); + User member = User.get(signedMessage.link().sender()); boolean factionChat = member.chat == User.ChatMode.FACTION || member.chat == User.ChatMode.FOCUS; @@ -44,7 +44,7 @@ public void handleDecoratedMessage(SignedMessage signedMessage, CallbackInfo ci) .fail() .hover("Click to switch to global chat") .click("/factions settings chat global") - .send(server.getPlayerManager().getPlayer(signedMessage.signedHeader().sender()), false); + .send(server.getPlayerManager().getPlayer(signedMessage.link().sender()), false); ci.cancel(); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 400172bd..5a8d8690 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,9 +30,9 @@ "depends": { "fabricloader": ">=0.13.3", - "minecraft": ">=1.19", + "minecraft": ">=1.19.3", "java": ">=17", - "fabric": "*" + "fabric-api": "*" }, "suggests": { "fabric-permissions-api-v0": "*", diff --git a/src/main/resources/factions.mixins.json b/src/main/resources/factions.mixins.json index 0a7297cb..d179eb6b 100644 --- a/src/main/resources/factions.mixins.json +++ b/src/main/resources/factions.mixins.json @@ -10,7 +10,6 @@ "LockableContainerBlockEntityMixin", "MinecraftServerMixin", "PlayerManagerMixin", - "SentMessageAccessor", "ServerPlayerEntityMixin", "ServerPlayerInteractionManagerMixin", "ServerPlayNetworkHandlerMixin"