From 93f729485954c718f871b08c0372fa7665635741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Sun, 7 Jul 2024 15:21:19 +0900 Subject: [PATCH 1/7] fix: Breaking chage in fabric API --- .../william278/husksync/data/FabricData.java | 22 ++++++++----------- gradle.properties | 6 ++--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricData.java b/fabric/src/main/java/net/william278/husksync/data/FabricData.java index 5a126f3c..5e2290fd 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricData.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricData.java @@ -24,7 +24,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.gson.annotations.SerializedName; import lombok.*; -import net.fabricmc.fabric.api.dimension.v1.FabricDimensions; import net.minecraft.advancement.AdvancementProgress; import net.minecraft.advancement.PlayerAdvancementTracker; import net.minecraft.enchantment.EnchantmentHelper; @@ -433,19 +432,16 @@ public abstract class FabricData implements Data { final MinecraftServer server = plugin.getMinecraftServer(); try { player.dismountVehicle(); - FabricDimensions.teleport( - player, + player.teleportTo( + new TeleportTarget( server.getWorld(server.getWorldRegistryKeys().stream() - .filter(key -> key.getValue().equals(Identifier.tryParse(world.name()))) - .findFirst().orElseThrow( - () -> new IllegalStateException("Invalid world") - )), - new TeleportTarget( - new Vec3d(x, y, z), - Vec3d.ZERO, - yaw, - pitch - ) + .filter(key -> key.getValue().equals(Identifier.tryParse(world.name()))) + .findFirst().orElseThrow( + () -> new IllegalStateException("Invalid world") + )), + player, + TeleportTarget.NO_OP + ) ); } catch (Throwable e) { throw new IllegalStateException("Failed to apply location", e); diff --git a/gradle.properties b/gradle.properties index 4403c33f..e9087dd5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,10 +14,10 @@ postgres_driver_version=42.7.3 mongodb_driver_version=5.1.0 snappy_version=1.1.10.5 -fabric_minecraft_version=1.20.1 +fabric_minecraft_version=1.21 fabric_loader_version=0.15.11 -fabric_yarn_mappings=1.20.1+build.10 -fabric_api_version=0.92.2+1.20.1 +fabric_yarn_mappings=1.21+build.7 +fabric_api_version=0.100.4+1.21 adventure_platform_fabric_version=5.9.0 fabric_permissions_api_version=0.2-SNAPSHOT sgui_version=1.2.2+1.20 \ No newline at end of file From c16231b12b26d441280fddc6814c4c7b8d9a640d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Sun, 7 Jul 2024 20:15:22 +0900 Subject: [PATCH 2/7] feat: Support fabric with 1.21 --- .../william278/husksync/data/FabricData.java | 72 +++++++++---------- .../husksync/data/FabricSerializer.java | 20 ++++-- .../husksync/data/FabricUserDataHolder.java | 2 +- .../husksync/mixins/PlayerEntityMixin.java | 6 +- .../mixins/ServerPlayNetworkHandlerMixin.java | 3 +- gradle.properties | 4 +- 6 files changed, 55 insertions(+), 52 deletions(-) diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricData.java b/fabric/src/main/java/net/william278/husksync/data/FabricData.java index 5e2290fd..f4395ce0 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricData.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricData.java @@ -26,7 +26,7 @@ import com.google.gson.annotations.SerializedName; import lombok.*; import net.minecraft.advancement.AdvancementProgress; import net.minecraft.advancement.PlayerAdvancementTracker; -import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeInstance; import net.minecraft.entity.attribute.EntityAttributeModifier; @@ -34,15 +34,15 @@ import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.player.HungerManager; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.stat.StatType; import net.minecraft.stat.Stats; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import net.minecraft.util.math.Vec3d; import net.minecraft.world.TeleportTarget; import net.william278.desertwell.util.ThrowingConsumer; import net.william278.husksync.FabricHuskSync; @@ -85,13 +85,10 @@ public abstract class FabricData implements Data { stack.getItem().toString(), stack.getCount(), stack.getName().getString(), - Optional.ofNullable(stack.getSubNbt(ItemStack.DISPLAY_KEY)) - .flatMap(display -> Optional.ofNullable(display.get(ItemStack.LORE_KEY)) - .map(lore -> ((List) lore).stream().toList())) //todo check this is ok - .orElse(null), - stack.getEnchantments().stream() - .map(element -> EnchantmentHelper.getIdFromNbt((NbtCompound) element)) - .filter(Objects::nonNull).map(Identifier::toString) + stack.getComponents().get(DataComponentTypes.LORE).lines().stream().map(Text::getString).toList(), + stack.getEnchantments().getEnchantments().stream() + .map(RegistryEntry::getIdAsString) + .filter(Objects::nonNull) .toList() ) : null) .toArray(Stack[]::new); @@ -246,7 +243,7 @@ public abstract class FabricData implements Data { .map(effect -> { final StatusEffect type = matchEffectType(effect.type()); return type != null ? new StatusEffectInstance( - type, + RegistryEntry.of(type), effect.duration(), effect.amplifier(), effect.isAmbient(), @@ -278,7 +275,7 @@ public abstract class FabricData implements Data { public List getActiveEffects() { return effects.stream() .map(potionEffect -> { - final String key = getEffectId(potionEffect.getEffectType()); + final String key = getEffectId(potionEffect.getEffectType().value()); return key != null ? new Effect( key, potionEffect.getAmplifier(), @@ -306,16 +303,16 @@ public abstract class FabricData implements Data { public static FabricData.Advancements adapt(@NotNull ServerPlayerEntity player) { final MinecraftServer server = Objects.requireNonNull(player.getServer(), "Server is null"); final List advancements = Lists.newArrayList(); - forEachAdvancement(server, advancement -> { - final AdvancementProgress advancementProgress = player.getAdvancementTracker().getProgress(advancement); + forEachAdvancementEntry(server, advancementEntry -> { + final AdvancementProgress advancementProgress = player.getAdvancementTracker().getProgress(advancementEntry); final Map awardedCriteria = Maps.newHashMap(); advancementProgress.getObtainedCriteria().forEach((criteria) -> awardedCriteria.put(criteria, - advancementProgress.getEarliestProgressObtainDate())); + Date.from(advancementProgress.getEarliestProgressObtainDate()))); // Only save the advancement if criteria has been completed if (!awardedCriteria.isEmpty()) { - advancements.add(Advancement.adapt(advancement.getId().toString(), awardedCriteria)); + advancements.add(Advancement.adapt(advancementEntry.id().asString(), awardedCriteria)); } }); return new FabricData.Advancements(advancements); @@ -330,10 +327,10 @@ public abstract class FabricData implements Data { public void apply(@NotNull FabricUser user, @NotNull FabricHuskSync plugin) throws IllegalStateException { final ServerPlayerEntity player = user.getPlayer(); final MinecraftServer server = Objects.requireNonNull(player.getServer(), "Server is null"); - plugin.runAsync(() -> forEachAdvancement(server, advancement -> { - final AdvancementProgress progress = player.getAdvancementTracker().getProgress(advancement); + plugin.runAsync(() -> forEachAdvancementEntry(server, advancementEntry -> { + final AdvancementProgress progress = player.getAdvancementTracker().getProgress(advancementEntry); final Optional record = completed.stream() - .filter(r -> r.getKey().equals(advancement.getId().toString())) + .filter(r -> r.getKey().equals(advancementEntry.id().toString())) .findFirst(); if (record.isEmpty()) { return; @@ -342,7 +339,7 @@ public abstract class FabricData implements Data { final Map criteria = record.get().getCompletedCriteria(); final List awarded = Lists.newArrayList(progress.getObtainedCriteria()); this.setAdvancement( - plugin, advancement, player, user, + plugin, advancementEntry, player, user, criteria.keySet().stream().filter(key -> !awarded.contains(key)).toList(), awarded.stream().filter(key -> !criteria.containsKey(key)).toList() ); @@ -350,7 +347,7 @@ public abstract class FabricData implements Data { } private void setAdvancement(@NotNull FabricHuskSync plugin, - @NotNull net.minecraft.advancement.Advancement advancement, + @NotNull net.minecraft.advancement.AdvancementEntry advancementEntry, @NotNull ServerPlayerEntity player, @NotNull FabricUser user, @NotNull List toAward, @@ -362,8 +359,8 @@ public abstract class FabricData implements Data { // Award and revoke advancement criteria final PlayerAdvancementTracker progress = player.getAdvancementTracker(); - toAward.forEach(a -> progress.grantCriterion(advancement, a)); - toRevoke.forEach(r -> progress.revokeCriterion(advancement, r)); + toAward.forEach(a -> progress.grantCriterion(advancementEntry, a)); + toRevoke.forEach(r -> progress.revokeCriterion(advancementEntry, r)); // Restore player exp level & progress if (!toAward.isEmpty() @@ -374,9 +371,9 @@ public abstract class FabricData implements Data { }); } - // Performs a consuming function for every advancement registered on the server - private static void forEachAdvancement(@NotNull MinecraftServer server, - @NotNull ThrowingConsumer con) { + // Performs a consuming function for every advancement entry registered on the server + private static void forEachAdvancementEntry(@NotNull MinecraftServer server, + @NotNull ThrowingConsumer con) { server.getAdvancementLoader().getAdvancements().forEach(con); } @@ -419,9 +416,9 @@ public abstract class FabricData implements Data { player.getWorld(), "World is null" ).getRegistryKey().getValue().toString(), UUID.nameUUIDFromBytes( - player.getWorld().getDimensionKey().getValue().toString().getBytes() + player.getWorld().getDimensionEntry().getIdAsString().getBytes() ), - player.getWorld().getDimensionKey().getValue().toString() + player.getWorld().getDimensionEntry().getIdAsString() ) ); } @@ -570,17 +567,17 @@ public abstract class FabricData implements Data { public static FabricData.Attributes adapt(@NotNull ServerPlayerEntity player, @NotNull HuskSync plugin) { final List attributes = Lists.newArrayList(); Registries.ATTRIBUTE.forEach(id -> { - final EntityAttributeInstance instance = player.getAttributeInstance(id); + final EntityAttributeInstance instance = player.getAttributeInstance(RegistryEntry.of(id)); final Identifier key = Registries.ATTRIBUTE.getId(id); if (instance == null || key == null) { return; } final Set modifiers = Sets.newHashSet(); instance.getModifiers().forEach(modifier -> modifiers.add(new Modifier( - modifier.getId(), - modifier.getName(), - modifier.getValue(), - modifier.getOperation().getId(), + UUID.nameUUIDFromBytes(modifier.id().toString().getBytes()), + modifier.id().examinableName(), + modifier.value(), + modifier.operation().getId(), -1 ))); attributes.add(new Attribute( @@ -609,7 +606,7 @@ public abstract class FabricData implements Data { @Override protected void apply(@NotNull FabricUser user, @NotNull FabricHuskSync plugin) { Registries.ATTRIBUTE.forEach(id -> applyAttribute( - user.getPlayer().getAttributeInstance(id), + user.getPlayer().getAttributeInstance(RegistryEntry.of(id)), getAttribute(id).orElse(null) )); @@ -620,14 +617,13 @@ public abstract class FabricData implements Data { if (instance == null) { return; } - instance.setBaseValue(attribute == null ? instance.getAttribute().getDefaultValue() : attribute.baseValue()); + instance.setBaseValue(attribute == null ? instance.getAttribute().value().getDefaultValue() : attribute.baseValue()); instance.getModifiers().forEach(instance::removeModifier); if (attribute != null) { attribute.modifiers().forEach(modifier -> instance.addPersistentModifier(new EntityAttributeModifier( - modifier.uuid(), - modifier.name(), + Identifier.of(modifier.uuid().toString()), modifier.amount(), - EntityAttributeModifier.Operation.fromId(modifier.operationType()) + EntityAttributeModifier.Operation.ID_TO_VALUE.apply(modifier.operationType()) ))); } } diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java b/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java index fa892370..077de193 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java @@ -27,6 +27,11 @@ import lombok.AllArgsConstructor; import net.minecraft.datafixer.TypeReferences; import net.minecraft.item.ItemStack; import net.minecraft.nbt.*; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registries; +import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.dimension.DimensionTypes; import net.william278.desertwell.util.Version; import net.william278.husksync.FabricHuskSync; import net.william278.husksync.HuskSync; @@ -94,7 +99,7 @@ public abstract class FabricSerializer { public String serialize(@NotNull FabricData.Items.Inventory data) throws SerializationException { try { final NbtCompound root = new NbtCompound(); - root.put(ITEMS_TAG, serializeItemArray(data.getContents())); + root.put(ITEMS_TAG, serializeItemArray(data.getContents(), (FabricHuskSync) getPlugin())); root.putInt(HELD_ITEM_SLOT_TAG, data.getHeldItemSlot()); return root.toString(); } catch (Throwable e) { @@ -132,7 +137,7 @@ public abstract class FabricSerializer { @Override public String serialize(@NotNull FabricData.Items.EnderChest data) throws SerializationException { try { - return serializeItemArray(data.getContents()).toString(); + return serializeItemArray(data.getContents(), (FabricHuskSync) getPlugin()).toString(); } catch (Throwable e) { throw new SerializationException("Failed to serialize ender chest item NBT to string", e); } @@ -161,9 +166,10 @@ public abstract class FabricSerializer { final ItemStack[] contents = new ItemStack[tag.getInt("size")]; final NbtList itemList = tag.getList("items", NbtElement.COMPOUND_TYPE); + final DynamicRegistryManager registryManager = plugin.getMinecraftServer().getRegistryManager(); itemList.forEach(element -> { final NbtCompound compound = (NbtCompound) element; - contents[compound.getInt("Slot")] = ItemStack.fromNbt(compound); + contents[compound.getInt("Slot")] = ItemStack.fromNbt(registryManager, element).get(); }); plugin.debug(Arrays.toString(contents)); return contents; @@ -174,18 +180,18 @@ public abstract class FabricSerializer { // Serialize items slot-by-slot @NotNull - default NbtCompound serializeItemArray(@Nullable ItemStack @NotNull [] items) { + default NbtCompound serializeItemArray(@Nullable ItemStack @NotNull [] items, @NotNull FabricHuskSync plugin) { final NbtCompound container = new NbtCompound(); container.putInt("size", items.length); final NbtList itemList = new NbtList(); + final DynamicRegistryManager registryManager = plugin.getMinecraftServer().getRegistryManager(); for (int i = 0; i < items.length; i++) { final ItemStack item = items[i]; if (item == null || item.isEmpty()) { continue; } - NbtCompound entry = new NbtCompound(); + NbtCompound entry = (NbtCompound) item.encode(registryManager); entry.putInt("Slot", i); - item.writeNbt(entry); itemList.add(entry); } container.put(ITEMS_TAG, itemList); @@ -205,7 +211,7 @@ public abstract class FabricSerializer { } final NbtCompound compound = list.getCompound(i); final int slot = compound.getInt("Slot"); - itemStacks[slot] = ItemStack.fromNbt(upgradeItemData(list.getCompound(i), mcVersion, plugin)); + itemStacks[slot] = ItemStack.fromNbt(DynamicRegistryManager.of(Registries.REGISTRIES), upgradeItemData(list.getCompound(i), mcVersion, plugin)).get(); } return itemStacks; } diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java b/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java index 298fa4e8..01132284 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java @@ -104,7 +104,7 @@ public interface FabricUserDataHolder extends UserDataHolder { @Override default Optional getEnderChest() { return Optional.of(FabricData.Items.EnderChest.adapt( - getPlayer().getEnderChestInventory().stacks + getPlayer().getEnderChestInventory().getHeldStacks() )); } diff --git a/fabric/src/main/java/net/william278/husksync/mixins/PlayerEntityMixin.java b/fabric/src/main/java/net/william278/husksync/mixins/PlayerEntityMixin.java index c7e186f4..274c577a 100644 --- a/fabric/src/main/java/net/william278/husksync/mixins/PlayerEntityMixin.java +++ b/fabric/src/main/java/net/william278/husksync/mixins/PlayerEntityMixin.java @@ -20,9 +20,11 @@ package net.william278.husksync.mixins; import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; +import net.minecraft.registry.tag.TagKey; import net.minecraft.server.network.ServerPlayerEntity; import net.william278.husksync.event.PlayerDeathDropsCallback; import org.jetbrains.annotations.NotNull; @@ -54,7 +56,7 @@ public class PlayerEntityMixin { final @Nullable ItemStack @NotNull [] toKeep = new ItemStack[inventory.size()]; for (int i = 0; i < inventory.size(); ++i) { ItemStack itemStack = inventory.getStack(i); - if (!itemStack.isEmpty() && EnchantmentHelper.hasVanishingCurse(itemStack)) { + if (!itemStack.isEmpty() && EnchantmentHelper.hasAnyEnchantmentsIn(itemStack, TagKey.of(Enchantments.VANISHING_CURSE.getRegistryRef(), Enchantments.VANISHING_CURSE.getValue()))) { toKeep[i] = null; continue; } @@ -69,7 +71,7 @@ public class PlayerEntityMixin { final @Nullable ItemStack @NotNull [] toDrop = new ItemStack[inventory.size()]; for (int i = 0; i < inventory.size(); ++i) { ItemStack itemStack = inventory.getStack(i); - if (!itemStack.isEmpty() && EnchantmentHelper.hasVanishingCurse(itemStack)) { + if (!itemStack.isEmpty() && EnchantmentHelper.hasAnyEnchantmentsIn(itemStack, TagKey.of(Enchantments.VANISHING_CURSE.getRegistryRef(), Enchantments.VANISHING_CURSE.getValue()))) { toDrop[i] = itemStack; continue; } diff --git a/fabric/src/main/java/net/william278/husksync/mixins/ServerPlayNetworkHandlerMixin.java b/fabric/src/main/java/net/william278/husksync/mixins/ServerPlayNetworkHandlerMixin.java index 344692bc..be99c4b6 100644 --- a/fabric/src/main/java/net/william278/husksync/mixins/ServerPlayNetworkHandlerMixin.java +++ b/fabric/src/main/java/net/william278/husksync/mixins/ServerPlayNetworkHandlerMixin.java @@ -44,7 +44,6 @@ public abstract class ServerPlayNetworkHandlerMixin { @Shadow public ServerPlayerEntity player; - @Shadow public abstract void sendPacket(Packet packet); @Inject(method = "onPlayerAction", at = @At("HEAD"), cancellable = true) @@ -83,7 +82,7 @@ public abstract class ServerPlayNetworkHandlerMixin { @Inject(method = "onCreativeInventoryAction", at = @At("HEAD"), cancellable = true) public void onCreativeInventoryAction(CreativeInventoryActionC2SPacket packet, CallbackInfo ci) { - int slot = packet.getSlot(); + int slot = packet.slot(); if (slot < 0) return; ItemStack stack = this.player.getInventory().getStack(slot); diff --git a/gradle.properties b/gradle.properties index e9087dd5..31798459 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,6 +18,6 @@ fabric_minecraft_version=1.21 fabric_loader_version=0.15.11 fabric_yarn_mappings=1.21+build.7 fabric_api_version=0.100.4+1.21 -adventure_platform_fabric_version=5.9.0 +adventure_platform_fabric_version=5.14.0 fabric_permissions_api_version=0.2-SNAPSHOT -sgui_version=1.2.2+1.20 \ No newline at end of file +sgui_version=1.6.0+1.21 \ No newline at end of file From 212bb0beb87317ccc6d45925ebbe33fb8fc1b9e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Sun, 7 Jul 2024 20:23:52 +0900 Subject: [PATCH 3/7] fix: Forgot to update upgradeItemStacks --- .../net/william278/husksync/data/FabricSerializer.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java b/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java index 077de193..c7d276b0 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricSerializer.java @@ -28,10 +28,6 @@ import net.minecraft.datafixer.TypeReferences; import net.minecraft.item.ItemStack; import net.minecraft.nbt.*; import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.Registries; -import net.minecraft.world.World; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.dimension.DimensionTypes; import net.william278.desertwell.util.Version; import net.william278.husksync.FabricHuskSync; import net.william278.husksync.HuskSync; @@ -204,6 +200,7 @@ public abstract class FabricSerializer { final int size = items.getInt("size"); final NbtList list = items.getList("items", NbtElement.COMPOUND_TYPE); final ItemStack[] itemStacks = new ItemStack[size]; + final DynamicRegistryManager registryManager = plugin.getMinecraftServer().getRegistryManager(); Arrays.fill(itemStacks, ItemStack.EMPTY); for (int i = 0; i < size; i++) { if (list.getCompound(i) == null) { @@ -211,7 +208,7 @@ public abstract class FabricSerializer { } final NbtCompound compound = list.getCompound(i); final int slot = compound.getInt("Slot"); - itemStacks[slot] = ItemStack.fromNbt(DynamicRegistryManager.of(Registries.REGISTRIES), upgradeItemData(list.getCompound(i), mcVersion, plugin)).get(); + itemStacks[slot] = ItemStack.fromNbt(registryManager, upgradeItemData(list.getCompound(i), mcVersion, plugin)).get(); } return itemStacks; } From 8e83617ac4fae0fe69e3f3d72d256995edb062ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Thu, 11 Jul 2024 15:21:22 +0900 Subject: [PATCH 4/7] ci: Update required jvm version(21) --- build.gradle | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1376862b..86ac9d90 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,7 @@ allprojects { apply plugin: 'java' compileJava.options.encoding = 'UTF-8' - compileJava.options.release.set 17 + compileJava.options.release.set 21 javadoc.options.encoding = 'UTF-8' javadoc.options.addStringOption('Xdoclint:none', '-quiet') diff --git a/gradle.properties b/gradle.properties index 31798459..6980da2b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.daemon=true -javaVersion=17 +javaVersion=21 plugin_version=3.6.7 plugin_archive=husksync From 315f0eeb2f6a3b4f3b2a6a59a5af879ae407e223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Thu, 11 Jul 2024 15:22:38 +0900 Subject: [PATCH 5/7] ci: Update jvm version(21) --- .github/workflows/ci.yml | 4 ++-- .github/workflows/pr_tests.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17e79afe..5c1882b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,10 +18,10 @@ jobs: steps: - name: 'Checkout for CI 🛎️' uses: actions/checkout@v4 - - name: 'Set up JDK 17 📦' + - name: 'Set up JDK 21 📦' uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: 'Build with Gradle 🏗️' uses: gradle/gradle-build-action@v3 diff --git a/.github/workflows/pr_tests.yml b/.github/workflows/pr_tests.yml index 949bc95f..d5e1dcfe 100644 --- a/.github/workflows/pr_tests.yml +++ b/.github/workflows/pr_tests.yml @@ -14,10 +14,10 @@ jobs: steps: - name: 'Checkout for CI 🛎' uses: actions/checkout@v4 - - name: 'Set up JDK 17 📦' + - name: 'Set up JDK 21 📦' uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: 'Build with Gradle 🏗️' uses: gradle/gradle-build-action@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36012814..0f80aa7c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,10 +14,10 @@ jobs: steps: - name: 'Checkout for CI 🛎️' uses: actions/checkout@v4 - - name: 'Set up JDK 17 📦' + - name: 'Set up JDK 21 📦' uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: 'Build with Gradle 🏗️' uses: gradle/gradle-build-action@v3 From d8272ba52dd85c6b7a377c02056cacdc7dbe2108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Thu, 11 Jul 2024 15:25:58 +0900 Subject: [PATCH 6/7] docs: update minimum required mc&jvm version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02e1ea2d..0627eac7 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ **Ready?** [It's syncing time!](https://william278.net/docs/husksync/setup) ## Setup -Requires a MySQL/Mongo/PostgreSQL database, a Redis (v5.0+) server and a network of Spigot (1.17.1+) or Fabric (1.20.1) Minecraft servers, running Java 17+. +Requires a MySQL/Mongo/PostgreSQL database, a Redis (v5.0+) server and a network of Spigot (1.17.1+) or Fabric (1.21) Minecraft servers, running Java 21+. 1. Place the plugin jar file in the `/plugins` or `/mods` directory of each Spigot/Fabric server. You do not need to install HuskSync as a proxy plugin. 2. Start, then stop every server to let HuskSync generate the config file. From fc7330213a36d71e2296c9614707ec830b1dab24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=99=ED=97=8C=ED=9D=AC?= Date: Thu, 25 Jul 2024 00:15:15 +0900 Subject: [PATCH 7/7] fix: build error due to rebase with master branch --- .../main/java/net/william278/husksync/data/FabricData.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricData.java b/fabric/src/main/java/net/william278/husksync/data/FabricData.java index f4395ce0..397ff768 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricData.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricData.java @@ -265,8 +265,8 @@ public abstract class FabricData implements Data { @Override public void apply(@NotNull FabricUser user, @NotNull FabricHuskSync plugin) throws IllegalStateException { final ServerPlayerEntity player = user.getPlayer(); - List effectsToRemove = new ArrayList<>(player.getActiveStatusEffects().keySet()); - effectsToRemove.forEach(player::removeStatusEffect); + List effectsToRemove = new ArrayList<>(player.getActiveStatusEffects().keySet().stream().map(RegistryEntry::value).toList()); + effectsToRemove.forEach(effect -> player.removeStatusEffect(RegistryEntry.of(effect))); getEffects().forEach(player::addStatusEffect); }