From 416c6fa2a039be703b6af938b1009df0890d119d Mon Sep 17 00:00:00 2001 From: Mrbysco Date: Sun, 18 Aug 2024 21:21:07 +0200 Subject: [PATCH] WIP port to 1.21 (PART 1) --- build.gradle | 22 +- gradle.properties | 15 +- .../com/mrbysco/forcecraft/ForceCraft.java | 11 +- .../com/mrbysco/forcecraft/Reference.java | 5 + .../forcecraft/client/ClientHandler.java | 6 +- .../mrbysco/forcecraft/client/ShakeUtil.java | 10 +- .../client/gui/belt/ForceBeltScreen.java | 2 +- .../client/gui/card/ItemCardScreen.java | 2 +- .../client/gui/engine/ForceEngineScreen.java | 2 +- .../gui/furnace/ForceFurnaceScreen.java | 2 +- .../client/gui/infuser/InfuserScreen.java | 14 +- .../client/gui/pack/ForcePackScreen.java | 10 +- .../gui/pack/RenameAndRecolorScreen.java | 2 +- .../client/gui/spoils/SpoilsBagScreen.java | 2 +- .../client/renderer/BlueChuChuRenderer.java | 2 +- .../client/renderer/ColdChickenRenderer.java | 2 +- .../client/renderer/ColdCowRenderer.java | 2 +- .../client/renderer/ColdPigRenderer.java | 2 +- .../client/renderer/CreeperTotRenderer.java | 2 +- .../client/renderer/EnderTotRenderer.java | 2 +- .../client/renderer/FairyRenderer.java | 2 +- .../client/renderer/ForceArrowRenderer.java | 2 +- .../client/renderer/GoldChuChuRenderer.java | 2 +- .../client/renderer/GreenChuChuRenderer.java | 2 +- .../client/renderer/RedChuChuRenderer.java | 2 +- .../renderer/layer/EndertotEyesLayer.java | 2 +- .../forcecraft/compat/jei/JeiCompat.java | 12 +- .../datagen/data/ForceRecipeProvider.java | 452 +++++++++--------- .../datagen/patchouli/PatchouliProvider.java | 28 +- .../forcecraft/entities/EnderTotEntity.java | 2 +- .../lootmodifiers/SmeltingModifier.java | 10 +- .../forcecraft/mixin/GameRendererMixin.java | 8 +- .../AddConfigFeatureBiomeModifier.java | 4 +- .../forcecraft/networking/PacketHandler.java | 26 +- .../handler/ClientPayloadHandler.java | 8 +- .../handler/ServerPayloadHandler.java | 69 ++- .../message/OpenInventoryPayload.java | 13 +- .../networking/message/PackChangePayload.java | 9 +- .../message/QuickUseBeltPayload.java | 9 +- .../message/RecipeToCardPayload.java | 9 +- .../message/SaveCardRecipePayload.java | 9 +- .../message/StopInfuserSoundPayload.java | 9 +- .../forcecraft/registry/ForceComponents.java | 20 + .../forcecraft/registry/ForceDamageTypes.java | 2 +- .../forcecraft/registry/ForceEffects.java | 7 +- .../forcecraft/registry/ForceEntities.java | 22 +- .../forcecraft/registry/ForceFluids.java | 9 +- .../forcecraft/registry/ForceFoods.java | 9 +- .../registry/ForceLootModifiers.java | 6 +- .../forcecraft/registry/ForceModifiers.java | 7 +- .../forcecraft/registry/ForceSounds.java | 22 +- .../forcecraft/registry/ForceTables.java | 2 +- .../forcecraft/registry/ForceTags.java | 100 ++-- .../registry/material/ModToolTiers.java | 2 +- .../forcecraft/util/AdvancementUtil.java | 2 +- .../mrbysco/forcecraft/util/EnchantUtils.java | 39 +- .../mrbysco/forcecraft/util/ForceUtils.java | 44 +- .../com/mrbysco/forcecraft/util/MobUtil.java | 2 +- .../world/feature/ForceBiomeModifiers.java | 33 +- .../world/feature/ForceFeatureKeys.java | 35 +- .../{mods.toml => neoforge.mods.toml} | 12 +- .../tags/fluids => c/tags/fluid}/biofuel.json | 0 .../tags/fluids => c/tags/fluid}/force.json | 0 .../tags/fluids => c/tags/fluid}/fuel.json | 0 .../tags/items => c/tags/item}/gears.json | 0 .../items => c/tags/item}/gears/force.json | 0 .../items => c/tags/item}/gems/force.json | 0 .../items => c/tags/item}/holds_items.json | 0 .../tags/items => c/tags/item}/ingots.json | 0 .../items => c/tags/item}/ingots/force.json | 0 .../tags/items => c/tags/item}/nuggets.json | 0 .../items => c/tags/item}/nuggets/force.json | 0 .../items => c/tags/item}/rods/force.json | 0 .../items => c/tags/item}/rods/wooden.json | 0 .../tags/items => c/tags/item}/shears.json | 0 .../tags/item}/workbenches/oak.json | 0 .../{advancements => advancement}/root.json | 0 .../tier0/damage.json | 0 .../tier0/force.json | 0 .../tier0/tier.json | 0 .../tier1/heat.json | 0 .../tier1/lumberjack.json | 0 .../tier1/speed.json | 0 .../tier1/tier.json | 0 .../tier2/experience.json | 0 .../tier2/freezing.json | 0 .../tier2/grinding.json | 0 .../tier2/holding.json | 0 .../tier2/luck.json | 0 .../tier2/rainbow.json | 0 .../tier2/tier.json | 0 .../tier3/bleeding.json | 0 .../tier3/camo.json | 0 .../tier3/silk.json | 0 .../tier3/tier.json | 0 .../tier4/bane.json | 0 .../tier4/tier.json | 0 .../tier5/healing.json | 0 .../tier5/tier.json | 0 .../tier5/wing.json | 0 .../tier6/ender.json | 0 .../tier6/sturdy.json | 0 .../tier6/tier.json | 0 .../tier6/time.json | 0 .../tier7/light.json | 0 .../tier7/tier.json | 0 .../tier7/treasure.json | 0 .../compat/thermal/bottler_force_flask.json | 0 .../compat/thermal/bottler_milk_flask.json | 0 .../{blocks => block}/endertot_holdable.json | 0 .../tags/{blocks => block}/force_brick.json | 0 .../tags/{blocks => block}/force_furnace.json | 0 .../tags/{blocks => block}/force_logs.json | 0 .../mineable_with_mitts.json | 0 .../flask_blacklist.json | 0 .../tags/{items => item}/force_armor.json | 0 .../tags/{items => item}/force_brick.json | 0 .../tags/{items => item}/force_fuel.json | 0 .../tags/{items => item}/force_torch.json | 0 .../tags/{items => item}/tools.json | 0 .../{items => item}/valid_bane_tools.json | 0 .../{items => item}/valid_bleeding_tools.json | 0 .../{items => item}/valid_camo_tools.json | 0 .../{items => item}/valid_damage_tools.json | 0 .../{items => item}/valid_ender_tools.json | 0 .../{items => item}/valid_force_belt.json | 0 .../{items => item}/valid_freezing_tools.json | 0 .../{items => item}/valid_healing_tools.json | 0 .../{items => item}/valid_heat_tools.json | 0 .../{items => item}/valid_infuser_charge.json | 0 .../valid_infuser_modifiers.json | 0 .../{items => item}/valid_infuser_tools.json | 0 .../valid_knockback_tools.json | 0 .../{items => item}/valid_light_tools.json | 0 .../{items => item}/valid_lucky_tools.json | 0 .../{items => item}/valid_lumber_tools.json | 0 .../{items => item}/valid_sight_tools.json | 0 .../{items => item}/valid_silky_tools.json | 0 .../{items => item}/valid_speed_tools.json | 0 .../{items => item}/valid_sturdy_tools.json | 0 .../{items => item}/valid_treasure_tools.json | 0 .../{items => item}/valid_wing_tools.json | 0 .../tags/{blocks => block}/leaves.json | 0 .../tags/{blocks => block}/logs.json | 0 .../tags/{blocks => block}/planks.json | 0 .../tags/{blocks => block}/saplings.json | 0 .../tags/{blocks => block}/slabs.json | 0 .../tags/{blocks => block}/stairs.json | 0 .../tags/{blocks => block}/wooden_slabs.json | 0 .../tags/{blocks => block}/wooden_stairs.json | 0 .../tags/{items => item}/leaves.json | 0 .../minecraft/tags/{items => item}/logs.json | 0 .../tags/{items => item}/planks.json | 0 .../tags/{items => item}/saplings.json | 0 .../minecraft/tags/{items => item}/slabs.json | 0 .../tags/{items => item}/stairs.json | 0 .../tags/{items => item}/wooden_slabs.json | 0 .../tags/{items => item}/wooden_stairs.json | 0 .../crafting_station_blacklist.json | 0 src/main/resources/forcecraft.mixins.json | 2 +- src/main/resources/pack.mcmeta | 2 +- 161 files changed, 607 insertions(+), 578 deletions(-) create mode 100644 src/main/java/com/mrbysco/forcecraft/registry/ForceComponents.java rename src/main/resources/META-INF/{mods.toml => neoforge.mods.toml} (75%) rename src/main/resources/data/{forge/tags/fluids => c/tags/fluid}/biofuel.json (100%) rename src/main/resources/data/{forge/tags/fluids => c/tags/fluid}/force.json (100%) rename src/main/resources/data/{forge/tags/fluids => c/tags/fluid}/fuel.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/gears.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/gears/force.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/gems/force.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/holds_items.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/ingots.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/ingots/force.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/nuggets.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/nuggets/force.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/rods/force.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/rods/wooden.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/shears.json (100%) rename src/main/resources/data/{forge/tags/items => c/tags/item}/workbenches/oak.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/root.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier0/damage.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier0/force.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier0/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier1/heat.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier1/lumberjack.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier1/speed.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier1/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/experience.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/freezing.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/grinding.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/holding.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/luck.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/rainbow.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier2/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier3/bleeding.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier3/camo.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier3/silk.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier3/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier4/bane.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier4/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier5/healing.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier5/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier5/wing.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier6/ender.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier6/sturdy.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier6/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier6/time.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier7/light.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier7/tier.json (100%) rename src/main/resources/data/forcecraft/{advancements => advancement}/tier7/treasure.json (100%) rename src/main/resources/data/forcecraft/{recipes => recipe}/compat/thermal/bottler_force_flask.json (100%) rename src/main/resources/data/forcecraft/{recipes => recipe}/compat/thermal/bottler_milk_flask.json (100%) rename src/main/resources/data/forcecraft/tags/{blocks => block}/endertot_holdable.json (100%) rename src/main/resources/data/forcecraft/tags/{blocks => block}/force_brick.json (100%) rename src/main/resources/data/forcecraft/tags/{blocks => block}/force_furnace.json (100%) rename src/main/resources/data/forcecraft/tags/{blocks => block}/force_logs.json (100%) rename src/main/resources/data/forcecraft/tags/{blocks => block}/mineable_with_mitts.json (100%) rename src/main/resources/data/forcecraft/tags/{entity_types => entity_type}/flask_blacklist.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/force_armor.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/force_brick.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/force_fuel.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/force_torch.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_bane_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_bleeding_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_camo_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_damage_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_ender_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_force_belt.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_freezing_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_healing_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_heat_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_infuser_charge.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_infuser_modifiers.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_infuser_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_knockback_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_light_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_lucky_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_lumber_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_sight_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_silky_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_speed_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_sturdy_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_treasure_tools.json (100%) rename src/main/resources/data/forcecraft/tags/{items => item}/valid_wing_tools.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/leaves.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/logs.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/planks.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/saplings.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/slabs.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/stairs.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/wooden_slabs.json (100%) rename src/main/resources/data/minecraft/tags/{blocks => block}/wooden_stairs.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/leaves.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/logs.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/planks.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/saplings.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/slabs.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/stairs.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/wooden_slabs.json (100%) rename src/main/resources/data/minecraft/tags/{items => item}/wooden_stairs.json (100%) rename src/main/resources/data/tconstruct/tags/{tile_entity_types => tile_entity_type}/crafting_station_blacklist.json (100%) diff --git a/build.gradle b/build.gradle index 5c262597..70f29aed 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'eclipse' id 'idea' id 'maven-publish' - id 'net.neoforged.gradle.userdev' version '7.0.134' + id 'net.neoforged.gradle.userdev' version '7.0.161' id 'net.darkhax.curseforgegradle' version '1.1.24' id 'com.modrinth.minotaur' version "2.+" } @@ -14,8 +14,8 @@ base { archivesName = "${mod_archive_name}-${mc_version}" } -// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +// Mojang ships Java 21 to end users in 1.20.5+, so your mod should target Java 21. +java.toolchain.languageVersion = JavaLanguageVersion.of(21) minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg') //minecraft.accessTransformers.entry public net.minecraft.client.Minecraft textureManager # textureManager @@ -75,10 +75,10 @@ repositories { dependencies { implementation "net.neoforged:neoforge:${neo_version}" - compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" - compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}" + compileOnly "mezz.jei:jei-${jei_minecraft}-common-api:${jei_version}" + compileOnly "mezz.jei:jei-${jei_minecraft}-neoforge-api:${jei_version}" - runtimeOnly "mezz.jei:jei-${mc_version}-neoforge:${jei_version}" + localRuntime "mezz.jei:jei-${jei_minecraft}-neoforge:${jei_version}" compileOnly "vazkii.patchouli:Patchouli:${patchouli_version}:api" runtimeOnly "vazkii.patchouli:Patchouli:${patchouli_version}" @@ -168,6 +168,10 @@ if (System.getenv().MODRINTH_KEY) { } } -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation -} +// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior. +idea { + module { + downloadSources = true + downloadJavadoc = true + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 2f19c73b..8c8a2d2c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,10 +5,10 @@ org.gradle.daemon=false org.gradle.debug=false # Base info -mc_version=1.20.4 -neo_version=20.4.232 -neogradle.subsystems.parchment.minecraftVersion=1.20.4 -neogradle.subsystems.parchment.mappingsVersion=2024.04.14 +mc_version=1.21.1 +neo_version=21.1.15 +neogradle.subsystems.parchment.minecraftVersion=1.21 +neogradle.subsystems.parchment.mappingsVersion=2024.07.28 neogradle.subsystems.conventions.runs.create-default-run-per-type=false mod_group=com.mrbysco.forcecraft mod_id=forcecraft @@ -23,6 +23,7 @@ curseforge_id=454802 modrinth_id=Nwz7U1QT # Dependencies -jei_version=17.3.0.49 -patchouli_version=1.20.4-85-NEOFORGE -patchouli_provider_version=1.20.4-1.0.10-Snapshot.7 +jei_minecraft=1.21.1 +jei_version=19.8.5.118 +patchouli_version=1.21-87-NEOFORGE-SNAPSHOT +patchouli_provider_version=1.21-1.0.11-Snapshot.2 diff --git a/src/main/java/com/mrbysco/forcecraft/ForceCraft.java b/src/main/java/com/mrbysco/forcecraft/ForceCraft.java index 37e6be42..d2a162d5 100644 --- a/src/main/java/com/mrbysco/forcecraft/ForceCraft.java +++ b/src/main/java/com/mrbysco/forcecraft/ForceCraft.java @@ -30,12 +30,16 @@ import com.mrbysco.forcecraft.world.feature.ForceFeatures; import net.minecraft.core.dispenser.ShearsDispenseItemBehavior; import net.minecraft.world.level.block.DispenserBlock; +import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.common.Mod; import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.NeoForgeMod; import org.apache.logging.log4j.LogManager; @@ -46,8 +50,8 @@ public class ForceCraft { public static final Logger LOGGER = LogManager.getLogger(Reference.MOD_ID); - public ForceCraft(IEventBus eventBus) { - ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ConfigHandler.commonSpec); + public ForceCraft(IEventBus eventBus, ModContainer container, Dist dist) { + container.registerConfig(ModConfig.Type.COMMON, ConfigHandler.commonSpec); eventBus.register(ConfigHandler.class); eventBus.addListener(CapabilityHandler::registerCapabilities); @@ -90,7 +94,8 @@ public ForceCraft(IEventBus eventBus) { NeoForgeMod.enableMilkFluid(); //Enable milk from forge - if (FMLEnvironment.dist.isClient()) { + if (dist.isClient()) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); eventBus.addListener(ClientHandler::onClientSetup); eventBus.addListener(ClientHandler::onRegisterMenu); eventBus.addListener(ClientHandler::registerKeymapping); diff --git a/src/main/java/com/mrbysco/forcecraft/Reference.java b/src/main/java/com/mrbysco/forcecraft/Reference.java index 482732db..2f2109af 100644 --- a/src/main/java/com/mrbysco/forcecraft/Reference.java +++ b/src/main/java/com/mrbysco/forcecraft/Reference.java @@ -1,6 +1,7 @@ package com.mrbysco.forcecraft; import com.mrbysco.forcecraft.registry.ForceDamageTypes; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; @@ -48,4 +49,8 @@ public static DamageSource causeBleedingDamage(Entity entity) { public static DamageSource causeLiquidForceDamage(Entity entity) { return entity.damageSources().source(ForceDamageTypes.LIQUID_FORCE, entity); } + + public static ResourceLocation modLoc(String path) { + return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); + } } diff --git a/src/main/java/com/mrbysco/forcecraft/client/ClientHandler.java b/src/main/java/com/mrbysco/forcecraft/client/ClientHandler.java index fbd3d55a..754ca6cf 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/ClientHandler.java +++ b/src/main/java/com/mrbysco/forcecraft/client/ClientHandler.java @@ -47,9 +47,9 @@ import static com.mrbysco.forcecraft.attachment.ForceAttachments.MAGNET; public class ClientHandler { - public static final ModelLayerLocation CREEPER_TOT = new ModelLayerLocation(new ResourceLocation(Reference.MOD_ID, "creeper_tot"), "main"); - public static final ModelLayerLocation FAIRY = new ModelLayerLocation(new ResourceLocation(Reference.MOD_ID, "fairy"), "main"); - public static final ModelLayerLocation ENDERTOT = new ModelLayerLocation(new ResourceLocation(Reference.MOD_ID, "endertot"), "main"); + public static final ModelLayerLocation CREEPER_TOT = new ModelLayerLocation(Reference.modLoc("creeper_tot"), "main"); + public static final ModelLayerLocation FAIRY = new ModelLayerLocation(Reference.modLoc("fairy"), "main"); + public static final ModelLayerLocation ENDERTOT = new ModelLayerLocation(Reference.modLoc("endertot"), "main"); public static void onClientSetup(final FMLClientSetupEvent event) { ItemBlockRenderTypes.setRenderLayer(ForceFluids.FORCE_FLUID_FLOWING.get(), RenderType.translucent()); diff --git a/src/main/java/com/mrbysco/forcecraft/client/ShakeUtil.java b/src/main/java/com/mrbysco/forcecraft/client/ShakeUtil.java index d495e407..7410f47f 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/ShakeUtil.java +++ b/src/main/java/com/mrbysco/forcecraft/client/ShakeUtil.java @@ -3,22 +3,24 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import com.mrbysco.forcecraft.registry.ForceEffects; +import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; public class ShakeUtil { - public static void shakeScreen(Minecraft minecraft, float partialTicks, long finishTimeNano, PoseStack poseStack) { - float effectScale = minecraft.options.screenEffectScale().get().floatValue(); - if (minecraft.getCameraEntity() instanceof Player player && player.hasEffect(ForceEffects.SHAKING.get()) & effectScale > 0.0F) { + public static void shakeScreen(Minecraft minecraft, DeltaTracker deltaTracker, PoseStack poseStack) { + final float effectScale = minecraft.options.screenEffectScale().get().floatValue(); + final float partialTicks = deltaTracker.getGameTimeDeltaPartialTick(false); + if (minecraft.getCameraEntity() instanceof Player player && player.hasEffect(ForceEffects.SHAKING) & effectScale > 0.0F) { float f = player.walkDist - player.walkDistO; float f1 = -(player.walkDist + f * partialTicks); float f2 = Mth.lerp(partialTicks, player.oBob, player.bob); // Calculate screen shake offsets based on the provided strength float shakeAmount = effectScale * 0.005F; // Adjust this value to control the intensity of the shake - float time = finishTimeNano / 1000.0f; // Use time for animation + float time = 0 / 1000.0f; // Use time for animation // Calculate the X-axis offset for rocking back and forth float offsetX = (float) Math.sin(time * 0.5f) * shakeAmount; diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/belt/ForceBeltScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/belt/ForceBeltScreen.java index 6a1307ca..1c4f171b 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/belt/ForceBeltScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/belt/ForceBeltScreen.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.player.Inventory; public class ForceBeltScreen extends AbstractContainerScreen { - private final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcebelt.png"); + private final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/forcebelt.png"); public ForceBeltScreen(ForceBeltMenu screenContainer, Inventory inv, Component titleIn) { super(screenContainer, inv, titleIn); diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/card/ItemCardScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/card/ItemCardScreen.java index 60c925c6..786683ff 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/card/ItemCardScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/card/ItemCardScreen.java @@ -14,7 +14,7 @@ import net.neoforged.neoforge.network.PacketDistributor; public class ItemCardScreen extends AbstractContainerScreen { - private static final ResourceLocation ITEM_CARD_GUI = new ResourceLocation(Reference.MOD_ID, "textures/gui/crafting3x3.png"); + private static final ResourceLocation ITEM_CARD_GUI = Reference.modLoc("textures/gui/crafting3x3.png"); private static final Component saveText = Component.literal("\u2714"); private static final Component invalidText = Component.literal("\u2718"); private Button buttonSave; diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/engine/ForceEngineScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/engine/ForceEngineScreen.java index 55c95d08..78d09910 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/engine/ForceEngineScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/engine/ForceEngineScreen.java @@ -16,7 +16,7 @@ import java.util.List; public class ForceEngineScreen extends AbstractContainerScreen { - private final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/force_engine.png"); + private final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/force_engine.png"); public ForceEngineScreen(ForceEngineMenu screenContainer, Inventory inv, Component titleIn) { super(screenContainer, inv, titleIn); diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/furnace/ForceFurnaceScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/furnace/ForceFurnaceScreen.java index f7cc1eda..8f99ea64 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/furnace/ForceFurnaceScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/furnace/ForceFurnaceScreen.java @@ -8,7 +8,7 @@ public class ForceFurnaceScreen extends AbstractForceFurnaceScreen { - private static final ResourceLocation FURNACE_GUI_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/furnace_gui.png"); + private static final ResourceLocation FURNACE_GUI_TEXTURES = Reference.modLoc("textures/gui/container/furnace_gui.png"); public ForceFurnaceScreen(ForceFurnaceMenu container, Inventory playerInventory, Component title) { super(container, playerInventory, title, FURNACE_GUI_TEXTURES); diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/infuser/InfuserScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/infuser/InfuserScreen.java index 49c6ba28..c4a56351 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/infuser/InfuserScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/infuser/InfuserScreen.java @@ -27,17 +27,17 @@ public class InfuserScreen extends AbstractContainerScreen { private Inventory inventory; private ProgressBar infuserProgress; // 12 by 107 - private final ResourceLocation INFO = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/info.png"); - private final ResourceLocation ENERGY = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/energy.png"); - private final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forceinfuser.png"); + private final ResourceLocation INFO = Reference.modLoc("textures/gui/container/info.png"); + private final ResourceLocation ENERGY = Reference.modLoc("textures/gui/container/energy.png"); + private final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/forceinfuser.png"); private static final WidgetSprites GUIDE_SPRITE = new WidgetSprites( - new ResourceLocation(Reference.MOD_ID, "infuser/guide"), - new ResourceLocation(Reference.MOD_ID, "infuser/guide_highlighted") + Reference.modLoc("infuser/guide"), + Reference.modLoc("infuser/guide_highlighted") ); private static final WidgetSprites CHISEL = new WidgetSprites( - new ResourceLocation(Reference.MOD_ID, "infuser/chisel"), - new ResourceLocation(Reference.MOD_ID, "infuser/chisel_highlight") + Reference.modLoc("infuser/chisel"), + Reference.modLoc("infuser/chisel_highlight") ); private Button buttonInfuse; diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/pack/ForcePackScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/pack/ForcePackScreen.java index 656e25e0..b174c4f1 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/pack/ForcePackScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/pack/ForcePackScreen.java @@ -10,11 +10,11 @@ public class ForcePackScreen extends AbstractContainerScreen { - private final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcepack.png"); - private final ResourceLocation TEXTURE_UPGRADE_1 = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcepack_upgrade_1.png"); - private final ResourceLocation TEXTURE_UPGRADE_2 = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcepack_upgrade_2.png"); - private final ResourceLocation TEXTURE_UPGRADE_3 = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcepack_upgrade_3.png"); - private final ResourceLocation TEXTURE_UPGRADE_4 = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/forcepack_upgrade_4.png"); + private final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/forcepack.png"); + private final ResourceLocation TEXTURE_UPGRADE_1 = Reference.modLoc("textures/gui/container/forcepack_upgrade_1.png"); + private final ResourceLocation TEXTURE_UPGRADE_2 = Reference.modLoc("textures/gui/container/forcepack_upgrade_2.png"); + private final ResourceLocation TEXTURE_UPGRADE_3 = Reference.modLoc("textures/gui/container/forcepack_upgrade_3.png"); + private final ResourceLocation TEXTURE_UPGRADE_4 = Reference.modLoc("textures/gui/container/forcepack_upgrade_4.png"); public ForcePackScreen(ForcePackMenu screenContainer, Inventory inv, Component titleIn) { super(screenContainer, inv, titleIn); diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/pack/RenameAndRecolorScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/pack/RenameAndRecolorScreen.java index 7ed3a499..86ca9a8c 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/pack/RenameAndRecolorScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/pack/RenameAndRecolorScreen.java @@ -17,7 +17,7 @@ import net.neoforged.neoforge.network.PacketDistributor; public class RenameAndRecolorScreen extends Screen { - private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/rename_screen.png"); + private static final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/rename_screen.png"); private ItemStack itemstack; private final InteractionHand usedHand; private EditBox textfield; diff --git a/src/main/java/com/mrbysco/forcecraft/client/gui/spoils/SpoilsBagScreen.java b/src/main/java/com/mrbysco/forcecraft/client/gui/spoils/SpoilsBagScreen.java index 7e3977ca..33dcdd16 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/gui/spoils/SpoilsBagScreen.java +++ b/src/main/java/com/mrbysco/forcecraft/client/gui/spoils/SpoilsBagScreen.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.player.Inventory; public class SpoilsBagScreen extends AbstractContainerScreen { - private final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/spoilsbag.png"); + private final ResourceLocation TEXTURE = Reference.modLoc("textures/gui/container/spoilsbag.png"); public SpoilsBagScreen(SpoilsBagMenu screenContainer, Inventory inv, Component titleIn) { super(screenContainer, inv, titleIn); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/BlueChuChuRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/BlueChuChuRenderer.java index a48f8d16..5b747560 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/BlueChuChuRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/BlueChuChuRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.monster.Slime; public class BlueChuChuRenderer extends SlimeRenderer { - private static final ResourceLocation CHU_CHU_TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entity/blue_chu_chu.png"); + private static final ResourceLocation CHU_CHU_TEXTURE = Reference.modLoc("textures/entity/blue_chu_chu.png"); public BlueChuChuRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdChickenRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdChickenRenderer.java index 295e7cab..8b2171d4 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdChickenRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdChickenRenderer.java @@ -10,7 +10,7 @@ import net.minecraft.util.Mth; public class ColdChickenRenderer extends MobRenderer> { - private static final ResourceLocation CHICKEN_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/cold_chicken.png"); + private static final ResourceLocation CHICKEN_TEXTURES = Reference.modLoc("textures/entity/cold_chicken.png"); public ColdChickenRenderer(EntityRendererProvider.Context context) { super(context, new ColdChickenModel<>(context.bakeLayer(ModelLayers.CHICKEN)), 0.3F); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdCowRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdCowRenderer.java index e9385d82..024744b5 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdCowRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdCowRenderer.java @@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceLocation; public class ColdCowRenderer extends MobRenderer> { - private static final ResourceLocation COW_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/cold_cow.png"); + private static final ResourceLocation COW_TEXTURES = Reference.modLoc("textures/entity/cold_cow.png"); public ColdCowRenderer(EntityRendererProvider.Context context) { super(context, new ColdCowModel<>(context.bakeLayer(ModelLayers.COW)), 0.7F); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdPigRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdPigRenderer.java index e0b298a2..a284a856 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdPigRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/ColdPigRenderer.java @@ -10,7 +10,7 @@ import net.minecraft.resources.ResourceLocation; public class ColdPigRenderer extends MobRenderer> { - private static final ResourceLocation PIG_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/cold_pig.png"); + private static final ResourceLocation PIG_TEXTURES = Reference.modLoc("textures/entity/cold_pig.png"); public ColdPigRenderer(EntityRendererProvider.Context context) { super(context, new ColdPigModel<>(context.bakeLayer(ModelLayers.PIG)), 0.7F); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/CreeperTotRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/CreeperTotRenderer.java index 27987581..6c559501 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/CreeperTotRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/CreeperTotRenderer.java @@ -12,7 +12,7 @@ import net.minecraft.util.Mth; public class CreeperTotRenderer extends MobRenderer> { - private static final ResourceLocation CREEPER_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/creeper_tot.png"); + private static final ResourceLocation CREEPER_TEXTURES = Reference.modLoc("textures/entity/creeper_tot.png"); public CreeperTotRenderer(EntityRendererProvider.Context context) { super(context, new CreeperTotModel<>(context.bakeLayer(ClientHandler.CREEPER_TOT)), 0.2F); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/EnderTotRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/EnderTotRenderer.java index 704ed52c..832493d3 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/EnderTotRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/EnderTotRenderer.java @@ -17,7 +17,7 @@ import java.util.Random; public class EnderTotRenderer extends MobRenderer> { - private static final ResourceLocation ENDERTOT_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/ender_tot.png"); + private static final ResourceLocation ENDERTOT_TEXTURES = Reference.modLoc("textures/entity/ender_tot.png"); private final Random rnd = new Random(); public EnderTotRenderer(EntityRendererProvider.Context context) { diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/FairyRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/FairyRenderer.java index d777eaa1..04ed1774 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/FairyRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/FairyRenderer.java @@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceLocation; public class FairyRenderer extends MobRenderer> { - private static final ResourceLocation FAIRY_TEXTURES = new ResourceLocation(Reference.MOD_ID, "textures/entity/fairy.png"); + private static final ResourceLocation FAIRY_TEXTURES = Reference.modLoc("textures/entity/fairy.png"); public FairyRenderer(EntityRendererProvider.Context context) { super(context, new FairyModel<>(context.bakeLayer(ClientHandler.FAIRY)), 0.2F); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/ForceArrowRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/ForceArrowRenderer.java index 73b2638b..7d90e760 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/ForceArrowRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/ForceArrowRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.resources.ResourceLocation; public class ForceArrowRenderer extends ArrowRenderer { - public static final ResourceLocation FORCE_ARROW = new ResourceLocation(Reference.MOD_ID, "textures/entity/projectiles/force_arrow.png"); + public static final ResourceLocation FORCE_ARROW = Reference.modLoc("textures/entity/projectiles/force_arrow.png"); public ForceArrowRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/GoldChuChuRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/GoldChuChuRenderer.java index df84003f..798f474c 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/GoldChuChuRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/GoldChuChuRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.monster.Slime; public class GoldChuChuRenderer extends SlimeRenderer { - private static final ResourceLocation CHU_CHU_TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entity/gold_chu_chu.png"); + private static final ResourceLocation CHU_CHU_TEXTURE = Reference.modLoc("textures/entity/gold_chu_chu.png"); public GoldChuChuRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/GreenChuChuRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/GreenChuChuRenderer.java index 8d825cd6..b0372277 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/GreenChuChuRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/GreenChuChuRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.monster.Slime; public class GreenChuChuRenderer extends SlimeRenderer { - private static final ResourceLocation CHU_CHU_TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entity/green_chu_chu.png"); + private static final ResourceLocation CHU_CHU_TEXTURE = Reference.modLoc("textures/entity/green_chu_chu.png"); public GreenChuChuRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/RedChuChuRenderer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/RedChuChuRenderer.java index 2855829d..b86d3c5a 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/RedChuChuRenderer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/RedChuChuRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.monster.Slime; public class RedChuChuRenderer extends SlimeRenderer { - private static final ResourceLocation CHU_CHU_TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entity/red_chu_chu.png"); + private static final ResourceLocation CHU_CHU_TEXTURE = Reference.modLoc("textures/entity/red_chu_chu.png"); public RedChuChuRenderer(EntityRendererProvider.Context context) { super(context); diff --git a/src/main/java/com/mrbysco/forcecraft/client/renderer/layer/EndertotEyesLayer.java b/src/main/java/com/mrbysco/forcecraft/client/renderer/layer/EndertotEyesLayer.java index 9f21a923..50ca1834 100644 --- a/src/main/java/com/mrbysco/forcecraft/client/renderer/layer/EndertotEyesLayer.java +++ b/src/main/java/com/mrbysco/forcecraft/client/renderer/layer/EndertotEyesLayer.java @@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceLocation; public class EndertotEyesLayer extends EyesLayer> { - private static final RenderType RENDER_TYPE = RenderType.eyes(new ResourceLocation(Reference.MOD_ID, "textures/entity/ender_tot_eyes.png")); + private static final RenderType RENDER_TYPE = RenderType.eyes(Reference.modLoc("textures/entity/ender_tot_eyes.png")); public EndertotEyesLayer(RenderLayerParent> renderLayerParent) { super(renderLayerParent); diff --git a/src/main/java/com/mrbysco/forcecraft/compat/jei/JeiCompat.java b/src/main/java/com/mrbysco/forcecraft/compat/jei/JeiCompat.java index 6b70af79..d8f86d60 100644 --- a/src/main/java/com/mrbysco/forcecraft/compat/jei/JeiCompat.java +++ b/src/main/java/com/mrbysco/forcecraft/compat/jei/JeiCompat.java @@ -35,14 +35,14 @@ @JeiPlugin public class JeiCompat implements IModPlugin { - public static final ResourceLocation RECIPE_MULTIPLES_JEI = new ResourceLocation(Reference.MOD_ID, "textures/gui/jei/multiples.png"); - public static final ResourceLocation RECIPE_INFUSER_JEI = new ResourceLocation(Reference.MOD_ID, "textures/gui/jei/infuser.png"); + public static final ResourceLocation RECIPE_MULTIPLES_JEI = Reference.modLoc("textures/gui/jei/multiples.png"); + public static final ResourceLocation RECIPE_INFUSER_JEI = Reference.modLoc("textures/gui/jei/infuser.png"); - public static final ResourceLocation PLUGIN_UID = new ResourceLocation(Reference.MOD_ID, "main"); + public static final ResourceLocation PLUGIN_UID = Reference.modLoc("main"); - public static final ResourceLocation FREEZING = new ResourceLocation(Reference.MOD_ID, "freezing"); - public static final ResourceLocation GRINDING = new ResourceLocation(Reference.MOD_ID, "grinding"); - public static final ResourceLocation INFUSER = new ResourceLocation(Reference.MOD_ID, "infuser"); + public static final ResourceLocation FREEZING = Reference.modLoc("freezing"); + public static final ResourceLocation GRINDING = Reference.modLoc("grinding"); + public static final ResourceLocation INFUSER = Reference.modLoc("infuser"); public static final RecipeType FREEZING_TYPE = RecipeType.create(Reference.MOD_ID, "freezing", FreezingRecipe.class); public static final RecipeType GRINDING_TYPE = RecipeType.create(Reference.MOD_ID, "grinding", GrindingRecipe.class); public static final RecipeType INFUSER_TYPE = RecipeType.create(Reference.MOD_ID, "infuser", InfuseRecipe.class); diff --git a/src/main/java/com/mrbysco/forcecraft/datagen/data/ForceRecipeProvider.java b/src/main/java/com/mrbysco/forcecraft/datagen/data/ForceRecipeProvider.java index 0b9843bf..53337839 100644 --- a/src/main/java/com/mrbysco/forcecraft/datagen/data/ForceRecipeProvider.java +++ b/src/main/java/com/mrbysco/forcecraft/datagen/data/ForceRecipeProvider.java @@ -63,23 +63,23 @@ protected void buildRecipes(RecipeOutput output) { ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_STAIRS.get(), 4).define('#', ForceRegistry.FORCE_BRICK_PURPLE.get()).pattern("# ").pattern("## ").pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_STAIRS.get(), 4).define('#', ForceRegistry.FORCE_BRICK_GRAY.get()).pattern("# ").pattern("## ").pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_STAIRS.get(), 4).define('#', ForceRegistry.FORCE_BRICK.get()).pattern("# ").pattern("## ").pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_RED.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_RED_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_RED.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_red_stairs_from_force_brick_red")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_YELLOW.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_YELLOW_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_YELLOW.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_yellow_stairs_from_force_brick_yellow")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GREEN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GREEN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GREEN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_green_stairs_from_force_brick_green")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLUE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLUE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_blue_stairs_from_force_brick_blue")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_WHITE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_WHITE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_WHITE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_white_stairs_from_force_brick_white")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLACK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLACK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLACK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_black_stairs_from_force_brick_black")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BROWN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BROWN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BROWN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_brown_stairs_from_force_brick_brown")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_ORANGE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_ORANGE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_ORANGE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_orange_stairs_from_force_brick_orange")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_BLUE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_light_blue_stairs_from_force_brick_light_blue")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_MAGENTA.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_MAGENTA_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_MAGENTA.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_magenta_stairs_from_force_brick_magenta")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PINK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PINK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PINK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_pink_stairs_from_force_brick_pink")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_GRAY_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_light_gray_stairs_from_force_brick_light_gray")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIME.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIME_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIME.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_lime_stairs_from_force_brick_lime")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_CYAN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_CYAN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_CYAN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_cyan_stairs_from_force_brick_cyan")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PURPLE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_purple_stairs_from_force_brick_purple")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_gray_stairs_from_force_brick_gray")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_stairs_from_force_brick")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_RED.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_RED_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_RED.get())).save(output, Reference.modLoc("force_brick_red_stairs_from_force_brick_red")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_YELLOW.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_YELLOW_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_YELLOW.get())).save(output, Reference.modLoc("force_brick_yellow_stairs_from_force_brick_yellow")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GREEN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GREEN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GREEN.get())).save(output, Reference.modLoc("force_brick_green_stairs_from_force_brick_green")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLUE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLUE.get())).save(output, Reference.modLoc("force_brick_blue_stairs_from_force_brick_blue")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_WHITE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_WHITE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_WHITE.get())).save(output, Reference.modLoc("force_brick_white_stairs_from_force_brick_white")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLACK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLACK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLACK.get())).save(output, Reference.modLoc("force_brick_black_stairs_from_force_brick_black")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BROWN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BROWN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BROWN.get())).save(output, Reference.modLoc("force_brick_brown_stairs_from_force_brick_brown")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_ORANGE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_ORANGE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_ORANGE.get())).save(output, Reference.modLoc("force_brick_orange_stairs_from_force_brick_orange")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_BLUE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get())).save(output, Reference.modLoc("force_brick_light_blue_stairs_from_force_brick_light_blue")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_MAGENTA.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_MAGENTA_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_MAGENTA.get())).save(output, Reference.modLoc("force_brick_magenta_stairs_from_force_brick_magenta")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PINK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PINK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PINK.get())).save(output, Reference.modLoc("force_brick_pink_stairs_from_force_brick_pink")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_GRAY_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get())).save(output, Reference.modLoc("force_brick_light_gray_stairs_from_force_brick_light_gray")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIME.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIME_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIME.get())).save(output, Reference.modLoc("force_brick_lime_stairs_from_force_brick_lime")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_CYAN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_CYAN_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_CYAN.get())).save(output, Reference.modLoc("force_brick_cyan_stairs_from_force_brick_cyan")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PURPLE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output, Reference.modLoc("force_brick_purple_stairs_from_force_brick_purple")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output, Reference.modLoc("force_brick_gray_stairs_from_force_brick_gray")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_STAIRS.get()).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output, Reference.modLoc("force_brick_stairs_from_force_brick")); //Slabs ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_PLANK_SLAB.get(), 6).define('#', ForceRegistry.FORCE_PLANKS.get()).pattern("###").unlockedBy("has_planks", has(ForceRegistry.FORCE_PLANKS.get())).save(output); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_RED_SLAB.get(), 6).define('#', ForceRegistry.FORCE_BRICK_RED.get()).pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_RED.get())).save(output); @@ -99,23 +99,23 @@ protected void buildRecipes(RecipeOutput output) { ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_SLAB.get(), 6).define('#', ForceRegistry.FORCE_BRICK_PURPLE.get()).pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_SLAB.get(), 6).define('#', ForceRegistry.FORCE_BRICK_GRAY.get()).pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_SLAB.get(), 6).define('#', ForceRegistry.FORCE_BRICK.get()).pattern("###").unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_RED.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_RED_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_RED.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_red_slab_from_force_brick_red")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_YELLOW.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_YELLOW_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_YELLOW.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_yellow_slab_from_force_brick_yellow")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GREEN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GREEN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GREEN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_green_slab_from_force_brick_green")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLUE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLUE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_blue_slab_from_force_brick_blue")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_WHITE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_WHITE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_WHITE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_white_slab_from_force_brick_white")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLACK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLACK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLACK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_black_slab_from_force_brick_black")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BROWN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BROWN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BROWN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_brown_slab_from_force_brick_brown")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_ORANGE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_ORANGE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_ORANGE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_orange_slab_from_force_brick_orange")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_BLUE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_light_blue_slab_from_force_brick_light_blue")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_MAGENTA.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_MAGENTA_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_MAGENTA.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_magenta_slab_from_force_brick_magenta")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PINK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PINK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PINK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_pink_slab_from_force_brick_pink")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_GRAY_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_light_gray_slab_from_force_brick_light_gray")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIME.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIME_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIME.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_lime_slab_from_force_brick_lime")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_CYAN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_CYAN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_CYAN.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_cyan_slab_from_force_brick_cyan")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PURPLE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_purple_slab_from_force_brick_purple")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_gray_slab_from_force_brick_gray")); - SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output, new ResourceLocation(Reference.MOD_ID, "force_brick_slab_from_force_brick")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_RED.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_RED_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_RED.get())).save(output, Reference.modLoc("force_brick_red_slab_from_force_brick_red")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_YELLOW.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_YELLOW_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_YELLOW.get())).save(output, Reference.modLoc("force_brick_yellow_slab_from_force_brick_yellow")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GREEN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GREEN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GREEN.get())).save(output, Reference.modLoc("force_brick_green_slab_from_force_brick_green")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLUE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLUE.get())).save(output, Reference.modLoc("force_brick_blue_slab_from_force_brick_blue")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_WHITE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_WHITE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_WHITE.get())).save(output, Reference.modLoc("force_brick_white_slab_from_force_brick_white")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BLACK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BLACK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BLACK.get())).save(output, Reference.modLoc("force_brick_black_slab_from_force_brick_black")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_BROWN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_BROWN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_BROWN.get())).save(output, Reference.modLoc("force_brick_brown_slab_from_force_brick_brown")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_ORANGE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_ORANGE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_ORANGE.get())).save(output, Reference.modLoc("force_brick_orange_slab_from_force_brick_orange")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_BLUE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_BLUE.get())).save(output, Reference.modLoc("force_brick_light_blue_slab_from_force_brick_light_blue")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_MAGENTA.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_MAGENTA_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_MAGENTA.get())).save(output, Reference.modLoc("force_brick_magenta_slab_from_force_brick_magenta")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PINK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PINK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PINK.get())).save(output, Reference.modLoc("force_brick_pink_slab_from_force_brick_pink")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIGHT_GRAY_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIGHT_GRAY.get())).save(output, Reference.modLoc("force_brick_light_gray_slab_from_force_brick_light_gray")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_LIME.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_LIME_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_LIME.get())).save(output, Reference.modLoc("force_brick_lime_slab_from_force_brick_lime")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_CYAN.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_CYAN_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_CYAN.get())).save(output, Reference.modLoc("force_brick_cyan_slab_from_force_brick_cyan")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_PURPLE.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_PURPLE_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_PURPLE.get())).save(output, Reference.modLoc("force_brick_purple_slab_from_force_brick_purple")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK_GRAY.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_GRAY_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK_GRAY.get())).save(output, Reference.modLoc("force_brick_gray_slab_from_force_brick_gray")); + SingleItemRecipeBuilder.stonecutting(Ingredient.of(ForceRegistry.FORCE_BRICK.get()), RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK_SLAB.get(), 2).unlockedBy("has_bricks", has(ForceRegistry.FORCE_BRICK.get())).save(output, Reference.modLoc("force_brick_slab_from_force_brick")); //Smelting oreSmelting(output, List.of(ForceRegistry.POWER_ORE.get(), ForceRegistry.DEEPSLATE_POWER_ORE.get()), @@ -123,7 +123,7 @@ protected void buildRecipes(RecipeOutput output) { SimpleCookingRecipeBuilder.smelting(Ingredient.of(ForceRegistry.RAW_BACON.get()), RecipeCategory.FOOD, ForceRegistry.COOKED_BACON.get(), 0.1F, 200) .unlockedBy("has_raw_bacon", has(ForceRegistry.RAW_BACON.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "cooked_bacon_from_smelting")); + .save(output, Reference.modLoc("cooked_bacon_from_smelting")); SimpleCookingRecipeBuilder.smelting(Ingredient.of(ForceTags.FORCE_LOGS), RecipeCategory.MISC, ForceRegistry.GOLDEN_POWER_SOURCE.get(), 0.15F, 200) .unlockedBy("has_force_logs", has(ForceTags.FORCE_LOGS)) @@ -143,7 +143,7 @@ protected void buildRecipes(RecipeOutput output) { .requires(ForceRegistry.FORCE_GEM.get()) .unlockedBy("has_book", has(Items.BOOK)) .unlockedBy("has_force_gem", has(ForceRegistry.FORCE_GEM.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_and_you")); + .save(output, Reference.modLoc("force_and_you")); ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, ForceRegistry.BACONATOR.get()) .pattern(" M ") @@ -160,104 +160,104 @@ protected void buildRecipes(RecipeOutput output) { .pattern("##") .define('#', ForceRegistry.PILE_OF_GUNPOWDER.get()) .unlockedBy("has_pile_of_gunpowder", has(ForceRegistry.PILE_OF_GUNPOWDER.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "gunpowder_from_pile_of_gunpowder")); + .save(output, Reference.modLoc("gunpowder_from_pile_of_gunpowder")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.WHITE_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_WHITE) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_white_dye", has(Tags.Items.DYES_WHITE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "white_force_furnace_from_dye")); + .save(output, Reference.modLoc("white_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.ORANGE_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_ORANGE) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_orange_dye", has(Tags.Items.DYES_ORANGE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "orange_force_furnace_from_dye")); + .save(output, Reference.modLoc("orange_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.MAGENTA_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_MAGENTA) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_magenta_dye", has(Tags.Items.DYES_MAGENTA)) - .save(output, new ResourceLocation(Reference.MOD_ID, "magenta_force_furnace_from_dye")); + .save(output, Reference.modLoc("magenta_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.LIGHT_BLUE_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_LIGHT_BLUE) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_light_blue_dye", has(Tags.Items.DYES_LIGHT_BLUE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "light_blue_force_furnace_from_dye")); + .save(output, Reference.modLoc("light_blue_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.FORCE_FURNACE.get()) .requires(ForceTags.FORCE_FURNACES) .requires(Tags.Items.DYES_YELLOW) .unlockedBy("has_force_furnace", has(ForceTags.FORCE_FURNACES)) .unlockedBy("has_yellow_dye", has(Tags.Items.DYES_YELLOW)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_furnace_from_dye")); + .save(output, Reference.modLoc("force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.LIME_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_LIME) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_lime_dye", has(Tags.Items.DYES_LIME)) - .save(output, new ResourceLocation(Reference.MOD_ID, "lime_force_furnace_from_dye")); + .save(output, Reference.modLoc("lime_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.PINK_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_PINK) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_pink_dye", has(Tags.Items.DYES_PINK)) - .save(output, new ResourceLocation(Reference.MOD_ID, "pink_force_furnace_from_dye")); + .save(output, Reference.modLoc("pink_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.GRAY_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_GRAY) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_gray_dye", has(Tags.Items.DYES_GRAY)) - .save(output, new ResourceLocation(Reference.MOD_ID, "gray_force_furnace_from_dye")); + .save(output, Reference.modLoc("gray_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.LIGHT_GRAY_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_LIGHT_GRAY) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_light_gray_dye", has(Tags.Items.DYES_LIGHT_GRAY)) - .save(output, new ResourceLocation(Reference.MOD_ID, "light_gray_force_furnace_from_dye")); + .save(output, Reference.modLoc("light_gray_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.CYAN_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_CYAN) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_cyan_dye", has(Tags.Items.DYES_CYAN)) - .save(output, new ResourceLocation(Reference.MOD_ID, "cyan_force_furnace_from_dye")); + .save(output, Reference.modLoc("cyan_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.PURPLE_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_PURPLE) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_purple_dye", has(Tags.Items.DYES_PURPLE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "purple_force_furnace_from_dye")); + .save(output, Reference.modLoc("purple_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.BLUE_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_BLUE) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_blue_dye", has(Tags.Items.DYES_BLUE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "blue_force_furnace_from_dye")); + .save(output, Reference.modLoc("blue_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.BROWN_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_BROWN) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_brown_dye", has(Tags.Items.DYES_BROWN)) - .save(output, new ResourceLocation(Reference.MOD_ID, "brown_force_furnace_from_dye")); + .save(output, Reference.modLoc("brown_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.GREEN_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_GREEN) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_green_dye", has(Tags.Items.DYES_GREEN)) - .save(output, new ResourceLocation(Reference.MOD_ID, "green_force_furnace_from_dye")); + .save(output, Reference.modLoc("green_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.RED_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_RED) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_red_dye", has(Tags.Items.DYES_RED)) - .save(output, new ResourceLocation(Reference.MOD_ID, "red_force_furnace_from_dye")); + .save(output, Reference.modLoc("red_force_furnace_from_dye")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.BLACK_FORCE_FURNACE.get()) .requires(ForceRegistry.FORCE_FURNACE.get()) .requires(Tags.Items.DYES_BLACK) .unlockedBy("has_force_furnace", has(ForceRegistry.FORCE_FURNACE.get())) .unlockedBy("has_black_dye", has(Tags.Items.DYES_BLACK)) - .save(output, new ResourceLocation(Reference.MOD_ID, "black_force_furnace_from_dye")); + .save(output, Reference.modLoc("black_force_furnace_from_dye")); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ForceRegistry.FORCE_BRICK.get(), 8) .pattern("BBB") @@ -645,7 +645,7 @@ protected void buildRecipes(RecipeOutput output) { .unlockedBy("has_force_ingot", has(ForceTags.FORCE_INGOT)) .unlockedBy("has_force_nugget", has(ForceTags.FORCE_NUGGET)) .unlockedBy("has_force_rod", has(ForceTags.FORCE_ROD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_rod_from_stick")); + .save(output, Reference.modLoc("force_rod_from_stick")); //Armor ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, ForceRegistry.FORCE_BOOTS.get()) .pattern("F F") @@ -783,7 +783,7 @@ protected void buildRecipes(RecipeOutput output) { .pattern("E") .define('E', ForceTags.ENTITY_FLASKS) .unlockedBy("has_entity_flask", has(ForceTags.ENTITY_FLASKS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_flask_from_entity_flask")); + .save(output, Reference.modLoc("force_flask_from_entity_flask")); //Fortune Cookie ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ForceRegistry.FORTUNE_COOKIE.get()) .requires(Items.COOKIE) @@ -798,21 +798,21 @@ protected void buildRecipes(RecipeOutput output) { .requires(ForceTags.FORCE_GEM) .unlockedBy("has_gold_ingot", has(Tags.Items.INGOTS_GOLD)) .unlockedBy("has_force_gem", has(ForceTags.FORCE_GEM)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_ingot_from_gold")); + .save(output, Reference.modLoc("force_ingot_from_gold")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ForceRegistry.FORCE_INGOT.get(), 2) .requires(Tags.Items.INGOTS_IRON) .requires(Tags.Items.INGOTS_IRON) .requires(ForceTags.FORCE_GEM) .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) .unlockedBy("has_force_gem", has(ForceTags.FORCE_GEM)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_ingot_from_iron")); + .save(output, Reference.modLoc("force_ingot_from_iron")); ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ForceRegistry.FORCE_INGOT.get()) .pattern("NNN") .pattern("NNN") .pattern("NNN") .define('N', ForceTags.FORCE_NUGGET) .unlockedBy("has_force_nugget", has(ForceTags.FORCE_NUGGET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "force_ingot_from_nuggets")); + .save(output, Reference.modLoc("force_ingot_from_nuggets")); //Item Card ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ForceRegistry.ITEM_CARD.get()) .pattern("PRP") @@ -839,12 +839,12 @@ protected void buildRecipes(RecipeOutput output) { .unlockedBy("has_force_ingot", has(ForceTags.FORCE_INGOT)) .unlockedBy("has_red_dye", has(Tags.Items.DYES_RED)) .unlockedBy("has_blue_dye", has(Tags.Items.DYES_BLUE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "item_card_flipped")); + .save(output, Reference.modLoc("item_card_flipped")); NoRemainderShapedBuilder.shaped(RecipeCategory.MISC, ForceRegistry.ITEM_CARD.get()) .pattern("E") .define('E', ForceRegistry.ITEM_CARD.get()) .unlockedBy("has_item_card", has(ForceRegistry.ITEM_CARD.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "item_card_empty")); + .save(output, Reference.modLoc("item_card_empty")); //Magnet Glove ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ForceRegistry.MAGNET_GLOVE.get()) .pattern(" N ") @@ -871,7 +871,7 @@ protected void buildRecipes(RecipeOutput output) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, Items.SLIME_BALL) .requires(ForceTags.CHU_JELLY) .unlockedBy("has_chu_jelly", has(ForceTags.CHU_JELLY)) - .save(output, new ResourceLocation(Reference.MOD_ID, "slime_ball_from_chu_jelly")); + .save(output, Reference.modLoc("slime_ball_from_chu_jelly")); //Snow Cookie ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ForceRegistry.SNOW_COOKIE.get()) .requires(Items.SNOWBALL) @@ -955,14 +955,14 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.ZERO, 20 ).modifierType(InfuserModifierType.DAMAGE) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_damage")); + .save(output, Reference.modLoc("infuser/infuse_damage")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceTags.FORCE_NUGGET), Ingredient.of(ForceTags.VALID_KNOCKBACK_TOOLS), UpgradeBookTier.ZERO, 20 ).modifierType(InfuserModifierType.FORCE) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_knockback")); + .save(output, Reference.modLoc("infuser/infuse_knockback")); //1 InfuseRecipeBuilder.infuse( @@ -971,21 +971,21 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.ONE, 60 ).modifierType(InfuserModifierType.HEAT) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_heat")); + .save(output, Reference.modLoc("infuser/infuse_heat")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.FORCE_LOG.get()), Ingredient.of(ForceTags.VALID_LUMBER_TOOLS), UpgradeBookTier.ONE, 60 ).modifierType(InfuserModifierType.LUMBERJACK) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_lumberjack")); + .save(output, Reference.modLoc("infuser/infuse_lumberjack")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.SUGAR), Ingredient.of(ForceTags.VALID_SPEED_TOOLS), UpgradeBookTier.ONE, 20 ).modifierType(InfuserModifierType.SPEED) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_speed")); + .save(output, Reference.modLoc("infuser/infuse_speed")); //2 InfuseRecipeBuilder.infuse( @@ -994,63 +994,63 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.TWO, 20 ).output(ForceRegistry.FREEZING_CORE.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_freezing")); + .save(output, Reference.modLoc("infuser/convert_freezing")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.FLINT), Ingredient.of(ForceRegistry.UPGRADE_CORE.get()), UpgradeBookTier.TWO, 20 ).output(ForceRegistry.GRINDING_CORE.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_grinding")); + .save(output, Reference.modLoc("infuser/convert_grinding")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.SUGAR), Ingredient.of(ForceRegistry.UPGRADE_CORE.get()), UpgradeBookTier.TWO, 20 ).output(ForceRegistry.SPEED_CORE.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_speed")); + .save(output, Reference.modLoc("infuser/convert_speed")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.EXPERIENCE_BOTTLE), Ingredient.of(ForceRegistry.UPGRADE_CORE.get()), UpgradeBookTier.TWO, 20 ).output(ForceRegistry.EXPERIENCE_CORE.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_xp")); + .save(output, Reference.modLoc("infuser/convert_xp")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.EXPERIENCE_BOTTLE), Ingredient.of(Items.BOOK), UpgradeBookTier.TWO, 20 ).output(ForceRegistry.EXPERIENCE_TOME.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_xp_book")); + .save(output, Reference.modLoc("infuser/convert_xp_book")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceTags.FORTUNE), Ingredient.of(ForceTags.VALID_LUCKY_TOOLS), UpgradeBookTier.TWO, 20 ).modifierType(InfuserModifierType.FORTUNE) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_fortune")); + .save(output, Reference.modLoc("infuser/infuse_fortune")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.SNOW_COOKIE.get()), Ingredient.of(ForceTags.VALID_FREEZING_TOOLS), UpgradeBookTier.TWO, 20 ).modifierType(InfuserModifierType.FREEZING) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_freezing")); + .save(output, Reference.modLoc("infuser/infuse_freezing")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.BLUE_DYE), Ingredient.of(ForceRegistry.FORCE_SHEARS.get()), UpgradeBookTier.TWO, 20 ).modifierType(InfuserModifierType.RAINBOW) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_rainbow")); + .save(output, Reference.modLoc("infuser/infuse_rainbow")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.FORCE_PACK_UPGRADE.get()), Ingredient.of(ForceRegistry.FORCE_PACK.get()), UpgradeBookTier.TWO, 20 ).modifierType(InfuserModifierType.PACK1) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_pack_upgrade1")); + .save(output, Reference.modLoc("infuser/infuse_pack_upgrade1")); //3 InfuseRecipeBuilder.infuse( @@ -1059,14 +1059,14 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.THREE, 20 ).modifierType(InfuserModifierType.BLEEDING) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_bleeding")); + .save(output, Reference.modLoc("infuser/infuse_bleeding")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.COBWEB), Ingredient.of(ForceTags.VALID_SILKY_TOOLS), UpgradeBookTier.THREE, 20 ).modifierType(InfuserModifierType.SILK) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_silk")); + .save(output, Reference.modLoc("infuser/infuse_silk")); final ItemStack invisibility = PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.INVISIBILITY); InfuseRecipeBuilder.infuse( NBTIngredient.of(false, invisibility), @@ -1074,14 +1074,14 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.THREE, 20 ).modifierType(InfuserModifierType.CAMO) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_camo")); + .save(output, Reference.modLoc("infuser/infuse_camo")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.FORCE_PACK_UPGRADE.get()), Ingredient.of(ForceRegistry.FORCE_PACK.get()), UpgradeBookTier.THREE, 20 ).modifierType(InfuserModifierType.PACK2) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_pack_upgrade2")); + .save(output, Reference.modLoc("infuser/infuse_pack_upgrade2")); //4 InfuseRecipeBuilder.infuse( @@ -1090,21 +1090,21 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.FOUR, 60 ).output(ForceRegistry.HEAT_CORE.get()) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/convert_heat")); + .save(output, Reference.modLoc("infuser/convert_heat")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.SPIDER_EYE), Ingredient.of(ForceTags.VALID_BANE_TOOLS), UpgradeBookTier.FOUR, 20 ).modifierType(InfuserModifierType.BANE) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_bane")); + .save(output, Reference.modLoc("infuser/infuse_bane")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.FORCE_PACK_UPGRADE.get()), Ingredient.of(ForceRegistry.FORCE_PACK.get()), UpgradeBookTier.FOUR, 20 ).modifierType(InfuserModifierType.PACK3) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_pack_upgrade3")); + .save(output, Reference.modLoc("infuser/infuse_pack_upgrade3")); //5 InfuseRecipeBuilder.infuse( @@ -1113,21 +1113,21 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.FIVE, 20 ).modifierType(InfuserModifierType.PACK4) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_pack_upgrade4")); + .save(output, Reference.modLoc("infuser/infuse_pack_upgrade4")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.GHAST_TEAR), Ingredient.of(ForceTags.VALID_HEALING_TOOLS), UpgradeBookTier.FIVE, 20 ).modifierType(InfuserModifierType.HEALING) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_healing")); + .save(output, Reference.modLoc("infuser/infuse_healing")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.FEATHER), Ingredient.of(ForceTags.VALID_WING_TOOLS), UpgradeBookTier.FIVE, 20 ).modifierType(InfuserModifierType.WING) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_wing")); + .save(output, Reference.modLoc("infuser/infuse_wing")); //6 InfuseRecipeBuilder.infuse( @@ -1136,21 +1136,21 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.SIX, 60 ).output(ForceRegistry.TIME_TORCH.get()) - .save(output.withConditions(new TorchEnabledCondition()), new ResourceLocation(Reference.MOD_ID, "infuser/convert_time_torch")); + .save(output.withConditions(new TorchEnabledCondition()), Reference.modLoc("infuser/convert_time_torch")); InfuseRecipeBuilder.infuse( Ingredient.of(Items.OBSIDIAN), Ingredient.of(ForceTags.VALID_STURDY_TOOLS), UpgradeBookTier.SIX, 20 ).modifierType(InfuserModifierType.STURDY) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_sturdy")); + .save(output, Reference.modLoc("infuser/infuse_sturdy")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceTags.ENDER), Ingredient.of(ForceTags.VALID_ENDER_TOOLS), UpgradeBookTier.SIX, 20 ).modifierType(InfuserModifierType.ENDER) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_ender")); + .save(output, Reference.modLoc("infuser/infuse_ender")); //7 InfuseRecipeBuilder.infuse( Ingredient.of(Items.GLOWSTONE), @@ -1158,307 +1158,307 @@ private void addInfuserRecipes(RecipeOutput output) { UpgradeBookTier.SEVEN, 20 ).modifierType(InfuserModifierType.LIGHT) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_light")); + .save(output, Reference.modLoc("infuser/infuse_light")); InfuseRecipeBuilder.infuse( Ingredient.of(ForceRegistry.TREASURE_CORE.get()), Ingredient.of(ForceTags.VALID_TREASURE_TOOLS), UpgradeBookTier.SEVEN, 20 ).modifierType(InfuserModifierType.TREASURE) - .save(output, new ResourceLocation(Reference.MOD_ID, "infuser/infuse_treasure")); + .save(output, Reference.modLoc("infuser/infuse_treasure")); } private void addMultiOutputRecipes(RecipeOutput output) { MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.RODS_BLAZE), 0.1F, 200) .setResult(Items.BONE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/bone_from_blaze_rod")); + .save(output, Reference.modLoc("freezing/bone_from_blaze_rod")); MultipleOutputRecipeBuilder.freezing(Items.BLAZE_POWDER, 0.1F, 200) .setResult(Items.BONE_MEAL, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/bone_meal_from_blaze_powder")); + .save(output, Reference.modLoc("freezing/bone_meal_from_blaze_powder")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.INGOTS_NETHER_BRICK), 0.1F, 200) .setResult(Items.BRICK, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/brick_from_nether_brick")); + .save(output, Reference.modLoc("freezing/brick_from_nether_brick")); MultipleOutputRecipeBuilder.freezing(Items.ROTTEN_FLESH, 0.1F, 200) .setResult(Items.LEATHER, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/leather_from_rotten_flesh")); + .save(output, Reference.modLoc("freezing/leather_from_rotten_flesh")); final ItemStack waterBottle = PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER); MultipleOutputRecipeBuilder.freezing(NBTIngredient.of(false, waterBottle), 0.1F, 200) .setResult(Items.ICE, 1) .setResult(Items.GLASS_BOTTLE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/ice_from_water_bottle")); + .save(output, Reference.modLoc("freezing/ice_from_water_bottle")); MultipleOutputRecipeBuilder.freezing(Items.WATER_BUCKET, 0.1F, 200) .setResult(Items.PACKED_ICE, 1) .setResult(Items.BUCKET, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/ice_from_water_bucket")); + .save(output, Reference.modLoc("freezing/ice_from_water_bucket")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.NETHERRACK), 0.1F, 200) .setResult(Items.COBBLESTONE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/cobblestone_from_netherrack")); + .save(output, Reference.modLoc("freezing/cobblestone_from_netherrack")); MultipleOutputRecipeBuilder.freezing(Items.LAVA_BUCKET, 0.1F, 200) .setResult(Items.OBSIDIAN, 1) .setResult(Items.BUCKET, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/obsidian_from_lava_bucket")); + .save(output, Reference.modLoc("freezing/obsidian_from_lava_bucket")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.SAND_COLORLESS), 0.1F, 200) .setResult(Items.SANDSTONE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/sandstone_from_sand")); + .save(output, Reference.modLoc("freezing/sandstone_from_sand")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.SAND_RED), 0.1F, 200) .setResult(Items.RED_SANDSTONE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/sandstone_from_red_sand")); + .save(output, Reference.modLoc("freezing/sandstone_from_red_sand")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.SLIMEBALLS), 0.1F, 200) .setResult(Items.SNOWBALL, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/snowball_from_slimeball")); + .save(output, Reference.modLoc("freezing/snowball_from_slimeball")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.COBBLESTONE_NORMAL), 0.1F, 200) .setResult(Items.STONE, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/stone_from_cobblestone")); + .save(output, Reference.modLoc("freezing/stone_from_cobblestone")); MultipleOutputRecipeBuilder.freezing(Ingredient.of(Tags.Items.STONE), 0.1F, 200) .setResult(Items.STONE_BRICKS, 1) .unlockedBy("has_core", has(ForceRegistry.FREEZING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "freezing/stone_bricks_from_stone")); + .save(output, Reference.modLoc("freezing/stone_bricks_from_stone")); //Oak MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.BOOKSHELVES), 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 6) .setResult(Items.PAPER, 9) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_bookshelf")); + .save(output, Reference.modLoc("grinding/oak_planks_from_bookshelf")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.CHESTS_WOODEN), 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 8) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_chest")); + .save(output, Reference.modLoc("grinding/oak_planks_from_chest")); MultipleOutputRecipeBuilder.grinding(Items.OAK_DOOR, 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_door")); + .save(output, Reference.modLoc("grinding/oak_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.OAK_LOGS), 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_log")); + .save(output, Reference.modLoc("grinding/oak_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.OAK_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/oak_planks_from_pressure_plate")); MultipleOutputRecipeBuilder.grinding(Items.CRAFTING_TABLE, 1.0F, 0.1F, 400) .setResult(Items.OAK_PLANKS, 4) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/oak_planks_from_crafting_table")); + .save(output, Reference.modLoc("grinding/oak_planks_from_crafting_table")); //Acacia MultipleOutputRecipeBuilder.grinding(Items.ACACIA_DOOR, 1.0F, 0.1F, 400) .setResult(Items.ACACIA_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/acacia_planks_from_door")); + .save(output, Reference.modLoc("grinding/acacia_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.ACACIA_LOGS), 1.0F, 0.1F, 400) .setResult(Items.ACACIA_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/acacia_planks_from_log")); + .save(output, Reference.modLoc("grinding/acacia_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.ACACIA_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.ACACIA_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/acacia_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/acacia_planks_from_pressure_plate")); //Birch MultipleOutputRecipeBuilder.grinding(Items.BIRCH_DOOR, 1.0F, 0.1F, 400) .setResult(Items.BIRCH_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/birch_planks_from_door")); + .save(output, Reference.modLoc("grinding/birch_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.BIRCH_LOGS), 1.0F, 0.1F, 400) .setResult(Items.BIRCH_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/birch_planks_from_log")); + .save(output, Reference.modLoc("grinding/birch_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.BIRCH_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.BIRCH_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/birch_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/birch_planks_from_pressure_plate")); //Spruce MultipleOutputRecipeBuilder.grinding(Items.SPRUCE_DOOR, 1.0F, 0.1F, 400) .setResult(Items.SPRUCE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/spruce_planks_from_door")); + .save(output, Reference.modLoc("grinding/spruce_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.SPRUCE_LOGS), 1.0F, 0.1F, 400) .setResult(Items.SPRUCE_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/spruce_planks_from_log")); + .save(output, Reference.modLoc("grinding/spruce_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.SPRUCE_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.SPRUCE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/spruce_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/spruce_planks_from_pressure_plate")); //Jungle MultipleOutputRecipeBuilder.grinding(Items.JUNGLE_DOOR, 1.0F, 0.1F, 400) .setResult(Items.JUNGLE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/jungle_planks_from_door")); + .save(output, Reference.modLoc("grinding/jungle_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.JUNGLE_LOGS), 1.0F, 0.1F, 400) .setResult(Items.JUNGLE_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/jungle_planks_from_log")); + .save(output, Reference.modLoc("grinding/jungle_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.JUNGLE_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.JUNGLE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/jungle_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/jungle_planks_from_pressure_plate")); //Cherry MultipleOutputRecipeBuilder.grinding(Items.CHERRY_DOOR, 1.0F, 0.1F, 400) .setResult(Items.CHERRY_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/cherry_planks_from_door")); + .save(output, Reference.modLoc("grinding/cherry_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.CHERRY_LOGS), 1.0F, 0.1F, 400) .setResult(Items.CHERRY_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/cherry_planks_from_log")); + .save(output, Reference.modLoc("grinding/cherry_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.CHERRY_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.CHERRY_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/cherry_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/cherry_planks_from_pressure_plate")); //Mangrove MultipleOutputRecipeBuilder.grinding(Items.MANGROVE_DOOR, 1.0F, 0.1F, 400) .setResult(Items.MANGROVE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/mangrove_planks_from_door")); + .save(output, Reference.modLoc("grinding/mangrove_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.MANGROVE_LOGS), 1.0F, 0.1F, 400) .setResult(Items.MANGROVE_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/mangrove_planks_from_log")); + .save(output, Reference.modLoc("grinding/mangrove_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.MANGROVE_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.MANGROVE_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/mangrove_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/mangrove_planks_from_pressure_plate")); //Dark_Oak MultipleOutputRecipeBuilder.grinding(Items.DARK_OAK_DOOR, 1.0F, 0.1F, 400) .setResult(Items.DARK_OAK_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/dark_oak_planks_from_door")); + .save(output, Reference.modLoc("grinding/dark_oak_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.DARK_OAK_LOGS), 1.0F, 0.1F, 400) .setResult(Items.DARK_OAK_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/dark_oak_planks_from_log")); + .save(output, Reference.modLoc("grinding/dark_oak_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.DARK_OAK_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.DARK_OAK_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/dark_oak_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/dark_oak_planks_from_pressure_plate")); //Crimson MultipleOutputRecipeBuilder.grinding(Items.CRIMSON_DOOR, 1.0F, 0.1F, 400) .setResult(Items.CRIMSON_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/crimson_planks_from_door")); + .save(output, Reference.modLoc("grinding/crimson_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.CRIMSON_STEMS), 1.0F, 0.1F, 400) .setResult(Items.CRIMSON_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/crimson_planks_from_log")); + .save(output, Reference.modLoc("grinding/crimson_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.CRIMSON_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.CRIMSON_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/crimson_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/crimson_planks_from_pressure_plate")); //Warped MultipleOutputRecipeBuilder.grinding(Items.WARPED_DOOR, 1.0F, 0.1F, 400) .setResult(Items.WARPED_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/warped_planks_from_door")); + .save(output, Reference.modLoc("grinding/warped_planks_from_door")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.WARPED_STEMS), 1.0F, 0.1F, 400) .setResult(Items.WARPED_PLANKS, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/warped_planks_from_log")); + .save(output, Reference.modLoc("grinding/warped_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Items.WARPED_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.WARPED_PLANKS, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/warped_planks_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/warped_planks_from_pressure_plate")); //Force MultipleOutputRecipeBuilder.grinding(ForceRegistry.FORCE_LOG.get(), 1.0F, 0.1F, 400) .setResult(ForceRegistry.FORCE_PLANKS.get(), 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/force_planks_from_log")); + .save(output, Reference.modLoc("grinding/force_planks_from_log")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ForceTags.FORCE_FURNACES), 1.0F, 0.1F, 400) .setResult(ForceRegistry.FORCE_INGOT.get(), 3) .setResult(Items.IRON_INGOT, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/ingots_from_force_furnace")); + .save(output, Reference.modLoc("grinding/ingots_from_force_furnace")); //Flint MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.GRAVEL), 1.0F, 0.1F, 400) .setResult(Items.FLINT, 1) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/flint_from_gravel")); + .save(output, Reference.modLoc("grinding/flint_from_gravel")); //Iron MultipleOutputRecipeBuilder.grinding(Items.IRON_DOOR, 1.0F, 0.1F, 400) .setResult(Items.IRON_INGOT, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/iron_ingot_from_door")); + .save(output, Reference.modLoc("grinding/iron_ingot_from_door")); //Paper MultipleOutputRecipeBuilder.grinding(Items.BOOK, 1.0F, 0.1F, 400) .setResult(Items.PAPER, 3) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/paper_from_book")); + .save(output, Reference.modLoc("grinding/paper_from_book")); //String MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.WOOL), 1.0F, 0.1F, 400) .setResult(ForceRegistry.FORCE_PLANKS.get(), 4) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/string_from_wool")); + .save(output, Reference.modLoc("grinding/string_from_wool")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(ItemTags.WOOL_CARPETS), 1.0F, 0.1F, 400) .setResult(ForceRegistry.FORCE_PLANKS.get(), 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/string_from_wool_carpet")); + .save(output, Reference.modLoc("grinding/string_from_wool_carpet")); //Pressure plates MultipleOutputRecipeBuilder.grinding(Items.STONE_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.STONE, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/stone_from_pressure_plate")); + .save(output, Reference.modLoc("grinding/stone_from_pressure_plate")); MultipleOutputRecipeBuilder.grinding(Items.LIGHT_WEIGHTED_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.GOLD_INGOT, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/gold_ingot_from_light_weighted_pressure_plate")); + .save(output, Reference.modLoc("grinding/gold_ingot_from_light_weighted_pressure_plate")); MultipleOutputRecipeBuilder.grinding(Items.HEAVY_WEIGHTED_PRESSURE_PLATE, 1.0F, 0.1F, 400) .setResult(Items.IRON_INGOT, 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/iron_ingot_from_heavy_weighted_pressure_plate")); + .save(output, Reference.modLoc("grinding/iron_ingot_from_heavy_weighted_pressure_plate")); //Sand MultipleOutputRecipeBuilder.grinding(Items.SANDSTONE, 1.0F, 0.1F, 400) .setResult(Items.SAND, 1) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/sand_from_sandstone")); + .save(output, Reference.modLoc("grinding/sand_from_sandstone")); MultipleOutputRecipeBuilder.grinding(Items.RED_SANDSTONE, 1.0F, 0.1F, 400) .setResult(Items.RED_SAND, 1) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/sand_from_red_sandstone")); + .save(output, Reference.modLoc("grinding/sand_from_red_sandstone")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.COBBLESTONE_NORMAL), 1.0F, 0.1F, 400) .setResult(Items.COBBLESTONE, 1) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/sand_from_cobblestone")); + .save(output, Reference.modLoc("grinding/sand_from_cobblestone")); //Cobblestone MultipleOutputRecipeBuilder.grinding(Items.FURNACE, 1.0F, 0.1F, 400) .setResult(Items.COBBLESTONE, 8) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/cobblestone_from_furnace")); + .save(output, Reference.modLoc("grinding/cobblestone_from_furnace")); //Bacon MultipleOutputRecipeBuilder.grinding(Items.PORKCHOP, 1.0F, 0.1F, 400) .setResult(ForceRegistry.RAW_BACON.get(), 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/raw_bacon_from_porkchop")); + .save(output, Reference.modLoc("grinding/raw_bacon_from_porkchop")); MultipleOutputRecipeBuilder.grinding(Items.COOKED_PORKCHOP, 1.0F, 0.1F, 400) .setResult(ForceRegistry.COOKED_BACON.get(), 2) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/cooked_bacon_from_cooked_porkchop")); + .save(output, Reference.modLoc("grinding/cooked_bacon_from_cooked_porkchop")); //Powder MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.RODS_BLAZE), 1.0F, 0.1F, 400) .setResult(Items.BLAZE_POWDER, 6) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/blaze_powder_from_blaze_rod")); + .save(output, Reference.modLoc("grinding/blaze_powder_from_blaze_rod")); MultipleOutputRecipeBuilder.grinding(Ingredient.of(Tags.Items.BONES), 1.0F, 0.1F, 400) .setResult(Items.BONE_MEAL, 5) .unlockedBy("has_core", has(ForceRegistry.GRINDING_CORE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "grinding/bone_meal_from_bone")); + .save(output, Reference.modLoc("grinding/bone_meal_from_bone")); } private void addTransmutationRecipes(RecipeOutput output) { @@ -1466,307 +1466,307 @@ private void addTransmutationRecipes(RecipeOutput output) { TransmutationRecipeBuilder.transmutation(Items.BROWN_MUSHROOM) .requires(Items.RED_MUSHROOM) .unlockedBy("has_red_mushroom", has(Items.RED_MUSHROOM)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/red_to_brown_mushroom")); + .save(output, Reference.modLoc("transmutation/red_to_brown_mushroom")); TransmutationRecipeBuilder.transmutation(Items.RED_MUSHROOM) .requires(Items.BROWN_MUSHROOM) .unlockedBy("has_brown_mushroom", has(Items.BROWN_MUSHROOM)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/brown_to_red_mushroom")); + .save(output, Reference.modLoc("transmutation/brown_to_red_mushroom")); //Raw food TransmutationRecipeBuilder.transmutation(Items.BEEF) .requires(Items.CHICKEN) .unlockedBy("has_chicken", has(Items.CHICKEN)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/chicken_to_beef")); + .save(output, Reference.modLoc("transmutation/chicken_to_beef")); TransmutationRecipeBuilder.transmutation(Items.CHICKEN) .requires(Items.MUTTON) .unlockedBy("has_mutton", has(Items.MUTTON)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/mutton_to_chicken")); + .save(output, Reference.modLoc("transmutation/mutton_to_chicken")); TransmutationRecipeBuilder.transmutation(Items.MUTTON) .requires(Items.PORKCHOP) .unlockedBy("has_porkchop", has(Items.PORKCHOP)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/porkchop_to_mutton")); + .save(output, Reference.modLoc("transmutation/porkchop_to_mutton")); TransmutationRecipeBuilder.transmutation(Items.PORKCHOP) .requires(Items.BEEF) .unlockedBy("has_beef", has(Items.BEEF)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/beef_to_porkchop")); + .save(output, Reference.modLoc("transmutation/beef_to_porkchop")); //Cooked food TransmutationRecipeBuilder.transmutation(Items.COOKED_BEEF) .requires(Items.COOKED_CHICKEN) .unlockedBy("has_chicken", has(Items.COOKED_CHICKEN)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/cooked_chicken_to_beef")); + .save(output, Reference.modLoc("transmutation/cooked_chicken_to_beef")); TransmutationRecipeBuilder.transmutation(Items.COOKED_CHICKEN) .requires(Items.COOKED_MUTTON) .unlockedBy("has_mutton", has(Items.COOKED_MUTTON)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/cooked_mutton_to_chicken")); + .save(output, Reference.modLoc("transmutation/cooked_mutton_to_chicken")); TransmutationRecipeBuilder.transmutation(Items.COOKED_MUTTON) .requires(Items.COOKED_PORKCHOP) .unlockedBy("has_porkchop", has(Items.COOKED_PORKCHOP)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/cooked_porkchop_to_mutton")); + .save(output, Reference.modLoc("transmutation/cooked_porkchop_to_mutton")); TransmutationRecipeBuilder.transmutation(Items.COOKED_PORKCHOP) .requires(Items.COOKED_BEEF) .unlockedBy("has_beef", has(Items.COOKED_BEEF)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/cooked_beef_to_porkchop")); + .save(output, Reference.modLoc("transmutation/cooked_beef_to_porkchop")); //Flowers TransmutationRecipeBuilder.transmutation(Items.DANDELION) .requires(Items.POPPY) .unlockedBy("has_poppy", has(Items.POPPY)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/poppy_to_dandelion")); + .save(output, Reference.modLoc("transmutation/poppy_to_dandelion")); TransmutationRecipeBuilder.transmutation(Items.POPPY) .requires(Items.DANDELION) .unlockedBy("has_dandelion", has(Items.DANDELION)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/dandelion_to_poppy")); + .save(output, Reference.modLoc("transmutation/dandelion_to_poppy")); //Diamond TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 2) .requires(Items.DIAMOND_AXE) .unlockedBy("has_tool", has(Items.DIAMOND_AXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_axe")); + .save(output, Reference.modLoc("transmutation/diamond_from_axe")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 2) .requires(Items.DIAMOND_HOE) .unlockedBy("has_tool", has(Items.DIAMOND_HOE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_hoe")); + .save(output, Reference.modLoc("transmutation/diamond_from_hoe")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 1) .requires(Items.DIAMOND_SHOVEL) .unlockedBy("has_tool", has(Items.DIAMOND_SHOVEL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_shovel")); + .save(output, Reference.modLoc("transmutation/diamond_from_shovel")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 2) .requires(Items.DIAMOND_SWORD) .unlockedBy("has_tool", has(Items.DIAMOND_SWORD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_sword")); + .save(output, Reference.modLoc("transmutation/diamond_from_sword")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 2) .requires(Items.DIAMOND_PICKAXE) .unlockedBy("has_tool", has(Items.DIAMOND_PICKAXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_pickaxe")); + .save(output, Reference.modLoc("transmutation/diamond_from_pickaxe")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 4) .requires(Items.DIAMOND_BOOTS) .unlockedBy("has_armor", has(Items.DIAMOND_BOOTS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_boots")); + .save(output, Reference.modLoc("transmutation/diamond_from_boots")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 7) .requires(Items.DIAMOND_LEGGINGS) .unlockedBy("has_armor", has(Items.DIAMOND_LEGGINGS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_leggings")); + .save(output, Reference.modLoc("transmutation/diamond_from_leggings")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 8) .requires(Items.DIAMOND_CHESTPLATE) .unlockedBy("has_armor", has(Items.DIAMOND_CHESTPLATE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_chestplate")); + .save(output, Reference.modLoc("transmutation/diamond_from_chestplate")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 5) .requires(Items.DIAMOND_HELMET) .unlockedBy("has_armor", has(Items.DIAMOND_HELMET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_helmet")); + .save(output, Reference.modLoc("transmutation/diamond_from_helmet")); TransmutationRecipeBuilder.transmutation(Items.DIAMOND, 4) .requires(Items.DIAMOND_HORSE_ARMOR) .unlockedBy("has_horse_armor", has(Items.DIAMOND_HORSE_ARMOR)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/diamond_from_horse_armor")); + .save(output, Reference.modLoc("transmutation/diamond_from_horse_armor")); //Gold TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 2) .requires(Items.GOLDEN_AXE) .unlockedBy("has_tool", has(Items.GOLDEN_AXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_axe")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_axe")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 2) .requires(Items.GOLDEN_HOE) .unlockedBy("has_tool", has(Items.GOLDEN_HOE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_hoe")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_hoe")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 1) .requires(Items.GOLDEN_SHOVEL) .unlockedBy("has_tool", has(Items.GOLDEN_SHOVEL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_shovel")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_shovel")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 2) .requires(Items.GOLDEN_SWORD) .unlockedBy("has_tool", has(Items.GOLDEN_SWORD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_sword")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_sword")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 2) .requires(Items.GOLDEN_PICKAXE) .unlockedBy("has_tool", has(Items.GOLDEN_PICKAXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_pickaxe")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_pickaxe")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 4) .requires(Items.GOLDEN_BOOTS) .unlockedBy("has_armor", has(Items.GOLDEN_BOOTS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_boots")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_boots")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 7) .requires(Items.GOLDEN_LEGGINGS) .unlockedBy("has_armor", has(Items.GOLDEN_LEGGINGS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_leggings")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_leggings")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 8) .requires(Items.GOLDEN_CHESTPLATE) .unlockedBy("has_armor", has(Items.GOLDEN_CHESTPLATE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_chestplate")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_chestplate")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 5) .requires(Items.GOLDEN_HELMET) .unlockedBy("has_armor", has(Items.GOLDEN_HELMET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_helmet")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_helmet")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 4) .requires(Items.GOLDEN_HORSE_ARMOR) .unlockedBy("has_horse_armor", has(Items.GOLDEN_HORSE_ARMOR)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_horse_armor")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_horse_armor")); TransmutationRecipeBuilder.transmutation(Items.GOLD_INGOT, 4) .requires(Items.CLOCK) .unlockedBy("has_clock", has(Items.CLOCK)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/gold_ingot_from_clock")); + .save(output, Reference.modLoc("transmutation/gold_ingot_from_clock")); //Iron TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.IRON_AXE) .unlockedBy("has_tool", has(Items.IRON_AXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_axe")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_axe")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.IRON_HOE) .unlockedBy("has_tool", has(Items.IRON_HOE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_hoe")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_hoe")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 1) .requires(Items.IRON_SHOVEL) .unlockedBy("has_tool", has(Items.IRON_SHOVEL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_shovel")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_shovel")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.IRON_SWORD) .unlockedBy("has_tool", has(Items.IRON_SWORD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_sword")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_sword")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.IRON_PICKAXE) .unlockedBy("has_tool", has(Items.IRON_PICKAXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_pickaxe")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_pickaxe")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 4) .requires(Items.IRON_BOOTS) .unlockedBy("has_armor", has(Items.IRON_BOOTS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_boots")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_boots")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 7) .requires(Items.IRON_LEGGINGS) .unlockedBy("has_armor", has(Items.IRON_LEGGINGS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_leggings")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_leggings")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 8) .requires(Items.IRON_CHESTPLATE) .unlockedBy("has_armor", has(Items.IRON_CHESTPLATE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_chestplate")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_chestplate")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 5) .requires(Items.IRON_HELMET) .unlockedBy("has_armor", has(Items.IRON_HELMET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_helmet")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_helmet")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.CHAINMAIL_BOOTS) .unlockedBy("has_armor", has(Items.CHAINMAIL_BOOTS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_chainmail_boots")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_chainmail_boots")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 4) .requires(Items.CHAINMAIL_LEGGINGS) .unlockedBy("has_armor", has(Items.CHAINMAIL_LEGGINGS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_chainmail_leggings")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_chainmail_leggings")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 6) .requires(Items.CHAINMAIL_CHESTPLATE) .unlockedBy("has_armor", has(Items.CHAINMAIL_CHESTPLATE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_chainmail_chestplate")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_chainmail_chestplate")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 3) .requires(Items.CHAINMAIL_HELMET) .unlockedBy("has_armor", has(Items.CHAINMAIL_HELMET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_chainmail_helmet")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_chainmail_helmet")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 4) .requires(Items.IRON_HORSE_ARMOR) .unlockedBy("has_horse_armor", has(Items.IRON_HORSE_ARMOR)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_horse_armor")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_horse_armor")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 4) .requires(Items.COMPASS) .unlockedBy("has_compass", has(Items.COMPASS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/irom_ingot_from_compass")); + .save(output, Reference.modLoc("transmutation/irom_ingot_from_compass")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 7) .requires(Items.CAULDRON) .unlockedBy("has_cauldron", has(Items.CAULDRON)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/irom_ingot_from_cauldron")); + .save(output, Reference.modLoc("transmutation/irom_ingot_from_cauldron")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 3) .requires(Items.BUCKET) .unlockedBy("has_bucket", has(Items.BUCKET)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_bucket")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_bucket")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 2) .requires(Items.IRON_DOOR) .unlockedBy("has_door", has(Items.IRON_DOOR)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_door")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_door")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 5) .requires(Items.MINECART) .unlockedBy("has_minecart", has(Items.MINECART)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_minecart")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_minecart")); TransmutationRecipeBuilder.transmutation(Items.IRON_INGOT, 31) .requires(Items.ANVIL) .unlockedBy("has_anvil", has(Items.ANVIL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/iron_ingot_from_anvil")); + .save(output, Reference.modLoc("transmutation/iron_ingot_from_anvil")); //Force TransmutationRecipeBuilder.transmutation(ForceRegistry.FORCE_BRICK) .requires(Items.STONE_BRICKS) .unlockedBy("has_stone_bricks", has(Items.STONE_BRICKS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/force_brick_from_stone_bricks")); + .save(output, Reference.modLoc("transmutation/force_brick_from_stone_bricks")); TransmutationRecipeBuilder.transmutation(ForceRegistry.FORCE_SAPLING) .requires(ItemTags.SAPLINGS) .unlockedBy("has_sapling", has(ItemTags.SAPLINGS)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/force_sapling_from_sapling")); + .save(output, Reference.modLoc("transmutation/force_sapling_from_sapling")); //Misc TransmutationRecipeBuilder.transmutation(Items.EXPERIENCE_BOTTLE) .requires(Items.ENCHANTED_BOOK) .unlockedBy("has_enchanted_book", has(Items.ENCHANTED_BOOK)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/experience_bottle_from_enchanted_book")); + .save(output, Reference.modLoc("transmutation/experience_bottle_from_enchanted_book")); TransmutationRecipeBuilder.transmutation(ForceRegistry.FORTUNE.get()) .requires(ForceRegistry.FORTUNE_COOKIE.get()) .unlockedBy("has_fortune_cookie", has(ForceRegistry.FORTUNE_COOKIE.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/fortune_from_fortune_cookie")); + .save(output, Reference.modLoc("transmutation/fortune_from_fortune_cookie")); TransmutationRecipeBuilder.transmutation(ForceRegistry.INFUSER.get()) .requires(Items.ENCHANTING_TABLE) .unlockedBy("has_enchanting_table", has(Items.ENCHANTING_TABLE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/infuser_from_enchanting_table")); + .save(output, Reference.modLoc("transmutation/infuser_from_enchanting_table")); TransmutationRecipeBuilder.transmutation(Items.STRING) .requires(Items.BOW) .unlockedBy("has_bow", has(Items.BOW)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/string_from_bow")); + .save(output, Reference.modLoc("transmutation/string_from_bow")); TransmutationRecipeBuilder.transmutation(Items.TRIPWIRE_HOOK) .requires(Items.CROSSBOW) .unlockedBy("has_bow", has(Items.CROSSBOW)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/tripwire_hook_from_crossbow")); + .save(output, Reference.modLoc("transmutation/tripwire_hook_from_crossbow")); //Stick TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.STONE_AXE) .unlockedBy("has_tool", has(Items.STONE_AXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_stone_axe")); + .save(output, Reference.modLoc("transmutation/stick_from_stone_axe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.STONE_HOE) .unlockedBy("has_tool", has(Items.STONE_HOE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_stone_hoe")); + .save(output, Reference.modLoc("transmutation/stick_from_stone_hoe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.STONE_PICKAXE) .unlockedBy("has_tool", has(Items.STONE_PICKAXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_stone_pickaxe")); + .save(output, Reference.modLoc("transmutation/stick_from_stone_pickaxe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.STONE_SHOVEL) .unlockedBy("has_tool", has(Items.STONE_SHOVEL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_stone_shovel")); + .save(output, Reference.modLoc("transmutation/stick_from_stone_shovel")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.STONE_SWORD) .unlockedBy("has_tool", has(Items.STONE_SWORD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_stone_sword")); + .save(output, Reference.modLoc("transmutation/stick_from_stone_sword")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.WOODEN_AXE) .unlockedBy("has_tool", has(Items.WOODEN_AXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_wooden_axe")); + .save(output, Reference.modLoc("transmutation/stick_from_wooden_axe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.WOODEN_HOE) .unlockedBy("has_tool", has(Items.WOODEN_HOE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_wooden_hoe")); + .save(output, Reference.modLoc("transmutation/stick_from_wooden_hoe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.WOODEN_PICKAXE) .unlockedBy("has_tool", has(Items.WOODEN_PICKAXE)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_wooden_pickaxe")); + .save(output, Reference.modLoc("transmutation/stick_from_wooden_pickaxe")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.WOODEN_SHOVEL) .unlockedBy("has_tool", has(Items.WOODEN_SHOVEL)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_wooden_shovel")); + .save(output, Reference.modLoc("transmutation/stick_from_wooden_shovel")); TransmutationRecipeBuilder.transmutation(Items.STICK) .requires(Items.WOODEN_SWORD) .unlockedBy("has_tool", has(Items.WOODEN_SWORD)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/stick_from_wooden_sword")); + .save(output, Reference.modLoc("transmutation/stick_from_wooden_sword")); //Cores TransmutationRecipeBuilder.transmutation(ForceRegistry.UPGRADE_TOME.get()) .requires(Items.BOOK) .unlockedBy("has_book", has(Items.BOOK)) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/upgrade_tome")); + .save(output, Reference.modLoc("transmutation/upgrade_tome")); ItemStack experienceTomeStack = new ItemStack(ForceRegistry.EXPERIENCE_TOME.get()); CompoundTag tag = experienceTomeStack.getOrCreateTag(); @@ -1775,7 +1775,7 @@ private void addTransmutationRecipes(RecipeOutput output) { TransmutationRecipeBuilder.transmutation(ForceRegistry.UPGRADE_CORE.get()) .requires(NBTIngredient.of(false, experienceTomeStack)) .unlockedBy("has_experience_tome", has(ForceRegistry.EXPERIENCE_TOME.get())) - .save(output, new ResourceLocation(Reference.MOD_ID, "transmutation/upgrade_core")); + .save(output, Reference.modLoc("transmutation/upgrade_core")); } } \ No newline at end of file diff --git a/src/main/java/com/mrbysco/forcecraft/datagen/patchouli/PatchouliProvider.java b/src/main/java/com/mrbysco/forcecraft/datagen/patchouli/PatchouliProvider.java index e266786b..1846a282 100644 --- a/src/main/java/com/mrbysco/forcecraft/datagen/patchouli/PatchouliProvider.java +++ b/src/main/java/com/mrbysco/forcecraft/datagen/patchouli/PatchouliProvider.java @@ -39,7 +39,7 @@ protected void addBooks(Consumer consumer) { //Add leveling altar entry .addEntry("infuser/infuser", "info.forcecraft.book.infuser.entry.name", "forcecraft:infuser") .addTextPage("info.forcecraft.book.infuser_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "transmutation/infuser")).setText("info.forcecraft.book.infuser_recipe.text").build().build() + .addCraftingPage(Reference.modLoc("transmutation/infuser")).setText("info.forcecraft.book.infuser_recipe.text").build().build() .addEntry("infuser/requirements", "info.forcecraft.book.requirements.entry.name", "forcecraft:infuser") .addTextPage("info.forcecraft.book.requirements_info.text").build() @@ -52,37 +52,37 @@ protected void addBooks(Consumer consumer) { .addTextPage("info.forcecraft.book.force_engine_info.text").build() .addTextPage("info.forcecraft.book.force_engine_info_2.text").build() .addTextPage("info.forcecraft.book.force_engine_info_3.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_engine")).setText("info.forcecraft.book.force_engine_recipe.text").build().build() + .addCraftingPage(Reference.modLoc("force_engine")).setText("info.forcecraft.book.force_engine_recipe.text").build().build() .addEntry("infuser/force_rod", "info.forcecraft.book.force_rod.entry.name", "forcecraft:force_rod") .addTextPage("info.forcecraft.book.force_rod_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_rod")) + .addCraftingPage(Reference.modLoc("force_rod")) .setText("info.forcecraft.book.force_rod_recipe.text").build().build() .addEntry("infuser/force_ingot", "info.forcecraft.book.force_ingot.entry.name", "forcecraft:force_ingot") .addTextPage("info.forcecraft.book.force_ingot_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "iron_to_force_ingot")) + .addCraftingPage(Reference.modLoc("iron_to_force_ingot")) .setText("info.forcecraft.book.force_ingot_recipe.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "gold_to_force_ingot")) + .addCraftingPage(Reference.modLoc("gold_to_force_ingot")) .setText("info.forcecraft.book.force_ingot_recipe2.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "nuggets_to_force_ingot")) + .addCraftingPage(Reference.modLoc("nuggets_to_force_ingot")) .setText("info.forcecraft.book.force_ingot_recipe3.text").build().build() .addEntry("infuser/force_shears", "info.forcecraft.book.force_shears.entry.name", "forcecraft:force_shears") .addTextPage("info.forcecraft.book.force_shears_info.text").build() .addTextPage("info.forcecraft.book.force_shears_info2.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_shears")) + .addCraftingPage(Reference.modLoc("force_shears")) .setText("info.forcecraft.book.force_shears_recipe.text").build().build() .addEntry("infuser/baconator", "info.forcecraft.book.baconator.entry.name", "forcecraft:baconator") .addTextPage("info.forcecraft.book.baconator_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "baconator")) + .addCraftingPage(Reference.modLoc("baconator")) .setText("info.forcecraft.book.baconator_recipe.text").build() .build() .addEntry("infuser/bacon", "info.forcecraft.book.bacon.entry.name", "forcecraft:raw_bacon") .addTextPage("info.forcecraft.book.bacon_info.text").build() - .addSmeltingPage(new ResourceLocation(Reference.MOD_ID, "cooked_bacon_from_smelting")) + .addSmeltingPage(Reference.modLoc("cooked_bacon_from_smelting")) .setText("info.forcecraft.book.bacon_recipe.text").build() .addEntityPage("minecraft:pig").build() .addEntityPage("forcecraft:cold_pig").build() @@ -98,16 +98,16 @@ protected void addBooks(Consumer consumer) { .addEntry("infuser/inert_core", "info.forcecraft.book.inert_core.entry.name", "forcecraft:inert_core") .addTextPage("info.forcecraft.book.inert_core_info.text").build() - .addImagePage(new ResourceLocation(Reference.MOD_ID, "textures/gui/entries/burning_inert.png")) + .addImagePage(Reference.modLoc("textures/gui/entries/burning_inert.png")) .setText("info.forcecraft.book.inert_core_info2.text").build() .addSpotlightPage(new ItemStack(ForceRegistry.BOTTLED_WITHER.get())).build() .build() .addEntry("infuser/force_flask", "info.forcecraft.book.force_flask.entry.name", "forcecraft:force_flask") .addTextPage("info.forcecraft.book.force_flask_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_flask")) + .addCraftingPage(Reference.modLoc("force_flask")) .setText("info.forcecraft.book.force_flask_recipe.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_flask_from_entity")) + .addCraftingPage(Reference.modLoc("force_flask_from_entity")) .setText("info.forcecraft.book.force_flask_recipe2.text").build() .build() @@ -123,11 +123,11 @@ protected void addBooks(Consumer consumer) { .setText("info.forcecraft.book.force_furnace_freezing_core.text").build() .addSpotlightPage(new ItemStack(ForceRegistry.EXPERIENCE_CORE.get())) .setText("info.forcecraft.book.force_furnace_experience_core.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "force_furnace")).setText("info.forcecraft.book.force_furnace_recipe.text").build().build() + .addCraftingPage(Reference.modLoc("force_furnace")).setText("info.forcecraft.book.force_furnace_recipe.text").build().build() .addEntry("infuser/upgrade_core", "info.forcecraft.book.upgrade_core.entry.name", "forcecraft:upgrade_core") .addTextPage("info.forcecraft.book.upgrade_core_info.text").build() - .addCraftingPage(new ResourceLocation(Reference.MOD_ID, "transmutation/upgrade_core")).setText("info.forcecraft.book.upgrade_core_recipe.text").build().build() + .addCraftingPage(Reference.modLoc("transmutation/upgrade_core")).setText("info.forcecraft.book.upgrade_core_recipe.text").build().build() .build(); //Back to the bookbuilder diff --git a/src/main/java/com/mrbysco/forcecraft/entities/EnderTotEntity.java b/src/main/java/com/mrbysco/forcecraft/entities/EnderTotEntity.java index 62e3bc5c..a6a6fa95 100644 --- a/src/main/java/com/mrbysco/forcecraft/entities/EnderTotEntity.java +++ b/src/main/java/com/mrbysco/forcecraft/entities/EnderTotEntity.java @@ -47,7 +47,7 @@ import java.util.function.Predicate; public class EnderTotEntity extends EnderMan { - private static final ResourceLocation TOT_HOLDABLE = new ResourceLocation(Reference.MOD_ID, "endertot_holdable"); + private static final ResourceLocation TOT_HOLDABLE = Reference.modLoc("endertot_holdable"); public EnderTotEntity(EntityType type, Level level) { super(type, level); diff --git a/src/main/java/com/mrbysco/forcecraft/lootmodifiers/SmeltingModifier.java b/src/main/java/com/mrbysco/forcecraft/lootmodifiers/SmeltingModifier.java index 5aadb621..02fcd819 100644 --- a/src/main/java/com/mrbysco/forcecraft/lootmodifiers/SmeltingModifier.java +++ b/src/main/java/com/mrbysco/forcecraft/lootmodifiers/SmeltingModifier.java @@ -2,8 +2,9 @@ import com.google.common.base.Supplier; import com.google.common.base.Suppliers; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.mrbysco.forcecraft.registry.ForceLootModifiers; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.core.RegistryAccess; import net.minecraft.world.SimpleContainer; @@ -21,7 +22,8 @@ import static com.mrbysco.forcecraft.attachment.ForceAttachments.TOOL_MODIFIER; public class SmeltingModifier extends LootModifier { - public static final Supplier> CODEC = Suppliers.memoize(() -> RecordCodecBuilder.create(inst -> codecStart(inst).apply(inst, SmeltingModifier::new))); + public static final Supplier> CODEC = Suppliers.memoize(() -> + RecordCodecBuilder.mapCodec(inst -> codecStart(inst).apply(inst, SmeltingModifier::new))); public SmeltingModifier(LootItemCondition[] conditionsIn) { @@ -52,7 +54,7 @@ private static ItemStack smelt(ItemStack stack, LootContext context) { } @Override - public Codec codec() { - return CODEC.get(); + public MapCodec codec() { + return ForceLootModifiers.SMELTING.get(); } } diff --git a/src/main/java/com/mrbysco/forcecraft/mixin/GameRendererMixin.java b/src/main/java/com/mrbysco/forcecraft/mixin/GameRendererMixin.java index d6d509f7..19f882c3 100644 --- a/src/main/java/com/mrbysco/forcecraft/mixin/GameRendererMixin.java +++ b/src/main/java/com/mrbysco/forcecraft/mixin/GameRendererMixin.java @@ -1,7 +1,9 @@ package com.mrbysco.forcecraft.mixin; +import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import com.mrbysco.forcecraft.client.ShakeUtil; +import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import org.spongepowered.asm.mixin.Final; @@ -18,12 +20,12 @@ public abstract class GameRendererMixin { @Final private Minecraft minecraft; - @Inject(method = "renderLevel(FJLcom/mojang/blaze3d/vertex/PoseStack;)V", at = @At( + @Inject(method = "renderLevel(Lnet/minecraft/client/DeltaTracker;)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/Options;screenEffectScale()Lnet/minecraft/client/OptionInstance;", shift = At.Shift.BEFORE, ordinal = 0)) - public void renderLevel(float partialTicks, long finishTimeNano, PoseStack poseStack, CallbackInfo ci) { - ShakeUtil.shakeScreen(minecraft, partialTicks, finishTimeNano, poseStack); + public void renderLevel(DeltaTracker deltaTracker, CallbackInfo ci, @Local PoseStack poseStack) { + ShakeUtil.shakeScreen(minecraft, deltaTracker, poseStack); } } \ No newline at end of file diff --git a/src/main/java/com/mrbysco/forcecraft/modifier/AddConfigFeatureBiomeModifier.java b/src/main/java/com/mrbysco/forcecraft/modifier/AddConfigFeatureBiomeModifier.java index 09518ffc..6480f05b 100644 --- a/src/main/java/com/mrbysco/forcecraft/modifier/AddConfigFeatureBiomeModifier.java +++ b/src/main/java/com/mrbysco/forcecraft/modifier/AddConfigFeatureBiomeModifier.java @@ -1,6 +1,6 @@ package com.mrbysco.forcecraft.modifier; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mrbysco.forcecraft.registry.ForceModifiers; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; @@ -23,7 +23,7 @@ public void modify(Holder biome, Phase phase, Builder builder) { } @Override - public Codec codec() { + public MapCodec codec() { return ForceModifiers.ADD_CONFIG_FEATURES_BIOME_MODIFIER_TYPE.get(); } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/PacketHandler.java b/src/main/java/com/mrbysco/forcecraft/networking/PacketHandler.java index eab5d8e6..0058b091 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/PacketHandler.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/PacketHandler.java @@ -9,26 +9,20 @@ import com.mrbysco.forcecraft.networking.message.RecipeToCardPayload; import com.mrbysco.forcecraft.networking.message.SaveCardRecipePayload; import com.mrbysco.forcecraft.networking.message.StopInfuserSoundPayload; -import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent; -import net.neoforged.neoforge.network.registration.IPayloadRegistrar; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; public class PacketHandler { - public static void setupPackets(final RegisterPayloadHandlerEvent event) { - final IPayloadRegistrar registrar = event.registrar(Reference.MOD_ID); + public static void setupPackets(final RegisterPayloadHandlersEvent event) { + final PayloadRegistrar registrar = event.registrar(Reference.MOD_ID); - registrar.play(StopInfuserSoundPayload.ID, StopInfuserSoundPayload::new, handler -> handler - .client(ClientPayloadHandler.getInstance()::handleStopData)); + registrar.playToClient(StopInfuserSoundPayload.ID, StopInfuserSoundPayload.CODEC, ClientPayloadHandler.getInstance()::handleStopData); - registrar.play(OpenInventoryPayload.ID, OpenInventoryPayload::new, handler -> handler - .server(ServerPayloadHandler.getInstance()::handleOpen)); - registrar.play(QuickUseBeltPayload.ID, QuickUseBeltPayload::new, handler -> handler - .server(ServerPayloadHandler.getInstance()::handleQuickUse)); - registrar.play(PackChangePayload.ID, PackChangePayload::new, handler -> handler - .server(ServerPayloadHandler.getInstance()::handlePackChange)); - registrar.play(RecipeToCardPayload.ID, RecipeToCardPayload::new, handler -> handler - .server(ServerPayloadHandler.getInstance()::handleCard)); - registrar.play(SaveCardRecipePayload.ID, SaveCardRecipePayload::new, handler -> handler - .server(ServerPayloadHandler.getInstance()::handleSaveCard)); + registrar.playToServer(OpenInventoryPayload.ID, OpenInventoryPayload.CODEC, ServerPayloadHandler.getInstance()::handleOpen); + registrar.playToServer(QuickUseBeltPayload.ID, QuickUseBeltPayload.CODEC, ServerPayloadHandler.getInstance()::handleQuickUse); + registrar.playToServer(PackChangePayload.ID, PackChangePayload.CODEC, ServerPayloadHandler.getInstance()::handlePackChange); + registrar.playToServer(RecipeToCardPayload.ID, RecipeToCardPayload.CODEC, ServerPayloadHandler.getInstance()::handleCard); + registrar.playToServer(SaveCardRecipePayload.ID, SaveCardRecipePayload.CODEC, ServerPayloadHandler.getInstance()::handleSaveCard); } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/handler/ClientPayloadHandler.java b/src/main/java/com/mrbysco/forcecraft/networking/handler/ClientPayloadHandler.java index 58193808..2680cbcd 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/handler/ClientPayloadHandler.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/handler/ClientPayloadHandler.java @@ -4,7 +4,7 @@ import com.mrbysco.forcecraft.registry.ForceSounds; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundSource; -import net.neoforged.neoforge.network.handling.PlayPayloadContext; +import net.neoforged.neoforge.network.handling.IPayloadContext; public class ClientPayloadHandler { private static final ClientPayloadHandler INSTANCE = new ClientPayloadHandler(); @@ -13,15 +13,15 @@ public static ClientPayloadHandler getInstance() { return INSTANCE; } - public void handleStopData(final StopInfuserSoundPayload data, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { + public void handleStopData(final StopInfuserSoundPayload data, final IPayloadContext context) { + context.enqueueWork(() -> { net.minecraft.client.Minecraft mc = net.minecraft.client.Minecraft.getInstance(); mc.getSoundManager().stop(ForceSounds.INFUSER_WORKING.getId(), SoundSource.BLOCKS); mc.getSoundManager().stop(ForceSounds.INFUSER_SPECIAL.getId(), SoundSource.BLOCKS); }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.stop_infuser_sound.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.stop_infuser_sound.failed", e.getMessage())); return null; }); } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/handler/ServerPayloadHandler.java b/src/main/java/com/mrbysco/forcecraft/networking/handler/ServerPayloadHandler.java index 10f50037..1927aaee 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/handler/ServerPayloadHandler.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/handler/ServerPayloadHandler.java @@ -15,9 +15,11 @@ import com.mrbysco.forcecraft.networking.message.QuickUseBeltPayload; import com.mrbysco.forcecraft.networking.message.RecipeToCardPayload; import com.mrbysco.forcecraft.networking.message.SaveCardRecipePayload; +import com.mrbysco.forcecraft.registry.ForceComponents; import com.mrbysco.forcecraft.registry.ForceRegistry; import com.mrbysco.forcecraft.util.FindingUtil; import net.minecraft.ChatFormatting; +import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -32,7 +34,7 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.neoforged.neoforge.items.IItemHandler; -import net.neoforged.neoforge.network.handling.PlayPayloadContext; +import net.neoforged.neoforge.network.handling.IPayloadContext; import java.util.Optional; import java.util.function.Predicate; @@ -44,11 +46,10 @@ public static ServerPayloadHandler getInstance() { return INSTANCE; } - public void handleOpen(final OpenInventoryPayload openData, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { - if (context.player().isPresent()) { - Player player = context.player().get(); - if (openData.type() == 0) { //Belt + public void handleOpen(final OpenInventoryPayload openData, final IPayloadContext context) { + context.enqueueWork(() -> { + if (context.player() instanceof ServerPlayer player) { + if (openData.inventoryType() == 0) { //Belt Predicate stackPredicate = (stack) -> stack.getItem() instanceof ForceBeltItem; if (FindingUtil.hasSingleStackInHotbar(player, stackPredicate)) { ItemStack beltStack = FindingUtil.findInstanceStack(player, stackPredicate); @@ -56,7 +57,7 @@ public void handleOpen(final OpenInventoryPayload openData, final PlayPayloadCon Optional data = StorageManager.getBelt(beltStack); data.ifPresent(belt -> player.openMenu(new SimpleMenuProvider((id, pInv, pEntity) -> new ForceBeltMenu(id, pInv, belt.getInventory()), - beltStack.hasCustomHoverName() ? ((MutableComponent) beltStack.getHoverName()).withStyle(ChatFormatting.BLACK) : Component.translatable(Reference.MOD_ID + ".container.belt")))); + beltStack.has(DataComponents.CUSTOM_NAME) ? ((MutableComponent) beltStack.getHoverName()).withStyle(ChatFormatting.BLACK) : Component.translatable(Reference.MOD_ID + ".container.belt")))); } } } else { //Pack @@ -67,7 +68,7 @@ public void handleOpen(final OpenInventoryPayload openData, final PlayPayloadCon Optional data = StorageManager.getPack(packStack); data.ifPresent(pack -> player.openMenu(new SimpleMenuProvider((id, pInv, pEntity) -> new ForcePackMenu(id, pInv, pack.getInventory()), - packStack.hasCustomHoverName() ? ((MutableComponent) packStack.getHoverName()).withStyle(ChatFormatting.BLACK) : + packStack.has(DataComponents.CUSTOM_NAME) ? ((MutableComponent) packStack.getHoverName()).withStyle(ChatFormatting.BLACK) : Component.translatable(Reference.MOD_ID + ".container.pack")), buf -> buf.writeInt(pack.getInventory().getUpgrades()))); } } @@ -76,15 +77,14 @@ public void handleOpen(final OpenInventoryPayload openData, final PlayPayloadCon }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.open_inventory.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.open_inventory.failed", e.getMessage())); return null; }); } - public void handleQuickUse(final QuickUseBeltPayload beltData, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { - if (context.player().isPresent()) { - Player player = context.player().get(); + public void handleQuickUse(final QuickUseBeltPayload beltData, final IPayloadContext context) { + context.enqueueWork(() -> { + if (context.player() instanceof ServerPlayer player) { Predicate stackPredicate = (stack) -> stack.getItem() instanceof ForceBeltItem; if (FindingUtil.hasSingleStackInHotbar(player, stackPredicate)) { ItemStack beltStack = FindingUtil.findInstanceStack(player, stackPredicate); @@ -106,28 +106,25 @@ public void handleQuickUse(final QuickUseBeltPayload beltData, final PlayPayload }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.quick_use_belt.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.quick_use_belt.failed", e.getMessage())); return null; }); } - public void handlePackChange(final PackChangePayload changeData, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { - if (context.player().isPresent()) { - Player player = context.player().get(); + public void handlePackChange(final PackChangePayload changeData, final IPayloadContext context) { + context.enqueueWork(() -> { + if (context.player() instanceof ServerPlayer player) { ItemStack stack = player.getItemInHand(changeData.hand()); if (stack.getItem() == ForceRegistry.FORCE_PACK.get() || stack.getItem() == ForceRegistry.FORCE_BELT.get()) { - CompoundTag tag = stack.getOrCreateTag(); - tag.putInt("Color", changeData.color()); - stack.setTag(tag); + stack.set(ForceComponents.PACK_COLOR, changeData.color()); String customName = changeData.customName(); if (customName.isEmpty()) { - stack.resetHoverName(); + stack.remove(DataComponents.CUSTOM_NAME); } else { if (!stack.getHoverName().getString().equals(customName)) { - stack.setHoverName(Component.literal(customName).withStyle(ChatFormatting.YELLOW)); + stack.set(DataComponents.CUSTOM_NAME, Component.literal(customName).withStyle(ChatFormatting.YELLOW)); } } } @@ -135,15 +132,14 @@ public void handlePackChange(final PackChangePayload changeData, final PlayPaylo }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.pack_change.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.pack_change.failed", e.getMessage())); return null; }); } - public void handleCard(final RecipeToCardPayload recipeData, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { - if (context.player().isPresent()) { - Player player = context.player().get(); + public void handleCard(final RecipeToCardPayload recipeData, final IPayloadContext context) { + context.enqueueWork(() -> { + if (context.player() instanceof ServerPlayer player) { // Handle tablet version ItemStack mainhand = ItemStack.EMPTY; if (player.getMainHandItem().getItem() instanceof ItemCardItem) { @@ -160,14 +156,14 @@ public void handleCard(final RecipeToCardPayload recipeData, final PlayPayloadCo }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.recipe_to_card.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.recipe_to_card.failed", e.getMessage())); return null; }); } - public void handleSaveCard(final SaveCardRecipePayload saveData, final PlayPayloadContext context) { - context.workHandler().submitAsync(() -> { - if (context.player().isPresent() && context.player().get() instanceof ServerPlayer player) { + public void handleSaveCard(final SaveCardRecipePayload saveData, final IPayloadContext context) { + context.enqueueWork(() -> { + if (context.player() instanceof ServerPlayer player) { // Handle tablet version Level level = player.level(); ItemStack stack = getCardStack(player); @@ -175,14 +171,15 @@ public void handleSaveCard(final SaveCardRecipePayload saveData, final PlayPaylo if (player.containerMenu instanceof ItemCardMenu itemCardContainer) { CraftingContainer craftMatrix = itemCardContainer.getCraftMatrix(); ResultContainer craftResult = itemCardContainer.getCraftResult(); - Optional> iRecipe = player.server.getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftMatrix, level); + Optional> iRecipe = player.server.getRecipeManager() + .getRecipeFor(RecipeType.CRAFTING, craftMatrix.asCraftInput(), level); iRecipe.ifPresent((holder) -> { CompoundTag tag = stack.getOrCreateTag(); CompoundTag recipeContents = new CompoundTag(); for (int i = 0; i < craftMatrix.getContainerSize(); i++) { - recipeContents.put("slot_" + i, craftMatrix.getItem(i).save(new CompoundTag())); + recipeContents.put("slot_" + i, craftMatrix.getItem(i).save(level.registryAccess(), new CompoundTag())); } - recipeContents.put("result", craftResult.getItem(0).save(new CompoundTag())); + recipeContents.put("result", craftResult.getItem(0).save(level.registryAccess(), new CompoundTag())); tag.put("RecipeContents", recipeContents); stack.setTag(tag); }); @@ -193,7 +190,7 @@ public void handleSaveCard(final SaveCardRecipePayload saveData, final PlayPaylo }) .exceptionally(e -> { // Handle exception - context.packetHandler().disconnect(Component.translatable("forcecraft.networking.save_card.failed", e.getMessage())); + context.disconnect(Component.translatable("forcecraft.networking.save_card.failed", e.getMessage())); return null; }); } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/OpenInventoryPayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/OpenInventoryPayload.java index 1c7fbef4..df8afc02 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/OpenInventoryPayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/OpenInventoryPayload.java @@ -2,22 +2,25 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -public record OpenInventoryPayload(int type) implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "open_inventory"); +public record OpenInventoryPayload(int inventoryType) implements CustomPacketPayload { + public static final StreamCodec CODEC = CustomPacketPayload.codec( + OpenInventoryPayload::write, + OpenInventoryPayload::new); + public static final Type ID = new Type<>(Reference.modLoc("open_inventory")); public OpenInventoryPayload(final FriendlyByteBuf packetBuffer) { this(packetBuffer.readInt()); } public void write(FriendlyByteBuf buf) { - buf.writeInt(type); + buf.writeInt(inventoryType); } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/PackChangePayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/PackChangePayload.java index 6747b20e..e2712d4f 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/PackChangePayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/PackChangePayload.java @@ -2,12 +2,15 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; public record PackChangePayload(InteractionHand hand, String customName, int color) implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "pack_change"); + public static final StreamCodec CODEC = CustomPacketPayload.codec( + PackChangePayload::write, + PackChangePayload::new); + public static final Type ID = new Type<>(Reference.modLoc("pack_change")); public PackChangePayload(final FriendlyByteBuf packetBuffer) { this(packetBuffer.readInt() == 0 ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND, packetBuffer.readUtf(), packetBuffer.readInt()); @@ -20,7 +23,7 @@ public void write(FriendlyByteBuf buf) { } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/QuickUseBeltPayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/QuickUseBeltPayload.java index 06cc3c0a..86cb2a37 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/QuickUseBeltPayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/QuickUseBeltPayload.java @@ -2,11 +2,14 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; public record QuickUseBeltPayload(int slot) implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "quick_use_belt"); + public static final StreamCodec CODEC = CustomPacketPayload.codec( + QuickUseBeltPayload::write, + QuickUseBeltPayload::new); + public static final Type ID = new Type<>(Reference.modLoc("quick_use_belt")); public QuickUseBeltPayload(final FriendlyByteBuf packetBuffer) { this(packetBuffer.readInt()); @@ -17,7 +20,7 @@ public void write(FriendlyByteBuf buf) { } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/RecipeToCardPayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/RecipeToCardPayload.java index dad7fdaf..f15c9a0d 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/RecipeToCardPayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/RecipeToCardPayload.java @@ -2,15 +2,18 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; import java.util.List; public record RecipeToCardPayload(List stacks) implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "recipe_to_card"); + public static final StreamCodec CODEC = CustomPacketPayload.codec( + RecipeToCardPayload::write, + RecipeToCardPayload::new); + public static final Type ID = new Type<>(Reference.modLoc("recipe_to_card")); public RecipeToCardPayload(final FriendlyByteBuf packetBuffer) { this(new ArrayList<>()); @@ -28,7 +31,7 @@ public void write(FriendlyByteBuf buf) { } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/SaveCardRecipePayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/SaveCardRecipePayload.java index 73565313..ae9c3aa5 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/SaveCardRecipePayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/SaveCardRecipePayload.java @@ -2,11 +2,14 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; public record SaveCardRecipePayload() implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "save_card_recipe"); + public static final StreamCodec CODEC = CustomPacketPayload.codec( + SaveCardRecipePayload::write, + SaveCardRecipePayload::new); + public static final Type ID = new Type<>(Reference.modLoc("save_card_recipe")); public SaveCardRecipePayload(final FriendlyByteBuf packetBuffer) { this(); @@ -17,7 +20,7 @@ public void write(FriendlyByteBuf buf) { } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/networking/message/StopInfuserSoundPayload.java b/src/main/java/com/mrbysco/forcecraft/networking/message/StopInfuserSoundPayload.java index 294597e4..98982214 100644 --- a/src/main/java/com/mrbysco/forcecraft/networking/message/StopInfuserSoundPayload.java +++ b/src/main/java/com/mrbysco/forcecraft/networking/message/StopInfuserSoundPayload.java @@ -2,11 +2,14 @@ import com.mrbysco.forcecraft.Reference; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; public record StopInfuserSoundPayload() implements CustomPacketPayload { - public static final ResourceLocation ID = new ResourceLocation(Reference.MOD_ID, "stop_infuser_sound"); + public static final StreamCodec CODEC = CustomPacketPayload.codec( + StopInfuserSoundPayload::write, + StopInfuserSoundPayload::new); + public static final Type ID = new Type<>(Reference.modLoc("stop_infuser_sound")); public StopInfuserSoundPayload(final FriendlyByteBuf packetBuffer) { this(); @@ -17,7 +20,7 @@ public void write(FriendlyByteBuf buf) { } @Override - public ResourceLocation id() { + public Type type() { return ID; } } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceComponents.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceComponents.java new file mode 100644 index 00000000..f9b423cd --- /dev/null +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceComponents.java @@ -0,0 +1,20 @@ +package com.mrbysco.forcecraft.registry; + +import com.mojang.serialization.Codec; +import com.mrbysco.forcecraft.Reference; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.ByteBufCodecs; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; + +public class ForceComponents { + public static final DeferredRegister> DATA_COMPONENT_TYPES = DeferredRegister.create(Registries.DATA_COMPONENT_TYPE, Reference.MOD_ID); + + public static final Supplier> PACK_COLOR = DATA_COMPONENT_TYPES.register("pack_color", () -> + DataComponentType.builder() + .persistent(Codec.INT) + .networkSynchronized(ByteBufCodecs.INT) + .build()); +} diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceDamageTypes.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceDamageTypes.java index 2ce9e45d..2baf41bb 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceDamageTypes.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceDamageTypes.java @@ -11,6 +11,6 @@ public class ForceDamageTypes { public static final ResourceKey LIQUID_FORCE = register("liquid_force"); private static ResourceKey register(String name) { - return ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(Reference.MOD_ID, name)); + return ResourceKey.create(Registries.DAMAGE_TYPE, Reference.modLoc(name)); } } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceEffects.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceEffects.java index 57c60200..02f0f12e 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceEffects.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceEffects.java @@ -6,6 +6,7 @@ import com.mrbysco.forcecraft.effects.ShakeEffect; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.effect.MobEffect; +import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import java.util.function.Supplier; @@ -13,7 +14,7 @@ public class ForceEffects { public static final DeferredRegister EFFECTS = DeferredRegister.create(BuiltInRegistries.MOB_EFFECT, Reference.MOD_ID); - public static final Supplier BLEEDING = EFFECTS.register("bleeding", BleedingEffect::new); - public static final Supplier MAGNET = EFFECTS.register("magnet", MagnetEffect::new); - public static final Supplier SHAKING = EFFECTS.register("shaking", ShakeEffect::new); + public static final DeferredHolder BLEEDING = EFFECTS.register("bleeding", BleedingEffect::new); + public static final DeferredHolder MAGNET = EFFECTS.register("magnet", MagnetEffect::new); + public static final DeferredHolder SHAKING = EFFECTS.register("shaking", ShakeEffect::new); } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceEntities.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceEntities.java index 31ebec60..d2fed1bf 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceEntities.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceEntities.java @@ -16,11 +16,11 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.level.levelgen.Heightmap; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; -import net.neoforged.neoforge.event.entity.SpawnPlacementRegisterEvent; +import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; import net.neoforged.neoforge.registries.DeferredRegister; import java.util.function.Supplier; @@ -82,15 +82,15 @@ public class ForceEntities { .sized(0.25F, 0.25F) .clientTrackingRange(4).updateInterval(10))); - public static void registerSpawnPlacement(SpawnPlacementRegisterEvent event) { - event.register(RED_CHU_CHU.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, SpawnPlacementRegisterEvent.Operation.AND); - event.register(GREEN_CHU_CHU.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, SpawnPlacementRegisterEvent.Operation.AND); - event.register(BLUE_CHU_CHU.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, SpawnPlacementRegisterEvent.Operation.AND); - event.register(GOLD_CHU_CHU.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, SpawnPlacementRegisterEvent.Operation.AND); - event.register(CREEPER_TOT.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, SpawnPlacementRegisterEvent.Operation.AND); - event.register(ENDER_TOT.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, SpawnPlacementRegisterEvent.Operation.AND); - event.register(ANGRY_ENDERMAN.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, SpawnPlacementRegisterEvent.Operation.AND); - event.register(FAIRY.get(), SpawnPlacements.Type.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING, FairyEntity::canSpawnOn, SpawnPlacementRegisterEvent.Operation.AND); + public static void registerSpawnPlacement(RegisterSpawnPlacementsEvent event) { + event.register(RED_CHU_CHU.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(GREEN_CHU_CHU.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(BLUE_CHU_CHU.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(GOLD_CHU_CHU.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ChuChuEntity::canSpawnHere, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(CREEPER_TOT.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(ENDER_TOT.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(ANGRY_ENDERMAN.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, RegisterSpawnPlacementsEvent.Operation.AND); + event.register(FAIRY.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING, FairyEntity::canSpawnOn, RegisterSpawnPlacementsEvent.Operation.AND); } public static void registerEntityAttributes(EntityAttributeCreationEvent event) { diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceFluids.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceFluids.java index 15526940..88f9fa1c 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceFluids.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceFluids.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.common.SoundActions; @@ -27,8 +27,8 @@ import java.util.function.Supplier; public class ForceFluids { - private static final ResourceLocation STILL_METAL = new ResourceLocation(Reference.MOD_ID, "block/force_fluid_source"); - private static final ResourceLocation FLOWING_METAL = new ResourceLocation(Reference.MOD_ID, "block/force_fluid_flowing"); + private static final ResourceLocation STILL_METAL = Reference.modLoc("block/force_fluid_source"); + private static final ResourceLocation FLOWING_METAL = Reference.modLoc("block/force_fluid_flowing"); public static final DeferredRegister FLUIDS = DeferredRegister.create(BuiltInRegistries.FLUID, Reference.MOD_ID); public static final DeferredRegister FLUID_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_TYPES, Reference.MOD_ID); @@ -45,6 +45,7 @@ public void setItemMovement(ItemEntity entity) { entity.setDeltaMovement(vec3.x * (double) 0.95F, vec3.y + (double) (vec3.y < (double) 0.06F ? 5.0E-4F : 0.0F), vec3.z * (double) 0.95F); } + @SuppressWarnings("removal") @Override public void initializeClient(Consumer consumer) { consumer.accept(new IClientFluidTypeExtensions() { @@ -89,7 +90,7 @@ public static FluidType.Properties createTypeProperties() { return FluidType.Properties.create() .canSwim(false) .canDrown(false) - .pathType(BlockPathTypes.LAVA) + .pathType(PathType.LAVA) .sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL) .sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY) .rarity(Rarity.COMMON) diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceFoods.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceFoods.java index c4d96d46..427c9d57 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceFoods.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceFoods.java @@ -3,8 +3,9 @@ import net.minecraft.world.food.FoodProperties; public class ForceFoods { - public static final FoodProperties FORTUNE_COOKIE = (new FoodProperties.Builder()).nutrition(2).saturationMod(0.1F).alwaysEat().build(); - public static final FoodProperties SOUL_WAFER = (new FoodProperties.Builder()).nutrition(2).saturationMod(1.0F).build(); - public static final FoodProperties BACON = (new FoodProperties.Builder()).nutrition(2).saturationMod(0.4F).meat().build(); - public static final FoodProperties COOKED_BACON = (new FoodProperties.Builder()).nutrition(4).saturationMod(0.8F).meat().build(); + public static final FoodProperties FORTUNE_COOKIE = (new FoodProperties.Builder()).nutrition(2).saturationModifier(0.1F).alwaysEdible().build(); + public static final FoodProperties SOUL_WAFER = (new FoodProperties.Builder()).nutrition(2).saturationModifier(1.0F).build(); + public static final FoodProperties BACON = (new FoodProperties.Builder()).nutrition(2).saturationModifier(0.4F).build(); + public static final FoodProperties COOKED_BACON = (new FoodProperties.Builder()).nutrition(4).saturationModifier(0.8F).build(); + //TODO: Add bacon and cooked bacon to minecraft:meat } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceLootModifiers.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceLootModifiers.java index c12a6fac..8a5a481e 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceLootModifiers.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceLootModifiers.java @@ -1,6 +1,6 @@ package com.mrbysco.forcecraft.registry; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mrbysco.forcecraft.Reference; import com.mrbysco.forcecraft.lootmodifiers.SmeltingModifier; import net.neoforged.neoforge.common.loot.IGlobalLootModifier; @@ -10,7 +10,7 @@ import java.util.function.Supplier; public class ForceLootModifiers { - public static final DeferredRegister> GLM = DeferredRegister.create(NeoForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, Reference.MOD_ID); + public static final DeferredRegister> GLM = DeferredRegister.create(NeoForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, Reference.MOD_ID); - private static final Supplier> SMELTING = GLM.register("smelting", SmeltingModifier.CODEC); + public static final Supplier> SMELTING = GLM.register("smelting", SmeltingModifier.CODEC); } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceModifiers.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceModifiers.java index 9acd0aaf..d1be439e 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceModifiers.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceModifiers.java @@ -1,6 +1,7 @@ package com.mrbysco.forcecraft.registry; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mrbysco.forcecraft.Reference; import com.mrbysco.forcecraft.modifier.AddConfigFeatureBiomeModifier; @@ -14,10 +15,10 @@ import java.util.function.Supplier; public class ForceModifiers { - public static final DeferredRegister> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Reference.MOD_ID); + public static final DeferredRegister> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Reference.MOD_ID); - public static final Supplier> ADD_CONFIG_FEATURES_BIOME_MODIFIER_TYPE = BIOME_MODIFIER_SERIALIZERS.register("add_config_features", () -> - RecordCodecBuilder.create(builder -> builder.group( + public static final Supplier> ADD_CONFIG_FEATURES_BIOME_MODIFIER_TYPE = BIOME_MODIFIER_SERIALIZERS.register("add_config_features", () -> + RecordCodecBuilder.mapCodec(builder -> builder.group( Biome.LIST_CODEC.fieldOf("biomes").forGetter(AddConfigFeatureBiomeModifier::biomes), PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(AddConfigFeatureBiomeModifier::features), Decoration.CODEC.fieldOf("step").forGetter(AddConfigFeatureBiomeModifier::step), diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceSounds.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceSounds.java index 6994b399..9705f06a 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceSounds.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceSounds.java @@ -11,37 +11,37 @@ public class ForceSounds { public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(BuiltInRegistries.SOUND_EVENT, Reference.MOD_ID); public static final DeferredHolder WHOOSH = SOUND_EVENTS.register("whoosh", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "whoosh"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("whoosh"))); public static final DeferredHolder FAIRY_PICKUP = SOUND_EVENTS.register("fairy.pickup", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "fairy.pickup"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("fairy.pickup"))); public static final DeferredHolder FAIRY_LISTEN = SOUND_EVENTS.register("fairy.listen", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "fairy.listen"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("fairy.listen"))); public static final DeferredHolder FAIRY_LISTEN_SPECIAL = SOUND_EVENTS.register("fairy.listen.special", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "fairy.listen.special"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("fairy.listen.special"))); public static final DeferredHolder INFUSER_DONE = SOUND_EVENTS.register("infuser.done", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "infuser.done"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("infuser.done"))); public static final DeferredHolder INFUSER_WORKING = SOUND_EVENTS.register("infuser.working", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "infuser.working"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("infuser.working"))); public static final DeferredHolder INFUSER_SPECIAL = SOUND_EVENTS.register("infuser.special", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "infuser.special"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("infuser.special"))); public static final DeferredHolder INFUSER_SPECIAL_BEEP = SOUND_EVENTS.register("infuser.special.beep", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "infuser.special.beep"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("infuser.special.beep"))); public static final DeferredHolder INFUSER_SPECIAL_DONE = SOUND_EVENTS.register("infuser.special.done", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "infuser.special.done"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("infuser.special.done"))); public static final DeferredHolder HEART_PICKUP = SOUND_EVENTS.register("heart.pickup", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "heart.pickup"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("heart.pickup"))); public static final DeferredHolder FORCE_PUNCH = SOUND_EVENTS.register("force.punch", () -> - SoundEvent.createVariableRangeEvent(new ResourceLocation(Reference.MOD_ID, "force.punch"))); + SoundEvent.createVariableRangeEvent(Reference.modLoc("force.punch"))); } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceTables.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceTables.java index 3db90463..3d5055b6 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceTables.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceTables.java @@ -9,6 +9,6 @@ public class ForceTables { public static final ResourceLocation TIER_3 = register("spoils/tier3"); private static ResourceLocation register(String id) { - return new ResourceLocation(Reference.MOD_ID, id); + return Reference.modLoc(id); } } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/ForceTags.java b/src/main/java/com/mrbysco/forcecraft/registry/ForceTags.java index 30f3f0e4..1f664d11 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/ForceTags.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/ForceTags.java @@ -19,76 +19,76 @@ public class ForceTags { public static final TagKey MINEABLE_WITH_MITTS = forceBlockTag("mineable_with_mitts"); public static final TagKey FORCE_BRICK = forceBlockTag("force_brick"); - public static final TagKey VALID_INFUSER_MODIFIERS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_infuser_modifiers")); - public static final TagKey VALID_INFUSER_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_infuser_tools")); - public static final TagKey VALID_INFUSER_CHARGE = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_infuser_charge")); - public static final TagKey TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "tools")); - public static final TagKey FORCE_FUELS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "force_fuel")); - public static final TagKey BACONATOR_FOOD = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "baconator_food")); - public static final TagKey FORTUNE = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "fortune")); - public static final TagKey VALID_FORCE_BELT = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_force_belt")); - public static final TagKey VALID_BANE_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_bane_tools")); - public static final TagKey VALID_HEALING_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_healing_tools")); - public static final TagKey VALID_WING_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_wing_tools")); - public static final TagKey VALID_STURDY_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_sturdy_tools")); - public static final TagKey VALID_ENDER_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_ender_tools")); - public static final TagKey VALID_LIGHT_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_light_tools")); - public static final TagKey VALID_TREASURE_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_treasure_tools")); - public static final TagKey VALID_BLEEDING_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_bleeding_tools")); - public static final TagKey VALID_SILKY_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_silky_tools")); - public static final TagKey VALID_CAMO_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_camo_tools")); - public static final TagKey VALID_DAMAGE_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_damage_tools")); - public static final TagKey VALID_LUCKY_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_lucky_tools")); - public static final TagKey VALID_FREEZING_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_freezing_tools")); - public static final TagKey VALID_HEAT_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_heat_tools")); - public static final TagKey VALID_LUMBER_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_lumber_tools")); - public static final TagKey VALID_SPEED_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_speed_tools")); - public static final TagKey VALID_KNOCKBACK_TOOLS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "valid_knockback_tools")); - public static final TagKey ENDER = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "ender")); - public static final TagKey FORCE_LOGS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "force_logs")); - public static final TagKey ENTITY_FLASKS = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "entity_flasks")); - public static final TagKey CHU_JELLY = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "chu_jelly")); - - public static final TagKey FORCE_INGOT = forgeItemTag("ingots/force"); - public static final TagKey FORCE_NUGGET = forgeItemTag("nuggets/force"); - public static final TagKey FORCE_FURNACES = ItemTags.create(new ResourceLocation(Reference.MOD_ID, "force_furnace")); - public static final TagKey FORCE_GEM = forgeItemTag("gems/force"); - public static final TagKey FORCE_ROD = forgeItemTag("rods/force"); - public static final TagKey FORCE_GEAR = forgeItemTag("gears/force"); - public static final TagKey HOLDS_ITEMS = forgeItemTag("holds_items"); + public static final TagKey VALID_INFUSER_MODIFIERS = ItemTags.create(Reference.modLoc("valid_infuser_modifiers")); + public static final TagKey VALID_INFUSER_TOOLS = ItemTags.create(Reference.modLoc("valid_infuser_tools")); + public static final TagKey VALID_INFUSER_CHARGE = ItemTags.create(Reference.modLoc("valid_infuser_charge")); + public static final TagKey TOOLS = ItemTags.create(Reference.modLoc("tools")); + public static final TagKey FORCE_FUELS = ItemTags.create(Reference.modLoc("force_fuel")); + public static final TagKey BACONATOR_FOOD = ItemTags.create(Reference.modLoc("baconator_food")); + public static final TagKey FORTUNE = ItemTags.create(Reference.modLoc("fortune")); + public static final TagKey VALID_FORCE_BELT = ItemTags.create(Reference.modLoc("valid_force_belt")); + public static final TagKey VALID_BANE_TOOLS = ItemTags.create(Reference.modLoc("valid_bane_tools")); + public static final TagKey VALID_HEALING_TOOLS = ItemTags.create(Reference.modLoc("valid_healing_tools")); + public static final TagKey VALID_WING_TOOLS = ItemTags.create(Reference.modLoc("valid_wing_tools")); + public static final TagKey VALID_STURDY_TOOLS = ItemTags.create(Reference.modLoc("valid_sturdy_tools")); + public static final TagKey VALID_ENDER_TOOLS = ItemTags.create(Reference.modLoc("valid_ender_tools")); + public static final TagKey VALID_LIGHT_TOOLS = ItemTags.create(Reference.modLoc("valid_light_tools")); + public static final TagKey VALID_TREASURE_TOOLS = ItemTags.create(Reference.modLoc("valid_treasure_tools")); + public static final TagKey VALID_BLEEDING_TOOLS = ItemTags.create(Reference.modLoc("valid_bleeding_tools")); + public static final TagKey VALID_SILKY_TOOLS = ItemTags.create(Reference.modLoc("valid_silky_tools")); + public static final TagKey VALID_CAMO_TOOLS = ItemTags.create(Reference.modLoc("valid_camo_tools")); + public static final TagKey VALID_DAMAGE_TOOLS = ItemTags.create(Reference.modLoc("valid_damage_tools")); + public static final TagKey VALID_LUCKY_TOOLS = ItemTags.create(Reference.modLoc("valid_lucky_tools")); + public static final TagKey VALID_FREEZING_TOOLS = ItemTags.create(Reference.modLoc("valid_freezing_tools")); + public static final TagKey VALID_HEAT_TOOLS = ItemTags.create(Reference.modLoc("valid_heat_tools")); + public static final TagKey VALID_LUMBER_TOOLS = ItemTags.create(Reference.modLoc("valid_lumber_tools")); + public static final TagKey VALID_SPEED_TOOLS = ItemTags.create(Reference.modLoc("valid_speed_tools")); + public static final TagKey VALID_KNOCKBACK_TOOLS = ItemTags.create(Reference.modLoc("valid_knockback_tools")); + public static final TagKey ENDER = ItemTags.create(Reference.modLoc("ender")); + public static final TagKey FORCE_LOGS = ItemTags.create(Reference.modLoc("force_logs")); + public static final TagKey ENTITY_FLASKS = ItemTags.create(Reference.modLoc("entity_flasks")); + public static final TagKey CHU_JELLY = ItemTags.create(Reference.modLoc("chu_jelly")); + + public static final TagKey FORCE_INGOT = commonItemTag("ingots/force"); + public static final TagKey FORCE_NUGGET = commonItemTag("nuggets/force"); + public static final TagKey FORCE_FURNACES = ItemTags.create(Reference.modLoc("force_furnace")); + public static final TagKey FORCE_GEM = commonItemTag("gems/force"); + public static final TagKey FORCE_ROD = commonItemTag("rods/force"); + public static final TagKey FORCE_GEAR = commonItemTag("gears/force"); + public static final TagKey HOLDS_ITEMS = commonItemTag("holds_items"); //Fuels - public static final TagKey FORCE = forgeFluidTag("force"); - public static final TagKey MILK = forgeFluidTag("milk"); - public static final TagKey FUEL = optionalForgeFluidTag("fuel"); - public static final TagKey BIOFUEL = optionalForgeFluidTag("biofuel"); + public static final TagKey FORCE = commonFluidTag("force"); + public static final TagKey MILK = commonFluidTag("milk"); + public static final TagKey FUEL = optionalCommonFluidTag("fuel"); + public static final TagKey BIOFUEL = optionalCommonFluidTag("biofuel"); public static final TagKey ENDERTOT_HOLDABLE = forceBlockTag("endertot_holdable"); - public static final TagKey> FLASK_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation(Reference.MOD_ID, "flask_blacklist")); + public static final TagKey> FLASK_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, Reference.modLoc("flask_blacklist")); public static final TagKey IS_PEACEFUL = forceBiomeTag("is_peaceful"); - private static TagKey forgeItemTag(String name) { - return ItemTags.create(new ResourceLocation("forge", name)); + private static TagKey commonItemTag(String name) { + return ItemTags.create(ResourceLocation.fromNamespaceAndPath("c", name)); } private static TagKey forceBlockTag(String name) { - return BlockTags.create(new ResourceLocation(Reference.MOD_ID, name)); + return BlockTags.create(Reference.modLoc(name)); } - private static TagKey forgeFluidTag(String name) { - return FluidTags.create(new ResourceLocation("forge", name)); + private static TagKey commonFluidTag(String name) { + return FluidTags.create(ResourceLocation.fromNamespaceAndPath("c", name)); } - private static TagKey optionalForgeFluidTag(String name) { - return FluidTags.create(new ResourceLocation("forge", name)); + private static TagKey optionalCommonFluidTag(String name) { + return FluidTags.create(ResourceLocation.fromNamespaceAndPath("c", name)); } private static TagKey forceBiomeTag(String name) { - return TagKey.create(Registries.BIOME, new ResourceLocation(Reference.MOD_ID, name)); + return TagKey.create(Registries.BIOME, Reference.modLoc(name)); } } diff --git a/src/main/java/com/mrbysco/forcecraft/registry/material/ModToolTiers.java b/src/main/java/com/mrbysco/forcecraft/registry/material/ModToolTiers.java index 13dd436c..87f6e3ef 100644 --- a/src/main/java/com/mrbysco/forcecraft/registry/material/ModToolTiers.java +++ b/src/main/java/com/mrbysco/forcecraft/registry/material/ModToolTiers.java @@ -15,5 +15,5 @@ public class ModToolTiers { public static final Tier FORCE = TierSortingRegistry.registerTier( new SimpleTier(3, 1561, 8.0F, 8.0F, 22, ForceTags.NEEDS_FORCE_TOOL, () -> Ingredient.of(ForceRegistry.FORCE_GEM.get())), - new ResourceLocation(Reference.MOD_ID, "force"), List.of(Tiers.IRON), List.of(Tiers.DIAMOND)); + Reference.modLoc("force"), List.of(Tiers.IRON), List.of(Tiers.DIAMOND)); } diff --git a/src/main/java/com/mrbysco/forcecraft/util/AdvancementUtil.java b/src/main/java/com/mrbysco/forcecraft/util/AdvancementUtil.java index 4517b072..0a5dffc8 100644 --- a/src/main/java/com/mrbysco/forcecraft/util/AdvancementUtil.java +++ b/src/main/java/com/mrbysco/forcecraft/util/AdvancementUtil.java @@ -57,7 +57,7 @@ public static void unlockTierAdvancements(Player player, int tier) { public static void unlockAdvancement(ServerPlayer serverPlayer, String name) { if (serverPlayer.getServer() == null) return; - AdvancementHolder holder = serverPlayer.getServer().getAdvancements().get(new ResourceLocation(Reference.MOD_ID + ":" + name)); + AdvancementHolder holder = serverPlayer.getServer().getAdvancements().get(Reference.modLoc(name)); if (holder != null) { AdvancementProgress advancementprogress = serverPlayer.getAdvancements().getOrStartProgress(holder); if (!advancementprogress.isDone()) { diff --git a/src/main/java/com/mrbysco/forcecraft/util/EnchantUtils.java b/src/main/java/com/mrbysco/forcecraft/util/EnchantUtils.java index 4d3f76fa..4d279561 100644 --- a/src/main/java/com/mrbysco/forcecraft/util/EnchantUtils.java +++ b/src/main/java/com/mrbysco/forcecraft/util/EnchantUtils.java @@ -1,41 +1,26 @@ package com.mrbysco.forcecraft.util; +import net.minecraft.core.Holder; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; - -import java.util.Map; +import net.minecraft.world.item.enchantment.ItemEnchantments; public final class EnchantUtils { - public static boolean removeEnchant(ItemStack stack, Enchantment enchantment) { - Map enchantments = EnchantmentHelper.getEnchantments(stack); - enchantments.remove(enchantment); - EnchantmentHelper.setEnchantments(enchantments, stack); - return false; + public static void removeEnchant(ItemStack stack, Holder enchantment) { + ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments( + stack, mutable -> mutable.removeIf(holder -> !holder.is(enchantment)) + ); } - public static void incrementLevel(ItemStack stack, Enchantment enchantment) { - Map enchantments = EnchantmentHelper.getEnchantments(stack); - if (enchantments.containsKey(enchantment)) { - int oldLevel = enchantments.get(enchantment); - enchantments.remove(enchantment); - enchantments.put(enchantment, oldLevel + 1); - EnchantmentHelper.setEnchantments(enchantments, stack); - } else { - stack.enchant(enchantment, 1); - } + public static void incrementLevel(ItemStack stack, Holder enchantment) { + incrementLevel(stack, enchantment, 1); } - public static void incrementLevel(ItemStack stack, Enchantment enchantment, int levels) { - Map enchantments = EnchantmentHelper.getEnchantments(stack); - if (enchantments.containsKey(enchantment)) { - int oldLevel = enchantments.get(enchantment); - enchantments.remove(enchantment); - enchantments.put(enchantment, oldLevel + levels); - EnchantmentHelper.setEnchantments(enchantments, stack); - } else { - stack.enchant(enchantment, levels); - } + public static void incrementLevel(ItemStack stack, Holder enchantment, int levels) { + ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments( + stack, mutable -> mutable.upgrade(enchantment, levels) //TODO: Test if this works! + ); } } diff --git a/src/main/java/com/mrbysco/forcecraft/util/ForceUtils.java b/src/main/java/com/mrbysco/forcecraft/util/ForceUtils.java index 4e1b6bd3..fdd71098 100644 --- a/src/main/java/com/mrbysco/forcecraft/util/ForceUtils.java +++ b/src/main/java/com/mrbysco/forcecraft/util/ForceUtils.java @@ -1,6 +1,5 @@ package com.mrbysco.forcecraft.util; -import com.mrbysco.forcecraft.Reference; import com.mrbysco.forcecraft.blocks.flammable.ForceLogBlock; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; @@ -8,7 +7,6 @@ import net.minecraft.core.Direction; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -19,19 +17,15 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; -import net.neoforged.neoforge.common.CommonHooks; import net.neoforged.neoforge.common.util.FakePlayer; import net.neoforged.neoforge.event.EventHooks; import net.neoforged.neoforge.event.entity.EntityTeleportEvent; -import java.util.Map; import java.util.Stack; public class ForceUtils { @@ -39,11 +33,11 @@ public class ForceUtils { /** * A modified version of LivingEntity#randomTeleport that allows teleporting to unloaded chunks * - * @param player The entity to teleport - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @param broadcast if the teleport should be broadcasted to other players + * @param player The entity to teleport + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @param broadcast if the teleport should be broadcasted to other players * @return if the teleport was successful */ public static boolean teleportToLocation(Player player, double x, double y, double z, boolean broadcast) { @@ -56,15 +50,6 @@ public static boolean teleportToLocation(Player player, double x, double y, doub return true; } - public static void removeEnchant(Enchantment enchantment, ItemStack stack) { - Map enchantMap = EnchantmentHelper.getEnchantments(stack); - if (enchantMap.containsKey(enchantment)) { - enchantMap.remove(enchantment); - } - - EnchantmentHelper.setEnchantments(enchantMap, stack); - } - //Credit to Slimeknights for this code until I can logic through it on my own public static boolean isTree(Level level, BlockPos origin) { BlockPos pos = null; @@ -135,8 +120,9 @@ public static void breakExtraBlock(ItemStack stack, Level level, Player player, // server sided handling if (!level.isClientSide) { // send the blockbreak event - int xp = CommonHooks.onBlockBreakEvent(level, ((ServerPlayer) player).gameMode.getGameModeForPlayer(), (ServerPlayer) player, pos); - if (xp == -1) { + BlockState blockstate1 = level.getBlockState(pos); + var event = net.neoforged.neoforge.common.CommonHooks.fireBlockBreak(level, ((ServerPlayer) player).gameMode.getGameModeForPlayer(), ((ServerPlayer) player), pos, blockstate1); + if (event.isCanceled()) { return; } @@ -147,7 +133,9 @@ public static void breakExtraBlock(ItemStack stack, Level level, Player player, if (block.onDestroyedByPlayer(state, level, pos, player, true, fluidState)) { // boolean is if block can be harvested, checked above block.playerWillDestroy(level, pos, state, player); block.playerDestroy(level, player, pos, state, tileEntity, stack); - block.popExperience((ServerLevel) level, pos, xp); + int xp = block.getExpDrop(state, level, pos, null, player, stack); + if (xp > 0) + block.popExperience((ServerLevel) level, pos, xp); } // always send block update to client @@ -199,7 +187,7 @@ private static boolean canBreakExtraBlock(ItemStack stack, Level level, Player p float strength = state.getDestroyProgress(player, level, pos); // only harvestable blocks that aren't impossibly slow to harvest - if (!CommonHooks.isCorrectToolForDrops(state, player) || refStrength / strength > 10f) { + if (!stack.isCorrectToolForDrops(state) || refStrength / strength > 10f) { return false; } @@ -224,14 +212,6 @@ public static boolean isFakePlayer(Entity player) { return (player instanceof FakePlayer); } - public static String resource(String res) { - return String.format("%s:%s", Reference.MOD_ID, res); - } - - public static ResourceLocation getResource(String res) { - return new ResourceLocation(Reference.MOD_ID, res); - } - public static void teleportRandomly(LivingEntity livingEntity) { if (!livingEntity.level().isClientSide() && livingEntity.isAlive() && !livingEntity.isInWaterOrBubble()) { double d0 = livingEntity.getX() + (livingEntity.getRandom().nextDouble() - 0.5D) * 32.0D; diff --git a/src/main/java/com/mrbysco/forcecraft/util/MobUtil.java b/src/main/java/com/mrbysco/forcecraft/util/MobUtil.java index b591f03b..dfe750b8 100644 --- a/src/main/java/com/mrbysco/forcecraft/util/MobUtil.java +++ b/src/main/java/com/mrbysco/forcecraft/util/MobUtil.java @@ -28,7 +28,7 @@ public static void addBleedingEffect(int level, LivingEntity target, Entity true if (adjustedLevel > 0) { // ForceCraft.LOGGER.info("Added BLEEDING to " + target.getName()); - target.addEffect(new MobEffectInstance(ForceEffects.BLEEDING.get(), BLEEDING_SECONDS * adjustedLevel, 0, false, true)); + target.addEffect(new MobEffectInstance(ForceEffects.BLEEDING, BLEEDING_SECONDS * adjustedLevel, 0, false, true)); } } } diff --git a/src/main/java/com/mrbysco/forcecraft/world/feature/ForceBiomeModifiers.java b/src/main/java/com/mrbysco/forcecraft/world/feature/ForceBiomeModifiers.java index 0c374d1d..24c55708 100644 --- a/src/main/java/com/mrbysco/forcecraft/world/feature/ForceBiomeModifiers.java +++ b/src/main/java/com/mrbysco/forcecraft/world/feature/ForceBiomeModifiers.java @@ -6,9 +6,8 @@ import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.MobSpawnSettings; @@ -23,24 +22,20 @@ public class ForceBiomeModifiers { - protected static final ResourceKey ADD_FORCE_ORE_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_force_ore")); - protected static final ResourceKey ADD_FORCE_ORE_BURIED_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_force_ore_buried")); - protected static final ResourceKey ADD_FORCE_TREE = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_force_tree")); - protected static final ResourceKey ADD_CHU_CHU_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_chu_chu")); - protected static final ResourceKey ADD_SWAMP_CHU_CHU_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_swamp_chu_chu")); - protected static final ResourceKey ADD_CREEPER_TOT_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_creeper_tot")); - protected static final ResourceKey ADD_ENDER_TOT_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_ender_tot")); - protected static final ResourceKey ADD_FAIRY_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, - new ResourceLocation(Reference.MOD_ID, "add_fairy")); + protected static final ResourceKey ADD_FORCE_ORE_MODIFIER = createKey("add_force_ore"); + protected static final ResourceKey ADD_FORCE_ORE_BURIED_MODIFIER = createKey("add_force_ore_buried"); + protected static final ResourceKey ADD_FORCE_TREE = createKey("add_force_tree"); + protected static final ResourceKey ADD_CHU_CHU_MODIFIER = createKey("add_chu_chu"); + protected static final ResourceKey ADD_SWAMP_CHU_CHU_MODIFIER = createKey("add_swamp_chu_chu"); + protected static final ResourceKey ADD_CREEPER_TOT_MODIFIER = createKey("add_creeper_tot"); + protected static final ResourceKey ADD_ENDER_TOT_MODIFIER = createKey("add_ender_tot"); + protected static final ResourceKey ADD_FAIRY_MODIFIER = createKey("add_fairy"); - public static void modifierBootstrap(BootstapContext context) { + private static ResourceKey createKey(String name) { + return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, Reference.modLoc(name)); + } + + public static void modifierBootstrap(BootstrapContext context) { HolderGetter biomeGetter = context.lookup(Registries.BIOME); HolderGetter placedGetter = context.lookup(Registries.PLACED_FEATURE); diff --git a/src/main/java/com/mrbysco/forcecraft/world/feature/ForceFeatureKeys.java b/src/main/java/com/mrbysco/forcecraft/world/feature/ForceFeatureKeys.java index 25dde9cd..f9024da5 100644 --- a/src/main/java/com/mrbysco/forcecraft/world/feature/ForceFeatureKeys.java +++ b/src/main/java/com/mrbysco/forcecraft/world/feature/ForceFeatureKeys.java @@ -1,10 +1,11 @@ package com.mrbysco.forcecraft.world.feature; +import com.mrbysco.forcecraft.Reference; import com.mrbysco.forcecraft.registry.ForceRegistry; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.data.worldgen.placement.VegetationPlacements; @@ -38,19 +39,27 @@ public class ForceFeatureKeys { - public static final ResourceKey> ORE_FORCE = FeatureUtils.createKey("forcecraft:ore_force"); - public static final ResourceKey> ORE_FORCE_BURIED = FeatureUtils.createKey("forcecraft:ore_force_buried"); + public static final ResourceKey> ORE_FORCE = createConfiguredKey("ore_force"); + public static final ResourceKey> ORE_FORCE_BURIED = createConfiguredKey("ore_force_buried"); - public static final ResourceKey> FORCE_TREE = FeatureUtils.createKey("forcecraft:force_tree"); - public static final ResourceKey> FORCE_TREE_WITH_MORE_BEEHIVES_CONFIG = FeatureUtils.createKey("forcecraft:force_tree_with_bees"); + public static final ResourceKey> FORCE_TREE = createConfiguredKey("force_tree"); + public static final ResourceKey> FORCE_TREE_WITH_MORE_BEEHIVES_CONFIG = createConfiguredKey("force_tree_with_bees"); - public static final ResourceKey> TREES_FORCE = FeatureUtils.createKey("forcecraft:trees_force"); - - public static final ResourceKey PLACED_ORE_FORCE = PlacementUtils.createKey("forcecraft:ore_force"); - public static final ResourceKey PLACED_ORE_FORCE_BURIED = PlacementUtils.createKey("forcecraft:ore_force_buried"); - public static final ResourceKey PLACED_FORCE_TREE = PlacementUtils.createKey("forcecraft:force_tree"); - public static final ResourceKey PLACED_FORCE_TREE_BEES_002 = PlacementUtils.createKey("forcecraft:force_tree_bees_002"); + public static final ResourceKey> TREES_FORCE = createConfiguredKey("trees_force"); + public static ResourceKey> createConfiguredKey(String name) { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, Reference.modLoc(name)); + } + + public static final ResourceKey PLACED_ORE_FORCE = createPlacedKey("ore_force"); + public static final ResourceKey PLACED_ORE_FORCE_BURIED = createPlacedKey("ore_force_buried"); + public static final ResourceKey PLACED_FORCE_TREE = createPlacedKey("force_tree"); + public static final ResourceKey PLACED_FORCE_TREE_BEES_002 = createPlacedKey("force_tree_bees_002"); + + public static ResourceKey createPlacedKey(String name) { + return ResourceKey.create(Registries.PLACED_FEATURE, Reference.modLoc(name)); + } + private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobTree(BlockState trunkState, BlockState foliageState, int baseHeight, int heightRandA, int heightRandB, int p_195152_) { return new TreeConfiguration.TreeConfigurationBuilder(BlockStateProvider.simple(trunkState), new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB), BlockStateProvider.simple(foliageState), new BlobFoliagePlacer(ConstantInt.of(p_195152_), ConstantInt.of(0), 3), new TwoLayersFeatureSize(1, 0, 1)); @@ -60,7 +69,7 @@ private static TreeConfiguration.TreeConfigurationBuilder createForceTree() { return createStraightBlobTree(ForceRegistry.FORCE_LOG.get().defaultBlockState(), ForceRegistry.FORCE_LEAVES.get().defaultBlockState(), 4, 2, 0, 2).ignoreVines(); } - public static void configuredBootstrap(BootstapContext> context) { + public static void configuredBootstrap(BootstrapContext> context) { RuleTest stoneRuleTest = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); RuleTest deepslateRuleTest = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); List list = List.of( @@ -91,7 +100,7 @@ private static List commonOrePlacement(int count, PlacementMo return orePlacement(CountPlacement.of(count), modifier); } - public static void placedBootstrap(BootstapContext context) { + public static void placedBootstrap(BootstrapContext context) { HolderGetter> holdergetter = context.lookup(Registries.CONFIGURED_FEATURE); PlacementUtils.register(context, PLACED_ORE_FORCE, holdergetter.getOrThrow(ORE_FORCE), diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/neoforge.mods.toml similarity index 75% rename from src/main/resources/META-INF/mods.toml rename to src/main/resources/META-INF/neoforge.mods.toml index b63e5354..e3219985 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -1,5 +1,5 @@ modLoader="javafml" -loaderVersion="[2,)" +loaderVersion="[4,)" issueTrackerURL="https://github.com/mrbysco/forcecraft/issues" license="GNU GPL v3" @@ -16,13 +16,19 @@ A mod inspired by DartCraft [[dependencies.forcecraft]] modId="minecraft" type="REQUIRED" -versionRange="[1.20.4,1.21)" +versionRange="[1.21,1.22)" ordering="NONE" side="BOTH" [[dependencies.forcecraft]] modId="neoforge" type="REQUIRED" -versionRange="[20.4.131-beta,)" +versionRange="[21.1.1,)" +ordering="NONE" +side="BOTH" +[[dependencies.forcecraft]] +modId="patchouli" +type="REQUIRED" +versionRange="[1.21-87,)" ordering="NONE" side="BOTH" [[mixins]] diff --git a/src/main/resources/data/forge/tags/fluids/biofuel.json b/src/main/resources/data/c/tags/fluid/biofuel.json similarity index 100% rename from src/main/resources/data/forge/tags/fluids/biofuel.json rename to src/main/resources/data/c/tags/fluid/biofuel.json diff --git a/src/main/resources/data/forge/tags/fluids/force.json b/src/main/resources/data/c/tags/fluid/force.json similarity index 100% rename from src/main/resources/data/forge/tags/fluids/force.json rename to src/main/resources/data/c/tags/fluid/force.json diff --git a/src/main/resources/data/forge/tags/fluids/fuel.json b/src/main/resources/data/c/tags/fluid/fuel.json similarity index 100% rename from src/main/resources/data/forge/tags/fluids/fuel.json rename to src/main/resources/data/c/tags/fluid/fuel.json diff --git a/src/main/resources/data/forge/tags/items/gears.json b/src/main/resources/data/c/tags/item/gears.json similarity index 100% rename from src/main/resources/data/forge/tags/items/gears.json rename to src/main/resources/data/c/tags/item/gears.json diff --git a/src/main/resources/data/forge/tags/items/gears/force.json b/src/main/resources/data/c/tags/item/gears/force.json similarity index 100% rename from src/main/resources/data/forge/tags/items/gears/force.json rename to src/main/resources/data/c/tags/item/gears/force.json diff --git a/src/main/resources/data/forge/tags/items/gems/force.json b/src/main/resources/data/c/tags/item/gems/force.json similarity index 100% rename from src/main/resources/data/forge/tags/items/gems/force.json rename to src/main/resources/data/c/tags/item/gems/force.json diff --git a/src/main/resources/data/forge/tags/items/holds_items.json b/src/main/resources/data/c/tags/item/holds_items.json similarity index 100% rename from src/main/resources/data/forge/tags/items/holds_items.json rename to src/main/resources/data/c/tags/item/holds_items.json diff --git a/src/main/resources/data/forge/tags/items/ingots.json b/src/main/resources/data/c/tags/item/ingots.json similarity index 100% rename from src/main/resources/data/forge/tags/items/ingots.json rename to src/main/resources/data/c/tags/item/ingots.json diff --git a/src/main/resources/data/forge/tags/items/ingots/force.json b/src/main/resources/data/c/tags/item/ingots/force.json similarity index 100% rename from src/main/resources/data/forge/tags/items/ingots/force.json rename to src/main/resources/data/c/tags/item/ingots/force.json diff --git a/src/main/resources/data/forge/tags/items/nuggets.json b/src/main/resources/data/c/tags/item/nuggets.json similarity index 100% rename from src/main/resources/data/forge/tags/items/nuggets.json rename to src/main/resources/data/c/tags/item/nuggets.json diff --git a/src/main/resources/data/forge/tags/items/nuggets/force.json b/src/main/resources/data/c/tags/item/nuggets/force.json similarity index 100% rename from src/main/resources/data/forge/tags/items/nuggets/force.json rename to src/main/resources/data/c/tags/item/nuggets/force.json diff --git a/src/main/resources/data/forge/tags/items/rods/force.json b/src/main/resources/data/c/tags/item/rods/force.json similarity index 100% rename from src/main/resources/data/forge/tags/items/rods/force.json rename to src/main/resources/data/c/tags/item/rods/force.json diff --git a/src/main/resources/data/forge/tags/items/rods/wooden.json b/src/main/resources/data/c/tags/item/rods/wooden.json similarity index 100% rename from src/main/resources/data/forge/tags/items/rods/wooden.json rename to src/main/resources/data/c/tags/item/rods/wooden.json diff --git a/src/main/resources/data/forge/tags/items/shears.json b/src/main/resources/data/c/tags/item/shears.json similarity index 100% rename from src/main/resources/data/forge/tags/items/shears.json rename to src/main/resources/data/c/tags/item/shears.json diff --git a/src/main/resources/data/forge/tags/items/workbenches/oak.json b/src/main/resources/data/c/tags/item/workbenches/oak.json similarity index 100% rename from src/main/resources/data/forge/tags/items/workbenches/oak.json rename to src/main/resources/data/c/tags/item/workbenches/oak.json diff --git a/src/main/resources/data/forcecraft/advancements/root.json b/src/main/resources/data/forcecraft/advancement/root.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/root.json rename to src/main/resources/data/forcecraft/advancement/root.json diff --git a/src/main/resources/data/forcecraft/advancements/tier0/damage.json b/src/main/resources/data/forcecraft/advancement/tier0/damage.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier0/damage.json rename to src/main/resources/data/forcecraft/advancement/tier0/damage.json diff --git a/src/main/resources/data/forcecraft/advancements/tier0/force.json b/src/main/resources/data/forcecraft/advancement/tier0/force.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier0/force.json rename to src/main/resources/data/forcecraft/advancement/tier0/force.json diff --git a/src/main/resources/data/forcecraft/advancements/tier0/tier.json b/src/main/resources/data/forcecraft/advancement/tier0/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier0/tier.json rename to src/main/resources/data/forcecraft/advancement/tier0/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier1/heat.json b/src/main/resources/data/forcecraft/advancement/tier1/heat.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier1/heat.json rename to src/main/resources/data/forcecraft/advancement/tier1/heat.json diff --git a/src/main/resources/data/forcecraft/advancements/tier1/lumberjack.json b/src/main/resources/data/forcecraft/advancement/tier1/lumberjack.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier1/lumberjack.json rename to src/main/resources/data/forcecraft/advancement/tier1/lumberjack.json diff --git a/src/main/resources/data/forcecraft/advancements/tier1/speed.json b/src/main/resources/data/forcecraft/advancement/tier1/speed.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier1/speed.json rename to src/main/resources/data/forcecraft/advancement/tier1/speed.json diff --git a/src/main/resources/data/forcecraft/advancements/tier1/tier.json b/src/main/resources/data/forcecraft/advancement/tier1/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier1/tier.json rename to src/main/resources/data/forcecraft/advancement/tier1/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/experience.json b/src/main/resources/data/forcecraft/advancement/tier2/experience.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/experience.json rename to src/main/resources/data/forcecraft/advancement/tier2/experience.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/freezing.json b/src/main/resources/data/forcecraft/advancement/tier2/freezing.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/freezing.json rename to src/main/resources/data/forcecraft/advancement/tier2/freezing.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/grinding.json b/src/main/resources/data/forcecraft/advancement/tier2/grinding.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/grinding.json rename to src/main/resources/data/forcecraft/advancement/tier2/grinding.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/holding.json b/src/main/resources/data/forcecraft/advancement/tier2/holding.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/holding.json rename to src/main/resources/data/forcecraft/advancement/tier2/holding.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/luck.json b/src/main/resources/data/forcecraft/advancement/tier2/luck.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/luck.json rename to src/main/resources/data/forcecraft/advancement/tier2/luck.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/rainbow.json b/src/main/resources/data/forcecraft/advancement/tier2/rainbow.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/rainbow.json rename to src/main/resources/data/forcecraft/advancement/tier2/rainbow.json diff --git a/src/main/resources/data/forcecraft/advancements/tier2/tier.json b/src/main/resources/data/forcecraft/advancement/tier2/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier2/tier.json rename to src/main/resources/data/forcecraft/advancement/tier2/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier3/bleeding.json b/src/main/resources/data/forcecraft/advancement/tier3/bleeding.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier3/bleeding.json rename to src/main/resources/data/forcecraft/advancement/tier3/bleeding.json diff --git a/src/main/resources/data/forcecraft/advancements/tier3/camo.json b/src/main/resources/data/forcecraft/advancement/tier3/camo.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier3/camo.json rename to src/main/resources/data/forcecraft/advancement/tier3/camo.json diff --git a/src/main/resources/data/forcecraft/advancements/tier3/silk.json b/src/main/resources/data/forcecraft/advancement/tier3/silk.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier3/silk.json rename to src/main/resources/data/forcecraft/advancement/tier3/silk.json diff --git a/src/main/resources/data/forcecraft/advancements/tier3/tier.json b/src/main/resources/data/forcecraft/advancement/tier3/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier3/tier.json rename to src/main/resources/data/forcecraft/advancement/tier3/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier4/bane.json b/src/main/resources/data/forcecraft/advancement/tier4/bane.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier4/bane.json rename to src/main/resources/data/forcecraft/advancement/tier4/bane.json diff --git a/src/main/resources/data/forcecraft/advancements/tier4/tier.json b/src/main/resources/data/forcecraft/advancement/tier4/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier4/tier.json rename to src/main/resources/data/forcecraft/advancement/tier4/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier5/healing.json b/src/main/resources/data/forcecraft/advancement/tier5/healing.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier5/healing.json rename to src/main/resources/data/forcecraft/advancement/tier5/healing.json diff --git a/src/main/resources/data/forcecraft/advancements/tier5/tier.json b/src/main/resources/data/forcecraft/advancement/tier5/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier5/tier.json rename to src/main/resources/data/forcecraft/advancement/tier5/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier5/wing.json b/src/main/resources/data/forcecraft/advancement/tier5/wing.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier5/wing.json rename to src/main/resources/data/forcecraft/advancement/tier5/wing.json diff --git a/src/main/resources/data/forcecraft/advancements/tier6/ender.json b/src/main/resources/data/forcecraft/advancement/tier6/ender.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier6/ender.json rename to src/main/resources/data/forcecraft/advancement/tier6/ender.json diff --git a/src/main/resources/data/forcecraft/advancements/tier6/sturdy.json b/src/main/resources/data/forcecraft/advancement/tier6/sturdy.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier6/sturdy.json rename to src/main/resources/data/forcecraft/advancement/tier6/sturdy.json diff --git a/src/main/resources/data/forcecraft/advancements/tier6/tier.json b/src/main/resources/data/forcecraft/advancement/tier6/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier6/tier.json rename to src/main/resources/data/forcecraft/advancement/tier6/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier6/time.json b/src/main/resources/data/forcecraft/advancement/tier6/time.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier6/time.json rename to src/main/resources/data/forcecraft/advancement/tier6/time.json diff --git a/src/main/resources/data/forcecraft/advancements/tier7/light.json b/src/main/resources/data/forcecraft/advancement/tier7/light.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier7/light.json rename to src/main/resources/data/forcecraft/advancement/tier7/light.json diff --git a/src/main/resources/data/forcecraft/advancements/tier7/tier.json b/src/main/resources/data/forcecraft/advancement/tier7/tier.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier7/tier.json rename to src/main/resources/data/forcecraft/advancement/tier7/tier.json diff --git a/src/main/resources/data/forcecraft/advancements/tier7/treasure.json b/src/main/resources/data/forcecraft/advancement/tier7/treasure.json similarity index 100% rename from src/main/resources/data/forcecraft/advancements/tier7/treasure.json rename to src/main/resources/data/forcecraft/advancement/tier7/treasure.json diff --git a/src/main/resources/data/forcecraft/recipes/compat/thermal/bottler_force_flask.json b/src/main/resources/data/forcecraft/recipe/compat/thermal/bottler_force_flask.json similarity index 100% rename from src/main/resources/data/forcecraft/recipes/compat/thermal/bottler_force_flask.json rename to src/main/resources/data/forcecraft/recipe/compat/thermal/bottler_force_flask.json diff --git a/src/main/resources/data/forcecraft/recipes/compat/thermal/bottler_milk_flask.json b/src/main/resources/data/forcecraft/recipe/compat/thermal/bottler_milk_flask.json similarity index 100% rename from src/main/resources/data/forcecraft/recipes/compat/thermal/bottler_milk_flask.json rename to src/main/resources/data/forcecraft/recipe/compat/thermal/bottler_milk_flask.json diff --git a/src/main/resources/data/forcecraft/tags/blocks/endertot_holdable.json b/src/main/resources/data/forcecraft/tags/block/endertot_holdable.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/blocks/endertot_holdable.json rename to src/main/resources/data/forcecraft/tags/block/endertot_holdable.json diff --git a/src/main/resources/data/forcecraft/tags/blocks/force_brick.json b/src/main/resources/data/forcecraft/tags/block/force_brick.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/blocks/force_brick.json rename to src/main/resources/data/forcecraft/tags/block/force_brick.json diff --git a/src/main/resources/data/forcecraft/tags/blocks/force_furnace.json b/src/main/resources/data/forcecraft/tags/block/force_furnace.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/blocks/force_furnace.json rename to src/main/resources/data/forcecraft/tags/block/force_furnace.json diff --git a/src/main/resources/data/forcecraft/tags/blocks/force_logs.json b/src/main/resources/data/forcecraft/tags/block/force_logs.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/blocks/force_logs.json rename to src/main/resources/data/forcecraft/tags/block/force_logs.json diff --git a/src/main/resources/data/forcecraft/tags/blocks/mineable_with_mitts.json b/src/main/resources/data/forcecraft/tags/block/mineable_with_mitts.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/blocks/mineable_with_mitts.json rename to src/main/resources/data/forcecraft/tags/block/mineable_with_mitts.json diff --git a/src/main/resources/data/forcecraft/tags/entity_types/flask_blacklist.json b/src/main/resources/data/forcecraft/tags/entity_type/flask_blacklist.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/entity_types/flask_blacklist.json rename to src/main/resources/data/forcecraft/tags/entity_type/flask_blacklist.json diff --git a/src/main/resources/data/forcecraft/tags/items/force_armor.json b/src/main/resources/data/forcecraft/tags/item/force_armor.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/force_armor.json rename to src/main/resources/data/forcecraft/tags/item/force_armor.json diff --git a/src/main/resources/data/forcecraft/tags/items/force_brick.json b/src/main/resources/data/forcecraft/tags/item/force_brick.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/force_brick.json rename to src/main/resources/data/forcecraft/tags/item/force_brick.json diff --git a/src/main/resources/data/forcecraft/tags/items/force_fuel.json b/src/main/resources/data/forcecraft/tags/item/force_fuel.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/force_fuel.json rename to src/main/resources/data/forcecraft/tags/item/force_fuel.json diff --git a/src/main/resources/data/forcecraft/tags/items/force_torch.json b/src/main/resources/data/forcecraft/tags/item/force_torch.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/force_torch.json rename to src/main/resources/data/forcecraft/tags/item/force_torch.json diff --git a/src/main/resources/data/forcecraft/tags/items/tools.json b/src/main/resources/data/forcecraft/tags/item/tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/tools.json rename to src/main/resources/data/forcecraft/tags/item/tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_bane_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_bane_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_bane_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_bane_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_bleeding_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_bleeding_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_bleeding_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_bleeding_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_camo_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_camo_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_camo_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_camo_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_damage_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_damage_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_damage_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_damage_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_ender_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_ender_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_ender_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_ender_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_force_belt.json b/src/main/resources/data/forcecraft/tags/item/valid_force_belt.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_force_belt.json rename to src/main/resources/data/forcecraft/tags/item/valid_force_belt.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_freezing_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_freezing_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_freezing_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_freezing_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_healing_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_healing_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_healing_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_healing_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_heat_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_heat_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_heat_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_heat_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_infuser_charge.json b/src/main/resources/data/forcecraft/tags/item/valid_infuser_charge.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_infuser_charge.json rename to src/main/resources/data/forcecraft/tags/item/valid_infuser_charge.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_infuser_modifiers.json b/src/main/resources/data/forcecraft/tags/item/valid_infuser_modifiers.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_infuser_modifiers.json rename to src/main/resources/data/forcecraft/tags/item/valid_infuser_modifiers.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_infuser_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_infuser_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_infuser_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_infuser_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_knockback_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_knockback_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_knockback_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_knockback_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_light_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_light_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_light_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_light_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_lucky_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_lucky_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_lucky_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_lucky_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_lumber_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_lumber_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_lumber_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_lumber_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_sight_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_sight_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_sight_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_sight_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_silky_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_silky_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_silky_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_silky_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_speed_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_speed_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_speed_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_speed_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_sturdy_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_sturdy_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_sturdy_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_sturdy_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_treasure_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_treasure_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_treasure_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_treasure_tools.json diff --git a/src/main/resources/data/forcecraft/tags/items/valid_wing_tools.json b/src/main/resources/data/forcecraft/tags/item/valid_wing_tools.json similarity index 100% rename from src/main/resources/data/forcecraft/tags/items/valid_wing_tools.json rename to src/main/resources/data/forcecraft/tags/item/valid_wing_tools.json diff --git a/src/main/resources/data/minecraft/tags/blocks/leaves.json b/src/main/resources/data/minecraft/tags/block/leaves.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/leaves.json rename to src/main/resources/data/minecraft/tags/block/leaves.json diff --git a/src/main/resources/data/minecraft/tags/blocks/logs.json b/src/main/resources/data/minecraft/tags/block/logs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/logs.json rename to src/main/resources/data/minecraft/tags/block/logs.json diff --git a/src/main/resources/data/minecraft/tags/blocks/planks.json b/src/main/resources/data/minecraft/tags/block/planks.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/planks.json rename to src/main/resources/data/minecraft/tags/block/planks.json diff --git a/src/main/resources/data/minecraft/tags/blocks/saplings.json b/src/main/resources/data/minecraft/tags/block/saplings.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/saplings.json rename to src/main/resources/data/minecraft/tags/block/saplings.json diff --git a/src/main/resources/data/minecraft/tags/blocks/slabs.json b/src/main/resources/data/minecraft/tags/block/slabs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/slabs.json rename to src/main/resources/data/minecraft/tags/block/slabs.json diff --git a/src/main/resources/data/minecraft/tags/blocks/stairs.json b/src/main/resources/data/minecraft/tags/block/stairs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/stairs.json rename to src/main/resources/data/minecraft/tags/block/stairs.json diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json b/src/main/resources/data/minecraft/tags/block/wooden_slabs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json rename to src/main/resources/data/minecraft/tags/block/wooden_slabs.json diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json b/src/main/resources/data/minecraft/tags/block/wooden_stairs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json rename to src/main/resources/data/minecraft/tags/block/wooden_stairs.json diff --git a/src/main/resources/data/minecraft/tags/items/leaves.json b/src/main/resources/data/minecraft/tags/item/leaves.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/leaves.json rename to src/main/resources/data/minecraft/tags/item/leaves.json diff --git a/src/main/resources/data/minecraft/tags/items/logs.json b/src/main/resources/data/minecraft/tags/item/logs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/logs.json rename to src/main/resources/data/minecraft/tags/item/logs.json diff --git a/src/main/resources/data/minecraft/tags/items/planks.json b/src/main/resources/data/minecraft/tags/item/planks.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/planks.json rename to src/main/resources/data/minecraft/tags/item/planks.json diff --git a/src/main/resources/data/minecraft/tags/items/saplings.json b/src/main/resources/data/minecraft/tags/item/saplings.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/saplings.json rename to src/main/resources/data/minecraft/tags/item/saplings.json diff --git a/src/main/resources/data/minecraft/tags/items/slabs.json b/src/main/resources/data/minecraft/tags/item/slabs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/slabs.json rename to src/main/resources/data/minecraft/tags/item/slabs.json diff --git a/src/main/resources/data/minecraft/tags/items/stairs.json b/src/main/resources/data/minecraft/tags/item/stairs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/stairs.json rename to src/main/resources/data/minecraft/tags/item/stairs.json diff --git a/src/main/resources/data/minecraft/tags/items/wooden_slabs.json b/src/main/resources/data/minecraft/tags/item/wooden_slabs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/wooden_slabs.json rename to src/main/resources/data/minecraft/tags/item/wooden_slabs.json diff --git a/src/main/resources/data/minecraft/tags/items/wooden_stairs.json b/src/main/resources/data/minecraft/tags/item/wooden_stairs.json similarity index 100% rename from src/main/resources/data/minecraft/tags/items/wooden_stairs.json rename to src/main/resources/data/minecraft/tags/item/wooden_stairs.json diff --git a/src/main/resources/data/tconstruct/tags/tile_entity_types/crafting_station_blacklist.json b/src/main/resources/data/tconstruct/tags/tile_entity_type/crafting_station_blacklist.json similarity index 100% rename from src/main/resources/data/tconstruct/tags/tile_entity_types/crafting_station_blacklist.json rename to src/main/resources/data/tconstruct/tags/tile_entity_type/crafting_station_blacklist.json diff --git a/src/main/resources/forcecraft.mixins.json b/src/main/resources/forcecraft.mixins.json index 26b2b1f5..2b99d159 100644 --- a/src/main/resources/forcecraft.mixins.json +++ b/src/main/resources/forcecraft.mixins.json @@ -3,7 +3,7 @@ "minVersion": "0.8.5", "package": "com.mrbysco.forcecraft.mixin", "target": "@env(DEFAULT)", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "client": [ "GameRendererMixin" ], diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 9d35835f..1e5b2abe 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "ForceCraft resources", - "pack_format": 22 + "pack_format": 34 } }