diff --git a/build.gradle b/build.gradle index 4fe8aec..3ea6d8c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ import net.fabricmc.loom.task.RemapJarTask plugins { - id 'fabric-loom' version '1.8-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' id 'io.github.ladysnake.chenille' version '0.14.0' } diff --git a/gradle.properties b/gradle.properties index 5ecc222..d2b4270 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx4G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.21.3 -yarn_mappings=1.21.3+build.2 -loader_version=0.16.7 +minecraft_version=1.21.5 +yarn_mappings=1.21.5+build.1 +loader_version=0.16.10 #Fabric api -fabric_version=0.106.1+1.21.3 +fabric_version=0.119.1+1.21.5 -elmendorf_version = 0.13.0 +elmendorf_version = 0.15.0 # Mod Properties -mod_version = 1.11.0 +mod_version = 1.12.0 maven_group = io.github.ladysnake archives_base_name = pal @@ -22,7 +22,7 @@ display_name = PlayerAbilityLib license_header = LGPL gpl_version = 3 curseforge_id = 359522 -curseforge_versions = 1.20.6 +curseforge_versions = 1.21.5 cf_requirements = fabric-api modrinth_id = DHQA06r4 release_type = release diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9355b41..37f853b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/io/github/ladysnake/pal/AbilitySource.java b/src/main/java/io/github/ladysnake/pal/AbilitySource.java index 26da2ca..7303520 100644 --- a/src/main/java/io/github/ladysnake/pal/AbilitySource.java +++ b/src/main/java/io/github/ladysnake/pal/AbilitySource.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/AbilityTracker.java b/src/main/java/io/github/ladysnake/pal/AbilityTracker.java index 788de95..1f87c6c 100644 --- a/src/main/java/io/github/ladysnake/pal/AbilityTracker.java +++ b/src/main/java/io/github/ladysnake/pal/AbilityTracker.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/Pal.java b/src/main/java/io/github/ladysnake/pal/Pal.java index 38ae65f..8f2fb37 100644 --- a/src/main/java/io/github/ladysnake/pal/Pal.java +++ b/src/main/java/io/github/ladysnake/pal/Pal.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/PlayerAbility.java b/src/main/java/io/github/ladysnake/pal/PlayerAbility.java index c8c4bc0..e4874b8 100644 --- a/src/main/java/io/github/ladysnake/pal/PlayerAbility.java +++ b/src/main/java/io/github/ladysnake/pal/PlayerAbility.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/PlayerAbilityEnableCallback.java b/src/main/java/io/github/ladysnake/pal/PlayerAbilityEnableCallback.java index 1f4eaf4..fc8c842 100644 --- a/src/main/java/io/github/ladysnake/pal/PlayerAbilityEnableCallback.java +++ b/src/main/java/io/github/ladysnake/pal/PlayerAbilityEnableCallback.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/PlayerAbilityUpdatedCallback.java b/src/main/java/io/github/ladysnake/pal/PlayerAbilityUpdatedCallback.java index 3fd8678..4ffc134 100644 --- a/src/main/java/io/github/ladysnake/pal/PlayerAbilityUpdatedCallback.java +++ b/src/main/java/io/github/ladysnake/pal/PlayerAbilityUpdatedCallback.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/SimpleAbilityTracker.java b/src/main/java/io/github/ladysnake/pal/SimpleAbilityTracker.java index b334acb..5cb03e0 100644 --- a/src/main/java/io/github/ladysnake/pal/SimpleAbilityTracker.java +++ b/src/main/java/io/github/ladysnake/pal/SimpleAbilityTracker.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,7 +19,6 @@ import io.github.ladysnake.pal.impl.PalInternals; import io.github.ladysnake.pal.impl.VanillaAbilityTracker; -import net.fabricmc.fabric.api.util.NbtType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; @@ -115,9 +114,9 @@ public void save(NbtCompound tag) { @Override public void load(NbtCompound tag) { - NbtList list = tag.getList("ability_sources", NbtType.STRING); + NbtList list = tag.getListOrEmpty("ability_sources"); for (int i = 0; i < list.size(); i++) { - AbilitySource source = PalInternals.getSource(Identifier.tryParse(list.getString(i))); + AbilitySource source = list.getString(i).map(x -> PalInternals.getSource(Identifier.tryParse(x))).orElse(null); if (source != null) { this.addSource(source); } else { diff --git a/src/main/java/io/github/ladysnake/pal/VanillaAbilities.java b/src/main/java/io/github/ladysnake/pal/VanillaAbilities.java index 4ed7f37..89a6162 100644 --- a/src/main/java/io/github/ladysnake/pal/VanillaAbilities.java +++ b/src/main/java/io/github/ladysnake/pal/VanillaAbilities.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/impl/PalInternals.java b/src/main/java/io/github/ladysnake/pal/impl/PalInternals.java index 84b9ab5..7920618 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/PalInternals.java +++ b/src/main/java/io/github/ladysnake/pal/impl/PalInternals.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/impl/PlayerAbilityView.java b/src/main/java/io/github/ladysnake/pal/impl/PlayerAbilityView.java index 49058b4..a3c401a 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/PlayerAbilityView.java +++ b/src/main/java/io/github/ladysnake/pal/impl/PlayerAbilityView.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/impl/VanillaAbilityTracker.java b/src/main/java/io/github/ladysnake/pal/impl/VanillaAbilityTracker.java index 369b2c9..be66d5a 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/VanillaAbilityTracker.java +++ b/src/main/java/io/github/ladysnake/pal/impl/VanillaAbilityTracker.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerEntityMixin.java b/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerEntityMixin.java index 07238e0..27f4e46 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerEntityMixin.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,6 @@ import io.github.ladysnake.pal.impl.PalInternals; import io.github.ladysnake.pal.impl.PlayerAbilityView; import io.github.ladysnake.pal.impl.VanillaAbilityTracker; -import net.fabricmc.fabric.api.util.NbtType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; @@ -120,15 +119,16 @@ private void writeAbilitiesToTag(NbtCompound tag, CallbackInfo ci) { at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;readCustomDataFromNbt(Lnet/minecraft/nbt/NbtCompound;)V", shift = At.Shift.AFTER) ) private void readAbilitiesFromTag(NbtCompound tag, CallbackInfo ci) { - for (NbtElement t : tag.getList("playerabilitylib:abilities", NbtType.COMPOUND)) { - NbtCompound abilityTag = ((NbtCompound) t); - if (abilityTag.contains("ability_id", NbtElement.STRING_TYPE)) { - String abilityId = abilityTag.getString("ability_id"); - AbilityTracker tracker = this.palAbilities.get(PalInternals.getAbility(Identifier.tryParse(abilityId))); - if (tracker != null) { - tracker.load(abilityTag); - } else { - PalInternals.LOGGER.warn("Encountered unknown ability {} while deserializing data for {}", abilityId, this); + for (NbtElement t : tag.getListOrEmpty("playerabilitylib:abilities")) { + if (t instanceof NbtCompound abilityTag) { + if (abilityTag.contains("ability_id")) { + String abilityId = abilityTag.getString("ability_id", ""); + AbilityTracker tracker = this.palAbilities.get(PalInternals.getAbility(Identifier.tryParse(abilityId))); + if (tracker != null) { + tracker.load(abilityTag); + } else { + PalInternals.LOGGER.warn("Encountered unknown ability {} while deserializing data for {}", abilityId, this); + } } } } diff --git a/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerInteractionManagerMixin.java index 1325c4c..493ce4b 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/ladysnake/pal/impl/mixin/ServerPlayerInteractionManagerMixin.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/io/github/ladysnake/pal/impl/package-info.java b/src/main/java/io/github/ladysnake/pal/impl/package-info.java index c193104..821f5f5 100644 --- a/src/main/java/io/github/ladysnake/pal/impl/package-info.java +++ b/src/main/java/io/github/ladysnake/pal/impl/package-info.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/testmod/java/io/github/ladysnake/paltest/AbilityToggleItem.java b/src/testmod/java/io/github/ladysnake/paltest/AbilityToggleItem.java index 256d386..f8beaab 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/AbilityToggleItem.java +++ b/src/testmod/java/io/github/ladysnake/paltest/AbilityToggleItem.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/testmod/java/io/github/ladysnake/paltest/BadFlightItem.java b/src/testmod/java/io/github/ladysnake/paltest/BadFlightItem.java index f29d5ef..c8b118b 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/BadFlightItem.java +++ b/src/testmod/java/io/github/ladysnake/paltest/BadFlightItem.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/testmod/java/io/github/ladysnake/paltest/FlightEffect.java b/src/testmod/java/io/github/ladysnake/paltest/FlightEffect.java index b80081f..1c63df1 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/FlightEffect.java +++ b/src/testmod/java/io/github/ladysnake/paltest/FlightEffect.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,6 @@ import io.github.ladysnake.pal.Pal; import io.github.ladysnake.pal.VanillaAbilities; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.server.network.ServerPlayerEntity; diff --git a/src/testmod/java/io/github/ladysnake/paltest/PalTest.java b/src/testmod/java/io/github/ladysnake/paltest/PalTest.java index b2cdfee..a77b6c5 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/PalTest.java +++ b/src/testmod/java/io/github/ladysnake/paltest/PalTest.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,6 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.effect.StatusEffectCategory; -import net.minecraft.item.ArmorItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.equipment.ArmorMaterials; @@ -60,7 +59,7 @@ private I registerItem(String id, Function fa } private void registerWaxWings() { - Item waxWings = registerItem("wax_wings", settings -> new ArmorItem(ArmorMaterials.LEATHER, EquipmentType.CHESTPLATE, settings)); + Item waxWings = registerItem("wax_wings", settings -> new Item(settings.armor(ArmorMaterials.LEATHER, EquipmentType.CHESTPLATE))); AbilitySource source = Pal.getAbilitySource(id("wax_wings"), AbilitySource.CONSUMABLE); ServerTickEvents.START_SERVER_TICK.register(server -> { for (ServerPlayerEntity player : server.getPlayerManager().getPlayerList()) { diff --git a/src/testmod/java/io/github/ladysnake/paltest/PalTestAbilities.java b/src/testmod/java/io/github/ladysnake/paltest/PalTestAbilities.java index 2828353..c261f8f 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/PalTestAbilities.java +++ b/src/testmod/java/io/github/ladysnake/paltest/PalTestAbilities.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/testmod/java/io/github/ladysnake/paltest/PalTestSuite.java b/src/testmod/java/io/github/ladysnake/paltest/PalTestSuite.java index 34a6479..a8fcb40 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/PalTestSuite.java +++ b/src/testmod/java/io/github/ladysnake/paltest/PalTestSuite.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,20 +21,20 @@ import io.github.ladysnake.pal.AbilitySource; import io.github.ladysnake.pal.Pal; import io.github.ladysnake.pal.VanillaAbilities; -import net.fabricmc.fabric.api.gametest.v1.FabricGameTest; +import net.fabricmc.fabric.api.gametest.v1.GameTest; import net.minecraft.network.packet.c2s.common.SyncedClientOptions; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.test.GameTest; import net.minecraft.test.GameTestException; import net.minecraft.test.TestContext; +import net.minecraft.text.Text; import java.util.UUID; -public final class PalTestSuite implements FabricGameTest { +public final class PalTestSuite { private static final AbilitySource TEST_SOURCE = Pal.getAbilitySource(PalTest.id("test_source")); private static final AbilitySource TEST_SOURCE_2 = Pal.getAbilitySource(PalTest.id("test_source_2")); - @GameTest(templateName = EMPTY_STRUCTURE) + @GameTest() public void grantingWorks(TestContext ctx) { ServerPlayerEntity mockPlayer = createMockPlayer(ctx); assertTrue(mockPlayer.getAbilities().allowModifyWorld, "Unexpected init state"); @@ -51,7 +51,7 @@ public void grantingWorks(TestContext ctx) { } private static void assertTrue(boolean b, String message) { - if (!b) throw new GameTestException(message); + if (!b) throw new GameTestException(Text.literal(message), 0); } private ServerPlayerEntity createMockPlayer(TestContext ctx) { diff --git a/src/testmod/java/io/github/ladysnake/paltest/mixin/LivingEntityMixin.java b/src/testmod/java/io/github/ladysnake/paltest/mixin/LivingEntityMixin.java index aaf7296..4b9eb6c 100644 --- a/src/testmod/java/io/github/ladysnake/paltest/mixin/LivingEntityMixin.java +++ b/src/testmod/java/io/github/ladysnake/paltest/mixin/LivingEntityMixin.java @@ -1,6 +1,6 @@ /* * PlayerAbilityLib - * Copyright (C) 2019-2024 Ladysnake + * Copyright (C) 2019-2025 Ladysnake * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public