From 4af57bf48b72c95ccffd2044d0524890a108860b Mon Sep 17 00:00:00 2001 From: UnRealDinnerbone Date: Mon, 12 Aug 2024 20:34:19 -0500 Subject: [PATCH] Holders go brrrrr --- CHANGELOG.md | 4 +- .../api/registry/RegistryEntry.java | 37 ++++++++++++++++++- .../platform/FabricPlatformHelper.java | 4 +- gradle.properties | 2 +- .../trenzalore/TrenzaloreNeo.java | 1 + .../trenzalore/TrenzaloreNeoRegistry.java | 15 +------- .../platform/NeoPlatformHelper.java | 9 ++++- 7 files changed, 53 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c90f74a..b07f8db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,3 @@ -### 6.1.0 +### 6.1.1 -- Update to 1.21.1 \ No newline at end of file +- Pass Holder to Support Atrributes \ No newline at end of file diff --git a/common/src/main/java/com/unrealdinnerbone/trenzalore/api/registry/RegistryEntry.java b/common/src/main/java/com/unrealdinnerbone/trenzalore/api/registry/RegistryEntry.java index 49d3969..b9be97c 100644 --- a/common/src/main/java/com/unrealdinnerbone/trenzalore/api/registry/RegistryEntry.java +++ b/common/src/main/java/com/unrealdinnerbone/trenzalore/api/registry/RegistryEntry.java @@ -1,11 +1,46 @@ package com.unrealdinnerbone.trenzalore.api.registry; +import com.mojang.datafixers.util.Either; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderOwner; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; + +import java.util.Optional; +import java.util.function.Predicate; import java.util.function.Supplier; +import java.util.stream.Stream; + +public class RegistryEntry implements Supplier { + + private final String name; + private final Supplier entry; + private Holder holder; + + public RegistryEntry(String name, Supplier entry) { + this.name = name; + this.entry = entry; + } + + public void setHolder(Holder register) { + this.holder = (Holder) register; + } -public record RegistryEntry(String name, Supplier entry) implements Supplier { + public Holder getHolder() { + return holder; + } @Override public T get() { return entry.get(); } + + public String name() { + return name; + } + + public Supplier entry() { + return entry; + } } diff --git a/fabric/src/main/java/com/unrealdinnerbone/trenzalore/platform/FabricPlatformHelper.java b/fabric/src/main/java/com/unrealdinnerbone/trenzalore/platform/FabricPlatformHelper.java index cefbdb2..48ab97b 100644 --- a/fabric/src/main/java/com/unrealdinnerbone/trenzalore/platform/FabricPlatformHelper.java +++ b/fabric/src/main/java/com/unrealdinnerbone/trenzalore/platform/FabricPlatformHelper.java @@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; @@ -55,7 +56,8 @@ public void registryRegistryObjects(String modId, RegistryObjects registr Registry registry = (Registry) BuiltInRegistries.REGISTRY.get(registryKey.location()); for (RegistryEntry object : registryObjects.objects()) { ResourceLocation id = RLUtils.rl(modId, object.name()); - Registry.register(registry, id, object.get()); + T register = Registry.register(registry, id, object.get()); + object.setHolder(Holder.direct(register)); } } diff --git a/gradle.properties b/gradle.properties index 09ac6b9..9fb9a7f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Project -mod_version=6.1.0 +mod_version=6.1.1 maven_group=com.unrealdinnerbone mod_name=Trenzalore mod_author=UnRealDinnerbone diff --git a/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeo.java b/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeo.java index 0073e9a..487a23d 100644 --- a/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeo.java +++ b/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeo.java @@ -4,6 +4,7 @@ import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; +import net.neoforged.neoforge.event.entity.EntityAttributeModificationEvent; @Mod(Trenzalore.MOD_ID) public class TrenzaloreNeo { diff --git a/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeoRegistry.java b/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeoRegistry.java index d225592..fed3097 100644 --- a/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeoRegistry.java +++ b/neo/src/main/java/com/unrealdinnerbone/trenzalore/TrenzaloreNeoRegistry.java @@ -1,35 +1,24 @@ package com.unrealdinnerbone.trenzalore; -import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.PrimitiveCodec; import com.unrealdinnerbone.trenzalore.api.platform.services.IRegistry; import com.unrealdinnerbone.trenzalore.api.registry.Regeneration; import com.unrealdinnerbone.trenzalore.api.registry.RegistryEntry; import com.unrealdinnerbone.trenzalore.api.registry.RegistryObjects; import com.unrealdinnerbone.trenzalore.events.AddItemModifier; import com.unrealdinnerbone.trenzalore.events.ReplaceItemModifier; -import net.minecraft.core.Registry; -import net.minecraft.core.component.DataComponentType; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BeehiveBlockEntity; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.fml.loading.FMLLoader; -import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.loot.IGlobalLootModifier; import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.List; -import java.util.function.UnaryOperator; public class TrenzaloreNeoRegistry implements IRegistry { + private static final RegistryObjects> GLOBAL_LOOT_MODIFIERS = Regeneration.create(NeoForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS); + public static final RegistryEntry> SIMPLE_LOOT_MODIFIER = GLOBAL_LOOT_MODIFIERS.register("replace", () -> ReplaceItemModifier.CODEC); public static final RegistryEntry> ADD_ITEM_MODIFIER = GLOBAL_LOOT_MODIFIERS.register("add", () -> AddItemModifier.CODEC); - @Override public List> getRegistryObjects() { return List.of(GLOBAL_LOOT_MODIFIERS); diff --git a/neo/src/main/java/com/unrealdinnerbone/trenzalore/platform/NeoPlatformHelper.java b/neo/src/main/java/com/unrealdinnerbone/trenzalore/platform/NeoPlatformHelper.java index 381f100..c78081e 100644 --- a/neo/src/main/java/com/unrealdinnerbone/trenzalore/platform/NeoPlatformHelper.java +++ b/neo/src/main/java/com/unrealdinnerbone/trenzalore/platform/NeoPlatformHelper.java @@ -1,13 +1,16 @@ package com.unrealdinnerbone.trenzalore.platform; import com.unrealdinnerbone.trenzalore.api.platform.services.IPlatformHelper; +import com.unrealdinnerbone.trenzalore.api.registry.RegistryEntry; import com.unrealdinnerbone.trenzalore.api.registry.RegistryObjects; +import net.minecraft.core.Holder; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLPaths; +import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import org.jetbrains.annotations.ApiStatus; @@ -41,7 +44,10 @@ public boolean isModLoaded(String modId) { @Override public void registryRegistryObjects(String modId, RegistryObjects registryObjects) { DeferredRegister deferredRegister = DeferredRegister.create(registryObjects.registryKey(), modId); - registryObjects.objects().forEach(registryEntry -> deferredRegister.register(registryEntry.name(), registryEntry.entry())); + registryObjects.objects().forEach(registryEntry -> { + Holder register = deferredRegister.register(registryEntry.name(), registryEntry.entry()); + registryEntry.setHolder(register); + }); IEventBus modEventBus = ModList.get().getModContainerById(modId).orElseThrow(() -> new IllegalArgumentException("Mod Not Found: " + modId)).getEventBus(); if(modEventBus == null) { throw new IllegalArgumentException("Mod Does not have and event bus: " + modId); @@ -49,6 +55,7 @@ public void registryRegistryObjects(String modId, RegistryObjects registr deferredRegister.register(modEventBus); } + @Override public void addItemToCreativeTab(ResourceKey tabResourceKey, List> item) { if(CREATIVE_TAB_MAP.containsKey(tabResourceKey)) {