diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a33fde91cc..ed29d3165c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ jobs: build: strategy: matrix: - java: [17-ubuntu, 21-ubuntu] + java: [21-ubuntu] runs-on: ubuntu-22.04 container: image: mcr.microsoft.com/openjdk/jdk:${{ matrix.java }} diff --git a/build.gradle b/build.gradle index 5c0417f773..861bbf523b 100644 --- a/build.gradle +++ b/build.gradle @@ -154,7 +154,7 @@ allprojects { apply plugin: "com.diffplug.spotless" tasks.withType(JavaCompile).configureEach { - it.options.release = 17 + it.options.release = 21 } java { @@ -371,7 +371,7 @@ loom { javadoc { options { - source = "17" + source = "21" encoding = "UTF-8" charSet = "UTF-8" memberLevel = JavadocMemberLevel.PACKAGE diff --git a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java index 60efa8ac9d..0140977864 100644 --- a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java +++ b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java @@ -18,6 +18,7 @@ import java.util.List; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -25,6 +26,7 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; @@ -33,7 +35,7 @@ @Mixin(ItemStack.class) public abstract class ItemStackMixin { @Inject(method = "getTooltip", at = @At("RETURN")) - private void getTooltip(PlayerEntity entity, TooltipContext tooltipContext, CallbackInfoReturnable> info) { + private void getTooltip(Item.class_9635 arg, @Nullable PlayerEntity entity, TooltipContext tooltipContext, CallbackInfoReturnable> info) { ItemTooltipCallback.EVENT.invoker().getTooltip((ItemStack) (Object) this, tooltipContext, info.getReturnValue()); } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java index 3d5c8a7556..8cb80e2e63 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java @@ -16,15 +16,10 @@ package net.fabricmc.fabric.api.item.v1; -import com.google.common.collect.Multimap; - -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.attribute.EntityAttribute; -import net.minecraft.entity.attribute.EntityAttributeModifier; +import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Hand; import net.fabricmc.fabric.impl.item.FabricItemInternals; @@ -69,16 +64,15 @@ default boolean allowContinuingBlockBreaking(PlayerEntity player, ItemStack oldS /** * Return the attribute modifiers to apply when this stack is worn in a living entity equipment slot. - * Stack-aware version of {@link Item#getAttributeModifiers(EquipmentSlot)}. + * Stack-aware version of {@link Item#getAttributeModifiers()}. * *

Note that attribute modifiers are only updated when the stack changes, i.e. when {@code ItemStack.areEqual(old, new)} is false. * * @param stack the current stack - * @param slot the equipment slot this stack is in * @return the attribute modifiers */ - default Multimap, EntityAttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot slot) { - return ((Item) this).getAttributeModifiers(slot); + default AttributeModifiersComponent getAttributeModifiers(ItemStack stack) { + return ((Item) this).getAttributeModifiers(); } /** diff --git a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java index 2d6c0f4194..a11081af34 100644 --- a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java +++ b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java @@ -16,19 +16,15 @@ package net.fabricmc.fabric.test.item; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; - import net.minecraft.block.BlockState; +import net.minecraft.component.type.AttributeModifierSlot; +import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.entity.Entity; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Hand; import net.minecraft.world.World; @@ -66,13 +62,11 @@ private boolean isEnabled(ItemStack stack) { } @Override - public Multimap, EntityAttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot slot) { + public AttributeModifiersComponent getAttributeModifiers(ItemStack stack) { // Give + 5 attack damage for 15 seconds every 30 seconds. - if (slot == EquipmentSlot.MAINHAND && isEnabled(stack)) { - return ImmutableMultimap.of(EntityAttributes.GENERIC_ATTACK_DAMAGE, PLUS_FIVE); - } else { - return ImmutableMultimap.of(); - } + return AttributeModifiersComponent.builder() + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, PLUS_FIVE, AttributeModifierSlot.MAINHAND) + .build(); } @Override diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/StructuresToConfiguredStructuresFixMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/StructuresToConfiguredStructuresFixMixin.java deleted file mode 100644 index fa094cef9d..0000000000 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/StructuresToConfiguredStructuresFixMixin.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2016, 2017, 2018, 2019 FabricMC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.fabricmc.fabric.mixin.registry.sync; - -import java.util.Locale; - -import com.mojang.datafixers.util.Pair; -import com.mojang.serialization.Dynamic; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.datafixer.fix.StructuresToConfiguredStructuresFix; - -@Mixin(StructuresToConfiguredStructuresFix.class) -public class StructuresToConfiguredStructuresFixMixin { - private static final Logger LOGGER = LoggerFactory.getLogger("MixinStructuresToConfiguredStructuresFix"); - - /** - * Vanilla throws a IllegalStateException when there is no mapping for a structure to upgrade, this causes the chunk to reset and regenerate. - * Now we just return the previous value, this can still cause a missing structure log warning, but it is a lot better than resetting the chunk. - */ - @Inject(method = "method_41022", at = @At(value = "INVOKE", target = "Ljava/lang/IllegalStateException;(Ljava/lang/String;)V"), cancellable = true) - private void method_41022(Pair, Dynamic> pair, Dynamic dynamic, CallbackInfoReturnable> cir) { - String id = pair.getFirst().asString("UNKNOWN").toLowerCase(Locale.ROOT); - LOGGER.debug("Found unknown structure: {}", id); - cir.setReturnValue(pair.getSecond().createString(id)); - } -} diff --git a/fabric-registry-sync-v0/src/main/resources/fabric-registry-sync-v0.mixins.json b/fabric-registry-sync-v0/src/main/resources/fabric-registry-sync-v0.mixins.json index 474cb44dc4..36ddad6268 100644 --- a/fabric-registry-sync-v0/src/main/resources/fabric-registry-sync-v0.mixins.json +++ b/fabric-registry-sync-v0/src/main/resources/fabric-registry-sync-v0.mixins.json @@ -14,7 +14,6 @@ "SaveLoadingMixin", "SerializableRegistriesMixin", "SimpleRegistryMixin", - "StructuresToConfiguredStructuresFixMixin", "TagManagerLoaderMixin" ], "injectors": { diff --git a/gradle.properties b/gradle.properties index bd02fc3f52..33374a1e8c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx2560M org.gradle.parallel=true fabric.loom.multiProjectOptimisation=true -version=0.96.13 -minecraft_version=24w13a -yarn_version=+build.7 +version=0.96.14 +minecraft_version=24w14a +yarn_version=+build.1 loader_version=0.15.6 installer_version=0.11.1 @@ -12,52 +12,52 @@ prerelease=true curseforge_minecraft_version=1.20.5-Snapshot # Do not manually update, use the bumpversions task: -fabric-api-base-version=0.4.38 -fabric-api-lookup-api-v1-version=1.6.57 -fabric-biome-api-v1-version=13.0.21 -fabric-block-api-v1-version=1.0.18 -fabric-block-view-api-v2-version=1.0.6 -fabric-blockrenderlayer-v1-version=1.1.48 -fabric-command-api-v1-version=1.2.43 -fabric-command-api-v2-version=2.2.22 -fabric-commands-v0-version=0.2.60 -fabric-content-registries-v0-version=6.0.15 -fabric-crash-report-info-v1-version=0.2.25 -fabric-data-attachment-api-v1-version=1.1.10 -fabric-data-generation-api-v1-version=18.0.1 -fabric-dimensions-v1-version=2.1.65 -fabric-entity-events-v1-version=1.6.6 -fabric-events-interaction-v0-version=0.7.4 -fabric-events-lifecycle-v0-version=0.2.85 -fabric-game-rule-api-v1-version=1.0.48 -fabric-gametest-api-v1-version=1.3.11 -fabric-item-api-v1-version=6.0.1 -fabric-item-group-api-v1-version=4.0.33 -fabric-key-binding-api-v1-version=1.0.43 -fabric-keybindings-v0-version=0.2.41 -fabric-lifecycle-events-v1-version=2.3.2 -fabric-loot-api-v2-version=2.1.14 -fabric-message-api-v1-version=6.0.8 -fabric-model-loading-api-v1-version=1.0.10 -fabric-models-v0-version=0.4.9 -fabric-networking-api-v1-version=4.0.5 -fabric-object-builder-api-v1-version=15.0.1 -fabric-particles-v1-version=2.0.1 -fabric-recipe-api-v1-version=5.0.0 -fabric-registry-sync-v0-version=5.0.11 -fabric-renderer-api-v1-version=3.2.10 -fabric-renderer-indigo-version=1.5.10 -fabric-renderer-registries-v1-version=3.2.59 -fabric-rendering-data-attachment-v1-version=0.3.44 -fabric-rendering-fluids-v1-version=3.1.1 -fabric-rendering-v0-version=1.1.62 -fabric-rendering-v1-version=4.2.2 -fabric-resource-conditions-api-v1-version=3.0.0 -fabric-resource-loader-v0-version=1.0.0 -fabric-screen-api-v1-version=2.0.19 -fabric-screen-handler-api-v1-version=1.3.68 -fabric-sound-api-v1-version=1.0.19 -fabric-transfer-api-v1-version=5.1.3 -fabric-transitive-access-wideners-v1-version=6.0.7 -fabric-convention-tags-v1-version=1.5.15 -fabric-client-tags-api-v1-version=1.1.9 +fabric-api-base-version=0.4.39 +fabric-api-lookup-api-v1-version=1.6.58 +fabric-biome-api-v1-version=13.0.22 +fabric-block-api-v1-version=1.0.19 +fabric-block-view-api-v2-version=1.0.7 +fabric-blockrenderlayer-v1-version=1.1.49 +fabric-command-api-v1-version=1.2.44 +fabric-command-api-v2-version=2.2.23 +fabric-commands-v0-version=0.2.61 +fabric-content-registries-v0-version=6.0.16 +fabric-crash-report-info-v1-version=0.2.26 +fabric-data-attachment-api-v1-version=1.1.11 +fabric-data-generation-api-v1-version=18.0.2 +fabric-dimensions-v1-version=2.1.66 +fabric-entity-events-v1-version=1.6.7 +fabric-events-interaction-v0-version=0.7.5 +fabric-events-lifecycle-v0-version=0.2.86 +fabric-game-rule-api-v1-version=1.0.49 +fabric-gametest-api-v1-version=1.3.12 +fabric-item-api-v1-version=7.0.0 +fabric-item-group-api-v1-version=4.0.34 +fabric-key-binding-api-v1-version=1.0.44 +fabric-keybindings-v0-version=0.2.42 +fabric-lifecycle-events-v1-version=2.3.3 +fabric-loot-api-v2-version=3.0.0 +fabric-message-api-v1-version=6.0.9 +fabric-model-loading-api-v1-version=1.0.11 +fabric-models-v0-version=0.4.10 +fabric-networking-api-v1-version=4.0.6 +fabric-object-builder-api-v1-version=15.0.2 +fabric-particles-v1-version=3.0.0 +fabric-recipe-api-v1-version=5.0.1 +fabric-registry-sync-v0-version=5.0.12 +fabric-renderer-api-v1-version=3.2.11 +fabric-renderer-indigo-version=1.5.11 +fabric-renderer-registries-v1-version=3.2.60 +fabric-rendering-data-attachment-v1-version=0.3.45 +fabric-rendering-fluids-v1-version=3.1.2 +fabric-rendering-v0-version=1.1.63 +fabric-rendering-v1-version=4.2.3 +fabric-resource-conditions-api-v1-version=3.0.1 +fabric-resource-loader-v0-version=1.0.1 +fabric-screen-api-v1-version=2.0.20 +fabric-screen-handler-api-v1-version=1.3.69 +fabric-sound-api-v1-version=1.0.20 +fabric-transfer-api-v1-version=5.1.4 +fabric-transitive-access-wideners-v1-version=6.0.8 +fabric-convention-tags-v1-version=1.5.16 +fabric-client-tags-api-v1-version=1.1.10 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 11aad5975f..ed25241463 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,7 +20,7 @@ ], "depends": { "fabricloader": ">=0.15.6", - "java": ">=17", + "java": ">=21", "minecraft": ">=1.20.5- <1.20.6-" }, "description": "Core API module providing key hooks and intercompatibility features."