diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8fc3827..2606ecd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - name: setup jdk uses: actions/setup-java@v4 with: - java-version: '21' + java-version: '25' distribution: 'microsoft' - name: make gradle wrapper executable run: chmod +x ./gradlew diff --git a/build.gradle b/build.gradle index d16ad4b..d73d98e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,8 @@ plugins { - id 'net.fabricmc.fabric-loom-remap' version "${loom_version}" + id 'net.fabricmc.fabric-loom' version "${loom_version}" id 'maven-publish' } -version = project.mod_version -group = project.maven_group - -base { - archivesName = project.archives_base_name -} - repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because @@ -27,36 +20,28 @@ loom { sourceSet sourceSets.client } } - -} - -fabricApi { - configureDataGeneration { - client = true - } } dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings loom.officialMojangMappings() - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" - + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" } processResources { - inputs.property "version", project.version + def version = project.version + inputs.property "version", version filesMatching("fabric.mod.json") { - expand "version": inputs.properties.version + expand "version": version } } tasks.withType(JavaCompile).configureEach { - it.options.release = 21 + it.options.release = 25 } java { @@ -65,15 +50,16 @@ java { // If you remove this line, sources will not be generated. withSourcesJar() - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 } jar { - inputs.property "archivesName", project.base.archivesName + def projectName = project.name + inputs.property "projectName", projectName from("LICENSE") { - rename { "${it}_${inputs.properties.archivesName}"} + rename { "${it}_$projectName"} } } @@ -81,7 +67,6 @@ jar { publishing { publications { create("mavenJava", MavenPublication) { - artifactId = project.archives_base_name from components.java } } @@ -93,4 +78,4 @@ publishing { // The repositories here will be used for publishing your artifact, not for // retrieving dependencies. } -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index 95e8314..72faad8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,14 +7,14 @@ org.gradle.configuration-cache=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.10 -loader_version=0.18.4 -loom_version=1.14-SNAPSHOT +minecraft_version=26.2 +loader_version=0.19.3 +loom_version=1.17-SNAPSHOT # Mod Properties -mod_version=1.0.0 +mod_version=1.0.3 maven_group=llevc.ballistics archives_base_name=ballistics # Dependencies -fabric_api_version=0.138.4+1.21.10 \ No newline at end of file +fabric_api_version=0.158.0+26.2 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2..dcd83f6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,6 @@ +#Mon Aug 24 18:01:23 PDT 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip -networkTimeout=10000 -validateDistributionUrl=true +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index adff685..b9bb139 100644 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/gradlew.bat b/gradlew.bat index c4bdd3a..24c62d5 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -23,8 +23,8 @@ @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ 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 +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,7 +65,7 @@ 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 +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line @@ -73,21 +73,10 @@ goto fail @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/settings.gradle b/settings.gradle index 75c4d72..77c20cb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,4 +7,7 @@ pluginManagement { mavenCentral() gradlePluginPortal() } -} \ No newline at end of file +} + +// Should match your modid +rootProject.name = 'ballistics' diff --git a/src/main/java/llevc/ballistics/Ballistics.java b/src/main/java/llevc/ballistics/Ballistics.java index c3e8529..bf7238e 100644 --- a/src/main/java/llevc/ballistics/Ballistics.java +++ b/src/main/java/llevc/ballistics/Ballistics.java @@ -5,6 +5,7 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,14 +27,14 @@ public void onInitialize() { ModSounds.initialize(); ModDamageTypes.initialize(); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, FlaskRecipeSerializer.ID, FlaskRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, DrinkMixerRecipeSerializer.ID, DrinkMixerRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, MixedDrinkRecipeSerializer.ID, MixedDrinkRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, SnortableRecipeSerializer.ID, SnortableRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, PickRecipeSerializer.ID, PickRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, CartridgeRecipeSerializer.ID, CartridgeRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, GeekedRecipeSerializer.ID, GeekedRecipeSerializer.INSTANCE); - Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, FlintlockLoadRecipeSerializer.ID, FlintlockLoadRecipeSerializer.INSTANCE); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_flask"), FlaskRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_drink_mixer"), DrinkMixerRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_mixed_drink"), MixedDrinkRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_snortable"), SnortableRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_pick"), PickRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_cartridge_fill"), CartridgeRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_geeked"), GeekedRecipe.SERIALIZER); + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, Identifier.fromNamespaceAndPath("ballistics","crafting_special_flintlock_load"), FlintlockLoadRecipe.SERIALIZER); LOGGER.info("if you read this you're prolly gonna be touched within the next 16 hours"); } diff --git a/src/main/java/llevc/ballistics/FlintlockProjectile.java b/src/main/java/llevc/ballistics/FlintlockProjectile.java index 0df655c..e387286 100644 --- a/src/main/java/llevc/ballistics/FlintlockProjectile.java +++ b/src/main/java/llevc/ballistics/FlintlockProjectile.java @@ -9,8 +9,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; -import net.minecraft.world.entity.projectile.SmallFireball; +import net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.BlocksAttacks; diff --git a/src/main/java/llevc/ballistics/ModDamageTypes.java b/src/main/java/llevc/ballistics/ModDamageTypes.java index 59afbb9..7af9709 100644 --- a/src/main/java/llevc/ballistics/ModDamageTypes.java +++ b/src/main/java/llevc/ballistics/ModDamageTypes.java @@ -1,8 +1,8 @@ package llevc.ballistics; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.damagesource.DamageTypes; @@ -10,7 +10,7 @@ public class ModDamageTypes { - public static ResourceKey lungCancer = ResourceKey.create(Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("ballistics","lungs")); + public static ResourceKey lungCancer = ResourceKey.create(Registries.DAMAGE_TYPE, Identifier.fromNamespaceAndPath("ballistics","lungs")); public static void initialize() { } diff --git a/src/main/java/llevc/ballistics/ModEntities.java b/src/main/java/llevc/ballistics/ModEntities.java index 4da7c9a..b43514b 100644 --- a/src/main/java/llevc/ballistics/ModEntities.java +++ b/src/main/java/llevc/ballistics/ModEntities.java @@ -1,13 +1,12 @@ package llevc.ballistics; -import com.nimbusds.oauth2.sdk.id.Identifier; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -16,8 +15,8 @@ public class ModEntities implements ModInitializer { public static final EntityType flintlockProjectile = Registry.register( BuiltInRegistries.ENTITY_TYPE, - ResourceLocation.fromNamespaceAndPath("ballistics","flintlock_projectile"), - EntityType.Builder.of(FlintlockProjectile::new, MobCategory.MISC).sized(0.5f,0.5f).build(ResourceKey.create(Registries.ENTITY_TYPE,ResourceLocation.fromNamespaceAndPath("ballistics","flintlock_projectile"))) + Identifier.fromNamespaceAndPath("ballistics","flintlock_projectile"), + EntityType.Builder.of(FlintlockProjectile::new, MobCategory.MISC).sized(0.5f,0.5f).build(ResourceKey.create(Registries.ENTITY_TYPE,Identifier.fromNamespaceAndPath("ballistics","flintlock_projectile"))) ); @Override diff --git a/src/main/java/llevc/ballistics/ModItems.java b/src/main/java/llevc/ballistics/ModItems.java index b13acb2..6520127 100644 --- a/src/main/java/llevc/ballistics/ModItems.java +++ b/src/main/java/llevc/ballistics/ModItems.java @@ -1,11 +1,10 @@ package llevc.ballistics; -import llevc.ballistics.effects.Explode; import llevc.ballistics.items.FireworkLauncherItem; import llevc.ballistics.items.FlintlockItem; import llevc.ballistics.items.SmokeItem; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.fabricmc.fabric.api.creativetab.v1.CreativeModeTabEvents; +import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab; import net.fabricmc.fabric.impl.item.EnchantmentUtil; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.RegistryDataLoader; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.util.CommonColors; import net.minecraft.world.effect.MobEffect; @@ -44,102 +43,12 @@ public class ModItems { public static GenericItem register(String name, Function itemFactory, Item.Properties settings) { - ResourceKey itemKey = ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, name)); + ResourceKey itemKey = ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, name)); GenericItem item = itemFactory.apply(settings.setId(itemKey)); Registry.register(BuiltInRegistries.ITEM, itemKey, item); return item; } - public static void initialize() { - Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsItemGroupKey,BallisticsItemGroup); - Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsFlaskItemGroupKey,BallisticsFlaskItemGroup); - Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsBakedItemGroupKey,BallisticsBakedItemGroup); - - ItemGroupEvents.modifyEntriesEvent(BallisticsItemGroupKey).register(itemGroup -> { - itemGroup.accept(rhGlove); - itemGroup.accept(FireworkLauncher); - itemGroup.accept(Flintlock); - itemGroup.accept(Ball); - itemGroup.accept(flintlockHammer); - itemGroup.accept(flintlockBarrel); - itemGroup.accept(DrinkMixer); - itemGroup.accept(EmptyFlask); - itemGroup.accept(DragonsFlask); - itemGroup.accept(PotionContents.createItemStack(ModItems.Flask, Potions.WATER)); - itemGroup.accept(pick); - itemGroup.accept(cig); - itemGroup.accept(vape); - itemGroup.accept(cartridge); - itemGroup.accept(snortable); - }); - ItemGroupEvents.modifyEntriesEvent(BallisticsFlaskItemGroupKey).register(itemGroup -> { - itemGroup.accept(DrinkMixer); - itemGroup.accept(EmptyFlask); - itemGroup.accept(DragonsFlask); - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - itemGroup.accept(PotionContents.createItemStack(Flask,Holder.direct(hey))); - } - } - }); - ItemGroupEvents.modifyEntriesEvent(BallisticsBakedItemGroupKey).register(itemGroup -> { - itemGroup.accept(pick); - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - itemGroup.accept(PotionContents.createItemStack(pick,Holder.direct(hey))); - } - } - itemGroup.accept(cig); - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - ItemStack yo = PotionContents.createItemStack(cig,Holder.direct(hey)); - yo.set(DataComponents.ITEM_NAME,Component.translatable("item.ballistics.custom_cig")); - itemGroup.accept(yo); - } - } - itemGroup.accept(vape); - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - itemGroup.accept(PotionContents.createItemStack(vape,Holder.direct(hey))); - } - } - itemGroup.accept(cartridge); - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - itemGroup.accept(PotionContents.createItemStack(cartridge,Holder.direct(hey))); - } - } - itemGroup.accept(snortable); - for (int i = 0; i < BuiltInRegistries.BLOCK.size(); i++) { - Optional> wchat = BuiltInRegistries.BLOCK.get(i); - if (wchat.isPresent()) { - Block hey = wchat.get().value(); - itemGroup.accept(createSnortable(hey)); - } - } - for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { - Optional> wchat = BuiltInRegistries.POTION.get(i); - if (wchat.isPresent()) { - Potion hey = wchat.get().value(); - ItemStack yo = PotionContents.createItemStack(snortable,Holder.direct(hey)); - yo.set(DataComponents.DYED_COLOR,new DyedItemColor(yo.getOrDefault(DataComponents.POTION_CONTENTS,PotionContents.EMPTY).getColorOr(CommonColors.WHITE))); - yo.set(DataComponents.ITEM_NAME, Component.translatable("item.ballistics.snortable").append(hey.name())); - itemGroup.accept(yo); - } - } - }); - } - public static final Item EmptyFlask = register( "empty_flask", BottleItem::new, @@ -165,7 +74,6 @@ public static void initialize() { new Item.Properties() .stacksTo(1) .component(DataComponents.POTION_CONTENTS, PotionContents.EMPTY) - .craftRemainder(ModItems.DrinkMixer) ); public static final Item rhGlove = register( "rh_glove", //stands for Rocket Handling Glove btw @@ -209,16 +117,9 @@ public static void initialize() { //potions public static final Potion MixedPotion = Registry.register( BuiltInRegistries.POTION, - ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "mixed"), + Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, "mixed"), new Potion("mixed") ); - public static final Holder ExplodePotionEffect = - Registry.registerForHolder(BuiltInRegistries.MOB_EFFECT, ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "explode"), new Explode(MobEffectCategory.HARMFUL, CommonColors.SOFT_RED)); - public static final Potion ExplosionPotion = Registry.register( - BuiltInRegistries.POTION, - ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "explode"), - new Potion("explode",new MobEffectInstance(ExplodePotionEffect)) - ); //the baked shi public static final Item snortable = register( @@ -273,8 +174,6 @@ public static ItemStack createSnortable(Block block) { effectInstanceList.add(new MobEffectInstance(MobEffects.INFESTED,60*20)); } else if (block instanceof SlimeBlock) { // slimme effectInstanceList.add(new MobEffectInstance(MobEffects.OOZING,600)); - } else if (block instanceof TntBlock) { - effectInstanceList.add(new MobEffectInstance(ModItems.ExplodePotionEffect)); } else if (block instanceof WebBlock) { // cobweb effectInstanceList.add(new MobEffectInstance(MobEffects.WEAVING,1200)); } @@ -293,10 +192,97 @@ public static ItemStack createSnortable(Block block) { return yes; } - public static final ResourceKey BallisticsItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics")); - public static final CreativeModeTab BallisticsItemGroup = FabricItemGroup.builder().icon(() -> new ItemStack(Items.FIREWORK_ROCKET)).title(Component.translatable("itemGroup.ballistics")).build(); - public static final ResourceKey BallisticsFlaskItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics_flasks")); - public static final CreativeModeTab BallisticsFlaskItemGroup = FabricItemGroup.builder().icon(() -> new ItemStack(EmptyFlask)).title(Component.translatable("itemGroup.ballistics_flasks")).build(); - public static final ResourceKey BallisticsBakedItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics_geeked")); - public static final CreativeModeTab BallisticsBakedItemGroup = FabricItemGroup.builder().icon(() -> new ItemStack(vape)).title(Component.translatable("itemGroup.ballistics_geeked")).build(); + public static final ResourceKey BallisticsItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics")); + public static final CreativeModeTab BallisticsItemGroup = FabricCreativeModeTab.builder().icon(() -> new ItemStack(Items.FIREWORK_ROCKET)).displayItems((params, output) -> { + output.accept(rhGlove); + output.accept(FireworkLauncher); + output.accept(Flintlock); + output.accept(Ball); + output.accept(flintlockHammer); + output.accept(flintlockBarrel); + output.accept(DrinkMixer); + output.accept(EmptyFlask); + output.accept(DragonsFlask); + output.accept(PotionContents.createItemStack(ModItems.Flask, Potions.WATER)); + output.accept(pick); + output.accept(cig); + output.accept(vape); + output.accept(cartridge); + output.accept(snortable); + }).title(Component.translatable("itemGroup.ballistics")).build(); + + public static final ResourceKey BallisticsFlaskItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics_flasks")); + public static final CreativeModeTab BallisticsFlaskItemGroup = FabricCreativeModeTab.builder().icon(() -> new ItemStack(EmptyFlask)).displayItems((params,output) -> { + output.accept(DrinkMixer); + output.accept(EmptyFlask); + output.accept(DragonsFlask); + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + output.accept(PotionContents.createItemStack(Flask,Holder.direct(hey))); + } + }}).title(Component.translatable("itemGroup.ballistics_flasks")).build(); + + public static final ResourceKey BallisticsBakedItemGroupKey = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, "ballistics_geeked")); + public static final CreativeModeTab BallisticsBakedItemGroup = FabricCreativeModeTab.builder().icon(() -> new ItemStack(vape)).displayItems((params,output) -> { + output.accept(pick); + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + output.accept(PotionContents.createItemStack(pick,Holder.direct(hey))); + } + } + output.accept(cig); + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + ItemStack yo = PotionContents.createItemStack(cig,Holder.direct(hey)); + yo.set(DataComponents.ITEM_NAME,Component.translatable("item.ballistics.custom_cig")); + output.accept(yo); + } + } + output.accept(vape); + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + output.accept(PotionContents.createItemStack(vape,Holder.direct(hey))); + } + } + output.accept(cartridge); + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + output.accept(PotionContents.createItemStack(cartridge,Holder.direct(hey))); + } + } + output.accept(snortable); + //for (int i = 0; i < BuiltInRegistries.BLOCK.size(); i++) { + // Optional> wchat = BuiltInRegistries.BLOCK.get(i); + // if (wchat.isPresent()) { + // Block hey = wchat.get().value(); + // ItemStack woah = createSnortable(hey); + // output.accept(woah); + // } + //} + for (int i = 0; i < BuiltInRegistries.POTION.size(); i++) { + Optional> wchat = BuiltInRegistries.POTION.get(i); + if (wchat.isPresent()) { + Potion hey = wchat.get().value(); + ItemStack yo = PotionContents.createItemStack(snortable,Holder.direct(hey)); + yo.set(DataComponents.DYED_COLOR,new DyedItemColor(yo.getOrDefault(DataComponents.POTION_CONTENTS,PotionContents.EMPTY).getColorOr(CommonColors.WHITE))); + yo.set(DataComponents.ITEM_NAME, Component.translatable("item.ballistics.snortable").append(hey.name())); + output.accept(yo); + } + }}).title(Component.translatable("itemGroup.ballistics_geeked")).build(); + + public static void initialize() { + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsItemGroupKey,BallisticsItemGroup); + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsFlaskItemGroupKey,BallisticsFlaskItemGroup); + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB,BallisticsBakedItemGroupKey,BallisticsBakedItemGroup); + } } diff --git a/src/main/java/llevc/ballistics/ModSounds.java b/src/main/java/llevc/ballistics/ModSounds.java index 05ac983..aadf1a2 100644 --- a/src/main/java/llevc/ballistics/ModSounds.java +++ b/src/main/java/llevc/ballistics/ModSounds.java @@ -3,12 +3,12 @@ import net.fabricmc.api.ModInitializer; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; public class ModSounds { private static SoundEvent registerSound(String id) { - ResourceLocation identifier = ResourceLocation.fromNamespaceAndPath(Ballistics.MOD_ID, id); + Identifier identifier = Identifier.fromNamespaceAndPath(Ballistics.MOD_ID, id); return Registry.register(BuiltInRegistries.SOUND_EVENT, identifier, SoundEvent.createVariableRangeEvent(identifier)); } diff --git a/src/main/java/llevc/ballistics/effects/Explode.java b/src/main/java/llevc/ballistics/effects/Explode.java deleted file mode 100644 index 73e0d35..0000000 --- a/src/main/java/llevc/ballistics/effects/Explode.java +++ /dev/null @@ -1,27 +0,0 @@ -package llevc.ballistics.effects; - -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.effect.InstantenousMobEffect; -import net.minecraft.world.effect.MobEffectCategory; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.level.Level; -import org.jetbrains.annotations.Nullable; - -public class Explode extends InstantenousMobEffect { - public Explode(MobEffectCategory mobEffectCategory, int i) { - super(mobEffectCategory, i); - } - - @Override - public boolean applyEffectTick(ServerLevel serverLevel, LivingEntity livingEntity, int i) { - return true; - } - - @Override - public void applyInstantenousEffect(ServerLevel serverLevel, @Nullable Entity entity, @Nullable Entity entity2, LivingEntity livingEntity, int i, double d) { - serverLevel.explode(livingEntity, livingEntity.damageSources().explosion(entity,entity2), null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), 6.0F, false, Level.ExplosionInteraction.TNT); - livingEntity.hurtServer(serverLevel,livingEntity.damageSources().explosion(entity,entity2),40); - } -} diff --git a/src/main/java/llevc/ballistics/items/FireworkLauncherItem.java b/src/main/java/llevc/ballistics/items/FireworkLauncherItem.java index fd1cbda..2500507 100644 --- a/src/main/java/llevc/ballistics/items/FireworkLauncherItem.java +++ b/src/main/java/llevc/ballistics/items/FireworkLauncherItem.java @@ -4,7 +4,6 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.FireworkRocketEntity; import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.CrossbowItem; diff --git a/src/main/java/llevc/ballistics/items/FlintlockItem.java b/src/main/java/llevc/ballistics/items/FlintlockItem.java index eb312be..3b230da 100644 --- a/src/main/java/llevc/ballistics/items/FlintlockItem.java +++ b/src/main/java/llevc/ballistics/items/FlintlockItem.java @@ -7,7 +7,7 @@ import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; @@ -94,7 +94,7 @@ public void onUseTick(Level level, LivingEntity livingEntity, ItemStack itemStac Iterator> wow = itemEnchantments.keySet().iterator(); while (wow.hasNext()) { Holder heyo = wow.next(); - if (heyo.is(ResourceLocation.fromNamespaceAndPath("ballistics","quickload"))) { + if (heyo.is(Identifier.fromNamespaceAndPath("ballistics","quickload"))) { sonofa = true; } } @@ -159,7 +159,7 @@ public boolean isLoaded(ItemStack itemStack) { public void setLoaded(ItemStack itemStack, boolean bool) { ChargedProjectiles yo = itemStack.getOrDefault(DataComponents.CHARGED_PROJECTILES,ChargedProjectiles.EMPTY); if (bool) { - itemStack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(new ItemStack(ModItems.Ball))); + itemStack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(new ItemStackTemplate(ModItems.Ball))); } else { itemStack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); } diff --git a/src/main/java/llevc/ballistics/items/SmokeItem.java b/src/main/java/llevc/ballistics/items/SmokeItem.java index aa273e5..9825072 100644 --- a/src/main/java/llevc/ballistics/items/SmokeItem.java +++ b/src/main/java/llevc/ballistics/items/SmokeItem.java @@ -9,7 +9,6 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.ParticleUtils; import net.minecraft.util.RandomSource; @@ -101,7 +100,7 @@ public boolean releaseUsing(ItemStack itemStack, Level level, LivingEntity livin sendSmokeParticles(serverLevel,livingEntity); Optional> heyo = serverLevel.registryAccess() .lookupOrThrow(Registries.DAMAGE_TYPE) - .get(ModDamageTypes.lungCancer.location()); + .get(ModDamageTypes.lungCancer.identifier()); Ballistics.LOGGER.info(String.valueOf(smokeParticles(itemStack) && i < 3 && heyo.isPresent())); if (smokeParticles(itemStack) && i < 3 && heyo.isPresent()) { diff --git a/src/main/java/llevc/ballistics/mixin/FireworkMixin.java b/src/main/java/llevc/ballistics/mixin/FireworkMixin.java index 79bde0a..a084489 100644 --- a/src/main/java/llevc/ballistics/mixin/FireworkMixin.java +++ b/src/main/java/llevc/ballistics/mixin/FireworkMixin.java @@ -15,7 +15,7 @@ import net.minecraft.data.registries.RegistriesDatapackGenerator; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -126,10 +126,10 @@ public void woop(ItemStack itemStack) { Iterator> wow = itemEnchantments.keySet().iterator(); while (wow.hasNext()) { Holder heyo = wow.next(); - if (heyo.is(ResourceLocation.fromNamespaceAndPath("ballistics","gripping"))) { + if (heyo.is(Identifier.fromNamespaceAndPath("ballistics","gripping"))) { maxthemticks = themticks + (2 * EnchantmentHelper.getEnchantmentLevel(heyo,this.attachedToEntity)); themticks = maxthemticks; - } else if (heyo.is(ResourceLocation.fromNamespaceAndPath("ballistics","handling"))) { + } else if (heyo.is(Identifier.fromNamespaceAndPath("ballistics","handling"))) { fallDamageWindow = (5 * EnchantmentHelper.getEnchantmentLevel(heyo,this.attachedToEntity)); } } @@ -141,7 +141,7 @@ public void hoop(ItemStack itemStack) { Iterator> wow = itemEnchantments.keySet().iterator(); while (wow.hasNext()) { Holder heyo = wow.next(); - if (heyo.is(ResourceLocation.fromNamespaceAndPath("ballistics","graceful"))) { + if (heyo.is(Identifier.fromNamespaceAndPath("ballistics","graceful"))) { letitgo = true; } } diff --git a/src/main/java/llevc/ballistics/mixin/PotionMixin.java b/src/main/java/llevc/ballistics/mixin/PotionMixin.java index 2851e10..dd8fc78 100644 --- a/src/main/java/llevc/ballistics/mixin/PotionMixin.java +++ b/src/main/java/llevc/ballistics/mixin/PotionMixin.java @@ -2,10 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import llevc.ballistics.Ballistics; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.PotionItem; +import net.minecraft.world.item.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -16,11 +13,11 @@ public PotionMixin(Properties properties) { } @Override - public ItemStack getRecipeRemainder(ItemStack stack) { + public ItemStackTemplate getCraftingRemainder(ItemStack stack) { //Ballistics.LOGGER.info(String.valueOf(super.getRecipeRemainder(stack))); - if (super.getRecipeRemainder(stack).isEmpty()) { - return new ItemStack(Items.GLASS_BOTTLE); + if (super.getCraftingRemainder(stack) == null) { + return new ItemStackTemplate(Items.GLASS_BOTTLE); } - return super.getRecipeRemainder(stack); + return super.getCraftingRemainder(stack); } } diff --git a/src/main/java/llevc/ballistics/recipes/CartridgeRecipe.java b/src/main/java/llevc/ballistics/recipes/CartridgeRecipe.java index 89bb112..d521c6c 100644 --- a/src/main/java/llevc/ballistics/recipes/CartridgeRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/CartridgeRecipe.java @@ -1,8 +1,11 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -19,8 +22,8 @@ import java.util.Objects; public class CartridgeRecipe extends CustomRecipe { - public CartridgeRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public CartridgeRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -48,7 +51,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; ItemStack potion = ItemStack.EMPTY; boolean flask = false; @@ -96,8 +99,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final CartridgeRecipe instance = new CartridgeRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return CartridgeRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/CartridgeRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/CartridgeRecipeSerializer.java deleted file mode 100644 index aac1309..0000000 --- a/src/main/java/llevc/ballistics/recipes/CartridgeRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class CartridgeRecipeSerializer implements RecipeSerializer { - public static final CartridgeRecipeSerializer INSTANCE = new CartridgeRecipeSerializer(CartridgeRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_cartridge_fill"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public CartridgeRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipe.java b/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipe.java index b3b2e27..0686b78 100644 --- a/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipe.java @@ -1,8 +1,11 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -18,8 +21,8 @@ import java.util.Optional; public class DrinkMixerRecipe extends CustomRecipe { - public DrinkMixerRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public DrinkMixerRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -47,7 +50,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (mixer && 0 < potions && potions <= 4); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ModItems.DrinkMixer.getDefaultInstance(); boolean mixer = false; List mhm = new java.util.ArrayList<>(List.of()); @@ -104,8 +107,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final DrinkMixerRecipe instance = new DrinkMixerRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return DrinkMixerRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipeSerializer.java deleted file mode 100644 index 49f3d8f..0000000 --- a/src/main/java/llevc/ballistics/recipes/DrinkMixerRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class DrinkMixerRecipeSerializer implements RecipeSerializer { - public static final DrinkMixerRecipeSerializer INSTANCE = new DrinkMixerRecipeSerializer(DrinkMixerRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_drink_mixer"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public DrinkMixerRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/FlaskRecipe.java b/src/main/java/llevc/ballistics/recipes/FlaskRecipe.java index 7f3372f..dda7b86 100644 --- a/src/main/java/llevc/ballistics/recipes/FlaskRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/FlaskRecipe.java @@ -1,8 +1,11 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.*; import net.minecraft.world.item.alchemy.PotionContents; @@ -14,8 +17,8 @@ import java.util.Objects; public class FlaskRecipe extends CustomRecipe { - public FlaskRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public FlaskRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -53,7 +56,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; ItemStack potion = ItemStack.EMPTY; boolean flask = false; @@ -112,8 +115,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final FlaskRecipe instance = new FlaskRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return FlaskRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/FlaskRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/FlaskRecipeSerializer.java deleted file mode 100644 index 7274034..0000000 --- a/src/main/java/llevc/ballistics/recipes/FlaskRecipeSerializer.java +++ /dev/null @@ -1,37 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.*; -import org.jetbrains.annotations.NotNull; - -public class FlaskRecipeSerializer implements RecipeSerializer { - public static final FlaskRecipeSerializer INSTANCE = new FlaskRecipeSerializer(FlaskRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_flask"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public FlaskRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipe.java b/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipe.java index 45ddd7d..cd046a5 100644 --- a/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipe.java @@ -1,9 +1,12 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import llevc.ballistics.items.FlintlockItem; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -20,8 +23,8 @@ import java.util.Objects; public class FlintlockLoadRecipe extends CustomRecipe { - public FlintlockLoadRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public FlintlockLoadRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -49,7 +52,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; ItemStack potion = ItemStack.EMPTY; boolean flask = false; @@ -88,8 +91,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final FlintlockLoadRecipe instance = new FlintlockLoadRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return FlintlockLoadRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipeSerializer.java deleted file mode 100644 index 977fa9a..0000000 --- a/src/main/java/llevc/ballistics/recipes/FlintlockLoadRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class FlintlockLoadRecipeSerializer implements RecipeSerializer { - public static final FlintlockLoadRecipeSerializer INSTANCE = new FlintlockLoadRecipeSerializer(FlintlockLoadRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_flintlock_load"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public FlintlockLoadRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/GeekedRecipe.java b/src/main/java/llevc/ballistics/recipes/GeekedRecipe.java index d9ecbb9..1f1e68f 100644 --- a/src/main/java/llevc/ballistics/recipes/GeekedRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/GeekedRecipe.java @@ -1,8 +1,11 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -18,8 +21,8 @@ import java.util.Objects; public class GeekedRecipe extends CustomRecipe { - public GeekedRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public GeekedRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -47,7 +50,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; ItemStack potion = ItemStack.EMPTY; ItemStack geek = ItemStack.EMPTY; @@ -96,8 +99,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final GeekedRecipe instance = new GeekedRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return GeekedRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/GeekedRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/GeekedRecipeSerializer.java deleted file mode 100644 index e729305..0000000 --- a/src/main/java/llevc/ballistics/recipes/GeekedRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class GeekedRecipeSerializer implements RecipeSerializer { - public static final GeekedRecipeSerializer INSTANCE = new GeekedRecipeSerializer(GeekedRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_geeked"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public GeekedRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipe.java b/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipe.java index 281de96..bad73ce 100644 --- a/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipe.java @@ -1,9 +1,12 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; @@ -18,8 +21,8 @@ import java.util.Optional; public class MixedDrinkRecipe extends CustomRecipe { - public MixedDrinkRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public MixedDrinkRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -44,7 +47,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (mixer && 0 < potions && potions <= 4); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ModItems.Flask.getDefaultInstance(); ItemStack mixer = ItemStack.EMPTY; int flasks = 0; @@ -85,8 +88,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final MixedDrinkRecipe instance = new MixedDrinkRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return MixedDrinkRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipeSerializer.java deleted file mode 100644 index bbcf5ae..0000000 --- a/src/main/java/llevc/ballistics/recipes/MixedDrinkRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class MixedDrinkRecipeSerializer implements RecipeSerializer { - public static final MixedDrinkRecipeSerializer INSTANCE = new MixedDrinkRecipeSerializer(MixedDrinkRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_mixed_drink"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public MixedDrinkRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/PickRecipe.java b/src/main/java/llevc/ballistics/recipes/PickRecipe.java index 528f615..77e4250 100644 --- a/src/main/java/llevc/ballistics/recipes/PickRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/PickRecipe.java @@ -1,8 +1,11 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -19,8 +22,8 @@ import java.util.Objects; public class PickRecipe extends CustomRecipe { - public PickRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public PickRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -48,7 +51,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; ItemStack potion = ItemStack.EMPTY; boolean flask = false; @@ -96,8 +99,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final PickRecipe instance = new PickRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return PickRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/PickRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/PickRecipeSerializer.java deleted file mode 100644 index 66e9141..0000000 --- a/src/main/java/llevc/ballistics/recipes/PickRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class PickRecipeSerializer implements RecipeSerializer { - public static final PickRecipeSerializer INSTANCE = new PickRecipeSerializer(PickRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_pick"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public PickRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/java/llevc/ballistics/recipes/SnortableRecipe.java b/src/main/java/llevc/ballistics/recipes/SnortableRecipe.java index 6e3e856..e004674 100644 --- a/src/main/java/llevc/ballistics/recipes/SnortableRecipe.java +++ b/src/main/java/llevc/ballistics/recipes/SnortableRecipe.java @@ -1,11 +1,14 @@ package llevc.ballistics.recipes; +import com.mojang.serialization.MapCodec; import llevc.ballistics.Ballistics; import llevc.ballistics.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.tags.ItemTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; @@ -36,8 +39,8 @@ import java.util.Optional; public class SnortableRecipe extends CustomRecipe { - public SnortableRecipe(CraftingBookCategory craftingBookCategory) { - super(craftingBookCategory); + public SnortableRecipe() { + super(); } public boolean matches(CraftingInput recipeInput, Level level) { @@ -65,7 +68,7 @@ public boolean matches(CraftingInput recipeInput, Level level) { return (potion && flask && recipeInput.ingredientCount() <= 2); } - public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provider) { + public ItemStack assemble(CraftingInput recipeInput) { ItemStack result = ItemStack.EMPTY; Block block = Blocks.AIR; boolean flask = false; @@ -100,8 +103,19 @@ public ItemStack assemble(CraftingInput recipeInput, HolderLookup.Provider provi return result; } + public static final SnortableRecipe instance = new SnortableRecipe(); + public static final MapCodec MAP_CODEC; + public static final StreamCodec STREAM_CODEC; + public static final RecipeSerializer SERIALIZER; + @Override - public RecipeSerializer getSerializer() { - return SnortableRecipeSerializer.INSTANCE; + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + static { + MAP_CODEC = MapCodec.unit(instance); + STREAM_CODEC = StreamCodec.unit(instance); + SERIALIZER = new RecipeSerializer(MAP_CODEC, STREAM_CODEC); } } diff --git a/src/main/java/llevc/ballistics/recipes/SnortableRecipeSerializer.java b/src/main/java/llevc/ballistics/recipes/SnortableRecipeSerializer.java deleted file mode 100644 index af1ead3..0000000 --- a/src/main/java/llevc/ballistics/recipes/SnortableRecipeSerializer.java +++ /dev/null @@ -1,40 +0,0 @@ -package llevc.ballistics.recipes; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; -import org.jetbrains.annotations.NotNull; - -public class SnortableRecipeSerializer implements RecipeSerializer { - public static final SnortableRecipeSerializer INSTANCE = new SnortableRecipeSerializer(SnortableRecipe::new); - public static final ResourceLocation ID = ResourceLocation.fromNamespaceAndPath("ballistics","crafting_special_snortable"); - - - - private final MapCodec codec; - private final StreamCodec streamCodec; - - public SnortableRecipeSerializer(CustomRecipe.Serializer.Factory factory) { - this.codec = RecordCodecBuilder.mapCodec( - instance -> instance.group(CraftingBookCategory.CODEC.fieldOf("category").orElse(CraftingBookCategory.MISC).forGetter(CraftingRecipe::category)) - .apply(instance, factory::create) - ); - this.streamCodec = StreamCodec.composite(CraftingBookCategory.STREAM_CODEC, CraftingRecipe::category, factory::create); - } - - @Override - public @NotNull MapCodec codec() { - return codec; - } - - @Override - public @NotNull StreamCodec streamCodec() { - return streamCodec; - } -} diff --git a/src/main/resources/ballistics.mixins.json b/src/main/resources/ballistics.mixins.json index 7f45862..9acd8c6 100644 --- a/src/main/resources/ballistics.mixins.json +++ b/src/main/resources/ballistics.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "llevc.ballistics.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ "BottleItemMixin", "FireworkItemMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ff65ca1..f8d147a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -33,9 +33,9 @@ } ], "depends": { - "fabricloader": ">=0.18.4", - "minecraft": "~1.21.9", - "java": ">=21", + "fabricloader": ">=0.19.3", + "minecraft": "~26.2", + "java": ">=25", "fabric-api": "*" } } \ No newline at end of file