diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ca3795..080f39c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: matrix: # Use these Java versions java: [ - 17, # Current Java LTS & minimum supported by Minecraft + 21 # Current Java LTS & minimum supported by Minecraft ] # and run on both Linux and Windows os: [ubuntu-22.04, windows-2022] @@ -33,7 +33,7 @@ jobs: - name: build run: ./gradlew build - name: capture build artifacts - if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS + if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS uses: actions/upload-artifact@v3 with: name: Artifacts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8e44eaf..d6a3f2e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,11 +8,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@v2 with: distribution: 'adopt-hotspot' - java-version: 17 + java-version: 21 cache: 'gradle' - name: make gradle wrapper executable diff --git a/CHANGELOG.md b/CHANGELOG.md index 84726d8..4a69bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,4 @@ ### Changed: -- No pause nutrition screen -- Starter nutritions set to half +- Updated to mc 1.21 ### Added: - \ No newline at end of file diff --git a/build.gradle b/build.gradle index 776e73a..51dc16d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.4-SNAPSHOT' + id 'fabric-loom' version '1.7-SNAPSHOT' id 'maven-publish' } @@ -48,22 +48,19 @@ processResources { } tasks.withType(JavaCompile).configureEach { - it.options.release = 17 + it.options.release = 21 } java { - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. withSourcesJar() - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } jar { from("LICENSE") { - rename { "${it}_${project.base.archivesName.get()}"} + rename { "${it}_${project.archivesBaseName}"} } } diff --git a/gradle.properties b/gradle.properties index 662b76d..2567346 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.20.1 - yarn_mappings=1.20.1+build.10 - loader_version=0.14.24 + minecraft_version=1.21.1 + yarn_mappings=1.21.1+build.3 + loader_version=0.16.2 # Mod Properties mod_version=1.0.3 @@ -14,7 +14,7 @@ org.gradle.parallel=true archives_base_name=nutritionz # Dependencies - fabric_version=0.90.7+1.20.1 - cloth_config_version=11.0.99 - mod_menu_version=7.0.0 + fabric_version=0.102.1+1.21.1 + cloth_config_version=15.0.130 + mod_menu_version=11.0.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 033e24c..e644113 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ac72c34..a441313 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.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index fcb6fca..1aa94a4 100644 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -201,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..25da30d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/src/main/java/net/nutritionz/NutritionClient.java b/src/main/java/net/nutritionz/NutritionClient.java index 0548a44..417bec0 100644 --- a/src/main/java/net/nutritionz/NutritionClient.java +++ b/src/main/java/net/nutritionz/NutritionClient.java @@ -14,5 +14,4 @@ public void onInitializeClient() { RenderInit.init(); NutritionClientPacket.init(); } - } diff --git a/src/main/java/net/nutritionz/data/NutritionLoader.java b/src/main/java/net/nutritionz/data/NutritionLoader.java index 8333db7..854d708 100644 --- a/src/main/java/net/nutritionz/data/NutritionLoader.java +++ b/src/main/java/net/nutritionz/data/NutritionLoader.java @@ -12,6 +12,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import net.minecraft.registry.entry.RegistryEntry; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -38,7 +39,7 @@ public class NutritionLoader implements SimpleSynchronousResourceReloadListener @Override public Identifier getFabricId() { - return new Identifier("nutritionz", "loader"); + return Identifier.of("nutritionz", "loader"); } @Override @@ -52,13 +53,13 @@ public void reload(ResourceManager manager) { Iterator iterator = data.keySet().iterator(); while (iterator.hasNext()) { String itemId = iterator.next(); - if (Registries.ITEM.get(new Identifier(itemId)).toString().equals("air")) { + if (Registries.ITEM.get(Identifier.of(itemId)).toString().equals("air")) { LOGGER.info("{} is not a valid item identifier", itemId); continue; } JsonObject jsonObject = data.get(itemId).getAsJsonObject(); - Item item = Registries.ITEM.get(new Identifier(itemId)); + Item item = Registries.ITEM.get(Identifier.of(itemId)); if (replaceList.containsKey(item)) { continue; } @@ -133,11 +134,9 @@ public void reload(ResourceManager manager) { private static void processEffects(JsonObject effectsJsonObject, HashMap> nutritionEffectsMap, int i) { List list = new ArrayList(); - Iterator iterator = effectsJsonObject.keySet().iterator(); - while (iterator.hasNext()) { - String effectId = iterator.next(); - Identifier effectIdentifier = new Identifier(effectId); + for (String effectId : effectsJsonObject.keySet()) { + Identifier effectIdentifier = Identifier.of(effectId); if (!Registries.STATUS_EFFECT.containsId(effectIdentifier) && !Registries.ATTRIBUTE.containsId(effectIdentifier)) { LOGGER.info("{} is not a valid status effect identifier nor attribute identifier", effectIdentifier); @@ -146,11 +145,11 @@ private static void processEffects(JsonObject effectsJsonObject, HashMap attributeModifiers = LinkedHashMultimap.create(); - attributeModifiers.put(Registries.ATTRIBUTE.get(effectIdentifier), new EntityAttributeModifier(Registries.ATTRIBUTE.get(effectIdentifier).getTranslationKey(), + Multimap, EntityAttributeModifier> attributeModifiers = LinkedHashMultimap.create(); + attributeModifiers.put(Registries.ATTRIBUTE.getEntry(effectIdentifier).get(), new EntityAttributeModifier(effectIdentifier, effectJsonObject.get("value").getAsFloat(), Operation.valueOf(effectJsonObject.get("operation").getAsString().toUpperCase()))); list.add(attributeModifiers); } diff --git a/src/main/java/net/nutritionz/init/EventInit.java b/src/main/java/net/nutritionz/init/EventInit.java index 9bf2306..dbed5d0 100644 --- a/src/main/java/net/nutritionz/init/EventInit.java +++ b/src/main/java/net/nutritionz/init/EventInit.java @@ -17,7 +17,7 @@ public class EventInit { public static void init() { ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { - NutritionServerPacket.writeS2CItemNutritionPacket(handler); + NutritionServerPacket.writeS2CItemNutritionPacket(handler.getPlayer()); }); if (FabricLoader.getInstance().isModLoaded("dehydration")) { DrinkEvent.EVENT.register((ItemStack stack, PlayerEntity player) -> { @@ -35,91 +35,91 @@ public static void init() { } // datapacks if (FabricLoader.getInstance().isModLoaded("adventurez")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "adventurez_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "adventurez_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("bakery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "bakery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "bakery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("beachparty")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "beachparty_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "beachparty_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("betterend")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "betterend_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "betterend_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("betternether")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "betternether_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "betternether_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("brewery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "brewery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "brewery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("candlelight")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "candlelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "candlelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("dehydration")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "dehydration_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "dehydration_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("dehydration") && FabricLoader.getInstance().isModLoaded("meadow")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "dehydration_x_meadow_nutrition_compat"), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "dehydration_x_meadow_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("dehydration") && FabricLoader.getInstance().isModLoaded("nethervinery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "dehydration_x_nethervinery_nutrition_compat"), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "dehydration_x_nethervinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("dehydration") && FabricLoader.getInstance().isModLoaded("vinery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "dehydration_x_vinery_nutrition_compat"), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "dehydration_x_vinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("expandeddelight")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "expandeddelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "expandeddelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("farmersdelight")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "farmersdelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "farmersdelight_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("herbalbrews")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "herbalbrews_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "herbalbrews_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("hybrid-aquatic")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "hybrid-aquatic_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "hybrid-aquatic_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("meadow")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "meadow_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "meadow_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("mobcatalog")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "mobcatalog_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "mobcatalog_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("naturalist")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "naturalist_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "naturalist_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("nethervinery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "nethervinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "nethervinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("regions_unexplored")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "regions_unexplored_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "regions_unexplored_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("supplementaries")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "supplementaries_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "supplementaries_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } if (FabricLoader.getInstance().isModLoaded("vinery")) { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("nutritionz", "vinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("nutritionz", "vinery_nutrition_compat"), FabricLoader.getInstance().getModContainer("nutritionz").orElseThrow(), ResourcePackActivationType.DEFAULT_ENABLED); } } diff --git a/src/main/java/net/nutritionz/init/RenderInit.java b/src/main/java/net/nutritionz/init/RenderInit.java index 16a7c62..eafcff2 100644 --- a/src/main/java/net/nutritionz/init/RenderInit.java +++ b/src/main/java/net/nutritionz/init/RenderInit.java @@ -8,7 +8,7 @@ @Environment(EnvType.CLIENT) public class RenderInit { - public static final Identifier NUTRITION_ICONS = new Identifier("nutritionz", "textures/gui/icons.png"); + public static final Identifier NUTRITION_ICONS = Identifier.of("nutritionz", "textures/gui/icons.png"); public static void init() { HudRenderCallback.EVENT.register((context, tickDelta) -> { diff --git a/src/main/java/net/nutritionz/mixin/HungerManagerMixin.java b/src/main/java/net/nutritionz/mixin/HungerManagerMixin.java index 49e8dd1..a83854e 100644 --- a/src/main/java/net/nutritionz/mixin/HungerManagerMixin.java +++ b/src/main/java/net/nutritionz/mixin/HungerManagerMixin.java @@ -7,6 +7,8 @@ import com.google.common.collect.Multimap; +import net.minecraft.component.type.FoodComponent; +import net.minecraft.registry.entry.RegistryEntry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -50,17 +52,6 @@ public class HungerManagerMixin implements HungerManagerAccess { @Shadow private int foodTickTimer; - @Inject(method = "eat", at = @At("TAIL")) - private void eatMixin(Item item, ItemStack stack, CallbackInfo info) { - if (NutritionMain.NUTRITION_ITEM_MAP.containsKey(item)) { - for (int i = 0; i < NutritionMain.NUTRITION_ITEM_MAP.get(item).size(); i++) { - if (NutritionMain.NUTRITION_ITEM_MAP.get(item).get(i) > 0) { - addNutritionLevel(i, NutritionMain.NUTRITION_ITEM_MAP.get(item).get(i)); - } - } - } - } - @Inject(method = "update", at = @At(value = "INVOKE_ASSIGN", target = "Ljava/lang/Math;max(II)I", ordinal = 0)) private void updateNutritionMixin(PlayerEntity player, CallbackInfo info) { decrementNutritionLevel(0, 1); @@ -93,8 +84,8 @@ private void updateNutritionEffectsMixin(PlayerEntity player, CallbackInfo info) || player.getStatusEffect(statusEffectInstance.getEffectType()).getDuration() < statusEffectInstance.getDuration() - 50) { player.addStatusEffect(new StatusEffectInstance(statusEffectInstance)); } - } else if (!this.effectMap.get(i) && negativeEffectList.get(u) instanceof Multimap) { - player.getAttributes().addTemporaryModifiers((Multimap) negativeEffectList.get(u)); + } else if (!this.effectMap.get(i) && negativeEffectList.get(u) instanceof Multimap multimap) { + player.getAttributes().addTemporaryModifiers(multimap); changedAttributes = true; } } diff --git a/src/main/java/net/nutritionz/mixin/PlayerEntityMixin.java b/src/main/java/net/nutritionz/mixin/PlayerEntityMixin.java new file mode 100644 index 0000000..a70bfb9 --- /dev/null +++ b/src/main/java/net/nutritionz/mixin/PlayerEntityMixin.java @@ -0,0 +1,32 @@ +package net.nutritionz.mixin; + +import net.minecraft.component.type.FoodComponent; +import net.minecraft.entity.player.HungerManager; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.nutritionz.NutritionMain; +import net.nutritionz.access.HungerManagerAccess; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntityMixin { + + @Inject(method = "eatFood", at = @At("HEAD")) + private void eatFoodMixin(World world, ItemStack stack, FoodComponent foodComponent, CallbackInfoReturnable info) { + if (NutritionMain.NUTRITION_ITEM_MAP.containsKey(stack.getItem())) { + for (int i = 0; i < NutritionMain.NUTRITION_ITEM_MAP.get(stack.getItem()).size(); i++) { + if (NutritionMain.NUTRITION_ITEM_MAP.get(stack.getItem()).get(i) > 0) { + ((HungerManagerAccess) getHungerManager()).addNutritionLevel(i, NutritionMain.NUTRITION_ITEM_MAP.get(stack.getItem()).get(i)); + } + } + } + } + + @Shadow + public abstract HungerManager getHungerManager(); +} diff --git a/src/main/java/net/nutritionz/mixin/client/ItemStackMixin.java b/src/main/java/net/nutritionz/mixin/client/ItemStackMixin.java index a07282c..41a28ed 100644 --- a/src/main/java/net/nutritionz/mixin/client/ItemStackMixin.java +++ b/src/main/java/net/nutritionz/mixin/client/ItemStackMixin.java @@ -2,6 +2,8 @@ import java.util.List; +import net.minecraft.item.Item; +import net.minecraft.item.tooltip.TooltipType; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -11,7 +13,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; @@ -21,8 +22,8 @@ @Mixin(ItemStack.class) public class ItemStackMixin { - @Inject(method = "getTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/Item;appendTooltip(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Ljava/util/List;Lnet/minecraft/client/item/TooltipContext;)V"), locals = LocalCapture.CAPTURE_FAILSOFT) - private void getTooltipMixin(@Nullable PlayerEntity player, TooltipContext context, CallbackInfoReturnable> info, List list) { + @Inject(method = "getTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;appendTooltip(Lnet/minecraft/component/ComponentType;Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V", ordinal = 0), locals = LocalCapture.CAPTURE_FAILSOFT) + private void getTooltipMixin(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable> info, List list) { if (player != null) { NutritionUtil.addNutritionToolTip((ItemStack) (Object) this, list); } diff --git a/src/main/java/net/nutritionz/network/NutritionClientPacket.java b/src/main/java/net/nutritionz/network/NutritionClientPacket.java index 140c6f2..3f8311b 100644 --- a/src/main/java/net/nutritionz/network/NutritionClientPacket.java +++ b/src/main/java/net/nutritionz/network/NutritionClientPacket.java @@ -1,130 +1,147 @@ package net.nutritionz.network; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.UUID; +import java.util.*; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; -import io.netty.buffer.Unpooled; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.client.MinecraftClient; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributeModifier.Operation; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket; import net.minecraft.registry.Registries; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.nutritionz.NutritionMain; import net.nutritionz.access.HungerManagerAccess; +import net.nutritionz.network.packet.NutritionEffectPacket; +import net.nutritionz.network.packet.NutritionItemPacket; +import net.nutritionz.network.packet.NutritionPacket; +import net.nutritionz.network.packet.NutritionSyncPacket; @Environment(EnvType.CLIENT) public class NutritionClientPacket { public static void init() { - ClientPlayNetworking.registerGlobalReceiver(NutritionServerPacket.NUTRITION_SYNC_PACKET, (client, handler, buf, sender) -> { - int carbohydrateLevel = buf.readInt(); - int proteinLevel = buf.readInt(); - int fatLevel = buf.readInt(); - int vitaminLevel = buf.readInt(); - int mineralLevel = buf.readInt(); - - client.execute(() -> { - ((HungerManagerAccess) client.player.getHungerManager()).setNutritionLevel(0, carbohydrateLevel); - ((HungerManagerAccess) client.player.getHungerManager()).setNutritionLevel(1, proteinLevel); - ((HungerManagerAccess) client.player.getHungerManager()).setNutritionLevel(2, fatLevel); - ((HungerManagerAccess) client.player.getHungerManager()).setNutritionLevel(3, vitaminLevel); - ((HungerManagerAccess) client.player.getHungerManager()).setNutritionLevel(4, mineralLevel); + ClientPlayNetworking.registerGlobalReceiver(NutritionPacket.PACKET_ID, (payload, context) -> { + int carbohydrateLevel = payload.carbohydrateLevel(); + int proteinLevel = payload.proteinLevel(); + int fatLevel = payload.fatLevel(); + int vitaminLevel = payload.vitaminLevel(); + int mineralLevel = payload.mineralLevel(); + + context.client().execute(() -> { + ((HungerManagerAccess) context.player().getHungerManager()).setNutritionLevel(0, carbohydrateLevel); + ((HungerManagerAccess) context.player().getHungerManager()).setNutritionLevel(1, proteinLevel); + ((HungerManagerAccess) context.player().getHungerManager()).setNutritionLevel(2, fatLevel); + ((HungerManagerAccess) context.player().getHungerManager()).setNutritionLevel(3, vitaminLevel); + ((HungerManagerAccess) context.player().getHungerManager()).setNutritionLevel(4, mineralLevel); }); }); - ClientPlayNetworking.registerGlobalReceiver(NutritionServerPacket.ITEM_NUTRITION_PACKET, (client, handler, buf, sender) -> { - List list = new ArrayList(); - while (buf.isReadable()) { - list.add(buf.readInt()); - } - client.execute(() -> { + ClientPlayNetworking.registerGlobalReceiver(NutritionItemPacket.PACKET_ID, (payload, context) -> { + List itemIds = payload.itemIds(); + List nutritionValues = payload.nutritionValues(); + + context.client().execute(() -> { NutritionMain.NUTRITION_ITEM_MAP.clear(); - for (int i = 0; i < list.size(); i += 6) { + for (int i = 0; i < itemIds.size(); i++) { List nutritionList = new ArrayList(); - nutritionList.add(list.get(i + 1)); - nutritionList.add(list.get(i + 2)); - nutritionList.add(list.get(i + 3)); - nutritionList.add(list.get(i + 4)); - nutritionList.add(list.get(i + 5)); - NutritionMain.NUTRITION_ITEM_MAP.put(Registries.ITEM.get(list.get(i)), nutritionList); + nutritionList.add(nutritionValues.get(i * 5)); + nutritionList.add(nutritionValues.get(i * 5 + 1)); + nutritionList.add(nutritionValues.get(i * 5 + 2)); + nutritionList.add(nutritionValues.get(i * 5 + 3)); + nutritionList.add(nutritionValues.get(i * 5 + 4)); + NutritionMain.NUTRITION_ITEM_MAP.put(Registries.ITEM.get(itemIds.get(i)), nutritionList); } }); }); - ClientPlayNetworking.registerGlobalReceiver(NutritionServerPacket.EFFECT_NUTRITION_PACKET, (client, handler, buf, sender) -> { - - List>> list = new ArrayList>>(); - - for (int i = 0; i < 2; i++) { - HashMap> map = new HashMap>(); - int size = buf.readInt(); - - for (int u = 0; u < size; u++) { - List objectList = new ArrayList(); - int nutritionKey = buf.readInt(); - int nutritionSize = buf.readInt(); - - for (int o = 0; o < nutritionSize; o++) { - if (buf.readBoolean()) { - Identifier identifier = buf.readIdentifier(); - int duration = buf.readInt(); - int amplifier = buf.readInt(); - objectList.add(new StatusEffectInstance(Registries.STATUS_EFFECT.get(identifier), duration, amplifier, false, false, true)); - } else { - Identifier identifier = buf.readIdentifier(); - UUID uuid = buf.readUuid(); - float value = buf.readFloat(); - String operation = buf.readString(); - Multimap attributeModifiers = LinkedHashMultimap.create(); - attributeModifiers.put(Registries.ATTRIBUTE.get(identifier), - new EntityAttributeModifier(uuid, Registries.ATTRIBUTE.get(identifier).getTranslationKey(), value, Operation.valueOf(operation.toUpperCase()))); - objectList.add(attributeModifiers); - } + ClientPlayNetworking.registerGlobalReceiver(NutritionEffectPacket.PACKET_ID, (payload, context) -> { + + List positiveEffectCount = payload.positiveEffectCount(); + List positiveEffectIds = payload.positiveEffectIds(); + List positiveEffectDurations = payload.positiveEffectDurations(); + List positiveEffectAmplifiers = payload.positiveEffectAmplifiers(); + List positiveAttributeIds = payload.positiveAttributeIds(); + List positiveAttributeValues = payload.positiveAttributeValues(); + List positiveAttributeOperations = payload.positiveAttributeOperations(); + + List negativeEffectCount = payload.negativeEffectCount(); + List negativeEffectIds = payload.negativeEffectIds(); + List negativeEffectDurations = payload.negativeEffectDurations(); + List negativeEffectAmplifiers = payload.negativeEffectAmplifiers(); + List negativeAttributeIds = payload.negativeAttributeIds(); + List negativeAttributeValues = payload.negativeAttributeValues(); + List negativeAttributeOperations = payload.negativeAttributeOperations(); + + HashMap> positiveEffectMap = new HashMap<>(); + int effectCount = 0; + int attributeCount = 0; + for (int i = 0; i < positiveEffectCount.size() / 2; i++) { + List list = new ArrayList<>(); + + for (int u = 0; u < positiveEffectCount.get(i * 2); u++) { + if (Registries.STATUS_EFFECT.get(positiveEffectIds.get(effectCount)) != null) { + list.add(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(positiveEffectIds.get(effectCount)).get(), positiveEffectDurations.get(effectCount), positiveEffectAmplifiers.get(effectCount), false, false, true)); + } + effectCount++; + } + + for (int u = 0; u < positiveEffectCount.get(i * 2 + 1); u++) { + if (Registries.ATTRIBUTE.get(positiveAttributeIds.get(attributeCount)) != null) { + Multimap, EntityAttributeModifier> attributeModifiers = LinkedHashMultimap.create(); + attributeModifiers.put(Registries.ATTRIBUTE.getEntry(positiveAttributeIds.get(attributeCount)).get(), + new EntityAttributeModifier(Registries.ATTRIBUTE.getId(Registries.ATTRIBUTE.get(positiveAttributeIds.get(attributeCount))), positiveAttributeValues.get(attributeCount), Operation.valueOf(positiveAttributeOperations.get(attributeCount).toUpperCase()))); + list.add(attributeModifiers); } - map.put(nutritionKey, objectList); + attributeCount++; } - list.add(map); + + positiveEffectMap.put(i, list); } - client.execute(() -> { - NutritionMain.NUTRITION_POSITIVE_EFFECTS.clear(); - NutritionMain.NUTRITION_NEGATIVE_EFFECTS.clear(); - Iterator>> iterator = list.iterator(); - boolean positive = true; - while (iterator.hasNext()) { - HashMap> map = iterator.next(); - if (positive) { - map.forEach((nutritionKey, effectList) -> { - NutritionMain.NUTRITION_POSITIVE_EFFECTS.put(nutritionKey, effectList); - }); - } else { - map.forEach((nutritionKey, effectList) -> { - NutritionMain.NUTRITION_NEGATIVE_EFFECTS.put(nutritionKey, effectList); - }); + HashMap> negativeEffectMap = new HashMap<>(); + + effectCount = 0; + attributeCount = 0; + for (int i = 0; i < negativeEffectCount.size() / 2; i++) { + List list = new ArrayList<>(); + + for (int u = 0; u < negativeEffectCount.get(i * 2); u++) { + if (Registries.STATUS_EFFECT.get(negativeEffectIds.get(effectCount)) != null) { + list.add(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(negativeEffectIds.get(effectCount)).get(), negativeEffectDurations.get(effectCount), negativeEffectAmplifiers.get(effectCount), false, false, true)); + } + effectCount++; + } + + for (int u = 0; u < negativeEffectCount.get(i * 2 + 1); u++) { + if (Registries.ATTRIBUTE.get(negativeAttributeIds.get(attributeCount)) != null) { + Multimap, EntityAttributeModifier> attributeModifiers = LinkedHashMultimap.create(); + attributeModifiers.put(Registries.ATTRIBUTE.getEntry(negativeAttributeIds.get(attributeCount)).get(), + new EntityAttributeModifier(Registries.ATTRIBUTE.getId(Registries.ATTRIBUTE.get(negativeAttributeIds.get(attributeCount))), negativeAttributeValues.get(attributeCount), EntityAttributeModifier.Operation.valueOf(negativeAttributeOperations.get(attributeCount).toUpperCase()))); + list.add(attributeModifiers); } - positive = false; + attributeCount++; } + + negativeEffectMap.put(i, list); + } + + context.client().execute(() -> { + NutritionMain.NUTRITION_POSITIVE_EFFECTS.clear(); + NutritionMain.NUTRITION_NEGATIVE_EFFECTS.clear(); + positiveEffectMap.forEach(NutritionMain.NUTRITION_POSITIVE_EFFECTS::put); + negativeEffectMap.forEach(NutritionMain.NUTRITION_NEGATIVE_EFFECTS::put); }); }); } public static void writeC2SNutritionPacket() { - PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); - CustomPayloadC2SPacket packet = new CustomPayloadC2SPacket(NutritionServerPacket.SEND_NUTRITION_PACKET, buf); - MinecraftClient.getInstance().getNetworkHandler().sendPacket(packet); + ClientPlayNetworking.send(new NutritionSyncPacket()); } } diff --git a/src/main/java/net/nutritionz/network/NutritionServerPacket.java b/src/main/java/net/nutritionz/network/NutritionServerPacket.java index 68c0e08..8852aa1 100644 --- a/src/main/java/net/nutritionz/network/NutritionServerPacket.java +++ b/src/main/java/net/nutritionz/network/NutritionServerPacket.java @@ -1,100 +1,122 @@ package net.nutritionz.network; -import java.util.Iterator; +import java.util.ArrayList; import java.util.List; import java.util.Map; import com.google.common.collect.Multimap; -import io.netty.buffer.Unpooled; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; import net.minecraft.registry.Registries; -import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.Identifier; import net.nutritionz.NutritionMain; import net.nutritionz.access.HungerManagerAccess; +import net.nutritionz.network.packet.NutritionEffectPacket; +import net.nutritionz.network.packet.NutritionItemPacket; +import net.nutritionz.network.packet.NutritionPacket; +import net.nutritionz.network.packet.NutritionSyncPacket; public class NutritionServerPacket { - public static final Identifier NUTRITION_SYNC_PACKET = new Identifier("nutritionz", "nutrition_sync_packet"); - public static final Identifier SEND_NUTRITION_PACKET = new Identifier("nutritionz", "send_nutrition_packet"); - - public static final Identifier ITEM_NUTRITION_PACKET = new Identifier("nutritionz", "item_nutrition_packet"); - public static final Identifier EFFECT_NUTRITION_PACKET = new Identifier("nutritionz", "effect_nutrition_packet"); - public static void init() { - ServerPlayNetworking.registerGlobalReceiver(SEND_NUTRITION_PACKET, (server, player, handler, buffer, sender) -> { - server.execute(() -> { - writeS2CNutritionPacket(player, ((HungerManagerAccess) player.getHungerManager())); - writeS2CEffectNutritionPacket(handler); + PayloadTypeRegistry.playS2C().register(NutritionPacket.PACKET_ID, NutritionPacket.PACKET_CODEC); + PayloadTypeRegistry.playS2C().register(NutritionItemPacket.PACKET_ID, NutritionItemPacket.PACKET_CODEC); + PayloadTypeRegistry.playS2C().register(NutritionEffectPacket.PACKET_ID, NutritionEffectPacket.PACKET_CODEC); + PayloadTypeRegistry.playC2S().register(NutritionSyncPacket.PACKET_ID, NutritionSyncPacket.PACKET_CODEC); + + ServerPlayNetworking.registerGlobalReceiver(NutritionSyncPacket.PACKET_ID, (payload, context) -> { + context.server().execute(() -> { + writeS2CNutritionPacket(context.player(), ((HungerManagerAccess) context.player().getHungerManager())); + writeS2CEffectNutritionPacket(context.player()); }); }); } public static void writeS2CNutritionPacket(ServerPlayerEntity serverPlayerEntity, HungerManagerAccess hungerManagerAccess) { - PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); - buf.writeInt(hungerManagerAccess.getNutritionLevel(0)); - buf.writeInt(hungerManagerAccess.getNutritionLevel(1)); - buf.writeInt(hungerManagerAccess.getNutritionLevel(2)); - buf.writeInt(hungerManagerAccess.getNutritionLevel(3)); - buf.writeInt(hungerManagerAccess.getNutritionLevel(4)); - CustomPayloadS2CPacket packet = new CustomPayloadS2CPacket(NUTRITION_SYNC_PACKET, buf); - serverPlayerEntity.networkHandler.sendPacket(packet); + ServerPlayNetworking.send(serverPlayerEntity, new NutritionPacket(hungerManagerAccess.getNutritionLevel(0), hungerManagerAccess.getNutritionLevel(1), hungerManagerAccess.getNutritionLevel(2), hungerManagerAccess.getNutritionLevel(3), hungerManagerAccess.getNutritionLevel(4))); } - public static void writeS2CItemNutritionPacket(ServerPlayNetworkHandler networkHandler) { - PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); + public static void writeS2CItemNutritionPacket(ServerPlayerEntity serverPlayerEntity) { + List itemIds = new ArrayList<>(); + List nutritionValues = new ArrayList<>(); NutritionMain.NUTRITION_ITEM_MAP.forEach((item, list) -> { - buf.writeInt(Registries.ITEM.getRawId(item)); - for (int i = 0; i < list.size(); i++) { - buf.writeInt(list.get(i)); - } + itemIds.add(Registries.ITEM.getRawId(item)); + nutritionValues.addAll(list); }); - CustomPayloadS2CPacket packet = new CustomPayloadS2CPacket(ITEM_NUTRITION_PACKET, buf); - networkHandler.sendPacket(packet); - } - public static void writeS2CEffectNutritionPacket(ServerPlayNetworkHandler networkHandler) { - PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); - processEffects(buf, NutritionMain.NUTRITION_POSITIVE_EFFECTS.entrySet().iterator(), NutritionMain.NUTRITION_POSITIVE_EFFECTS.size()); - processEffects(buf, NutritionMain.NUTRITION_NEGATIVE_EFFECTS.entrySet().iterator(), NutritionMain.NUTRITION_NEGATIVE_EFFECTS.size()); - CustomPayloadS2CPacket packet = new CustomPayloadS2CPacket(EFFECT_NUTRITION_PACKET, buf); - networkHandler.sendPacket(packet); + ServerPlayNetworking.send(serverPlayerEntity, new NutritionItemPacket(itemIds, nutritionValues)); } - @SuppressWarnings("unchecked") - private static void processEffects(PacketByteBuf buf, Iterator>> iterator, int size) { - buf.writeInt(size); - while (iterator.hasNext()) { - Map.Entry> entry = iterator.next(); - buf.writeInt(entry.getKey()); - buf.writeInt(entry.getValue().size()); - for (int i = 0; i < entry.getValue().size(); i++) { - if (entry.getValue().get(i) instanceof StatusEffectInstance) { - buf.writeBoolean(true); - StatusEffectInstance statusEffectInstance = (StatusEffectInstance) entry.getValue().get(i); - buf.writeIdentifier(Registries.STATUS_EFFECT.getId(statusEffectInstance.getEffectType())); - buf.writeInt(statusEffectInstance.getDuration()); - buf.writeInt(statusEffectInstance.getAmplifier()); + public static void writeS2CEffectNutritionPacket(ServerPlayerEntity serverPlayerEntity) { + List positiveEffectCount = new ArrayList<>(); + List positiveEffectIds = new ArrayList<>(); + List positiveEffectDurations = new ArrayList<>(); + List positiveEffectAmplifiers = new ArrayList<>(); + List positiveAttributeIds = new ArrayList<>(); + List positiveAttributeValues = new ArrayList<>(); + List positiveAttributeOperations = new ArrayList<>(); + + for (Map.Entry> entry : NutritionMain.NUTRITION_POSITIVE_EFFECTS.entrySet()) { + int effectCount = 0; + int attributeCount = 0; + for (Object object : entry.getValue()) { + if (object instanceof StatusEffectInstance statusEffectInstance) { + positiveEffectIds.add(Registries.STATUS_EFFECT.getId(statusEffectInstance.getEffectType().value())); + positiveEffectDurations.add(statusEffectInstance.getDuration()); + positiveEffectAmplifiers.add(statusEffectInstance.getAmplifier()); + effectCount++; } else { - buf.writeBoolean(false); - Multimap multimap = (Multimap) entry.getValue().get(i); + Multimap, EntityAttributeModifier> multimap = (Multimap, EntityAttributeModifier>) object; multimap.forEach((attribute, modifier) -> { - buf.writeIdentifier(Registries.ATTRIBUTE.getId(attribute)); - buf.writeUuid(modifier.getId()); - buf.writeFloat((float) modifier.getValue()); - buf.writeString(modifier.getOperation().name()); - return; + positiveAttributeIds.add(Registries.ATTRIBUTE.getId(attribute.value())); + positiveAttributeValues.add((float) modifier.value()); + positiveAttributeOperations.add(modifier.operation().name()); }); + attributeCount++; } } + positiveEffectCount.add(effectCount); + positiveEffectCount.add(attributeCount); } + + List negativeEffectCount = new ArrayList<>(); + List negativeEffectIds = new ArrayList<>(); + List negativeEffectDurations = new ArrayList<>(); + List negativeEffectAmplifiers = new ArrayList<>(); + List negativeAttributeIds = new ArrayList<>(); + List negativeAttributeValues = new ArrayList<>(); + List negativeAttributeOperations = new ArrayList<>(); + + for (Map.Entry> entry : NutritionMain.NUTRITION_NEGATIVE_EFFECTS.entrySet()) { + int effectCount = 0; + int attributeCount = 0; + for (Object object : entry.getValue()) { + if (object instanceof StatusEffectInstance statusEffectInstance) { + negativeEffectIds.add(Registries.STATUS_EFFECT.getId(statusEffectInstance.getEffectType().value())); + negativeEffectDurations.add(statusEffectInstance.getDuration()); + negativeEffectAmplifiers.add(statusEffectInstance.getAmplifier()); + effectCount++; + } else { + Multimap, EntityAttributeModifier> multimap = (Multimap, EntityAttributeModifier>) object; + multimap.forEach((attribute, modifier) -> { + negativeAttributeIds.add(Registries.ATTRIBUTE.getId(attribute.value())); + negativeAttributeValues.add((float) modifier.value()); + negativeAttributeOperations.add(modifier.operation().name()); + }); + attributeCount++; + } + } + negativeEffectCount.add(effectCount); + negativeEffectCount.add(attributeCount); + } + + ServerPlayNetworking.send(serverPlayerEntity, new NutritionEffectPacket(positiveEffectCount, positiveEffectIds, positiveEffectDurations, positiveEffectAmplifiers, positiveAttributeIds, positiveAttributeValues, positiveAttributeOperations, negativeEffectCount, negativeEffectIds, negativeEffectDurations, negativeEffectAmplifiers, negativeAttributeIds, negativeAttributeValues, negativeAttributeOperations)); } } diff --git a/src/main/java/net/nutritionz/network/packet/NutritionEffectPacket.java b/src/main/java/net/nutritionz/network/packet/NutritionEffectPacket.java new file mode 100644 index 0000000..e161b63 --- /dev/null +++ b/src/main/java/net/nutritionz/network/packet/NutritionEffectPacket.java @@ -0,0 +1,47 @@ +package net.nutritionz.network.packet; + +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +import java.util.*; + +public record NutritionEffectPacket(List positiveEffectCount, List positiveEffectIds, List positiveEffectDurations, List positiveEffectAmplifiers, + List positiveAttributeIds, + List positiveAttributeValues, List positiveAttributeOperations, List negativeEffectCount, List negativeEffectIds, + List negativeEffectDurations, + List negativeEffectAmplifiers, List negativeAttributeIds, List negativeAttributeValues, + List negativeAttributeOperations) implements CustomPayload { + + public static final CustomPayload.Id PACKET_ID = new CustomPayload.Id<>(Identifier.of("nutritionz", "nutrition_effect_packet")); + + public static final PacketCodec PACKET_CODEC = PacketCodec.of((value, buf) -> { + buf.writeCollection(value.positiveEffectCount(), PacketByteBuf::writeInt); + buf.writeCollection(value.positiveEffectIds(), PacketByteBuf::writeIdentifier); + buf.writeCollection(value.positiveEffectDurations(), PacketByteBuf::writeInt); + buf.writeCollection(value.positiveEffectAmplifiers(), PacketByteBuf::writeInt); + buf.writeCollection(value.positiveAttributeIds(), PacketByteBuf::writeIdentifier); + buf.writeCollection(value.positiveAttributeValues(), PacketByteBuf::writeFloat); + buf.writeCollection(value.positiveAttributeOperations(), PacketByteBuf::writeString); + buf.writeCollection(value.negativeEffectCount(), PacketByteBuf::writeInt); + buf.writeCollection(value.negativeEffectIds(), PacketByteBuf::writeIdentifier); + buf.writeCollection(value.negativeEffectDurations(), PacketByteBuf::writeInt); + buf.writeCollection(value.negativeEffectAmplifiers(), PacketByteBuf::writeInt); + buf.writeCollection(value.negativeAttributeIds(), PacketByteBuf::writeIdentifier); + buf.writeCollection(value.negativeAttributeValues(), PacketByteBuf::writeFloat); + buf.writeCollection(value.negativeAttributeOperations(), PacketByteBuf::writeString); + }, buf -> new NutritionEffectPacket(buf.readList(PacketByteBuf::readInt), buf.readList(PacketByteBuf::readIdentifier), buf.readList(PacketByteBuf::readInt), buf.readList(PacketByteBuf::readInt), + buf.readList(PacketByteBuf::readIdentifier), buf.readList(PacketByteBuf::readFloat), buf.readList(PacketByteBuf::readString), + buf.readList(PacketByteBuf::readInt), buf.readList(PacketByteBuf::readIdentifier), buf.readList(PacketByteBuf::readInt), buf.readList(PacketByteBuf::readInt), + buf.readList(PacketByteBuf::readIdentifier), buf.readList(PacketByteBuf::readFloat), buf.readList(PacketByteBuf::readString))); + + @Override + public Id getId() { + return PACKET_ID; + } + +} + + diff --git a/src/main/java/net/nutritionz/network/packet/NutritionItemPacket.java b/src/main/java/net/nutritionz/network/packet/NutritionItemPacket.java new file mode 100644 index 0000000..be8928a --- /dev/null +++ b/src/main/java/net/nutritionz/network/packet/NutritionItemPacket.java @@ -0,0 +1,27 @@ +package net.nutritionz.network.packet; + +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +import java.util.List; + +public record NutritionItemPacket(List itemIds, List nutritionValues) implements CustomPayload { + + public static final CustomPayload.Id PACKET_ID = new CustomPayload.Id<>(Identifier.of("nutritionz", "nutrition_item_packet")); + + public static final PacketCodec PACKET_CODEC = PacketCodec.of((value, buf) -> { + buf.writeCollection(value.itemIds, PacketByteBuf::writeInt); + buf.writeCollection(value.nutritionValues, PacketByteBuf::writeInt); + }, buf -> new NutritionItemPacket(buf.readList(PacketByteBuf::readInt), buf.readList(PacketByteBuf::readInt))); + + @Override + public Id getId() { + return PACKET_ID; + } + +} + + diff --git a/src/main/java/net/nutritionz/network/packet/NutritionPacket.java b/src/main/java/net/nutritionz/network/packet/NutritionPacket.java new file mode 100644 index 0000000..cad73ea --- /dev/null +++ b/src/main/java/net/nutritionz/network/packet/NutritionPacket.java @@ -0,0 +1,27 @@ +package net.nutritionz.network.packet; + +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +public record NutritionPacket(int carbohydrateLevel, int proteinLevel, int fatLevel, int vitaminLevel, int mineralLevel) implements CustomPayload { + + public static final CustomPayload.Id PACKET_ID = new CustomPayload.Id<>(Identifier.of("nutritionz", "nutrition_packet")); + + public static final PacketCodec PACKET_CODEC = PacketCodec.of((value, buf) -> { + buf.writeInt(value.carbohydrateLevel()); + buf.writeInt(value.proteinLevel()); + buf.writeInt(value.fatLevel()); + buf.writeInt(value.vitaminLevel()); + buf.writeInt(value.mineralLevel()); + }, buf -> new NutritionPacket(buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt())); + + @Override + public Id getId() { + return PACKET_ID; + } + +} + + diff --git a/src/main/java/net/nutritionz/network/packet/NutritionSyncPacket.java b/src/main/java/net/nutritionz/network/packet/NutritionSyncPacket.java new file mode 100644 index 0000000..88f35d8 --- /dev/null +++ b/src/main/java/net/nutritionz/network/packet/NutritionSyncPacket.java @@ -0,0 +1,22 @@ +package net.nutritionz.network.packet; + +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +public record NutritionSyncPacket() implements CustomPayload { + + public static final CustomPayload.Id PACKET_ID = new CustomPayload.Id<>(Identifier.of("nutritionz", "nutrition_sync_packet")); + + public static final PacketCodec PACKET_CODEC = PacketCodec.of((value, buf) -> { + }, buf -> new NutritionSyncPacket()); + + @Override + public Id getId() { + return PACKET_ID; + } + +} + + diff --git a/src/main/java/net/nutritionz/screen/NutritionScreen.java b/src/main/java/net/nutritionz/screen/NutritionScreen.java index 5d834aa..58052ef 100644 --- a/src/main/java/net/nutritionz/screen/NutritionScreen.java +++ b/src/main/java/net/nutritionz/screen/NutritionScreen.java @@ -5,6 +5,7 @@ import com.google.common.collect.Multimap; +import net.minecraft.registry.entry.RegistryEntry; import org.jetbrains.annotations.Nullable; import net.fabricmc.api.EnvType; @@ -29,9 +30,9 @@ public class NutritionScreen extends Screen { private int x; private int y; - private final List nutritionItems = List.of(new ItemStack(Registries.ITEM.get(new Identifier(ConfigInit.CONFIG.carbohydrateItemId))), - new ItemStack(Registries.ITEM.get(new Identifier(ConfigInit.CONFIG.proteinItemId))), new ItemStack(Registries.ITEM.get(new Identifier(ConfigInit.CONFIG.fatItemId))), - new ItemStack(Registries.ITEM.get(new Identifier(ConfigInit.CONFIG.vitaminItemId))), new ItemStack(Registries.ITEM.get(new Identifier(ConfigInit.CONFIG.mineralItemId)))); + private final List nutritionItems = List.of(new ItemStack(Registries.ITEM.get(Identifier.of(ConfigInit.CONFIG.carbohydrateItemId))), + new ItemStack(Registries.ITEM.get(Identifier.of(ConfigInit.CONFIG.proteinItemId))), new ItemStack(Registries.ITEM.get(Identifier.of(ConfigInit.CONFIG.fatItemId))), + new ItemStack(Registries.ITEM.get(Identifier.of(ConfigInit.CONFIG.vitaminItemId))), new ItemStack(Registries.ITEM.get(Identifier.of(ConfigInit.CONFIG.mineralItemId)))); private final List nutritionTexts = List.of(Text.translatable("screen.nutritionz.carbohydrates"), Text.translatable("screen.nutritionz.protein"), Text.translatable("screen.nutritionz.fat"), Text.translatable("screen.nutritionz.vitamins"), Text.translatable("screen.nutritionz.minerals")); @Nullable @@ -52,7 +53,7 @@ protected void init() { @SuppressWarnings("unchecked") @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - this.renderBackground(context); + super.render(context, mouseX, mouseY, delta); context.drawTexture(RenderInit.NUTRITION_ICONS, this.x, this.y, 0, 0, 176, 142); context.drawText(this.textRenderer, this.title, this.x + 176 / 2 - this.textRenderer.getWidth(this.title) / 2, this.y + 7, 0x3F3F3F, false); @@ -74,11 +75,11 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (NutritionMain.NUTRITION_NEGATIVE_EFFECTS.containsKey(i)) { NutritionMain.NUTRITION_NEGATIVE_EFFECTS.get(i).forEach(effect -> { if (effect instanceof StatusEffectInstance statusEffectInstance) { - tooltips.add(statusEffectInstance.getEffectType().getName()); + tooltips.add(statusEffectInstance.getEffectType().value().getName()); } else { - Multimap map = (Multimap) effect; + Multimap, EntityAttributeModifier> map = (Multimap, EntityAttributeModifier>) effect; map.forEach((attribute, modifier) -> { - tooltips.add(Text.translatable(attribute.getTranslationKey())); + tooltips.add(Text.translatable(attribute.value().getTranslationKey())); return; }); } @@ -89,11 +90,11 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (NutritionMain.NUTRITION_POSITIVE_EFFECTS.containsKey(i)) { NutritionMain.NUTRITION_POSITIVE_EFFECTS.get(i).forEach(effect -> { if (effect instanceof StatusEffectInstance statusEffectInstance) { - tooltips.add(statusEffectInstance.getEffectType().getName()); + tooltips.add(statusEffectInstance.getEffectType().value().getName()); } else { - Multimap map = (Multimap) effect; + Multimap, EntityAttributeModifier> map = (Multimap, EntityAttributeModifier>) effect; map.forEach((attribute, modifier) -> { - tooltips.add(Text.translatable(attribute.getTranslationKey())); + tooltips.add(Text.translatable(attribute.value().getTranslationKey())); return; }); } @@ -112,7 +113,6 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { } else { context.drawTexture(RenderInit.NUTRITION_ICONS, this.x + 5, this.y + 5, 176, 0, 11, 10); } - super.render(context, mouseX, mouseY, delta); } @Override diff --git a/src/main/resources/data/nutritionz/nutrition_manager/default.json b/src/main/resources/data/nutritionz/nutrition_manager/default.json index 820e13c..5498c78 100644 --- a/src/main/resources/data/nutritionz/nutrition_manager/default.json +++ b/src/main/resources/data/nutritionz/nutrition_manager/default.json @@ -3,21 +3,21 @@ "replace": false, "positive": { "generic.attack_speed": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.5 }, "generic.movement_speed": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.02 } }, "negative": { "generic.attack_speed": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.5 }, "generic.movement_speed": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.02 } } @@ -26,21 +26,21 @@ "replace": false, "positive": { "generic.attack_damage": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "generic.attack_knockback": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 1.0 } }, "negative": { "generic.attack_damage": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "generic.attack_knockback": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 1.0 } } @@ -49,22 +49,22 @@ "replace": false, "positive": { "generic.armor": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "generic.knockback_resistance": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.1 } }, "negative": { "generic.armor": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "generic.knockback_resistance": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 0.1 } @@ -74,7 +74,7 @@ "replace": false, "positive": { "generic.max_health": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "minecraft:regeneration": { @@ -84,7 +84,7 @@ }, "negative": { "generic.max_health": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 2.0 }, "minecraft:weakness": { @@ -97,7 +97,7 @@ "replace": false, "positive": { "generic.armor_toughness": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 1.0 }, "minecraft:haste": { @@ -107,7 +107,7 @@ }, "negative": { "generic.armor_toughness": { - "operation": "ADDITION", + "operation": "ADD_VALUE", "value": 1.0 }, "minecraft:mining_fatigue": { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 485f87b..6ea8605 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ "nutritionz.mixins.json" ], "depends": { - "java": ">=17", + "java": ">=21", "minecraft": ">=${minecraft_version}", "fabric-api": ">=${fabric_version}", "fabricloader": ">=${loader_version}", diff --git a/src/main/resources/nutritionz.mixins.json b/src/main/resources/nutritionz.mixins.json index abe35f2..031e8a5 100644 --- a/src/main/resources/nutritionz.mixins.json +++ b/src/main/resources/nutritionz.mixins.json @@ -1,9 +1,10 @@ { "required": true, "package": "net.nutritionz.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "mixins": [ - "HungerManagerMixin" + "HungerManagerMixin", + "PlayerEntityMixin" ], "client": [ "client.InventoryScreenMixin", diff --git a/src/main/resources/resourcepacks/adventurez_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/adventurez_nutrition_compat/pack.mcmeta index 22c9333..9028f13 100644 --- a/src/main/resources/resourcepacks/adventurez_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/adventurez_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "adventurez nutritionz compat" } diff --git a/src/main/resources/resourcepacks/bakery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/bakery_nutrition_compat/pack.mcmeta index 8098fdb..073d182 100644 --- a/src/main/resources/resourcepacks/bakery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/bakery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "bakery nutritionz compat" } diff --git a/src/main/resources/resourcepacks/beachparty_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/beachparty_nutrition_compat/pack.mcmeta index d3e3926..da51a4c 100644 --- a/src/main/resources/resourcepacks/beachparty_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/beachparty_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "beachparty nutritionz compat" } diff --git a/src/main/resources/resourcepacks/betterend_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/betterend_nutrition_compat/pack.mcmeta index 8a49919..2b01bb4 100644 --- a/src/main/resources/resourcepacks/betterend_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/betterend_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "betterend nutritionz compat" } diff --git a/src/main/resources/resourcepacks/betternether_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/betternether_nutrition_compat/pack.mcmeta index fe864b9..d900037 100644 --- a/src/main/resources/resourcepacks/betternether_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/betternether_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "betternether nutritionz compat" } diff --git a/src/main/resources/resourcepacks/brewery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/brewery_nutrition_compat/pack.mcmeta index abd70b1..a23e8d5 100644 --- a/src/main/resources/resourcepacks/brewery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/brewery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "brewery nutritionz compat" } diff --git a/src/main/resources/resourcepacks/candlelight_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/candlelight_nutrition_compat/pack.mcmeta index 73794a7..f0c6b2c 100644 --- a/src/main/resources/resourcepacks/candlelight_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/candlelight_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "candlelight nutritionz compat" } diff --git a/src/main/resources/resourcepacks/dehydration_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/dehydration_nutrition_compat/pack.mcmeta index 267d4c5..ac4dbf2 100644 --- a/src/main/resources/resourcepacks/dehydration_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/dehydration_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "dehydration nutritionz compat" } diff --git a/src/main/resources/resourcepacks/dehydration_x_meadow_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/dehydration_x_meadow_nutrition_compat/pack.mcmeta index f8cafc6..466abfb 100644 --- a/src/main/resources/resourcepacks/dehydration_x_meadow_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/dehydration_x_meadow_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "dehydration and meadow nutritionz compat" } diff --git a/src/main/resources/resourcepacks/dehydration_x_nethervinery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/dehydration_x_nethervinery_nutrition_compat/pack.mcmeta index bd6ae8c..2528cff 100644 --- a/src/main/resources/resourcepacks/dehydration_x_nethervinery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/dehydration_x_nethervinery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "dehydration x nethervinery nutritionz compat" } diff --git a/src/main/resources/resourcepacks/dehydration_x_vinery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/dehydration_x_vinery_nutrition_compat/pack.mcmeta index aeefc0d..7d5ada4 100644 --- a/src/main/resources/resourcepacks/dehydration_x_vinery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/dehydration_x_vinery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "dehydration x vinery nutritionz compat" } diff --git a/src/main/resources/resourcepacks/expandeddelight_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/expandeddelight_nutrition_compat/pack.mcmeta index 268978b..560ccaa 100644 --- a/src/main/resources/resourcepacks/expandeddelight_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/expandeddelight_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "Expanded Delight compat for Nutritionz" } diff --git a/src/main/resources/resourcepacks/farmersdelight_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/farmersdelight_nutrition_compat/pack.mcmeta index 017bcf2..e4dfd57 100644 --- a/src/main/resources/resourcepacks/farmersdelight_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/farmersdelight_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "Farmer's Delight [Fabric] compat for Nutritionz" } diff --git a/src/main/resources/resourcepacks/herbalbrews_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/herbalbrews_nutrition_compat/pack.mcmeta index f7ebe49..2b83e20 100644 --- a/src/main/resources/resourcepacks/herbalbrews_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/herbalbrews_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "herbalbrews nutritionz compat" } diff --git a/src/main/resources/resourcepacks/hybrid-aquatic_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/hybrid-aquatic_nutrition_compat/pack.mcmeta index 7b09728..6ba7a5c 100644 --- a/src/main/resources/resourcepacks/hybrid-aquatic_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/hybrid-aquatic_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "hybrid-aquatic nutritionz compat" } diff --git a/src/main/resources/resourcepacks/meadow_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/meadow_nutrition_compat/pack.mcmeta index 18c1b1e..979c587 100644 --- a/src/main/resources/resourcepacks/meadow_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/meadow_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "meadow nutritionz compat" } diff --git a/src/main/resources/resourcepacks/mobcatalog_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/mobcatalog_nutrition_compat/pack.mcmeta index 55547f8..e13eeed 100644 --- a/src/main/resources/resourcepacks/mobcatalog_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/mobcatalog_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "mobcatalog nutritionz compat" } diff --git a/src/main/resources/resourcepacks/naturalist_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/naturalist_nutrition_compat/pack.mcmeta index 5d15c89..5ea17cf 100644 --- a/src/main/resources/resourcepacks/naturalist_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/naturalist_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "naturalist nutritionz compat" } diff --git a/src/main/resources/resourcepacks/nethervinery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/nethervinery_nutrition_compat/pack.mcmeta index df583fc..b2b6b30 100644 --- a/src/main/resources/resourcepacks/nethervinery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/nethervinery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "nethervinery nutritionz compat" } diff --git a/src/main/resources/resourcepacks/regions_unexplored_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/regions_unexplored_nutrition_compat/pack.mcmeta index 5d81c2c..f886a42 100644 --- a/src/main/resources/resourcepacks/regions_unexplored_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/regions_unexplored_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "regions_unexplored nutritionz compat" } diff --git a/src/main/resources/resourcepacks/supplementaries_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/supplementaries_nutrition_compat/pack.mcmeta index a312fc5..f0decdc 100644 --- a/src/main/resources/resourcepacks/supplementaries_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/supplementaries_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "supplementaries nutritionz compat" } diff --git a/src/main/resources/resourcepacks/vinery_nutrition_compat/pack.mcmeta b/src/main/resources/resourcepacks/vinery_nutrition_compat/pack.mcmeta index 829c867..90f192f 100644 --- a/src/main/resources/resourcepacks/vinery_nutrition_compat/pack.mcmeta +++ b/src/main/resources/resourcepacks/vinery_nutrition_compat/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 15, + "pack_format": 48, "description": { "text": "vinery nutritionz compat" }