From fa254844b7a0d478a3ce0d6a35fcf4e408735a9d Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sat, 25 Jul 2026 19:00:28 +0200 Subject: [PATCH 01/25] chore: migrate potion registry to IXplatRegister --- .../hexcasting/common/lib/HexPotions.java | 55 ++++++++----------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 4 +- 3 files changed, 26 insertions(+), 35 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java index 243c32f255..0cc40aaf0a 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java @@ -1,5 +1,8 @@ package at.petrak.hexcasting.common.lib; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; @@ -16,48 +19,36 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexPotions { - private static final Map POTIONS = new LinkedHashMap<>(); + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.POTION); - public static final Potion ENLARGE_GRID = make("enlarge_grid", + public static void register() { + REGISTER.registerAll(); + } + + public static final Holder ENLARGE_GRID = REGISTER.registerHolder("enlarge_grid", () -> new Potion("enlarge_grid", new MobEffectInstance(HexMobEffects.ENLARGE_GRID, 3600))); - public static final Potion ENLARGE_GRID_LONG = make("enlarge_grid_long", + public static final Holder ENLARGE_GRID_LONG = REGISTER.registerHolder("enlarge_grid_long", () -> new Potion("enlarge_grid_long", new MobEffectInstance(HexMobEffects.ENLARGE_GRID, 9600))); - public static final Potion ENLARGE_GRID_STRONG = make("enlarge_grid_strong", + public static final Holder ENLARGE_GRID_STRONG = REGISTER.registerHolder("enlarge_grid_strong", () -> new Potion("enlarge_grid_strong", new MobEffectInstance(HexMobEffects.ENLARGE_GRID, 1800, 1))); - public static final Potion SHRINK_GRID = make("shrink_grid", + public static final Holder SHRINK_GRID = REGISTER.registerHolder("shrink_grid", () -> new Potion("shrink_grid", new MobEffectInstance(HexMobEffects.SHRINK_GRID, 3600))); - public static final Potion SHRINK_GRID_LONG = make("shrink_grid_long", + public static final Holder SHRINK_GRID_LONG = REGISTER.registerHolder("shrink_grid_long", () -> new Potion("shrink_grid_long", new MobEffectInstance(HexMobEffects.SHRINK_GRID, 9600))); - public static final Potion SHRINK_GRID_STRONG = make("shrink_grid_strong", + public static final Holder SHRINK_GRID_STRONG = REGISTER.registerHolder("shrink_grid_strong", () -> new Potion("shrink_grid_strong", new MobEffectInstance(HexMobEffects.SHRINK_GRID, 1800, 1))); - public static void registerPotions(BiConsumer r) { - for (var e : POTIONS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - public static void addRecipes(PotionBrewing.Builder builder, RegistryAccess registryAccess) { - var potionRegistry = registryAccess.registryOrThrow(Registries.POTION); + public static void addRecipes(PotionBrewing.Builder builder) { + builder.addMix(Potions.AWKWARD, HexItems.AMETHYST_DUST, ENLARGE_GRID); + builder.addMix(ENLARGE_GRID, Items.REDSTONE, ENLARGE_GRID_LONG); + builder.addMix(ENLARGE_GRID, Items.GLOWSTONE_DUST, ENLARGE_GRID_STRONG); - builder.addMix(Potions.AWKWARD, HexItems.AMETHYST_DUST, potionRegistry.wrapAsHolder(ENLARGE_GRID)); - builder.addMix(potionRegistry.wrapAsHolder(ENLARGE_GRID), Items.REDSTONE, potionRegistry.wrapAsHolder(ENLARGE_GRID_LONG)); - builder.addMix(potionRegistry.wrapAsHolder(ENLARGE_GRID), Items.GLOWSTONE_DUST, potionRegistry.wrapAsHolder(ENLARGE_GRID_STRONG)); - - builder.addMix(potionRegistry.wrapAsHolder(ENLARGE_GRID), Items.FERMENTED_SPIDER_EYE, potionRegistry.wrapAsHolder(SHRINK_GRID)); - builder.addMix(potionRegistry.wrapAsHolder(ENLARGE_GRID_LONG), Items.FERMENTED_SPIDER_EYE, potionRegistry.wrapAsHolder(SHRINK_GRID_LONG)); - builder.addMix(potionRegistry.wrapAsHolder(ENLARGE_GRID_STRONG), Items.FERMENTED_SPIDER_EYE, potionRegistry.wrapAsHolder(SHRINK_GRID_STRONG)); - - builder.addMix(potionRegistry.wrapAsHolder(SHRINK_GRID), Items.REDSTONE, potionRegistry.wrapAsHolder(SHRINK_GRID_LONG)); - builder.addMix(potionRegistry.wrapAsHolder(SHRINK_GRID), Items.GLOWSTONE_DUST, potionRegistry.wrapAsHolder(SHRINK_GRID_STRONG)); - } + builder.addMix(ENLARGE_GRID, Items.FERMENTED_SPIDER_EYE, SHRINK_GRID); + builder.addMix(ENLARGE_GRID_LONG, Items.FERMENTED_SPIDER_EYE, SHRINK_GRID_LONG); + builder.addMix(ENLARGE_GRID_STRONG, Items.FERMENTED_SPIDER_EYE, SHRINK_GRID_STRONG); - private static T make(String id, T potion) { - var old = POTIONS.put(modLoc(id), potion); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return potion; + builder.addMix(SHRINK_GRID, Items.REDSTONE, SHRINK_GRID_LONG); + builder.addMix(SHRINK_GRID, Items.GLOWSTONE_DUST, SHRINK_GRID_STRONG); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 9fefd5fce9..d0bfd3ada4 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -216,7 +216,7 @@ object FabricHexInitializer : ModInitializer { .add(HexAttributes.MEDIA_CONSUMPTION_MODIFIER) .add(HexAttributes.SENTINEL_RADIUS)) HexMobEffects.register() - HexPotions.registerPotions(bind(BuiltInRegistries.POTION)) + HexPotions.register() HexDataComponents.registerDataComponents(bind(BuiltInRegistries.DATA_COMPONENT_TYPE)) HexRecipeStuffRegistry.registerSerializers(bind(BuiltInRegistries.RECIPE_SERIALIZER)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index ae0fdf5dd0..de3082206f 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -132,7 +132,7 @@ private static void initRegistry() { // Testing out new registration system HexAttributes.register(); HexMobEffects.register(); - bind(Registries.POTION, HexPotions::registerPotions); + HexPotions.register(); bind(Registries.PARTICLE_TYPE, HexParticles::registerParticles); bind(Registries.TRIGGER_TYPE, HexAdvancementTriggers::registerTriggers); @@ -273,7 +273,7 @@ private static void initListeners() { }); evBus.addListener(RegisterBrewingRecipesEvent.class, ev -> { - HexPotions.addRecipes(ev.getBuilder(), ev.getRegistryAccess()); + HexPotions.addRecipes(ev.getBuilder()); }); // Caps are cardinal components on farbc From e0f955b651ecfed36f98f21379eb8b2f0faea5e4 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sat, 25 Jul 2026 19:00:52 +0200 Subject: [PATCH 02/25] fix: add back potion recipes to fabric --- .../java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index d0bfd3ada4..f728c3c506 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -58,6 +58,7 @@ import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents import net.fabricmc.fabric.api.loot.v3.LootTableEvents import net.fabricmc.fabric.api.`object`.builder.v1.entity.FabricDefaultAttributeRegistry import net.fabricmc.fabric.api.recipe.v1.ingredient.CustomIngredientSerializer +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder import net.fabricmc.fabric.api.registry.FlammableBlockRegistry import net.minecraft.commands.synchronization.SingletonArgumentInfo import net.minecraft.core.Registry @@ -148,6 +149,8 @@ object FabricHexInitializer : ModInitializer { FabricHexLootModJankery.lootLoad(key, builder::withPool) } + FabricBrewingRecipeRegistryBuilder.BUILD.register { builder -> HexPotions.addRecipes(builder) } + EntityElytraEvents.CUSTOM.register { target, _ -> if (target is Player) { val altiora = IXplatAbstractions.INSTANCE.getAltiora(target) From 44be385bec08ad028bac9d6df669f1678e0cd91a Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sat, 25 Jul 2026 19:25:54 +0200 Subject: [PATCH 03/25] chore: migrate HexSounds to IXplatRegister --- .../hexcasting/client/gui/GuiSpellcasting.kt | 8 +- .../client/sound/GridSoundInstance.kt | 2 +- .../blocks/akashic/BlockAkashicBookshelf.java | 4 +- .../impetuses/BlockEntityLookingImpetus.java | 2 +- .../impetuses/BlockRedstoneImpetus.java | 4 +- .../casting/actions/akashic/OpAkashicWrite.kt | 2 +- .../common/entities/EntityWallScroll.java | 2 +- .../common/items/ItemLoreFragment.java | 2 +- .../hexcasting/common/items/ItemStaff.java | 2 +- .../items/magic/ItemCreativeUnlocker.java | 2 +- .../common/items/storage/ItemAbacus.java | 2 +- .../hexcasting/common/lib/HexSounds.java | 105 ++++++++++-------- .../common/lib/hex/HexEvalSounds.java | 10 +- .../common/msgs/MsgNewSpellPatternS2C.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 16 files changed, 83 insertions(+), 70 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt b/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt index 3d549ec2ec..c9442708a9 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt +++ b/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt @@ -110,7 +110,7 @@ class GuiSpellcasting constructor( override fun init() { val minecraft = Minecraft.getInstance() val soundManager = minecraft.soundManager - soundManager.stop(HexSounds.CASTING_AMBIANCE.location, null) + soundManager.stop(HexSounds.CASTING_AMBIANCE.value().location, null) val player = minecraft.player if (player != null) { this.ambianceSoundInstance = GridSoundInstance(player) @@ -152,7 +152,7 @@ class GuiSpellcasting constructor( this.drawState = PatternDrawState.JustStarted(coord) Minecraft.getInstance().soundManager.play( SimpleSoundInstance( - HexSounds.START_PATTERN, + HexSounds.START_PATTERN.value(), SoundSource.PLAYERS, 0.25f, 1f, @@ -240,7 +240,7 @@ class GuiSpellcasting constructor( if (playSound) { Minecraft.getInstance().soundManager.play( SimpleSoundInstance( - HexSounds.ADD_TO_PATTERN, + HexSounds.ADD_TO_PATTERN.value(), SoundSource.PLAYERS, 0.25f, 1f + (Math.random().toFloat() - 0.5f) * 0.1f, @@ -340,7 +340,7 @@ class GuiSpellcasting constructor( } fun closeForReal() { - Minecraft.getInstance().soundManager.stop(HexSounds.CASTING_AMBIANCE.location, null) + Minecraft.getInstance().soundManager.stop(HexSounds.CASTING_AMBIANCE.value().location, null) super.onClose() } diff --git a/Common/src/main/java/at/petrak/hexcasting/client/sound/GridSoundInstance.kt b/Common/src/main/java/at/petrak/hexcasting/client/sound/GridSoundInstance.kt index 027fa63cb3..66e075b366 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/sound/GridSoundInstance.kt +++ b/Common/src/main/java/at/petrak/hexcasting/client/sound/GridSoundInstance.kt @@ -12,7 +12,7 @@ import net.minecraft.world.phys.Vec3 class GridSoundInstance(val player: Player) : AbstractTickableSoundInstance( - HexSounds.CASTING_AMBIANCE, + HexSounds.CASTING_AMBIANCE.value(), SoundSource.PLAYERS, SoundInstance.createUnseededRandom() ) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockAkashicBookshelf.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockAkashicBookshelf.java index 8598c47f33..d4f1b1749b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockAkashicBookshelf.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockAkashicBookshelf.java @@ -47,7 +47,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (!level.isClientSide()) { scroll.writeDatum(stack, new PatternIota(shelf.getPattern())); } - level.playSound(player, pos, HexSounds.SCROLL_SCRIBBLE, SoundSource.BLOCKS, 1f, 1f); + level.playSound(player, pos, HexSounds.SCROLL_SCRIBBLE.value(), SoundSource.BLOCKS, 1f, 1f); return ItemInteractionResult.sidedSuccess(level.isClientSide); } } @@ -65,7 +65,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP shelf.clearIota(); } - level.playSound(player, pos, HexSounds.SCROLL_SCRIBBLE, SoundSource.BLOCKS, + level.playSound(player, pos, HexSounds.SCROLL_SCRIBBLE.value(), SoundSource.BLOCKS, 1f, 0.8f); return InteractionResult.sidedSuccess(level.isClientSide); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java index 6355f37fc5..6432508173 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java @@ -77,7 +77,7 @@ public static void serverTick(Level level, BlockPos pos, BlockState bs, BlockEnt var t = (float) newLook / MAX_LOOK_AMOUNT; var pitch = Mth.lerp(t, 0.5f, 1.2f); var volume = Mth.lerp(t, 0.2f, 1.2f); - level.playSound(null, pos, HexSounds.IMPETUS_LOOK_TICK, SoundSource.BLOCKS, volume, pitch); + level.playSound(null, pos, HexSounds.IMPETUS_LOOK_TICK.value(), SoundSource.BLOCKS, volume, pitch); } self.lookAmount = newLook; self.setChanged(); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java index 3f745ef20d..140c09e820 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java @@ -63,7 +63,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (usedStack.isEmpty() && player.isDiscrete()) { tile.clearPlayer(); tile.sync(); - level.playSound(null, pos, HexSounds.IMPETUS_REDSTONE_CLEAR, SoundSource.BLOCKS, 1f, 1f); + level.playSound(null, pos, HexSounds.IMPETUS_REDSTONE_CLEAR.value(), SoundSource.BLOCKS, 1f, 1f); return ItemInteractionResult.sidedSuccess(level.isClientSide); } else { var datumContainer = IXplatAbstractions.INSTANCE.findDataHolder(usedStack); @@ -76,7 +76,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev tile.setPlayer(iotaPlayer.getGameProfile(), entity.getUUID()); tile.sync(); - level.playSound(null, pos, HexSounds.IMPETUS_REDSTONE_DING, + level.playSound(null, pos, HexSounds.IMPETUS_REDSTONE_DING.value(), SoundSource.BLOCKS, 1f, 1f); return ItemInteractionResult.sidedSuccess(level.isClientSide); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/akashic/OpAkashicWrite.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/akashic/OpAkashicWrite.kt index a52a7ac624..794fdd1cf0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/akashic/OpAkashicWrite.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/akashic/OpAkashicWrite.kt @@ -56,7 +56,7 @@ object OpAkashicWrite : SpellAction { record.addNewDatum(recordPos, env.world, key, datum) env.world.playSound( - null, recordPos, HexSounds.SCROLL_SCRIBBLE, SoundSource.BLOCKS, + null, recordPos, HexSounds.SCROLL_SCRIBBLE.value(), SoundSource.BLOCKS, 1f, 0.8f ) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java index e762b93276..cc416f5fe9 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java @@ -115,7 +115,7 @@ public InteractionResult interactAt(Player pPlayer, Vec3 pVec, InteractionHand p } this.setShowsStrokeOrder(true); - pPlayer.level().playSound(pPlayer, this, HexSounds.SCROLL_DUST, SoundSource.PLAYERS, 1f, 1f); + pPlayer.level().playSound(pPlayer, this, HexSounds.SCROLL_DUST.value(), SoundSource.PLAYERS, 1f, 1f); if (pPlayer.level() instanceof ServerLevel slevel) { IXplatAbstractions.INSTANCE.sendPacketNear(this.position(), 32.0, slevel, diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLoreFragment.java b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLoreFragment.java index d6e4051a7c..650d8db2a6 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLoreFragment.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLoreFragment.java @@ -41,7 +41,7 @@ public ItemLoreFragment(Properties properties) { @Override public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { - player.playSound(HexSounds.READ_LORE_FRAGMENT, 1f, 1f); + player.playSound(HexSounds.READ_LORE_FRAGMENT.value(), 1f, 1f); var handStack = player.getItemInHand(usedHand); if (!(player instanceof ServerPlayer splayer)) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemStaff.java b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemStaff.java index 6d4a86b6c7..7ad1f4b5af 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemStaff.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemStaff.java @@ -34,7 +34,7 @@ public InteractionResultHolder use(Level world, Player player, Intera } if (player.isShiftKeyDown()) { if (world.isClientSide()) { - player.playSound(HexSounds.STAFF_RESET, 1f, 1f); + player.playSound(HexSounds.STAFF_RESET.value(), 1f, 1f); } else if (player instanceof ServerPlayer serverPlayer) { IXplatAbstractions.INSTANCE.clearCastingData(serverPlayer); var packet = new MsgClearSpiralPatternsS2C(player.getUUID()); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java index d2dd256c6a..2cae9eb3e2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java @@ -194,7 +194,7 @@ public InteractionResult useOn(UseOnContext context) { BlockEntity be = context.getLevel().getBlockEntity(context.getClickedPos()); if (be instanceof BlockEntityAbstractImpetus impetus) { impetus.setInfiniteMedia(); - context.getLevel().playSound(null, context.getClickedPos(), HexSounds.SPELL_CIRCLE_FIND_BLOCK, + context.getLevel().playSound(null, context.getClickedPos(), HexSounds.SPELL_CIRCLE_FIND_BLOCK.value(), SoundSource.PLAYERS, 1f, 1f); return InteractionResult.sidedSuccess(context.getLevel().isClientSide()); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java index 2cb2105c42..7b3bd40780 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java @@ -50,7 +50,7 @@ public InteractionResultHolder use(Level world, Player player, Intera Double oldNum = stack.get(HexDataComponents.ABACUS_VALUE); stack.remove(HexDataComponents.ABACUS_VALUE); - player.playSound(HexSounds.ABACUS_SHAKE, 1f, 1f); + player.playSound(HexSounds.ABACUS_SHAKE.value(), 1f, 1f); var key = "hexcasting.tooltip.abacus.reset"; if (oldNum != null && oldNum == 69) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java index 268eaedd19..2474799400 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java @@ -1,5 +1,9 @@ package at.petrak.hexcasting.common.lib; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; @@ -10,52 +14,61 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexSounds { - public static void registerSounds(BiConsumer r) { - for (var e : SOUNDS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - private static final Map SOUNDS = new LinkedHashMap<>(); - - public static final SoundEvent START_PATTERN = sound("casting.pattern.start"); - public static final SoundEvent ADD_TO_PATTERN = sound("casting.pattern.add_segment"); - - public static final SoundEvent CASTING_AMBIANCE = sound("casting.ambiance"); - - public static final SoundEvent CAST_NORMAL = sound("casting.cast.normal"); - public static final SoundEvent CAST_SPELL = sound("casting.cast.spell"); - public static final SoundEvent CAST_HERMES = sound("casting.cast.hermes"); - public static final SoundEvent CAST_THOTH = sound("casting.cast.thoth"); - public static final SoundEvent CAST_FAILURE = sound("casting.cast.fail"); - - public static final SoundEvent ABACUS = sound("abacus"); - public static final SoundEvent ABACUS_SHAKE = sound("abacus.shake"); - - public static final SoundEvent STAFF_RESET = sound("staff.reset"); + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.SOUND_EVENT); - public static final SoundEvent SPELL_CIRCLE_FIND_BLOCK = sound("spellcircle.find_block"); - public static final SoundEvent SPELL_CIRCLE_FAIL = sound("spellcircle.fail"); - - public static final SoundEvent SCROLL_DUST = sound("scroll.dust"); - public static final SoundEvent SCROLL_SCRIBBLE = sound("scroll.scribble"); - - public static final SoundEvent IMPETUS_LOOK_TICK = sound("impetus.fletcher.tick"); - public static final SoundEvent IMPETUS_REDSTONE_DING = sound("impetus.redstone.register"); - public static final SoundEvent IMPETUS_REDSTONE_CLEAR = sound("impetus.redstone.clear"); - - public static final SoundEvent READ_LORE_FRAGMENT = sound("lore_fragment.read"); - - public static final SoundEvent FLIGHT_AMBIENCE = sound("flight.ambience"); - public static final SoundEvent FLIGHT_FINISH = sound("flight.finish"); - - private static SoundEvent sound(String name) { - var id = modLoc(name); - var sound = SoundEvent.createVariableRangeEvent(id); - var old = SOUNDS.put(id, sound); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return sound; + public static void register() { + REGISTER.registerAll(); } + + public static final Holder START_PATTERN = REGISTER.registerHolder("casting.pattern.start", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.pattern.start"))); + public static final Holder ADD_TO_PATTERN = REGISTER.registerHolder("casting.pattern.add_segment", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.pattern.add_segment"))); + + public static final Holder CASTING_AMBIANCE = REGISTER.registerHolder("casting.ambiance", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.ambiance"))); + + public static final Holder CAST_NORMAL = REGISTER.registerHolder("casting.cast.normal", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.cast.normal"))); + public static final Holder CAST_SPELL = REGISTER.registerHolder("casting.cast.spell", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.cast.spell"))); + public static final Holder CAST_HERMES = REGISTER.registerHolder("casting.cast.hermes", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.cast.hermes"))); + public static final Holder CAST_THOTH = REGISTER.registerHolder("casting.cast.thoth", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.cast.thoth"))); + public static final Holder CAST_FAILURE = REGISTER.registerHolder("casting.cast.fail", () -> + SoundEvent.createVariableRangeEvent(modLoc("casting.cast.fail"))); + + public static final Holder ABACUS = REGISTER.registerHolder("abacus", () -> + SoundEvent.createVariableRangeEvent(modLoc("abacus"))); + public static final Holder ABACUS_SHAKE = REGISTER.registerHolder("abacus.shake", () -> + SoundEvent.createVariableRangeEvent(modLoc("abacus.shake"))); + + public static final Holder STAFF_RESET = REGISTER.registerHolder("staff.reset", () -> + SoundEvent.createVariableRangeEvent(modLoc("staff.reset"))); + + public static final Holder SPELL_CIRCLE_FIND_BLOCK = REGISTER.registerHolder("spellcircle.find_block", () -> + SoundEvent.createVariableRangeEvent(modLoc("spellcircle.find_block"))); + public static final Holder SPELL_CIRCLE_FAIL = REGISTER.registerHolder("spellcircle.fail", () -> + SoundEvent.createVariableRangeEvent(modLoc("spellcircle.fail"))); + + public static final Holder SCROLL_DUST = REGISTER.registerHolder("scroll.dust", () -> + SoundEvent.createVariableRangeEvent(modLoc("scroll.dust"))); + public static final Holder SCROLL_SCRIBBLE = REGISTER.registerHolder("scroll.scribble", () -> + SoundEvent.createVariableRangeEvent(modLoc("scroll.scribble"))); + + public static final Holder IMPETUS_LOOK_TICK = REGISTER.registerHolder("impetus.fletcher.tick", () -> + SoundEvent.createVariableRangeEvent(modLoc("impetus.fletcher.tick"))); + public static final Holder IMPETUS_REDSTONE_DING = REGISTER.registerHolder("impetus.redstone.register", () -> + SoundEvent.createVariableRangeEvent(modLoc("impetus.redstone.register"))); + public static final Holder IMPETUS_REDSTONE_CLEAR = REGISTER.registerHolder("impetus.redstone.clear", () -> + SoundEvent.createVariableRangeEvent(modLoc("impetus.redstone.clear"))); + + public static final Holder READ_LORE_FRAGMENT = REGISTER.registerHolder("lore_fragment.read", () -> + SoundEvent.createVariableRangeEvent(modLoc("lore_fragment.read"))); + + public static final Holder FLIGHT_AMBIENCE = REGISTER.registerHolder("flight.ambience", () -> + SoundEvent.createVariableRangeEvent(modLoc("flight.ambience"))); + public static final Holder FLIGHT_FINISH = REGISTER.registerHolder("flight.finish", () -> + SoundEvent.createVariableRangeEvent(modLoc("flight.finish"))); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java index fe322da59c..f44e4f64d2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java @@ -17,19 +17,19 @@ public class HexEvalSounds { public static final EvalSound NOTHING = make("nothing", new EvalSound(null, Integer.MIN_VALUE)); public static final EvalSound NORMAL_EXECUTE = make("operator", - new EvalSound(HexSounds.CAST_NORMAL, 0)); + new EvalSound(HexSounds.CAST_NORMAL.value(), 0)); public static final EvalSound SPELL = make("spell", - new EvalSound(HexSounds.CAST_SPELL, 1000)); + new EvalSound(HexSounds.CAST_SPELL.value(), 1000)); public static final EvalSound HERMES = make("hermes", - new EvalSound(HexSounds.CAST_HERMES, 2000)); + new EvalSound(HexSounds.CAST_HERMES.value(), 2000)); public static final EvalSound THOTH = make("thoth", - new EvalSound(HexSounds.CAST_THOTH, 2500)); + new EvalSound(HexSounds.CAST_THOTH.value(), 2500)); public static final EvalSound MUTE = make("mute", new EvalSound(null, 3000)); public static final EvalSound MISHAP = make("mishap", - new EvalSound(HexSounds.CAST_FAILURE, 4000)); + new EvalSound(HexSounds.CAST_FAILURE.value(), 4000)); private static EvalSound make(String name, EvalSound sound) { var old = SOUNDS.put(modLoc(name), sound); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgNewSpellPatternS2C.java b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgNewSpellPatternS2C.java index 2241aafb85..1fb10a6c9b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgNewSpellPatternS2C.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgNewSpellPatternS2C.java @@ -38,7 +38,7 @@ public static void handle(MsgNewSpellPatternS2C self) { var mc = Minecraft.getInstance(); if (self.info().isStackClear()) { // don't pay attention to the screen, so it also stops when we die - mc.getSoundManager().stop(HexSounds.CASTING_AMBIANCE.getLocation(), null); + mc.getSoundManager().stop(HexSounds.CASTING_AMBIANCE.value().getLocation(), null); } var screen = Minecraft.getInstance().screen; if (screen instanceof GuiSpellcasting spellGui) { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index f728c3c506..bd6f1c2bca 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -199,7 +199,7 @@ object FabricHexInitializer : ModInitializer { HexCreativeTabs.registerCreativeTabs(bind(BuiltInRegistries.CREATIVE_MODE_TAB)) - HexSounds.registerSounds(bind(BuiltInRegistries.SOUND_EVENT)) + HexSounds.register() HexBlocks.registerBlocks(bind(BuiltInRegistries.BLOCK)) HexBlocks.registerBlockItems(boundForItem) HexBlockEntities.registerTiles(bind(BuiltInRegistries.BLOCK_ENTITY_TYPE)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index de3082206f..f0e060a621 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -113,7 +113,7 @@ public static void initRegistries() { } private static void initRegistry() { - bind(Registries.SOUND_EVENT, HexSounds::registerSounds); + HexSounds.register(); HexBlockSetTypes.registerBlocks(BlockSetType::register); From cf3e8a2366f7fd6be94b19ebace885ef8ef5e38f Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 19:42:45 +0200 Subject: [PATCH 04/25] chore: migrate HexBlocks and HexItems to IXplatRegister --- .../circles/BlockEntityAbstractImpetus.java | 8 +- .../api/casting/circles/ICircleComponent.java | 4 +- .../eval/sideeffects/OperatorSideEffect.kt | 2 +- .../hexcasting/api/casting/mishaps/Mishap.kt | 2 +- .../hexcasting/api/pigment/FrozenPigment.java | 4 +- .../client/RegisterClientStuff.java | 106 +++--- .../client/ShiftScrollListener.java | 6 +- .../client/render/ScryingLensOverlays.java | 2 +- .../common/blocks/behavior/HexComposting.java | 6 +- .../blocks/behavior/HexStrippables.java | 12 +- .../common/blocks/circles/BlockSlate.java | 4 +- .../casting/actions/spells/OpConjureBlock.kt | 2 +- .../common/casting/actions/spells/OpFlight.kt | 8 +- .../casting/actions/spells/OpMakeBattery.kt | 2 +- .../command/ListPerWorldPatternsCommand.java | 4 +- .../common/entities/EntityWallScroll.java | 2 +- .../common/items/ItemJewelerHammer.java | 2 +- .../items/magic/ItemCreativeUnlocker.java | 2 +- .../common/lib/HexBlockEntities.java | 28 +- .../hexcasting/common/lib/HexBlocks.java | 187 +++++----- .../common/lib/HexCreativeTabs.java | 4 +- .../common/lib/HexFeatureConfigs.java | 8 +- .../hexcasting/common/lib/HexItems.java | 167 +++++---- .../hexcasting/common/lib/HexPotions.java | 2 +- .../hexcasting/common/lib/hex/HexActions.java | 6 +- .../common/msgs/MsgShiftScrollC2S.java | 6 +- .../common/recipe/SealSpellbookRecipe.java | 6 +- .../common/recipe/SealThingsRecipe.java | 6 +- .../hexcasting/datagen/HexAdvancements.java | 12 +- .../hexcasting/datagen/HexLootTables.java | 66 ++-- .../datagen/recipe/HexplatRecipes.java | 332 +++++++++--------- .../datagen/tag/HexBlockTagProvider.java | 126 +++---- .../datagen/tag/HexItemTagProvider.java | 20 +- .../interop/inline/InlineHexClient.java | 8 +- .../interop/inline/InlinePatternData.java | 4 +- .../patchouli/BrainsweepProcessor.java | 6 +- .../utils/PhialRecipeStackBuilder.java | 18 +- .../mixin/MixinWanderingTrader.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 83 ++--- .../fabric/interop/emi/EmiEdifyRecipe.java | 16 +- .../interop/trinkets/LensTrinketRenderer.java | 2 +- .../interop/trinkets/TrinketsInterop.java | 2 +- .../fabric/loot/FabricHexLootModJankery.java | 6 +- .../fabric/mixin/FabricItemEntityMixin.java | 2 +- .../fabric/storage/FabricImpetusStorage.kt | 2 +- .../fabric/xplat/FabricClientXplatImpl.java | 3 +- .../hexcasting/forge/ForgeHexInitializer.java | 10 +- .../forge/cap/ForgeCapabilityHandler.java | 8 +- .../xplat/HexBlockStatesAndModels.java | 128 +++---- .../forge/datagen/xplat/HexItemModels.java | 130 +++---- .../forge/interop/curios/CuriosRenderers.java | 2 +- .../interop/jei/EdifyRecipeCategory.java | 16 +- .../forge/interop/jei/HexJEIPlugin.java | 24 +- .../forge/loot/ForgeHexCypherLootMod.java | 2 +- .../forge/loot/ForgeHexLoreLootMod.java | 2 +- .../forge/loot/ForgeHexScrollLootMod.java | 2 +- 56 files changed, 806 insertions(+), 826 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/BlockEntityAbstractImpetus.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/BlockEntityAbstractImpetus.java index 41cee60cbc..3b010a4c84 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/BlockEntityAbstractImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/BlockEntityAbstractImpetus.java @@ -213,7 +213,7 @@ public long extractMediaFromInsertedItem(ItemStack stack, boolean simulate) { } public void insertMedia(ItemStack stack) { - if (getMedia() >= 0 && !stack.isEmpty() && stack.getItem() == HexItems.CREATIVE_UNLOCKER) { + if (getMedia() >= 0 && !stack.isEmpty() && stack.getItem() == HexItems.CREATIVE_UNLOCKER.get()) { setInfiniteMedia(); stack.shrink(1); } else { @@ -299,12 +299,12 @@ public void applyScryingLensOverlay(List> lines, BlockState state, BlockPos pos, Player observer, Level world, Direction hitFace) { if (world.getBlockEntity(pos) instanceof BlockEntityAbstractImpetus beai) { if (beai.getMedia() < 0) { - lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST), ItemCreativeUnlocker.infiniteMedia(world))); + lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST.get()), ItemCreativeUnlocker.infiniteMedia(world))); } else { var dustCount = (float) beai.getMedia() / (float) MediaConstants.DUST_UNIT; var dustCmp = Component.translatable("hexcasting.tooltip.media", DUST_AMOUNT.format(dustCount)); - lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST), dustCmp)); + lines.add(new Pair<>(new ItemStack(HexItems.AMETHYST_DUST.get()), dustCmp)); } if (this.displayMsg != null && this.displayItem != null) { @@ -414,7 +414,7 @@ public boolean canPlaceItem(int index, ItemStack stack) { return false; } - if (stack.is(HexItems.CREATIVE_UNLOCKER)) { + if (stack.is(HexItems.CREATIVE_UNLOCKER.get())) { return true; } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/ICircleComponent.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/ICircleComponent.java index d5010047b9..dd9be1fd4f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/ICircleComponent.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/circles/ICircleComponent.java @@ -104,7 +104,7 @@ static void sfx(BlockPos pos, BlockState bs, Level world, BlockEntityAbstractImp activator = impetus.getExecutionState().caster; if (impetus == null || impetus.getExecutionState() == null) - colorizer = new FrozenPigment(new ItemStack(HexItems.DYE_PIGMENTS.get(DyeColor.RED)), activator); + colorizer = new FrozenPigment(new ItemStack(HexItems.DYE_PIGMENTS.get(DyeColor.RED).get()), activator); else colorizer = impetus.getPigment(); @@ -123,7 +123,7 @@ static void sfx(BlockPos pos, BlockState bs, Level world, BlockEntityAbstractImp var spray = new ParticleSpray(vpos, vecOutDir.scale(success ? 1.0 : 1.5), success ? 0.1 : 0.5, Mth.PI / (success ? 4 : 2), success ? 30 : 100); spray.sprayParticles(serverLevel, - success ? colorizer : new FrozenPigment(new ItemStack(HexItems.DYE_PIGMENTS.get(DyeColor.RED)), + success ? colorizer : new FrozenPigment(new ItemStack(HexItems.DYE_PIGMENTS.get(DyeColor.RED).get()), activator)); } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/sideeffects/OperatorSideEffect.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/sideeffects/OperatorSideEffect.kt index 48d497f87b..ee62a59575 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/sideeffects/OperatorSideEffect.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/sideeffects/OperatorSideEffect.kt @@ -61,7 +61,7 @@ sealed class OperatorSideEffect { spray.sprayParticles( harness.env.world, FrozenPigment( - ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!), + ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!.get()), Util.NIL_UUID ) ) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/Mishap.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/Mishap.kt index f32f921d19..8f54186022 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/Mishap.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/Mishap.kt @@ -57,7 +57,7 @@ abstract class Mishap : RuntimeException() { protected fun dyeColor(color: DyeColor): FrozenPigment = FrozenPigment( - ItemStack(HexItems.DYE_PIGMENTS[color]!!), + ItemStack(HexItems.DYE_PIGMENTS[color]!!.get()), Util.NIL_UUID ) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/pigment/FrozenPigment.java b/Common/src/main/java/at/petrak/hexcasting/api/pigment/FrozenPigment.java index f1ec83210e..643bb80a9b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/pigment/FrozenPigment.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/pigment/FrozenPigment.java @@ -21,9 +21,9 @@ */ public record FrozenPigment(ItemStack item, UUID owner) { public static final Supplier DEFAULT = - () -> new FrozenPigment(new ItemStack(HexItems.DEFAULT_PIGMENT), Util.NIL_UUID); + () -> new FrozenPigment(new ItemStack(HexItems.DEFAULT_PIGMENT.get()), Util.NIL_UUID); public static final Supplier ANCIENT = - () -> new FrozenPigment(new ItemStack(HexItems.ANCIENT_PIGMENT), Util.NIL_UUID); + () -> new FrozenPigment(new ItemStack(HexItems.ANCIENT_PIGMENT.get()), Util.NIL_UUID); public static Codec CODEC = RecordCodecBuilder.create(inst -> inst.group( diff --git a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java index 9d6fbb257e..bc70652a48 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java @@ -49,25 +49,25 @@ public class RegisterClientStuff { public static Map> QUENCHED_ALLAY_VARIANTS = new HashMap<>(); private static final Map QUENCHED_ALLAY_TYPES = Map.of( - HexBlocks.QUENCHED_ALLAY, false, - HexBlocks.QUENCHED_ALLAY_TILES, true, - HexBlocks.QUENCHED_ALLAY_BRICKS, true, - HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL, true); + HexBlocks.QUENCHED_ALLAY.get(), false, + HexBlocks.QUENCHED_ALLAY_TILES.get(), true, + HexBlocks.QUENCHED_ALLAY_BRICKS.get(), true, + HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get(), true); public static void init() { - registerSealableDataHolderOverrides(HexItems.FOCUS, + registerSealableDataHolderOverrides(HexItems.FOCUS.get(), stack -> stack.has(HexDataComponents.IOTA_HOLDER_IOTA), ItemFocus::isSealed); - registerSealableDataHolderOverrides(HexItems.SPELLBOOK, - stack -> HexItems.SPELLBOOK.readIota(stack) != null, + registerSealableDataHolderOverrides(HexItems.SPELLBOOK.get(), + stack -> HexItems.SPELLBOOK.get().readIota(stack) != null, ItemSpellbook::isSealed); - registerVariantOverrides(HexItems.FOCUS, HexItems.FOCUS::getVariant); - registerVariantOverrides(HexItems.SPELLBOOK, HexItems.SPELLBOOK::getVariant); - registerVariantOverrides(HexItems.ANCIENT_CYPHER, HexItems.ANCIENT_CYPHER::getVariant); - registerVariantOverrides(HexItems.CYPHER, HexItems.CYPHER::getVariant); - registerVariantOverrides(HexItems.TRINKET, HexItems.TRINKET::getVariant); - registerVariantOverrides(HexItems.ARTIFACT, HexItems.ARTIFACT::getVariant); - IClientXplatAbstractions.INSTANCE.registerItemProperty(HexItems.THOUGHT_KNOT, ItemThoughtKnot.WRITTEN_PRED, + registerVariantOverrides(HexItems.FOCUS.get(), HexItems.FOCUS.get()::getVariant); + registerVariantOverrides(HexItems.SPELLBOOK.get(), HexItems.SPELLBOOK.get()::getVariant); + registerVariantOverrides(HexItems.ANCIENT_CYPHER.get(), HexItems.ANCIENT_CYPHER.get()::getVariant); + registerVariantOverrides(HexItems.CYPHER.get(), HexItems.CYPHER.get()::getVariant); + registerVariantOverrides(HexItems.TRINKET.get(), HexItems.TRINKET.get()::getVariant); + registerVariantOverrides(HexItems.ARTIFACT.get(), HexItems.ARTIFACT.get()::getVariant); + IClientXplatAbstractions.INSTANCE.registerItemProperty(HexItems.THOUGHT_KNOT.get(), ItemThoughtKnot.WRITTEN_PRED, (stack, level, holder, holderID) -> { if (stack.has(HexDataComponents.IOTA_HOLDER_IOTA)) { return 1; @@ -76,61 +76,61 @@ public static void init() { } }); - registerPackagedSpellOverrides(HexItems.ANCIENT_CYPHER); - registerPackagedSpellOverrides(HexItems.CYPHER); - registerPackagedSpellOverrides(HexItems.TRINKET); - registerPackagedSpellOverrides(HexItems.ARTIFACT); + registerPackagedSpellOverrides(HexItems.ANCIENT_CYPHER.get()); + registerPackagedSpellOverrides(HexItems.CYPHER.get()); + registerPackagedSpellOverrides(HexItems.TRINKET.get()); + registerPackagedSpellOverrides(HexItems.ARTIFACT.get()); var x = IClientXplatAbstractions.INSTANCE; - x.registerItemProperty(HexItems.BATTERY, ItemMediaBattery.MEDIA_PREDICATE, + x.registerItemProperty(HexItems.BATTERY.get(), ItemMediaBattery.MEDIA_PREDICATE, (stack, level, holder, holderID) -> { var item = (MediaHolderItem) stack.getItem(); return item.getMediaFullness(stack); }); - x.registerItemProperty(HexItems.BATTERY, ItemMediaBattery.MAX_MEDIA_PREDICATE, + x.registerItemProperty(HexItems.BATTERY.get(), ItemMediaBattery.MAX_MEDIA_PREDICATE, (stack, level, holder, holderID) -> { var item = (ItemMediaBattery) stack.getItem(); var max = item.getMaxMedia(stack); return 1.049658f * (float) Math.log((float) max / MediaConstants.CRYSTAL_UNIT + 9.06152f) - 2.1436f; }); - registerScrollOverrides(HexItems.SCROLL_SMOL); - registerScrollOverrides(HexItems.SCROLL_MEDIUM); - registerScrollOverrides(HexItems.SCROLL_LARGE); + registerScrollOverrides(HexItems.SCROLL_SMOL.get()); + registerScrollOverrides(HexItems.SCROLL_MEDIUM.get()); + registerScrollOverrides(HexItems.SCROLL_LARGE.get()); - x.registerItemProperty(HexItems.SLATE, ItemSlate.WRITTEN_PRED, + x.registerItemProperty(HexItems.SLATE.get(), ItemSlate.WRITTEN_PRED, (stack, level, holder, holderID) -> ItemSlate.hasPattern(stack) ? 1f : 0f); - registerWandOverrides(HexItems.STAFF_OAK); - registerWandOverrides(HexItems.STAFF_BIRCH); - registerWandOverrides(HexItems.STAFF_SPRUCE); - registerWandOverrides(HexItems.STAFF_JUNGLE); - registerWandOverrides(HexItems.STAFF_DARK_OAK); - registerWandOverrides(HexItems.STAFF_ACACIA); - registerWandOverrides(HexItems.STAFF_EDIFIED); + registerWandOverrides(HexItems.STAFF_OAK.get()); + registerWandOverrides(HexItems.STAFF_BIRCH.get()); + registerWandOverrides(HexItems.STAFF_SPRUCE.get()); + registerWandOverrides(HexItems.STAFF_JUNGLE.get()); + registerWandOverrides(HexItems.STAFF_DARK_OAK.get()); + registerWandOverrides(HexItems.STAFF_ACACIA.get()); + registerWandOverrides(HexItems.STAFF_EDIFIED.get()); // purposely skip quenched - registerWandOverrides(HexItems.STAFF_MINDSPLICE); + registerWandOverrides(HexItems.STAFF_MINDSPLICE.get()); - registerGaslight4(HexItems.STAFF_QUENCHED); - registerGaslight4(HexBlocks.QUENCHED_ALLAY.asItem()); - registerGaslight4(HexBlocks.QUENCHED_ALLAY_TILES.asItem()); - registerGaslight4(HexBlocks.QUENCHED_ALLAY_BRICKS.asItem()); - registerGaslight4(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.asItem()); - registerGaslight4(HexItems.QUENCHED_SHARD); + registerGaslight4(HexItems.STAFF_QUENCHED.get()); + registerGaslight4(HexBlocks.QUENCHED_ALLAY.get().asItem()); + registerGaslight4(HexBlocks.QUENCHED_ALLAY_TILES.get().asItem()); + registerGaslight4(HexBlocks.QUENCHED_ALLAY_BRICKS.get().asItem()); + registerGaslight4(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get().asItem()); + registerGaslight4(HexItems.QUENCHED_SHARD.get()); - x.setRenderLayer(HexBlocks.CONJURED_LIGHT, RenderType.cutout()); - x.setRenderLayer(HexBlocks.CONJURED_BLOCK, RenderType.cutout()); - x.setRenderLayer(HexBlocks.EDIFIED_DOOR, RenderType.cutout()); - x.setRenderLayer(HexBlocks.EDIFIED_TRAPDOOR, RenderType.cutout()); - x.setRenderLayer(HexBlocks.AKASHIC_BOOKSHELF, RenderType.cutout()); - x.setRenderLayer(HexBlocks.SCONCE, RenderType.cutout()); + x.setRenderLayer(HexBlocks.CONJURED_LIGHT.get(), RenderType.cutout()); + x.setRenderLayer(HexBlocks.CONJURED_BLOCK.get(), RenderType.cutout()); + x.setRenderLayer(HexBlocks.EDIFIED_DOOR.get(), RenderType.cutout()); + x.setRenderLayer(HexBlocks.EDIFIED_TRAPDOOR.get(), RenderType.cutout()); + x.setRenderLayer(HexBlocks.AKASHIC_BOOKSHELF.get(), RenderType.cutout()); + x.setRenderLayer(HexBlocks.SCONCE.get(), RenderType.cutout()); - x.setRenderLayer(HexBlocks.AMETHYST_EDIFIED_LEAVES, RenderType.cutoutMipped()); - x.setRenderLayer(HexBlocks.AVENTURINE_EDIFIED_LEAVES, RenderType.cutoutMipped()); - x.setRenderLayer(HexBlocks.CITRINE_EDIFIED_LEAVES, RenderType.cutoutMipped()); + x.setRenderLayer(HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), RenderType.cutoutMipped()); + x.setRenderLayer(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), RenderType.cutoutMipped()); + x.setRenderLayer(HexBlocks.CITRINE_EDIFIED_LEAVES.get(), RenderType.cutoutMipped()); - x.setRenderLayer(HexBlocks.AKASHIC_RECORD, RenderType.translucent()); - x.setRenderLayer(HexBlocks.QUENCHED_ALLAY, RenderType.translucent()); + x.setRenderLayer(HexBlocks.AKASHIC_RECORD.get(), RenderType.translucent()); + x.setRenderLayer(HexBlocks.QUENCHED_ALLAY.get(), RenderType.translucent()); x.registerEntityRenderer(HexEntities.WALL_SCROLL, WallScrollRenderer::new); @@ -153,9 +153,9 @@ private static void registerGaslight4(Item item) { public static void registerColorProviders(BiConsumer itemColorRegistry, BiConsumer blockColorRegistry) { - itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.FOCUS::getColor), HexItems.FOCUS); - itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.SPELLBOOK::getColor), HexItems.SPELLBOOK); - itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.THOUGHT_KNOT::getColor), HexItems.THOUGHT_KNOT); + itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.FOCUS.get()::getColor), HexItems.FOCUS.get()); + itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.SPELLBOOK.get()::getColor), HexItems.SPELLBOOK.get()); + itemColorRegistry.accept(makeIotaStorageColorizer(HexItems.THOUGHT_KNOT.get()::getColor), HexItems.THOUGHT_KNOT.get()); blockColorRegistry.accept((bs, level, pos, idx) -> { if (!bs.getValue(BlockAkashicBookshelf.HAS_BOOKS) || level == null || pos == null) { @@ -171,7 +171,7 @@ public static void registerColorProviders(BiConsumer itemColorR return 0xff_ffffff; } return iota.getType().color(); - }, HexBlocks.AKASHIC_BOOKSHELF); + }, HexBlocks.AKASHIC_BOOKSHELF.get()); } /** diff --git a/Common/src/main/java/at/petrak/hexcasting/client/ShiftScrollListener.java b/Common/src/main/java/at/petrak/hexcasting/client/ShiftScrollListener.java index ed42647c40..50805f572b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/ShiftScrollListener.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/ShiftScrollListener.java @@ -59,15 +59,15 @@ public static void clientTickEnd() { } private static boolean IsScrollableItem(Item item) { - return item == HexItems.SPELLBOOK || item == HexItems.ABACUS; + return item == HexItems.SPELLBOOK.get() || item == HexItems.ABACUS.get(); } private static double getScrollModifier(Item item, boolean allowInverting) { if (!allowInverting) return 1; - if (item == HexItems.SPELLBOOK) { + if (item == HexItems.SPELLBOOK.get()) { return HexConfig.client().invertSpellbookScrollDirection() ? -1 : 1; - } else if (item == HexItems.ABACUS) { + } else if (item == HexItems.ABACUS.get()) { return HexConfig.client().invertAbacusScrollDirection() ? -1 : 1; } else { return 1; diff --git a/Common/src/main/java/at/petrak/hexcasting/client/render/ScryingLensOverlays.java b/Common/src/main/java/at/petrak/hexcasting/client/render/ScryingLensOverlays.java index ac05912be2..7a9de750cb 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/render/ScryingLensOverlays.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/render/ScryingLensOverlays.java @@ -57,7 +57,7 @@ public static void addScryingLensStuff() { .withStyle(color(noteColor)))); }); - ScryingLensOverlayRegistry.addDisplayer(HexBlocks.AKASHIC_BOOKSHELF, + ScryingLensOverlayRegistry.addDisplayer(HexBlocks.AKASHIC_BOOKSHELF.get(), (lines, state, pos, observer, world, direction) -> { if (world.getBlockEntity(pos) instanceof BlockEntityAkashicBookshelf tile) { var iota = tile.getIota(); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexComposting.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexComposting.java index f072ea51cb..8f4b63d387 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexComposting.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexComposting.java @@ -9,9 +9,9 @@ public final class HexComposting { public static void setup() { - compost(HexBlocks.AMETHYST_EDIFIED_LEAVES, 0.3F); - compost(HexBlocks.AVENTURINE_EDIFIED_LEAVES, 0.3F); - compost(HexBlocks.CITRINE_EDIFIED_LEAVES, 0.3F); + compost(HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), 0.3F); + compost(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), 0.3F); + compost(HexBlocks.CITRINE_EDIFIED_LEAVES.get(), 0.3F); } private static void compost(ItemLike itemLike, float chance) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexStrippables.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexStrippables.java index d36254090d..63f059f0f0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexStrippables.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/behavior/HexStrippables.java @@ -10,11 +10,11 @@ public class HexStrippables { public static final Map STRIPPABLES = new HashMap<>(); public static void init() { - STRIPPABLES.put(HexBlocks.EDIFIED_LOG, HexBlocks.STRIPPED_EDIFIED_LOG); - STRIPPABLES.put(HexBlocks.EDIFIED_LOG_AMETHYST, HexBlocks.STRIPPED_EDIFIED_LOG); - STRIPPABLES.put(HexBlocks.EDIFIED_LOG_AVENTURINE, HexBlocks.STRIPPED_EDIFIED_LOG); - STRIPPABLES.put(HexBlocks.EDIFIED_LOG_CITRINE, HexBlocks.STRIPPED_EDIFIED_LOG); - STRIPPABLES.put(HexBlocks.EDIFIED_LOG_PURPLE, HexBlocks.STRIPPED_EDIFIED_LOG); - STRIPPABLES.put(HexBlocks.EDIFIED_WOOD, HexBlocks.STRIPPED_EDIFIED_WOOD); + STRIPPABLES.put(HexBlocks.EDIFIED_LOG.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get()); + STRIPPABLES.put(HexBlocks.EDIFIED_LOG_AMETHYST.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get()); + STRIPPABLES.put(HexBlocks.EDIFIED_LOG_AVENTURINE.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get()); + STRIPPABLES.put(HexBlocks.EDIFIED_LOG_CITRINE.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get()); + STRIPPABLES.put(HexBlocks.EDIFIED_LOG_PURPLE.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get()); + STRIPPABLES.put(HexBlocks.EDIFIED_WOOD.get(), HexBlocks.STRIPPED_EDIFIED_WOOD.get()); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockSlate.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockSlate.java index d1a15c9fd5..57934564ac 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockSlate.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockSlate.java @@ -118,9 +118,9 @@ public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGett Player player) { BlockEntity be = level.getBlockEntity(pos); if (be instanceof BlockEntitySlate slate) { - ItemStack stack = new ItemStack(HexItems.SLATE); + ItemStack stack = new ItemStack(HexItems.SLATE.get()); if (slate.pattern != null) { - HexItems.SLATE.writeDatum(stack, new PatternIota(slate.pattern)); + HexItems.SLATE.get().writeDatum(stack, new PatternIota(slate.pattern)); } return stack; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpConjureBlock.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpConjureBlock.kt index b77d7dd06a..1928074d73 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpConjureBlock.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpConjureBlock.kt @@ -50,7 +50,7 @@ class OpConjureBlock(val light: Boolean) : SpellAction { val worldState = env.world.getBlockState(pos) if (worldState.canBeReplaced(placeContext)) { - val block = if (this.light) HexBlocks.CONJURED_LIGHT else HexBlocks.CONJURED_BLOCK + val block = if (this.light) HexBlocks.CONJURED_LIGHT.get() else HexBlocks.CONJURED_BLOCK.get() if (!IXplatAbstractions.INSTANCE.isPlacingAllowed(env.world, pos, ItemStack(block), env.castingEntity as? ServerPlayer)) return diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpFlight.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpFlight.kt index 25884c448b..4b95f0b81c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpFlight.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpFlight.kt @@ -111,8 +111,8 @@ class OpFlight(val type: Type) : SpellAction { } player.level().playSound(null, player.x, player.y, player.z, HexSounds.FLIGHT_FINISH, SoundSource.PLAYERS, 2f, 1f) val superDangerSpray = ParticleSpray(player.position(), Vec3(0.0, 1.0, 0.0), Math.PI, 0.4, count = 20) - superDangerSpray.sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!), Util.NIL_UUID)) - superDangerSpray.sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.BLACK]!!), Util.NIL_UUID)) + superDangerSpray.sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!.get()), Util.NIL_UUID)) + superDangerSpray.sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.BLACK]!!.get()), Util.NIL_UUID)) } else { if (!player.abilities.mayfly) { player.abilities.mayfly = true @@ -144,9 +144,9 @@ class OpFlight(val type: Type) : SpellAction { .sprayParticles(player.serverLevel(), color) val dangerSpray = ParticleSpray(player.position(), Vec3(0.0, 1.0, 0.0), 0.3, Math.PI * 0.75, count = 0) dangerSpray.copy(count = oneDangerParticleCount) - .sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.BLACK]!!), Util.NIL_UUID)) + .sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.BLACK]!!.get()), Util.NIL_UUID)) dangerSpray.copy(count = oneDangerParticleCount) - .sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!), Util.NIL_UUID)) + .sprayParticles(player.serverLevel(), FrozenPigment(ItemStack(HexItems.DYE_PIGMENTS[DyeColor.RED]!!.get()), Util.NIL_UUID)) if (player.level().random.nextFloat() < 0.02) player.level().playSound(null, player.x, player.y, player.z, HexSounds.FLIGHT_AMBIENCE, SoundSource.PLAYERS, 0.2f, 1f) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpMakeBattery.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpMakeBattery.kt index c21d8f5578..ba0cd91f04 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpMakeBattery.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpMakeBattery.kt @@ -73,7 +73,7 @@ object OpMakeBattery : SpellAction { val entityStack = itemEntity.item.copy() val mediamount = extractMedia(entityStack, drainForBatteries = true) if (mediamount > 0) { - if (!env.replaceItem({ it == handStack }, ItemMediaHolder.withMedia(ItemStack(HexItems.BATTERY), mediamount, mediamount), hand)) + if (!env.replaceItem({ it == handStack }, ItemMediaHolder.withMedia(ItemStack(HexItems.BATTERY.get()), mediamount, mediamount), hand)) return } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java b/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java index a342330cd1..801497e5e2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java @@ -97,7 +97,7 @@ private static int giveAll(CommandSourceStack source, Collection t var startDir = found.getSecond().canonicalStartDir(); var pat = HexPattern.fromAnglesUnchecked(signature, startDir); - var stack = new ItemStack(HexItems.SCROLL_LARGE); + var stack = new ItemStack(HexItems.SCROLL_LARGE.get()); stack.set(HexDataComponents.ACTION, key); stack.set(HexDataComponents.PATTERN, pat); @@ -128,7 +128,7 @@ private static int giveAll(CommandSourceStack source, Collection t private static int giveOne(CommandSourceStack source, Collection targets, ResourceKey actionKey, HexPattern pat) { if (!targets.isEmpty()) { - var stack = new ItemStack(HexItems.SCROLL_LARGE); + var stack = new ItemStack(HexItems.SCROLL_LARGE.get()); stack.set(HexDataComponents.ACTION, actionKey); stack.set(HexDataComponents.PATTERN, pat); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java index cc416f5fe9..41f3ed58de 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java @@ -109,7 +109,7 @@ public void dropItem(@Nullable Entity pBrokenEntity) { @Override public InteractionResult interactAt(Player pPlayer, Vec3 pVec, InteractionHand pHand) { var handStack = pPlayer.getItemInHand(pHand); - if (handStack.is(HexItems.AMETHYST_DUST) && !this.getShowsStrokeOrder()) { + if (handStack.is(HexItems.AMETHYST_DUST.get()) && !this.getShowsStrokeOrder()) { if (!pPlayer.getAbilities().instabuild) { handStack.shrink(1); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemJewelerHammer.java b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemJewelerHammer.java index 713c7e3c73..9950f83f26 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemJewelerHammer.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemJewelerHammer.java @@ -16,6 +16,6 @@ public ItemJewelerHammer(Tier tier, Properties props) { public static boolean shouldFailToBreak(Player player, BlockState state, BlockPos pos) { ItemStack stack = player.getMainHandItem(); - return stack.is(HexItems.JEWELER_HAMMER) && Block.isShapeFullBlock(state.getShape(player.level(), pos)); + return stack.is(HexItems.JEWELER_HAMMER.get()) && Block.isShapeFullBlock(state.getShape(player.level(), pos)); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java index 2cae9eb3e2..6f9c77d733 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemCreativeUnlocker.java @@ -73,7 +73,7 @@ public static boolean isDebug(ItemStack stack) { } public static boolean isDebug(ItemStack stack, String flag) { - if (!stack.is(HexItems.CREATIVE_UNLOCKER) || !stack.has(DataComponents.CUSTOM_NAME)) { + if (!stack.is(HexItems.CREATIVE_UNLOCKER.get()) || !stack.has(DataComponents.CUSTOM_NAME)) { return false; } var keywords = Arrays.asList(stack.getHoverName().getString().toLowerCase(Locale.ROOT).split(" ")); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java index e29584155a..e711e3a097 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java @@ -33,46 +33,46 @@ public static void registerTiles(BiConsumer, ResourceLocation public static final BlockEntityType CONJURED_TILE = register( "conjured", - BlockEntityConjured::new, HexBlocks.CONJURED_LIGHT, HexBlocks.CONJURED_BLOCK); + BlockEntityConjured::new, HexBlocks.CONJURED_LIGHT.get(), HexBlocks.CONJURED_BLOCK.get()); public static final BlockEntityType AKASHIC_BOOKSHELF_TILE = register( "akashic_bookshelf", - BlockEntityAkashicBookshelf::new, HexBlocks.AKASHIC_BOOKSHELF); + BlockEntityAkashicBookshelf::new, HexBlocks.AKASHIC_BOOKSHELF.get()); public static final BlockEntityType IMPETUS_REDSTONE_TILE = register( "impetus/redstone", - BlockEntityRedstoneImpetus::new, HexBlocks.IMPETUS_REDSTONE); + BlockEntityRedstoneImpetus::new, HexBlocks.IMPETUS_REDSTONE.get()); public static final BlockEntityType IMPETUS_LOOK_TILE = register( "impetus/look", - BlockEntityLookingImpetus::new, HexBlocks.IMPETUS_LOOK); + BlockEntityLookingImpetus::new, HexBlocks.IMPETUS_LOOK.get()); public static final BlockEntityType IMPETUS_RIGHTCLICK_TILE = register( "impetus/rightclick", - BlockEntityRightClickImpetus::new, HexBlocks.IMPETUS_RIGHTCLICK); + BlockEntityRightClickImpetus::new, HexBlocks.IMPETUS_RIGHTCLICK.get()); public static final BlockEntityType SLATE_TILE = register( "slate", - BlockEntitySlate::new, HexBlocks.SLATE); + BlockEntitySlate::new, HexBlocks.SLATE.get()); public static final BlockEntityType QUENCHED_ALLAY_TILE = register( - "quenched_allay", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY), HexBlocks.QUENCHED_ALLAY); + "quenched_allay", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY.get()), HexBlocks.QUENCHED_ALLAY.get()); public static final BlockEntityType QUENCHED_ALLAY_TILES_TILE = register( - "quenched_allay_tiles", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_TILES), HexBlocks.QUENCHED_ALLAY_TILES); + "quenched_allay_tiles", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_TILES.get()), HexBlocks.QUENCHED_ALLAY_TILES.get()); public static final BlockEntityType QUENCHED_ALLAY_BRICKS_TILE = register( - "quenched_allay_bricks", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS), HexBlocks.QUENCHED_ALLAY_BRICKS); + "quenched_allay_bricks", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS.get()), HexBlocks.QUENCHED_ALLAY_BRICKS.get()); public static final BlockEntityType QUENCHED_ALLAY_BRICKS_SMALL_TILE = register( - "quenched_allay_bricks_small", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL); + "quenched_allay_bricks_small", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()); public static BlockEntityType typeForQuenchedAllay(BlockQuenchedAllay block) { - if (block == HexBlocks.QUENCHED_ALLAY) + if (block == HexBlocks.QUENCHED_ALLAY.get()) return QUENCHED_ALLAY_TILE; - if (block == HexBlocks.QUENCHED_ALLAY_TILES) + if (block == HexBlocks.QUENCHED_ALLAY_TILES.get()) return QUENCHED_ALLAY_TILES_TILE; - if (block == HexBlocks.QUENCHED_ALLAY_BRICKS) + if (block == HexBlocks.QUENCHED_ALLAY_BRICKS.get()) return QUENCHED_ALLAY_BRICKS_TILE; - if (block == HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL) + if (block == HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()) return QUENCHED_ALLAY_BRICKS_SMALL_TILE; return null; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java index 08e13caea3..aa9745c301 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java @@ -17,7 +17,12 @@ import at.petrak.hexcasting.common.blocks.circles.impetuses.BlockRedstoneImpetus; import at.petrak.hexcasting.common.blocks.circles.impetuses.BlockRightClickImpetus; import at.petrak.hexcasting.common.blocks.decoration.*; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ColorRGBA; import net.minecraft.world.entity.EntityType; @@ -37,32 +42,29 @@ import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexBlocks { - public static void registerBlocks(BiConsumer r) { - for (var e : BLOCKS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + private static final IXplatRegister REGISTER_BLOCKS = IXplatAbstractions.INSTANCE.createRegistar(Registries.BLOCK); + private static final IXplatRegister REGISTER_BLOCK_ITEMS = IXplatAbstractions.INSTANCE.createRegistar(Registries.ITEM); + private static final Map, List>> BLOCK_TABS = new LinkedHashMap<>(); + + public static void registerBlocks() { + REGISTER_BLOCKS.registerAll(); } - public static void registerBlockItems(BiConsumer r) { - for (var e : BLOCK_ITEMS.entrySet()) { - r.accept(new BlockItem(e.getValue().getFirst(), e.getValue().getSecond()), e.getKey()); - } + public static void registerBlockItems() { + REGISTER_BLOCK_ITEMS.registerAll(); } - public static void registerBlockCreativeTab(Consumer r, CreativeModeTab tab) { - for (var block : BLOCK_TABS.getOrDefault(tab, List.of())) { - r.accept(block); + public static void registerBlocksForCreativeTab(ResourceKey tabKey, CreativeModeTab.Output r) { + for (Supplier blockSupplier : BLOCK_TABS.getOrDefault(tabKey, List.of())) { + r.accept(blockSupplier.get()); } } - private static final Map BLOCKS = new LinkedHashMap<>(); - private static final Map> BLOCK_ITEMS = new LinkedHashMap<>(); - private static final Map> BLOCK_TABS = new LinkedHashMap<>(); - private static BlockBehaviour.Properties slateish() { return BlockBehaviour.Properties @@ -125,7 +127,7 @@ private static BlockBehaviour.Properties quenched() { } // we give these faux items so Patchi can have an item to view with - public static final Block CONJURED_LIGHT = blockItem("conjured_light", + public static final Supplier CONJURED_LIGHT = blockItem("conjured_light", () -> new BlockConjuredLight( BlockBehaviour.Properties.of() .mapColor(MapColor.NONE) @@ -139,7 +141,7 @@ private static BlockBehaviour.Properties quenched() { .isSuffocating(HexBlocks::never) .isViewBlocking(HexBlocks::never)), new Item.Properties()); - public static final Block CONJURED_BLOCK = blockItem("conjured_block", + public static final Supplier CONJURED_BLOCK = blockItem("conjured_block", () -> new BlockConjured( BlockBehaviour.Properties.of() .mapColor(MapColor.NONE) @@ -154,92 +156,92 @@ private static BlockBehaviour.Properties quenched() { new Item.Properties()); // "no" item because we add it manually - public static final BlockSlate SLATE = blockNoItem("slate", + public static final Supplier SLATE = blockNoItem("slate", () -> new BlockSlate(slateish() .pushReaction(PushReaction.DESTROY))); - public static final BlockEmptyImpetus IMPETUS_EMPTY = blockItem("impetus/empty", + public static final Supplier IMPETUS_EMPTY = blockItem("impetus/empty", () -> new BlockEmptyImpetus(slateish() .pushReaction(PushReaction.BLOCK))); - public static final BlockRightClickImpetus IMPETUS_RIGHTCLICK = blockItem("impetus/rightclick", + public static final Supplier IMPETUS_RIGHTCLICK = blockItem("impetus/rightclick", () -> new BlockRightClickImpetus(slateish() .pushReaction(PushReaction.BLOCK) .lightLevel(bs -> bs.getValue(BlockAbstractImpetus.ENERGIZED) ? 15 : 0)), HexItems.props().rarity(Rarity.UNCOMMON)); - public static final BlockLookingImpetus IMPETUS_LOOK = blockItem("impetus/look", + public static final Supplier IMPETUS_LOOK = blockItem("impetus/look", () -> new BlockLookingImpetus(slateish() .pushReaction(PushReaction.BLOCK) .lightLevel(bs -> bs.getValue(BlockAbstractImpetus.ENERGIZED) ? 15 : 0)), HexItems.props().rarity(Rarity.UNCOMMON)); - public static final BlockRedstoneImpetus IMPETUS_REDSTONE = blockItem("impetus/redstone", + public static final Supplier IMPETUS_REDSTONE = blockItem("impetus/redstone", () -> new BlockRedstoneImpetus(slateish() .pushReaction(PushReaction.BLOCK) .lightLevel(bs -> bs.getValue(BlockAbstractImpetus.ENERGIZED) ? 15 : 0)), HexItems.props().rarity(Rarity.UNCOMMON)); - public static final BlockEmptyDirectrix EMPTY_DIRECTRIX = blockItem("directrix/empty", + public static final Supplier EMPTY_DIRECTRIX = blockItem("directrix/empty", () -> new BlockEmptyDirectrix(slateish() .pushReaction(PushReaction.BLOCK))); - public static final BlockRedstoneDirectrix DIRECTRIX_REDSTONE = blockItem("directrix/redstone", + public static final Supplier DIRECTRIX_REDSTONE = blockItem("directrix/redstone", () -> new BlockRedstoneDirectrix(slateish() .pushReaction(PushReaction.BLOCK)), HexItems.props().rarity(Rarity.UNCOMMON)); - public static final BlockBooleanDirectrix DIRECTRIX_BOOLEAN = blockItem("directrix/boolean", + public static final Supplier DIRECTRIX_BOOLEAN = blockItem("directrix/boolean", () -> new BlockBooleanDirectrix(slateish() .pushReaction(PushReaction.BLOCK)), HexItems.props().rarity(Rarity.UNCOMMON)); - public static final BlockAkashicRecord AKASHIC_RECORD = blockItem("akashic_record", + public static final Supplier AKASHIC_RECORD = blockItem("akashic_record", () -> new BlockAkashicRecord(akashicWoodyHard().lightLevel(bs -> 15)), HexItems.props().rarity(Rarity.RARE) ); - public static final BlockAkashicBookshelf AKASHIC_BOOKSHELF = blockItem("akashic_bookshelf", + public static final Supplier AKASHIC_BOOKSHELF = blockItem("akashic_bookshelf", () -> new BlockAkashicBookshelf(akashicWoodyHard() .lightLevel(bs -> (bs.getValue(BlockAkashicBookshelf.HAS_BOOKS)) ? 4 : 0))); - public static final BlockAkashicLigature AKASHIC_LIGATURE = blockItem("akashic_ligature", + public static final Supplier AKASHIC_LIGATURE = blockItem("akashic_ligature", () -> new BlockAkashicLigature(akashicWoodyHard().lightLevel(bs -> 4))); - public static final BlockQuenchedAllay QUENCHED_ALLAY = blockItem("quenched_allay", + public static final Supplier QUENCHED_ALLAY = blockItem("quenched_allay", () -> new BlockQuenchedAllay(quenched()), HexItems.props().rarity(Rarity.UNCOMMON) ); // Decoration?! - public static final BlockQuenchedAllay QUENCHED_ALLAY_TILES = blockItem("quenched_allay_tiles", new BlockQuenchedAllay(quenched())); - public static final BlockQuenchedAllay QUENCHED_ALLAY_BRICKS = blockItem("quenched_allay_bricks", new BlockQuenchedAllay(quenched())); - public static final BlockQuenchedAllay QUENCHED_ALLAY_BRICKS_SMALL = blockItem("quenched_allay_bricks_small", new BlockQuenchedAllay(quenched())); - public static final Block SLATE_BLOCK = blockItem("slate_block", new Block(slateish().strength(2f, 4f))); - public static final Block SLATE_TILES = blockItem("slate_tiles", new Block(slateish().strength(2f, 4f))); - public static final Block SLATE_BRICKS = blockItem("slate_bricks", new Block(slateish().strength(2f, 4f))); - public static final Block SLATE_BRICKS_SMALL = blockItem("slate_bricks_small", new Block(slateish().strength(2f, 4f))); - public static final RotatedPillarBlock SLATE_PILLAR = blockItem("slate_pillar", new RotatedPillarBlock(slateish().strength(2f, 4f))); - public static final ColoredFallingBlock AMETHYST_DUST_BLOCK = blockItem("amethyst_dust_block", + public static final Supplier QUENCHED_ALLAY_TILES = blockItem("quenched_allay_tiles", () -> new BlockQuenchedAllay(quenched())); + public static final Supplier QUENCHED_ALLAY_BRICKS = blockItem("quenched_allay_bricks", () -> new BlockQuenchedAllay(quenched())); + public static final Supplier QUENCHED_ALLAY_BRICKS_SMALL = blockItem("quenched_allay_bricks_small", () -> new BlockQuenchedAllay(quenched())); + public static final Supplier SLATE_BLOCK = blockItem("slate_block", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_TILES = blockItem("slate_tiles", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_BRICKS = blockItem("slate_bricks", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_BRICKS_SMALL = blockItem("slate_bricks_small", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_PILLAR = blockItem("slate_pillar", () -> new RotatedPillarBlock(slateish().strength(2f, 4f))); + public static final Supplier AMETHYST_DUST_BLOCK = blockItem("amethyst_dust_block", () -> new ColoredFallingBlock(new ColorRGBA(0xb38ef3_ff), BlockBehaviour.Properties.ofFullCopy(Blocks.SAND).mapColor(MapColor.COLOR_PURPLE) .strength(0.5f).sound(SoundType.SAND))); - public static final AmethystBlock AMETHYST_TILES = blockItem("amethyst_tiles", + public static final Supplier AMETHYST_TILES = blockItem("amethyst_tiles", () -> new AmethystBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); - public static final AmethystBlock AMETHYST_BRICKS = blockItem("amethyst_bricks", + public static final Supplier AMETHYST_BRICKS = blockItem("amethyst_bricks", () -> new AmethystBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); - public static final AmethystBlock AMETHYST_BRICKS_SMALL = blockItem("amethyst_bricks_small", + public static final Supplier AMETHYST_BRICKS_SMALL = blockItem("amethyst_bricks_small", () -> new AmethystBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); - public static final BlockAmethystDirectional AMETHYST_PILLAR = blockItem("amethyst_pillar", + public static final Supplier AMETHYST_PILLAR = blockItem("amethyst_pillar", () -> new BlockAmethystDirectional(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); - public static final Block SLATE_AMETHYST_TILES = blockItem("slate_amethyst_tiles", new Block(slateish().strength(2f, 4f))); - public static final Block SLATE_AMETHYST_BRICKS = blockItem("slate_amethyst_bricks", new Block(slateish().strength(2f, 4f))); - public static final Block SLATE_AMETHYST_BRICKS_SMALL = blockItem("slate_amethyst_bricks_small", new Block(slateish().strength(2f, 4f))); - public static final RotatedPillarBlock SLATE_AMETHYST_PILLAR = blockItem("slate_amethyst_pillar", + public static final Supplier SLATE_AMETHYST_TILES = blockItem("slate_amethyst_tiles", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_AMETHYST_BRICKS = blockItem("slate_amethyst_bricks", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_AMETHYST_BRICKS_SMALL = blockItem("slate_amethyst_bricks_small", () -> new Block(slateish().strength(2f, 4f))); + public static final Supplier SLATE_AMETHYST_PILLAR = blockItem("slate_amethyst_pillar", () -> new RotatedPillarBlock(slateish().strength(2f, 4f))); - public static final Block SCROLL_PAPER = blockItem("scroll_paper", + public static final Supplier SCROLL_PAPER = blockItem("scroll_paper", () -> new BlockFlammable(papery(MapColor.TERRACOTTA_WHITE), 100, 60)); - public static final Block ANCIENT_SCROLL_PAPER = blockItem("ancient_scroll_paper", + public static final Supplier ANCIENT_SCROLL_PAPER = blockItem("ancient_scroll_paper", () -> new BlockFlammable(papery(MapColor.TERRACOTTA_ORANGE), 100, 60)); - public static final Block SCROLL_PAPER_LANTERN = blockItem("scroll_paper_lantern", + public static final Supplier SCROLL_PAPER_LANTERN = blockItem("scroll_paper_lantern", () -> new BlockFlammable(papery(MapColor.TERRACOTTA_WHITE).lightLevel($ -> 15), 100, 60)); - public static final Block ANCIENT_SCROLL_PAPER_LANTERN = blockItem( - "ancient_scroll_paper_lantern", + public static final Supplier ANCIENT_SCROLL_PAPER_LANTERN = blockItem( + "ancient_scroll_paper_lantern", () -> new BlockFlammable(papery(MapColor.TERRACOTTA_ORANGE).lightLevel($ -> 12), 100, 60)); - public static final BlockSconce SCONCE = blockItem("amethyst_sconce", + public static final Supplier SCONCE = blockItem("amethyst_sconce", () -> new BlockSconce(BlockBehaviour.Properties.of() .mapColor(MapColor.COLOR_PURPLE) .sound(SoundType.AMETHYST) @@ -247,85 +249,78 @@ private static BlockBehaviour.Properties quenched() { .lightLevel($ -> 15)) ); - public static final BlockAkashicLog EDIFIED_LOG = blockItem("edified_log", + public static final Supplier EDIFIED_LOG = blockItem("edified_log", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog EDIFIED_LOG_AMETHYST = blockItem("edified_log_amethyst", + public static final Supplier EDIFIED_LOG_AMETHYST = blockItem("edified_log_amethyst", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog EDIFIED_LOG_AVENTURINE = blockItem("edified_log_aventurine", + public static final Supplier EDIFIED_LOG_AVENTURINE = blockItem("edified_log_aventurine", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog EDIFIED_LOG_CITRINE = blockItem("edified_log_citrine", + public static final Supplier EDIFIED_LOG_CITRINE = blockItem("edified_log_citrine", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog EDIFIED_LOG_PURPLE = blockItem("edified_log_purple", + public static final Supplier EDIFIED_LOG_PURPLE = blockItem("edified_log_purple", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog STRIPPED_EDIFIED_LOG = blockItem("stripped_edified_log", + public static final Supplier STRIPPED_EDIFIED_LOG = blockItem("stripped_edified_log", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog EDIFIED_WOOD = blockItem("edified_wood", + public static final Supplier EDIFIED_WOOD = blockItem("edified_wood", () -> new BlockAkashicLog(edifiedWoody())); - public static final BlockAkashicLog STRIPPED_EDIFIED_WOOD = blockItem("stripped_edified_wood", + public static final Supplier STRIPPED_EDIFIED_WOOD = blockItem("stripped_edified_wood", () -> new BlockAkashicLog(edifiedWoody())); - public static final Block EDIFIED_PLANKS = blockItem("edified_planks", + public static final Supplier EDIFIED_PLANKS = blockItem("edified_planks", () -> new BlockFlammable(edifiedWoody(), 20, 5)); - public static final Block EDIFIED_PANEL = blockItem("edified_panel", + public static final Supplier EDIFIED_PANEL = blockItem("edified_panel", () -> new BlockFlammable(edifiedWoody(), 20, 5)); - public static final Block EDIFIED_TILE = blockItem("edified_tile", + public static final Supplier EDIFIED_TILE = blockItem("edified_tile", () -> new BlockFlammable(edifiedWoody(), 20, 5)); - public static final DoorBlock EDIFIED_DOOR = blockItem("edified_door", + public static final Supplier EDIFIED_DOOR = blockItem("edified_door", () -> new BlockHexDoor(edifiedWoody().noOcclusion())); - public static final TrapDoorBlock EDIFIED_TRAPDOOR = blockItem("edified_trapdoor", + public static final Supplier EDIFIED_TRAPDOOR = blockItem("edified_trapdoor", () -> new BlockHexTrapdoor(edifiedWoody().noOcclusion())); - public static final StairBlock EDIFIED_STAIRS = blockItem("edified_stairs", - new BlockHexStairs(EDIFIED_PLANKS.defaultBlockState(), edifiedWoody().noOcclusion())); + public static final Supplier EDIFIED_STAIRS = blockItem("edified_stairs", () -> + new BlockHexStairs(EDIFIED_PLANKS.get().defaultBlockState(), edifiedWoody().noOcclusion())); - public static final FenceBlock EDIFIED_FENCE = blockItem("edified_fence", + public static final Supplier EDIFIED_FENCE = blockItem("edified_fence", () -> new BlockHexFence(edifiedWoody().noOcclusion())); - public static final FenceGateBlock EDIFIED_FENCE_GATE = blockItem("edified_fence_gate", + public static final Supplier EDIFIED_FENCE_GATE = blockItem("edified_fence_gate", () -> new BlockHexFenceGate(edifiedWoody().noOcclusion())); - public static final SlabBlock EDIFIED_SLAB = blockItem("edified_slab", + public static final Supplier EDIFIED_SLAB = blockItem("edified_slab", () -> new BlockHexSlab(edifiedWoody().noOcclusion())); - public static final ButtonBlock EDIFIED_BUTTON = blockItem("edified_button", + public static final Supplier EDIFIED_BUTTON = blockItem("edified_button", () -> new BlockHexWoodButton(edifiedWoody().noOcclusion().noCollission())); - public static final PressurePlateBlock EDIFIED_PRESSURE_PLATE = blockItem("edified_pressure_plate", + public static final Supplier EDIFIED_PRESSURE_PLATE = blockItem("edified_pressure_plate", () -> new BlockHexPressurePlate(edifiedWoody().noOcclusion().noCollission())); - public static final BlockAkashicLeaves AMETHYST_EDIFIED_LEAVES = blockItem("amethyst_edified_leaves", + public static final Supplier AMETHYST_EDIFIED_LEAVES = blockItem("amethyst_edified_leaves", () -> new BlockAkashicLeaves(leaves(MapColor.COLOR_PURPLE))); - public static final BlockAkashicLeaves AVENTURINE_EDIFIED_LEAVES = blockItem("aventurine_edified_leaves", + public static final Supplier AVENTURINE_EDIFIED_LEAVES = blockItem("aventurine_edified_leaves", () -> new BlockAkashicLeaves(leaves(MapColor.COLOR_BLUE))); - public static final BlockAkashicLeaves CITRINE_EDIFIED_LEAVES = blockItem("citrine_edified_leaves", + public static final Supplier CITRINE_EDIFIED_LEAVES = blockItem("citrine_edified_leaves", () -> new BlockAkashicLeaves(leaves(MapColor.COLOR_YELLOW))); private static boolean never(Object... args) { return false; } - private static T blockNoItem(String name, T block) { - var old = BLOCKS.put(modLoc(name), block); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return block; + private static Supplier blockNoItem(String name, Supplier blockSupplier) { + return REGISTER_BLOCKS.register(name, blockSupplier); } - private static T blockItem(String name, T block) { - return blockItem(name, block, HexItems.props(), HexCreativeTabs.HEX); + private static Supplier blockItem(String name, Supplier blockSupplier) { + return blockItem(name, blockSupplier, HexItems.props(), HexCreativeTabs.HEX_KEY); } - private static T blockItem(String name, T block, @Nullable CreativeModeTab tab) { - return blockItem(name, block, HexItems.props(), tab); + private static Supplier blockItem(String name, Supplier blockSupplier, @Nullable ResourceKey tabKey) { + return blockItem(name, blockSupplier, HexItems.props(), tabKey); } - private static T blockItem(String name, T block, Item.Properties props) { - return blockItem(name, block, props, HexCreativeTabs.HEX); + private static Supplier blockItem(String name, Supplier blockSupplier, Item.Properties props) { + return blockItem(name, blockSupplier, props, HexCreativeTabs.HEX_KEY); } - private static T blockItem(String name, T block, Item.Properties props, @Nullable CreativeModeTab tab) { - blockNoItem(name, block); - var old = BLOCK_ITEMS.put(modLoc(name), new Pair<>(block, props)); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - if (tab != null) { - BLOCK_TABS.computeIfAbsent(tab, t -> new ArrayList<>()).add(block); + private static Supplier blockItem(String name, Supplier blockSupplier, Item.Properties props, @Nullable ResourceKey tabKey) { + Supplier supplier = blockNoItem(name, blockSupplier); + REGISTER_BLOCK_ITEMS.register(name, () -> new BlockItem(supplier.get(), props)); + if (tabKey != null) { + BLOCK_TABS.computeIfAbsent(tabKey, t -> new ArrayList<>()).add(supplier::get); } - return block; + return supplier; } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java index 415a540a0b..eb3efcf378 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java @@ -23,12 +23,12 @@ public static void registerCreativeTabs(BiConsumer TABS = new LinkedHashMap<>(); public static final CreativeModeTab HEX = register("hexcasting", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) - .icon(() -> new ItemStack(HexItems.SPELLBOOK))); + .icon(() -> new ItemStack(HexItems.SPELLBOOK.get()))); public static final ResourceKey HEX_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("hexcasting")); public static final CreativeModeTab SCROLLS = register("scrolls", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) - .icon(() -> new ItemStack(HexItems.SCROLL_LARGE))); + .icon(() -> new ItemStack(HexItems.SCROLL_LARGE.get()))); public static final ResourceKey SCROLLS_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("scrolls")); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexFeatureConfigs.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexFeatureConfigs.java index 6825892683..d4593098b8 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexFeatureConfigs.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexFeatureConfigs.java @@ -25,15 +25,15 @@ public static void dumpConfigs() { HexAPI.LOGGER.info(TreeConfiguration.CODEC.encodeStart(JsonOps.INSTANCE, CITRINE_EDIFIED_TREE_CONFIG)); } - public static final TreeConfiguration AMETHYST_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.AMETHYST_EDIFIED_LEAVES, HexBlocks.EDIFIED_LOG_AMETHYST); - public static final TreeConfiguration AVENTURINE_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.AVENTURINE_EDIFIED_LEAVES, HexBlocks.EDIFIED_LOG_AVENTURINE); - public static final TreeConfiguration CITRINE_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.CITRINE_EDIFIED_LEAVES, HexBlocks.EDIFIED_LOG_CITRINE); + public static final TreeConfiguration AMETHYST_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), HexBlocks.EDIFIED_LOG_AMETHYST.get()); + public static final TreeConfiguration AVENTURINE_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), HexBlocks.EDIFIED_LOG_AVENTURINE.get()); + public static final TreeConfiguration CITRINE_EDIFIED_TREE_CONFIG = akashicTree(HexBlocks.CITRINE_EDIFIED_LEAVES.get(), HexBlocks.EDIFIED_LOG_CITRINE.get()); private static TreeConfiguration akashicTree(Block leaves, Block altLog) { return new TreeConfiguration.TreeConfigurationBuilder( new WeightedStateProvider( SimpleWeightedRandomList.builder() - .add(HexBlocks.EDIFIED_LOG.defaultBlockState(), 8) + .add(HexBlocks.EDIFIED_LOG.get().defaultBlockState(), 8) .add(altLog.defaultBlockState(), 1) .build()), // baseHeight, heightRandA, heightRandB diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java index 92ce07c7b2..f3bd3855f5 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java @@ -12,9 +12,11 @@ import at.petrak.hexcasting.common.items.pigment.*; import at.petrak.hexcasting.common.items.storage.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import com.google.common.base.Suppliers; import net.minecraft.Util; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlot; @@ -34,60 +36,58 @@ // https://github.com/VazkiiMods/Botania/blob/2c4f7fdf9ebf0c0afa1406dfe1322841133d75fa/Common/src/main/java/vazkii/botania/common/item/ModItems.java public class HexItems { - public static void registerItems(BiConsumer r) { - for (var e : ITEMS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.ITEM); + + public static void register() { + REGISTER.registerAll(); } - public static void registerItemCreativeTab(CreativeModeTab.Output r, CreativeModeTab tab) { - if (tab == HexCreativeTabs.SCROLLS) + public static void registerItemsForCreativeTab(ResourceKey tabKey, CreativeModeTab.Output r) { + if (tabKey == HexCreativeTabs.SCROLLS_KEY) generateScrollEntries(r); - for (var item : ITEM_TABS.getOrDefault(tab, Collections.emptyList())) { + for (var item : ITEM_TABS.getOrDefault(tabKey, Collections.emptyList())) { item.register(r); } } - private static final Map ITEMS = new LinkedHashMap<>(); // preserve insertion order - private static final Map> ITEM_TABS = new LinkedHashMap<>(); - - - public static final Item AMETHYST_DUST = make("amethyst_dust", new Item(props())); - public static final Item CHARGED_AMETHYST = make("charged_amethyst", new Item(props())); - - public static final Item QUENCHED_SHARD = make("quenched_allay_shard", new Item(props().rarity(Rarity.UNCOMMON))); - - public static final ItemStaff STAFF_OAK = make("staff/oak", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_SPRUCE = make("staff/spruce", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_BIRCH = make("staff/birch", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_JUNGLE = make("staff/jungle", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_ACACIA = make("staff/acacia", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_DARK_OAK = make("staff/dark_oak", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_CRIMSON = make("staff/crimson", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_WARPED = make("staff/warped", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_MANGROVE = make("staff/mangrove", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_CHERRY = make("staff/cherry", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_BAMBOO = make("staff/bamboo", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_EDIFIED = make("staff/edified", new ItemStaff(unstackable())); - public static final ItemStaff STAFF_QUENCHED = make("staff/quenched", new ItemStaff(unstackable().rarity(Rarity.UNCOMMON))); + private static final Map, List> ITEM_TABS = new LinkedHashMap<>(); + + public static final Supplier AMETHYST_DUST = make("amethyst_dust", () -> new Item(props())); + public static final Supplier CHARGED_AMETHYST = make("charged_amethyst", () -> new Item(props())); + + public static final Supplier QUENCHED_SHARD = make("quenched_allay_shard", () -> new Item(props().rarity(Rarity.UNCOMMON))); + + public static final Supplier STAFF_OAK = make("staff/oak", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_SPRUCE = make("staff/spruce", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_BIRCH = make("staff/birch", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_JUNGLE = make("staff/jungle", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_ACACIA = make("staff/acacia", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_DARK_OAK = make("staff/dark_oak", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_CRIMSON = make("staff/crimson", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_WARPED = make("staff/warped", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_MANGROVE = make("staff/mangrove", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_CHERRY = make("staff/cherry", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_BAMBOO = make("staff/bamboo", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_EDIFIED = make("staff/edified", () -> new ItemStaff(unstackable())); + public static final Supplier STAFF_QUENCHED = make("staff/quenched", () -> new ItemStaff(unstackable().rarity(Rarity.UNCOMMON))); // mindsplice staffaratus - public static final ItemStaff STAFF_MINDSPLICE = make("staff/mindsplice", new ItemStaff(unstackable().rarity(Rarity.UNCOMMON))); + public static final Supplier STAFF_MINDSPLICE = make("staff/mindsplice", () -> new ItemStaff(unstackable().rarity(Rarity.UNCOMMON))); - public static final ItemLens SCRYING_LENS = make("lens", new ItemLens( + public static final Supplier SCRYING_LENS = make("lens", () -> new ItemLens( IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD) .stacksTo(1).attributes(ItemLens.MODIFIERS))); - public static final ItemAbacus ABACUS = make("abacus", new ItemAbacus(unstackable())); - public static final ItemThoughtKnot THOUGHT_KNOT = make("thought_knot", new ItemThoughtKnot(unstackable())); - public static final ItemFocus FOCUS = make("focus", new ItemFocus(unstackable())); - public static final ItemSpellbook SPELLBOOK = make("spellbook", new ItemSpellbook(unstackable())); + public static final Supplier ABACUS = make("abacus", () -> new ItemAbacus(unstackable())); + public static final Supplier THOUGHT_KNOT = make("thought_knot", () -> new ItemThoughtKnot(unstackable())); + public static final Supplier FOCUS = make("focus", () -> new ItemFocus(unstackable())); + public static final Supplier SPELLBOOK = make("spellbook", () -> new ItemSpellbook(unstackable())); - public static final ItemCypher ANCIENT_CYPHER = make("ancient_cypher", new ItemAncientCypher(unstackable())); - public static final ItemCypher CYPHER = make("cypher", new ItemCypher(unstackable())); - public static final ItemTrinket TRINKET = make("trinket", new ItemTrinket(unstackable().rarity(Rarity.UNCOMMON))); - public static final ItemArtifact ARTIFACT = make("artifact", new ItemArtifact(unstackable().rarity(Rarity.RARE))); + public static final Supplier ANCIENT_CYPHER = make("ancient_cypher", () -> new ItemAncientCypher(unstackable())); + public static final Supplier CYPHER = make("cypher", () -> new ItemCypher(unstackable())); + public static final Supplier TRINKET = make("trinket", () -> new ItemTrinket(unstackable().rarity(Rarity.UNCOMMON))); + public static final Supplier ARTIFACT = make("artifact", () -> new ItemArtifact(unstackable().rarity(Rarity.RARE))); - public static final ItemJewelerHammer JEWELER_HAMMER = make("jeweler_hammer", + public static final Supplier JEWELER_HAMMER = make("jeweler_hammer", () -> new ItemJewelerHammer(Tiers.IRON, props() .stacksTo(1) .durability(Tiers.DIAMOND.getUses()) @@ -102,67 +102,67 @@ public static void registerItemCreativeTab(CreativeModeTab.Output r, CreativeMod ) ); - public static final ItemScroll SCROLL_SMOL = make("scroll_small", new ItemScroll(props(), 1)); - public static final ItemScroll SCROLL_MEDIUM = make("scroll_medium", new ItemScroll(props(), 2)); - public static final ItemScroll SCROLL_LARGE = make("scroll", new ItemScroll(props(), 3)); + public static final Supplier SCROLL_SMOL = make("scroll_small", () -> new ItemScroll(props(), 1)); + public static final Supplier SCROLL_MEDIUM = make("scroll_medium", () -> new ItemScroll(props(), 2)); + public static final Supplier SCROLL_LARGE = make("scroll", () -> new ItemScroll(props(), 3)); - public static final ItemSlate SLATE = make("slate", new ItemSlate(HexBlocks.SLATE, props())); + public static final Supplier SLATE = make("slate", () -> new ItemSlate(HexBlocks.SLATE.get(), props())); - public static final ItemMediaBattery BATTERY = make("battery", + public static final Supplier BATTERY = make("battery", () -> new ItemMediaBattery(unstackable()), null); public static final Supplier BATTERY_DUST_STACK = addToTab(() -> ItemMediaBattery.withMedia( - new ItemStack(HexItems.BATTERY), + new ItemStack(HexItems.BATTERY.get()), MediaConstants.DUST_UNIT * 64, - MediaConstants.DUST_UNIT * 64), HexCreativeTabs.HEX); + MediaConstants.DUST_UNIT * 64), HexCreativeTabs.HEX_KEY); public static final Supplier BATTERY_SHARD_STACK = addToTab(() -> ItemMediaBattery.withMedia( - new ItemStack(HexItems.BATTERY), + new ItemStack(HexItems.BATTERY.get()), MediaConstants.SHARD_UNIT * 64, - MediaConstants.SHARD_UNIT * 64), HexCreativeTabs.HEX); + MediaConstants.SHARD_UNIT * 64), HexCreativeTabs.HEX_KEY); public static final Supplier BATTERY_CRYSTAL_STACK = addToTab(() -> ItemMediaBattery.withMedia( - new ItemStack(HexItems.BATTERY), + new ItemStack(HexItems.BATTERY.get()), MediaConstants.CRYSTAL_UNIT * 64, - MediaConstants.CRYSTAL_UNIT * 64), HexCreativeTabs.HEX); + MediaConstants.CRYSTAL_UNIT * 64), HexCreativeTabs.HEX_KEY); public static final Supplier BATTERY_QUENCHED_SHARD_STACK = addToTab(() -> ItemMediaBattery.withMedia( - new ItemStack(HexItems.BATTERY), + new ItemStack(HexItems.BATTERY.get()), MediaConstants.QUENCHED_SHARD_UNIT * 64, - MediaConstants.QUENCHED_SHARD_UNIT * 64), HexCreativeTabs.HEX); + MediaConstants.QUENCHED_SHARD_UNIT * 64), HexCreativeTabs.HEX_KEY); public static final Supplier BATTERY_QUENCHED_BLOCK_STACK = addToTab(() -> ItemMediaBattery.withMedia( - new ItemStack(HexItems.BATTERY), + new ItemStack(HexItems.BATTERY.get()), MediaConstants.QUENCHED_BLOCK_UNIT * 64, - MediaConstants.QUENCHED_BLOCK_UNIT * 64), HexCreativeTabs.HEX); + MediaConstants.QUENCHED_BLOCK_UNIT * 64), HexCreativeTabs.HEX_KEY); - public static final EnumMap DYE_PIGMENTS = Util.make(() -> { - var out = new EnumMap(DyeColor.class); + public static final EnumMap> DYE_PIGMENTS = Util.make(() -> { + var out = new EnumMap>(DyeColor.class); for (var dye : DyeColor.values()) { - out.put(dye, make("dye_colorizer_" + dye.getName(), new ItemDyePigment(dye, unstackable()))); + out.put(dye, make("dye_colorizer_" + dye.getName(), () -> new ItemDyePigment(dye, unstackable()))); } return out; }); - public static final EnumMap PRIDE_PIGMENTS = Util.make(() -> { - var out = new EnumMap(ItemPridePigment.Type.class); + public static final EnumMap> PRIDE_PIGMENTS = Util.make(() -> { + var out = new EnumMap>(ItemPridePigment.Type.class); for (var politicsInMyVidya : ItemPridePigment.Type.values()) { - out.put(politicsInMyVidya, make("pride_colorizer_" + politicsInMyVidya.getName(), + out.put(politicsInMyVidya, make("pride_colorizer_" + politicsInMyVidya.getName(), () -> new ItemPridePigment(politicsInMyVidya, unstackable()))); } return out; }); - public static final Item UUID_PIGMENT = make("uuid_colorizer", new ItemUUIDPigment(unstackable())); - public static final Item DEFAULT_PIGMENT = make("default_colorizer", + public static final Supplier UUID_PIGMENT = make("uuid_colorizer", () -> new ItemUUIDPigment(unstackable())); + public static final Supplier DEFAULT_PIGMENT = make("default_colorizer", () -> new ItemAmethystPigment(unstackable())); - public static final Item ANCIENT_PIGMENT = make("ancient_colorizer", + public static final Supplier ANCIENT_PIGMENT = make("ancient_colorizer", () -> new ItemAmethystAndCopperPigment(unstackable())); // BUFF SANDVICH - public static final Item SUBMARINE_SANDWICH = make("sub_sandwich", + public static final Supplier SUBMARINE_SANDWICH = make("sub_sandwich", () -> new Item(props().food(new FoodProperties.Builder().nutrition(14).saturationModifier(1.2f).build()))); - public static final ItemLoreFragment LORE_FRAGMENT = make("lore_fragment", + public static final Supplier LORE_FRAGMENT = make("lore_fragment", () -> new ItemLoreFragment(unstackable() .rarity(Rarity.RARE))); - public static final ItemCreativeUnlocker CREATIVE_UNLOCKER = make("creative_unlocker", + public static final Supplier CREATIVE_UNLOCKER = make("creative_unlocker", () -> new ItemCreativeUnlocker(unstackable() .rarity(Rarity.EPIC) .food(new FoodProperties.Builder().nutrition(20).saturationModifier(1f).alwaysEdible().build()))); @@ -186,34 +186,27 @@ private static void generateScrollEntries(CreativeModeTab.Output r) { keyList.sort(Comparator.comparing(ResourceKey::location)); for (var key : keyList) { r.accept(ItemScroll.withPerWorldPattern( - new ItemStack(HexItems.SCROLL_LARGE), + new ItemStack(HexItems.SCROLL_LARGE.get()), key )); } } - private static T make(ResourceLocation id, T item, @Nullable CreativeModeTab tab) { - var old = ITEMS.put(id, item); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - if (tab != null) { - ITEM_TABS.computeIfAbsent(tab, t -> new ArrayList<>()).add(new TabEntry.ItemEntry(item)); + private static Supplier make(String id, Supplier itemSupplier, @Nullable ResourceKey tabKey) { + Supplier supplier = REGISTER.register(id, itemSupplier); + if (tabKey != null) { + ITEM_TABS.computeIfAbsent(tabKey, t -> new ArrayList<>()).add(new TabEntry.ItemEntry(supplier::get)); } - return item; - } - - private static T make(String id, T item, @Nullable CreativeModeTab tab) { - return make(modLoc(id), item, tab); + return supplier; } - private static T make(String id, T item) { - return make(modLoc(id), item, HexCreativeTabs.HEX); + private static Supplier make(String id, Supplier itemSupplier) { + return make(id, itemSupplier, HexCreativeTabs.HEX_KEY); } - private static Supplier addToTab(Supplier stack, CreativeModeTab tab) { + private static Supplier addToTab(Supplier stack, ResourceKey tabKey) { var memoised = Suppliers.memoize(stack::get); - ITEM_TABS.computeIfAbsent(tab, t -> new ArrayList<>()).add(new TabEntry.StackEntry(memoised)); + ITEM_TABS.computeIfAbsent(tabKey, t -> new ArrayList<>()).add(new TabEntry.StackEntry(memoised)); return memoised; } @@ -221,15 +214,15 @@ private static abstract class TabEntry { abstract void register(CreativeModeTab.Output r); static class ItemEntry extends TabEntry { - private final Item item; + private final Supplier item; - ItemEntry(Item item) { + ItemEntry(Supplier item) { this.item = item; } @Override void register(CreativeModeTab.Output r) { - r.accept(item); + r.accept(item.get()); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java index 0cc40aaf0a..297f1baa27 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java @@ -40,7 +40,7 @@ public static void register() { new Potion("shrink_grid_strong", new MobEffectInstance(HexMobEffects.SHRINK_GRID, 1800, 1))); public static void addRecipes(PotionBrewing.Builder builder) { - builder.addMix(Potions.AWKWARD, HexItems.AMETHYST_DUST, ENLARGE_GRID); + builder.addMix(Potions.AWKWARD, HexItems.AMETHYST_DUST.get(), ENLARGE_GRID); builder.addMix(ENLARGE_GRID, Items.REDSTONE, ENLARGE_GRID_LONG); builder.addMix(ENLARGE_GRID, Items.GLOWSTONE_DUST, ENLARGE_GRID_STRONG); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java index 356fefe37c..010ca58577 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java @@ -281,15 +281,15 @@ public class HexActions { public static final ActionRegistryEntry CRAFT$CYPHER = make("craft/cypher", new ActionRegistryEntry( HexPattern.fromAngles("waqqqqq", HexDir.EAST), - new OpMakePackagedSpell(s -> (s.is(HexItems.CYPHER)||s.is(HexItems.ANCIENT_CYPHER)), HexItems.CYPHER::getDescription, MediaConstants.CRYSTAL_UNIT) + new OpMakePackagedSpell(s -> (s.is(HexItems.CYPHER.get())||s.is(HexItems.ANCIENT_CYPHER.get())), HexItems.CYPHER.get()::getDescription, MediaConstants.CRYSTAL_UNIT) )); public static final ActionRegistryEntry CRAFT$TRINKET = make("craft/trinket", new ActionRegistryEntry( HexPattern.fromAngles("wwaqqqqqeaqeaeqqqeaeq", HexDir.EAST), - new OpMakePackagedSpell(HexItems.TRINKET, 5 * MediaConstants.CRYSTAL_UNIT) + new OpMakePackagedSpell(HexItems.TRINKET.get(), 5 * MediaConstants.CRYSTAL_UNIT) )); public static final ActionRegistryEntry CRAFT$ARTIFACT = make("craft/artifact", new ActionRegistryEntry( HexPattern.fromAngles("wwaqqqqqeawqwqwqwqwqwwqqeadaeqqeqqeadaeqq", HexDir.EAST), - new OpMakePackagedSpell(HexItems.ARTIFACT, 10 * MediaConstants.CRYSTAL_UNIT) + new OpMakePackagedSpell(HexItems.ARTIFACT.get(), 10 * MediaConstants.CRYSTAL_UNIT) )); public static final ActionRegistryEntry CRAFT$BATTERY = make("craft/battery", new ActionRegistryEntry( HexPattern.fromAngles("aqqqaqwwaqqqqqeqaqqqawwqwqwqwqwqw", HexDir.SOUTH_WEST), OpMakeBattery.INSTANCE)); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java index 6cd6032835..4e19aae3f5 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java @@ -49,9 +49,9 @@ private void handleForHand(ServerPlayer sender, InteractionHand hand, double del if (delta != 0) { var stack = sender.getItemInHand(hand); - if (stack.getItem() == HexItems.SPELLBOOK) { + if (stack.getItem() == HexItems.SPELLBOOK.get()) { spellbook(sender, hand, stack, delta); - } else if (stack.getItem() == HexItems.ABACUS) { + } else if (stack.getItem() == HexItems.ABACUS.get()) { abacus(sender, hand, stack, delta); } } @@ -123,7 +123,7 @@ private void abacus(ServerPlayer sender, InteractionHand hand, ItemStack stack, sender.level().playSound(null, sender.getX(), sender.getY(), sender.getZ(), HexSounds.ABACUS, SoundSource.PLAYERS, 0.5f, pitch); - var datum = HexItems.ABACUS.readIota(stack); + var datum = HexItems.ABACUS.get().readIota(stack); if (datum != null) { var popup = datum.display(); sender.displayClientMessage( diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java index 52797baf6c..4bf2f74298 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java @@ -18,7 +18,7 @@ public class SealSpellbookRecipe extends ShapelessRecipe { new SimpleCraftingRecipeSerializer<>(SealSpellbookRecipe::new); private static ItemStack getSealedStack() { - ItemStack output = new ItemStack(HexItems.SPELLBOOK); + ItemStack output = new ItemStack(HexItems.SPELLBOOK.get()); ItemSpellbook.setSealed(output, true); output.set(HexDataComponents.VISUAL_OVERRIDE, Optional.empty()); return output; @@ -26,7 +26,7 @@ private static ItemStack getSealedStack() { private static NonNullList createIngredients() { NonNullList ingredients = NonNullList.createWithCapacity(2); - ingredients.add(IXplatAbstractions.INSTANCE.getUnsealedIngredient(new ItemStack(HexItems.SPELLBOOK))); + ingredients.add(IXplatAbstractions.INSTANCE.getUnsealedIngredient(new ItemStack(HexItems.SPELLBOOK.get()))); ingredients.add(Ingredient.of(Items.HONEYCOMB)); return ingredients; } @@ -41,7 +41,7 @@ public SealSpellbookRecipe(CraftingBookCategory category) { for (int i = 0; i < inv.size(); i++) { var stack = inv.getItem(i); - if (stack.is(HexItems.SPELLBOOK)) { + if (stack.is(HexItems.SPELLBOOK.get())) { out = stack.copy(); break; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java index efa2aebee6..f75b3828c7 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java @@ -99,11 +99,11 @@ public String getSerializedName() { public boolean isCorrectSealee(ItemStack stack) { return switch (this) { - case FOCUS -> stack.is(HexItems.FOCUS) + case FOCUS -> stack.is(HexItems.FOCUS.get()) && stack.has(HexDataComponents.IOTA_HOLDER_IOTA) && !ItemFocus.isSealed(stack); - case SPELLBOOK -> stack.is(HexItems.SPELLBOOK) - && HexItems.SPELLBOOK.readIota(stack) != null + case SPELLBOOK -> stack.is(HexItems.SPELLBOOK.get()) + && HexItems.SPELLBOOK.get().readIota(stack) != null && !ItemSpellbook.isSealed(stack); }; } diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java b/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java index 598e3539cc..d1bcbea2df 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java @@ -52,14 +52,14 @@ public void generate(HolderLookup.Provider provider, Consumer //Creative Debug Unlocker Advancement.Builder.advancement() - .display(new DisplayInfo(new ItemStack(HexItems.CREATIVE_UNLOCKER), + .display(new DisplayInfo(new ItemStack(HexItems.CREATIVE_UNLOCKER.get()), Component.translatable("advancement.hexcasting:creative_unlocker"), Component.translatable("advancement.hexcasting:creative_unlocker.desc"), Optional.of(ResourceLocation.withDefaultNamespace("textures/block/calcite.png")), AdvancementType.TASK, true, false, true)) .parent(root) .addCriterion("has_creative_unlocker", InventoryChangeTrigger.TriggerInstance.hasItems( - ItemPredicate.Builder.item().of(HexItems.CREATIVE_UNLOCKER).build())) + ItemPredicate.Builder.item().of(HexItems.CREATIVE_UNLOCKER.get()).build())) .save(consumer, prefix("creative_unlocker")); // weird names so we have alphabetical parity @@ -74,7 +74,7 @@ public void generate(HolderLookup.Provider provider, Consumer )) .save(consumer, prefix("aaa_wasteful_cast")); Advancement.Builder.advancement() - .display(simpleDisplay(HexItems.CHARGED_AMETHYST, "big_cast", AdvancementType.TASK)) + .display(simpleDisplay(HexItems.CHARGED_AMETHYST.get(), "big_cast", AdvancementType.TASK)) .parent(root) .addCriterion("cast_amt", new Criterion<>( HexAdvancementTriggers.SPEND_MEDIA_TRIGGER, @@ -117,15 +117,15 @@ public void generate(HolderLookup.Provider provider, Consumer .save(consumer, prefix("enlightenment")); var loreRoot = Advancement.Builder.advancement() - .display(simpleDisplayWithBackground(HexBlocks.AKASHIC_LIGATURE, "lore", AdvancementType.GOAL, + .display(simpleDisplayWithBackground(HexBlocks.AKASHIC_LIGATURE.get(), "lore", AdvancementType.GOAL, modLoc("textures/block/slate_block.png"))) .addCriterion("used_item", new Criterion<>(CriteriaTriggers.CONSUME_ITEM, new ConsumeItemTrigger.TriggerInstance(Optional.empty(), - Optional.of(ItemPredicate.Builder.item().of(HexItems.LORE_FRAGMENT).build())))) + Optional.of(ItemPredicate.Builder.item().of(HexItems.LORE_FRAGMENT.get()).build())))) .save(consumer, prefix("lore")); for (var advId : ItemLoreFragment.NAMES) { Advancement.Builder.advancement() - .display(new DisplayInfo(new ItemStack(HexItems.LORE_FRAGMENT), + .display(new DisplayInfo(new ItemStack(HexItems.LORE_FRAGMENT.get()), Component.translatable("advancement." + advId), Component.empty(), Optional.empty(), AdvancementType.TASK, true, true, true)) .parent(loreRoot) diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java b/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java index a8743618c1..75e617df4d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java @@ -45,45 +45,45 @@ public HexLootTables(HolderLookup.Provider registries) { @Override protected void makeLootTables(Map blockTables, Map, LootTable.Builder> lootTables) { - dropSelf(blockTables, HexBlocks.IMPETUS_EMPTY, - HexBlocks.IMPETUS_RIGHTCLICK, HexBlocks.IMPETUS_LOOK, HexBlocks.IMPETUS_REDSTONE, - HexBlocks.EMPTY_DIRECTRIX, HexBlocks.DIRECTRIX_REDSTONE, HexBlocks.DIRECTRIX_BOOLEAN, - HexBlocks.AKASHIC_RECORD, HexBlocks.AKASHIC_BOOKSHELF, HexBlocks.AKASHIC_LIGATURE, - HexBlocks.SLATE_BLOCK, HexBlocks.SLATE_TILES, HexBlocks.SLATE_BRICKS, HexBlocks.SLATE_BRICKS_SMALL, - HexBlocks.SLATE_PILLAR, HexBlocks.AMETHYST_DUST_BLOCK, HexBlocks.AMETHYST_TILES, HexBlocks.AMETHYST_BRICKS, - HexBlocks.AMETHYST_BRICKS_SMALL, HexBlocks.AMETHYST_PILLAR, HexBlocks.SLATE_AMETHYST_TILES, - HexBlocks.SLATE_AMETHYST_BRICKS, HexBlocks.SLATE_AMETHYST_BRICKS_SMALL, HexBlocks.SLATE_AMETHYST_PILLAR, - HexBlocks.QUENCHED_ALLAY_TILES, HexBlocks.QUENCHED_ALLAY_BRICKS, HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL, - HexBlocks.SCROLL_PAPER, HexBlocks.ANCIENT_SCROLL_PAPER, HexBlocks.SCROLL_PAPER_LANTERN, - HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, HexBlocks.SCONCE, - HexBlocks.EDIFIED_LOG, HexBlocks.EDIFIED_LOG_AMETHYST, HexBlocks.EDIFIED_LOG_AVENTURINE, - HexBlocks.EDIFIED_LOG_CITRINE, HexBlocks.EDIFIED_LOG_PURPLE, HexBlocks.STRIPPED_EDIFIED_LOG, - HexBlocks.EDIFIED_WOOD, HexBlocks.STRIPPED_EDIFIED_WOOD, - HexBlocks.EDIFIED_PLANKS, HexBlocks.EDIFIED_TILE, HexBlocks.EDIFIED_PANEL, - HexBlocks.EDIFIED_TRAPDOOR, HexBlocks.EDIFIED_STAIRS, HexBlocks.EDIFIED_FENCE, HexBlocks.EDIFIED_FENCE_GATE, HexBlocks.EDIFIED_PRESSURE_PLATE, - HexBlocks.EDIFIED_BUTTON); + dropSelf(blockTables, HexBlocks.IMPETUS_EMPTY.get(), + HexBlocks.IMPETUS_RIGHTCLICK.get(), HexBlocks.IMPETUS_LOOK.get(), HexBlocks.IMPETUS_REDSTONE.get(), + HexBlocks.EMPTY_DIRECTRIX.get(), HexBlocks.DIRECTRIX_REDSTONE.get(), HexBlocks.DIRECTRIX_BOOLEAN.get(), + HexBlocks.AKASHIC_RECORD.get(), HexBlocks.AKASHIC_BOOKSHELF.get(), HexBlocks.AKASHIC_LIGATURE.get(), + HexBlocks.SLATE_BLOCK.get(), HexBlocks.SLATE_TILES.get(), HexBlocks.SLATE_BRICKS.get(), HexBlocks.SLATE_BRICKS_SMALL.get(), + HexBlocks.SLATE_PILLAR.get(), HexBlocks.AMETHYST_DUST_BLOCK.get(), HexBlocks.AMETHYST_TILES.get(), HexBlocks.AMETHYST_BRICKS.get(), + HexBlocks.AMETHYST_BRICKS_SMALL.get(), HexBlocks.AMETHYST_PILLAR.get(), HexBlocks.SLATE_AMETHYST_TILES.get(), + HexBlocks.SLATE_AMETHYST_BRICKS.get(), HexBlocks.SLATE_AMETHYST_BRICKS_SMALL.get(), HexBlocks.SLATE_AMETHYST_PILLAR.get(), + HexBlocks.QUENCHED_ALLAY_TILES.get(), HexBlocks.QUENCHED_ALLAY_BRICKS.get(), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get(), + HexBlocks.SCROLL_PAPER.get(), HexBlocks.ANCIENT_SCROLL_PAPER.get(), HexBlocks.SCROLL_PAPER_LANTERN.get(), + HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN.get(), HexBlocks.SCONCE.get(), + HexBlocks.EDIFIED_LOG.get(), HexBlocks.EDIFIED_LOG_AMETHYST.get(), HexBlocks.EDIFIED_LOG_AVENTURINE.get(), + HexBlocks.EDIFIED_LOG_CITRINE.get(), HexBlocks.EDIFIED_LOG_PURPLE.get(), HexBlocks.STRIPPED_EDIFIED_LOG.get(), + HexBlocks.EDIFIED_WOOD.get(), HexBlocks.STRIPPED_EDIFIED_WOOD.get(), + HexBlocks.EDIFIED_PLANKS.get(), HexBlocks.EDIFIED_TILE.get(), HexBlocks.EDIFIED_PANEL.get(), + HexBlocks.EDIFIED_TRAPDOOR.get(), HexBlocks.EDIFIED_STAIRS.get(), HexBlocks.EDIFIED_FENCE.get(), HexBlocks.EDIFIED_FENCE_GATE.get(), HexBlocks.EDIFIED_PRESSURE_PLATE.get(), + HexBlocks.EDIFIED_BUTTON.get()); HolderLookup.RegistryLookup enchRegistryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); - makeSlabTable(blockTables, HexBlocks.EDIFIED_SLAB); + makeSlabTable(blockTables, HexBlocks.EDIFIED_SLAB.get()); - makeLeafTable(blockTables, HexBlocks.AMETHYST_EDIFIED_LEAVES, enchRegistryLookup); - makeLeafTable(blockTables, HexBlocks.AVENTURINE_EDIFIED_LEAVES, enchRegistryLookup); - makeLeafTable(blockTables, HexBlocks.CITRINE_EDIFIED_LEAVES, enchRegistryLookup); + makeLeafTable(blockTables, HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), enchRegistryLookup); + makeLeafTable(blockTables, HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), enchRegistryLookup); + makeLeafTable(blockTables, HexBlocks.CITRINE_EDIFIED_LEAVES.get(), enchRegistryLookup); var slatePool = LootPool.lootPool() .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(HexBlocks.SLATE) + .add(LootItem.lootTableItem(HexBlocks.SLATE.get()) .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) .include(HexDataComponents.PATTERN) )); - blockTables.put(HexBlocks.SLATE, LootTable.lootTable().withPool(slatePool)); + blockTables.put(HexBlocks.SLATE.get(), LootTable.lootTable().withPool(slatePool)); - var doorPool = dropThisPool(HexBlocks.EDIFIED_DOOR, 1) - .when(new LootItemBlockStatePropertyCondition.Builder(HexBlocks.EDIFIED_DOOR).setProperties( + var doorPool = dropThisPool(HexBlocks.EDIFIED_DOOR.get(), 1) + .when(new LootItemBlockStatePropertyCondition.Builder(HexBlocks.EDIFIED_DOOR.get()).setProperties( StatePropertiesPredicate.Builder.properties().hasProperty(DoorBlock.HALF, DoubleBlockHalf.LOWER) )); - blockTables.put(HexBlocks.EDIFIED_DOOR, LootTable.lootTable().withPool(doorPool)); + blockTables.put(HexBlocks.EDIFIED_DOOR.get(), LootTable.lootTable().withPool(doorPool)); var silkTouchCond = MatchTool.toolMatches( ItemPredicate.Builder.item().withSubPredicate( @@ -98,25 +98,25 @@ protected void makeLootTables(Map blockTables, ); var dustPoolWhenGood = LootPool.lootPool() - .add(LootItem.lootTableItem(HexItems.AMETHYST_DUST)) + .add(LootItem.lootTableItem(HexItems.AMETHYST_DUST.get())) .apply(SetItemCountFunction.setCount(UniformGenerator.between(1, 4))) .apply(ApplyBonusCount.addOreBonusCount(enchRegistryLookup.getOrThrow(Enchantments.FORTUNE))) .when(noSilkTouchCond).when(goodAtAmethystingCond); var dustPoolWhenBad = LootPool.lootPool() - .add(LootItem.lootTableItem(HexItems.AMETHYST_DUST)) + .add(LootItem.lootTableItem(HexItems.AMETHYST_DUST.get())) .apply(SetItemCountFunction.setCount(UniformGenerator.between(0, 2))) .when(noSilkTouchCond).when(goodAtAmethystingCond.invert()); var isThatAnMFingBrandonSandersonReference = LootPool.lootPool() - .add(LootItem.lootTableItem(HexItems.CHARGED_AMETHYST)) + .add(LootItem.lootTableItem(HexItems.CHARGED_AMETHYST.get())) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(1))) .when(noSilkTouchCond).when(goodAtAmethystingCond) .when(BonusLevelTableCondition.bonusLevelFlatChance(enchRegistryLookup.getOrThrow(Enchantments.FORTUNE), 0.25f, 0.35f, 0.5f, 0.75f, 1.0f)); var isThatAnMFingBadBrandonSandersonReference = LootPool.lootPool() - .add(LootItem.lootTableItem(HexItems.CHARGED_AMETHYST)) + .add(LootItem.lootTableItem(HexItems.CHARGED_AMETHYST.get())) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(1))) .when(noSilkTouchCond).when(goodAtAmethystingCond.invert()) .when(LootItemRandomChanceCondition.randomChance(0.125f)); @@ -134,14 +134,14 @@ protected void makeLootTables(Map blockTables, // it looks like loot groups are bugged? // so instead we add some and then *increment* the amount, gated behind the cond var quenchedPool = LootPool.lootPool().add(AlternativesEntry.alternatives( - LootItem.lootTableItem(HexBlocks.QUENCHED_ALLAY).when(silkTouchCond), - LootItem.lootTableItem(HexItems.QUENCHED_SHARD) + LootItem.lootTableItem(HexBlocks.QUENCHED_ALLAY.get()).when(silkTouchCond), + LootItem.lootTableItem(HexItems.QUENCHED_SHARD.get()) .apply(SetItemCountFunction.setCount(UniformGenerator.between(2f, 4f))) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(1), true) .when(BonusLevelTableCondition.bonusLevelFlatChance(enchRegistryLookup.getOrThrow(Enchantments.FORTUNE), 0.25f, 0.5f, 0.75f, 1.0f))) )); - blockTables.put(HexBlocks.QUENCHED_ALLAY, LootTable.lootTable().withPool(quenchedPool)); + blockTables.put(HexBlocks.QUENCHED_ALLAY.get(), LootTable.lootTable().withPool(quenchedPool)); } private void makeLeafTable(Map lootTables, Block block, HolderLookup.RegistryLookup enchRegistryLookup) { diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java index 35e4ab2020..69a2febc43 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java @@ -62,18 +62,18 @@ public class HexplatRecipes extends RecipeProvider { private final Function conditions; private final List EDIFIED_LOGS = List.of( - HexBlocks.EDIFIED_LOG, HexBlocks.EDIFIED_LOG_AMETHYST, - HexBlocks.EDIFIED_LOG_AVENTURINE, HexBlocks.EDIFIED_LOG_CITRINE, - HexBlocks.EDIFIED_LOG_PURPLE); + HexBlocks.EDIFIED_LOG.get(), HexBlocks.EDIFIED_LOG_AMETHYST.get(), + HexBlocks.EDIFIED_LOG_AVENTURINE.get(), HexBlocks.EDIFIED_LOG_CITRINE.get(), + HexBlocks.EDIFIED_LOG_PURPLE.get()); private final Map EDIFIED_LOG_TO_WOOD = Map.ofEntries( - Map.entry(HexBlocks.EDIFIED_LOG, HexBlocks.EDIFIED_WOOD), + Map.entry(HexBlocks.EDIFIED_LOG.get(), HexBlocks.EDIFIED_WOOD.get()), // These don't exist, idk if they should -// Map.entry(HexBlocks.EDIFIED_LOG_AMETHYST, HexBlocks.EDIFIED_WOOD_AMETHYST), -// Map.entry(HexBlocks.EDIFIED_LOG_AVENTURINE, HexBlocks.EDIFIED_WOOD_AVENTURINE), -// Map.entry(HexBlocks.EDIFIED_LOG_CITRINE, HexBlocks.EDIFIED_WOOD_CITRINE), -// Map.entry(HexBlocks.EDIFIED_LOG_PURPLE, HexBlocks.EDIFIED_WOOD_PURPLE), - Map.entry(HexBlocks.STRIPPED_EDIFIED_LOG, HexBlocks.STRIPPED_EDIFIED_WOOD) +// Map.entry(HexBlocks.EDIFIED_LOG_AMETHYST.get(), HexBlocks.EDIFIED_WOOD_AMETHYST.get()), +// Map.entry(HexBlocks.EDIFIED_LOG_AVENTURINE.get(), HexBlocks.EDIFIED_WOOD_AVENTURINE.get()), +// Map.entry(HexBlocks.EDIFIED_LOG_CITRINE.get(), HexBlocks.EDIFIED_WOOD_CITRINE.get()), +// Map.entry(HexBlocks.EDIFIED_LOG_PURPLE.get(), HexBlocks.EDIFIED_WOOD_PURPLE.get()), + Map.entry(HexBlocks.STRIPPED_EDIFIED_LOG.get(), HexBlocks.STRIPPED_EDIFIED_WOOD.get()) ); public HexplatRecipes(PackOutput output, CompletableFuture registries, IXplatIngredients ingredients, @@ -88,74 +88,74 @@ public void buildRecipes(RecipeOutput recipes) { specialRecipe(recipes, SealThingsRecipe.FOCUS_SERIALIZER, SealThingsRecipe::focus); specialRecipe(recipes, SealThingsRecipe.SPELLBOOK_SERIALIZER, SealThingsRecipe::spellbook); - staffRecipe(recipes, HexItems.STAFF_OAK, Items.OAK_PLANKS); - staffRecipe(recipes, HexItems.STAFF_BIRCH, Items.BIRCH_PLANKS); - staffRecipe(recipes, HexItems.STAFF_SPRUCE, Items.SPRUCE_PLANKS); - staffRecipe(recipes, HexItems.STAFF_JUNGLE, Items.JUNGLE_PLANKS); - staffRecipe(recipes, HexItems.STAFF_DARK_OAK, Items.DARK_OAK_PLANKS); - staffRecipe(recipes, HexItems.STAFF_ACACIA, Items.ACACIA_PLANKS); - staffRecipe(recipes, HexItems.STAFF_CRIMSON, Items.CRIMSON_PLANKS); - staffRecipe(recipes, HexItems.STAFF_WARPED, Items.WARPED_PLANKS); - staffRecipe(recipes, HexItems.STAFF_MANGROVE, Items.MANGROVE_PLANKS); - staffRecipe(recipes, HexItems.STAFF_CHERRY, Items.CHERRY_PLANKS); - staffRecipe(recipes, HexItems.STAFF_BAMBOO, Items.BAMBOO_PLANKS); - staffRecipe(recipes, HexItems.STAFF_EDIFIED, HexBlocks.EDIFIED_PLANKS.asItem()); - staffRecipe(recipes, HexItems.STAFF_QUENCHED, HexItems.QUENCHED_SHARD); - staffRecipe(recipes, HexItems.STAFF_MINDSPLICE, Ingredient.of(HexTags.Items.MINDFLAYED_CIRCLE_COMPONENTS)); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.TOOLS, HexItems.THOUGHT_KNOT) - .requires(HexItems.AMETHYST_DUST) + staffRecipe(recipes, HexItems.STAFF_OAK.get(), Items.OAK_PLANKS); + staffRecipe(recipes, HexItems.STAFF_BIRCH.get(), Items.BIRCH_PLANKS); + staffRecipe(recipes, HexItems.STAFF_SPRUCE.get(), Items.SPRUCE_PLANKS); + staffRecipe(recipes, HexItems.STAFF_JUNGLE.get(), Items.JUNGLE_PLANKS); + staffRecipe(recipes, HexItems.STAFF_DARK_OAK.get(), Items.DARK_OAK_PLANKS); + staffRecipe(recipes, HexItems.STAFF_ACACIA.get(), Items.ACACIA_PLANKS); + staffRecipe(recipes, HexItems.STAFF_CRIMSON.get(), Items.CRIMSON_PLANKS); + staffRecipe(recipes, HexItems.STAFF_WARPED.get(), Items.WARPED_PLANKS); + staffRecipe(recipes, HexItems.STAFF_MANGROVE.get(), Items.MANGROVE_PLANKS); + staffRecipe(recipes, HexItems.STAFF_CHERRY.get(), Items.CHERRY_PLANKS); + staffRecipe(recipes, HexItems.STAFF_BAMBOO.get(), Items.BAMBOO_PLANKS); + staffRecipe(recipes, HexItems.STAFF_EDIFIED.get(), HexBlocks.EDIFIED_PLANKS.get().asItem()); + staffRecipe(recipes, HexItems.STAFF_QUENCHED.get(), HexItems.QUENCHED_SHARD.get()); + staffRecipe(recipes, HexItems.STAFF_MINDSPLICE.get(), Ingredient.of(HexTags.Items.MINDFLAYED_CIRCLE_COMPONENTS)); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.TOOLS, HexItems.THOUGHT_KNOT.get()) + .requires(HexItems.AMETHYST_DUST.get()) .requires(Items.STRING) .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)) .save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.FOCUS) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.FOCUS.get()) .define('G', ingredients.glowstoneDust()) .define('L', ingredients.leather()) .define('P', Items.PAPER) - .define('A', HexItems.CHARGED_AMETHYST) + .define('A', HexItems.CHARGED_AMETHYST.get()) .pattern("GLG") .pattern("PAP") .pattern("GLG") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)) .save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.FOCUS) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.FOCUS.get()) .define('G', ingredients.glowstoneDust()) .define('L', ingredients.leather()) .define('P', Items.PAPER) - .define('A', HexItems.CHARGED_AMETHYST) + .define('A', HexItems.CHARGED_AMETHYST.get()) .pattern("GPG") .pattern("LAL") .pattern("GPG") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)) .save(recipes, modLoc("focus_rotated")); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.SPELLBOOK) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.SPELLBOOK.get()) .define('N', ingredients.goldNugget()) .define('B', Items.WRITABLE_BOOK) - .define('A', HexItems.CHARGED_AMETHYST) + .define('A', HexItems.CHARGED_AMETHYST.get()) .define('F', Items.CHORUS_FRUIT) // i wanna gate this behind the end SOMEHOW // hey look its my gender ^^ .pattern("NBA") .pattern("NFA") .pattern("NBA") - .unlockedBy("has_focus", hasItem(HexItems.FOCUS)) + .unlockedBy("has_focus", hasItem(HexItems.FOCUS.get())) .unlockedBy("has_chorus", hasItem(Items.CHORUS_FRUIT)).save(recipes); ringCornerless(RecipeCategory.TOOLS, - HexItems.CYPHER, 1, + HexItems.CYPHER.get(), 1, ingredients.copperIngot(), - Ingredient.of(HexItems.AMETHYST_DUST)) + Ingredient.of(HexItems.AMETHYST_DUST.get())) .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); ringCornerless(RecipeCategory.TOOLS, - HexItems.TRINKET, 1, + HexItems.TRINKET.get(), 1, ingredients.ironIngot(), Ingredient.of(Items.AMETHYST_SHARD)) .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.ARTIFACT) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.ARTIFACT.get()) .define('F', ingredients.goldIngot()) - .define('A', HexItems.CHARGED_AMETHYST) + .define('A', HexItems.CHARGED_AMETHYST.get()) // 1.21 removed the vanilla music discs tag so we need to use this instead .define('D', TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c","music_discs"))) .pattern(" F ") @@ -163,10 +163,10 @@ public void buildRecipes(RecipeOutput recipes) { .pattern(" D ") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ringCornerless(RecipeCategory.TOOLS, HexItems.SCRYING_LENS, 1, Items.GLASS, HexItems.AMETHYST_DUST) + ringCornerless(RecipeCategory.TOOLS, HexItems.SCRYING_LENS.get(), 1, Items.GLASS, HexItems.AMETHYST_DUST.get()) .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.ABACUS) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.ABACUS.get()) .define('S', Items.STICK) .define('A', Items.AMETHYST_SHARD) .define('W', ItemTags.PLANKS) @@ -176,7 +176,7 @@ public void buildRecipes(RecipeOutput recipes) { .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); // Why am I like this - ShapedRecipeBuilder.shaped(RecipeCategory.FOOD, HexItems.SUBMARINE_SANDWICH) + ShapedRecipeBuilder.shaped(RecipeCategory.FOOD, HexItems.SUBMARINE_SANDWICH.get()) .define('S', Items.STICK) .define('A', Items.AMETHYST_SHARD) .define('C', Items.COOKED_BEEF) @@ -188,13 +188,13 @@ public void buildRecipes(RecipeOutput recipes) { for (var dye : DyeColor.values()) { var item = HexItems.DYE_PIGMENTS.get(dye); - ShapedRecipeBuilder.shaped(RecipeCategory.MISC, item) - .define('D', HexItems.AMETHYST_DUST) + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, item.get()) + .define('D', HexItems.AMETHYST_DUST.get()) .define('C', DyeItem.byColor(dye)) .pattern(" D ") .pattern("DCD") .pattern(" D ") - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)).save(recipes); + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())).save(recipes); } gayRecipe(recipes, ItemPridePigment.Type.AGENDER, Ingredient.of(Items.GLASS)); @@ -219,44 +219,44 @@ public void buildRecipes(RecipeOutput recipes) { gayRecipe(recipes, ItemPridePigment.Type.PLURAL, Ingredient.of(Items.REPEATER)); gayRecipe(recipes, ItemPridePigment.Type.TRANSGENDER, Ingredient.of(Items.EGG)); - ring(RecipeCategory.MISC, HexItems.UUID_PIGMENT, 1, HexItems.AMETHYST_DUST, Items.AMETHYST_SHARD) - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)).save(recipes); - ringCornerless(RecipeCategory.MISC, HexItems.DEFAULT_PIGMENT, 1, HexItems.AMETHYST_DUST, Items.AMETHYST_SHARD) - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)).save(recipes); - ringCornerless(RecipeCategory.MISC, HexItems.ANCIENT_PIGMENT, 1, HexItems.AMETHYST_DUST, Items.COPPER_INGOT) - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)).save(recipes); + ring(RecipeCategory.MISC, HexItems.UUID_PIGMENT.get(), 1, HexItems.AMETHYST_DUST.get(), Items.AMETHYST_SHARD) + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())).save(recipes); + ringCornerless(RecipeCategory.MISC, HexItems.DEFAULT_PIGMENT.get(), 1, HexItems.AMETHYST_DUST.get(), Items.AMETHYST_SHARD) + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())).save(recipes); + ringCornerless(RecipeCategory.MISC, HexItems.ANCIENT_PIGMENT.get(), 1, HexItems.AMETHYST_DUST.get(), Items.COPPER_INGOT) + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_SMOL) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_SMOL.get()) .define('P', Items.PAPER) - .define('A', HexItems.AMETHYST_DUST) + .define('A', HexItems.AMETHYST_DUST.get()) .pattern(" A") .pattern("P ") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_MEDIUM) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_MEDIUM.get()) .define('P', Items.PAPER) - .define('A', HexItems.AMETHYST_DUST) + .define('A', HexItems.AMETHYST_DUST.get()) .pattern(" A") .pattern("PP ") .pattern("PP ") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_LARGE) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SCROLL_LARGE.get()) .define('P', Items.PAPER) - .define('A', HexItems.AMETHYST_DUST) + .define('A', HexItems.AMETHYST_DUST.get()) .pattern("PPA") .pattern("PPP") .pattern("PPP") .unlockedBy("has_item", hasItem(HexTags.Items.STAVES)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SLATE, 6) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, HexItems.SLATE.get(), 6) .define('S', Items.DEEPSLATE) - .define('A', HexItems.AMETHYST_DUST) + .define('A', HexItems.AMETHYST_DUST.get()) .pattern(" A ") .pattern("SSS") - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)).save(recipes); + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.JEWELER_HAMMER) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, HexItems.JEWELER_HAMMER.get()) .define('I', ingredients.ironIngot()) .define('N', ingredients.ironNugget()) .define('A', Items.AMETHYST_SHARD) @@ -266,64 +266,64 @@ public void buildRecipes(RecipeOutput recipes) { .pattern(" S ") .unlockedBy("has_item", hasItem(Items.AMETHYST_SHARD)).save(recipes); - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, HexItems.AMETHYST_DUST, + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, HexItems.AMETHYST_DUST.get(), (int) (MediaConstants.QUENCHED_SHARD_UNIT / MediaConstants.DUST_UNIT) + 1) - .requires(HexItems.QUENCHED_SHARD) - .requires(HexItems.AMETHYST_DUST) - .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD)) + .requires(HexItems.QUENCHED_SHARD.get()) + .requires(HexItems.AMETHYST_DUST.get()) + .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD.get())) .save(recipes, modLoc("decompose_quenched_shard/dust")); ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, Items.AMETHYST_SHARD, (int) (MediaConstants.QUENCHED_SHARD_UNIT / MediaConstants.SHARD_UNIT) + 1) - .requires(HexItems.QUENCHED_SHARD) + .requires(HexItems.QUENCHED_SHARD.get()) .requires(Items.AMETHYST_SHARD) - .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD)) + .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD.get())) .save(recipes, modLoc("decompose_quenched_shard/shard")); - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, HexItems.CHARGED_AMETHYST, + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, HexItems.CHARGED_AMETHYST.get(), (int) (MediaConstants.QUENCHED_SHARD_UNIT / MediaConstants.CRYSTAL_UNIT) + 1) - .requires(HexItems.QUENCHED_SHARD) - .requires(HexItems.CHARGED_AMETHYST) - .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD)) + .requires(HexItems.QUENCHED_SHARD.get()) + .requires(HexItems.CHARGED_AMETHYST.get()) + .unlockedBy("has_item", hasItem(HexItems.QUENCHED_SHARD.get())) .save(recipes, modLoc("decompose_quenched_shard/charged")); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_BLOCK) - .define('S', HexItems.SLATE) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_BLOCK.get()) + .define('S', HexItems.SLATE.get()) .pattern("S") .pattern("S") - .unlockedBy("has_item", hasItem(HexItems.SLATE)) + .unlockedBy("has_item", hasItem(HexItems.SLATE.get())) .save(recipes, modLoc("slate_block_from_slates")); - ringAll(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_BLOCK, 8, Blocks.DEEPSLATE, HexItems.AMETHYST_DUST) - .unlockedBy("has_item", hasItem(HexItems.SLATE)).save(recipes); + ringAll(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_BLOCK.get(), 8, Blocks.DEEPSLATE, HexItems.AMETHYST_DUST.get()) + .unlockedBy("has_item", hasItem(HexItems.SLATE.get())).save(recipes); - packing(RecipeCategory.BUILDING_BLOCKS, HexItems.AMETHYST_DUST, HexBlocks.AMETHYST_DUST_BLOCK.asItem(), "amethyst_dust", + packing(RecipeCategory.BUILDING_BLOCKS, HexItems.AMETHYST_DUST.get(), HexBlocks.AMETHYST_DUST_BLOCK.get().asItem(), "amethyst_dust", false, recipes); - ringAll(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SCROLL_PAPER, 8, Items.PAPER, Items.AMETHYST_SHARD) + ringAll(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SCROLL_PAPER.get(), 8, Items.PAPER, Items.AMETHYST_SHARD) .unlockedBy("has_item", hasItem(Items.AMETHYST_SHARD)).save(recipes); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.ANCIENT_SCROLL_PAPER, 8) + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.ANCIENT_SCROLL_PAPER.get(), 8) .requires(ingredients.dyes().get(DyeColor.BROWN)) - .requires(HexBlocks.SCROLL_PAPER, 8) - .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER)).save(recipes); + .requires(HexBlocks.SCROLL_PAPER.get(), 8) + .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER.get())).save(recipes); - stack(RecipeCategory.DECORATIONS, HexBlocks.SCROLL_PAPER_LANTERN, 1, HexBlocks.SCROLL_PAPER, Items.TORCH) - .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER)).save(recipes); + stack(RecipeCategory.DECORATIONS, HexBlocks.SCROLL_PAPER_LANTERN.get(), 1, HexBlocks.SCROLL_PAPER.get(), Items.TORCH) + .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER.get())).save(recipes); - stack(RecipeCategory.DECORATIONS, HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, 1, HexBlocks.ANCIENT_SCROLL_PAPER, Items.TORCH) - .unlockedBy("has_item", hasItem(HexBlocks.ANCIENT_SCROLL_PAPER)).save(recipes); + stack(RecipeCategory.DECORATIONS, HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN.get(), 1, HexBlocks.ANCIENT_SCROLL_PAPER.get(), Items.TORCH) + .unlockedBy("has_item", hasItem(HexBlocks.ANCIENT_SCROLL_PAPER.get())).save(recipes); - ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, 8) + ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN.get(), 8) .requires(ingredients.dyes().get(DyeColor.BROWN)) - .requires(HexBlocks.SCROLL_PAPER_LANTERN, 8) - .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER_LANTERN)) + .requires(HexBlocks.SCROLL_PAPER_LANTERN.get(), 8) + .unlockedBy("has_item", hasItem(HexBlocks.SCROLL_PAPER_LANTERN.get())) .save(recipes, modLoc("ageing_scroll_paper_lantern")); - stack(RecipeCategory.DECORATIONS, HexBlocks.SCONCE, 4, - Ingredient.of(HexItems.CHARGED_AMETHYST), + stack(RecipeCategory.DECORATIONS, HexBlocks.SCONCE.get(), 4, + Ingredient.of(HexItems.CHARGED_AMETHYST.get()), ingredients.copperIngot()) - .unlockedBy("has_item", hasItem(HexItems.CHARGED_AMETHYST)).save(recipes); + .unlockedBy("has_item", hasItem(HexItems.CHARGED_AMETHYST.get())).save(recipes); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_PLANKS, 4) + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_PLANKS.get(), 4) .requires(HexTags.Items.EDIFIED_LOGS) .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_LOGS)).save(recipes); @@ -337,45 +337,45 @@ public void buildRecipes(RecipeOutput recipes) { .unlockedBy("has_item", hasItem(log)).save(recipes); } - ring(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_PANEL, 8, + ring(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_PANEL.get(), 8, HexTags.Items.EDIFIED_PLANKS, null) .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_TILE, 6) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_TILE.get(), 6) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("WW ") .pattern("W W") .pattern(" WW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_DOOR, 3) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_DOOR.get(), 3) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("WW") .pattern("WW") .pattern("WW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_TRAPDOOR, 2) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_TRAPDOOR.get(), 2) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("WWW") .pattern("WWW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_STAIRS, 4) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_STAIRS.get(), 4) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("W ") .pattern("WW ") .pattern("WWW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_FENCE, 3) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_FENCE.get(), 3) .define('W', HexTags.Items.EDIFIED_PLANKS) .define('S', Items.STICK) .pattern("WSW") .pattern("WSW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_FENCE_GATE, 1) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_FENCE_GATE.get(), 1) .define('W', HexTags.Items.EDIFIED_PLANKS) .define('S', Items.STICK) .pattern("SWS") @@ -383,42 +383,42 @@ public void buildRecipes(RecipeOutput recipes) { .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_SLAB, 6) + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, HexBlocks.EDIFIED_SLAB.get(), 6) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("WWW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_PRESSURE_PLATE, 1) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_PRESSURE_PLATE.get(), 1) .define('W', HexTags.Items.EDIFIED_PLANKS) .pattern("WW") .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); - ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_BUTTON) + ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, HexBlocks.EDIFIED_BUTTON.get()) .requires(HexTags.Items.EDIFIED_PLANKS) .unlockedBy("has_item", hasItem(HexTags.Items.EDIFIED_PLANKS)).save(recipes); var enlightenment = HexAdvancements.ENLIGHTEN; - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.IMPETUS_EMPTY) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.IMPETUS_EMPTY.get()) .define('B', Items.IRON_BARS) - .define('A', HexItems.CHARGED_AMETHYST) - .define('S', HexBlocks.SLATE_BLOCK) + .define('A', HexItems.CHARGED_AMETHYST.get()) + .define('S', HexBlocks.SLATE_BLOCK.get()) .define('P', Items.PURPUR_BLOCK) .pattern("PSS") .pattern("BAB") .pattern("SSP") .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EMPTY_DIRECTRIX) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EMPTY_DIRECTRIX.get()) .define('C', Items.COMPARATOR) .define('O', Items.OBSERVER) - .define('A', HexItems.CHARGED_AMETHYST) - .define('S', HexBlocks.SLATE_BLOCK) + .define('A', HexItems.CHARGED_AMETHYST.get()) + .define('S', HexBlocks.SLATE_BLOCK.get()) .pattern("CSS") .pattern("OAO") .pattern("SSC") .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_BOOKSHELF) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_BOOKSHELF.get()) .define('L', HexTags.Items.EDIFIED_LOGS) .define('P', HexTags.Items.EDIFIED_PLANKS) .define('C', Items.BOOK) @@ -427,47 +427,47 @@ public void buildRecipes(RecipeOutput recipes) { .pattern("LPL") .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); - ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_LIGATURE, 4) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_LIGATURE.get(), 4) .define('L', HexTags.Items.EDIFIED_LOGS) .define('P', HexTags.Items.EDIFIED_PLANKS) - .define('1', HexItems.AMETHYST_DUST) + .define('1', HexItems.AMETHYST_DUST.get()) .define('2', Items.AMETHYST_SHARD) - .define('3', HexItems.CHARGED_AMETHYST) + .define('3', HexItems.CHARGED_AMETHYST.get()) .pattern("LPL") .pattern("123") .pattern("LPL") .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); // Stone sets - stoneSet(recipes, HexBlocks.SLATE_BLOCK.asItem(), HexBlocks.SLATE_BRICKS.asItem(), HexBlocks.SLATE_BRICKS_SMALL.asItem(), HexBlocks.SLATE_TILES.asItem(), HexBlocks.SLATE_PILLAR.asItem()); - stoneSet(recipes, Blocks.AMETHYST_BLOCK.asItem(), HexBlocks.AMETHYST_BRICKS.asItem(), HexBlocks.AMETHYST_BRICKS_SMALL.asItem(), HexBlocks.AMETHYST_TILES.asItem(), HexBlocks.AMETHYST_PILLAR.asItem()); - stoneSet(recipes, HexBlocks.QUENCHED_ALLAY.asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS.asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.asItem(), HexBlocks.QUENCHED_ALLAY_TILES.asItem(), null); + stoneSet(recipes, HexBlocks.SLATE_BLOCK.get().asItem(), HexBlocks.SLATE_BRICKS.get().asItem(), HexBlocks.SLATE_BRICKS_SMALL.get().asItem(), HexBlocks.SLATE_TILES.get().asItem(), HexBlocks.SLATE_PILLAR.get().asItem()); + stoneSet(recipes, Blocks.AMETHYST_BLOCK.asItem(), HexBlocks.AMETHYST_BRICKS.get().asItem(), HexBlocks.AMETHYST_BRICKS_SMALL.get().asItem(), HexBlocks.AMETHYST_TILES.get().asItem(), HexBlocks.AMETHYST_PILLAR.get().asItem()); + stoneSet(recipes, HexBlocks.QUENCHED_ALLAY.get().asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS.get().asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get().asItem(), HexBlocks.QUENCHED_ALLAY_TILES.get().asItem(), null); // Stone sets in stonecutter - stoneCutterFromTag(recipes, HexTags.Items.SLATE_BLOCKS, HexBlocks.SLATE_BRICKS.asItem(), HexBlocks.SLATE_BRICKS_SMALL.asItem(), HexBlocks.SLATE_TILES.asItem(), HexBlocks.SLATE_PILLAR.asItem()); - stoneCutterFromTag(recipes, HexTags.Items.AMETHYST_BLOCKS, HexBlocks.AMETHYST_BRICKS.asItem(), HexBlocks.AMETHYST_BRICKS_SMALL.asItem(), HexBlocks.AMETHYST_TILES.asItem(), HexBlocks.AMETHYST_PILLAR.asItem()); - stoneCutterFromTag(recipes, HexTags.Items.QUENCHED_ALLAY_BLOCKS, HexBlocks.QUENCHED_ALLAY_BRICKS.asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.asItem(), HexBlocks.QUENCHED_ALLAY_TILES.asItem()); + stoneCutterFromTag(recipes, HexTags.Items.SLATE_BLOCKS, HexBlocks.SLATE_BRICKS.get().asItem(), HexBlocks.SLATE_BRICKS_SMALL.get().asItem(), HexBlocks.SLATE_TILES.get().asItem(), HexBlocks.SLATE_PILLAR.get().asItem()); + stoneCutterFromTag(recipes, HexTags.Items.AMETHYST_BLOCKS, HexBlocks.AMETHYST_BRICKS.get().asItem(), HexBlocks.AMETHYST_BRICKS_SMALL.get().asItem(), HexBlocks.AMETHYST_TILES.get().asItem(), HexBlocks.AMETHYST_PILLAR.get().asItem()); + stoneCutterFromTag(recipes, HexTags.Items.QUENCHED_ALLAY_BLOCKS, HexBlocks.QUENCHED_ALLAY_BRICKS.get().asItem(), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get().asItem(), HexBlocks.QUENCHED_ALLAY_TILES.get().asItem()); // Slate & Amethyst block set - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_BRICKS.asItem(), 2) - .requires(HexBlocks.SLATE_BRICKS) - .requires(HexBlocks.AMETHYST_BRICKS) - .unlockedBy("has_item", has(HexBlocks.SLATE)).save(recipes); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_BRICKS_SMALL.asItem(), 2) - .requires(HexBlocks.SLATE_BRICKS_SMALL) - .requires(HexBlocks.AMETHYST_BRICKS_SMALL) - .unlockedBy("has_item", has(HexBlocks.SLATE)).save(recipes); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_TILES.asItem(), 2) - .requires(HexBlocks.SLATE_TILES) - .requires(HexBlocks.AMETHYST_TILES) - .unlockedBy("has_item", has(HexBlocks.SLATE)).save(recipes); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_PILLAR.asItem(), 2) - .requires(HexBlocks.SLATE_PILLAR) - .requires(HexBlocks.AMETHYST_PILLAR) - .unlockedBy("has_item", has(HexBlocks.SLATE)).save(recipes); + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_BRICKS.get().asItem(), 2) + .requires(HexBlocks.SLATE_BRICKS.get()) + .requires(HexBlocks.AMETHYST_BRICKS.get()) + .unlockedBy("has_item", has(HexBlocks.SLATE.get())).save(recipes); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_BRICKS_SMALL.get().asItem(), 2) + .requires(HexBlocks.SLATE_BRICKS_SMALL.get()) + .requires(HexBlocks.AMETHYST_BRICKS_SMALL.get()) + .unlockedBy("has_item", has(HexBlocks.SLATE.get())).save(recipes); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_TILES.get().asItem(), 2) + .requires(HexBlocks.SLATE_TILES.get()) + .requires(HexBlocks.AMETHYST_TILES.get()) + .unlockedBy("has_item", has(HexBlocks.SLATE.get())).save(recipes); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, HexBlocks.SLATE_AMETHYST_PILLAR.get().asItem(), 2) + .requires(HexBlocks.SLATE_PILLAR.get()) + .requires(HexBlocks.AMETHYST_PILLAR.get()) + .unlockedBy("has_item", has(HexBlocks.SLATE.get())).save(recipes); new BrainsweepRecipeBuilder(HexStateIngredients.of(Blocks.AMETHYST_BLOCK), new VillagerIngredient(null, null, 3), @@ -475,46 +475,46 @@ public void buildRecipes(RecipeOutput recipes) { .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("budding_amethyst")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.TOOLSMITH, null, 2), - HexBlocks.IMPETUS_RIGHTCLICK.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.IMPETUS_RIGHTCLICK.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("impetus_rightclick")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.FLETCHER, null, 2), - HexBlocks.IMPETUS_LOOK.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.IMPETUS_LOOK.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("impetus_look")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.CLERIC, null, 2), - HexBlocks.IMPETUS_REDSTONE.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.IMPETUS_REDSTONE.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("impetus_storedplayer")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX.get()), new VillagerIngredient(VillagerProfession.MASON, null, 1), - HexBlocks.DIRECTRIX_REDSTONE.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.DIRECTRIX_REDSTONE.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("directrix_redstone")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX.get()), new VillagerIngredient(VillagerProfession.SHEPHERD, null, 1), - HexBlocks.DIRECTRIX_BOOLEAN.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.DIRECTRIX_BOOLEAN.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("directrix_boolean")); - new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.AKASHIC_LIGATURE), + new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.AKASHIC_LIGATURE.get()), new VillagerIngredient(VillagerProfession.LIBRARIAN, null, 5), - HexBlocks.AKASHIC_RECORD.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) + HexBlocks.AKASHIC_RECORD.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("akashic_record")); // Temporary tests new BrainsweepRecipeBuilder(HexStateIngredients.of(Blocks.AMETHYST_BLOCK), new EntityTypeIngredient(EntityType.ALLAY), - HexBlocks.QUENCHED_ALLAY.defaultBlockState(), MediaConstants.CRYSTAL_UNIT) + HexBlocks.QUENCHED_ALLAY.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT) .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) .save(recipes, modLoc("quench_allay")); @@ -524,8 +524,8 @@ public void buildRecipes(RecipeOutput recipes) { .withInput(Blocks.AMETHYST_CLUSTER) .duration(150) .withOutput(Items.AMETHYST_SHARD, 7) - .withOutput(HexItems.AMETHYST_DUST, 5) - .withOutput(0.25f, HexItems.CHARGED_AMETHYST)) + .withOutput(HexItems.AMETHYST_DUST.get(), 5) + .withOutput(0.25f, HexItems.CHARGED_AMETHYST.get())) .whenModLoaded("create") .save(recipes, ResourceLocation.fromNamespaceAndPath("create", "crushing/amethyst_cluster")); @@ -533,15 +533,15 @@ public void buildRecipes(RecipeOutput recipes) { .withInput(Blocks.AMETHYST_BLOCK) .duration(150) .withOutput(Items.AMETHYST_SHARD, 3) - .withOutput(0.5f, HexItems.AMETHYST_DUST, 4)) + .withOutput(0.5f, HexItems.AMETHYST_DUST.get(), 4)) .whenModLoaded("create") .save(recipes, ResourceLocation.fromNamespaceAndPath("create", "crushing/amethyst_block")); this.conditions.apply(new CreateCrushingRecipeBuilder() .withInput(Items.AMETHYST_SHARD) .duration(150) - .withOutput(HexItems.AMETHYST_DUST, 4) - .withOutput(0.5f, HexItems.AMETHYST_DUST)) + .withOutput(HexItems.AMETHYST_DUST.get(), 4) + .withOutput(0.5f, HexItems.AMETHYST_DUST.get())) .whenModLoaded("create") .save(recipes, modLoc("compat/create/crushing/amethyst_shard")); */ @@ -551,7 +551,7 @@ public void buildRecipes(RecipeOutput recipes) { this.conditions.apply(new FarmersDelightCuttingRecipeBuilder() .withInput(log) .withTool(ingredients.axeStrip()) - .withOutput(HexBlocks.STRIPPED_EDIFIED_LOG) + .withOutput(HexBlocks.STRIPPED_EDIFIED_LOG.get()) .withOutput("farmersdelight:tree_bark") .withSound(SoundEvents.AXE_STRIP)) .whenModLoaded("farmersdelight") @@ -559,25 +559,25 @@ public void buildRecipes(RecipeOutput recipes) { } this.conditions.apply(new FarmersDelightCuttingRecipeBuilder() - .withInput(HexBlocks.EDIFIED_WOOD) + .withInput(HexBlocks.EDIFIED_WOOD.get()) .withTool(ingredients.axeStrip()) - .withOutput(HexBlocks.STRIPPED_EDIFIED_WOOD) + .withOutput(HexBlocks.STRIPPED_EDIFIED_WOOD.get()) .withOutput("farmersdelight:tree_bark") .withSound(SoundEvents.AXE_STRIP)) .whenModLoaded("farmersdelight") .save(recipes, modLoc("compat/farmersdelight/cutting/akashic_wood")); this.conditions.apply(new FarmersDelightCuttingRecipeBuilder() - .withInput(HexBlocks.EDIFIED_TRAPDOOR) + .withInput(HexBlocks.EDIFIED_TRAPDOOR.get()) .withTool(ingredients.axeDig()) - .withOutput(HexBlocks.EDIFIED_PLANKS)) + .withOutput(HexBlocks.EDIFIED_PLANKS.get())) .whenModLoaded("farmersdelight") .save(recipes, modLoc("compat/farmersdelight/cutting/akashic_trapdoor")); this.conditions.apply(new FarmersDelightCuttingRecipeBuilder() - .withInput(HexBlocks.EDIFIED_DOOR) + .withInput(HexBlocks.EDIFIED_DOOR.get()) .withTool(ingredients.axeDig()) - .withOutput(HexBlocks.EDIFIED_PLANKS)) + .withOutput(HexBlocks.EDIFIED_PLANKS.get())) .whenModLoaded("farmersdelight") .save(recipes, modLoc("compat/farmersdelight/cutting/akashic_door")); } @@ -590,23 +590,23 @@ private void staffRecipe(RecipeOutput recipes, ItemStaff staff, Ingredient plank ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, staff) .define('W', plank) .define('S', Items.STICK) - .define('A', HexItems.CHARGED_AMETHYST) + .define('A', HexItems.CHARGED_AMETHYST.get()) .pattern(" SA") .pattern(" WS") .pattern("S ") - .unlockedBy("has_item", hasItem(HexItems.CHARGED_AMETHYST)) + .unlockedBy("has_item", hasItem(HexItems.CHARGED_AMETHYST.get())) .save(recipes); } private void gayRecipe(RecipeOutput recipes, ItemPridePigment.Type type, Ingredient material) { var colorizer = HexItems.PRIDE_PIGMENTS.get(type); - ShapedRecipeBuilder.shaped(RecipeCategory.MISC, colorizer) - .define('D', HexItems.AMETHYST_DUST) + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, colorizer.get()) + .define('D', HexItems.AMETHYST_DUST.get()) .define('C', material) .pattern(" D ") .pattern("DCD") .pattern(" D ") - .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST)) + .unlockedBy("has_item", hasItem(HexItems.AMETHYST_DUST.get())) .save(recipes); } diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexBlockTagProvider.java b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexBlockTagProvider.java index c96884c814..4c94c6985e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexBlockTagProvider.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexBlockTagProvider.java @@ -27,121 +27,121 @@ public HexBlockTagProvider(PackOutput output, CompletableFuture appender, Block... blocks) { diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java index 52806551eb..710c88f321 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/tag/HexItemTagProvider.java @@ -26,23 +26,23 @@ public HexItemTagProvider(PackOutput output, CompletableFuture { return null; diff --git a/Common/src/main/java/at/petrak/hexcasting/interop/utils/PhialRecipeStackBuilder.java b/Common/src/main/java/at/petrak/hexcasting/interop/utils/PhialRecipeStackBuilder.java index 42ccb38dec..ffa8502bf1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/interop/utils/PhialRecipeStackBuilder.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/utils/PhialRecipeStackBuilder.java @@ -14,7 +14,7 @@ public class PhialRecipeStackBuilder { private static ItemStack makeBattery(long unit, int size) { - return ItemMediaBattery.withMedia(new ItemStack(HexItems.BATTERY), unit * size, unit * size); + return ItemMediaBattery.withMedia(new ItemStack(HexItems.BATTERY.get()), unit * size, unit * size); } public static Pair, List> createStacks() { @@ -29,9 +29,9 @@ public static Pair, List> createStacks() { if (dust > 0) { - inputItems.add(new ItemStack(HexItems.AMETHYST_DUST, 1)); + inputItems.add(new ItemStack(HexItems.AMETHYST_DUST.get(), 1)); outputItems.add(makeBattery(dust, 1)); - inputItems.add(new ItemStack(HexItems.AMETHYST_DUST, 64)); + inputItems.add(new ItemStack(HexItems.AMETHYST_DUST.get(), 64)); outputItems.add(makeBattery(dust, 64)); } @@ -43,20 +43,20 @@ public static Pair, List> createStacks() { } if (charged > 0) { - inputItems.add(new ItemStack(HexItems.CHARGED_AMETHYST, 1)); + inputItems.add(new ItemStack(HexItems.CHARGED_AMETHYST.get(), 1)); outputItems.add(makeBattery(charged, 1)); - inputItems.add(new ItemStack(HexItems.CHARGED_AMETHYST, 64)); + inputItems.add(new ItemStack(HexItems.CHARGED_AMETHYST.get(), 64)); outputItems.add(makeBattery(charged, 64)); } - inputItems.add(new ItemStack(HexItems.QUENCHED_SHARD, 1)); + inputItems.add(new ItemStack(HexItems.QUENCHED_SHARD.get(), 1)); outputItems.add(makeBattery(quenchedShard, 1)); - inputItems.add(new ItemStack(HexItems.QUENCHED_SHARD, 64)); + inputItems.add(new ItemStack(HexItems.QUENCHED_SHARD.get(), 64)); outputItems.add(makeBattery(quenchedShard, 64)); - inputItems.add(new ItemStack(HexBlocks.QUENCHED_ALLAY, 1)); + inputItems.add(new ItemStack(HexBlocks.QUENCHED_ALLAY.get(), 1)); outputItems.add(makeBattery(quenchedBlock, 1)); - inputItems.add(new ItemStack(HexBlocks.QUENCHED_ALLAY, 64)); + inputItems.add(new ItemStack(HexBlocks.QUENCHED_ALLAY.get(), 64)); outputItems.add(makeBattery(quenchedBlock, 64)); return new Pair<>(inputItems, outputItems); diff --git a/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java b/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java index f304b2498d..6fdf57d364 100644 --- a/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java +++ b/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java @@ -28,7 +28,7 @@ private void addNewTrades(CallbackInfo ci) { return; RandomSource rand = self.getRandom(); if (rand.nextFloat() < HexConfig.server().traderScrollChance() && self.getServer() != null) { - ItemStack scroll = new ItemStack(HexItems.SCROLL_LARGE); + ItemStack scroll = new ItemStack(HexItems.SCROLL_LARGE.get()); AddPerWorldPatternToScrollFunc.doStatic(scroll, rand, self.getServer().overworld()); scroll.set(HexDataComponents.NEEDS_PURCHASE, Unit.INSTANCE); offerList.set(5, new MerchantOffer(new ItemCost(Items.EMERALD, 12), scroll, 1, 1, 1)); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index bd6f1c2bca..6b310d64a6 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -173,24 +173,15 @@ object FabricHexInitializer : ModInitializer { for (key in keyList) { r.accept( ItemScroll.withPerWorldPattern( - ItemStack(HexItems.SCROLL_LARGE), + ItemStack(HexItems.SCROLL_LARGE.get()), key ) ) } } ItemGroupEvents.modifyEntriesEvent(HexCreativeTabs.HEX_KEY).register { r -> - for (item in this.itemsToAddToCreativeTab) { - if (item is ItemMediaBattery) { - r.accept(HexItems.BATTERY_DUST_STACK.get()) - r.accept(HexItems.BATTERY_SHARD_STACK.get()) - r.accept(HexItems.BATTERY_CRYSTAL_STACK.get()) - r.accept(HexItems.BATTERY_QUENCHED_SHARD_STACK.get()) - r.accept(HexItems.BATTERY_QUENCHED_BLOCK_STACK.get()) - } else { - r.accept(item) - } - } + HexItems.registerItemsForCreativeTab(HexCreativeTabs.HEX_KEY, r) + HexBlocks.registerBlocksForCreativeTab(HexCreativeTabs.HEX_KEY, r) } } @@ -200,10 +191,10 @@ object FabricHexInitializer : ModInitializer { HexCreativeTabs.registerCreativeTabs(bind(BuiltInRegistries.CREATIVE_MODE_TAB)) HexSounds.register() - HexBlocks.registerBlocks(bind(BuiltInRegistries.BLOCK)) - HexBlocks.registerBlockItems(boundForItem) + HexBlocks.registerBlocks() + HexBlocks.registerBlockItems() HexBlockEntities.registerTiles(bind(BuiltInRegistries.BLOCK_ENTITY_TYPE)) - HexItems.registerItems(boundForItem) + HexItems.register() // Registry.register(IngredientDeserializer.REGISTRY, FabricModConditionalIngredient.ID, FabricModConditionalIngredient.Deserializer.INSTANCE) CustomIngredientSerializer.register(FabricUnsealedIngredient.Serializer.INSTANCE); CustomIngredientSerializer.register(FabricModConditionalIngredient.Serializer.INSTANCE); @@ -284,7 +275,7 @@ object FabricHexInitializer : ModInitializer { HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCMediaHolder.Static({ HexConfig.common().dustMediaAmount() }, ADMediaHolder.AMETHYST_DUST_PRIORITY, stack) - }, HexItems.AMETHYST_DUST) + }, HexItems.AMETHYST_DUST.get()) HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCMediaHolder.Static({ HexConfig.common().shardMediaAmount() }, ADMediaHolder.AMETHYST_SHARD_PRIORITY, stack) @@ -292,15 +283,15 @@ object FabricHexInitializer : ModInitializer { HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCMediaHolder.Static({ HexConfig.common().chargedCrystalMediaAmount() }, ADMediaHolder.CHARGED_AMETHYST_PRIORITY, stack) - }, HexItems.CHARGED_AMETHYST) + }, HexItems.CHARGED_AMETHYST.get()) HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCMediaHolder.Static({ MediaConstants.QUENCHED_SHARD_UNIT }, ADMediaHolder.QUENCHED_SHARD_PRIORITY, stack) - }, HexItems.QUENCHED_SHARD) + }, HexItems.QUENCHED_SHARD.get()) HexCardinalComponents.MEDIA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCMediaHolder.Static({ MediaConstants.QUENCHED_BLOCK_UNIT }, ADMediaHolder.QUENCHED_ALLAY_PRIORITY, stack) - }, HexBlocks.QUENCHED_ALLAY.asItem()) + }, HexBlocks.QUENCHED_ALLAY.get().asItem()) HexCardinalComponents.IOTA_HOLDER_LOOKUP.registerForItems({ stack, _ -> CCItemIotaHolder.Static(stack) { @@ -320,46 +311,46 @@ object FabricHexInitializer : ModInitializer { private fun butYouCouldBeFire() { val flameOn = FlammableBlockRegistry.getDefaultInstance() for (log in listOf( - HexBlocks.EDIFIED_LOG, - HexBlocks.EDIFIED_LOG_AMETHYST, - HexBlocks.EDIFIED_LOG_AVENTURINE, - HexBlocks.EDIFIED_LOG_CITRINE, - HexBlocks.EDIFIED_LOG_PURPLE, - HexBlocks.STRIPPED_EDIFIED_LOG, - HexBlocks.EDIFIED_WOOD, - HexBlocks.STRIPPED_EDIFIED_LOG, + HexBlocks.EDIFIED_LOG.get(), + HexBlocks.EDIFIED_LOG_AMETHYST.get(), + HexBlocks.EDIFIED_LOG_AVENTURINE.get(), + HexBlocks.EDIFIED_LOG_CITRINE.get(), + HexBlocks.EDIFIED_LOG_PURPLE.get(), + HexBlocks.STRIPPED_EDIFIED_LOG.get(), + HexBlocks.EDIFIED_WOOD.get(), + HexBlocks.STRIPPED_EDIFIED_LOG.get(), )) { flameOn.add(log, 5, 5) } for (wood in listOf( - HexBlocks.EDIFIED_PLANKS, - HexBlocks.EDIFIED_PANEL, - HexBlocks.EDIFIED_TILE, - HexBlocks.EDIFIED_DOOR, - HexBlocks.EDIFIED_TRAPDOOR, - HexBlocks.EDIFIED_STAIRS, - HexBlocks.EDIFIED_SLAB, - HexBlocks.EDIFIED_FENCE, - HexBlocks.EDIFIED_FENCE_GATE, - HexBlocks.EDIFIED_SLAB, - HexBlocks.EDIFIED_BUTTON, - HexBlocks.EDIFIED_PRESSURE_PLATE, + HexBlocks.EDIFIED_PLANKS.get(), + HexBlocks.EDIFIED_PANEL.get(), + HexBlocks.EDIFIED_TILE.get(), + HexBlocks.EDIFIED_DOOR.get(), + HexBlocks.EDIFIED_TRAPDOOR.get(), + HexBlocks.EDIFIED_STAIRS.get(), + HexBlocks.EDIFIED_SLAB.get(), + HexBlocks.EDIFIED_FENCE.get(), + HexBlocks.EDIFIED_FENCE_GATE.get(), + HexBlocks.EDIFIED_SLAB.get(), + HexBlocks.EDIFIED_BUTTON.get(), + HexBlocks.EDIFIED_PRESSURE_PLATE.get(), )) { flameOn.add(wood, 20, 5) } for (papery in listOf( - HexBlocks.SCROLL_PAPER, - HexBlocks.SCROLL_PAPER_LANTERN, - HexBlocks.ANCIENT_SCROLL_PAPER, - HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, + HexBlocks.SCROLL_PAPER.get(), + HexBlocks.SCROLL_PAPER_LANTERN.get(), + HexBlocks.ANCIENT_SCROLL_PAPER.get(), + HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN.get(), )) { flameOn.add(papery, 100, 60) } for (leaves in listOf( - HexBlocks.AMETHYST_EDIFIED_LEAVES, - HexBlocks.AVENTURINE_EDIFIED_LEAVES, - HexBlocks.CITRINE_EDIFIED_LEAVES, + HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), + HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), + HexBlocks.CITRINE_EDIFIED_LEAVES.get(), )) { flameOn.add(leaves, 60, 30) } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java index e3d9a7be1e..faf5af0ecb 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java @@ -26,16 +26,16 @@ public class EmiEdifyRecipe implements EmiRecipe { public EmiEdifyRecipe() { this.saplings = EmiIngredient.of(ItemTags.SAPLINGS); this.leaves = EmiIngredient.of(List.of( - EmiStack.of(HexBlocks.AMETHYST_EDIFIED_LEAVES), - EmiStack.of(HexBlocks.AVENTURINE_EDIFIED_LEAVES), - EmiStack.of(HexBlocks.CITRINE_EDIFIED_LEAVES) + EmiStack.of(HexBlocks.AMETHYST_EDIFIED_LEAVES.get()), + EmiStack.of(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get()), + EmiStack.of(HexBlocks.CITRINE_EDIFIED_LEAVES.get()) )); this.log = EmiIngredient.of(List.of( - EmiStack.of(HexBlocks.EDIFIED_LOG), - EmiStack.of(HexBlocks.EDIFIED_LOG_AMETHYST), - EmiStack.of(HexBlocks.EDIFIED_LOG_AVENTURINE), - EmiStack.of(HexBlocks.EDIFIED_LOG_CITRINE) -// EmiStack.of(HexBlocks.EDIFIED_LOG_PURPLE) + EmiStack.of(HexBlocks.EDIFIED_LOG.get()), + EmiStack.of(HexBlocks.EDIFIED_LOG_AMETHYST.get()), + EmiStack.of(HexBlocks.EDIFIED_LOG_AVENTURINE.get()), + EmiStack.of(HexBlocks.EDIFIED_LOG_CITRINE.get()) +// EmiStack.of(HexBlocks.EDIFIED_LOG_PURPLE.get()) )); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/LensTrinketRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/LensTrinketRenderer.java index 8cdf397292..36eb1dad82 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/LensTrinketRenderer.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/LensTrinketRenderer.java @@ -22,7 +22,7 @@ public class LensTrinketRenderer implements TrinketRenderer { @Override public void render(ItemStack stack, SlotReference slotReference, EntityModel model, PoseStack matrices, MultiBufferSource multiBufferSource, int light, LivingEntity entity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch) { - if (stack.is(HexItems.SCRYING_LENS) && + if (stack.is(HexItems.SCRYING_LENS.get()) && model instanceof PlayerModel playerModel && entity instanceof AbstractClientPlayer player) { // from https://github.com/Creators-of-Create/Create/blob/ee33823ed0b5084af10ed131a1626ce71db4c07e/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/TrinketsInterop.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/TrinketsInterop.java index 4bff15f353..dead29c0c9 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/TrinketsInterop.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/trinkets/TrinketsInterop.java @@ -61,6 +61,6 @@ public Multimap, AttributeModifier> getModifiers(ItemStack sta @Environment(EnvType.CLIENT) public static void clientInit() { - registerRenderer(HexItems.SCRYING_LENS, new LensTrinketRenderer()); + registerRenderer(HexItems.SCRYING_LENS.get(), new LensTrinketRenderer()); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/loot/FabricHexLootModJankery.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/loot/FabricHexLootModJankery.java index c9f2f8ca40..7f8cbe6e97 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/loot/FabricHexLootModJankery.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/loot/FabricHexLootModJankery.java @@ -62,7 +62,7 @@ private static LootPool.Builder makeAmethystInjectPool() { private static LootPool.Builder makeScrollAddPool(int range) { return LootPool.lootPool() .setRolls(range < 0 ? ConstantValue.exactly(1) : UniformGenerator.between(-range, range)) - .add(LootItem.lootTableItem(HexItems.SCROLL_LARGE)) + .add(LootItem.lootTableItem(HexItems.SCROLL_LARGE.get())) .apply(() -> new AddPerWorldPatternToScrollFunc(List.of(new LootItemCondition[0]))); } @@ -70,14 +70,14 @@ private static LootPool.Builder makeLoreAddPool(double chance) { return LootPool.lootPool() .when(LootItemRandomChanceCondition.randomChance((float) chance)) .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(HexItems.LORE_FRAGMENT)); + .add(LootItem.lootTableItem(HexItems.LORE_FRAGMENT.get())); } private static LootPool.Builder makeCypherAddPool(double chance) { return LootPool.lootPool() .when(LootItemRandomChanceCondition.randomChance((float) chance)) .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(HexItems.ANCIENT_CYPHER)) + .add(LootItem.lootTableItem(HexItems.ANCIENT_CYPHER.get())) .apply(() -> new AddHexToAncientCypherFunc(List.of(new LootItemCondition[0]))); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/mixin/FabricItemEntityMixin.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/mixin/FabricItemEntityMixin.java index 61f00bcbce..7dfe14d88b 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/mixin/FabricItemEntityMixin.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/mixin/FabricItemEntityMixin.java @@ -12,7 +12,7 @@ public class FabricItemEntityMixin { @Inject(method = "tick", at = @At("HEAD"), cancellable = true) private void tick(CallbackInfo ci) { ItemEntity entity = (ItemEntity) (Object) this; - if (entity.getItem().is(HexItems.SLATE) && HexItems.SLATE.onEntityItemUpdate(entity.getItem(), entity)) + if (entity.getItem().is(HexItems.SLATE.get()) && HexItems.SLATE.get().onEntityItemUpdate(entity.getItem(), entity)) ci.cancel(); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/storage/FabricImpetusStorage.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/storage/FabricImpetusStorage.kt index 3b8acafb58..19c93e2237 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/storage/FabricImpetusStorage.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/storage/FabricImpetusStorage.kt @@ -14,7 +14,7 @@ class FabricImpetusStorage(val impetus: BlockEntityAbstractImpetus) : SingleSlot fun registerStorage() { ItemStorage.SIDED.registerForBlocks({ _, _, _, blockEntity, _ -> (blockEntity as? BlockEntityAbstractImpetus)?.let(::FabricImpetusStorage) - }, HexBlocks.IMPETUS_RIGHTCLICK, HexBlocks.IMPETUS_LOOK, HexBlocks.IMPETUS_REDSTONE) + }, HexBlocks.IMPETUS_RIGHTCLICK.get(), HexBlocks.IMPETUS_LOOK.get(), HexBlocks.IMPETUS_REDSTONE.get()) } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java index 1cc21331a5..c0978f26dd 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java @@ -102,6 +102,7 @@ public boolean fabricAdditionalQuenchFrustumCheck(AABB aabb) { @Override public String getModelLocVariant() { - return ModelResourceLocation.INVENTORY_VARIANT; + // used to be ModelResourceLocation.INVENTORY_VARIANT, but for some reason fabric doesn't have those anymore since the 1.21 port. + return "fabric_resource"; } } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index f0e060a621..dd0b4d5a16 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -119,10 +119,10 @@ private static void initRegistry() { bind(Registries.CREATIVE_MODE_TAB, HexCreativeTabs::registerCreativeTabs); - bind(Registries.BLOCK, HexBlocks::registerBlocks); - bind(Registries.ITEM, HexBlocks::registerBlockItems); + HexBlocks.registerBlocks(); + HexBlocks.registerBlockItems(); bind(Registries.BLOCK_ENTITY_TYPE, HexBlockEntities::registerTiles); - bind(Registries.ITEM, HexItems::registerItems); + HexItems.register(); bind(Registries.DATA_COMPONENT_TYPE, HexDataComponents::registerDataComponents); bind(Registries.RECIPE_SERIALIZER, HexRecipeStuffRegistry::registerSerializers); @@ -193,8 +193,8 @@ private static void initListeners() { })); modBus.addListener((BuildCreativeModeTabContentsEvent evt) -> { - HexBlocks.registerBlockCreativeTab(evt::accept, evt.getTab()); - HexItems.registerItemCreativeTab(evt, evt.getTab()); + HexBlocks.registerBlocksForCreativeTab(evt.getTabKey(), evt); + HexItems.registerItemsForCreativeTab(evt.getTabKey(), evt); }); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java index 02b06c5acb..7b257ad40a 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java @@ -44,7 +44,7 @@ public static void registerCaps(RegisterCapabilitiesEvent evt) { evt.registerItem( HexCapabilities.Item.MEDIA, (stack, ctx) -> new CapStaticMediaHolder(HexConfig.common()::dustMediaAmount, ADMediaHolder.AMETHYST_DUST_PRIORITY, stack), - HexItems.AMETHYST_DUST + HexItems.AMETHYST_DUST.get() ); evt.registerItem( HexCapabilities.Item.MEDIA, @@ -54,17 +54,17 @@ public static void registerCaps(RegisterCapabilitiesEvent evt) { evt.registerItem( HexCapabilities.Item.MEDIA, (stack, ctx) -> new CapStaticMediaHolder(HexConfig.common()::chargedCrystalMediaAmount, ADMediaHolder.CHARGED_AMETHYST_PRIORITY, stack), - HexItems.CHARGED_AMETHYST + HexItems.CHARGED_AMETHYST.get() ); evt.registerItem( HexCapabilities.Item.MEDIA, (stack, ctx) -> new CapStaticMediaHolder(() -> MediaConstants.QUENCHED_SHARD_UNIT, ADMediaHolder.QUENCHED_SHARD_PRIORITY, stack), - HexItems.QUENCHED_SHARD + HexItems.QUENCHED_SHARD.get() ); evt.registerItem( HexCapabilities.Item.MEDIA, (stack, ctx) -> new CapStaticMediaHolder(() -> MediaConstants.QUENCHED_BLOCK_UNIT, ADMediaHolder.QUENCHED_ALLAY_PRIORITY, stack), - HexBlocks.QUENCHED_ALLAY.asItem() + HexBlocks.QUENCHED_ALLAY.get().asItem() ); // haha yes diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexBlockStatesAndModels.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexBlockStatesAndModels.java index e06968977e..d1f11fd7aa 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexBlockStatesAndModels.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexBlockStatesAndModels.java @@ -34,7 +34,7 @@ protected void blockAndItem(Block block, BlockModelBuilder model) { @Override protected void registerStatesAndModels() { var slateModel = models().getExistingFile(modLoc("slate")); - getVariantBuilder(HexBlocks.SLATE).forAllStatesExcept(bs -> { + getVariantBuilder(HexBlocks.SLATE.get()).forAllStatesExcept(bs -> { int rotationX = 0; int rotationY = 0; switch (bs.getValue(BlockSlate.ATTACH_FACE)) { @@ -52,10 +52,10 @@ protected void registerStatesAndModels() { .build(); }, BlockSlate.WATERLOGGED); - impetus(HexBlocks.IMPETUS_EMPTY, "impetus/empty", "empty", false); - impetus(HexBlocks.IMPETUS_RIGHTCLICK, "impetus/rightclick", "rightclick", true); - impetus(HexBlocks.IMPETUS_LOOK, "impetus/look", "look", true); - impetus(HexBlocks.IMPETUS_REDSTONE, "impetus/redstone", "redstone", true); + impetus(HexBlocks.IMPETUS_EMPTY.get(), "impetus/empty", "empty", false); + impetus(HexBlocks.IMPETUS_RIGHTCLICK.get(), "impetus/rightclick", "rightclick", true); + impetus(HexBlocks.IMPETUS_LOOK.get(), "impetus/look", "look", true); + impetus(HexBlocks.IMPETUS_REDSTONE.get(), "impetus/redstone", "redstone", true); doAllTheDirectrices(); var akashicRecordModel = models().withExistingParent("akashic_record", "block/block") @@ -72,9 +72,9 @@ protected void registerStatesAndModels() { .allFaces((dir, builder) -> builder.texture("#inner").rotation(ModelBuilder.FaceRotation.UPSIDE_DOWN)) .end(); - simpleBlock(HexBlocks.AKASHIC_RECORD, akashicRecordModel); - simpleBlockItem(HexBlocks.AKASHIC_RECORD, akashicRecordModel); - blockAndItem(HexBlocks.AKASHIC_LIGATURE, + simpleBlock(HexBlocks.AKASHIC_RECORD.get(), akashicRecordModel); + simpleBlockItem(HexBlocks.AKASHIC_RECORD.get(), akashicRecordModel); + blockAndItem(HexBlocks.AKASHIC_LIGATURE.get(), models().cubeAll("akashic_ligature", modLoc("block/akashic_ligature"))); models().getBuilder("akashic_bookshelf") @@ -93,7 +93,7 @@ protected void registerStatesAndModels() { .element() .face(Direction.NORTH).texture("#overlay").cullface(Direction.NORTH).tintindex(0); - getVariantBuilder(HexBlocks.AKASHIC_BOOKSHELF).forAllStates(bs -> { + getVariantBuilder(HexBlocks.AKASHIC_BOOKSHELF.get()).forAllStates(bs -> { Direction dir = bs.getValue(BlockAkashicBookshelf.FACING); var builder = ConfiguredModel.builder(); @@ -118,7 +118,7 @@ protected void registerStatesAndModels() { modLoc("block/akashic_bookshelf_vert")); if (dir == Direction.NORTH) { - simpleBlockItem(HexBlocks.AKASHIC_BOOKSHELF, model); + simpleBlockItem(HexBlocks.AKASHIC_BOOKSHELF.get(), model); } builder.modelFile(model) @@ -130,89 +130,89 @@ protected void registerStatesAndModels() { }); - blockAndItem(HexBlocks.SLATE_BLOCK, models().cubeAll("slate_block", modLoc("block/slate_block"))); - blockAndItem(HexBlocks.SLATE_TILES, models().cubeAll("block/deco/slate_tiles", modLoc("block/deco/slate_tiles"))); - blockAndItem(HexBlocks.SLATE_BRICKS, models().cubeAll("block/deco/slate_bricks", modLoc("block/deco/slate_bricks"))); - blockAndItem(HexBlocks.SLATE_BRICKS_SMALL, models().cubeAll("block/deco/slate_bricks_small", modLoc("block/deco/slate_bricks_small"))); - axisBlock(HexBlocks.SLATE_PILLAR, modLoc("block/deco/slate_pillar")); - blockAndItem(HexBlocks.AMETHYST_DUST_BLOCK, + blockAndItem(HexBlocks.SLATE_BLOCK.get(), models().cubeAll("slate_block", modLoc("block/slate_block"))); + blockAndItem(HexBlocks.SLATE_TILES.get(), models().cubeAll("block/deco/slate_tiles", modLoc("block/deco/slate_tiles"))); + blockAndItem(HexBlocks.SLATE_BRICKS.get(), models().cubeAll("block/deco/slate_bricks", modLoc("block/deco/slate_bricks"))); + blockAndItem(HexBlocks.SLATE_BRICKS_SMALL.get(), models().cubeAll("block/deco/slate_bricks_small", modLoc("block/deco/slate_bricks_small"))); + axisBlock(HexBlocks.SLATE_PILLAR.get(), modLoc("block/deco/slate_pillar")); + blockAndItem(HexBlocks.AMETHYST_DUST_BLOCK.get(), models().singleTexture("amethyst_dust_block", modLoc(BLOCK_FOLDER + "/cube_half_mirrored"), "all", modLoc("block/amethyst_dust_block"))); - blockAndItem(HexBlocks.AMETHYST_TILES, models().cubeAll("block/deco/amethyst_tiles", modLoc("block/deco/amethyst_tiles"))); - blockAndItem(HexBlocks.AMETHYST_BRICKS, models().cubeAll("block/deco/amethyst_bricks", modLoc("block/deco/amethyst_bricks"))); - blockAndItem(HexBlocks.AMETHYST_BRICKS_SMALL, models().cubeAll("block/deco/amethyst_bricks_small", modLoc("block/deco/amethyst_bricks_small"))); - directionalBlock(HexBlocks.AMETHYST_PILLAR, + blockAndItem(HexBlocks.AMETHYST_TILES.get(), models().cubeAll("block/deco/amethyst_tiles", modLoc("block/deco/amethyst_tiles"))); + blockAndItem(HexBlocks.AMETHYST_BRICKS.get(), models().cubeAll("block/deco/amethyst_bricks", modLoc("block/deco/amethyst_bricks"))); + blockAndItem(HexBlocks.AMETHYST_BRICKS_SMALL.get(), models().cubeAll("block/deco/amethyst_bricks_small", modLoc("block/deco/amethyst_bricks_small"))); + directionalBlock(HexBlocks.AMETHYST_PILLAR.get(), models().cubeBottomTop("block/deco/amethyst_pillar", modLoc("block/deco/amethyst_pillar_side"), modLoc("block/deco/amethyst_pillar_bottom"), modLoc("block/deco/amethyst_pillar_top"))); - blockAndItem(HexBlocks.SLATE_AMETHYST_TILES, models().cubeAll("block/deco/slate_amethyst_tiles", modLoc("block/deco/slate_amethyst_tiles"))); + blockAndItem(HexBlocks.SLATE_AMETHYST_TILES.get(), models().cubeAll("block/deco/slate_amethyst_tiles", modLoc("block/deco/slate_amethyst_tiles"))); - simpleBlock(HexBlocks.SLATE_AMETHYST_BRICKS, + simpleBlock(HexBlocks.SLATE_AMETHYST_BRICKS.get(), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_0", modLoc("block/deco/slate_amethyst_bricks_0"))), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_1", modLoc("block/deco/slate_amethyst_bricks_1"))), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_2", modLoc("block/deco/slate_amethyst_bricks_2"))) ); - simpleBlockItem(HexBlocks.SLATE_AMETHYST_BRICKS, models().cubeAll("block/deco/slate_amethyst_bricks_0", modLoc("block/deco/slate_amethyst_bricks_0"))); + simpleBlockItem(HexBlocks.SLATE_AMETHYST_BRICKS.get(), models().cubeAll("block/deco/slate_amethyst_bricks_0", modLoc("block/deco/slate_amethyst_bricks_0"))); - simpleBlock(HexBlocks.SLATE_AMETHYST_BRICKS_SMALL, + simpleBlock(HexBlocks.SLATE_AMETHYST_BRICKS_SMALL.get(), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_small_0", modLoc("block/deco/slate_amethyst_bricks_small_0"))), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_small_1", modLoc("block/deco/slate_amethyst_bricks_small_1"))), new ConfiguredModel(models().cubeAll("block/deco/slate_amethyst_bricks_small_2", modLoc("block/deco/slate_amethyst_bricks_small_2"))) ); - simpleBlockItem(HexBlocks.SLATE_AMETHYST_BRICKS_SMALL, models().cubeAll("block/deco/slate_amethyst_bricks_small_0", modLoc("block/deco/slate_amethyst_bricks_small_0"))); + simpleBlockItem(HexBlocks.SLATE_AMETHYST_BRICKS_SMALL.get(), models().cubeAll("block/deco/slate_amethyst_bricks_small_0", modLoc("block/deco/slate_amethyst_bricks_small_0"))); - axisBlock(HexBlocks.SLATE_AMETHYST_PILLAR, modLoc("block/deco/slate_amethyst_pillar")); - cubeBlockAndItem(HexBlocks.SCROLL_PAPER, "scroll_paper"); - cubeBlockAndItem(HexBlocks.ANCIENT_SCROLL_PAPER, "ancient_scroll_paper"); + axisBlock(HexBlocks.SLATE_AMETHYST_PILLAR.get(), modLoc("block/deco/slate_amethyst_pillar")); + cubeBlockAndItem(HexBlocks.SCROLL_PAPER.get(), "scroll_paper"); + cubeBlockAndItem(HexBlocks.ANCIENT_SCROLL_PAPER.get(), "ancient_scroll_paper"); - blockAndItem(HexBlocks.SCROLL_PAPER_LANTERN, models().cubeBottomTop("scroll_paper_lantern", + blockAndItem(HexBlocks.SCROLL_PAPER_LANTERN.get(), models().cubeBottomTop("scroll_paper_lantern", modLoc("block/scroll_paper_lantern_side"), modLoc("block/scroll_paper_lantern_bottom"), modLoc("block/scroll_paper_lantern_top"))); - blockAndItem(HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, + blockAndItem(HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN.get(), models().cubeBottomTop("ancient_scroll_paper_lantern", modLoc("block/ancient_scroll_paper_lantern_side"), modLoc("block/ancient_scroll_paper_lantern_bottom"), modLoc("block/ancient_scroll_paper_lantern_top"))); - axisBlock(HexBlocks.EDIFIED_LOG, modLoc("block/edified_log"), modLoc("block/edified_log_top")); - axisBlock(HexBlocks.EDIFIED_LOG_AMETHYST, modLoc("block/deco/edified_log_amethyst"), modLoc("block/edified_log_top")); - axisBlock(HexBlocks.EDIFIED_LOG_AVENTURINE, modLoc("block/deco/edified_log_aventurine"), modLoc("block/edified_log_top")); - axisBlock(HexBlocks.EDIFIED_LOG_CITRINE, modLoc("block/deco/edified_log_citrine"), modLoc("block/edified_log_top")); - axisBlock(HexBlocks.EDIFIED_LOG_PURPLE, modLoc("block/deco/edified_log_purple"), modLoc("block/edified_log_top")); - axisBlock(HexBlocks.STRIPPED_EDIFIED_LOG, modLoc("block/stripped_edified_log"), + axisBlock(HexBlocks.EDIFIED_LOG.get(), modLoc("block/edified_log"), modLoc("block/edified_log_top")); + axisBlock(HexBlocks.EDIFIED_LOG_AMETHYST.get(), modLoc("block/deco/edified_log_amethyst"), modLoc("block/edified_log_top")); + axisBlock(HexBlocks.EDIFIED_LOG_AVENTURINE.get(), modLoc("block/deco/edified_log_aventurine"), modLoc("block/edified_log_top")); + axisBlock(HexBlocks.EDIFIED_LOG_CITRINE.get(), modLoc("block/deco/edified_log_citrine"), modLoc("block/edified_log_top")); + axisBlock(HexBlocks.EDIFIED_LOG_PURPLE.get(), modLoc("block/deco/edified_log_purple"), modLoc("block/edified_log_top")); + axisBlock(HexBlocks.STRIPPED_EDIFIED_LOG.get(), modLoc("block/stripped_edified_log"), modLoc("block/stripped_edified_log_top")); - axisBlock(HexBlocks.EDIFIED_WOOD, modLoc("block/edified_log"), modLoc("block/edified_log")); - axisBlock(HexBlocks.STRIPPED_EDIFIED_WOOD, modLoc("block/stripped_edified_log"), + axisBlock(HexBlocks.EDIFIED_WOOD.get(), modLoc("block/edified_log"), modLoc("block/edified_log")); + axisBlock(HexBlocks.STRIPPED_EDIFIED_WOOD.get(), modLoc("block/stripped_edified_log"), modLoc("block/stripped_edified_log")); - blockAndItem(HexBlocks.EDIFIED_PANEL, models().cubeAll("edified_panel", modLoc("block/edified_panel"))); - blockAndItem(HexBlocks.EDIFIED_TILE, models().cubeAll("edified_tile", modLoc("block/edified_tile"))); + blockAndItem(HexBlocks.EDIFIED_PANEL.get(), models().cubeAll("edified_panel", modLoc("block/edified_panel"))); + blockAndItem(HexBlocks.EDIFIED_TILE.get(), models().cubeAll("edified_tile", modLoc("block/edified_tile"))); ResourceLocation leavesParent = ResourceLocation.withDefaultNamespace("block/leaves"); - blockAndItem(HexBlocks.AMETHYST_EDIFIED_LEAVES, + blockAndItem(HexBlocks.AMETHYST_EDIFIED_LEAVES.get(), models().withExistingParent("amethyst_edified_leaves", leavesParent) .texture("all", modLoc("block/amethyst_edified_leaves")) .renderType("cutout_mipped")); - blockAndItem(HexBlocks.AVENTURINE_EDIFIED_LEAVES, + blockAndItem(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get(), models().withExistingParent("aventurine_edified_leaves", leavesParent) .texture("all", modLoc("block/aventurine_edified_leaves")) .renderType("cutout_mipped")); - blockAndItem(HexBlocks.CITRINE_EDIFIED_LEAVES, + blockAndItem(HexBlocks.CITRINE_EDIFIED_LEAVES.get(), models().withExistingParent("citrine_edified_leaves", leavesParent) .texture("all", modLoc("block/citrine_edified_leaves")) .renderType("cutout_mipped")); - doorBlockWithRenderType(HexBlocks.EDIFIED_DOOR, modLoc("block/edified_door_lower"), modLoc("block" + + doorBlockWithRenderType(HexBlocks.EDIFIED_DOOR.get(), modLoc("block/edified_door_lower"), modLoc("block" + "/edified_door_upper"), "cutout"); // door model via the given texture - trapdoorBlockWithRenderType(HexBlocks.EDIFIED_TRAPDOOR, modLoc("block/edified_trapdoor"), true, "cutout"); + trapdoorBlockWithRenderType(HexBlocks.EDIFIED_TRAPDOOR.get(), modLoc("block/edified_trapdoor"), true, "cutout"); ResourceLocation planks1 = modLoc("block/edified_planks"); BlockModelBuilder planksModel = models().cubeAll("edified_planks", planks1); - simpleBlock(HexBlocks.EDIFIED_PLANKS, ConfiguredModel.builder() + simpleBlock(HexBlocks.EDIFIED_PLANKS.get(), ConfiguredModel.builder() .modelFile(planksModel) .weight(3) .nextModel() @@ -221,29 +221,29 @@ protected void registerStatesAndModels() { .nextModel() .modelFile(models().cubeAll("edified_planks_3", modLoc("block/edified_planks_3"))) .build()); - simpleBlockItem(HexBlocks.EDIFIED_PLANKS, planksModel); + simpleBlockItem(HexBlocks.EDIFIED_PLANKS.get(), planksModel); - stairsBlock(HexBlocks.EDIFIED_STAIRS, planks1); - fenceBlock(HexBlocks.EDIFIED_FENCE, planks1); - fenceGateBlock(HexBlocks.EDIFIED_FENCE_GATE, planks1); - slabBlock(HexBlocks.EDIFIED_SLAB, planks1, planks1); - buttonBlock(HexBlocks.EDIFIED_BUTTON, planks1); - pressurePlateBlock(HexBlocks.EDIFIED_PRESSURE_PLATE, planks1); + stairsBlock(HexBlocks.EDIFIED_STAIRS.get(), planks1); + fenceBlock(HexBlocks.EDIFIED_FENCE.get(), planks1); + fenceGateBlock(HexBlocks.EDIFIED_FENCE_GATE.get(), planks1); + slabBlock(HexBlocks.EDIFIED_SLAB.get(), planks1, planks1); + buttonBlock(HexBlocks.EDIFIED_BUTTON.get(), planks1); + pressurePlateBlock(HexBlocks.EDIFIED_PRESSURE_PLATE.get(), planks1); var sconceModel = models().getExistingFile(modLoc("amethyst_sconce")); - directionalBlock(HexBlocks.SCONCE, sconceModel); - simpleBlockItem(HexBlocks.SCONCE, sconceModel); + directionalBlock(HexBlocks.SCONCE.get(), sconceModel); + simpleBlockItem(HexBlocks.SCONCE.get(), sconceModel); var conjuredModel = models().getBuilder("conjured").texture("particle", mcLoc("block/amethyst_block")) .renderType("cutout"); - simpleBlock(HexBlocks.CONJURED_BLOCK, conjuredModel); - simpleBlock(HexBlocks.CONJURED_LIGHT, conjuredModel); + simpleBlock(HexBlocks.CONJURED_BLOCK.get(), conjuredModel); + simpleBlock(HexBlocks.CONJURED_LIGHT.get(), conjuredModel); // for the break particles - simpleBlock(HexBlocks.QUENCHED_ALLAY, models().cubeAll("quenched_allay", modLoc("block/quenched_allay_0"))); - simpleBlock(HexBlocks.QUENCHED_ALLAY_TILES, models().cubeAll("quenched_allay_tiles", modLoc("block/deco/quenched_allay_tiles_0"))); - simpleBlock(HexBlocks.QUENCHED_ALLAY_BRICKS, models().cubeAll("quenched_allay_bricks", modLoc("block/deco/quenched_allay_bricks_0"))); - simpleBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL, models().cubeAll("quenched_allay_bricks_small", modLoc("block/deco/quenched_allay_bricks_small_0"))); + simpleBlock(HexBlocks.QUENCHED_ALLAY.get(), models().cubeAll("quenched_allay", modLoc("block/quenched_allay_0"))); + simpleBlock(HexBlocks.QUENCHED_ALLAY_TILES.get(), models().cubeAll("quenched_allay_tiles", modLoc("block/deco/quenched_allay_tiles_0"))); + simpleBlock(HexBlocks.QUENCHED_ALLAY_BRICKS.get(), models().cubeAll("quenched_allay_bricks", modLoc("block/deco/quenched_allay_bricks_0"))); + simpleBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get(), models().cubeAll("quenched_allay_bricks_small", modLoc("block/deco/quenched_allay_bricks_small_0"))); } // Assumes that the bottom are always the same @@ -305,12 +305,12 @@ private void impetus(Block block, String name, String stub, boolean itemModelIsL } private void doAllTheDirectrices() { - arrowCircleBlock(HexBlocks.EMPTY_DIRECTRIX, "directrix/empty", modLoc("block/slate_block"), + arrowCircleBlock(HexBlocks.EMPTY_DIRECTRIX.get(), "directrix/empty", modLoc("block/slate_block"), "directrix/empty/front", "directrix/empty/top", "directrix/empty/left", "directrix/empty/right", "directrix/empty/back", false); // Note that "unpowered" means the jowls of the back face are ON. - getVariantBuilder(HexBlocks.DIRECTRIX_REDSTONE).forAllStates(bs -> { + getVariantBuilder(HexBlocks.DIRECTRIX_REDSTONE.get()).forAllStates(bs -> { var isLit = bs.getValue(BlockCircleComponent.ENERGIZED); var litness = isLit ? "lit" : "dim"; var isPowered = bs.getValue(BlockRedstoneDirectrix.REDSTONE_POWERED); @@ -364,7 +364,7 @@ private void doAllTheDirectrices() { .build(); }); - getVariantBuilder(HexBlocks.DIRECTRIX_BOOLEAN).forAllStates(bs -> { + getVariantBuilder(HexBlocks.DIRECTRIX_BOOLEAN.get()).forAllStates(bs -> { var isLit = bs.getValue(BlockCircleComponent.ENERGIZED); var litness = isLit ? "lit" : "dim"; var boolState = bs.getValue(BlockBooleanDirectrix.STATE); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java index de920bef71..864fb611ca 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java @@ -48,18 +48,18 @@ private String getPath(Block block) { @Override protected void registerModels() { - simpleItem(HexItems.AMETHYST_DUST); - simpleItem(HexItems.CHARGED_AMETHYST); - simpleItem(HexItems.SUBMARINE_SANDWICH); - simpleItem(HexItems.ABACUS); - brandishedItem(HexItems.JEWELER_HAMMER); - simpleItem(HexItems.CREATIVE_UNLOCKER); - simpleItem(HexItems.LORE_FRAGMENT); - - singleTexture(getPath(HexBlocks.CONJURED_BLOCK), + simpleItem(HexItems.AMETHYST_DUST.get()); + simpleItem(HexItems.CHARGED_AMETHYST.get()); + simpleItem(HexItems.SUBMARINE_SANDWICH.get()); + simpleItem(HexItems.ABACUS.get()); + brandishedItem(HexItems.JEWELER_HAMMER.get()); + simpleItem(HexItems.CREATIVE_UNLOCKER.get()); + simpleItem(HexItems.LORE_FRAGMENT.get()); + + singleTexture(getPath(HexBlocks.CONJURED_BLOCK.get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", ResourceLocation.withDefaultNamespace("item/amethyst_shard")); - singleTexture(getPath(HexBlocks.CONJURED_LIGHT), + singleTexture(getPath(HexBlocks.CONJURED_LIGHT.get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", ResourceLocation.withDefaultNamespace("item/amethyst_shard")); @@ -68,12 +68,12 @@ protected void registerModels() { simpleItem(modLoc("scroll_" + age + "_" + size)); } } - buildScroll(HexItems.SCROLL_SMOL, "small"); - buildScroll(HexItems.SCROLL_MEDIUM, "medium"); - buildScroll(HexItems.SCROLL_LARGE, "large"); + buildScroll(HexItems.SCROLL_SMOL.get(), "small"); + buildScroll(HexItems.SCROLL_MEDIUM.get(), "medium"); + buildScroll(HexItems.SCROLL_LARGE.get(), "large"); - simpleItem(HexItems.SCRYING_LENS); - getBuilder(getPath(HexItems.SCRYING_LENS)) + simpleItem(HexItems.SCRYING_LENS.get()); + getBuilder(getPath(HexItems.SCRYING_LENS.get())) .transforms() .transform(ItemDisplayContext.HEAD) .rotation(0f, 0f, 0f) @@ -85,46 +85,46 @@ protected void registerModels() { singleTexture("cherry_staff", ResourceLocation.withDefaultNamespace("item/handheld_rod"), "layer0", modLoc("item/staff/cherry")); - buildStaff(HexItems.STAFF_OAK, "oak"); - buildStaff(HexItems.STAFF_BIRCH, "birch"); - buildStaff(HexItems.STAFF_SPRUCE, "spruce"); - buildStaff(HexItems.STAFF_JUNGLE, "jungle"); - buildStaff(HexItems.STAFF_DARK_OAK, "dark_oak"); - buildStaff(HexItems.STAFF_ACACIA, "acacia"); - buildStaff(HexItems.STAFF_CRIMSON, "crimson"); - buildStaff(HexItems.STAFF_WARPED, "warped"); - buildStaff(HexItems.STAFF_MANGROVE, "mangrove"); - buildStaff(HexItems.STAFF_CHERRY, "cherry"); - buildStaff(HexItems.STAFF_BAMBOO, "bamboo"); - buildStaff(HexItems.STAFF_EDIFIED, "edified"); - buildStaff(HexItems.STAFF_MINDSPLICE, "mindsplice"); + buildStaff(HexItems.STAFF_OAK.get(), "oak"); + buildStaff(HexItems.STAFF_BIRCH.get(), "birch"); + buildStaff(HexItems.STAFF_SPRUCE.get(), "spruce"); + buildStaff(HexItems.STAFF_JUNGLE.get(), "jungle"); + buildStaff(HexItems.STAFF_DARK_OAK.get(), "dark_oak"); + buildStaff(HexItems.STAFF_ACACIA.get(), "acacia"); + buildStaff(HexItems.STAFF_CRIMSON.get(), "crimson"); + buildStaff(HexItems.STAFF_WARPED.get(), "warped"); + buildStaff(HexItems.STAFF_MANGROVE.get(), "mangrove"); + buildStaff(HexItems.STAFF_CHERRY.get(), "cherry"); + buildStaff(HexItems.STAFF_BAMBOO.get(), "bamboo"); + buildStaff(HexItems.STAFF_EDIFIED.get(), "edified"); + buildStaff(HexItems.STAFF_MINDSPLICE.get(), "mindsplice"); // again, doesn't like paths with slashes in them, so we do it manually buildFourVariantGaslight("item/staff/quenched", "item/staff/quenched", (name, path) -> singleTexture(path.getPath(), ResourceLocation.withDefaultNamespace("item/handheld_rod"), "layer0", modLoc(path.getPath()))); - buildFourVariantGaslight(getPath(HexItems.QUENCHED_SHARD), "item/quenched_shard", (name, path) -> + buildFourVariantGaslight(getPath(HexItems.QUENCHED_SHARD.get()), "item/quenched_shard", (name, path) -> singleTexture(path.getPath(), ResourceLocation.withDefaultNamespace("item/handheld"), "layer0", modLoc(path.getPath()))); - buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY), "block/quenched_allay", (name, path) -> + buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY.get()), "block/quenched_allay", (name, path) -> cubeAll(path.getPath(), path)); - buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_TILES), "block/deco/quenched_allay_tiles", (name, path) -> + buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_TILES.get()), "block/deco/quenched_allay_tiles", (name, path) -> cubeAll(path.getPath(), path)); - buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_BRICKS), "block/deco/quenched_allay_bricks", (name, path) -> + buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_BRICKS.get()), "block/deco/quenched_allay_bricks", (name, path) -> cubeAll(path.getPath(), path)); - buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL), "block/deco/quenched_allay_bricks_small", (name, path) -> + buildFourVariantGaslight(getPath(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()), "block/deco/quenched_allay_bricks_small", (name, path) -> cubeAll(path.getPath(), path)); simpleItem(modLoc("patchouli_book")); buildThoughtKnot(); - buildSealableIotaHolder(HexItems.FOCUS, "focus", HexItems.FOCUS.numVariants()); - buildSealableIotaHolder(HexItems.SPELLBOOK, "spellbook", HexItems.SPELLBOOK.numVariants()); + buildSealableIotaHolder(HexItems.FOCUS.get(), "focus", HexItems.FOCUS.get().numVariants()); + buildSealableIotaHolder(HexItems.SPELLBOOK.get(), "spellbook", HexItems.SPELLBOOK.get().numVariants()); - buildPackagedSpell(HexItems.ANCIENT_CYPHER, "ancient_cypher", HexItems.ANCIENT_CYPHER.numVariants()); - buildPackagedSpell(HexItems.CYPHER, "cypher", HexItems.CYPHER.numVariants()); - buildPackagedSpell(HexItems.TRINKET, "trinket", HexItems.TRINKET.numVariants()); - buildPackagedSpell(HexItems.ARTIFACT, "artifact", HexItems.ARTIFACT.numVariants()); + buildPackagedSpell(HexItems.ANCIENT_CYPHER.get(), "ancient_cypher", HexItems.ANCIENT_CYPHER.get().numVariants()); + buildPackagedSpell(HexItems.CYPHER.get(), "cypher", HexItems.CYPHER.get().numVariants()); + buildPackagedSpell(HexItems.TRINKET.get(), "trinket", HexItems.TRINKET.get().numVariants()); + buildPackagedSpell(HexItems.ARTIFACT.get(), "artifact", HexItems.ARTIFACT.get().numVariants()); int maxFill = 4; for (int size = 0; size < PHIAL_SIZES.length; size++) { @@ -136,7 +136,7 @@ protected void registerModels() { "layer0", modLoc("item/phial/" + name)); float fillProp = (float) fill / maxFill; - getBuilder(getPath(HexItems.BATTERY)).override() + getBuilder(getPath(HexItems.BATTERY.get())).override() .predicate(ItemMediaBattery.MEDIA_PREDICATE, fillProp) .predicate(ItemMediaBattery.MAX_MEDIA_PREDICATE, size) .model(new ModelFile.UncheckedModelFile(modLoc("item/" + name))) @@ -145,25 +145,25 @@ protected void registerModels() { } for (var dye : DyeColor.values()) { - singleTexture(getPath(HexItems.DYE_PIGMENTS.get(dye)), + singleTexture(getPath(HexItems.DYE_PIGMENTS.get(dye).get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", modLoc("item/colorizer/dye_" + dye.getName())); } for (var type : ItemPridePigment.Type.values()) { - singleTexture(getPath(HexItems.PRIDE_PIGMENTS.get(type)), + singleTexture(getPath(HexItems.PRIDE_PIGMENTS.get(type).get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", modLoc("item/colorizer/pride_" + type.getName())); } - singleTexture(getPath(HexItems.UUID_PIGMENT), ResourceLocation.withDefaultNamespace("item/generated"), + singleTexture(getPath(HexItems.UUID_PIGMENT.get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", modLoc("item/colorizer/uuid")); - singleTexture(getPath(HexItems.DEFAULT_PIGMENT), ResourceLocation.withDefaultNamespace("item/generated"), + singleTexture(getPath(HexItems.DEFAULT_PIGMENT.get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", modLoc("item/colorizer/default")); - singleTexture(getPath(HexItems.ANCIENT_PIGMENT), ResourceLocation.withDefaultNamespace("item/generated"), + singleTexture(getPath(HexItems.ANCIENT_PIGMENT.get()), ResourceLocation.withDefaultNamespace("item/generated"), "layer0", modLoc("item/colorizer/ancient")); simpleItem(modLoc("slate_blank")); simpleItem(modLoc("slate_written")); - getBuilder(getPath(HexItems.SLATE)).override() + getBuilder(getPath(HexItems.SLATE.get())).override() .predicate(ItemSlate.WRITTEN_PRED, 0) .model(new ModelFile.UncheckedModelFile(modLoc("item/slate_blank"))) .end() @@ -172,46 +172,46 @@ protected void registerModels() { .model(new ModelFile.UncheckedModelFile(modLoc("item/slate_written"))) .end(); - getBuilder(getPath(HexBlocks.SLATE_PILLAR)).parent( + getBuilder(getPath(HexBlocks.SLATE_PILLAR.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/slate_pillar"))); - getBuilder(getPath(HexBlocks.AMETHYST_PILLAR)).parent( + getBuilder(getPath(HexBlocks.AMETHYST_PILLAR.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/deco/amethyst_pillar"))); - getBuilder(getPath(HexBlocks.SLATE_AMETHYST_PILLAR)).parent( + getBuilder(getPath(HexBlocks.SLATE_AMETHYST_PILLAR.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/slate_amethyst_pillar"))); - getBuilder(getPath(HexBlocks.AKASHIC_RECORD)).parent( + getBuilder(getPath(HexBlocks.AKASHIC_RECORD.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/akashic_record"))); simpleItem(modLoc("edified_door")); - getBuilder(getPath(HexBlocks.EDIFIED_TRAPDOOR)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_TRAPDOOR.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_trapdoor_bottom"))); - getBuilder(getPath(HexBlocks.EDIFIED_LOG)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_LOG.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_log"))); - getBuilder(getPath(HexBlocks.EDIFIED_LOG_AMETHYST)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_LOG_AMETHYST.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_log_amethyst"))); - getBuilder(getPath(HexBlocks.EDIFIED_LOG_AVENTURINE)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_LOG_AVENTURINE.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_log_aventurine"))); - getBuilder(getPath(HexBlocks.EDIFIED_LOG_CITRINE)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_LOG_CITRINE.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_log_citrine"))); - getBuilder(getPath(HexBlocks.EDIFIED_LOG_PURPLE)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_LOG_PURPLE.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_log_purple"))); - getBuilder(getPath(HexBlocks.STRIPPED_EDIFIED_LOG)).parent( + getBuilder(getPath(HexBlocks.STRIPPED_EDIFIED_LOG.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/stripped_edified_log"))); - getBuilder(getPath(HexBlocks.EDIFIED_WOOD)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_WOOD.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_wood"))); - getBuilder(getPath(HexBlocks.STRIPPED_EDIFIED_WOOD)).parent( + getBuilder(getPath(HexBlocks.STRIPPED_EDIFIED_WOOD.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/stripped_edified_wood"))); - getBuilder(getPath(HexBlocks.EDIFIED_STAIRS)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_STAIRS.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_stairs"))); - getBuilder(getPath(HexBlocks.EDIFIED_FENCE)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_FENCE.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_fence_inventory"))); - getBuilder(getPath(HexBlocks.EDIFIED_FENCE_GATE)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_FENCE_GATE.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_fence_gate"))); - getBuilder(getPath(HexBlocks.EDIFIED_SLAB)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_SLAB.get())).parent( new ModelFile.UncheckedModelFile(modLoc("block/edified_slab"))); - getBuilder(getPath(HexBlocks.EDIFIED_BUTTON)).parent( + getBuilder(getPath(HexBlocks.EDIFIED_BUTTON.get())).parent( new ModelFile.UncheckedModelFile(ResourceLocation.withDefaultNamespace("block/button_inventory"))) .texture("texture", modLoc("block/edified_planks")); - getBuilder(getPath(HexBlocks.EDIFIED_PRESSURE_PLATE)) + getBuilder(getPath(HexBlocks.EDIFIED_PRESSURE_PLATE.get())) .parent(new ModelFile.UncheckedModelFile(modLoc("block/edified_pressure_plate"))); } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java index a7785611ee..500fa4e2d4 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java @@ -13,7 +13,7 @@ public class CuriosRenderers { public static void register() { - CuriosRendererRegistry.register(HexItems.SCRYING_LENS, () -> new LensCurioRenderer(Minecraft.getInstance().getEntityModels().bakeLayer(LensCurioRenderer.LAYER))); + CuriosRendererRegistry.register(HexItems.SCRYING_LENS.get(), () -> new LensCurioRenderer(Minecraft.getInstance().getEntityModels().bakeLayer(LensCurioRenderer.LAYER))); } public static void onLayerRegister(final EntityRenderersEvent.RegisterLayerDefinitions event) { diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java index 10c8d91a44..8a3e95ec38 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java @@ -68,15 +68,15 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull OpEdifySap .addIngredients(Ingredient.of(ItemTags.SAPLINGS)); builder.addSlot(RecipeIngredientRole.OUTPUT, 51, 10) - .addItemStack(new ItemStack(HexBlocks.AMETHYST_EDIFIED_LEAVES)) - .addItemStack(new ItemStack(HexBlocks.AVENTURINE_EDIFIED_LEAVES)) - .addItemStack(new ItemStack(HexBlocks.CITRINE_EDIFIED_LEAVES)); + .addItemStack(new ItemStack(HexBlocks.AMETHYST_EDIFIED_LEAVES.get())) + .addItemStack(new ItemStack(HexBlocks.AVENTURINE_EDIFIED_LEAVES.get())) + .addItemStack(new ItemStack(HexBlocks.CITRINE_EDIFIED_LEAVES.get())); builder.addSlot(RecipeIngredientRole.OUTPUT, 51, 35) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AMETHYST)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AVENTURINE)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_CITRINE)); -// .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_PURPLE)); + .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG.get())) + .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AMETHYST.get())) + .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AVENTURINE.get())) + .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_CITRINE.get())); +// .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_PURPLE.get())); } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java index 6e708cfacd..0bc38fca64 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java @@ -71,18 +71,18 @@ public void registerRecipes(@NotNull IRecipeRegistration registration) { @Override public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { for (ItemStaff staff : new ItemStaff[]{ - HexItems.STAFF_OAK, - HexItems.STAFF_SPRUCE, - HexItems.STAFF_BIRCH, - HexItems.STAFF_JUNGLE, - HexItems.STAFF_ACACIA, - HexItems.STAFF_DARK_OAK, - HexItems.STAFF_CRIMSON, - HexItems.STAFF_WARPED, - HexItems.STAFF_MANGROVE, - HexItems.STAFF_CHERRY, - HexItems.STAFF_BAMBOO, - HexItems.STAFF_EDIFIED, + HexItems.STAFF_OAK.get(), + HexItems.STAFF_SPRUCE.get(), + HexItems.STAFF_BIRCH.get(), + HexItems.STAFF_JUNGLE.get(), + HexItems.STAFF_ACACIA.get(), + HexItems.STAFF_DARK_OAK.get(), + HexItems.STAFF_CRIMSON.get(), + HexItems.STAFF_WARPED.get(), + HexItems.STAFF_MANGROVE.get(), + HexItems.STAFF_CHERRY.get(), + HexItems.STAFF_BAMBOO.get(), + HexItems.STAFF_EDIFIED.get(), }) { registration.addRecipeCatalyst(new ItemStack(staff), BRAINSWEEPING, PHIAL, EDIFY); } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexCypherLootMod.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexCypherLootMod.java index ad5e2d13c7..a966867fa7 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexCypherLootMod.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexCypherLootMod.java @@ -35,7 +35,7 @@ public ForgeHexCypherLootMod(LootItemCondition[] conditionsIn, double chance) { protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { if (context.getRandom().nextDouble() < this.chance) { - var newStack = new ItemStack(HexItems.ANCIENT_CYPHER); + var newStack = new ItemStack(HexItems.ANCIENT_CYPHER.get()); AddHexToAncientCypherFunc.doStatic(newStack, context.getRandom()); generatedLoot.add(newStack); } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexLoreLootMod.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexLoreLootMod.java index b12b8a85df..38fd4a2a5f 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexLoreLootMod.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexLoreLootMod.java @@ -34,7 +34,7 @@ public ForgeHexLoreLootMod(LootItemCondition[] conditionsIn, double chance) { protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { if (context.getRandom().nextDouble() < this.chance) { - generatedLoot.add(new ItemStack(HexItems.LORE_FRAGMENT)); + generatedLoot.add(new ItemStack(HexItems.LORE_FRAGMENT.get())); } return generatedLoot; } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexScrollLootMod.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexScrollLootMod.java index 1b74f44159..01118ea6ee 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexScrollLootMod.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/loot/ForgeHexScrollLootMod.java @@ -38,7 +38,7 @@ public ForgeHexScrollLootMod(LootItemCondition[] conditionsIn, int countRange) { LootContext context) { var count = this.countRange < 0 ? 1 : HexLootHandler.getScrollCount(this.countRange, context.getRandom()); for (int i = 0; i < count; i++) { - var newStack = new ItemStack(HexItems.SCROLL_LARGE); + var newStack = new ItemStack(HexItems.SCROLL_LARGE.get()); AddPerWorldPatternToScrollFunc.doStatic(newStack, context.getRandom(), context.getLevel().getServer().overworld()); generatedLoot.add(newStack); } From df1acfaf76a9ed187ac014a7e0358c1a895fd4b8 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 20:40:25 +0200 Subject: [PATCH 05/25] chore: migrate HexBlockEntities to IXplatRegister --- .../client/RegisterClientStuff.java | 12 +-- .../akashic/BlockEntityAkashicBookshelf.java | 2 +- .../blocks/circles/BlockEntitySlate.java | 2 +- .../impetuses/BlockEntityLookingImpetus.java | 2 +- .../impetuses/BlockEntityRedstoneImpetus.java | 2 +- .../BlockEntityRightClickImpetus.java | 2 +- .../impetuses/BlockLookingImpetus.java | 4 +- .../impetuses/BlockRedstoneImpetus.java | 2 +- .../impetuses/BlockRightClickImpetus.java | 2 +- .../blocks/entity/BlockEntityConjured.java | 2 +- .../common/lib/HexBlockEntities.java | 87 ++++++++++--------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 13 files changed, 64 insertions(+), 59 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java index bc70652a48..f495d4a07f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java @@ -237,16 +237,16 @@ private static void registerWandOverrides(ItemStaff item) { } public static void registerBlockEntityRenderers(@NotNull BlockEntityRendererRegisterererer registerer) { - registerer.registerBlockEntityRenderer(HexBlockEntities.SLATE_TILE, BlockEntitySlateRenderer::new); - registerer.registerBlockEntityRenderer(HexBlockEntities.AKASHIC_BOOKSHELF_TILE, + registerer.registerBlockEntityRenderer(HexBlockEntities.SLATE_TILE.get(), BlockEntitySlateRenderer::new); + registerer.registerBlockEntityRenderer(HexBlockEntities.AKASHIC_BOOKSHELF_TILE.get(), BlockEntityAkashicBookshelfRenderer::new); - registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_TILE, + registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_TILE.get(), BlockEntityQuenchedAllayRenderer::new); - registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_TILES_TILE, + registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_TILES_TILE.get(), BlockEntityQuenchedAllayRenderer::new); - registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_BRICKS_TILE, + registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_BRICKS_TILE.get(), BlockEntityQuenchedAllayRenderer::new); - registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_BRICKS_SMALL_TILE, + registerer.registerBlockEntityRenderer(HexBlockEntities.QUENCHED_ALLAY_BRICKS_SMALL_TILE.get(), BlockEntityQuenchedAllayRenderer::new); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockEntityAkashicBookshelf.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockEntityAkashicBookshelf.java index 285553529e..3059dad377 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockEntityAkashicBookshelf.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/akashic/BlockEntityAkashicBookshelf.java @@ -29,7 +29,7 @@ public class BlockEntityAkashicBookshelf extends HexBlockEntity { public HexPatternPoints points; public BlockEntityAkashicBookshelf(BlockPos pWorldPosition, BlockState pBlockState) { - super(HexBlockEntities.AKASHIC_BOOKSHELF_TILE, pWorldPosition, pBlockState); + super(HexBlockEntities.AKASHIC_BOOKSHELF_TILE.get(), pWorldPosition, pBlockState); } @Nullable diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java index 1bda8d2a48..51f730e871 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java @@ -20,7 +20,7 @@ public class BlockEntitySlate extends HexBlockEntity { public HexPattern pattern; public BlockEntitySlate(BlockPos pos, BlockState state) { - super(HexBlockEntities.SLATE_TILE, pos, state); + super(HexBlockEntities.SLATE_TILE.get(), pos, state); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java index 6432508173..ddc5af5044 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityLookingImpetus.java @@ -25,7 +25,7 @@ public class BlockEntityLookingImpetus extends BlockEntityAbstractImpetus { private int lookAmount = 0; public BlockEntityLookingImpetus(BlockPos pWorldPosition, BlockState pBlockState) { - super(HexBlockEntities.IMPETUS_LOOK_TILE, pWorldPosition, pBlockState); + super(HexBlockEntities.IMPETUS_LOOK_TILE.get(), pWorldPosition, pBlockState); } // https://github.com/VazkiiMods/Botania/blob/2607bcd31c4eaeb617f7d1b3ec1c1db08f59add4/Common/src/main/java/vazkii/botania/common/block/tile/TileEnderEye.java#L27 diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRedstoneImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRedstoneImpetus.java index 4d64440931..d5a0f3ec5c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRedstoneImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRedstoneImpetus.java @@ -38,7 +38,7 @@ public class BlockEntityRedstoneImpetus extends BlockEntityAbstractImpetus { private ItemStack cachedDisplayStack = null; public BlockEntityRedstoneImpetus(BlockPos pWorldPosition, BlockState pBlockState) { - super(HexBlockEntities.IMPETUS_REDSTONE_TILE, pWorldPosition, pBlockState); + super(HexBlockEntities.IMPETUS_REDSTONE_TILE.get(), pWorldPosition, pBlockState); } protected @Nullable GameProfile getPlayerName() { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRightClickImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRightClickImpetus.java index 8e7498d3fe..fcf4477d7c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRightClickImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockEntityRightClickImpetus.java @@ -7,6 +7,6 @@ public class BlockEntityRightClickImpetus extends BlockEntityAbstractImpetus { public BlockEntityRightClickImpetus(BlockPos pWorldPosition, BlockState pBlockState) { - super(HexBlockEntities.IMPETUS_RIGHTCLICK_TILE, pWorldPosition, pBlockState); + super(HexBlockEntities.IMPETUS_RIGHTCLICK_TILE.get(), pWorldPosition, pBlockState); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockLookingImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockLookingImpetus.java index f9edc217f1..d2004ff38d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockLookingImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockLookingImpetus.java @@ -23,7 +23,7 @@ public BlockLookingImpetus(Properties p_49795_) { @Override public BlockEntityType getBlockEntityType() { - return HexBlockEntities.IMPETUS_LOOK_TILE; + return HexBlockEntities.IMPETUS_LOOK_TILE.get(); } @Override @@ -42,7 +42,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public BlockEntityTicker getTicker(Level pLevel, BlockState pState, BlockEntityType type) { if (!pLevel.isClientSide) { - return createTickerHelper(type, HexBlockEntities.IMPETUS_LOOK_TILE, + return createTickerHelper(type, HexBlockEntities.IMPETUS_LOOK_TILE.get(), BlockEntityLookingImpetus::serverTick); } else { return null; diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java index 140c09e820..6d3954e2f8 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRedstoneImpetus.java @@ -35,7 +35,7 @@ public BlockRedstoneImpetus(Properties p_49795_) { @Override public BlockEntityType getBlockEntityType() { - return HexBlockEntities.IMPETUS_REDSTONE_TILE; + return HexBlockEntities.IMPETUS_REDSTONE_TILE.get(); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRightClickImpetus.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRightClickImpetus.java index d6c770757a..cca529a28a 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRightClickImpetus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/impetuses/BlockRightClickImpetus.java @@ -22,7 +22,7 @@ public BlockRightClickImpetus(Properties p_49795_) { @Override public BlockEntityType getBlockEntityType() { - return HexBlockEntities.IMPETUS_RIGHTCLICK_TILE; + return HexBlockEntities.IMPETUS_RIGHTCLICK_TILE.get(); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityConjured.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityConjured.java index e9caf5c417..68a56b03b5 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityConjured.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/entity/BlockEntityConjured.java @@ -23,7 +23,7 @@ public class BlockEntityConjured extends HexBlockEntity { public static final String TAG_COLORIZER = "tag_colorizer"; public BlockEntityConjured(BlockPos pos, BlockState state) { - super(HexBlockEntities.CONJURED_TILE, pos, state); + super(HexBlockEntities.CONJURED_TILE.get(), pos, state); } public void walkParticle(Entity pEntity) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java index e711e3a097..de240f9027 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java @@ -10,7 +10,10 @@ import at.petrak.hexcasting.common.blocks.entity.BlockEntityConjured; import at.petrak.hexcasting.common.blocks.entity.BlockEntityQuenchedAllay; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; @@ -21,70 +24,72 @@ import java.util.Map; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import java.util.function.Supplier; public class HexBlockEntities { - public static void registerTiles(BiConsumer, ResourceLocation> r) { - for (var e : BLOCK_ENTITIES.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.BLOCK_ENTITY_TYPE); - private static final Map> BLOCK_ENTITIES = new LinkedHashMap<>(); + public static void register() { + REGISTER.registerAll(); + } - public static final BlockEntityType CONJURED_TILE = register( - "conjured", - BlockEntityConjured::new, HexBlocks.CONJURED_LIGHT.get(), HexBlocks.CONJURED_BLOCK.get()); + public static final Supplier> CONJURED_TILE = REGISTER.register("conjured", () -> + IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntityConjured::new, + HexBlocks.CONJURED_LIGHT.get(), HexBlocks.CONJURED_BLOCK.get())); - public static final BlockEntityType AKASHIC_BOOKSHELF_TILE = register( + public static final Supplier> AKASHIC_BOOKSHELF_TILE = REGISTER.register( "akashic_bookshelf", - BlockEntityAkashicBookshelf::new, HexBlocks.AKASHIC_BOOKSHELF.get()); + () -> IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntityAkashicBookshelf::new, + HexBlocks.AKASHIC_BOOKSHELF.get())); - public static final BlockEntityType IMPETUS_REDSTONE_TILE = register( + public static final Supplier> IMPETUS_REDSTONE_TILE = REGISTER.register( "impetus/redstone", - BlockEntityRedstoneImpetus::new, HexBlocks.IMPETUS_REDSTONE.get()); - public static final BlockEntityType IMPETUS_LOOK_TILE = register( + () -> IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntityRedstoneImpetus::new, + HexBlocks.IMPETUS_REDSTONE.get())); + public static final Supplier> IMPETUS_LOOK_TILE = REGISTER.register( "impetus/look", - BlockEntityLookingImpetus::new, HexBlocks.IMPETUS_LOOK.get()); - public static final BlockEntityType IMPETUS_RIGHTCLICK_TILE = register( + () -> IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntityLookingImpetus::new, + HexBlocks.IMPETUS_LOOK.get())); + public static final Supplier> IMPETUS_RIGHTCLICK_TILE = REGISTER.register( "impetus/rightclick", - BlockEntityRightClickImpetus::new, HexBlocks.IMPETUS_RIGHTCLICK.get()); + () -> IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntityRightClickImpetus::new, + HexBlocks.IMPETUS_RIGHTCLICK.get())); - public static final BlockEntityType SLATE_TILE = register( + public static final Supplier> SLATE_TILE = REGISTER.register( "slate", - BlockEntitySlate::new, HexBlocks.SLATE.get()); + () -> IXplatAbstractions.INSTANCE.createBlockEntityType(BlockEntitySlate::new, + HexBlocks.SLATE.get())); - public static final BlockEntityType QUENCHED_ALLAY_TILE = register( - "quenched_allay", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY.get()), HexBlocks.QUENCHED_ALLAY.get()); + public static final Supplier> QUENCHED_ALLAY_TILE = REGISTER.register( + "quenched_allay", () -> IXplatAbstractions.INSTANCE.createBlockEntityType( + BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY.get()), + HexBlocks.QUENCHED_ALLAY.get())); - public static final BlockEntityType QUENCHED_ALLAY_TILES_TILE = register( - "quenched_allay_tiles", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_TILES.get()), HexBlocks.QUENCHED_ALLAY_TILES.get()); + public static final Supplier> QUENCHED_ALLAY_TILES_TILE = REGISTER.register( + "quenched_allay_tiles", () -> IXplatAbstractions.INSTANCE.createBlockEntityType( + BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_TILES.get()), + HexBlocks.QUENCHED_ALLAY_TILES.get())); - public static final BlockEntityType QUENCHED_ALLAY_BRICKS_TILE = register( - "quenched_allay_bricks", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS.get()), HexBlocks.QUENCHED_ALLAY_BRICKS.get()); + public static final Supplier> QUENCHED_ALLAY_BRICKS_TILE = REGISTER.register( + "quenched_allay_bricks", () -> IXplatAbstractions.INSTANCE.createBlockEntityType( + BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS.get()), + HexBlocks.QUENCHED_ALLAY_BRICKS.get())); - public static final BlockEntityType QUENCHED_ALLAY_BRICKS_SMALL_TILE = register( - "quenched_allay_bricks_small", BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()), HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()); + public static final Supplier> QUENCHED_ALLAY_BRICKS_SMALL_TILE = REGISTER.register( + "quenched_allay_bricks_small", () -> IXplatAbstractions.INSTANCE.createBlockEntityType( + BlockEntityQuenchedAllay.fromKnownBlock(HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()), + HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get())); public static BlockEntityType typeForQuenchedAllay(BlockQuenchedAllay block) { if (block == HexBlocks.QUENCHED_ALLAY.get()) - return QUENCHED_ALLAY_TILE; + return QUENCHED_ALLAY_TILE.get(); if (block == HexBlocks.QUENCHED_ALLAY_TILES.get()) - return QUENCHED_ALLAY_TILES_TILE; + return QUENCHED_ALLAY_TILES_TILE.get(); if (block == HexBlocks.QUENCHED_ALLAY_BRICKS.get()) - return QUENCHED_ALLAY_BRICKS_TILE; + return QUENCHED_ALLAY_BRICKS_TILE.get(); if (block == HexBlocks.QUENCHED_ALLAY_BRICKS_SMALL.get()) - return QUENCHED_ALLAY_BRICKS_SMALL_TILE; + return QUENCHED_ALLAY_BRICKS_SMALL_TILE.get(); return null; } - private static BlockEntityType register(String id, - BiFunction func, Block... blocks) { - var ret = IXplatAbstractions.INSTANCE.createBlockEntityType(func, blocks); - var old = BLOCK_ENTITIES.put(ResourceLocation.fromNamespaceAndPath(HexAPI.MOD_ID, id), ret); - if (old != null) { - throw new IllegalArgumentException("Duplicate id " + id); - } - return ret; - } - } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 6b310d64a6..5d9e68a7ba 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -193,7 +193,7 @@ object FabricHexInitializer : ModInitializer { HexSounds.register() HexBlocks.registerBlocks() HexBlocks.registerBlockItems() - HexBlockEntities.registerTiles(bind(BuiltInRegistries.BLOCK_ENTITY_TYPE)) + HexBlockEntities.register() HexItems.register() // Registry.register(IngredientDeserializer.REGISTRY, FabricModConditionalIngredient.ID, FabricModConditionalIngredient.Deserializer.INSTANCE) CustomIngredientSerializer.register(FabricUnsealedIngredient.Serializer.INSTANCE); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index dd0b4d5a16..c69640dc0b 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -121,7 +121,7 @@ private static void initRegistry() { HexBlocks.registerBlocks(); HexBlocks.registerBlockItems(); - bind(Registries.BLOCK_ENTITY_TYPE, HexBlockEntities::registerTiles); + HexBlockEntities.register(); HexItems.register(); bind(Registries.DATA_COMPONENT_TYPE, HexDataComponents::registerDataComponents); From 933765439bfdc9a2b5a57be19f8ebcc6ba4d3b44 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 20:50:50 +0200 Subject: [PATCH 06/25] chore: migrate HexCreativeTabs to IXplatRegister --- .../common/lib/HexCreativeTabs.java | 37 +++++++++---------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java index eb3efcf378..a410428058 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java @@ -1,6 +1,10 @@ package at.petrak.hexcasting.common.lib; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -14,30 +18,25 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexCreativeTabs { - public static void registerCreativeTabs(BiConsumer r) { - for (var e : TABS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.CREATIVE_MODE_TAB); - private static final Map TABS = new LinkedHashMap<>(); + public static void register() { + REGISTER.registerAll(); + } - public static final CreativeModeTab HEX = register("hexcasting", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) - .icon(() -> new ItemStack(HexItems.SPELLBOOK.get()))); + public static final Holder HEX = REGISTER.registerHolder("hexcasting", () -> + CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .icon(() -> new ItemStack(HexItems.SPELLBOOK.get())) + .title(Component.translatable("itemGroup.hexcasting.hexcasting")) + .build()); public static final ResourceKey HEX_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("hexcasting")); - public static final CreativeModeTab SCROLLS = register("scrolls", CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) - .icon(() -> new ItemStack(HexItems.SCROLL_LARGE.get()))); + public static final Holder SCROLLS = REGISTER.registerHolder("scrolls", () -> + CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .icon(() -> new ItemStack(HexItems.SCROLL_LARGE.get())) + .title(Component.translatable("itemGroup.hexcasting.scrolls")) + .build()); public static final ResourceKey SCROLLS_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), modLoc("scrolls")); - - private static CreativeModeTab register(String name, CreativeModeTab.Builder tabBuilder) { - var tab = tabBuilder.title(Component.translatable("itemGroup.hexcasting." + name)).build(); - var old = TABS.put(modLoc(name), tab); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return tab; - } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 5d9e68a7ba..c1975ac129 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -188,7 +188,7 @@ object FabricHexInitializer : ModInitializer { private fun initRegistries() { HexBlockSetTypes.registerBlocks(BlockSetType::register) - HexCreativeTabs.registerCreativeTabs(bind(BuiltInRegistries.CREATIVE_MODE_TAB)) + HexCreativeTabs.register() HexSounds.register() HexBlocks.registerBlocks() diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index c69640dc0b..873beea17f 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -117,7 +117,7 @@ private static void initRegistry() { HexBlockSetTypes.registerBlocks(BlockSetType::register); - bind(Registries.CREATIVE_MODE_TAB, HexCreativeTabs::registerCreativeTabs); + HexCreativeTabs.register(); HexBlocks.registerBlocks(); HexBlocks.registerBlockItems(); From 8cbf7b5c9668712fdbb089ff49491337abdb56f0 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:07:14 +0200 Subject: [PATCH 07/25] chore: migrate HexDataComponents to IXplatRegister --- .../hexcasting/api/item/IotaHolderItem.java | 6 +- .../hexcasting/api/item/VariantItem.java | 4 +- .../client/RegisterClientStuff.java | 8 +-- .../blocks/circles/BlockEntitySlate.java | 4 +- .../command/ListPerWorldPatternsCommand.java | 8 +-- .../common/entities/EntityWallScroll.java | 4 +- .../items/magic/DebugUnlockerHolder.java | 4 +- .../common/items/magic/ItemAncientCypher.java | 6 +- .../items/magic/ItemCreativeUnlocker.java | 8 +-- .../common/items/magic/ItemMediaHolder.java | 10 +-- .../common/items/magic/ItemPackagedHex.java | 18 ++--- .../common/items/storage/ItemAbacus.java | 6 +- .../common/items/storage/ItemFocus.java | 12 ++-- .../common/items/storage/ItemScroll.java | 44 ++++++------- .../common/items/storage/ItemSlate.java | 10 +-- .../common/items/storage/ItemSpellbook.java | 62 ++++++++--------- .../common/items/storage/ItemThoughtKnot.java | 4 +- .../common/lib/HexDataComponents.java | 66 ++++++++----------- .../loot/AddHexToAncientCypherFunc.java | 10 +-- .../loot/AddPerWorldPatternToScrollFunc.java | 6 +- .../common/msgs/MsgShiftScrollC2S.java | 4 +- .../common/recipe/SealSpellbookRecipe.java | 2 +- .../common/recipe/SealThingsRecipe.java | 2 +- .../hexcasting/datagen/HexLootTables.java | 2 +- .../inline/HexPatternOverlayRenderer.java | 4 +- .../mixin/MixinWanderingTrader.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../fabric/cc/HexCardinalComponents.java | 10 +-- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- .../forge/recipe/ForgeUnsealedIngredient.java | 2 +- 30 files changed, 161 insertions(+), 171 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java b/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java index 3f392bd61b..223d364020 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/item/IotaHolderItem.java @@ -33,7 +33,7 @@ default Iota readIota(ItemStack stack) { throw new IllegalArgumentException("stack's item must be an IotaHolderItem but was " + stack.getItem()); } - return stack.get(HexDataComponents.IOTA_HOLDER_IOTA); + return stack.get(HexDataComponents.IOTA_HOLDER_IOTA.get()); } /** @@ -45,7 +45,7 @@ default Iota emptyIota(ItemStack stack) { } default int getColor(ItemStack stack) { - var override = stack.get(HexDataComponents.VISUAL_OVERRIDE); + var override = stack.get(HexDataComponents.VISUAL_OVERRIDE.get()); //noinspection OptionalAssignedToNull if (override != null) { return override.map(IotaType::color).orElseGet(() -> 0xFF000000 | Mth.hsvToRgb(ClientTickCounter.getTotal() * 2 % 360 / 360F, 0.75F, 1F)); @@ -86,7 +86,7 @@ static void appendHoverText(IotaHolderItem self, ItemStack stack, List stack.has(HexDataComponents.IOTA_HOLDER_IOTA), + stack -> stack.has(HexDataComponents.IOTA_HOLDER_IOTA.get()), ItemFocus::isSealed); registerSealableDataHolderOverrides(HexItems.SPELLBOOK.get(), stack -> HexItems.SPELLBOOK.get().readIota(stack) != null, @@ -69,7 +69,7 @@ public static void init() { registerVariantOverrides(HexItems.ARTIFACT.get(), HexItems.ARTIFACT.get()::getVariant); IClientXplatAbstractions.INSTANCE.registerItemProperty(HexItems.THOUGHT_KNOT.get(), ItemThoughtKnot.WRITTEN_PRED, (stack, level, holder, holderID) -> { - if (stack.has(HexDataComponents.IOTA_HOLDER_IOTA)) { + if (stack.has(HexDataComponents.IOTA_HOLDER_IOTA.get())) { return 1; } else { return 0; @@ -192,7 +192,7 @@ private static void registerSealableDataHolderOverrides(IotaHolderItem item, Pre Predicate isSealed) { IClientXplatAbstractions.INSTANCE.registerItemProperty((Item) item, ItemFocus.OVERLAY_PRED, (stack, level, holder, holderID) -> { - if (!hasIota.test(stack) && !stack.has(HexDataComponents.VISUAL_OVERRIDE)) { + if (!hasIota.test(stack) && !stack.has(HexDataComponents.VISUAL_OVERRIDE.get())) { return 0; } if (!isSealed.test(stack)) { @@ -209,7 +209,7 @@ private static void registerVariantOverrides(VariantItem item, Function stack.has(HexDataComponents.ACTION) ? 1f : 0f); + (stack, level, holder, holderID) -> stack.has(HexDataComponents.ACTION.get()) ? 1f : 0f); } private static void registerPackagedSpellOverrides(ItemPackagedHex item) { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java index 51f730e871..a5a34effe7 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/blocks/circles/BlockEntitySlate.java @@ -27,14 +27,14 @@ public BlockEntitySlate(BlockPos pos, BlockState state) { protected void collectImplicitComponents(DataComponentMap.Builder components) { super.collectImplicitComponents(components); if (this.pattern != null) { - components.set(HexDataComponents.PATTERN, this.pattern); + components.set(HexDataComponents.PATTERN.get(), this.pattern); } } @Override protected void applyImplicitComponents(DataComponentInput componentInput) { super.applyImplicitComponents(componentInput); - var pat = componentInput.get(HexDataComponents.PATTERN); + var pat = componentInput.get(HexDataComponents.PATTERN.get()); if (pat != null) { this.pattern = pat; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java b/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java index 801497e5e2..716899a83d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/command/ListPerWorldPatternsCommand.java @@ -98,8 +98,8 @@ private static int giveAll(CommandSourceStack source, Collection t var pat = HexPattern.fromAnglesUnchecked(signature, startDir); var stack = new ItemStack(HexItems.SCROLL_LARGE.get()); - stack.set(HexDataComponents.ACTION, key); - stack.set(HexDataComponents.PATTERN, pat); + stack.set(HexDataComponents.ACTION.get(), key); + stack.set(HexDataComponents.PATTERN.get(), pat); for (var player : targets) { var stackEntity = player.drop(stack, false); @@ -129,8 +129,8 @@ private static int giveOne(CommandSourceStack source, Collection t ResourceKey actionKey, HexPattern pat) { if (!targets.isEmpty()) { var stack = new ItemStack(HexItems.SCROLL_LARGE.get()); - stack.set(HexDataComponents.ACTION, actionKey); - stack.set(HexDataComponents.PATTERN, pat); + stack.set(HexDataComponents.ACTION.get(), actionKey); + stack.set(HexDataComponents.PATTERN.get(), pat); source.sendSuccess(() -> Component.translatable( diff --git a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java index 41f3ed58de..d7ed116d21 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java @@ -61,8 +61,8 @@ public EntityWallScroll(Level world, BlockPos pos, Direction dir, ItemStack scro } public void recalculateDisplay() { - this.pattern = scroll.get(HexDataComponents.PATTERN); - this.isAncient = scroll.has(HexDataComponents.ACTION); + this.pattern = scroll.get(HexDataComponents.PATTERN.get()); + this.isAncient = scroll.has(HexDataComponents.ACTION.get()); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/DebugUnlockerHolder.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/DebugUnlockerHolder.java index a3bc73ded4..65b57c58bb 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/DebugUnlockerHolder.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/DebugUnlockerHolder.java @@ -42,14 +42,14 @@ public boolean canConstructBattery() { @Override public long withdrawMedia(long cost, boolean simulate) { - ItemCreativeUnlocker.addToLongArray(creativeUnlocker, HexDataComponents.MEDIA_EXTRACTIONS, cost); + ItemCreativeUnlocker.addToLongArray(creativeUnlocker, HexDataComponents.MEDIA_EXTRACTIONS.get(), cost); return cost < 0 ? getMedia() : cost; } @Override public long insertMedia(long amount, boolean simulate) { - ItemCreativeUnlocker.addToLongArray(creativeUnlocker, HexDataComponents.MEDIA_INSERTIONS, amount); + ItemCreativeUnlocker.addToLongArray(creativeUnlocker, HexDataComponents.MEDIA_INSERTIONS.get(), amount); return amount; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemAncientCypher.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemAncientCypher.java index 515f0c4de3..bcc242ddae 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemAncientCypher.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemAncientCypher.java @@ -18,13 +18,13 @@ public ItemAncientCypher(Properties pProperties) { @Override public void clearHex(ItemStack stack) { super.clearHex(stack); - stack.remove(HexDataComponents.HEX_NAME); + stack.remove(HexDataComponents.HEX_NAME.get()); } @Override public Component getName(ItemStack stack) { var descID = this.getDescriptionId(stack); - var hexName = stack.get(HexDataComponents.HEX_NAME); + var hexName = stack.get(HexDataComponents.HEX_NAME.get()); if (hexName != null) { return Component.translatable(descID + ".preset", Component.translatable(hexName)); } else { @@ -37,7 +37,7 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List> public long withdrawMedia(ItemStack stack, long cost, boolean simulate) { // In case it's withdrawn through other means if (!simulate && isDebug(stack, DISPLAY_MEDIA)) { - addToLongArray(stack, HexDataComponents.MEDIA_EXTRACTIONS, cost); + addToLongArray(stack, HexDataComponents.MEDIA_EXTRACTIONS.get(), cost); } return cost < 0 ? getMedia(stack) : cost; @@ -148,7 +148,7 @@ public long withdrawMedia(ItemStack stack, long cost, boolean simulate) { public long insertMedia(ItemStack stack, long amount, boolean simulate) { // In case it's inserted through other means if (!simulate && isDebug(stack, DISPLAY_MEDIA)) { - addToLongArray(stack, HexDataComponents.MEDIA_INSERTIONS, amount); + addToLongArray(stack, HexDataComponents.MEDIA_INSERTIONS.get(), amount); } return amount < 0 ? getMaxMedia(stack) : amount; @@ -162,8 +162,8 @@ public boolean isFoil(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) { if (isDebug(stack, DISPLAY_MEDIA) && !level.isClientSide) { - debugDisplay(stack, HexDataComponents.MEDIA_EXTRACTIONS, "withdrawn", "all_media", entity); - debugDisplay(stack, HexDataComponents.MEDIA_INSERTIONS, "inserted", "infinite_media", entity); + debugDisplay(stack, HexDataComponents.MEDIA_EXTRACTIONS.get(), "withdrawn", "all_media", entity); + debugDisplay(stack, HexDataComponents.MEDIA_INSERTIONS.get(), "inserted", "infinite_media", entity); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemMediaHolder.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemMediaHolder.java index f7365ae6f1..b895b928d4 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemMediaHolder.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemMediaHolder.java @@ -36,8 +36,8 @@ public ItemMediaHolder(Properties pProperties) { public static ItemStack withMedia(ItemStack stack, long media, long maxMedia) { Item item = stack.getItem(); if (item instanceof ItemMediaHolder) { - stack.set(HexDataComponents.MEDIA, media); - stack.set(HexDataComponents.MEDIA_MAX, media); + stack.set(HexDataComponents.MEDIA.get(), media); + stack.set(HexDataComponents.MEDIA_MAX.get(), media); } return stack; @@ -45,19 +45,19 @@ public static ItemStack withMedia(ItemStack stack, long media, long maxMedia) { @Override public long getMedia(ItemStack stack) { - var media = stack.get(HexDataComponents.MEDIA); + var media = stack.get(HexDataComponents.MEDIA.get()); return media != null ? media : 0L; } @Override public long getMaxMedia(ItemStack stack) { - var maxMedia = stack.get(HexDataComponents.MEDIA_MAX); + var maxMedia = stack.get(HexDataComponents.MEDIA_MAX.get()); return maxMedia != null ? maxMedia : 0L; } @Override public void setMedia(ItemStack stack, long media) { - stack.set(HexDataComponents.MEDIA, MathUtils.clamp(media, 0, getMaxMedia(stack))); + stack.set(HexDataComponents.MEDIA.get(), MathUtils.clamp(media, 0, getMaxMedia(stack))); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemPackagedHex.java b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemPackagedHex.java index dc5f80b999..535e7937ae 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemPackagedHex.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/magic/ItemPackagedHex.java @@ -58,34 +58,34 @@ public boolean canProvideMedia(ItemStack stack) { @Override public boolean hasHex(ItemStack stack) { - return stack.has(HexDataComponents.HEX_HOLDER_PATTERNS); + return stack.has(HexDataComponents.HEX_HOLDER_PATTERNS.get()); } @Override public @Nullable List getHex(ItemStack stack, ServerLevel level) { - return stack.get(HexDataComponents.HEX_HOLDER_PATTERNS); + return stack.get(HexDataComponents.HEX_HOLDER_PATTERNS.get()); } @Override public void writeHex(ItemStack stack, List program, @Nullable FrozenPigment pigment, long media) { - stack.set(HexDataComponents.HEX_HOLDER_PATTERNS, program); + stack.set(HexDataComponents.HEX_HOLDER_PATTERNS.get(), program); if (pigment != null) - stack.set(HexDataComponents.PIGMENT, pigment); + stack.set(HexDataComponents.PIGMENT.get(), pigment); withMedia(stack, media, media); } @Override public void clearHex(ItemStack stack) { - stack.remove(HexDataComponents.HEX_HOLDER_PATTERNS); - stack.remove(HexDataComponents.PIGMENT); - stack.remove(HexDataComponents.MEDIA); - stack.remove(HexDataComponents.MEDIA_MAX); + stack.remove(HexDataComponents.HEX_HOLDER_PATTERNS.get()); + stack.remove(HexDataComponents.PIGMENT.get()); + stack.remove(HexDataComponents.MEDIA.get()); + stack.remove(HexDataComponents.MEDIA_MAX.get()); } @Override public @Nullable FrozenPigment getPigment(ItemStack stack) { - return stack.get(HexDataComponents.PIGMENT); + return stack.get(HexDataComponents.PIGMENT.get()); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java index 7b3bd40780..5979f9b480 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemAbacus.java @@ -25,7 +25,7 @@ public ItemAbacus(Properties pProperties) { @Override public @Nullable Iota readIota(ItemStack stack) { - return new DoubleIota(stack.getOrDefault(HexDataComponents.ABACUS_VALUE, 0.0)); + return new DoubleIota(stack.getOrDefault(HexDataComponents.ABACUS_VALUE.get(), 0.0)); } @Override @@ -47,8 +47,8 @@ public void writeDatum(ItemStack stack, Iota datum) { public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { var stack = player.getItemInHand(hand); if (player.isShiftKeyDown()) { - Double oldNum = stack.get(HexDataComponents.ABACUS_VALUE); - stack.remove(HexDataComponents.ABACUS_VALUE); + Double oldNum = stack.get(HexDataComponents.ABACUS_VALUE.get()); + stack.remove(HexDataComponents.ABACUS_VALUE.get()); player.playSound(HexSounds.ABACUS_SHAKE.value(), 1f, 1f); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemFocus.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemFocus.java index 21ff3c13e2..cecd1578dd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemFocus.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemFocus.java @@ -29,7 +29,7 @@ public ItemFocus(Properties pProperties) { @Override public String getDescriptionId(ItemStack stack) { - return super.getDescriptionId(stack) + (stack.has(HexDataComponents.SEALED_IOTA_HOLDER) ? ".sealed" : ""); + return super.getDescriptionId(stack) + (stack.has(HexDataComponents.SEALED_IOTA_HOLDER.get()) ? ".sealed" : ""); } @Override @@ -45,10 +45,10 @@ public boolean canWrite(ItemStack stack, Iota datum) { @Override public void writeDatum(ItemStack stack, Iota datum) { if (datum == null) { - stack.remove(HexDataComponents.IOTA_HOLDER_IOTA); - stack.remove(HexDataComponents.SEALED_IOTA_HOLDER); + stack.remove(HexDataComponents.IOTA_HOLDER_IOTA.get()); + stack.remove(HexDataComponents.SEALED_IOTA_HOLDER.get()); } else if (!isSealed(stack)) { - stack.set(HexDataComponents.IOTA_HOLDER_IOTA, datum); + stack.set(HexDataComponents.IOTA_HOLDER_IOTA.get(), datum); } } @@ -58,11 +58,11 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List action) { Item item = stack.getItem(); if (item instanceof ItemScroll) { - stack.set(HexDataComponents.ACTION, action); + stack.set(HexDataComponents.ACTION.get(), action); } return stack; @@ -78,9 +78,9 @@ public boolean canWrite(ItemStack stack, Iota datum) { public void writeDatum(ItemStack stack, Iota datum) { if (this.canWrite(stack, datum)) { if (datum instanceof PatternIota pat) { - stack.set(HexDataComponents.PATTERN, pat.getPattern()); + stack.set(HexDataComponents.PATTERN.get(), pat.getPattern()); } else if (datum == null) { - stack.remove(HexDataComponents.PATTERN); + stack.remove(HexDataComponents.PATTERN.get()); } } } @@ -128,12 +128,12 @@ protected boolean mayPlace(Player pPlayer, Direction pDirection, ItemStack pHang @Override public Component getName(ItemStack pStack) { var descID = this.getDescriptionId(pStack); - var ancientAction = pStack.get(HexDataComponents.ACTION); + var ancientAction = pStack.get(HexDataComponents.ACTION.get()); if (ancientAction != null) { return Component.translatable(descID + ".of", Component.translatable("hexcasting.action." + ancientAction.location())); - } else if (pStack.has(HexDataComponents.PATTERN)) { - var pattern = pStack.get(HexDataComponents.PATTERN); + } else if (pStack.has(HexDataComponents.PATTERN.get())) { + var pattern = pStack.get(HexDataComponents.PATTERN.get()); var patternLabel = Component.literal(""); if (pattern != null) { patternLabel = Component.literal(": ").append(new InlinePatternData(pattern).asText(false)); @@ -148,39 +148,39 @@ public Component getName(ItemStack pStack) { public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pSlotId, boolean pIsSelected) { // the needs_purchase tag is used so you can't see the pattern on scrolls sold by a wandering trader // once you put the scroll into your inventory, this removes the tag to reveal the pattern - if(pStack.has(HexDataComponents.NEEDS_PURCHASE)) - pStack.remove(HexDataComponents.NEEDS_PURCHASE); + if(pStack.has(HexDataComponents.NEEDS_PURCHASE.get())) + pStack.remove(HexDataComponents.NEEDS_PURCHASE.get()); // if op_id is set but there's no stored pattern, attempt to load the pattern on inv tick - if (pStack.has(HexDataComponents.ACTION) && !pStack.has(HexDataComponents.PATTERN) && pEntity.getServer() != null) { - var action = pStack.get(HexDataComponents.ACTION); + if (pStack.has(HexDataComponents.ACTION.get()) && !pStack.has(HexDataComponents.PATTERN.get()) && pEntity.getServer() != null) { + var action = pStack.get(HexDataComponents.ACTION.get()); if (action == null) { // if the provided op_id is invalid, remove it so we don't keep trying every tick - pStack.remove(HexDataComponents.ACTION); + pStack.remove(HexDataComponents.ACTION.get()); return; } var pat = PatternRegistryManifest.getCanonicalStrokesPerWorld(action, pEntity.getServer().overworld()); if (pat == null) { // if pat is null, the per-world order hasn't been registered; remove the op_id and warn the player - pStack.set(HexDataComponents.RECALC_WARNING, action); - pStack.remove(HexDataComponents.ACTION); + pStack.set(HexDataComponents.RECALC_WARNING.get(), action); + pStack.remove(HexDataComponents.ACTION.get()); return; } - pStack.set(HexDataComponents.PATTERN, pat); + pStack.set(HexDataComponents.PATTERN.get(), pat); } } @Override public void appendHoverText(ItemStack stack, TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { - if (stack.has(HexDataComponents.NEEDS_PURCHASE)) { + if (stack.has(HexDataComponents.NEEDS_PURCHASE.get())) { var needsPurchase = Component.translatable("hexcasting.tooltip.scroll.needs_purchase"); tooltipComponents.add(needsPurchase.withStyle(ChatFormatting.GRAY)); - } else if (stack.has(HexDataComponents.RECALC_WARNING)) { - var spellName = Component.translatable("hexcasting.action." + stack.get(HexDataComponents.RECALC_WARNING)); + } else if (stack.has(HexDataComponents.RECALC_WARNING.get())) { + var spellName = Component.translatable("hexcasting.action." + stack.get(HexDataComponents.RECALC_WARNING.get())); var line1 = Component.translatable("hexcasting.tooltip.scroll.recalc_warning.line1", spellName); var line2 = Component.translatable("hexcasting.tooltip.scroll.recalc_warning.line2"); tooltipComponents.add(line1.withStyle(ChatFormatting.RED)); tooltipComponents.add(line2.withStyle(ChatFormatting.RED)); - } else if (stack.has(HexDataComponents.ACTION) && !stack.has(HexDataComponents.PATTERN)) { + } else if (stack.has(HexDataComponents.ACTION.get()) && !stack.has(HexDataComponents.PATTERN.get())) { var notLoaded = Component.translatable("hexcasting.tooltip.scroll.pattern_not_loaded"); tooltipComponents.add(notLoaded.withStyle(ChatFormatting.GRAY)); } @@ -188,11 +188,11 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List getTooltipImage(ItemStack stack) { - var pattern = stack.get(HexDataComponents.PATTERN); - if (pattern != null && !stack.has(HexDataComponents.NEEDS_PURCHASE)) { + var pattern = stack.get(HexDataComponents.PATTERN.get()); + if (pattern != null && !stack.has(HexDataComponents.NEEDS_PURCHASE.get())) { return Optional.of(new PatternTooltip( pattern, - stack.has(HexDataComponents.ACTION) + stack.has(HexDataComponents.ACTION.get()) ? PatternTooltipComponent.ANCIENT_BG : PatternTooltipComponent.PRISTINE_BG)); } @@ -202,7 +202,7 @@ public Optional getTooltipImage(ItemStack stack) { @Override public @Nullable Iota readIota(ItemStack stack) { - var pattern = stack.get(HexDataComponents.PATTERN); + var pattern = stack.get(HexDataComponents.PATTERN.get()); return pattern != null ? new PatternIota(pattern) : null; } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSlate.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSlate.java index a607dadacb..1856f41c11 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSlate.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSlate.java @@ -42,7 +42,7 @@ public Component getName(ItemStack pStack) { } public static Optional getPattern(ItemStack stack){ - return Optional.ofNullable(stack.get(HexDataComponents.PATTERN)); + return Optional.ofNullable(stack.get(HexDataComponents.PATTERN.get())); } public static boolean hasPattern(ItemStack stack) { @@ -52,7 +52,7 @@ public static boolean hasPattern(ItemStack stack) { @SoftImplement("IForgeItem") public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { if (!hasPattern(stack)) { - stack.remove(HexDataComponents.PATTERN); + stack.remove(HexDataComponents.PATTERN.get()); } return false; } @@ -60,7 +60,7 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { @Override public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pSlotId, boolean pIsSelected) { if (!hasPattern(pStack)) { - pStack.remove(HexDataComponents.PATTERN); + pStack.remove(HexDataComponents.PATTERN.get()); } } @@ -83,9 +83,9 @@ public boolean canWrite(ItemStack stack, Iota datum) { public void writeDatum(ItemStack stack, Iota datum) { if(this.canWrite(stack, datum)) { if (datum == null) { - stack.remove(HexDataComponents.PATTERN); + stack.remove(HexDataComponents.PATTERN.get()); } else if (datum instanceof PatternIota pat) { - stack.set(HexDataComponents.PATTERN, pat.getPattern()); + stack.set(HexDataComponents.PATTERN.get(), pat.getPattern()); } } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSpellbook.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSpellbook.java index 009f37d003..8331572f82 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSpellbook.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemSpellbook.java @@ -33,8 +33,8 @@ public ItemSpellbook(Properties properties) { public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag isAdvanced) { boolean sealed = isSealed(stack); boolean empty = false; - if (stack.has(HexDataComponents.SELECTED_SPELLBOOK_PAGE)) { - var pageIdx = stack.get(HexDataComponents.SELECTED_SPELLBOOK_PAGE); + if (stack.has(HexDataComponents.SELECTED_SPELLBOOK_PAGE.get())) { + var pageIdx = stack.get(HexDataComponents.SELECTED_SPELLBOOK_PAGE.get()); int highest = highestPage(stack); if (highest != 0) { if (sealed) { @@ -57,7 +57,7 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List(savedNames); mutNames.put(nameKey, customName); - stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES, mutNames); + stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES.get(), mutNames); } } else { var mutNames = new HashMap(); mutNames.put(nameKey, customName); - stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES, mutNames); + stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES.get(), mutNames); } } else if(savedNames != null) { var mutNames = new HashMap<>(savedNames); mutNames.remove(nameKey); if(mutNames.isEmpty()) { - stack.remove(HexDataComponents.SPELLBOOK_PAGE_NAMES); + stack.remove(HexDataComponents.SPELLBOOK_PAGE_NAMES.get()); } else { - stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES, mutNames); + stack.set(HexDataComponents.SPELLBOOK_PAGE_NAMES.get(), mutNames); } } } public static boolean arePagesEmpty(ItemStack stack) { - var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES); + var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES.get()); return pages == null || pages.isEmpty(); } @@ -121,7 +121,7 @@ public static boolean arePagesEmpty(ItemStack stack) { public @Nullable Iota readIota(ItemStack stack) { int idx = getPage(stack, 1); var key = String.valueOf(idx); - var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES); + var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES.get()); if (pages != null && pages.containsKey(key)) { return pages.get(key); } else { @@ -148,23 +148,23 @@ public void writeDatum(ItemStack stack, Iota datum) { int idx = getPage(stack, 1); var key = String.valueOf(idx); - var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES); + var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES.get()); if (pages != null) { var pagesMut = new HashMap<>(pages); if (datum == null) { pagesMut.remove(key); - var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS); + var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); if(seals != null) { var sealsMut = new HashMap<>(seals); sealsMut.remove(key); if(sealsMut.isEmpty()) { - stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS); + stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); } else { - stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS, sealsMut); + stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS.get(), sealsMut); } } } else { @@ -172,24 +172,24 @@ public void writeDatum(ItemStack stack, Iota datum) { } if (pagesMut.isEmpty()) { - stack.remove(HexDataComponents.SPELLBOOK_PAGES); + stack.remove(HexDataComponents.SPELLBOOK_PAGES.get()); } else { - stack.set(HexDataComponents.SPELLBOOK_PAGES, pagesMut); + stack.set(HexDataComponents.SPELLBOOK_PAGES.get(), pagesMut); } } else if (datum != null) { var map = new HashMap(); map.put(key, datum); - stack.set(HexDataComponents.SPELLBOOK_PAGES, map); + stack.set(HexDataComponents.SPELLBOOK_PAGES.get(), map); } else { - var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS); + var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); if(seals != null) { var sealsMut = new HashMap<>(seals); sealsMut.remove(key); if(sealsMut.isEmpty()) { - stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS); + stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); } else { - stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS, sealsMut); + stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS.get(), sealsMut); } } } @@ -198,8 +198,8 @@ public void writeDatum(ItemStack stack, Iota datum) { public static int getPage(ItemStack stack, int ifEmpty) { if (arePagesEmpty(stack)) { return ifEmpty; - } else if (stack.has(HexDataComponents.SELECTED_SPELLBOOK_PAGE)) { - var index = stack.get(HexDataComponents.SELECTED_SPELLBOOK_PAGE); + } else if (stack.has(HexDataComponents.SELECTED_SPELLBOOK_PAGE.get())) { + var index = stack.get(HexDataComponents.SELECTED_SPELLBOOK_PAGE.get()); if(index == null) return 1; if (index == 0) { @@ -216,7 +216,7 @@ public static void setSealed(ItemStack stack, boolean sealed) { String nameKey = String.valueOf(index); - var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS); + var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); var sealsMut = seals != null ? new HashMap<>(seals) : new HashMap(); @@ -227,9 +227,9 @@ public static void setSealed(ItemStack stack, boolean sealed) { } if (sealsMut.isEmpty()) { - stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS); + stack.remove(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); } else { - stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS, sealsMut); + stack.set(HexDataComponents.SPELLBOOK_PAGE_SEALS.get(), sealsMut); } } @@ -237,7 +237,7 @@ public static boolean isSealed(ItemStack stack) { int index = getPage(stack, 1); String nameKey = String.valueOf(index); - var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS); + var seals = stack.get(HexDataComponents.SPELLBOOK_PAGE_SEALS.get()); if(seals == null) return false; var v = seals.get(nameKey); @@ -245,7 +245,7 @@ public static boolean isSealed(ItemStack stack) { } public static int highestPage(ItemStack stack) { - var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES); + var pages = stack.get(HexDataComponents.SPELLBOOK_PAGES.get()); if (pages == null) { return 0; } @@ -265,9 +265,9 @@ public static int rotatePageIdx(ItemStack stack, boolean increase, Level level) idx = Math.max(1, idx); } idx = Mth.clamp(idx, 0, MAX_PAGES); - stack.set(HexDataComponents.SELECTED_SPELLBOOK_PAGE, idx); + stack.set(HexDataComponents.SELECTED_SPELLBOOK_PAGE.get(), idx); - var names = stack.getOrDefault(HexDataComponents.SPELLBOOK_PAGE_NAMES, Collections.emptyMap()); + var names = stack.getOrDefault(HexDataComponents.SPELLBOOK_PAGE_NAMES.get(), Collections.emptyMap()); int shiftedIdx = Math.max(1, idx); String nameKey = String.valueOf(shiftedIdx); Component name = names.get(nameKey); @@ -288,6 +288,6 @@ public int numVariants() { @Override public void setVariant(ItemStack stack, int variant) { if (!isSealed(stack)) - stack.set(HexDataComponents.ITEM_VARIANT, clampVariant(variant)); + stack.set(HexDataComponents.ITEM_VARIANT.get(), clampVariant(variant)); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemThoughtKnot.java b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemThoughtKnot.java index b601f1c7d9..4cab952821 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemThoughtKnot.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/storage/ItemThoughtKnot.java @@ -24,7 +24,7 @@ public ItemThoughtKnot(Properties properties) { @Override public boolean writeable(ItemStack stack) { - return !stack.has(HexDataComponents.IOTA_HOLDER_IOTA); + return !stack.has(HexDataComponents.IOTA_HOLDER_IOTA.get()); } @Override @@ -35,7 +35,7 @@ public boolean canWrite(ItemStack stack, @Nullable Iota iota) { @Override public void writeDatum(ItemStack stack, @Nullable Iota iota) { if (iota != null) { - stack.set(HexDataComponents.IOTA_HOLDER_IOTA, iota); + stack.set(HexDataComponents.IOTA_HOLDER_IOTA.get(), iota); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java index f5a599da2a..c760ae0602 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java @@ -5,8 +5,11 @@ import at.petrak.hexcasting.api.casting.iota.IotaType; import at.petrak.hexcasting.api.casting.math.HexPattern; import at.petrak.hexcasting.api.pigment.FrozenPigment; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import com.mojang.serialization.Codec; import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentSerialization; import net.minecraft.network.codec.ByteBufCodecs; @@ -17,34 +20,33 @@ import java.util.*; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexDataComponents { - public static void registerDataComponents(BiConsumer, ResourceLocation> r) { - for (var e : DATA_COMPONENTS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.DATA_COMPONENT_TYPE); - private static final Map> DATA_COMPONENTS = new LinkedHashMap<>(); + public static void register() { + REGISTER.registerAll(); + } - public static final DataComponentType PATTERN = register("pattern", + public static final Supplier> PATTERN = REGISTER.register("pattern", () -> DataComponentType.builder() .persistent(HexPattern.CODEC) .networkSynchronized(HexPattern.STREAM_CODEC) .build()); - public static final DataComponentType> ACTION = register("op_id", + public static final Supplier>> ACTION = REGISTER.register("op_id", () -> DataComponentType.>builder() .persistent(ResourceKey.codec(HexRegistries.ACTION)) .networkSynchronized(ResourceKey.streamCodec(HexRegistries.ACTION)) .build()); - public static final DataComponentType> RECALC_WARNING = register("recalc_warning", + public static final Supplier>> RECALC_WARNING = REGISTER.register("recalc_warning", () -> DataComponentType.>builder() .persistent(ResourceKey.codec(HexRegistries.ACTION)) .networkSynchronized(ResourceKey.streamCodec(HexRegistries.ACTION)) .build()); - public static final DataComponentType NEEDS_PURCHASE = register("needs_purchase", + public static final Supplier> NEEDS_PURCHASE = REGISTER.register("needs_purchase", () -> DataComponentType.builder() .networkSynchronized(StreamCodec.unit(Unit.INSTANCE)) .build()); @@ -54,67 +56,67 @@ public static void registerDataComponents(BiConsumer, Resou *

* This is not useful to the player at all. */ - public static final DataComponentType>> VISUAL_OVERRIDE = register("visual_override", + public static final Supplier>>> VISUAL_OVERRIDE = REGISTER.register("visual_override", () -> DataComponentType.>>builder() .networkSynchronized(ByteBufCodecs.optional(ByteBufCodecs.registry(HexRegistries.IOTA_TYPE))) .build()); - public static final DataComponentType ITEM_VARIANT = register("variant", + public static final Supplier> ITEM_VARIANT = REGISTER.register("variant", () -> DataComponentType.builder() .persistent(Codec.intRange(0, Integer.MAX_VALUE)) .networkSynchronized(ByteBufCodecs.VAR_INT) .build()); - public static final DataComponentType SEALED_IOTA_HOLDER = register("sealed", + public static final Supplier> SEALED_IOTA_HOLDER = REGISTER.register("sealed", () -> DataComponentType.builder() .persistent(Codec.unit(Unit.INSTANCE)) .networkSynchronized(StreamCodec.unit(Unit.INSTANCE)) .build()); // TODO port: Data components must implement equals and hashCode. Keep in mind they must also be immutable - public static final DataComponentType IOTA_HOLDER_IOTA = register("iota", + public static final Supplier> IOTA_HOLDER_IOTA = REGISTER.register("iota", () -> DataComponentType.builder() .persistent(IotaType.TYPED_CODEC) .networkSynchronized(IotaType.TYPED_STREAM_CODEC) .build()); - public static final DataComponentType> HEX_HOLDER_PATTERNS = register("patterns", + public static final Supplier>> HEX_HOLDER_PATTERNS = REGISTER.register("patterns", () -> DataComponentType.>builder() .persistent(IotaType.TYPED_CODEC.listOf()) .networkSynchronized(IotaType.TYPED_STREAM_CODEC.apply(ByteBufCodecs.list())) .build()); - public static final DataComponentType MEDIA = register("media", + public static final Supplier> MEDIA = REGISTER.register("media", () -> DataComponentType.builder() .persistent(Codec.LONG) .networkSynchronized(ByteBufCodecs.VAR_LONG) .build()); - public static final DataComponentType MEDIA_MAX = register("start_media", + public static final Supplier> MEDIA_MAX = REGISTER.register("start_media", () -> DataComponentType.builder() .persistent(Codec.LONG) .networkSynchronized(ByteBufCodecs.VAR_LONG) .build()); - public static final DataComponentType HEX_NAME = register("hex_name", + public static final Supplier> HEX_NAME = REGISTER.register("hex_name", () -> DataComponentType.builder() .persistent(Codec.STRING) .networkSynchronized(ByteBufCodecs.STRING_UTF8) .build()); - public static final DataComponentType PIGMENT = register("pigment", + public static final Supplier> PIGMENT = REGISTER.register("pigment", () -> DataComponentType.builder() .persistent(FrozenPigment.CODEC) .networkSynchronized(FrozenPigment.STREAM_CODEC) .build()); - public static final DataComponentType ABACUS_VALUE = register("abacus_value", + public static final Supplier> ABACUS_VALUE = REGISTER.register("abacus_value", () -> DataComponentType.builder() .persistent(Codec.DOUBLE) .networkSynchronized(ByteBufCodecs.DOUBLE) .build()); - public static final DataComponentType SELECTED_SPELLBOOK_PAGE = register("page_idx", + public static final Supplier> SELECTED_SPELLBOOK_PAGE = REGISTER.register("page_idx", () -> DataComponentType.builder() .persistent(Codec.INT) .networkSynchronized(ByteBufCodecs.INT) .build()); - public static final DataComponentType> SPELLBOOK_PAGES = register("pages", + public static final Supplier>> SPELLBOOK_PAGES = REGISTER.register("pages", () -> DataComponentType.>builder() .persistent(Codec.unboundedMap(Codec.STRING, IotaType.TYPED_CODEC)) .networkSynchronized(ByteBufCodecs.map( @@ -124,7 +126,7 @@ public static void registerDataComponents(BiConsumer, Resou )) .build()); - public static final DataComponentType> SPELLBOOK_PAGE_NAMES = register("page_names", + public static final Supplier>> SPELLBOOK_PAGE_NAMES = REGISTER.register("page_names", () -> DataComponentType.>builder() .persistent(Codec.unboundedMap(Codec.STRING, ComponentSerialization.CODEC)) .networkSynchronized(ByteBufCodecs.map( @@ -134,7 +136,7 @@ public static void registerDataComponents(BiConsumer, Resou )) .build()); - public static final DataComponentType> SPELLBOOK_PAGE_SEALS = register("sealed_pages", + public static final Supplier>> SPELLBOOK_PAGE_SEALS = REGISTER.register("sealed_pages", () -> DataComponentType.>builder() .persistent(Codec.unboundedMap(Codec.STRING, Codec.BOOL)) .networkSynchronized(ByteBufCodecs.map( @@ -144,27 +146,15 @@ public static void registerDataComponents(BiConsumer, Resou )) .build()); - public static final DataComponentType> MEDIA_EXTRACTIONS = register("media_extractions", + public static final Supplier>> MEDIA_EXTRACTIONS = REGISTER.register("media_extractions", () -> DataComponentType.>builder() .persistent(Codec.LONG.listOf()) .networkSynchronized(ByteBufCodecs.VAR_LONG.apply(ByteBufCodecs.list())) .build()); - public static final DataComponentType> MEDIA_INSERTIONS = register("media_insertions", + public static final Supplier>> MEDIA_INSERTIONS = REGISTER.register("media_insertions", () -> DataComponentType.>builder() .persistent(Codec.LONG.listOf()) .networkSynchronized(ByteBufCodecs.VAR_LONG.apply(ByteBufCodecs.list())) .build()); - - - private static DataComponentType register( - String id, - DataComponentType lift - ) { - var old = DATA_COMPONENTS.put(modLoc(id), lift); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return lift; - } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java index 729b19aeca..d3f112b204 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java @@ -42,11 +42,11 @@ public AddHexToAncientCypherFunc(List lootItemConditions) { public static ItemStack doStatic(ItemStack stack, RandomSource rand) { var hex = LOOT_HEXES.get(rand.nextInt(LOOT_HEXES.size())); - stack.set(HexDataComponents.HEX_NAME, hex.getFirst()); - stack.set(HexDataComponents.MEDIA, 32 * MediaConstants.SHARD_UNIT); - stack.set(HexDataComponents.MEDIA_MAX, 32 * MediaConstants.SHARD_UNIT); - stack.set(HexDataComponents.ITEM_VARIANT, rand.nextInt(8)); - stack.set(HexDataComponents.HEX_HOLDER_PATTERNS, Arrays.stream(hex.getSecond()).map(el -> { + stack.set(HexDataComponents.HEX_NAME.get(), hex.getFirst()); + stack.set(HexDataComponents.MEDIA.get(), 32 * MediaConstants.SHARD_UNIT); + stack.set(HexDataComponents.MEDIA_MAX.get(), 32 * MediaConstants.SHARD_UNIT); + stack.set(HexDataComponents.ITEM_VARIANT.get(), rand.nextInt(8)); + stack.set(HexDataComponents.HEX_HOLDER_PATTERNS.get(), Arrays.stream(hex.getSecond()).map(el -> { var pieces = el.split(" "); return new PatternIota(HexPattern.fromAngles(pieces[1],HexDir.fromString(pieces[0]))); }).collect(Collectors.toList())); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java index 3b8afd744d..4c41089ba5 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java @@ -57,12 +57,12 @@ public static ItemStack doStatic(ItemStack stack, RandomSource rand, ServerLevel if (pat == null) { HexAPI.LOGGER.error("No per-world pattern found for action " + patternID + " while generating loot scroll! " + "Try running '/hexcasting recalcPatterns' to generate the patterns for this world."); - stack.set(HexDataComponents.RECALC_WARNING, patternKey); + stack.set(HexDataComponents.RECALC_WARNING.get(), patternKey); return stack; } - stack.set(HexDataComponents.ACTION, patternKey); - stack.set(HexDataComponents.PATTERN, pat); + stack.set(HexDataComponents.ACTION.get(), patternKey); + stack.set(HexDataComponents.PATTERN.get(), pat); return stack; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java index 4e19aae3f5..1ecf8f864b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/msgs/MsgShiftScrollC2S.java @@ -99,7 +99,7 @@ private void spellbook(ServerPlayer sender, InteractionHand hand, ItemStack stac private void abacus(ServerPlayer sender, InteractionHand hand, ItemStack stack, double delta) { var increase = delta < 0; - Double num = stack.get(HexDataComponents.ABACUS_VALUE); + Double num = stack.get(HexDataComponents.ABACUS_VALUE.get()); if(num == null) num = 0.0; @@ -116,7 +116,7 @@ private void abacus(ServerPlayer sender, InteractionHand hand, ItemStack stack, int scale = Math.max((int) Math.floor(Math.abs(delta)), 1); num += scale * shiftDelta * (increase ? 1 : -1); - stack.set(HexDataComponents.ABACUS_VALUE, num); + stack.set(HexDataComponents.ABACUS_VALUE.get(), num); pitch *= (increase ? 1.05f : 0.95f); pitch += (Math.random() - 0.5) * 0.1; diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java index 4bf2f74298..1558973970 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealSpellbookRecipe.java @@ -20,7 +20,7 @@ public class SealSpellbookRecipe extends ShapelessRecipe { private static ItemStack getSealedStack() { ItemStack output = new ItemStack(HexItems.SPELLBOOK.get()); ItemSpellbook.setSealed(output, true); - output.set(HexDataComponents.VISUAL_OVERRIDE, Optional.empty()); + output.set(HexDataComponents.VISUAL_OVERRIDE.get(), Optional.empty()); return output; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java index f75b3828c7..315fadb540 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/SealThingsRecipe.java @@ -100,7 +100,7 @@ public String getSerializedName() { public boolean isCorrectSealee(ItemStack stack) { return switch (this) { case FOCUS -> stack.is(HexItems.FOCUS.get()) - && stack.has(HexDataComponents.IOTA_HOLDER_IOTA) + && stack.has(HexDataComponents.IOTA_HOLDER_IOTA.get()) && !ItemFocus.isSealed(stack); case SPELLBOOK -> stack.is(HexItems.SPELLBOOK.get()) && HexItems.SPELLBOOK.get().readIota(stack) != null diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java b/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java index 75e617df4d..713b16d052 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/HexLootTables.java @@ -75,7 +75,7 @@ protected void makeLootTables(Map blockTables, .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(HexBlocks.SLATE.get()) .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) - .include(HexDataComponents.PATTERN) + .include(HexDataComponents.PATTERN.get()) )); blockTables.put(HexBlocks.SLATE.get(), LootTable.lootTable().withPool(slatePool)); diff --git a/Common/src/main/java/at/petrak/hexcasting/interop/inline/HexPatternOverlayRenderer.java b/Common/src/main/java/at/petrak/hexcasting/interop/inline/HexPatternOverlayRenderer.java index 4d2f15b6ff..4d8b844482 100644 --- a/Common/src/main/java/at/petrak/hexcasting/interop/inline/HexPatternOverlayRenderer.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/inline/HexPatternOverlayRenderer.java @@ -21,8 +21,8 @@ public interface HexPatternOverlayRenderer extends ItemOverlayRenderer { HexPattern getPattern(ItemStack stack); HexPatternOverlayRenderer SCROLL_RENDERER = (stack) -> { - var pattern = stack.get(HexDataComponents.PATTERN); - if (pattern != null && !stack.has(HexDataComponents.NEEDS_PURCHASE)) { + var pattern = stack.get(HexDataComponents.PATTERN.get()); + if (pattern != null && !stack.has(HexDataComponents.NEEDS_PURCHASE.get())) { return pattern; } return null; diff --git a/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java b/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java index 6fdf57d364..040277a1e3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java +++ b/Common/src/main/java/at/petrak/hexcasting/mixin/MixinWanderingTrader.java @@ -30,7 +30,7 @@ private void addNewTrades(CallbackInfo ci) { if (rand.nextFloat() < HexConfig.server().traderScrollChance() && self.getServer() != null) { ItemStack scroll = new ItemStack(HexItems.SCROLL_LARGE.get()); AddPerWorldPatternToScrollFunc.doStatic(scroll, rand, self.getServer().overworld()); - scroll.set(HexDataComponents.NEEDS_PURCHASE, Unit.INSTANCE); + scroll.set(HexDataComponents.NEEDS_PURCHASE.get(), Unit.INSTANCE); offerList.set(5, new MerchantOffer(new ItemCost(Items.EMERALD, 12), scroll, 1, 1, 1)); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index c1975ac129..4a647da996 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -211,7 +211,7 @@ object FabricHexInitializer : ModInitializer { .add(HexAttributes.SENTINEL_RADIUS)) HexMobEffects.register() HexPotions.register() - HexDataComponents.registerDataComponents(bind(BuiltInRegistries.DATA_COMPONENT_TYPE)) + HexDataComponents.register() HexRecipeStuffRegistry.registerSerializers(bind(BuiltInRegistries.RECIPE_SERIALIZER)) HexRecipeStuffRegistry.registerTypes(bind(BuiltInRegistries.RECIPE_TYPE)) diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/HexCardinalComponents.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/HexCardinalComponents.java index fb6b767a5d..b60bc9a1c6 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/HexCardinalComponents.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/cc/HexCardinalComponents.java @@ -90,17 +90,17 @@ public void registerEntityComponentFactories(EntityComponentFactoryRegistry regi @Override public void registerItemComponentMigrations(ItemComponentMigrationRegistry registry) { - registry.registerMigration(modLoc("pigment"), HexDataComponents.PIGMENT); + registry.registerMigration(modLoc("pigment"), HexDataComponents.PIGMENT.get()); - registry.registerMigration(modLoc("iota_holder"), HexDataComponents.IOTA_HOLDER_IOTA); + registry.registerMigration(modLoc("iota_holder"), HexDataComponents.IOTA_HOLDER_IOTA.get()); // oh havoc, you think you're so funny // the worst part is you're /right/ - registry.registerMigration(modLoc("media_holder"), HexDataComponents.MEDIA); + registry.registerMigration(modLoc("media_holder"), HexDataComponents.MEDIA.get()); - registry.registerMigration(modLoc("hex_holder"), HexDataComponents.HEX_HOLDER_PATTERNS); + registry.registerMigration(modLoc("hex_holder"), HexDataComponents.HEX_HOLDER_PATTERNS.get()); - registry.registerMigration(modLoc("variant_item"), HexDataComponents.ITEM_VARIANT); + registry.registerMigration(modLoc("variant_item"), HexDataComponents.ITEM_VARIANT.get()); } private ComponentFactory wrapItemEntityDelegate(Function Date: Sun, 26 Jul 2026 21:11:18 +0200 Subject: [PATCH 08/25] chore: merge HexBlocks register methods --- .../main/java/at/petrak/hexcasting/common/lib/HexBlocks.java | 5 +---- .../java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt | 3 +-- .../java/at/petrak/hexcasting/forge/ForgeHexInitializer.java | 3 +-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java index aa9745c301..08340e68da 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java @@ -51,11 +51,8 @@ public class HexBlocks { private static final IXplatRegister REGISTER_BLOCK_ITEMS = IXplatAbstractions.INSTANCE.createRegistar(Registries.ITEM); private static final Map, List>> BLOCK_TABS = new LinkedHashMap<>(); - public static void registerBlocks() { + public static void register() { REGISTER_BLOCKS.registerAll(); - } - - public static void registerBlockItems() { REGISTER_BLOCK_ITEMS.registerAll(); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 4a647da996..1d210289a7 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -191,8 +191,7 @@ object FabricHexInitializer : ModInitializer { HexCreativeTabs.register() HexSounds.register() - HexBlocks.registerBlocks() - HexBlocks.registerBlockItems() + HexBlocks.register() HexBlockEntities.register() HexItems.register() // Registry.register(IngredientDeserializer.REGISTRY, FabricModConditionalIngredient.ID, FabricModConditionalIngredient.Deserializer.INSTANCE) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index fb61f12784..09c9864fb7 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -119,8 +119,7 @@ private static void initRegistry() { HexCreativeTabs.register(); - HexBlocks.registerBlocks(); - HexBlocks.registerBlockItems(); + HexBlocks.register(); HexBlockEntities.register(); HexItems.register(); HexDataComponents.register(); From 0df8a79227f9fe593e64c771700e4632e3ca6fa3 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:21:25 +0200 Subject: [PATCH 09/25] chore: migrate HexRecipeStuffRegistry to IXplatRegister --- .../actions/spells/great/OpBrainsweep.kt | 2 +- .../common/recipe/BrainsweepRecipe.java | 4 +- .../common/recipe/HexRecipeStuffRegistry.java | 62 +++++++------------ .../patchouli/BrainsweepProcessor.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 3 +- .../fabric/interop/emi/HexEMIPlugin.java | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 3 +- .../forge/interop/jei/HexJEIPlugin.java | 2 +- 8 files changed, 30 insertions(+), 50 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/great/OpBrainsweep.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/great/OpBrainsweep.kt index 29730acca9..61e6ad9eda 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/great/OpBrainsweep.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/great/OpBrainsweep.kt @@ -55,7 +55,7 @@ object OpBrainsweep : SpellAction { val state = env.world.getBlockState(pos) val recman = env.world.recipeManager - val recipes = recman.getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE) + val recipes = recman.getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE.get()) val recipe = recipes.asSequence() .map { it.value } .find { it.matches(state, sacrifice, env.world) } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/BrainsweepRecipe.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/BrainsweepRecipe.java index a9f8ea3384..7dbeb85bf0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/BrainsweepRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/BrainsweepRecipe.java @@ -37,12 +37,12 @@ public boolean matches(BlockState blockIn, Entity victim, ServerLevel level) { @Override public RecipeType getType() { - return HexRecipeStuffRegistry.BRAINSWEEP_TYPE; + return HexRecipeStuffRegistry.BRAINSWEEP_TYPE.get(); } @Override public RecipeSerializer getSerializer() { - return HexRecipeStuffRegistry.BRAINSWEEP; + return HexRecipeStuffRegistry.BRAINSWEEP.get(); } // in order to get this to be a "Recipe" we need to do a lot of bending-over-backwards diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/HexRecipeStuffRegistry.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/HexRecipeStuffRegistry.java index cc2ffbba0f..1e1c26aa86 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/HexRecipeStuffRegistry.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/HexRecipeStuffRegistry.java @@ -1,6 +1,9 @@ package at.petrak.hexcasting.common.recipe; import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; @@ -9,51 +12,30 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexRecipeStuffRegistry { - public static void registerSerializers(BiConsumer, ResourceLocation> r) { - for (var e : SERIALIZERS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + private static final IXplatRegister> REGISTER_SERIALIZER = IXplatAbstractions.INSTANCE.createRegistar(Registries.RECIPE_SERIALIZER); + private static final IXplatRegister> REGISTER_RECIPE_TYPE = IXplatAbstractions.INSTANCE.createRegistar(Registries.RECIPE_TYPE); - public static void registerTypes(BiConsumer, ResourceLocation> r) { - for (var e : TYPES.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + public static void register() { + REGISTER_SERIALIZER.registerAll(); + REGISTER_RECIPE_TYPE.registerAll(); } - private static final Map> SERIALIZERS = new LinkedHashMap<>(); - private static final Map> TYPES = new LinkedHashMap<>(); - - public static final RecipeSerializer BRAINSWEEP = registerSerializer("brainsweep", - new BrainsweepRecipe.Serializer()); - public static final RecipeSerializer SEAL_FOCUS = registerSerializer( - "seal_focus", SealThingsRecipe.FOCUS_SERIALIZER); - public static final RecipeSerializer SEAL_SPELLBOOK = registerSerializer( - "seal_spellbook", SealThingsRecipe.SPELLBOOK_SERIALIZER); - - public static RecipeType BRAINSWEEP_TYPE = registerType("brainsweep"); - - private static > RecipeSerializer registerSerializer(String name, RecipeSerializer rs) { - var old = SERIALIZERS.put(modLoc(name), rs); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return rs; - } - - private static > RecipeType registerType(String name) { - var type = new RecipeType() { - @Override - public String toString() { - return HexAPI.MOD_ID + ":" + name; - } - }; - // never will be a collision because it's a new object - TYPES.put(modLoc(name), type); - return type; - } + public static final Supplier> BRAINSWEEP = REGISTER_SERIALIZER.register("brainsweep", BrainsweepRecipe.Serializer::new); + public static final Supplier> SEAL_FOCUS = REGISTER_SERIALIZER.register( + "seal_focus", () -> SealThingsRecipe.FOCUS_SERIALIZER); + public static final Supplier> SEAL_SPELLBOOK = REGISTER_SERIALIZER.register( + "seal_spellbook", () -> SealThingsRecipe.SPELLBOOK_SERIALIZER); + + public static Supplier> BRAINSWEEP_TYPE = REGISTER_RECIPE_TYPE.register("brainsweep", () -> + new RecipeType() { + @Override + public String toString() { + return HexAPI.MOD_ID + ":" + "brainsweep"; + } + }); } diff --git a/Common/src/main/java/at/petrak/hexcasting/interop/patchouli/BrainsweepProcessor.java b/Common/src/main/java/at/petrak/hexcasting/interop/patchouli/BrainsweepProcessor.java index e91a940409..5755a88139 100644 --- a/Common/src/main/java/at/petrak/hexcasting/interop/patchouli/BrainsweepProcessor.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/patchouli/BrainsweepProcessor.java @@ -30,7 +30,7 @@ public void setup(Level level, IVariableProvider vars) { var id = ResourceLocation.parse(vars.get("recipe", level.registryAccess()).asString()); var recman = level.getRecipeManager(); - var brainsweepings = recman.getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE); + var brainsweepings = recman.getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE.get()); for (var poisonApples : brainsweepings) { if (poisonApples.id().equals(id)) { this.recipe = poisonApples.value(); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 1d210289a7..f6fd7d123e 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -212,8 +212,7 @@ object FabricHexInitializer : ModInitializer { HexPotions.register() HexDataComponents.register() - HexRecipeStuffRegistry.registerSerializers(bind(BuiltInRegistries.RECIPE_SERIALIZER)) - HexRecipeStuffRegistry.registerTypes(bind(BuiltInRegistries.RECIPE_TYPE)) + HexRecipeStuffRegistry.register() HexParticles.registerParticles(bind(BuiltInRegistries.PARTICLE_TYPE)) diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java index 0d327f26eb..e6b04e09c9 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java @@ -46,7 +46,7 @@ public void register(EmiRegistry registry) { registry.addWorkstation(EDIFY, EmiIngredient.of(HexTags.Items.STAVES)); for (RecipeHolder recipe : registry.getRecipeManager() - .getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE)) { + .getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE.get())) { var inputBlocks = EmiIngredient.of(recipe.value().blockIn().getDisplayedStacks().stream() .map(EmiStack::of).toList()); var inputEntity = new BrainsweepeeEmiStack(recipe.value().entityIn()); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 09c9864fb7..7f5fa8b647 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -124,8 +124,7 @@ private static void initRegistry() { HexItems.register(); HexDataComponents.register(); - bind(Registries.RECIPE_SERIALIZER, HexRecipeStuffRegistry::registerSerializers); - bind(Registries.RECIPE_TYPE, HexRecipeStuffRegistry::registerTypes); + HexRecipeStuffRegistry.register(); bind(Registries.ENTITY_TYPE, HexEntities::registerEntities); // Testing out new registration system diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java index 0bc38fca64..3f836e1111 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java @@ -58,7 +58,7 @@ public void registerRecipes(@NotNull IRecipeRegistration registration) { Level level = Minecraft.getInstance().level; if (level != null) { registration.addRecipes(BRAINSWEEPING, - level.getRecipeManager().getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE).stream().map(RecipeHolder::value).toList()); + level.getRecipeManager().getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE.get()).stream().map(RecipeHolder::value).toList()); } if (PhialRecipeStackBuilder.shouldAddRecipe()) { From 1959c6a6251fd7464745584d4b24e676ec8fe5db Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:26:38 +0200 Subject: [PATCH 10/25] chore: migrate HexEntities to IXplatRegister --- .../client/RegisterClientStuff.java | 2 +- .../common/entities/EntityWallScroll.java | 2 +- .../common/entities/HexEntities.java | 24 +++++++------------ .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- .../forge/cap/ForgeCapabilityHandler.java | 2 +- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java index e0b094d9f2..0fcaac0f46 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java @@ -132,7 +132,7 @@ public static void init() { x.setRenderLayer(HexBlocks.AKASHIC_RECORD.get(), RenderType.translucent()); x.setRenderLayer(HexBlocks.QUENCHED_ALLAY.get(), RenderType.translucent()); - x.registerEntityRenderer(HexEntities.WALL_SCROLL, WallScrollRenderer::new); + x.registerEntityRenderer(HexEntities.WALL_SCROLL.get(), WallScrollRenderer::new); // for (var tex : ResourceLocation.fromNamespaceAndPath[]{ // PatternTooltipComponent.PRISTINE_BG, diff --git a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java index d7ed116d21..62b4b49d06 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/entities/EntityWallScroll.java @@ -50,7 +50,7 @@ public EntityWallScroll(EntityType type, Level world public EntityWallScroll(Level world, BlockPos pos, Direction dir, ItemStack scroll, boolean showStrokeOrder, int blockSize) { - super(HexEntities.WALL_SCROLL, world, pos); + super(HexEntities.WALL_SCROLL.get(), world, pos); this.setDirection(dir); this.blockSize = blockSize; diff --git a/Common/src/main/java/at/petrak/hexcasting/common/entities/HexEntities.java b/Common/src/main/java/at/petrak/hexcasting/common/entities/HexEntities.java index 435062889d..055755b7ab 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/entities/HexEntities.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/entities/HexEntities.java @@ -1,6 +1,9 @@ package at.petrak.hexcasting.common.entities; import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -9,28 +12,19 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexEntities { - public static void registerEntities(BiConsumer, ResourceLocation> r) { - for (var e : ENTITIES.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.ENTITY_TYPE); - private static final Map> ENTITIES = new LinkedHashMap<>(); + public static void register() { + REGISTER.registerAll(); + } - public static final EntityType WALL_SCROLL = register("wall_scroll", + public static final Supplier> WALL_SCROLL = REGISTER.register("wall_scroll", () -> EntityType.Builder.of(EntityWallScroll::new, MobCategory.MISC) .sized(0.5f, 0.5f).clientTrackingRange(10).updateInterval(Integer.MAX_VALUE) .build(HexAPI.MOD_ID + ":wall_scroll")); - - private static EntityType register(String id, EntityType type) { - var old = ENTITIES.put(modLoc(id), type); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return type; - } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index f6fd7d123e..45761384e9 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -198,7 +198,7 @@ object FabricHexInitializer : ModInitializer { CustomIngredientSerializer.register(FabricUnsealedIngredient.Serializer.INSTANCE); CustomIngredientSerializer.register(FabricModConditionalIngredient.Serializer.INSTANCE); - HexEntities.registerEntities(bind(BuiltInRegistries.ENTITY_TYPE)) + HexEntities.register() HexAttributes.register() FabricDefaultAttributeRegistry.register(EntityType.PLAYER, Player.createAttributes() diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 7f5fa8b647..5bbbb19358 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -126,7 +126,7 @@ private static void initRegistry() { HexRecipeStuffRegistry.register(); - bind(Registries.ENTITY_TYPE, HexEntities::registerEntities); + HexEntities.register(); // Testing out new registration system HexAttributes.register(); HexMobEffects.register(); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java index 7b257ad40a..037255b446 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java @@ -86,7 +86,7 @@ public static void registerCaps(RegisterCapabilitiesEvent evt) { ); evt.registerEntity( HexCapabilities.Entity.IOTA, - HexEntities.WALL_SCROLL, + HexEntities.WALL_SCROLL.get(), (ent, ctx) -> new ItemDelegatingEntityIotaHolder.ToWallScroll(ent) ); From ec3210f3d910d66ef0185e41a84decd9b97f8454 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:31:53 +0200 Subject: [PATCH 11/25] chore: migrate HexParticles to IXplatRegister --- .../hexcasting/common/lib/HexParticles.java | 28 ++++++++----------- .../particles/ConjureParticleOptions.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 3 +- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java index 52c538b6f2..60244e2da1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java @@ -2,39 +2,33 @@ import at.petrak.hexcasting.client.particles.ConjureParticle; import at.petrak.hexcasting.common.particles.ConjureParticleOptions; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.SpriteSet; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Function; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexParticles { - public static void registerParticles(BiConsumer, ResourceLocation> r) { - for (var e : PARTICLES.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - private static final Map> PARTICLES = new LinkedHashMap<>(); + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.PARTICLE_TYPE); - public static final ConjureParticleOptions.Type CONJURE_PARTICLE = register( - "conjure_particle", new ConjureParticleOptions.Type(false)); - - private static > T register(String id, T particle) { - var old = PARTICLES.put(modLoc(id), particle); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return particle; + public static void register() { + REGISTER.registerAll(); } + public static final Supplier CONJURE_PARTICLE = REGISTER.register( + "conjure_particle", () -> new ConjureParticleOptions.Type(false)); + public static class FactoryHandler { public interface Consumer { void register(ParticleType type, @@ -42,7 +36,7 @@ void register(ParticleType type, } public static void registerFactories(Consumer consumer) { - consumer.register(CONJURE_PARTICLE, ConjureParticle.Provider::new); + consumer.register(CONJURE_PARTICLE.get(), ConjureParticle.Provider::new); } } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/particles/ConjureParticleOptions.java b/Common/src/main/java/at/petrak/hexcasting/common/particles/ConjureParticleOptions.java index 05c4983c90..869e0f5ab3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/particles/ConjureParticleOptions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/particles/ConjureParticleOptions.java @@ -13,7 +13,7 @@ public record ConjureParticleOptions(int color) implements ParticleOptions { @Override public ParticleType getType() { - return HexParticles.CONJURE_PARTICLE; + return HexParticles.CONJURE_PARTICLE.get(); } public static class Type extends ParticleType { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 45761384e9..db56db05b2 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -214,7 +214,7 @@ object FabricHexInitializer : ModInitializer { HexRecipeStuffRegistry.register() - HexParticles.registerParticles(bind(BuiltInRegistries.PARTICLE_TYPE)) + HexParticles.register() HexLootFunctions.registerSerializers(bind(BuiltInRegistries.LOOT_FUNCTION_TYPE)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 5bbbb19358..fb25888af6 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -127,11 +127,10 @@ private static void initRegistry() { HexRecipeStuffRegistry.register(); HexEntities.register(); - // Testing out new registration system HexAttributes.register(); HexMobEffects.register(); HexPotions.register(); - bind(Registries.PARTICLE_TYPE, HexParticles::registerParticles); + HexParticles.register(); bind(Registries.TRIGGER_TYPE, HexAdvancementTriggers::registerTriggers); From eb218be8feb9325e40b2a02196acbf75ca8510f9 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:38:45 +0200 Subject: [PATCH 12/25] chore: migrate HexAdvancementTriggers to IXplatRegister --- .../advancements/HexAdvancementTriggers.java | 29 +++++++------------ .../casting/eval/env/PlayerBasedCastEnv.java | 4 +-- .../casting/mishaps/MishapUnenlightened.kt | 2 +- .../hexcasting/datagen/HexAdvancements.java | 10 +++---- .../datagen/recipe/HexplatRecipes.java | 24 +++++++-------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 7 files changed, 32 insertions(+), 41 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java b/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java index 36d051ab96..b8d6f37715 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/advancements/HexAdvancementTriggers.java @@ -1,35 +1,26 @@ package at.petrak.hexcasting.api.advancements; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.advancements.CriterionTrigger; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexAdvancementTriggers { - private static final Map> TRIGGERS = new LinkedHashMap<>(); + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.TRIGGER_TYPE); - public static final OvercastTrigger OVERCAST_TRIGGER = register("overcast", new OvercastTrigger()); - public static final SpendMediaTrigger SPEND_MEDIA_TRIGGER = register("spend_media", new SpendMediaTrigger()); - public static final FailToCastGreatSpellTrigger FAIL_GREAT_SPELL_TRIGGER = register("fail_to_cast_great_spell", new FailToCastGreatSpellTrigger()); - - public static void registerTriggers(BiConsumer, ResourceLocation> r) { - for (var e : TRIGGERS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + public static void register() { + REGISTER.registerAll(); } - private static > T register( - String id, - T lift - ) { - var old = TRIGGERS.put(modLoc(id), lift); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return lift; - } + public static final Supplier OVERCAST_TRIGGER = REGISTER.register("overcast", OvercastTrigger::new); + public static final Supplier SPEND_MEDIA_TRIGGER = REGISTER.register("spend_media", SpendMediaTrigger::new); + public static final Supplier FAIL_GREAT_SPELL_TRIGGER = REGISTER.register("fail_to_cast_great_spell", FailToCastGreatSpellTrigger::new); } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java index 9adc6b7b7c..d6a82de01a 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PlayerBasedCastEnv.java @@ -172,7 +172,7 @@ protected long extractMediaFromInventory(long costLeft, boolean allowOvercast, b var actuallyTaken = Mth.ceil(mediaAbleToCastFromHP - (this.caster.getHealth() * mediaToHealth)); - HexAdvancementTriggers.OVERCAST_TRIGGER.trigger(this.caster, actuallyTaken); + HexAdvancementTriggers.OVERCAST_TRIGGER.get().trigger(this.caster, actuallyTaken); this.caster.awardStat(HexStatistics.MEDIA_OVERCAST, actuallyTaken); costLeft -= actuallyTaken; @@ -181,7 +181,7 @@ protected long extractMediaFromInventory(long costLeft, boolean allowOvercast, b if (!simulate) { this.caster.awardStat(HexStatistics.MEDIA_USED, (int) (startCost - costLeft)); - HexAdvancementTriggers.SPEND_MEDIA_TRIGGER.trigger( + HexAdvancementTriggers.SPEND_MEDIA_TRIGGER.get().trigger( this.caster, startCost - costLeft, costLeft < 0 ? -costLeft : 0 diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapUnenlightened.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapUnenlightened.kt index e0eb08f2ea..4068b994bb 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapUnenlightened.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/mishaps/MishapUnenlightened.kt @@ -28,7 +28,7 @@ class MishapUnenlightened : Mishap() { val castingPlayer = env.castingEntity as? ServerPlayer if (castingPlayer != null) { - HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.trigger(castingPlayer) + HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.get().trigger(castingPlayer) } return stack } diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java b/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java index d1bcbea2df..65c999b50e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/HexAdvancements.java @@ -67,7 +67,7 @@ public void generate(HolderLookup.Provider provider, Consumer .display(simpleDisplay(Items.GLISTERING_MELON_SLICE, "wasteful_cast", AdvancementType.TASK)) .parent(root) .addCriterion("waste_amt", new Criterion<>( - HexAdvancementTriggers.SPEND_MEDIA_TRIGGER, + HexAdvancementTriggers.SPEND_MEDIA_TRIGGER.get(), new SpendMediaTrigger.Instance(Optional.empty(), MinMaxLongs.ANY, MinMaxLongs.atLeast(89 * MediaConstants.DUST_UNIT / 10)) @@ -77,7 +77,7 @@ public void generate(HolderLookup.Provider provider, Consumer .display(simpleDisplay(HexItems.CHARGED_AMETHYST.get(), "big_cast", AdvancementType.TASK)) .parent(root) .addCriterion("cast_amt", new Criterion<>( - HexAdvancementTriggers.SPEND_MEDIA_TRIGGER, + HexAdvancementTriggers.SPEND_MEDIA_TRIGGER.get(), new SpendMediaTrigger.Instance(Optional.empty(), MinMaxLongs.atLeast(64 * MediaConstants.CRYSTAL_UNIT), MinMaxLongs.ANY) @@ -88,7 +88,7 @@ public void generate(HolderLookup.Provider provider, Consumer .display(simpleDisplay(Items.BLAZE_POWDER, "y_u_no_cast_angy", AdvancementType.TASK)) .parent(root) .addCriterion("did_the_thing", - new Criterion<>(HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER, + new Criterion<>(HexAdvancementTriggers.FAIL_GREAT_SPELL_TRIGGER.get(), new FailToCastGreatSpellTrigger.Instance(Optional.empty()))) .save(consumer, prefix("y_u_no_cast_angy")); @@ -97,7 +97,7 @@ public void generate(HolderLookup.Provider provider, Consumer .parent(impotence) .addCriterion("health_used", new Criterion<>( - HexAdvancementTriggers.OVERCAST_TRIGGER, + HexAdvancementTriggers.OVERCAST_TRIGGER.get(), new OvercastTrigger.Instance(Optional.empty(), MinMaxBounds.Ints.ANY, MinMaxBounds.Doubles.ANY, @@ -113,7 +113,7 @@ public void generate(HolderLookup.Provider provider, Consumer Optional.empty(), AdvancementType.CHALLENGE, true, true, true)) .parent(opened_eyes) - .addCriterion("health_used", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, ENLIGHTEN)) + .addCriterion("health_used", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), ENLIGHTEN)) .save(consumer, prefix("enlightenment")); var loreRoot = Advancement.Builder.advancement() diff --git a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java index 69a2febc43..8c84c184ff 100644 --- a/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java +++ b/Common/src/main/java/at/petrak/hexcasting/datagen/recipe/HexplatRecipes.java @@ -406,7 +406,7 @@ public void buildRecipes(RecipeOutput recipes) { .pattern("PSS") .pattern("BAB") .pattern("SSP") - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)).save(recipes); ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.EMPTY_DIRECTRIX.get()) .define('C', Items.COMPARATOR) @@ -416,7 +416,7 @@ public void buildRecipes(RecipeOutput recipes) { .pattern("CSS") .pattern("OAO") .pattern("SSC") - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)).save(recipes); ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_BOOKSHELF.get()) .define('L', HexTags.Items.EDIFIED_LOGS) @@ -425,7 +425,7 @@ public void buildRecipes(RecipeOutput recipes) { /*this is the*/.pattern("LPL") // and what i have for you today is .pattern("CCC") .pattern("LPL") - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)).save(recipes); ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, HexBlocks.AKASHIC_LIGATURE.get(), 4) .define('L', HexTags.Items.EDIFIED_LOGS) @@ -436,7 +436,7 @@ public void buildRecipes(RecipeOutput recipes) { .pattern("LPL") .pattern("123") .pattern("LPL") - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)).save(recipes); + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)).save(recipes); // Stone sets stoneSet(recipes, HexBlocks.SLATE_BLOCK.get().asItem(), HexBlocks.SLATE_BRICKS.get().asItem(), HexBlocks.SLATE_BRICKS_SMALL.get().asItem(), HexBlocks.SLATE_TILES.get().asItem(), HexBlocks.SLATE_PILLAR.get().asItem()); @@ -472,50 +472,50 @@ public void buildRecipes(RecipeOutput recipes) { new BrainsweepRecipeBuilder(HexStateIngredients.of(Blocks.AMETHYST_BLOCK), new VillagerIngredient(null, null, 3), Blocks.BUDDING_AMETHYST.defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("budding_amethyst")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.TOOLSMITH, null, 2), HexBlocks.IMPETUS_RIGHTCLICK.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("impetus_rightclick")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.FLETCHER, null, 2), HexBlocks.IMPETUS_LOOK.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("impetus_look")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.IMPETUS_EMPTY.get()), new VillagerIngredient(VillagerProfession.CLERIC, null, 2), HexBlocks.IMPETUS_REDSTONE.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("impetus_storedplayer")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX.get()), new VillagerIngredient(VillagerProfession.MASON, null, 1), HexBlocks.DIRECTRIX_REDSTONE.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("directrix_redstone")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.EMPTY_DIRECTRIX.get()), new VillagerIngredient(VillagerProfession.SHEPHERD, null, 1), HexBlocks.DIRECTRIX_BOOLEAN.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("directrix_boolean")); new BrainsweepRecipeBuilder(HexStateIngredients.of(HexBlocks.AKASHIC_LIGATURE.get()), new VillagerIngredient(VillagerProfession.LIBRARIAN, null, 5), HexBlocks.AKASHIC_RECORD.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT * 10) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("akashic_record")); // Temporary tests new BrainsweepRecipeBuilder(HexStateIngredients.of(Blocks.AMETHYST_BLOCK), new EntityTypeIngredient(EntityType.ALLAY), HexBlocks.QUENCHED_ALLAY.get().defaultBlockState(), MediaConstants.CRYSTAL_UNIT) - .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER, enlightenment)) + .unlockedBy("enlightenment", new Criterion<>(HexAdvancementTriggers.OVERCAST_TRIGGER.get(), enlightenment)) .save(recipes, modLoc("quench_allay")); // Create compat; will need to be Neo only as Create 1.21 will not exist on Fabric diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index db56db05b2..03a409af10 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -97,7 +97,7 @@ object FabricHexInitializer : ModInitializer { PatternResKeyArgument::class.java, SingletonArgumentInfo.contextFree { PatternResKeyArgument.id() } ) - HexAdvancementTriggers.registerTriggers(bind(BuiltInRegistries.TRIGGER_TYPES)) + HexAdvancementTriggers.register() HexComposting.setup() HexStrippables.init() FabricImpetusStorage.registerStorage() diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index fb25888af6..31edc3d64e 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -132,7 +132,7 @@ private static void initRegistry() { HexPotions.register(); HexParticles.register(); - bind(Registries.TRIGGER_TYPE, HexAdvancementTriggers::registerTriggers); + HexAdvancementTriggers.register(); bind(HexRegistries.IOTA_TYPE, HexIotaTypes::registerTypes); bind(HexRegistries.ACTION, HexActions::register); From 4d157085bb34794fdcca00d30f41ca4ec0e570bb Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 21:53:49 +0200 Subject: [PATCH 13/25] chore: migrate HexIotaTypes to IXplatRegister --- .../api/casting/iota/BooleanIota.java | 2 +- .../api/casting/iota/ContinuationIota.java | 2 +- .../api/casting/iota/DoubleIota.java | 2 +- .../api/casting/iota/EntityIota.java | 2 +- .../api/casting/iota/GarbageIota.java | 2 +- .../hexcasting/api/casting/iota/ListIota.java | 2 +- .../hexcasting/api/casting/iota/NullIota.java | 2 +- .../api/casting/iota/PatternIota.java | 2 +- .../hexcasting/api/casting/iota/Vec3Iota.java | 2 +- .../casting/actions/local/OpPushLocal.kt | 2 +- .../arithmetic/BitwiseSetArithmetic.kt | 6 +-- .../casting/arithmetic/BoolArithmetic.kt | 10 ++--- .../casting/arithmetic/DoubleArithmetic.kt | 6 +-- .../casting/arithmetic/ListArithmetic.kt | 10 ++--- .../casting/arithmetic/ListSetArithmetic.kt | 4 +- .../casting/arithmetic/Vec3Arithmetic.java | 6 +-- .../arithmetic/operator/OperatorLog.kt | 2 +- .../operator/list/OperatorAppend.kt | 2 +- .../arithmetic/operator/list/OperatorIndex.kt | 6 +-- .../operator/list/OperatorIndexOf.kt | 2 +- .../operator/list/OperatorRemove.kt | 2 +- .../operator/list/OperatorReplace.kt | 2 +- .../arithmetic/operator/list/OperatorSlice.kt | 2 +- .../operator/list/OperatorUnCons.kt | 2 +- .../operator/list/OperatorUnappend.kt | 2 +- .../operator/list/OperatorUnique.kt | 2 +- .../arithmetic/operator/vec/OperatorPack.java | 8 ++-- .../operator/vec/OperatorUnpack.java | 4 +- .../operator/vec/OperatorVec3Delegating.java | 8 ++-- .../common/lib/hex/HexIotaTypes.java | 40 ++++++++----------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 32 files changed, 72 insertions(+), 78 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/BooleanIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/BooleanIota.java index f1a4e90a06..dbba7b8efd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/BooleanIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/BooleanIota.java @@ -12,7 +12,7 @@ public class BooleanIota extends Iota { private boolean value; public BooleanIota(boolean d) { - super(() -> HexIotaTypes.BOOLEAN); + super(() -> HexIotaTypes.BOOLEAN.get()); this.value = d; } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java index 1c688cf4d2..3b9c2fc294 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java @@ -24,7 +24,7 @@ public class ContinuationIota extends Iota { private SpellContinuation value; public ContinuationIota(SpellContinuation cont) { - super(() -> HexIotaTypes.CONTINUATION); + super(() -> HexIotaTypes.CONTINUATION.get()); this.value = cont; } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/DoubleIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/DoubleIota.java index 76a4901890..af56b063cd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/DoubleIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/DoubleIota.java @@ -17,7 +17,7 @@ public class DoubleIota extends Iota { private double value; public DoubleIota(double d) { - super(() -> HexIotaTypes.DOUBLE); + super(() -> HexIotaTypes.DOUBLE.get()); this.value = d; } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/EntityIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/EntityIota.java index 54116d57b4..a116d42ac6 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/EntityIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/EntityIota.java @@ -36,7 +36,7 @@ public EntityIota(@NotNull Entity e) { } public EntityIota(UUID entityId, @Nullable Component entityName, boolean isPlayer) { - super(() -> HexIotaTypes.ENTITY); + super(() -> HexIotaTypes.ENTITY.get()); this.entityId = entityId; this.entityName = entityName; this.isPlayer = isPlayer; diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/GarbageIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/GarbageIota.java index d623b51643..a2da4ea5a4 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/GarbageIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/GarbageIota.java @@ -19,7 +19,7 @@ public class GarbageIota extends Iota { public GarbageIota() { // We have to pass *something* here, but there's nothing that actually needs to go there, // so we just do this i guess - super(() -> HexIotaTypes.GARBAGE); + super(() -> HexIotaTypes.GARBAGE.get()); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java index a3895bd016..fa4ec706cd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java @@ -25,7 +25,7 @@ public class ListIota extends Iota { private final int size; public ListIota(@NotNull TreeList list) { - super(() -> HexIotaTypes.LIST); + super(() -> HexIotaTypes.LIST.get()); this.list = list; int maxChildDepth = 0; int totalSize = 1; diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/NullIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/NullIota.java index 516dad94ca..01bb0ce255 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/NullIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/NullIota.java @@ -16,7 +16,7 @@ public class NullIota extends Iota { Component.translatable("hexcasting.tooltip.null_iota").withStyle(ChatFormatting.GRAY); public NullIota() { - super(() -> HexIotaTypes.NULL); + super(() -> HexIotaTypes.NULL.get()); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java index 4142827c23..4f02c7b5d9 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java @@ -39,7 +39,7 @@ public class PatternIota extends Iota { private HexPattern value; public PatternIota(@NotNull HexPattern pattern) { - super(() -> HexIotaTypes.PATTERN); + super(() -> HexIotaTypes.PATTERN.get()); this.value = pattern; } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Vec3Iota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Vec3Iota.java index 14cbc48be4..ba234ea8c2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Vec3Iota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Vec3Iota.java @@ -16,7 +16,7 @@ public class Vec3Iota extends Iota { private Vec3 value; public Vec3Iota(@NotNull Vec3 datum) { - super(() -> HexIotaTypes.VEC3); + super(() -> HexIotaTypes.VEC3.get()); this.value = datum; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt index edaeef11cc..cdf0b3e6bd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt @@ -22,7 +22,7 @@ object OpPushLocal : Action { throw MishapNotEnoughArgs(1, 0) val newLocal = stack.last() - if (newLocal.type == HexIotaTypes.NULL) + if (newLocal.type == HexIotaTypes.NULL.get()) image.userData.remove(HexAPI.RAVENMIND_USERDATA) else image.userData.put(HexAPI.RAVENMIND_USERDATA, IotaType.TYPED_CODEC.encodeStart(NbtOps.INSTANCE, newLocal).orThrow) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt index 715297a051..6dae33a5e2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt @@ -36,12 +36,12 @@ object BitwiseSetArithmetic : Arithmetic { } private fun make1(op: LongUnaryOperator): OperatorUnary = OperatorUnary(DoubleArithmetic.ACCEPTS) - { i: Iota -> DoubleIota(op.applyAsLong(downcast(i, DOUBLE).double.roundToLong()).toDouble()) } + { i: Iota -> DoubleIota(op.applyAsLong(downcast(i, DOUBLE.get()).double.roundToLong()).toDouble()) } private fun make2(op: LongBinaryOperator): OperatorBinary = OperatorBinary(DoubleArithmetic.ACCEPTS) { i: Iota, j: Iota -> DoubleIota( op.applyAsLong( - downcast(i, DOUBLE).double.roundToLong(), - downcast(j, DOUBLE).double.roundToLong() + downcast(i, DOUBLE.get()).double.roundToLong(), + downcast(j, DOUBLE.get()).double.roundToLong() ).toDouble()) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt index ab1fded6bf..316363e9cf 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt @@ -44,19 +44,19 @@ object BoolArithmetic : Arithmetic { GREATER_EQ -> makeComp { x, y -> DoubleIota.tolerates(x, y) || x >= y } LESS_EQ -> makeComp { x, y -> DoubleIota.tolerates(x, y) || x <= y } NOT -> make1 { a -> !a } - ABS -> OperatorUnary(ALL_BOOLS) { i: Iota -> DoubleIota( if (Operator.downcast(i, BOOLEAN).bool) 1.0 else 0.0 ) } + ABS -> OperatorUnary(ALL_BOOLS) { i: Iota -> DoubleIota( if (Operator.downcast(i, BOOLEAN.get()).bool) 1.0 else 0.0 ) } else -> throw InvalidOperatorException("$pattern is not a valid operator in Arithmetic $this.") } - val ALL_BOOLS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(BOOLEAN)) + val ALL_BOOLS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(BOOLEAN.get())) private fun make1(op: BooleanUnaryOperator): OperatorUnary { - return OperatorUnary(ALL_BOOLS) { i: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN).bool)) } + return OperatorUnary(ALL_BOOLS) { i: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool)) } } private fun make2(op: BooleanBinaryOperator): OperatorBinary { - return OperatorBinary(ALL_BOOLS) { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN).bool, Operator.downcast(j, BOOLEAN).bool)) } + return OperatorBinary(ALL_BOOLS) { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool, Operator.downcast(j, BOOLEAN.get()).bool)) } } private fun makeComp(op: BiFunction): OperatorBinary { return OperatorBinary(DoubleArithmetic.ACCEPTS) - { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, DOUBLE).double, Operator.downcast(j, DOUBLE).double)) } + { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, DOUBLE.get()).double, Operator.downcast(j, DOUBLE.get()).double)) } } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt index 075a17a76f..bbea22dfde 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt @@ -44,7 +44,7 @@ object DoubleArithmetic : Arithmetic { /** * An example of an IotaMultiPredicate, which returns true only if all arguments to the Operator are DoubleIotas. */ - val ACCEPTS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE)) + val ACCEPTS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE.get())) override fun arithName() = "double_math" @@ -75,8 +75,8 @@ object DoubleArithmetic : Arithmetic { } fun make1(op: DoubleUnaryOperator) = OperatorUnary(ACCEPTS) - { i: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE).double)) } + { i: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE.get()).double)) } fun make2(op: DoubleBinaryOperator) = OperatorBinary(ACCEPTS) - { i: Iota, j: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE).double, Operator.downcast(j, HexIotaTypes.DOUBLE).double)) } + { i: Iota, j: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE.get()).double, Operator.downcast(j, HexIotaTypes.DOUBLE.get()).double)) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListArithmetic.kt index 0f0953326f..38ae7dfa2a 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListArithmetic.kt @@ -45,19 +45,19 @@ object ListArithmetic : Arithmetic { APPEND -> OperatorAppend UNAPPEND -> OperatorUnappend ADD -> make2 { list0, list1 -> list0 + list1 } - ABS -> OperatorUnary(all(IotaPredicate.ofType(LIST))) { iota: Iota -> DoubleIota(downcast(iota, LIST).list.size.toDouble()) } - REV -> OperatorUnary(all(IotaPredicate.ofType(LIST))) { iota: Iota -> ListIota(downcast(iota, LIST).list.toList().asReversed()) } + ABS -> OperatorUnary(all(IotaPredicate.ofType(LIST.get()))) { iota: Iota -> DoubleIota(downcast(iota, LIST.get()).list.size.toDouble()) } + REV -> OperatorUnary(all(IotaPredicate.ofType(LIST.get()))) { iota: Iota -> ListIota(downcast(iota, LIST.get()).list.toList().asReversed()) } INDEX_OF -> OperatorIndexOf REMOVE -> OperatorRemove REPLACE -> OperatorReplace - CONS -> OperatorBinary(pair(IotaPredicate.ofType(LIST), IotaPredicate.TRUE)) { list, iota -> ListIota(downcast(list, LIST).list.prepended(iota)) } + CONS -> OperatorBinary(pair(IotaPredicate.ofType(LIST.get()), IotaPredicate.TRUE)) { list, iota -> ListIota(downcast(list, LIST.get()).list.prepended(iota)) } UNCONS -> OperatorUnCons else -> throw InvalidOperatorException("$pattern is not a valid operator in Arithmetic $this.") } } - private fun make2(op: BinaryOperator>): OperatorBinary = OperatorBinary(all(IotaPredicate.ofType(LIST))) + private fun make2(op: BinaryOperator>): OperatorBinary = OperatorBinary(all(IotaPredicate.ofType(LIST.get()))) { i: Iota, j: Iota -> ListIota( - op.apply(downcast(i, LIST).list.toList(), downcast(j, LIST).list.toList()) + op.apply(downcast(i, LIST.get()).list.toList(), downcast(j, LIST.get()).list.toList()) ) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListSetArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListSetArithmetic.kt index b0096eb1d8..f20b1659a4 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListSetArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/ListSetArithmetic.kt @@ -36,8 +36,8 @@ object ListSetArithmetic : Arithmetic { } - private fun make2(op: BinaryOperator>): OperatorBinary = OperatorBinary(all(IotaPredicate.ofType(LIST))) + private fun make2(op: BinaryOperator>): OperatorBinary = OperatorBinary(all(IotaPredicate.ofType(LIST.get()))) { i: Iota, j: Iota -> ListIota( - op.apply(downcast(i, LIST).list.toList(), downcast(j, LIST).list.toList()) + op.apply(downcast(i, LIST.get()).list.toList(), downcast(j, LIST.get()).list.toList()) ) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java index a1d0af1ce4..5543854fe3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java @@ -39,7 +39,7 @@ public enum Vec3Arithmetic implements Arithmetic { MOD ); - public static final IotaMultiPredicate ACCEPTS = IotaMultiPredicate.any(IotaPredicate.ofType(VEC3), IotaPredicate.ofType(DOUBLE)); + public static final IotaMultiPredicate ACCEPTS = IotaMultiPredicate.any(IotaPredicate.ofType(VEC3.get()), IotaPredicate.ofType(DOUBLE.get())); @Override public String arithName() { @@ -79,10 +79,10 @@ public Operator getOperator(HexPattern pattern) { throw new InvalidOperatorException(pattern + " is not a valid operator in Arithmetic " + this + "."); } public static OperatorUnary make1(Function op) { - return new OperatorUnary(ACCEPTS, i -> new Vec3Iota(op.apply(downcast(i, VEC3).getVec3()))); + return new OperatorUnary(ACCEPTS, i -> new Vec3Iota(op.apply(downcast(i, VEC3.get()).getVec3()))); } public static OperatorUnary make1Double(Function op) { - return new OperatorUnary(ACCEPTS, i -> new DoubleIota(op.apply(downcast(i, VEC3).getVec3()))); + return new OperatorUnary(ACCEPTS, i -> new DoubleIota(op.apply(downcast(i, VEC3.get()).getVec3()))); } public static OperatorVec3Delegating make2Fallback(HexPattern pattern) { return new OperatorVec3Delegating(null, pattern); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/OperatorLog.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/OperatorLog.kt index 766b045898..4dc347c110 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/OperatorLog.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/OperatorLog.kt @@ -10,7 +10,7 @@ import at.petrak.hexcasting.api.casting.mishaps.MishapDivideByZero import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.DOUBLE import kotlin.math.log -object OperatorLog : OperatorBasic(2, IotaMultiPredicate.all(IotaPredicate.ofType(DOUBLE))) { +object OperatorLog : OperatorBasic(2, IotaMultiPredicate.all(IotaPredicate.ofType(DOUBLE.get()))) { override fun apply(iotas: Iterable, env : CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val value = it.nextDouble(arity) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorAppend.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorAppend.kt index 7e88dc0cb1..dae4257ffc 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorAppend.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorAppend.kt @@ -9,7 +9,7 @@ import at.petrak.hexcasting.api.casting.iota.Iota import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorAppend : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST), IotaPredicate.TRUE)) { +object OperatorAppend : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST.get()), IotaPredicate.TRUE)) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity).toMutableList() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndex.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndex.kt index 502a680d3a..a3c378b9ce 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndex.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndex.kt @@ -10,11 +10,11 @@ import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.DOUBLE import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST import kotlin.math.roundToInt -object OperatorIndex : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST), IotaPredicate.ofType(DOUBLE))) { +object OperatorIndex : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST.get()), IotaPredicate.ofType(DOUBLE.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator() - val list = downcast(it.next(), LIST).list.toMutableList() - val index = downcast(it.next(), DOUBLE).double + val list = downcast(it.next(), LIST.get()).list.toMutableList() + val index = downcast(it.next(), DOUBLE.get()).double val x = list.getOrElse(index.roundToInt()) { NullIota() } return listOf(x) } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndexOf.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndexOf.kt index 747b4f74a2..3f797ad49d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndexOf.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorIndexOf.kt @@ -9,7 +9,7 @@ import at.petrak.hexcasting.api.casting.iota.Iota import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorIndexOf : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST), IotaPredicate.TRUE)) { +object OperatorIndexOf : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST.get()), IotaPredicate.TRUE)) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity).toList() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorRemove.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorRemove.kt index 685911c175..df7902db6f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorRemove.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorRemove.kt @@ -11,7 +11,7 @@ import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.DOUBLE import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorRemove : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST), IotaPredicate.ofType(DOUBLE))) { +object OperatorRemove : OperatorBasic(2, IotaMultiPredicate.pair(IotaPredicate.ofType(LIST.get()), IotaPredicate.ofType(DOUBLE.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity).toMutableList() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorReplace.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorReplace.kt index b4eb583252..f794ff06ed 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorReplace.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorReplace.kt @@ -11,7 +11,7 @@ import at.petrak.hexcasting.common.casting.arithmetic.operator.nextPositiveIntUn import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.DOUBLE import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorReplace : OperatorBasic(3, IotaMultiPredicate.triple(IotaPredicate.ofType(LIST), IotaPredicate.ofType(DOUBLE), IotaPredicate.TRUE)) { +object OperatorReplace : OperatorBasic(3, IotaMultiPredicate.triple(IotaPredicate.ofType(LIST.get()), IotaPredicate.ofType(DOUBLE.get()), IotaPredicate.TRUE)) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorSlice.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorSlice.kt index b62b4435fe..6e687906fb 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorSlice.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorSlice.kt @@ -13,7 +13,7 @@ import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST import kotlin.math.max import kotlin.math.min -object OperatorSlice : OperatorBasic(3, IotaMultiPredicate.triple(IotaPredicate.ofType(LIST), IotaPredicate.ofType(DOUBLE), IotaPredicate.ofType(DOUBLE))) { +object OperatorSlice : OperatorBasic(3, IotaMultiPredicate.triple(IotaPredicate.ofType(LIST.get()), IotaPredicate.ofType(DOUBLE.get()), IotaPredicate.ofType(DOUBLE.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity).toList() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnCons.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnCons.kt index 0ba55ecb9b..d0756cb406 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnCons.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnCons.kt @@ -10,7 +10,7 @@ import at.petrak.hexcasting.api.casting.iota.NullIota import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorUnCons : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST))) { +object OperatorUnCons : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnappend.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnappend.kt index 6203dd1748..ba4b8f407e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnappend.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnappend.kt @@ -10,7 +10,7 @@ import at.petrak.hexcasting.api.casting.iota.NullIota import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorUnappend : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST))) { +object OperatorUnappend : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(arity).toMutableList() diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnique.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnique.kt index ea6fb237af..e9ccb864ed 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnique.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/list/OperatorUnique.kt @@ -10,7 +10,7 @@ import at.petrak.hexcasting.common.casting.actions.math.bit.OpToSet import at.petrak.hexcasting.common.casting.arithmetic.operator.nextList import at.petrak.hexcasting.common.lib.hex.HexIotaTypes.LIST -object OperatorUnique : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST))) { +object OperatorUnique : OperatorBasic(1, IotaMultiPredicate.all(IotaPredicate.ofType(LIST.get()))) { override fun apply(iotas: Iterable, env: CastingEnvironment): Iterable { val it = iotas.iterator().withIndex() val list = it.nextList(OpToSet.argc) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorPack.java b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorPack.java index 60dfccd3fe..e5ac82c956 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorPack.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorPack.java @@ -15,7 +15,7 @@ public class OperatorPack extends OperatorBasic { private OperatorPack() { - super(3, IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE))); + super(3, IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE.get()))); } public static OperatorPack INSTANCE = new OperatorPack(); @@ -24,9 +24,9 @@ private OperatorPack() { public @NotNull Iterable apply(Iterable iotas, @NotNull CastingEnvironment env) { var it = iotas.iterator(); return List.of(new Vec3Iota(new Vec3( - downcast(it.next(), HexIotaTypes.DOUBLE).getDouble(), - downcast(it.next(), HexIotaTypes.DOUBLE).getDouble(), - downcast(it.next(), HexIotaTypes.DOUBLE).getDouble() + downcast(it.next(), HexIotaTypes.DOUBLE.get()).getDouble(), + downcast(it.next(), HexIotaTypes.DOUBLE.get()).getDouble(), + downcast(it.next(), HexIotaTypes.DOUBLE.get()).getDouble() ))); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorUnpack.java b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorUnpack.java index 168b1634bd..4a3bf4dc72 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorUnpack.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorUnpack.java @@ -16,7 +16,7 @@ public class OperatorUnpack extends OperatorBasic { private OperatorUnpack() { - super(1, IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.VEC3))); + super(1, IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.VEC3.get()))); } public static OperatorUnpack INSTANCE = new OperatorUnpack(); @@ -24,7 +24,7 @@ private OperatorUnpack() { @Override public @NotNull Iterable apply(Iterable iotas, @NotNull CastingEnvironment env) { var it = iotas.iterator(); - var vec = downcast(it.next(), VEC3).getVec3(); + var vec = downcast(it.next(), VEC3.get()).getVec3(); return List.of(new DoubleIota(vec.x), new DoubleIota(vec.y), new DoubleIota(vec.z)); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorVec3Delegating.java b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorVec3Delegating.java index cffce81922..e2e0947fe4 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorVec3Delegating.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/operator/vec/OperatorVec3Delegating.java @@ -27,7 +27,7 @@ public class OperatorVec3Delegating extends OperatorBasic { private final BiFunction op; private final OperatorBasic fb; public OperatorVec3Delegating(BiFunction core, HexPattern fallback) { - super(2, IotaMultiPredicate.any(IotaPredicate.ofType(VEC3), IotaPredicate.ofType(DOUBLE))); + super(2, IotaMultiPredicate.any(IotaPredicate.ofType(VEC3.get()), IotaPredicate.ofType(DOUBLE.get()))); op = core; fb = (OperatorBasic) Objects.requireNonNull(DoubleArithmetic.INSTANCE.getOperator(fallback)); } @@ -41,13 +41,13 @@ public OperatorVec3Delegating(BiFunction core, HexPattern fall if (op != null && left instanceof Vec3Iota lh && right instanceof Vec3Iota rh) { return List.of(op.apply(lh.getVec3(), rh.getVec3())); } - var lh = left instanceof Vec3Iota l ? l.getVec3() : triplicate(downcast(left, DOUBLE).getDouble()); - var rh = right instanceof Vec3Iota r ? r.getVec3() : triplicate(downcast(right, DOUBLE).getDouble()); + var lh = left instanceof Vec3Iota l ? l.getVec3() : triplicate(downcast(left, DOUBLE.get()).getDouble()); + var rh = right instanceof Vec3Iota r ? r.getVec3() : triplicate(downcast(right, DOUBLE.get()).getDouble()); return new TripleIterable<>( fb.apply(new IterPair<>(new DoubleIota(lh.x()), new DoubleIota(rh.x())), env), fb.apply(new IterPair<>(new DoubleIota(lh.y()), new DoubleIota(rh.y())), env), fb.apply(new IterPair<>(new DoubleIota(lh.z()), new DoubleIota(rh.z())), env), - (x, y, z) -> new Vec3Iota(new Vec3(downcast(x, DOUBLE).getDouble(), downcast(y, DOUBLE).getDouble(), downcast(z, DOUBLE).getDouble())) + (x, y, z) -> new Vec3Iota(new Vec3(downcast(x, DOUBLE.get()).getDouble(), downcast(y, DOUBLE.get()).getDouble(), downcast(z, DOUBLE.get()).getDouble())) ); } catch (MishapDivideByZero e) { throw MishapDivideByZero.of(left, right, e.getSuffix()); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java index 588a541cf5..d2a687fd89 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java @@ -1,7 +1,9 @@ package at.petrak.hexcasting.common.lib.hex; import at.petrak.hexcasting.api.casting.iota.*; +import at.petrak.hexcasting.common.lib.HexRegistries; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -9,6 +11,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; @@ -17,34 +20,25 @@ */ @ParametersAreNonnullByDefault public class HexIotaTypes { + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.IOTA_TYPE); + public static final Registry> REGISTRY = IXplatAbstractions.INSTANCE.getIotaTypeRegistry(); public static final int MAX_SERIALIZATION_DEPTH = 256; public static final int MAX_SERIALIZATION_TOTAL = 1024; - private static final Map> TYPES = new LinkedHashMap<>(); - - public static final IotaType NULL = type("null", NullIota.TYPE); - public static final IotaType DOUBLE = type("double", DoubleIota.TYPE); - public static final IotaType BOOLEAN = type("boolean", BooleanIota.TYPE); - public static final IotaType ENTITY = type("entity", EntityIota.TYPE); - public static final IotaType LIST = type("list", ListIota.TYPE); - public static final IotaType PATTERN = type("pattern", PatternIota.TYPE); - public static final IotaType GARBAGE = type("garbage", GarbageIota.TYPE); - public static final IotaType VEC3 = type("vec3", Vec3Iota.TYPE); - public static final IotaType CONTINUATION = type("continuation", ContinuationIota.TYPE); - - public static void registerTypes(BiConsumer, ResourceLocation> r) { - for (var e : TYPES.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + public static void register() { + REGISTER.registerAll(); } + private static final Map> TYPES = new LinkedHashMap<>(); - private static > T type(String name, T type) { - var old = TYPES.put(modLoc(name), type); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return type; - } + public static final Supplier> NULL = REGISTER.register("null", () -> NullIota.TYPE); + public static final Supplier> DOUBLE = REGISTER.register("double", () -> DoubleIota.TYPE); + public static final Supplier> BOOLEAN = REGISTER.register("boolean", () -> BooleanIota.TYPE); + public static final Supplier> ENTITY = REGISTER.register("entity", () -> EntityIota.TYPE); + public static final Supplier> LIST = REGISTER.register("list", () -> ListIota.TYPE); + public static final Supplier> PATTERN = REGISTER.register("pattern", () -> PatternIota.TYPE); + public static final Supplier> GARBAGE = REGISTER.register("garbage", () -> GarbageIota.TYPE); + public static final Supplier> VEC3 = REGISTER.register("vec3", () -> Vec3Iota.TYPE); + public static final Supplier> CONTINUATION = REGISTER.register("continuation", () -> ContinuationIota.TYPE); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 03a409af10..9db4c64a2f 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -218,7 +218,7 @@ object FabricHexInitializer : ModInitializer { HexLootFunctions.registerSerializers(bind(BuiltInRegistries.LOOT_FUNCTION_TYPE)) - HexIotaTypes.registerTypes(bind(IXplatAbstractions.INSTANCE.iotaTypeRegistry)) + HexIotaTypes.register() HexActions.register(bind(IXplatAbstractions.INSTANCE.actionRegistry)) HexSpecialHandlers.register(bind(IXplatAbstractions.INSTANCE.specialHandlerRegistry)) HexArithmetics.register(bind(IXplatAbstractions.INSTANCE.arithmeticRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 31edc3d64e..061941dccc 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -134,7 +134,7 @@ private static void initRegistry() { HexAdvancementTriggers.register(); - bind(HexRegistries.IOTA_TYPE, HexIotaTypes::registerTypes); + HexIotaTypes.register(); bind(HexRegistries.ACTION, HexActions::register); bind(HexRegistries.SPECIAL_HANDLER, HexSpecialHandlers::register); bind(HexRegistries.ARITHMETIC, HexArithmetics::register); From 2442ba1419520a26aa09685afd08ddba789cc9ac Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:15:24 +0200 Subject: [PATCH 14/25] chore: migrate HexActions to IXplatRegister --- .../hexcasting/client/gui/GuiSpellcasting.kt | 2 +- .../common/casting/actions/escaping/OpUndo.kt | 4 +- .../hexcasting/common/lib/hex/HexActions.java | 384 +++++++++--------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 5 files changed, 191 insertions(+), 203 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt b/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt index c9442708a9..ec0491d922 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt +++ b/Common/src/main/java/at/petrak/hexcasting/client/gui/GuiSpellcasting.kt @@ -74,7 +74,7 @@ class GuiSpellcasting constructor( // find the last escaped pattern (or the opening paren if there's nothing else) and set it to UNDONE this.patterns.reversed().drop(1).firstOrNull { it.type == ResolvedPatternType.ESCAPED || - (it.type == ResolvedPatternType.EVALUATED && it.pattern.angles == HexActions.OPEN_PAREN.prototype.angles) + (it.type == ResolvedPatternType.EVALUATED && it.pattern.angles == HexActions.OPEN_PAREN.value().prototype.angles) }?.let { it.type = ResolvedPatternType.UNDONE } // use the normal EVALUATED coloring for the Evanition that was just drawn this.patterns.getOrNull(index)?.let { it.type = ResolvedPatternType.EVALUATED } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt index 9c31eac8f8..3a2eda0560 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt @@ -31,8 +31,8 @@ object OpUndo : Action { } else if (last.iota is PatternIota && !last.escaped) { // adjust paren count if undoing a non-escaped open or close paren when (last.iota.pattern.angles) { - HexActions.OPEN_PAREN.prototype.angles -> newParenCount-- - HexActions.CLOSE_PAREN.prototype.angles -> newParenCount++ + HexActions.OPEN_PAREN.value().prototype.angles -> newParenCount-- + HexActions.CLOSE_PAREN.value().prototype.angles -> newParenCount++ } } val image2 = image.copy( diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java index 010ca58577..b55d4b03fd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexActions.java @@ -46,10 +46,13 @@ import at.petrak.hexcasting.common.casting.actions.spells.sentinel.OpGetSentinelWayfind; import at.petrak.hexcasting.common.casting.actions.stack.*; import at.petrak.hexcasting.common.lib.HexItems; +import at.petrak.hexcasting.common.lib.HexRegistries; import at.petrak.hexcasting.interop.pehkui.OpGetScale; import at.petrak.hexcasting.interop.pehkui.OpSetScale; import at.petrak.hexcasting.interop.pehkui.PehkuiInterop; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffects; @@ -67,470 +70,474 @@ @SuppressWarnings("unused") public class HexActions { + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.ACTION); + public static final Registry REGISTRY = IXplatAbstractions.INSTANCE.getActionRegistry(); - private static final Map ACTIONS = new LinkedHashMap<>(); + public static void register() { + REGISTER.registerAll(); + } // In general: // - CCW is the normal or construction version // - CW is the special or destruction version - public static final ActionRegistryEntry GET_CASTER = make("get_caster", + public static final Holder GET_CASTER = REGISTER.registerHolder("get_caster", () -> new ActionRegistryEntry(HexPattern.fromAngles("qaq", HexDir.NORTH_EAST), OpGetCaster.INSTANCE)); - public static final ActionRegistryEntry ENTITY_POS$EYE = make("entity_pos/eye", + public static final Holder ENTITY_POS$EYE = REGISTER.registerHolder("entity_pos/eye", () -> new ActionRegistryEntry(HexPattern.fromAngles("aa", HexDir.EAST), new OpEntityPos(false))); - public static final ActionRegistryEntry ENTITY_POS$FOOT = make("entity_pos/foot", + public static final Holder ENTITY_POS$FOOT = REGISTER.registerHolder("entity_pos/foot", () -> new ActionRegistryEntry(HexPattern.fromAngles("dd", HexDir.NORTH_EAST), new OpEntityPos(true))); - public static final ActionRegistryEntry ENTITY_LOOK = make("get_entity_look", + public static final Holder ENTITY_LOOK = REGISTER.registerHolder("get_entity_look", () -> new ActionRegistryEntry(HexPattern.fromAngles("wa", HexDir.EAST), OpEntityLook.INSTANCE)); - public static final ActionRegistryEntry ENTITY_HEIGHT = make("get_entity_height", + public static final Holder ENTITY_HEIGHT = REGISTER.registerHolder("get_entity_height", () -> new ActionRegistryEntry(HexPattern.fromAngles("awq", HexDir.NORTH_EAST), OpEntityHeight.INSTANCE)); - public static final ActionRegistryEntry ENTITY_VELOCITY = make("get_entity_velocity", + public static final Holder ENTITY_VELOCITY = REGISTER.registerHolder("get_entity_velocity", () -> new ActionRegistryEntry(HexPattern.fromAngles("wq", HexDir.EAST), OpEntityVelocity.INSTANCE)); // == Getters == - public static final ActionRegistryEntry RAYCAST = make("raycast", + public static final Holder RAYCAST = REGISTER.registerHolder("raycast", () -> new ActionRegistryEntry(HexPattern.fromAngles("wqaawdd", HexDir.EAST), OpBlockRaycast.INSTANCE)); - public static final ActionRegistryEntry RAYCAST_AXIS = make("raycast/axis", + public static final Holder RAYCAST_AXIS = REGISTER.registerHolder("raycast/axis", () -> new ActionRegistryEntry(HexPattern.fromAngles("weddwaa", HexDir.EAST), OpBlockAxisRaycast.INSTANCE)); - public static final ActionRegistryEntry RAYCAST_ENTITY = make("raycast/entity", + public static final Holder RAYCAST_ENTITY = REGISTER.registerHolder("raycast/entity", () -> new ActionRegistryEntry(HexPattern.fromAngles("weaqa", HexDir.EAST), OpEntityRaycast.INSTANCE)); // == spell circle getters == - public static final ActionRegistryEntry CIRCLE$IMPETUS_POST = make("circle/impetus_pos", + public static final Holder CIRCLE$IMPETUS_POST = REGISTER.registerHolder("circle/impetus_pos", () -> new ActionRegistryEntry(HexPattern.fromAngles("eaqwqae", HexDir.SOUTH_WEST), OpImpetusPos.INSTANCE)); - public static final ActionRegistryEntry CIRCLE$IMPETUS_DIR = make("circle/impetus_dir", + public static final Holder CIRCLE$IMPETUS_DIR = REGISTER.registerHolder("circle/impetus_dir", () -> new ActionRegistryEntry(HexPattern.fromAngles("eaqwqaewede", HexDir.SOUTH_WEST), OpImpetusDir.INSTANCE)); - public static final ActionRegistryEntry CIRCLE$BOUNDS$MIN = make("circle/bounds/min", + public static final Holder CIRCLE$BOUNDS$MIN = REGISTER.registerHolder("circle/bounds/min", () -> new ActionRegistryEntry(HexPattern.fromAngles("eaqwqaewdd", HexDir.SOUTH_WEST), new OpCircleBounds(false))); - public static final ActionRegistryEntry CIRCLE$BOUNDS$MAX = make("circle/bounds/max", + public static final Holder CIRCLE$BOUNDS$MAX = REGISTER.registerHolder("circle/bounds/max", () -> new ActionRegistryEntry(HexPattern.fromAngles("aqwqawaaqa", HexDir.WEST), new OpCircleBounds(true))); // == Modify Stack == - public static final ActionRegistryEntry SWAP = make("swap", + public static final Holder SWAP = REGISTER.registerHolder("swap", () -> new ActionRegistryEntry(HexPattern.fromAngles("aawdd", HexDir.EAST), new OpTwiddling(2, new int[]{1, 0}))); - public static final ActionRegistryEntry ROTATE = make("rotate", + public static final Holder ROTATE = REGISTER.registerHolder("rotate", () -> new ActionRegistryEntry(HexPattern.fromAngles("aaeaa", HexDir.EAST), new OpTwiddling(3, new int[]{1, 2, 0}))); - public static final ActionRegistryEntry ROTATE_REVERSE = make("rotate_reverse", + public static final Holder ROTATE_REVERSE = REGISTER.registerHolder("rotate_reverse", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddqdd", HexDir.NORTH_EAST), new OpTwiddling(3, new int[]{2, 0, 1}))); - public static final ActionRegistryEntry DUPLICATE = make("duplicate", + public static final Holder DUPLICATE = REGISTER.registerHolder("duplicate", () -> new ActionRegistryEntry(HexPattern.fromAngles("aadaa", HexDir.EAST), new OpTwiddling(1, new int[]{0, 0}))); - public static final ActionRegistryEntry OVER = make("over", + public static final Holder OVER = REGISTER.registerHolder("over", () -> new ActionRegistryEntry(HexPattern.fromAngles("aaedd", HexDir.EAST), new OpTwiddling(2, new int[]{0, 1, 0}))); - public static final ActionRegistryEntry TUCK = make("tuck", + public static final Holder TUCK = REGISTER.registerHolder("tuck", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddqaa", HexDir.EAST), new OpTwiddling(2, new int[]{1, 0, 1}))); - public static final ActionRegistryEntry TWO_DUP = make("2dup", + public static final Holder TWO_DUP = REGISTER.registerHolder("2dup", () -> new ActionRegistryEntry(HexPattern.fromAngles("aadadaaw", HexDir.EAST), new OpTwiddling(2, new int[]{0, 1, 0, 1}))); - public static final ActionRegistryEntry STACK_LEN = make("stack_len", + public static final Holder STACK_LEN = REGISTER.registerHolder("stack_len", () -> new ActionRegistryEntry(HexPattern.fromAngles("qwaeawqaeaqa", HexDir.NORTH_WEST), OpStackSize.INSTANCE)); - public static final ActionRegistryEntry DUPLICATE_N = make("duplicate_n", + public static final Holder DUPLICATE_N = REGISTER.registerHolder("duplicate_n", () -> new ActionRegistryEntry(HexPattern.fromAngles("aadaadaa", HexDir.EAST), OpDuplicateN.INSTANCE)); - public static final ActionRegistryEntry FISHERMAN = make("fisherman", + public static final Holder FISHERMAN = REGISTER.registerHolder("fisherman", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddad", HexDir.WEST), OpFisherman.INSTANCE)); - public static final ActionRegistryEntry FISHERMAN$COPY = make("fisherman/copy", + public static final Holder FISHERMAN$COPY = REGISTER.registerHolder("fisherman/copy", () -> new ActionRegistryEntry(HexPattern.fromAngles("aada", HexDir.EAST), OpFishermanButItCopies.INSTANCE)); - public static final ActionRegistryEntry SWIZZLE = make("swizzle", + public static final Holder SWIZZLE = REGISTER.registerHolder("swizzle", () -> new ActionRegistryEntry(HexPattern.fromAngles("qaawdde", HexDir.SOUTH_EAST), OpAlwinfyHasAscendedToABeingOfPureMath.INSTANCE)); // == Math == - public static final ActionRegistryEntry ADD = make("add", + public static final Holder ADD = make("add", new OperationAction(HexPattern.fromAngles("waaw", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry SUB = make("sub", + public static final Holder SUB = make("sub", new OperationAction(HexPattern.fromAngles("wddw", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry MUL_DOT = make("mul", + public static final Holder MUL_DOT = make("mul", new OperationAction(HexPattern.fromAngles("waqaw", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry DIV_CROSS = make("div", + public static final Holder DIV_CROSS = make("div", new OperationAction(HexPattern.fromAngles("wdedw", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry ABS = make("abs", + public static final Holder ABS = make("abs", new OperationAction(HexPattern.fromAngles("wqaqw", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry POW_PROJ = make("pow", + public static final Holder POW_PROJ = make("pow", new OperationAction(HexPattern.fromAngles("wedew", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry FLOOR = make("floor", + public static final Holder FLOOR = make("floor", new OperationAction(HexPattern.fromAngles("ewq", HexDir.EAST))); - public static final ActionRegistryEntry CEIL = make("ceil", + public static final Holder CEIL = make("ceil", new OperationAction(HexPattern.fromAngles("qwe", HexDir.EAST))); - public static final ActionRegistryEntry CONSTRUCT_VEC = make("construct_vec", + public static final Holder CONSTRUCT_VEC = make("construct_vec", new OperationAction(HexPattern.fromAngles("eqqqqq", HexDir.EAST))); - public static final ActionRegistryEntry DECONSTRUCT_VEC = make("deconstruct_vec", + public static final Holder DECONSTRUCT_VEC = make("deconstruct_vec", new OperationAction(HexPattern.fromAngles("qeeeee", HexDir.EAST))); - public static final ActionRegistryEntry COERCE_AXIAL = make("coerce_axial", + public static final Holder COERCE_AXIAL = REGISTER.registerHolder("coerce_axial", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqaww", HexDir.NORTH_WEST), OpCoerceToAxial.INSTANCE)); // == Logic == - public static final ActionRegistryEntry AND = make("and", + public static final Holder AND = make("and", new OperationAction(HexPattern.fromAngles("wdw", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry OR = make("or", + public static final Holder OR = make("or", new OperationAction(HexPattern.fromAngles("waw", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry NOT = make("not", + public static final Holder NOT = make("not", new OperationAction(HexPattern.fromAngles("dw", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry XOR = make("xor", + public static final Holder XOR = make("xor", new OperationAction(HexPattern.fromAngles("dwa", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry GREATER = make("greater", new OperationAction( + public static final Holder GREATER = make("greater", new OperationAction( HexPattern.fromAngles("e", HexDir.SOUTH_EAST)) ); - public static final ActionRegistryEntry LESS = make("less", new OperationAction( + public static final Holder LESS = make("less", new OperationAction( HexPattern.fromAngles("q", HexDir.SOUTH_WEST)) ); - public static final ActionRegistryEntry GREATER_EQ = make("greater_eq", new OperationAction( + public static final Holder GREATER_EQ = make("greater_eq", new OperationAction( HexPattern.fromAngles("ee", HexDir.SOUTH_EAST)) ); - public static final ActionRegistryEntry LESS_EQ = make("less_eq", new OperationAction( + public static final Holder LESS_EQ = make("less_eq", new OperationAction( HexPattern.fromAngles("qq", HexDir.SOUTH_WEST)) ); - public static final ActionRegistryEntry EQUALS = make("equals", + public static final Holder EQUALS = REGISTER.registerHolder("equals", () -> new ActionRegistryEntry(HexPattern.fromAngles("ad", HexDir.EAST), new OpEquality(false))); - public static final ActionRegistryEntry NOT_EQUALS = make("not_equals", + public static final Holder NOT_EQUALS = REGISTER.registerHolder("not_equals", () -> new ActionRegistryEntry(HexPattern.fromAngles("da", HexDir.EAST), new OpEquality(true))); - public static final ActionRegistryEntry TYPE_EQUALS = make("type_equals", + public static final Holder TYPE_EQUALS = REGISTER.registerHolder("type_equals", () -> new ActionRegistryEntry(HexPattern.fromAngles("wawdw", HexDir.EAST), new OpTypeEquality(false))); - public static final ActionRegistryEntry TYPE_NOT_EQUALS = make("type_not_equals", + public static final Holder TYPE_NOT_EQUALS = REGISTER.registerHolder("type_not_equals", () -> new ActionRegistryEntry(HexPattern.fromAngles("wdwaw", HexDir.EAST), new OpTypeEquality(true))); - public static final ActionRegistryEntry BOOL_COERCE = make("bool_coerce", + public static final Holder BOOL_COERCE = REGISTER.registerHolder("bool_coerce", () -> new ActionRegistryEntry(HexPattern.fromAngles("aw", HexDir.NORTH_EAST), OpCoerceToBool.INSTANCE)); - public static final ActionRegistryEntry IF = make("if", + public static final Holder IF = REGISTER.registerHolder("if", () -> new ActionRegistryEntry(HexPattern.fromAngles("awdd", HexDir.SOUTH_EAST), OpBoolIf.INSTANCE)); - public static final ActionRegistryEntry RANDOM = make("random", + public static final Holder RANDOM = REGISTER.registerHolder("random", () -> new ActionRegistryEntry(HexPattern.fromAngles("eqqq", HexDir.NORTH_WEST), OpRandom.INSTANCE)); // == Advanced Math == - public static final ActionRegistryEntry SIN = make("sin", + public static final Holder SIN = make("sin", new OperationAction(HexPattern.fromAngles("qqqqqaa", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry COS = make("cos", + public static final Holder COS = make("cos", new OperationAction(HexPattern.fromAngles("qqqqqad", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry TAN = make("tan", + public static final Holder TAN = make("tan", new OperationAction(HexPattern.fromAngles("wqqqqqadq", HexDir.SOUTH_WEST))); - public static final ActionRegistryEntry ARCSIN = make("arcsin", + public static final Holder ARCSIN = make("arcsin", new OperationAction(HexPattern.fromAngles("ddeeeee", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry ARCCOS = make("arccos", + public static final Holder ARCCOS = make("arccos", new OperationAction(HexPattern.fromAngles("adeeeee", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry ARCTAN = make("arctan", + public static final Holder ARCTAN = make("arctan", new OperationAction(HexPattern.fromAngles("eadeeeeew", HexDir.NORTH_EAST))); - public static final ActionRegistryEntry ARCTAN2 = make("arctan2", + public static final Holder ARCTAN2 = make("arctan2", new OperationAction(HexPattern.fromAngles("deadeeeeewd", HexDir.WEST))); - public static final ActionRegistryEntry LOGARITHM = make("logarithm", + public static final Holder LOGARITHM = make("logarithm", new OperationAction(HexPattern.fromAngles("eqaqe", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry MODULO = make("modulo", + public static final Holder MODULO = make("modulo", new OperationAction(HexPattern.fromAngles("addwaad", HexDir.NORTH_EAST))); // == Sets == - public static final ActionRegistryEntry UNIQUE = make("unique", + public static final Holder UNIQUE = make("unique", new OperationAction(HexPattern.fromAngles("aweaqa", HexDir.NORTH_EAST))); // == Spells == - public static final ActionRegistryEntry PRINT = make("print", + public static final Holder PRINT = REGISTER.registerHolder("print", () -> new ActionRegistryEntry(HexPattern.fromAngles("de", HexDir.NORTH_EAST), OpPrint.INSTANCE)); - public static final ActionRegistryEntry EXPLODE = make("explode", + public static final Holder EXPLODE = REGISTER.registerHolder("explode", () -> new ActionRegistryEntry(HexPattern.fromAngles("aawaawaa", HexDir.EAST), new OpExplode(false))); - public static final ActionRegistryEntry EXPLODE$FIRE = make("explode/fire", + public static final Holder EXPLODE$FIRE = REGISTER.registerHolder("explode/fire", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddwddwdd", HexDir.EAST), new OpExplode(true))); - public static final ActionRegistryEntry ADD_MOTION = make("add_motion", + public static final Holder ADD_MOTION = REGISTER.registerHolder("add_motion", () -> new ActionRegistryEntry(HexPattern.fromAngles("awqqqwaqw", HexDir.SOUTH_WEST), OpAddMotion.INSTANCE)); - public static final ActionRegistryEntry BLINK = make("blink", + public static final Holder BLINK = REGISTER.registerHolder("blink", () -> new ActionRegistryEntry(HexPattern.fromAngles("awqqqwaq", HexDir.SOUTH_WEST), OpBlink.INSTANCE)); - public static final ActionRegistryEntry BREAK_BLOCK = make("break_block", + public static final Holder BREAK_BLOCK = REGISTER.registerHolder("break_block", () -> new ActionRegistryEntry(HexPattern.fromAngles("qaqqqqq", HexDir.EAST), OpBreakBlock.INSTANCE)); - public static final ActionRegistryEntry PLACE_BLOCK = make("place_block", + public static final Holder PLACE_BLOCK = REGISTER.registerHolder("place_block", () -> new ActionRegistryEntry(HexPattern.fromAngles("eeeeede", HexDir.SOUTH_WEST), OpPlaceBlock.INSTANCE)); - public static final ActionRegistryEntry COLORIZE = make("colorize", + public static final Holder COLORIZE = REGISTER.registerHolder("colorize", () -> new ActionRegistryEntry(HexPattern.fromAngles("awddwqawqwawq", HexDir.EAST), OpColorize.INSTANCE)); - public static final ActionRegistryEntry CYCLE_VARIANT = make("cycle_variant", + public static final Holder CYCLE_VARIANT = REGISTER.registerHolder("cycle_variant", () -> new ActionRegistryEntry(HexPattern.fromAngles("dwaawedwewdwe", HexDir.WEST), OpCycleVariant.INSTANCE)); - public static final ActionRegistryEntry CREATE_WATER = make("create_water", + public static final Holder CREATE_WATER = REGISTER.registerHolder("create_water", () -> new ActionRegistryEntry(HexPattern.fromAngles("aqawqadaq", HexDir.SOUTH_EAST), new OpCreateFluid( MediaConstants.DUST_UNIT, Items.WATER_BUCKET, Blocks.WATER_CAULDRON.defaultBlockState() .setValue(LayeredCauldronBlock.LEVEL, LayeredCauldronBlock.MAX_FILL_LEVEL), Fluids.WATER))); - public static final ActionRegistryEntry DESTROY_WATER = make("destroy_water", + public static final Holder DESTROY_WATER = REGISTER.registerHolder("destroy_water", () -> new ActionRegistryEntry(HexPattern.fromAngles("dedwedade", HexDir.SOUTH_WEST), OpDestroyFluid.INSTANCE)); - public static final ActionRegistryEntry IGNITE = make("ignite", + public static final Holder IGNITE = REGISTER.registerHolder("ignite", () -> new ActionRegistryEntry(HexPattern.fromAngles("aaqawawa", HexDir.SOUTH_EAST), OpIgnite.INSTANCE)); - public static final ActionRegistryEntry EXTINGUISH = make("extinguish", + public static final Holder EXTINGUISH = REGISTER.registerHolder("extinguish", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddedwdwd", HexDir.SOUTH_WEST), OpExtinguish.INSTANCE)); - public static final ActionRegistryEntry CONJURE_BLOCK = make("conjure_block", + public static final Holder CONJURE_BLOCK = REGISTER.registerHolder("conjure_block", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqa", HexDir.NORTH_EAST), new OpConjureBlock(false))); - public static final ActionRegistryEntry CONJURE_LIGHT = make("conjure_light", + public static final Holder CONJURE_LIGHT = REGISTER.registerHolder("conjure_light", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqd", HexDir.NORTH_EAST), new OpConjureBlock(true))); - public static final ActionRegistryEntry BONEMEAL = make("bonemeal", + public static final Holder BONEMEAL = REGISTER.registerHolder("bonemeal", () -> new ActionRegistryEntry(HexPattern.fromAngles("wqaqwawqaqw", HexDir.NORTH_EAST), OpTheOnlyReasonAnyoneDownloadedPsi.INSTANCE)); - public static final ActionRegistryEntry RECHARGE = make("recharge", + public static final Holder RECHARGE = REGISTER.registerHolder("recharge", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqwaeaeaeaeaea", HexDir.NORTH_WEST), OpRecharge.INSTANCE)); - public static final ActionRegistryEntry ERASE = make("erase", + public static final Holder ERASE = REGISTER.registerHolder("erase", () -> new ActionRegistryEntry(HexPattern.fromAngles("qdqawwaww", HexDir.EAST), OpErase.INSTANCE)); - public static final ActionRegistryEntry EDIFY = make("edify", + public static final Holder EDIFY = REGISTER.registerHolder("edify", () -> new ActionRegistryEntry(HexPattern.fromAngles("wqaqwd", HexDir.NORTH_EAST), OpEdifySapling.INSTANCE)); - public static final ActionRegistryEntry BEEP = make("beep", + public static final Holder BEEP = REGISTER.registerHolder("beep", () -> new ActionRegistryEntry(HexPattern.fromAngles("adaa", HexDir.WEST), OpBeep.INSTANCE)); - public static final ActionRegistryEntry CRAFT$CYPHER = make("craft/cypher", new ActionRegistryEntry( + public static final Holder CRAFT$CYPHER = REGISTER.registerHolder("craft/cypher", () -> new ActionRegistryEntry( HexPattern.fromAngles("waqqqqq", HexDir.EAST), new OpMakePackagedSpell(s -> (s.is(HexItems.CYPHER.get())||s.is(HexItems.ANCIENT_CYPHER.get())), HexItems.CYPHER.get()::getDescription, MediaConstants.CRYSTAL_UNIT) )); - public static final ActionRegistryEntry CRAFT$TRINKET = make("craft/trinket", new ActionRegistryEntry( + public static final Holder CRAFT$TRINKET = REGISTER.registerHolder("craft/trinket", () -> new ActionRegistryEntry( HexPattern.fromAngles("wwaqqqqqeaqeaeqqqeaeq", HexDir.EAST), new OpMakePackagedSpell(HexItems.TRINKET.get(), 5 * MediaConstants.CRYSTAL_UNIT) )); - public static final ActionRegistryEntry CRAFT$ARTIFACT = make("craft/artifact", new ActionRegistryEntry( + public static final Holder CRAFT$ARTIFACT = REGISTER.registerHolder("craft/artifact", () -> new ActionRegistryEntry( HexPattern.fromAngles("wwaqqqqqeawqwqwqwqwqwwqqeadaeqqeqqeadaeqq", HexDir.EAST), new OpMakePackagedSpell(HexItems.ARTIFACT.get(), 10 * MediaConstants.CRYSTAL_UNIT) )); - public static final ActionRegistryEntry CRAFT$BATTERY = make("craft/battery", new ActionRegistryEntry( + public static final Holder CRAFT$BATTERY = REGISTER.registerHolder("craft/battery", () -> new ActionRegistryEntry( HexPattern.fromAngles("aqqqaqwwaqqqqqeqaqqqawwqwqwqwqwqw", HexDir.SOUTH_WEST), OpMakeBattery.INSTANCE)); - public static final ActionRegistryEntry POTION$WEAKNESS = make("potion/weakness", new ActionRegistryEntry( + public static final Holder POTION$WEAKNESS = REGISTER.registerHolder("potion/weakness", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqaqwawaw", HexDir.NORTH_WEST), new OpPotionEffect(MobEffects.WEAKNESS, MediaConstants.DUST_UNIT / 10, true, false) )); - public static final ActionRegistryEntry POTION$LEVITATION = make("potion/levitation", new ActionRegistryEntry( + public static final Holder POTION$LEVITATION = REGISTER.registerHolder("potion/levitation", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqawwawawd", HexDir.WEST), new OpPotionEffect(MobEffects.LEVITATION, MediaConstants.DUST_UNIT / 5, false, false) )); - public static final ActionRegistryEntry POTION$WITHER = make("potion/wither", new ActionRegistryEntry( + public static final Holder POTION$WITHER = REGISTER.registerHolder("potion/wither", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqaewawawe", HexDir.SOUTH_WEST), new OpPotionEffect(MobEffects.WITHER, MediaConstants.DUST_UNIT, true, false) )); - public static final ActionRegistryEntry POTION$POISON = make("potion/poison", new ActionRegistryEntry( + public static final Holder POTION$POISON = REGISTER.registerHolder("potion/poison", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqadwawaww", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.POISON, MediaConstants.DUST_UNIT / 3, true, false) )); - public static final ActionRegistryEntry POTION$SLOWNESS = make("potion/slowness", new ActionRegistryEntry( + public static final Holder POTION$SLOWNESS = REGISTER.registerHolder("potion/slowness", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqadwawaw", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.MOVEMENT_SLOWDOWN, MediaConstants.DUST_UNIT / 3, true, false) )); - public static final ActionRegistryEntry POTION$REGENERATION = make("potion/regeneration", new ActionRegistryEntry( + public static final Holder POTION$REGENERATION = REGISTER.registerHolder("potion/regeneration", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqaawawaedd", HexDir.NORTH_WEST), new OpPotionEffect(MobEffects.REGENERATION, MediaConstants.DUST_UNIT, true, true) )); - public static final ActionRegistryEntry POTION$NIGHT_VISION = make("potion/night_vision", new ActionRegistryEntry( + public static final Holder POTION$NIGHT_VISION = REGISTER.registerHolder("potion/night_vision", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqaawawaeqdd", HexDir.WEST), new OpPotionEffect(MobEffects.NIGHT_VISION, MediaConstants.DUST_UNIT / 5, false, true) )); - public static final ActionRegistryEntry POTION$ABSORPTION = make("potion/absorption", new ActionRegistryEntry( + public static final Holder POTION$ABSORPTION = REGISTER.registerHolder("potion/absorption", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqaawawaeqqdd", HexDir.SOUTH_WEST), new OpPotionEffect(MobEffects.ABSORPTION, MediaConstants.DUST_UNIT, true, true) )); - public static final ActionRegistryEntry POTION$HASTE = make("potion/haste", new ActionRegistryEntry( + public static final Holder POTION$HASTE = REGISTER.registerHolder("potion/haste", () -> new ActionRegistryEntry( HexPattern.fromAngles("qaawawaeqqqdd", HexDir.SOUTH_EAST), new OpPotionEffect(MobEffects.DIG_SPEED, MediaConstants.DUST_UNIT / 3, true, true) )); - public static final ActionRegistryEntry POTION$STRENGTH = make("potion/strength", new ActionRegistryEntry( + public static final Holder POTION$STRENGTH = REGISTER.registerHolder("potion/strength", () -> new ActionRegistryEntry( HexPattern.fromAngles("aawawaeqqqqdd", HexDir.EAST), new OpPotionEffect(MobEffects.DAMAGE_BOOST, MediaConstants.DUST_UNIT / 3, true, true) )); - public static final ActionRegistryEntry FLIGHT$RANGE = make("flight/range", + public static final Holder FLIGHT$RANGE = REGISTER.registerHolder("flight/range", () -> new ActionRegistryEntry(HexPattern.fromAngles("awawaawq", HexDir.SOUTH_WEST), new OpFlight(OpFlight.Type.LimitRange))); - public static final ActionRegistryEntry FLIGHT$TIME = make("flight/time", + public static final Holder FLIGHT$TIME = REGISTER.registerHolder("flight/time", () -> new ActionRegistryEntry(HexPattern.fromAngles("dwdwdewq", HexDir.NORTH_EAST), new OpFlight(OpFlight.Type.LimitTime))); - public static final ActionRegistryEntry FLIGHT$CAN_FLY = make("flight/can_fly", + public static final Holder FLIGHT$CAN_FLY = REGISTER.registerHolder("flight/can_fly", () -> new ActionRegistryEntry(HexPattern.fromAngles("dwdwdeweaqa", HexDir.NORTH_EAST), OpCanEntityHexFly.INSTANCE)); - public static final ActionRegistryEntry SENTINEL$CREATE = make("sentinel/create", + public static final Holder SENTINEL$CREATE = REGISTER.registerHolder("sentinel/create", () -> new ActionRegistryEntry(HexPattern.fromAngles("waeawae", HexDir.EAST), new OpCreateSentinel(false))); - public static final ActionRegistryEntry SENTINEL$DESTROY = make("sentinel/destroy", + public static final Holder SENTINEL$DESTROY = REGISTER.registerHolder("sentinel/destroy", () -> new ActionRegistryEntry(HexPattern.fromAngles("qdwdqdw", HexDir.NORTH_EAST), OpDestroySentinel.INSTANCE)); - public static final ActionRegistryEntry SENTINEL$GET_POS = make("sentinel/get_pos", + public static final Holder SENTINEL$GET_POS = REGISTER.registerHolder("sentinel/get_pos", () -> new ActionRegistryEntry(HexPattern.fromAngles("waeawaede", HexDir.EAST), OpGetSentinelPos.INSTANCE)); - public static final ActionRegistryEntry SENTINEL$WAYFIND = make("sentinel/wayfind", + public static final Holder SENTINEL$WAYFIND = REGISTER.registerHolder("sentinel/wayfind", () -> new ActionRegistryEntry(HexPattern.fromAngles("waeawaedwa", HexDir.EAST), OpGetSentinelWayfind.INSTANCE)); - public static final ActionRegistryEntry LIGHTNING = make("lightning", + public static final Holder LIGHTNING = REGISTER.registerHolder("lightning", () -> new ActionRegistryEntry(HexPattern.fromAngles("waadwawdaaweewq", HexDir.EAST), OpLightning.INSTANCE)); - public static final ActionRegistryEntry ALTIORA = make("flight", + public static final Holder ALTIORA = REGISTER.registerHolder("flight", () -> new ActionRegistryEntry(HexPattern.fromAngles("eawwaeawawaa", HexDir.NORTH_WEST), OpAltiora.INSTANCE)); - public static final ActionRegistryEntry CREATE_LAVA = make("create_lava", + public static final Holder CREATE_LAVA = REGISTER.registerHolder("create_lava", () -> new ActionRegistryEntry(HexPattern.fromAngles("eaqawqadaqd", HexDir.EAST), new OpCreateFluid( MediaConstants.CRYSTAL_UNIT, Items.LAVA_BUCKET, Blocks.LAVA_CAULDRON.defaultBlockState(), Fluids.LAVA))); - public static final ActionRegistryEntry TELEPORT = make("teleport/great", + public static final Holder TELEPORT = REGISTER.registerHolder("teleport/great", () -> new ActionRegistryEntry(HexPattern.fromAngles("wwwqqqwwwqqeqqwwwqqwqqdqqqqqdqq", HexDir.EAST), OpTeleport.INSTANCE)); - public static final ActionRegistryEntry SENTINEL$GREAT = make("sentinel/create/great", + public static final Holder SENTINEL$GREAT = REGISTER.registerHolder("sentinel/create/great", () -> new ActionRegistryEntry(HexPattern.fromAngles("waeawaeqqqwqwqqwq", HexDir.EAST), new OpCreateSentinel(true))); - public static final ActionRegistryEntry DISPEL_RAIN = make("dispel_rain", + public static final Holder DISPEL_RAIN = REGISTER.registerHolder("dispel_rain", () -> new ActionRegistryEntry(HexPattern.fromAngles("eeewwweeewwaqqddqdqd", HexDir.EAST), new OpWeather(false))); - public static final ActionRegistryEntry SUMMON_RAIN = make("summon_rain", + public static final Holder SUMMON_RAIN = REGISTER.registerHolder("summon_rain", () -> new ActionRegistryEntry(HexPattern.fromAngles("wwweeewwweewdawdwad", HexDir.WEST), new OpWeather(true))); - public static final ActionRegistryEntry BRAINSWEEP = make("brainsweep", + public static final Holder BRAINSWEEP = REGISTER.registerHolder("brainsweep", () -> new ActionRegistryEntry(HexPattern.fromAngles("qeqwqwqwqwqeqaeqeaqeqaeqaqded", HexDir.NORTH_EAST), OpBrainsweep.INSTANCE)); - public static final ActionRegistryEntry AKASHIC$READ = make("akashic/read", + public static final Holder AKASHIC$READ = REGISTER.registerHolder("akashic/read", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqwqqqqqaq", HexDir.WEST), OpAkashicRead.INSTANCE)); - public static final ActionRegistryEntry AKASHIC$WRITE = make("akashic/write", + public static final Holder AKASHIC$WRITE = REGISTER.registerHolder("akashic/write", () -> new ActionRegistryEntry(HexPattern.fromAngles("eeeweeeeede", HexDir.EAST), OpAkashicWrite.INSTANCE)); // == Meta stuff == - public static final ActionRegistryEntry ESCAPE = make("escape", + public static final Holder ESCAPE = REGISTER.registerHolder("escape", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqaw", HexDir.WEST), OpEscape.INSTANCE)); - public static final ActionRegistryEntry OPEN_PAREN = make("open_paren", + public static final Holder OPEN_PAREN = REGISTER.registerHolder("open_paren", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqq", HexDir.WEST), OpOpenParen.INSTANCE)); - public static final ActionRegistryEntry CLOSE_PAREN = make("close_paren", + public static final Holder CLOSE_PAREN = REGISTER.registerHolder("close_paren", () -> new ActionRegistryEntry(HexPattern.fromAngles("eee", HexDir.EAST), OpCloseParen.INSTANCE)); - public static final ActionRegistryEntry UNDO = make("undo", + public static final Holder UNDO = REGISTER.registerHolder("undo", () -> new ActionRegistryEntry(HexPattern.fromAngles("eeedw", HexDir.EAST), OpUndo.INSTANCE)); - public static final ActionRegistryEntry SIMULATE = make("simulate", + public static final Holder SIMULATE = REGISTER.registerHolder("simulate", () -> new ActionRegistryEntry(HexPattern.fromAngles("deaq", HexDir.EAST), OpSimulate.INSTANCE)); // http://www.toroidalsnark.net/mkss3-pix/CalderheadJMM2014.pdf // eval being a space filling curve feels apt doesn't it - public static final ActionRegistryEntry EVAL = make("eval", + public static final Holder EVAL = REGISTER.registerHolder("eval", () -> new ActionRegistryEntry(HexPattern.fromAngles("deaqq", HexDir.SOUTH_EAST), OpEval.INSTANCE)); - public static final ActionRegistryEntry EVAL$CC = make("eval/cc", + public static final Holder EVAL$CC = REGISTER.registerHolder("eval/cc", () -> new ActionRegistryEntry(HexPattern.fromAngles("qwaqde", HexDir.NORTH_WEST), OpEvalBreakable.INSTANCE)); - public static final ActionRegistryEntry HALT = make("halt", + public static final Holder HALT = REGISTER.registerHolder("halt", () -> new ActionRegistryEntry(HexPattern.fromAngles("aqdee", HexDir.SOUTH_WEST), OpHalt.INSTANCE)); - public static final ActionRegistryEntry READ = make("read", + public static final Holder READ = REGISTER.registerHolder("read", () -> new ActionRegistryEntry(HexPattern.fromAngles("aqqqqq", HexDir.EAST), OpRead.INSTANCE)); - public static final ActionRegistryEntry READ$ENTITY = make("read/entity", + public static final Holder READ$ENTITY = REGISTER.registerHolder("read/entity", () -> new ActionRegistryEntry(HexPattern.fromAngles("wawqwqwqwqwqw", HexDir.EAST), OpTheCoolerRead.INSTANCE)); - public static final ActionRegistryEntry WRITE = make("write", + public static final Holder WRITE = REGISTER.registerHolder("write", () -> new ActionRegistryEntry(HexPattern.fromAngles("deeeee", HexDir.EAST), OpWrite.INSTANCE)); - public static final ActionRegistryEntry WRITE$ENTITY = make("write/entity", + public static final Holder WRITE$ENTITY = REGISTER.registerHolder("write/entity", () -> new ActionRegistryEntry(HexPattern.fromAngles("wdwewewewewew", HexDir.EAST), OpTheCoolerWrite.INSTANCE)); - public static final ActionRegistryEntry READ$LOCAL = make("read/local", + public static final Holder READ$LOCAL = REGISTER.registerHolder("read/local", () -> new ActionRegistryEntry(HexPattern.fromAngles("qeewdweddw", HexDir.NORTH_EAST), OpPeekLocal.INSTANCE)); - public static final ActionRegistryEntry WRITE$LOCAL = make("write/local", + public static final Holder WRITE$LOCAL = REGISTER.registerHolder("write/local", () -> new ActionRegistryEntry(HexPattern.fromAngles("eqqwawqaaw", HexDir.NORTH_WEST), OpPushLocal.INSTANCE)); - public static final ActionRegistryEntry THANATOS = make("thanatos", + public static final Holder THANATOS = REGISTER.registerHolder("thanatos", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqaed", HexDir.SOUTH_EAST), OpThanos.INSTANCE)); // == Consts == - public static final ActionRegistryEntry CONST$NULL = make("const/null", + public static final Holder CONST$NULL = REGISTER.registerHolder("const/null", () -> new ActionRegistryEntry(HexPattern.fromAngles("d", HexDir.EAST), Action.makeConstantOp(new NullIota()))); - public static final ActionRegistryEntry CONST$TRUE = make("const/true", + public static final Holder CONST$TRUE = REGISTER.registerHolder("const/true", () -> new ActionRegistryEntry(HexPattern.fromAngles("aqae", HexDir.SOUTH_EAST), Action.makeConstantOp(new BooleanIota(true)))); - public static final ActionRegistryEntry CONST$FALSE = make("const/false", + public static final Holder CONST$FALSE = REGISTER.registerHolder("const/false", () -> new ActionRegistryEntry(HexPattern.fromAngles("dedq", HexDir.NORTH_EAST), Action.makeConstantOp(new BooleanIota(false)))); - public static final ActionRegistryEntry CONST$VEC$PX = make("const/vec/px", + public static final Holder CONST$VEC$PX = REGISTER.registerHolder("const/vec/px", () -> new ActionRegistryEntry(HexPattern.fromAngles( "qqqqqea", HexDir.NORTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(1.0, 0.0, 0.0))))); - public static final ActionRegistryEntry CONST$VEC$PY = make("const/vec/py", + public static final Holder CONST$VEC$PY = REGISTER.registerHolder("const/vec/py", () -> new ActionRegistryEntry(HexPattern.fromAngles( "qqqqqew", HexDir.NORTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(0.0, 1.0, 0.0))))); - public static final ActionRegistryEntry CONST$VEC$PZ = make("const/vec/pz", + public static final Holder CONST$VEC$PZ = REGISTER.registerHolder("const/vec/pz", () -> new ActionRegistryEntry(HexPattern.fromAngles( "qqqqqed", HexDir.NORTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(0.0, 0.0, 1.0))))); - public static final ActionRegistryEntry CONST$VEC$NX = make("const/vec/nx", + public static final Holder CONST$VEC$NX = REGISTER.registerHolder("const/vec/nx", () -> new ActionRegistryEntry(HexPattern.fromAngles( "eeeeeqa", HexDir.SOUTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(-1.0, 0.0, 0.0))))); - public static final ActionRegistryEntry CONST$VEC$NY = make("const/vec/ny", + public static final Holder CONST$VEC$NY = REGISTER.registerHolder("const/vec/ny", () -> new ActionRegistryEntry(HexPattern.fromAngles( "eeeeeqw", HexDir.SOUTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(0.0, -1.0, 0.0))))); - public static final ActionRegistryEntry CONST$VEC$NZ = make("const/vec/nz", + public static final Holder CONST$VEC$NZ = REGISTER.registerHolder("const/vec/nz", () -> new ActionRegistryEntry(HexPattern.fromAngles( "eeeeeqd", HexDir.SOUTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(0.0, 0.0, -1.0))))); // Yep, this is what I spend the "plain hexagon" pattern on. - public static final ActionRegistryEntry CONST$VEC$0 = make("const/vec/0", + public static final Holder CONST$VEC$0 = REGISTER.registerHolder("const/vec/0", () -> new ActionRegistryEntry(HexPattern.fromAngles( "qqqqq", HexDir.NORTH_WEST), Action.makeConstantOp(new Vec3Iota(new Vec3(0.0, 0.0, 0.0))))); - public static final ActionRegistryEntry CONST$DOUBLE$PI = make("const/double/pi", + public static final Holder CONST$DOUBLE$PI = REGISTER.registerHolder("const/double/pi", () -> new ActionRegistryEntry(HexPattern.fromAngles("qdwdq", HexDir.NORTH_EAST), Action.makeConstantOp(new DoubleIota(Math.PI)))); - public static final ActionRegistryEntry CONST$DOUBLE$TAU = make("const/double/tau", + public static final Holder CONST$DOUBLE$TAU = REGISTER.registerHolder("const/double/tau", () -> new ActionRegistryEntry(HexPattern.fromAngles("eawae", HexDir.NORTH_WEST), Action.makeConstantOp(new DoubleIota(HexUtils.TAU)))); - public static final ActionRegistryEntry CONST$E = make("const/double/e", + public static final Holder CONST$E = REGISTER.registerHolder("const/double/e", () -> new ActionRegistryEntry(HexPattern.fromAngles("aaq", HexDir.EAST), Action.makeConstantOp(new DoubleIota(Math.E)))); - public static final ActionRegistryEntry CONST$PHI = make("const/double/phi", + public static final Holder CONST$PHI = REGISTER.registerHolder("const/double/phi", () -> new ActionRegistryEntry(HexPattern.fromAngles("wdded", HexDir.NORTH_EAST), Action.makeConstantOp(new DoubleIota(1.618033988749895)))); // == Entities == - public static final ActionRegistryEntry GET_ENTITY = make("get_entity", + public static final Holder GET_ENTITY = REGISTER.registerHolder("get_entity", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqa", HexDir.SOUTH_EAST), new OpGetEntityAt(e -> true))); - public static final ActionRegistryEntry GET_ENTITY$ANIMAL = make("get_entity/animal", + public static final Holder GET_ENTITY$ANIMAL = REGISTER.registerHolder("get_entity/animal", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqaawa", HexDir.SOUTH_EAST), new OpGetEntityAt(OpGetEntitiesBy::isAnimal))); - public static final ActionRegistryEntry GET_ENTITY$MONSTER = make("get_entity/monster", + public static final Holder GET_ENTITY$MONSTER = REGISTER.registerHolder("get_entity/monster", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqaawq", HexDir.SOUTH_EAST), new OpGetEntityAt(OpGetEntitiesBy::isMonster))); - public static final ActionRegistryEntry GET_ENTITY$ITEM = make("get_entity/item", + public static final Holder GET_ENTITY$ITEM = REGISTER.registerHolder("get_entity/item", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqaaww", HexDir.SOUTH_EAST), new OpGetEntityAt(OpGetEntitiesBy::isItem))); - public static final ActionRegistryEntry GET_ENTITY$PLAYER = make("get_entity/player", + public static final Holder GET_ENTITY$PLAYER = REGISTER.registerHolder("get_entity/player", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqaawe", HexDir.SOUTH_EAST), new OpGetEntityAt(OpGetEntitiesBy::isPlayer))); - public static final ActionRegistryEntry GET_ENTITY$LIVING = make("get_entity/living", + public static final Holder GET_ENTITY$LIVING = REGISTER.registerHolder("get_entity/living", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqqqqdaqaawd", HexDir.SOUTH_EAST), new OpGetEntityAt(OpGetEntitiesBy::isLiving))); - public static final ActionRegistryEntry ZONE_ENTITY = make("zone_entity", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY = REGISTER.registerHolder("zone_entity", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwded", HexDir.SOUTH_EAST), new OpGetEntitiesBy(e -> true, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$ANIMAL = make("zone_entity/animal", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$ANIMAL = REGISTER.registerHolder("zone_entity/animal", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwdeddwa", HexDir.SOUTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isAnimal, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$NOT_ANIMAL = make("zone_entity/not_animal", + public static final Holder ZONE_ENTITY$NOT_ANIMAL = REGISTER.registerHolder("zone_entity/not_animal", () -> new ActionRegistryEntry( HexPattern.fromAngles("eeeeewaqaawa", HexDir.NORTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isAnimal, true) )); - public static final ActionRegistryEntry ZONE_ENTITY$MONSTER = make("zone_entity/monster", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$MONSTER = REGISTER.registerHolder("zone_entity/monster", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwdeddwq", HexDir.SOUTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isMonster, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$NOT_MONSTER = make("zone_entity/not_monster", + public static final Holder ZONE_ENTITY$NOT_MONSTER = REGISTER.registerHolder("zone_entity/not_monster", () -> new ActionRegistryEntry( HexPattern.fromAngles("eeeeewaqaawq", HexDir.NORTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isMonster, true) )); - public static final ActionRegistryEntry ZONE_ENTITY$ITEM = make("zone_entity/item", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$ITEM = REGISTER.registerHolder("zone_entity/item", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwdeddww", HexDir.SOUTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isItem, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$NOT_ITEM = make("zone_entity/not_item", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$NOT_ITEM = REGISTER.registerHolder("zone_entity/not_item", () -> new ActionRegistryEntry( HexPattern.fromAngles("eeeeewaqaaww", HexDir.NORTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isItem, true) )); - public static final ActionRegistryEntry ZONE_ENTITY$PLAYER = make("zone_entity/player", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$PLAYER = REGISTER.registerHolder("zone_entity/player", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwdeddwe", HexDir.SOUTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isPlayer, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$NOT_PLAYER = make("zone_entity/not_player", + public static final Holder ZONE_ENTITY$NOT_PLAYER = REGISTER.registerHolder("zone_entity/not_player", () -> new ActionRegistryEntry( HexPattern.fromAngles("eeeeewaqaawe", HexDir.NORTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isPlayer, true) )); - public static final ActionRegistryEntry ZONE_ENTITY$LIVING = make("zone_entity/living", new ActionRegistryEntry( + public static final Holder ZONE_ENTITY$LIVING = REGISTER.registerHolder("zone_entity/living", () -> new ActionRegistryEntry( HexPattern.fromAngles("qqqqqwdeddwd", HexDir.SOUTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isLiving, false) )); - public static final ActionRegistryEntry ZONE_ENTITY$NOT_LIVING = make("zone_entity/not_living", + public static final Holder ZONE_ENTITY$NOT_LIVING = REGISTER.registerHolder("zone_entity/not_living", () -> new ActionRegistryEntry( HexPattern.fromAngles("eeeeewaqaawd", HexDir.NORTH_EAST), new OpGetEntitiesBy(OpGetEntitiesBy::isLiving, true) @@ -538,69 +545,50 @@ public class HexActions { // == Lists == - public static final ActionRegistryEntry APPEND = make("append", + public static final Holder APPEND = make("append", new OperationAction(HexPattern.fromAngles("edqde", HexDir.SOUTH_WEST))); - public static final ActionRegistryEntry UNAPPEND = make("unappend", + public static final Holder UNAPPEND = make("unappend", new OperationAction(HexPattern.fromAngles("qaeaq", HexDir.NORTH_WEST))); - // public static final ActionRegistryEntry CONCAT = make("concat", + // public static final Holder CONCAT = REGISTER.registerHolder("concat", () -> // new ActionRegistryEntry(HexPattern.fromAngles("qaeaq", HexDir.NORTH_WEST), OpConcat.INSTANCE)); - public static final ActionRegistryEntry INDEX = make("index", + public static final Holder INDEX = make("index", new OperationAction(HexPattern.fromAngles("deeed", HexDir.NORTH_WEST))); - // public static final ActionRegistryEntry LIST_SIZE = make("list_size", + // public static final Holder LIST_SIZE = REGISTER.registerHolder("list_size", () -> // new ActionRegistryEntry(HexPattern.fromAngles("aqaeaq", HexDir.EAST), OpListSize.INSTANCE)); - public static final ActionRegistryEntry SINGLETON = make("singleton", + public static final Holder SINGLETON = REGISTER.registerHolder("singleton", () -> new ActionRegistryEntry(HexPattern.fromAngles("adeeed", HexDir.EAST), OpSingleton.INSTANCE)); - public static final ActionRegistryEntry EMPTY_LIST = make("empty_list", + public static final Holder EMPTY_LIST = REGISTER.registerHolder("empty_list", () -> new ActionRegistryEntry(HexPattern.fromAngles("qqaeaae", HexDir.NORTH_EAST), OpEmptyList.INSTANCE)); - public static final ActionRegistryEntry REVERSE = make("reverse", + public static final Holder REVERSE = make("reverse", new OperationAction(HexPattern.fromAngles("qqqaede", HexDir.EAST))); - public static final ActionRegistryEntry LAST_N_LIST = make("last_n_list", + public static final Holder LAST_N_LIST = REGISTER.registerHolder("last_n_list", () -> new ActionRegistryEntry(HexPattern.fromAngles("ewdqdwe", HexDir.SOUTH_WEST), OpLastNToList.INSTANCE)); - public static final ActionRegistryEntry SPLAT = make("splat", + public static final Holder SPLAT = REGISTER.registerHolder("splat", () -> new ActionRegistryEntry(HexPattern.fromAngles("qwaeawq", HexDir.NORTH_WEST), OpSplat.INSTANCE)); - public static final ActionRegistryEntry INDEX_OF = make("index_of", + public static final Holder INDEX_OF = make("index_of", new OperationAction(HexPattern.fromAngles("dedqde", HexDir.EAST))); - public static final ActionRegistryEntry REMOVE_FROM = make("remove_from", + public static final Holder REMOVE_FROM = make("remove_from", new OperationAction(HexPattern.fromAngles("edqdewaqa", HexDir.SOUTH_WEST))); - public static final ActionRegistryEntry SLICE = make("slice", + public static final Holder SLICE = make("slice", new OperationAction(HexPattern.fromAngles("qaeaqwded", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry REPLACE = make("replace", + public static final Holder REPLACE = make("replace", new OperationAction(HexPattern.fromAngles("wqaeaqw", HexDir.NORTH_WEST))); - public static final ActionRegistryEntry CONSTRUCT = make("construct", + public static final Holder CONSTRUCT = make("construct", new OperationAction(HexPattern.fromAngles("ddewedd", HexDir.SOUTH_EAST))); - public static final ActionRegistryEntry DECONSTRUCT = make("deconstruct", + public static final Holder DECONSTRUCT = make("deconstruct", new OperationAction(HexPattern.fromAngles("aaqwqaa", HexDir.SOUTH_WEST))); // Xplat interops static { if (PehkuiInterop.isActive()) { - make("interop/pehkui/get", + REGISTER.registerHolder("interop/pehkui/get", () -> new ActionRegistryEntry(HexPattern.fromAngles("aawawwawwa", HexDir.NORTH_WEST), OpGetScale.INSTANCE)); - make("interop/pehkui/set", + REGISTER.registerHolder("interop/pehkui/set", () -> new ActionRegistryEntry(HexPattern.fromAngles("ddwdwwdwwd", HexDir.NORTH_EAST), OpSetScale.INSTANCE)); } } - public static ActionRegistryEntry make(String name, ActionRegistryEntry are) { - var old = ACTIONS.put(modLoc(name), are); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return are; - } - - public static ActionRegistryEntry make(String name, OperationAction oa) { - var are = new ActionRegistryEntry(oa.getPattern(), oa); - var old = ACTIONS.put(modLoc(name), are); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return are; - } - - public static void register(BiConsumer r) { - for (var e : ACTIONS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } + public static Holder make(String name, OperationAction oa) { + return REGISTER.registerHolder(name, () -> new ActionRegistryEntry(oa.getPattern(), oa)); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 9db4c64a2f..7ebd34fa26 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -219,7 +219,7 @@ object FabricHexInitializer : ModInitializer { HexLootFunctions.registerSerializers(bind(BuiltInRegistries.LOOT_FUNCTION_TYPE)) HexIotaTypes.register() - HexActions.register(bind(IXplatAbstractions.INSTANCE.actionRegistry)) + HexActions.register() HexSpecialHandlers.register(bind(IXplatAbstractions.INSTANCE.specialHandlerRegistry)) HexArithmetics.register(bind(IXplatAbstractions.INSTANCE.arithmeticRegistry)) HexContinuationTypes.registerContinuations(bind(IXplatAbstractions.INSTANCE.continuationTypeRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 061941dccc..40dca06dbe 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -135,7 +135,7 @@ private static void initRegistry() { HexAdvancementTriggers.register(); HexIotaTypes.register(); - bind(HexRegistries.ACTION, HexActions::register); + HexActions.register(); bind(HexRegistries.SPECIAL_HANDLER, HexSpecialHandlers::register); bind(HexRegistries.ARITHMETIC, HexArithmetics::register); bind(HexRegistries.CONTINUATION_TYPE, HexContinuationTypes::registerContinuations); From fada949f8262b902fcd5cc0338b73531d15c6004 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:21:29 +0200 Subject: [PATCH 15/25] chore: migrate HexSpecialHandlers to IXplatRegister --- .../actions/eval/SpecialHandlerForEach.kt | 2 +- .../math/SpecialHandlerNumberLiteral.kt | 2 +- .../actions/stack/SpecialHandlerMask.kt | 2 +- .../common/lib/hex/HexSpecialHandlers.java | 33 ++++++++----------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt index 97e9b0293f..3b800f7f6e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt @@ -26,7 +26,7 @@ class SpecialHandlerForEach(val n: Int) : SpecialHandler { } override fun getName(): Component { - val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.FOR_EACH).get() + val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.FOR_EACH.get()).get() return HexAPI.instance().getSpecialHandlerI18nKey(key) .asTranslatedComponent(n.toString()).lightPurple } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/math/SpecialHandlerNumberLiteral.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/math/SpecialHandlerNumberLiteral.kt index 20d317ce84..44d6c56edd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/math/SpecialHandlerNumberLiteral.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/math/SpecialHandlerNumberLiteral.kt @@ -20,7 +20,7 @@ class SpecialHandlerNumberLiteral(val x: Double) : SpecialHandler { } override fun getName(): Component { - val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.NUMBER).get() + val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.NUMBER.get()).get() return HexAPI.instance().getSpecialHandlerI18nKey(key) .asTranslatedComponent(Action.DOUBLE_FORMATTER.format(x)).lightPurple } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/SpecialHandlerMask.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/SpecialHandlerMask.kt index 29e0183358..c10be9450e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/SpecialHandlerMask.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/SpecialHandlerMask.kt @@ -24,7 +24,7 @@ class SpecialHandlerMask(val mask: BooleanList) : SpecialHandler { } override fun getName(): Component { - val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.MASK).get() + val key = IXplatAbstractions.INSTANCE.specialHandlerRegistry.getResourceKey(HexSpecialHandlers.MASK.get()).get() val fingerprint = mask.map { if (it) '-' else 'v' }.joinToString("") return HexAPI.instance().getSpecialHandlerI18nKey(key) .asTranslatedComponent(fingerprint) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexSpecialHandlers.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexSpecialHandlers.java index 150045cc46..06cb745dc3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexSpecialHandlers.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexSpecialHandlers.java @@ -4,36 +4,29 @@ import at.petrak.hexcasting.common.casting.actions.eval.SpecialHandlerForEach; import at.petrak.hexcasting.common.casting.actions.math.SpecialHandlerNumberLiteral; import at.petrak.hexcasting.common.casting.actions.stack.SpecialHandlerMask; +import at.petrak.hexcasting.common.lib.HexRegistries; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.resources.ResourceLocation; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexSpecialHandlers { - private static final Map> SPECIAL_HANDLERS = new LinkedHashMap<>(); + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.SPECIAL_HANDLER); - public static final SpecialHandler.Factory NUMBER = make("number", - new SpecialHandlerNumberLiteral.Factory()); - public static final SpecialHandler.Factory MASK = make("mask", - new SpecialHandlerMask.Factory()); - public static final SpecialHandler.Factory FOR_EACH = make("for_each", - new SpecialHandlerForEach.Factory()); - - private static SpecialHandler.Factory make(String name, - SpecialHandler.Factory handler) { - var old = SPECIAL_HANDLERS.put(modLoc(name), handler); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return handler; + public static void register() { + REGISTER.registerAll(); } - public static void register(BiConsumer, ResourceLocation> r) { - for (var e : SPECIAL_HANDLERS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } + public static final Supplier> NUMBER = REGISTER.register("number", + SpecialHandlerNumberLiteral.Factory::new); + public static final Supplier> MASK = REGISTER.register("mask", + SpecialHandlerMask.Factory::new); + public static final Supplier> FOR_EACH = REGISTER.register("for_each", + SpecialHandlerForEach.Factory::new); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 7ebd34fa26..bb07dfd351 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -220,7 +220,7 @@ object FabricHexInitializer : ModInitializer { HexIotaTypes.register() HexActions.register() - HexSpecialHandlers.register(bind(IXplatAbstractions.INSTANCE.specialHandlerRegistry)) + HexSpecialHandlers.register() HexArithmetics.register(bind(IXplatAbstractions.INSTANCE.arithmeticRegistry)) HexContinuationTypes.registerContinuations(bind(IXplatAbstractions.INSTANCE.continuationTypeRegistry)) HexEvalSounds.register(bind(IXplatAbstractions.INSTANCE.evalSoundRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 40dca06dbe..8194c42346 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -136,7 +136,7 @@ private static void initRegistry() { HexIotaTypes.register(); HexActions.register(); - bind(HexRegistries.SPECIAL_HANDLER, HexSpecialHandlers::register); + HexSpecialHandlers.register(); bind(HexRegistries.ARITHMETIC, HexArithmetics::register); bind(HexRegistries.CONTINUATION_TYPE, HexContinuationTypes::registerContinuations); bind(HexRegistries.EVAL_SOUND, HexEvalSounds::register); From 45053a74b833342c200205d313620b2148e4bcfb Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:27:32 +0200 Subject: [PATCH 16/25] chore: migrate HexArithmetics to IXplatRegister --- .../common/lib/hex/HexArithmetics.java | 37 ++++++++----------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexArithmetics.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexArithmetics.java index f3feb0dad7..81c5938fde 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexArithmetics.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexArithmetics.java @@ -3,7 +3,9 @@ import at.petrak.hexcasting.api.casting.arithmetic.Arithmetic; import at.petrak.hexcasting.api.casting.arithmetic.engine.ArithmeticEngine; import at.petrak.hexcasting.common.casting.arithmetic.*; +import at.petrak.hexcasting.common.lib.HexRegistries; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -11,13 +13,20 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import java.util.stream.Collectors; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexArithmetics { + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.ARITHMETIC); + private static ArithmeticEngine ENGINE; + public static void register() { + REGISTER.registerAll(); + } + public static ArithmeticEngine getEngine() { if (ENGINE == null) { ENGINE = new ArithmeticEngine(REGISTRY.holders().map(Holder.Reference::value).collect(Collectors.toList())); @@ -27,26 +36,10 @@ public static ArithmeticEngine getEngine() { public static final Registry REGISTRY = IXplatAbstractions.INSTANCE.getArithmeticRegistry(); - public static void register(BiConsumer r) { - for (var e : ARITHMETICS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - private static final Map ARITHMETICS = new LinkedHashMap<>(); - - public static DoubleArithmetic DOUBLE = make("double", DoubleArithmetic.INSTANCE); - public static Vec3Arithmetic VEC3 = make("vec3", Vec3Arithmetic.INSTANCE); - public static ListArithmetic LIST = make("list", ListArithmetic.INSTANCE); - public static BoolArithmetic BOOL = make("bool", BoolArithmetic.INSTANCE); - public static ListSetArithmetic LIST_SET = make("list_set", ListSetArithmetic.INSTANCE); - public static BitwiseSetArithmetic BITWISE_SET = make("bitwise_set", BitwiseSetArithmetic.INSTANCE); - - private static T make(String name, T arithmetic) { - var old = ARITHMETICS.put(modLoc(name), arithmetic); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return arithmetic; - } + public static Supplier DOUBLE = REGISTER.register("double", () -> DoubleArithmetic.INSTANCE); + public static Supplier VEC3 = REGISTER.register("vec3", () -> Vec3Arithmetic.INSTANCE); + public static Supplier LIST = REGISTER.register("list", () -> ListArithmetic.INSTANCE); + public static Supplier BOOL = REGISTER.register("bool", () -> BoolArithmetic.INSTANCE); + public static Supplier LIST_SET = REGISTER.register("list_set", () -> ListSetArithmetic.INSTANCE); + public static Supplier BITWISE_SET = REGISTER.register("bitwise_set", () -> BitwiseSetArithmetic.INSTANCE); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index bb07dfd351..a10eac90e0 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -221,7 +221,7 @@ object FabricHexInitializer : ModInitializer { HexIotaTypes.register() HexActions.register() HexSpecialHandlers.register() - HexArithmetics.register(bind(IXplatAbstractions.INSTANCE.arithmeticRegistry)) + HexArithmetics.register() HexContinuationTypes.registerContinuations(bind(IXplatAbstractions.INSTANCE.continuationTypeRegistry)) HexEvalSounds.register(bind(IXplatAbstractions.INSTANCE.evalSoundRegistry)) HexStateIngredients.register(bind(IXplatAbstractions.INSTANCE.stateIngredientRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 8194c42346..c1d3428b11 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -137,7 +137,7 @@ private static void initRegistry() { HexIotaTypes.register(); HexActions.register(); HexSpecialHandlers.register(); - bind(HexRegistries.ARITHMETIC, HexArithmetics::register); + HexArithmetics.register(); bind(HexRegistries.CONTINUATION_TYPE, HexContinuationTypes::registerContinuations); bind(HexRegistries.EVAL_SOUND, HexEvalSounds::register); bind(HexRegistries.STATE_INGREDIENT, HexStateIngredients::register); From eceaa012fe48d5d96ec0c93b9b0830bb793b5b29 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:30:49 +0200 Subject: [PATCH 17/25] chore: migrate HexContinuationTypes to IXplatRegister --- .../common/lib/hex/HexContinuationTypes.java | 31 +++++++------------ .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexContinuationTypes.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexContinuationTypes.java index 5ec1d82125..b8f1a339c2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexContinuationTypes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexContinuationTypes.java @@ -5,7 +5,9 @@ import at.petrak.hexcasting.api.casting.eval.vm.FrameEvaluate; import at.petrak.hexcasting.api.casting.eval.vm.FrameFinishEval; import at.petrak.hexcasting.api.casting.eval.vm.FrameForEach; +import at.petrak.hexcasting.common.lib.HexRegistries; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -13,6 +15,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; @@ -21,29 +24,19 @@ */ @ParametersAreNonnullByDefault public class HexContinuationTypes { + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.CONTINUATION_TYPE); + public static final Registry> REGISTRY = IXplatAbstractions.INSTANCE.getContinuationTypeRegistry(); + public static void register() { + REGISTER.registerAll(); + } + public static final String KEY_TYPE = HexAPI.MOD_ID + ":type", KEY_DATA = HexAPI.MOD_ID + ":data"; - public static void registerContinuations(BiConsumer, ResourceLocation> r) { - for (var e : CONTINUATIONS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - private static final Map> CONTINUATIONS = new LinkedHashMap<>(); - - public static final ContinuationFrame.Type EVALUATE = continuation("evaluate", FrameEvaluate.TYPE); - public static final ContinuationFrame.Type FOREACH = continuation("foreach", FrameForEach.TYPE); - public static final ContinuationFrame.Type END = continuation("end", FrameFinishEval.TYPE); - - private static > T continuation(String name, T continuation) { - var old = CONTINUATIONS.put(modLoc(name), continuation); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return continuation; - } + public static final Supplier> EVALUATE = REGISTER.register("evaluate", () -> FrameEvaluate.TYPE); + public static final Supplier> FOREACH = REGISTER.register("foreach", () -> FrameForEach.TYPE); + public static final Supplier> END = REGISTER.register("end", () -> FrameFinishEval.TYPE); } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index a10eac90e0..db74e806fe 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -222,7 +222,7 @@ object FabricHexInitializer : ModInitializer { HexActions.register() HexSpecialHandlers.register() HexArithmetics.register() - HexContinuationTypes.registerContinuations(bind(IXplatAbstractions.INSTANCE.continuationTypeRegistry)) + HexContinuationTypes.register() HexEvalSounds.register(bind(IXplatAbstractions.INSTANCE.evalSoundRegistry)) HexStateIngredients.register(bind(IXplatAbstractions.INSTANCE.stateIngredientRegistry)) HexBrainsweepeeIngredients.register(bind(IXplatAbstractions.INSTANCE.brainsweepeeIngredientRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index c1d3428b11..3951a2def4 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -138,7 +138,7 @@ private static void initRegistry() { HexActions.register(); HexSpecialHandlers.register(); HexArithmetics.register(); - bind(HexRegistries.CONTINUATION_TYPE, HexContinuationTypes::registerContinuations); + HexContinuationTypes.register(); bind(HexRegistries.EVAL_SOUND, HexEvalSounds::register); bind(HexRegistries.STATE_INGREDIENT, HexStateIngredients::register); bind(HexRegistries.BRAINSWEEPEE_INGREDIENT, HexBrainsweepeeIngredients::register); From c7e0fa5eb78854f5ae7ba5e536a5f2c8aee1df7a Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:35:04 +0200 Subject: [PATCH 18/25] chore: migrate HexEvalSounds to IXplatRegister --- .../arithmetic/operator/OperatorBasic.kt | 2 +- .../api/casting/castables/Action.kt | 2 +- .../api/casting/castables/ConstMediaAction.kt | 2 +- .../api/casting/castables/SpellAction.kt | 2 +- .../casting/eval/env/PackagedItemCastEnv.java | 2 +- .../api/casting/eval/vm/CastingVM.kt | 10 ++--- .../api/casting/eval/vm/FrameEvaluate.kt | 6 +-- .../api/casting/eval/vm/FrameFinishEval.kt | 2 +- .../api/casting/eval/vm/FrameForEach.kt | 2 +- .../api/casting/iota/ContinuationIota.java | 2 +- .../hexcasting/api/casting/iota/Iota.java | 4 +- .../api/casting/iota/PatternIota.java | 4 +- .../casting/actions/escaping/OpCloseParen.kt | 4 +- .../casting/actions/escaping/OpEscape.kt | 4 +- .../casting/actions/escaping/OpOpenParen.kt | 4 +- .../casting/actions/escaping/OpSimulate.kt | 2 +- .../common/casting/actions/escaping/OpUndo.kt | 2 +- .../common/casting/actions/eval/OpEval.kt | 2 +- .../common/casting/actions/eval/OpHalt.kt | 2 +- .../common/casting/actions/eval/OpThanos.kt | 2 +- .../actions/eval/SpecialHandlerForEach.kt | 2 +- .../casting/actions/lists/OpLastNToList.kt | 2 +- .../casting/actions/local/OpPeekLocal.kt | 2 +- .../casting/actions/local/OpPushLocal.kt | 2 +- .../common/casting/actions/spells/OpPrint.kt | 2 +- .../OpAlwinfyHasAscendedToABeingOfPureMath.kt | 2 +- .../casting/actions/stack/OpFisherman.kt | 2 +- .../actions/stack/OpFishermanButItCopies.kt | 2 +- .../casting/actions/stack/OpStackSize.kt | 2 +- .../common/lib/hex/HexEvalSounds.java | 38 ++++++++----------- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 32 files changed, 58 insertions(+), 64 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/arithmetic/operator/OperatorBasic.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/arithmetic/operator/OperatorBasic.kt index 0bcb9c6683..bd0fbab6cf 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/arithmetic/operator/OperatorBasic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/arithmetic/operator/OperatorBasic.kt @@ -22,7 +22,7 @@ abstract class OperatorBasic(arity: Int, accepts: IotaMultiPredicate) : Operator val stackWithResult = stackWithoutArgs.appendedAll(ret) val image2 = image.copy(stack = stackWithResult, opsConsumed = image.opsConsumed + 1) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } /** diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/Action.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/Action.kt index c30280a868..be9e0a0d88 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/Action.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/Action.kt @@ -65,7 +65,7 @@ interface Action { image.withNewParenthesized(thisIota), listOf(), continuation, - HexEvalSounds.NORMAL_EXECUTE, + HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.ESCAPED ) } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/ConstMediaAction.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/ConstMediaAction.kt index 74f3a0f602..5108073c6e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/ConstMediaAction.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/ConstMediaAction.kt @@ -44,7 +44,7 @@ interface ConstMediaAction : Action { val sideEffects = mutableListOf(OperatorSideEffect.ConsumeMedia(this.mediaCost)) val image2 = image.copy(stack = stackWithResult, opsConsumed = image.opsConsumed + result.opCount) - return OperationResult(image2, sideEffects, continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, sideEffects, continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } data class CostMediaActionResult(val resultStack: List, val opCount: Long = 1) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/SpellAction.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/SpellAction.kt index 53f1756863..b142b7134a 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/SpellAction.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/castables/SpellAction.kt @@ -67,7 +67,7 @@ interface SpellAction : Action { val image2 = image.copy(stack = stackWithoutArgs, opsConsumed = image.opsConsumed + result.opCount, userData = userDataMut) - val sound = if (this.hasCastingSound(env)) HexEvalSounds.SPELL else HexEvalSounds.MUTE + val sound = if (this.hasCastingSound(env)) HexEvalSounds.SPELL.get() else HexEvalSounds.MUTE.get() return OperationResult(image2, sideEffects, continuation, sound) } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PackagedItemCastEnv.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PackagedItemCastEnv.java index 284d20c4c5..1ff98b3459 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PackagedItemCastEnv.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/env/PackagedItemCastEnv.java @@ -11,7 +11,7 @@ public class PackagedItemCastEnv extends PlayerBasedSpiralPatternCastEnv { - protected EvalSound sound = HexEvalSounds.NOTHING; + protected EvalSound sound = HexEvalSounds.NOTHING.get(); public PackagedItemCastEnv(ServerPlayer caster, InteractionHand castingHand) { super(caster, castingHand); diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/CastingVM.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/CastingVM.kt index 4c04c226c4..af29d2917d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/CastingVM.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/CastingVM.kt @@ -65,14 +65,14 @@ class CastingVM(var image: CastingImage, val env: CastingEnvironment) { newData = null, sideEffects = listOf(OperatorSideEffect.DoMishap(MishapStackSize(), Mishap.Context(null, null))), resolutionType = ResolvedPatternType.ERRORED, - sound = HexEvalSounds.MISHAP, + sound = HexEvalSounds.MISHAP.get(), ) } else if (result.newData != null && result.newData.opsConsumed > env.maxOpCount()) { result.copy( newData = null, sideEffects = listOf(OperatorSideEffect.DoMishap(MishapEvalTooMuch(), Mishap.Context(null, null))), resolutionType = ResolvedPatternType.ERRORED, - sound = HexEvalSounds.MISHAP, + sound = HexEvalSounds.MISHAP.get(), ) } else { result @@ -145,7 +145,7 @@ class CastingVM(var image: CastingImage, val env: CastingEnvironment) { escapeNext = false, ) } - return CastResult(iota, continuation, newImage, listOf(), ResolvedPatternType.ESCAPED, HexEvalSounds.NORMAL_EXECUTE) + return CastResult(iota, continuation, newImage, listOf(), ResolvedPatternType.ESCAPED, HexEvalSounds.NORMAL_EXECUTE.get()) } val result = if (this.image.parenCount > 0) { @@ -164,7 +164,7 @@ class CastingVM(var image: CastingImage, val env: CastingEnvironment) { stack = newStack, simulateNext = false ) - return CastResult(iota, continuation, newImage, listOf(), ResolvedPatternType.SIMULATED, HexEvalSounds.NORMAL_EXECUTE) + return CastResult(iota, continuation, newImage, listOf(), ResolvedPatternType.SIMULATED, HexEvalSounds.NORMAL_EXECUTE.get()) } // otherwise, return the original CastResult to perform all the side effects, stack manip, etc @@ -186,7 +186,7 @@ class CastingVM(var image: CastingImage, val env: CastingEnvironment) { ) ), ResolvedPatternType.ERRORED, - HexEvalSounds.MISHAP + HexEvalSounds.MISHAP.get() ) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameEvaluate.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameEvaluate.kt index 10abd624ae..46aee2a08c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameEvaluate.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameEvaluate.kt @@ -38,14 +38,14 @@ data class FrameEvaluate(val list: TreeList, val isMetacasting: Boolean) : } else continuation // ...before evaluating the first one in the list. val update = harness.executeInner(list.head(), level, newCont) - if (this.isMetacasting && update.sound != HexEvalSounds.MISHAP) { - update.copy(sound = HexEvalSounds.HERMES) + if (this.isMetacasting && update.sound != HexEvalSounds.MISHAP.get()) { + update.copy(sound = HexEvalSounds.HERMES.get()) } else { update } } else { // If there are no patterns (e.g. empty Hermes), just return OK. - CastResult(ListIota(list), continuation, null, listOf(), ResolvedPatternType.EVALUATED, HexEvalSounds.HERMES) + CastResult(ListIota(list), continuation, null, listOf(), ResolvedPatternType.EVALUATED, HexEvalSounds.HERMES.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameFinishEval.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameFinishEval.kt index 31b8a31a0d..b41097bf75 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameFinishEval.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameFinishEval.kt @@ -31,7 +31,7 @@ object FrameFinishEval : ContinuationFrame { null, listOf(), ResolvedPatternType.EVALUATED, - HexEvalSounds.NOTHING, + HexEvalSounds.NOTHING.get(), ) } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameForEach.kt b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameForEach.kt index cbb030d350..29a2acee8f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameForEach.kt +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/eval/vm/FrameForEach.kt @@ -66,7 +66,7 @@ data class FrameForEach( newImage.withResetEscape().copy(stack = newStack), listOf(), ResolvedPatternType.EVALUATED, - HexEvalSounds.THOTH, + HexEvalSounds.THOTH.get(), ) } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java index 3b9c2fc294..e05780f9bd 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ContinuationIota.java @@ -44,7 +44,7 @@ public boolean toleratesOther(Iota that) { @Override public @NotNull CastResult execute(CastingVM vm, ServerLevel world, SpellContinuation continuation) { - return new CastResult(this, this.getContinuation(), vm.getImage(), List.of(), ResolvedPatternType.EVALUATED, HexEvalSounds.HERMES); + return new CastResult(this, this.getContinuation(), vm.getImage(), List.of(), ResolvedPatternType.EVALUATED, HexEvalSounds.HERMES.get()); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Iota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Iota.java index aa9118c613..844f6d6e5c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Iota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/Iota.java @@ -57,7 +57,7 @@ protected Iota(@NotNull Supplier> type) { ) ), ResolvedPatternType.INVALID, - HexEvalSounds.MISHAP); + HexEvalSounds.MISHAP.get()); } /** @@ -74,7 +74,7 @@ protected Iota(@NotNull Supplier> type) { vm.getImage().withNewParenthesized(this), List.of(), ResolvedPatternType.ESCAPED, - HexEvalSounds.NORMAL_EXECUTE); + HexEvalSounds.NORMAL_EXECUTE.get()); } /** diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java index 4f02c7b5d9..a1e7250add 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java @@ -120,7 +120,7 @@ public boolean executable() { vm.getImage().withNewParenthesized(this), List.of(), ResolvedPatternType.ESCAPED, - HexEvalSounds.NORMAL_EXECUTE); + HexEvalSounds.NORMAL_EXECUTE.get()); } else { // if you draw something invalid outside parens, it mishaps throw new MishapInvalidPattern(this.getPattern()); @@ -167,7 +167,7 @@ public boolean executable() { null, List.of(new OperatorSideEffect.DoMishap(mishap, new Mishap.Context(this.getPattern(), castedName.get()))), mishap.resolutionType(vm.getEnv()), - HexEvalSounds.MISHAP); + HexEvalSounds.MISHAP.get()); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpCloseParen.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpCloseParen.kt index 98316b8aca..e8b74fd5db 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpCloseParen.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpCloseParen.kt @@ -28,7 +28,7 @@ object OpCloseParen : Action { parenCount = newParenCount, parenthesized = TreeList.empty() ) - return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE, ResolvedPatternType.EVALUATED) + return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.EVALUATED) } else { // we have this situation: "(()" // we need to add the close paren @@ -37,7 +37,7 @@ object OpCloseParen : Action { parenCount = newParenCount, parenthesized = newParens ) - return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE, ResolvedPatternType.ESCAPED) + return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.ESCAPED) } } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpEscape.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpEscape.kt index 5c3a6e8258..ca82bfe7fb 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpEscape.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpEscape.kt @@ -15,13 +15,13 @@ object OpEscape : Action { val image2 = image.copy( escapeNext = true ) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } override fun operateInParens(env: CastingEnvironment, image: CastingImage, continuation: SpellContinuation, thisIota: Iota): ParenthesizedOperationResult { val image2 = image.copy( escapeNext = true ) - return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE, ResolvedPatternType.EVALUATED) + return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.EVALUATED) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpOpenParen.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpOpenParen.kt index b5a50925d8..837439963d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpOpenParen.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpOpenParen.kt @@ -15,7 +15,7 @@ object OpOpenParen : Action { val image2 = image.copy( parenCount = image.parenCount + 1 ) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } override fun operateInParens(env: CastingEnvironment, image: CastingImage, continuation: SpellContinuation, thisIota: Iota): ParenthesizedOperationResult { @@ -25,6 +25,6 @@ object OpOpenParen : Action { parenthesized = newParens, parenCount = image.parenCount + 1 ) - return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE, ResolvedPatternType.ESCAPED) + return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.ESCAPED) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpSimulate.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpSimulate.kt index 270b206205..b4defbd801 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpSimulate.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpSimulate.kt @@ -12,6 +12,6 @@ object OpSimulate : Action { val image2 = image.copy( simulateNext = true ) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt index 3a2eda0560..c536fa3326 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/escaping/OpUndo.kt @@ -39,6 +39,6 @@ object OpUndo : Action { parenthesized = newParens, parenCount = newParenCount ) - return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE, ResolvedPatternType.UNDONE) + return ParenthesizedOperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get(), ResolvedPatternType.UNDONE) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpEval.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpEval.kt index 03e36713bb..3a545853ed 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpEval.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpEval.kt @@ -39,6 +39,6 @@ object OpEval : Action { val frame = FrameEvaluate(instrsList, true) val image2 = image.withUsedOp().copy(stack = newStack) - return OperationResult(image2, listOf(), newCont.pushFrame(frame), HexEvalSounds.HERMES) + return OperationResult(image2, listOf(), newCont.pushFrame(frame), HexEvalSounds.HERMES.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpHalt.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpHalt.kt index f4e4908b2c..c866ac87b1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpHalt.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpHalt.kt @@ -28,6 +28,6 @@ object OpHalt : Action { } val image2 = image.withUsedOp().copy(stack = newStack) - return OperationResult(image2, listOf(), newCont, HexEvalSounds.SPELL) + return OperationResult(image2, listOf(), newCont, HexEvalSounds.SPELL.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpThanos.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpThanos.kt index 8215acfc92..d3b1a9feb8 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpThanos.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpThanos.kt @@ -14,6 +14,6 @@ object OpThanos : Action { val stack = image.stack.appended(DoubleIota(opsLeft.toDouble())) val image2 = image.withUsedOp().copy(stack = stack) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt index 3b800f7f6e..6be0ed233e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/SpecialHandlerForEach.kt @@ -50,7 +50,7 @@ class SpecialHandlerForEach(val n: Int) : SpecialHandler { val frame = FrameForEach(datums, instrList, contextStack, stashedStack, TreeList.empty()) val image2 = image.withUsedOp().copy(stack = TreeList.empty()) - return OperationResult(image2, listOf(), continuation.pushFrame(frame), HexEvalSounds.THOTH) + return OperationResult(image2, listOf(), continuation.pushFrame(frame), HexEvalSounds.THOTH.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/lists/OpLastNToList.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/lists/OpLastNToList.kt index 13dfa9a305..a972bf314b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/lists/OpLastNToList.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/lists/OpLastNToList.kt @@ -25,6 +25,6 @@ object OpLastNToList : Action { val stackWithResult = stackWithoutContents.appendedAll(output.asActionResult) val image2 = image.withUsedOp().copy(stack = stackWithResult) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPeekLocal.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPeekLocal.kt index 48aaa912b6..d62ac189c9 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPeekLocal.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPeekLocal.kt @@ -22,6 +22,6 @@ object OpPeekLocal : Action { // does not mutate userdata val image2 = image.withUsedOp().copy(stack = newStack) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt index cdf0b3e6bd..56d5a363ef 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/local/OpPushLocal.kt @@ -28,6 +28,6 @@ object OpPushLocal : Action { image.userData.put(HexAPI.RAVENMIND_USERDATA, IotaType.TYPED_CODEC.encodeStart(NbtOps.INSTANCE, newLocal).orThrow) val image2 = image.withUsedOp().copy(stack = stack.init()) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpPrint.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpPrint.kt index d2f33a8499..f6f99b4b5f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpPrint.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/spells/OpPrint.kt @@ -28,7 +28,7 @@ object OpPrint : Action { OperatorSideEffect.AttemptSpell(Spell(datum), hasCastingSound = false, awardStat = false) ), continuation, - HexEvalSounds.SPELL, + HexEvalSounds.SPELL.get(), ) } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpAlwinfyHasAscendedToABeingOfPureMath.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpAlwinfyHasAscendedToABeingOfPureMath.kt index 5a2530b4b5..33cfd91f91 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpAlwinfyHasAscendedToABeingOfPureMath.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpAlwinfyHasAscendedToABeingOfPureMath.kt @@ -43,7 +43,7 @@ object OpAlwinfyHasAscendedToABeingOfPureMath : Action { } val image2 = image.withUsedOp().copy(stack = stack.dropRight(strides.size).appendedAll(newOrder.result())) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } private class FactorialIter : Iterator { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFisherman.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFisherman.kt index 5f53dfa950..163a746e97 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFisherman.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFisherman.kt @@ -42,6 +42,6 @@ object OpFisherman : Action { } val image2 = image.withUsedOp().copy(stack = stack) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFishermanButItCopies.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFishermanButItCopies.kt index e9999abaff..a9dfdddb45 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFishermanButItCopies.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpFishermanButItCopies.kt @@ -28,6 +28,6 @@ object OpFishermanButItCopies : Action { } val image2 = image.withUsedOp().copy(stack = stack) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpStackSize.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpStackSize.kt index 42dcd19dac..67b1fe9c9d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpStackSize.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/stack/OpStackSize.kt @@ -12,6 +12,6 @@ object OpStackSize : Action { override fun operate(env: CastingEnvironment, image: CastingImage, continuation: SpellContinuation): OperationResult { val stack = image.stack.appended(DoubleIota(image.stack.size.toDouble())) val image2 = image.withUsedOp().copy(stack = stack) - return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE) + return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE.get()) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java index f44e4f64d2..85ae4c2419 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexEvalSounds.java @@ -1,47 +1,41 @@ package at.petrak.hexcasting.common.lib.hex; import at.petrak.hexcasting.api.casting.eval.sideeffects.EvalSound; +import at.petrak.hexcasting.common.lib.HexRegistries; import at.petrak.hexcasting.common.lib.HexSounds; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.resources.ResourceLocation; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; // TODO: we REALLY need a cleanup of how sounds work. again. public class HexEvalSounds { - private static final Map SOUNDS = new LinkedHashMap<>(); + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.EVAL_SOUND); - public static final EvalSound NOTHING = make("nothing", + public static void register() { + REGISTER.registerAll(); + } + + public static final Supplier NOTHING = REGISTER.register("nothing", () -> new EvalSound(null, Integer.MIN_VALUE)); - public static final EvalSound NORMAL_EXECUTE = make("operator", + public static final Supplier NORMAL_EXECUTE = REGISTER.register("operator", () -> new EvalSound(HexSounds.CAST_NORMAL.value(), 0)); - public static final EvalSound SPELL = make("spell", + public static final Supplier SPELL = REGISTER.register("spell", () -> new EvalSound(HexSounds.CAST_SPELL.value(), 1000)); - public static final EvalSound HERMES = make("hermes", + public static final Supplier HERMES = REGISTER.register("hermes", () -> new EvalSound(HexSounds.CAST_HERMES.value(), 2000)); - public static final EvalSound THOTH = make("thoth", + public static final Supplier THOTH = REGISTER.register("thoth", () -> new EvalSound(HexSounds.CAST_THOTH.value(), 2500)); - public static final EvalSound MUTE = make("mute", + public static final Supplier MUTE = REGISTER.register("mute", () -> new EvalSound(null, 3000)); - public static final EvalSound MISHAP = make("mishap", + public static final Supplier MISHAP = REGISTER.register("mishap", () -> new EvalSound(HexSounds.CAST_FAILURE.value(), 4000)); - - private static EvalSound make(String name, EvalSound sound) { - var old = SOUNDS.put(modLoc(name), sound); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + name); - } - return sound; - } - - public static void register(BiConsumer r) { - for (var e : SOUNDS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index db74e806fe..d28caff87d 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -223,7 +223,7 @@ object FabricHexInitializer : ModInitializer { HexSpecialHandlers.register() HexArithmetics.register() HexContinuationTypes.register() - HexEvalSounds.register(bind(IXplatAbstractions.INSTANCE.evalSoundRegistry)) + HexEvalSounds.register() HexStateIngredients.register(bind(IXplatAbstractions.INSTANCE.stateIngredientRegistry)) HexBrainsweepeeIngredients.register(bind(IXplatAbstractions.INSTANCE.brainsweepeeIngredientRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 3951a2def4..71f9ebe980 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -139,7 +139,7 @@ private static void initRegistry() { HexSpecialHandlers.register(); HexArithmetics.register(); HexContinuationTypes.register(); - bind(HexRegistries.EVAL_SOUND, HexEvalSounds::register); + HexEvalSounds.register(); bind(HexRegistries.STATE_INGREDIENT, HexStateIngredients::register); bind(HexRegistries.BRAINSWEEPEE_INGREDIENT, HexBrainsweepeeIngredients::register); From 1d99a9a978ada13f2a35d039e72801add9e5c80d Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:42:49 +0200 Subject: [PATCH 19/25] chore: migrate HexStateIngredients to IXplatRegister --- .../common/lib/HexStateIngredients.java | 33 +++++++++---------- .../state/StateIngredientBlock.java | 2 +- .../state/StateIngredientBlockState.java | 2 +- .../state/StateIngredientBlocks.java | 2 +- .../ingredient/state/StateIngredientTag.java | 2 +- .../state/StateIngredientTagExcluding.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 8 files changed, 23 insertions(+), 24 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java index ae4b7abde8..a7a47689f5 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java @@ -3,6 +3,7 @@ import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.recipe.ingredient.state.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -17,8 +18,15 @@ import java.util.List; import java.util.Random; import java.util.function.BiConsumer; +import java.util.function.Supplier; public class HexStateIngredients { + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.STATE_INGREDIENT); + + public static void register() { + REGISTER.registerAll(); + } + public static final Codec TYPED_CODEC = Codec.lazyInitialized(() -> IXplatAbstractions.INSTANCE .getStateIngredientRegistry() .byNameCodec() @@ -27,13 +35,13 @@ public class HexStateIngredients { .registry(HexRegistries.STATE_INGREDIENT) .dispatch(StateIngredient::getType, StateIngredientType::streamCodec); - public static final StateIngredientType BLOCK_TYPE = new StateIngredientBlock.Type(); - public static final StateIngredientType BLOCK_STATE = new StateIngredientBlockState.Type(); - public static final StateIngredientType BLOCKS = new StateIngredientBlocks.Type(); - public static final StateIngredientType TAG = new StateIngredientTag.Type(); - public static final StateIngredientType TAG_EXCLUDING = new StateIngredientTagExcluding.Type(); + public static final Supplier> BLOCK_TYPE = REGISTER.register("block", StateIngredientBlock.Type::new); + public static final Supplier> BLOCK_STATE = REGISTER.register("state", StateIngredientBlockState.Type::new); + public static final Supplier> BLOCKS = REGISTER.register("blocks", StateIngredientBlocks.Type::new); + public static final Supplier> TAG = REGISTER.register("tag", StateIngredientTag.Type::new); + public static final Supplier> TAG_EXCLUDING = REGISTER.register("tag_excluding", StateIngredientTagExcluding.Type::new); - public static final StateIngredientType NONE_TYPE = new StateIngredientType<>() { + public static final Supplier> NONE_TYPE = REGISTER.register("none", () -> new StateIngredientType<>() { @Override public MapCodec codec() { return MapCodec.unit(NONE); @@ -43,7 +51,7 @@ public MapCodec codec() { public StreamCodec streamCodec() { return StreamCodec.unit(NONE); } - }; + }); public static final StateIngredient NONE = new StateIngredient() { @Override @@ -58,7 +66,7 @@ public BlockState pick(Random random) { @Override public StateIngredientType getType() { - return NONE_TYPE; + return NONE_TYPE.get(); } @Override @@ -72,15 +80,6 @@ public List getDisplayed() { } }; - public static void register(BiConsumer, ResourceLocation> r) { - r.accept(NONE_TYPE, HexAPI.modLoc("none")); - r.accept(BLOCK_TYPE, HexAPI.modLoc("block")); - r.accept(BLOCK_STATE, HexAPI.modLoc("state")); - r.accept(BLOCKS, HexAPI.modLoc("blocks")); - r.accept(TAG, HexAPI.modLoc("tag")); - r.accept(TAG_EXCLUDING, HexAPI.modLoc("tag_excluding")); - } - public static StateIngredient of(Block block) { return new StateIngredientBlock(block); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlock.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlock.java index 8eb1ec30b5..a297b22cce 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlock.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlock.java @@ -26,7 +26,7 @@ public StateIngredientBlock(Block block) { @Override public StateIngredientType getType() { - return HexStateIngredients.BLOCK_TYPE; + return HexStateIngredients.BLOCK_TYPE.get(); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlockState.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlockState.java index 29b43adb91..96ec63c48c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlockState.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlockState.java @@ -26,7 +26,7 @@ public StateIngredientBlockState(BlockState state) { @Override public StateIngredientType getType() { - return HexStateIngredients.BLOCK_STATE; + return HexStateIngredients.BLOCK_STATE.get(); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlocks.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlocks.java index bdb0fdf6b7..5ca90d06a1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlocks.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientBlocks.java @@ -30,7 +30,7 @@ public StateIngredientBlocks(Collection blocks) { @Override public StateIngredientType getType() { - return HexStateIngredients.BLOCKS; + return HexStateIngredients.BLOCKS.get(); } @Override diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTag.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTag.java index b3afe4995d..79b3c47e9e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTag.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTag.java @@ -33,7 +33,7 @@ public StateIngredientTag(TagKey tag) { @Override public StateIngredientType getType() { - return HexStateIngredients.TAG; + return HexStateIngredients.TAG.get(); } public Stream resolve() { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTagExcluding.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTagExcluding.java index 06c5f50194..1b2076a3a2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTagExcluding.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/state/StateIngredientTagExcluding.java @@ -29,7 +29,7 @@ public StateIngredientTagExcluding(TagKey tag, Collection getType() { - return HexStateIngredients.TAG_EXCLUDING; + return HexStateIngredients.TAG_EXCLUDING.get(); } @Override diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index d28caff87d..b94f24b15e 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -224,7 +224,7 @@ object FabricHexInitializer : ModInitializer { HexArithmetics.register() HexContinuationTypes.register() HexEvalSounds.register() - HexStateIngredients.register(bind(IXplatAbstractions.INSTANCE.stateIngredientRegistry)) + HexStateIngredients.register() HexBrainsweepeeIngredients.register(bind(IXplatAbstractions.INSTANCE.brainsweepeeIngredientRegistry)) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 71f9ebe980..7574c656da 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -140,7 +140,7 @@ private static void initRegistry() { HexArithmetics.register(); HexContinuationTypes.register(); HexEvalSounds.register(); - bind(HexRegistries.STATE_INGREDIENT, HexStateIngredients::register); + HexStateIngredients.register(); bind(HexRegistries.BRAINSWEEPEE_INGREDIENT, HexBrainsweepeeIngredients::register); ForgeHexArgumentTypeRegistry.ARGUMENT_TYPES.register(getModEventBus()); From dba28facf425b9b3b6fc417dabc1dc67b1f39d75 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 22:56:12 +0200 Subject: [PATCH 20/25] chore: migrate HexBrainsweepeeIngredients to IXplatRegister --- .../lib/HexBrainsweepeeIngredients.java | 27 ++++++++++--------- .../brainsweep/EntityTagIngredient.java | 2 +- .../brainsweep/EntityTypeIngredient.java | 2 +- .../brainsweep/VillagerIngredient.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 2 +- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java index 6cbb1846b6..da3d597e7d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java @@ -3,6 +3,7 @@ import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -21,8 +22,15 @@ import java.util.List; import java.util.function.BiConsumer; +import java.util.function.Supplier; public class HexBrainsweepeeIngredients { + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(HexRegistries.BRAINSWEEPEE_INGREDIENT); + + public static void register() { + REGISTER.registerAll(); + } + public static final Codec TYPED_CODEC = Codec.lazyInitialized(() -> IXplatAbstractions.INSTANCE .getBrainsweepeeIngredientRegistry() .byNameCodec() @@ -31,11 +39,11 @@ public class HexBrainsweepeeIngredients { .registry(HexRegistries.BRAINSWEEPEE_INGREDIENT) .dispatch(BrainsweepeeIngredient::getType, BrainsweepeeIngredientType::streamCodec); - public static final BrainsweepeeIngredientType ENTITY_TYPE = new EntityTypeIngredient.Type(); - public static final BrainsweepeeIngredientType TAG = new EntityTagIngredient.Type(); - public static final BrainsweepeeIngredientType VILLAGER = new VillagerIngredient.Type(); + public static final Supplier> ENTITY_TYPE = REGISTER.register("entity_type", EntityTypeIngredient.Type::new); + public static final Supplier> TAG = REGISTER.register("entity_tag", EntityTagIngredient.Type::new); + public static final Supplier> VILLAGER = REGISTER.register("villager", VillagerIngredient.Type::new); - public static final BrainsweepeeIngredientType NONE_TYPE = new BrainsweepeeIngredientType<>() { + public static final Supplier> NONE_TYPE = REGISTER.register("none", () -> new BrainsweepeeIngredientType<>() { @Override public MapCodec codec() { return MapCodec.unit(NONE); @@ -45,13 +53,13 @@ public MapCodec codec() { public StreamCodec streamCodec() { return StreamCodec.unit(NONE); } - }; + }); public static final BrainsweepeeIngredient NONE = new BrainsweepeeIngredient() { @Override public BrainsweepeeIngredientType getType() { - return NONE_TYPE; + return NONE_TYPE.get(); } @Override @@ -80,13 +88,6 @@ public List exampleEntities(Level level) { } }; - public static void register(BiConsumer, ResourceLocation> r) { - r.accept(NONE_TYPE, HexAPI.modLoc("none")); - r.accept(ENTITY_TYPE, HexAPI.modLoc("entity_type")); - r.accept(TAG, HexAPI.modLoc("entity_tag")); - r.accept(VILLAGER, HexAPI.modLoc("villager")); - } - public static BrainsweepeeIngredient of(EntityType entityType) { return new EntityTypeIngredient(entityType); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTagIngredient.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTagIngredient.java index 603ede9d6d..c16572fad0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTagIngredient.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTagIngredient.java @@ -30,7 +30,7 @@ public EntityTagIngredient(TagKey> tag) { @Override public BrainsweepeeIngredientType getType() { - return HexBrainsweepeeIngredients.TAG; + return HexBrainsweepeeIngredients.TAG.get(); } public TagKey> getTag() { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTypeIngredient.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTypeIngredient.java index d0ed47f1a4..bcd14f87c1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTypeIngredient.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/EntityTypeIngredient.java @@ -27,7 +27,7 @@ public EntityTypeIngredient(EntityType entityType) { @Override public BrainsweepeeIngredientType getType() { - return HexBrainsweepeeIngredients.ENTITY_TYPE; + return HexBrainsweepeeIngredients.ENTITY_TYPE.get(); } public EntityType getEntityType() { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/VillagerIngredient.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/VillagerIngredient.java index f3e40afc3e..5feb89258b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/VillagerIngredient.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/brainsweep/VillagerIngredient.java @@ -47,7 +47,7 @@ public VillagerIngredient( @Override public BrainsweepeeIngredientType getType() { - return HexBrainsweepeeIngredients.VILLAGER; + return HexBrainsweepeeIngredients.VILLAGER.get(); } public @Nullable VillagerProfession getProfession() { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index b94f24b15e..1002cb8486 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -225,7 +225,7 @@ object FabricHexInitializer : ModInitializer { HexContinuationTypes.register() HexEvalSounds.register() HexStateIngredients.register() - HexBrainsweepeeIngredients.register(bind(IXplatAbstractions.INSTANCE.brainsweepeeIngredientRegistry)) + HexBrainsweepeeIngredients.register() // Because of Java's lazy-loading of classes, can't use Kotlin static initialization for diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 7574c656da..3fb37d5f23 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -141,7 +141,7 @@ private static void initRegistry() { HexContinuationTypes.register(); HexEvalSounds.register(); HexStateIngredients.register(); - bind(HexRegistries.BRAINSWEEPEE_INGREDIENT, HexBrainsweepeeIngredients::register); + HexBrainsweepeeIngredients.register(); ForgeHexArgumentTypeRegistry.ARGUMENT_TYPES.register(getModEventBus()); ForgeHexLootMods.REGISTRY.register(getModEventBus()); From ecc2cabcd04e9fc769bc0cf99886d600aacd0ee4 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 23:07:22 +0200 Subject: [PATCH 21/25] chore: migrate HexLootFunctions to IXplatRegister --- .../common/lib/HexLootFunctions.java | 37 +++++++------------ .../loot/AddHexToAncientCypherFunc.java | 2 +- .../loot/AddPerWorldPatternToScrollFunc.java | 2 +- .../common/loot/AmethystReducerFunc.java | 2 +- .../hexcasting/fabric/FabricHexInitializer.kt | 2 +- .../hexcasting/forge/ForgeHexInitializer.java | 3 +- 6 files changed, 19 insertions(+), 29 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java index 24b964524a..7c4769ad81 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java @@ -3,6 +3,9 @@ import at.petrak.hexcasting.common.loot.AddHexToAncientCypherFunc; import at.petrak.hexcasting.common.loot.AddPerWorldPatternToScrollFunc; import at.petrak.hexcasting.common.loot.AmethystReducerFunc; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; @@ -10,33 +13,21 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexLootFunctions { - public static void registerSerializers(BiConsumer, ResourceLocation> r) { - for (var e : LOOT_FUNCS.entrySet()) { - r.accept(e.getValue(), e.getKey()); - } - } - - private static final Map> LOOT_FUNCS = new LinkedHashMap<>(); + private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.LOOT_FUNCTION_TYPE); - public static final LootItemFunctionType PATTERN_SCROLL = register("pattern_scroll", - new LootItemFunctionType<>(AddPerWorldPatternToScrollFunc.CODEC)); - public static final LootItemFunctionType HEX_CYPHER = register("hex_cypher", - new LootItemFunctionType<>(AddHexToAncientCypherFunc.CODEC)); - public static final LootItemFunctionType AMETHYST_SHARD_REDUCER = register("amethyst_shard_reducer", - new LootItemFunctionType<>(AmethystReducerFunc.CODEC)); - - private static LootItemFunctionType register( - String id, - LootItemFunctionType lift - ) { - var old = LOOT_FUNCS.put(modLoc(id), lift); - if (old != null) { - throw new IllegalArgumentException("Typo? Duplicate id " + id); - } - return lift; + public static void register() { + REGISTER.registerAll(); } + + public static final Supplier> PATTERN_SCROLL = REGISTER.register("pattern_scroll", + () -> new LootItemFunctionType<>(AddPerWorldPatternToScrollFunc.CODEC)); + public static final Supplier> HEX_CYPHER = REGISTER.register("hex_cypher", + () -> new LootItemFunctionType<>(AddHexToAncientCypherFunc.CODEC)); + public static final Supplier> AMETHYST_SHARD_REDUCER = REGISTER.register("amethyst_shard_reducer", + () -> new LootItemFunctionType<>(AmethystReducerFunc.CODEC)); } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java index d3f112b204..f922ead847 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddHexToAncientCypherFunc.java @@ -61,7 +61,7 @@ protected ItemStack run(ItemStack stack, LootContext ctx) { @Override public LootItemFunctionType getType() { - return HexLootFunctions.HEX_CYPHER; + return HexLootFunctions.HEX_CYPHER.get(); } // TODO: make this datapackable diff --git a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java index 4c41089ba5..12643552e7 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/loot/AddPerWorldPatternToScrollFunc.java @@ -73,6 +73,6 @@ protected ItemStack run(ItemStack stack, LootContext ctx) { @Override public LootItemFunctionType getType() { - return HexLootFunctions.PATTERN_SCROLL; + return HexLootFunctions.PATTERN_SCROLL.get(); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/loot/AmethystReducerFunc.java b/Common/src/main/java/at/petrak/hexcasting/common/loot/AmethystReducerFunc.java index 5f01830186..16496fbe00 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/loot/AmethystReducerFunc.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/loot/AmethystReducerFunc.java @@ -47,6 +47,6 @@ protected ItemStack run(ItemStack stack, LootContext ctx) { @Override public LootItemFunctionType getType() { - return HexLootFunctions.AMETHYST_SHARD_REDUCER; + return HexLootFunctions.AMETHYST_SHARD_REDUCER.get(); } } diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 1002cb8486..d5eecea159 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -216,7 +216,7 @@ object FabricHexInitializer : ModInitializer { HexParticles.register() - HexLootFunctions.registerSerializers(bind(BuiltInRegistries.LOOT_FUNCTION_TYPE)) + HexLootFunctions.register() HexIotaTypes.register() HexActions.register() diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 3fb37d5f23..bb7b61f5cb 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -199,8 +199,7 @@ private static void initListeners() { modBus.addListener((RegisterEvent evt) -> { if (evt.getRegistryKey().equals(Registries.ITEM)) { HexStatistics.register(); - HexLootFunctions.registerSerializers((lift, id) -> - Registry.register(BuiltInRegistries.LOOT_FUNCTION_TYPE, id, lift)); + HexLootFunctions.register(); } }); From f273ba3a94e52742c43523a287c393a78b2b15b8 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Sun, 26 Jul 2026 23:10:33 +0200 Subject: [PATCH 22/25] chore: cleanup imports --- .../hexcasting/common/lib/HexBlockEntities.java | 11 ----------- .../at/petrak/hexcasting/common/lib/HexBlocks.java | 7 ------- .../common/lib/HexBrainsweepeeIngredients.java | 3 --- .../petrak/hexcasting/common/lib/HexCreativeTabs.java | 5 ----- .../hexcasting/common/lib/HexDataComponents.java | 4 ---- .../at/petrak/hexcasting/common/lib/HexItems.java | 2 -- .../hexcasting/common/lib/HexLootFunctions.java | 6 ------ .../at/petrak/hexcasting/common/lib/HexParticles.java | 6 ------ .../at/petrak/hexcasting/common/lib/HexPotions.java | 8 -------- .../at/petrak/hexcasting/common/lib/HexSounds.java | 5 ----- .../hexcasting/common/lib/HexStateIngredients.java | 3 --- 11 files changed, 60 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java index de240f9027..988af09b34 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlockEntities.java @@ -1,6 +1,5 @@ package at.petrak.hexcasting.common.lib; -import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.blocks.BlockQuenchedAllay; import at.petrak.hexcasting.common.blocks.akashic.BlockEntityAkashicBookshelf; import at.petrak.hexcasting.common.blocks.circles.BlockEntitySlate; @@ -11,19 +10,9 @@ import at.petrak.hexcasting.common.blocks.entity.BlockEntityQuenchedAllay; import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; import java.util.function.Supplier; public class HexBlockEntities { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java index 08340e68da..4f9fd2f54e 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBlocks.java @@ -19,11 +19,8 @@ import at.petrak.hexcasting.common.blocks.decoration.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; -import com.mojang.datafixers.util.Pair; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ColorRGBA; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.BlockItem; @@ -40,12 +37,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; import java.util.function.Supplier; -import static at.petrak.hexcasting.api.HexAPI.modLoc; - public class HexBlocks { private static final IXplatRegister REGISTER_BLOCKS = IXplatAbstractions.INSTANCE.createRegistar(Registries.BLOCK); private static final IXplatRegister REGISTER_BLOCK_ITEMS = IXplatAbstractions.INSTANCE.createRegistar(Registries.ITEM); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java index da3d597e7d..d5cc9ede3c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexBrainsweepeeIngredients.java @@ -1,6 +1,5 @@ package at.petrak.hexcasting.common.lib; -import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; @@ -10,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.Entity; @@ -21,7 +19,6 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.function.BiConsumer; import java.util.function.Supplier; public class HexBrainsweepeeIngredients { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java index a410428058..007374ec81 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexCreativeTabs.java @@ -7,14 +7,9 @@ import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; - import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexCreativeTabs { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java index c760ae0602..f09596afae 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexDataComponents.java @@ -15,15 +15,11 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Unit; import java.util.*; -import java.util.function.BiConsumer; import java.util.function.Supplier; -import static at.petrak.hexcasting.api.HexAPI.modLoc; - public class HexDataComponents { private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.DATA_COMPONENT_TYPE); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java index f3bd3855f5..e54537b9c7 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java @@ -18,7 +18,6 @@ import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.AttributeModifier; @@ -29,7 +28,6 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.function.BiConsumer; import java.util.function.Supplier; import static at.petrak.hexcasting.api.HexAPI.modLoc; diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java index 7c4769ad81..be1e5d6ed4 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexLootFunctions.java @@ -6,17 +6,11 @@ import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; import java.util.function.Supplier; -import static at.petrak.hexcasting.api.HexAPI.modLoc; - public class HexLootFunctions { private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.LOOT_FUNCTION_TYPE); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java index 60244e2da1..d5428d8b91 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexParticles.java @@ -9,16 +9,10 @@ import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Supplier; -import static at.petrak.hexcasting.api.HexAPI.modLoc; - public class HexParticles { private static final IXplatRegister> REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.PARTICLE_TYPE); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java index 297f1baa27..10bbe7f552 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexPotions.java @@ -3,21 +3,13 @@ import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.Holder; -import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.alchemy.Potions; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; - public class HexPotions { private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.POTION); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java index 2474799400..7383360e24 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexSounds.java @@ -4,13 +4,8 @@ import at.petrak.hexcasting.xplat.IXplatRegister; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.BiConsumer; - import static at.petrak.hexcasting.api.HexAPI.modLoc; public class HexSounds { diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java index a7a47689f5..27a48423be 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexStateIngredients.java @@ -1,6 +1,5 @@ package at.petrak.hexcasting.common.lib; -import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.recipe.ingredient.state.*; import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatRegister; @@ -9,7 +8,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; @@ -17,7 +15,6 @@ import java.util.List; import java.util.Random; -import java.util.function.BiConsumer; import java.util.function.Supplier; public class HexStateIngredients { From 204253db8b15a231f68ab2c477681e1529e85f83 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Mon, 27 Jul 2026 00:01:30 +0200 Subject: [PATCH 23/25] fix: IotaPredicates calling IotaType holders too early --- .../common/casting/arithmetic/BitwiseSetArithmetic.kt | 4 ++-- .../common/casting/arithmetic/BoolArithmetic.kt | 10 +++++----- .../common/casting/arithmetic/DoubleArithmetic.kt | 6 +++--- .../common/casting/arithmetic/Vec3Arithmetic.java | 7 ++++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt index 6dae33a5e2..98eb7a612b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BitwiseSetArithmetic.kt @@ -35,10 +35,10 @@ object BitwiseSetArithmetic : Arithmetic { else -> throw InvalidOperatorException("$pattern is not a valid operator in Arithmetic $this.") } - private fun make1(op: LongUnaryOperator): OperatorUnary = OperatorUnary(DoubleArithmetic.ACCEPTS) + private fun make1(op: LongUnaryOperator): OperatorUnary = OperatorUnary(DoubleArithmetic.ACCEPTS()) { i: Iota -> DoubleIota(op.applyAsLong(downcast(i, DOUBLE.get()).double.roundToLong()).toDouble()) } - private fun make2(op: LongBinaryOperator): OperatorBinary = OperatorBinary(DoubleArithmetic.ACCEPTS) + private fun make2(op: LongBinaryOperator): OperatorBinary = OperatorBinary(DoubleArithmetic.ACCEPTS()) { i: Iota, j: Iota -> DoubleIota( op.applyAsLong( downcast(i, DOUBLE.get()).double.roundToLong(), diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt index 316363e9cf..cdef231819 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/BoolArithmetic.kt @@ -44,19 +44,19 @@ object BoolArithmetic : Arithmetic { GREATER_EQ -> makeComp { x, y -> DoubleIota.tolerates(x, y) || x >= y } LESS_EQ -> makeComp { x, y -> DoubleIota.tolerates(x, y) || x <= y } NOT -> make1 { a -> !a } - ABS -> OperatorUnary(ALL_BOOLS) { i: Iota -> DoubleIota( if (Operator.downcast(i, BOOLEAN.get()).bool) 1.0 else 0.0 ) } + ABS -> OperatorUnary(ALL_BOOLS()) { i: Iota -> DoubleIota( if (Operator.downcast(i, BOOLEAN.get()).bool) 1.0 else 0.0 ) } else -> throw InvalidOperatorException("$pattern is not a valid operator in Arithmetic $this.") } - val ALL_BOOLS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(BOOLEAN.get())) + val ALL_BOOLS: ()->IotaMultiPredicate = { IotaMultiPredicate.all(IotaPredicate.ofType(BOOLEAN.get())) } private fun make1(op: BooleanUnaryOperator): OperatorUnary { - return OperatorUnary(ALL_BOOLS) { i: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool)) } + return OperatorUnary(ALL_BOOLS()) { i: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool)) } } private fun make2(op: BooleanBinaryOperator): OperatorBinary { - return OperatorBinary(ALL_BOOLS) { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool, Operator.downcast(j, BOOLEAN.get()).bool)) } + return OperatorBinary(ALL_BOOLS()) { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, BOOLEAN.get()).bool, Operator.downcast(j, BOOLEAN.get()).bool)) } } private fun makeComp(op: BiFunction): OperatorBinary { - return OperatorBinary(DoubleArithmetic.ACCEPTS) + return OperatorBinary(DoubleArithmetic.ACCEPTS()) { i: Iota, j: Iota -> BooleanIota(op.apply(Operator.downcast(i, DOUBLE.get()).double, Operator.downcast(j, DOUBLE.get()).double)) } } } \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt index bbea22dfde..d684bb5ee0 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/DoubleArithmetic.kt @@ -44,7 +44,7 @@ object DoubleArithmetic : Arithmetic { /** * An example of an IotaMultiPredicate, which returns true only if all arguments to the Operator are DoubleIotas. */ - val ACCEPTS: IotaMultiPredicate = IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE.get())) + val ACCEPTS: ()->IotaMultiPredicate = { IotaMultiPredicate.all(IotaPredicate.ofType(HexIotaTypes.DOUBLE.get())) } override fun arithName() = "double_math" @@ -74,9 +74,9 @@ object DoubleArithmetic : Arithmetic { } } - fun make1(op: DoubleUnaryOperator) = OperatorUnary(ACCEPTS) + fun make1(op: DoubleUnaryOperator) = OperatorUnary(ACCEPTS()) { i: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE.get()).double)) } - fun make2(op: DoubleBinaryOperator) = OperatorBinary(ACCEPTS) + fun make2(op: DoubleBinaryOperator) = OperatorBinary(ACCEPTS()) { i: Iota, j: Iota -> DoubleIota(op.applyAsDouble(Operator.downcast(i, HexIotaTypes.DOUBLE.get()).double, Operator.downcast(j, HexIotaTypes.DOUBLE.get()).double)) } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java index 5543854fe3..9e214a1311 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/casting/arithmetic/Vec3Arithmetic.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.function.BiFunction; import java.util.function.Function; +import java.util.function.Supplier; import static at.petrak.hexcasting.api.casting.arithmetic.operator.Operator.downcast; import static at.petrak.hexcasting.common.lib.hex.HexIotaTypes.DOUBLE; @@ -39,7 +40,7 @@ public enum Vec3Arithmetic implements Arithmetic { MOD ); - public static final IotaMultiPredicate ACCEPTS = IotaMultiPredicate.any(IotaPredicate.ofType(VEC3.get()), IotaPredicate.ofType(DOUBLE.get())); + public static final Supplier ACCEPTS = () -> IotaMultiPredicate.any(IotaPredicate.ofType(VEC3.get()), IotaPredicate.ofType(DOUBLE.get())); @Override public String arithName() { @@ -79,10 +80,10 @@ public Operator getOperator(HexPattern pattern) { throw new InvalidOperatorException(pattern + " is not a valid operator in Arithmetic " + this + "."); } public static OperatorUnary make1(Function op) { - return new OperatorUnary(ACCEPTS, i -> new Vec3Iota(op.apply(downcast(i, VEC3.get()).getVec3()))); + return new OperatorUnary(ACCEPTS.get(), i -> new Vec3Iota(op.apply(downcast(i, VEC3.get()).getVec3()))); } public static OperatorUnary make1Double(Function op) { - return new OperatorUnary(ACCEPTS, i -> new DoubleIota(op.apply(downcast(i, VEC3.get()).getVec3()))); + return new OperatorUnary(ACCEPTS.get(), i -> new DoubleIota(op.apply(downcast(i, VEC3.get()).getVec3()))); } public static OperatorVec3Delegating make2Fallback(HexPattern pattern) { return new OperatorVec3Delegating(null, pattern); From fb1188cb0c83bf8b5c9009fa23ce313f16e1255d Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Mon, 27 Jul 2026 01:23:55 +0200 Subject: [PATCH 24/25] fix: Stop lazily initializing registries on Fabric, this sometimes makes them get created too late --- .../fabric/xplat/FabricXplatImpl.java | 65 +++++++------------ 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java index 33ac7930fe..fbad939683 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java @@ -373,101 +373,84 @@ public String getModName(String namespace) { return namespace; } - private static final Supplier> ACTION_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new MappedRegistry<>( + private static final Registry ACTION_REGISTRY = FabricRegistryBuilder.from(new MappedRegistry<>( HexRegistries.ACTION, Lifecycle.stable())) - .buildAndRegister() - ); - private static final Supplier>> SPECIAL_HANDLER_REGISTRY = - Suppliers.memoize(() -> - FabricRegistryBuilder.from(new MappedRegistry<>( + .buildAndRegister(); + private static final Registry> SPECIAL_HANDLER_REGISTRY = FabricRegistryBuilder.from(new MappedRegistry<>( HexRegistries.SPECIAL_HANDLER, Lifecycle.stable())) - .buildAndRegister() - ); - private static final Supplier>> IOTA_TYPE_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new MappedRegistry<>( + .buildAndRegister(); + private static final Registry> IOTA_TYPE_REGISTRY = FabricRegistryBuilder.from(new MappedRegistry<>( HexRegistries.IOTA_TYPE, Lifecycle.stable(), false)) - .buildAndRegister() - ); + .buildAndRegister(); - private static final Supplier> ARITHMETIC_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new MappedRegistry<>( + private static final Registry ARITHMETIC_REGISTRY = FabricRegistryBuilder.from(new MappedRegistry<>( HexRegistries.ARITHMETIC, Lifecycle.stable())) - .buildAndRegister() - ); + .buildAndRegister(); - private static final Supplier>> CONTINUATION_TYPE_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( + private static final Registry> CONTINUATION_TYPE_REGISTRY = FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( HexAPI.MOD_ID + ":end", HexRegistries.CONTINUATION_TYPE, Lifecycle.stable(), false)) - .buildAndRegister() - ); + .buildAndRegister(); - private static final Supplier> EVAL_SOUNDS_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( + private static final Registry EVAL_SOUNDS_REGISTRY = FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( HexAPI.MOD_ID + ":nothing", HexRegistries.EVAL_SOUND, Lifecycle.stable(), false)) - .buildAndRegister() - ); + .buildAndRegister(); - private static final Supplier>> STATE_INGREDIENT_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( + private static final Registry> STATE_INGREDIENT_REGISTRY = FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( HexAPI.MOD_ID + ":none", HexRegistries.STATE_INGREDIENT, Lifecycle.stable(), false)) - .buildAndRegister() - ); + .buildAndRegister(); - private static final Supplier>> BRAINSWEEPEE_INGREDIENT_REGISTRY = Suppliers.memoize(() -> - FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( + private static final Registry> BRAINSWEEPEE_INGREDIENT_REGISTRY = FabricRegistryBuilder.from(new DefaultedMappedRegistry<>( HexAPI.MOD_ID + ":none", HexRegistries.BRAINSWEEPEE_INGREDIENT, Lifecycle.stable(), false)) - .buildAndRegister() - ); + .buildAndRegister(); @Override public Registry getActionRegistry() { - return ACTION_REGISTRY.get(); + return ACTION_REGISTRY; } @Override public Registry> getSpecialHandlerRegistry() { - return SPECIAL_HANDLER_REGISTRY.get(); + return SPECIAL_HANDLER_REGISTRY; } @Override public Registry> getIotaTypeRegistry() { - return IOTA_TYPE_REGISTRY.get(); + return IOTA_TYPE_REGISTRY; } @Override public Registry getArithmeticRegistry() { - return ARITHMETIC_REGISTRY.get(); + return ARITHMETIC_REGISTRY; } @Override public Registry> getContinuationTypeRegistry() { - return CONTINUATION_TYPE_REGISTRY.get(); + return CONTINUATION_TYPE_REGISTRY; } @Override public Registry getEvalSoundRegistry() { - return EVAL_SOUNDS_REGISTRY.get(); + return EVAL_SOUNDS_REGISTRY; } @Override public Registry> getStateIngredientRegistry() { - return STATE_INGREDIENT_REGISTRY.get(); + return STATE_INGREDIENT_REGISTRY; } @Override public Registry> getBrainsweepeeIngredientRegistry() { - return BRAINSWEEPEE_INGREDIENT_REGISTRY.get(); + return BRAINSWEEPEE_INGREDIENT_REGISTRY; } @Override From 93641742305205ea1241ef43a64b16298d890b84 Mon Sep 17 00:00:00 2001 From: Florian Meyer Date: Mon, 27 Jul 2026 01:41:11 +0200 Subject: [PATCH 25/25] chore: cleanup unused field --- .../java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java index d2a687fd89..1d72eb8298 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/hex/HexIotaTypes.java @@ -30,8 +30,6 @@ public static void register() { REGISTER.registerAll(); } - private static final Map> TYPES = new LinkedHashMap<>(); - public static final Supplier> NULL = REGISTER.register("null", () -> NullIota.TYPE); public static final Supplier> DOUBLE = REGISTER.register("double", () -> DoubleIota.TYPE); public static final Supplier> BOOLEAN = REGISTER.register("boolean", () -> BooleanIota.TYPE);