Skip to content

Commit

Permalink
Holders go brrrrr
Browse files Browse the repository at this point in the history
  • Loading branch information
UnRealDinnerbone committed Aug 13, 2024
1 parent 50c9a94 commit 4af57bf
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 19 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
### 6.1.0
### 6.1.1

- Update to 1.21.1
- Pass Holder to Support Atrributes
Original file line number Diff line number Diff line change
@@ -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<T> implements Supplier<T> {

private final String name;
private final Supplier<T> entry;
private Holder<T> holder;

public RegistryEntry(String name, Supplier<T> entry) {
this.name = name;
this.entry = entry;
}

public <B> void setHolder(Holder<B> register) {
this.holder = (Holder<T>) register;
}

public record RegistryEntry<T>(String name, Supplier<T> entry) implements Supplier<T> {
public Holder<T> getHolder() {
return holder;
}

@Override
public T get() {
return entry.get();
}

public String name() {
return name;
}

public Supplier<T> entry() {
return entry;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -55,7 +56,8 @@ public <T> void registryRegistryObjects(String modId, RegistryObjects<T> registr
Registry<T> registry = (Registry<T>) BuiltInRegistries.REGISTRY.get(registryKey.location());
for (RegistryEntry<? extends T> 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));
}
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<MapCodec<? extends IGlobalLootModifier>> GLOBAL_LOOT_MODIFIERS = Regeneration.create(NeoForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS);

public static final RegistryEntry<MapCodec<? extends IGlobalLootModifier>> SIMPLE_LOOT_MODIFIER = GLOBAL_LOOT_MODIFIERS.register("replace", () -> ReplaceItemModifier.CODEC);
public static final RegistryEntry<MapCodec<? extends IGlobalLootModifier>> ADD_ITEM_MODIFIER = GLOBAL_LOOT_MODIFIERS.register("add", () -> AddItemModifier.CODEC);


@Override
public List<RegistryObjects<?>> getRegistryObjects() {
return List.of(GLOBAL_LOOT_MODIFIERS);
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -41,14 +44,18 @@ public boolean isModLoaded(String modId) {
@Override
public <T> void registryRegistryObjects(String modId, RegistryObjects<T> registryObjects) {
DeferredRegister<T> deferredRegister = DeferredRegister.create(registryObjects.registryKey(), modId);
registryObjects.objects().forEach(registryEntry -> deferredRegister.register(registryEntry.name(), registryEntry.entry()));
registryObjects.objects().forEach(registryEntry -> {
Holder<T> 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);
}
deferredRegister.register(modEventBus);
}


@Override
public void addItemToCreativeTab(ResourceKey<CreativeModeTab> tabResourceKey, List<Supplier<? extends Item>> item) {
if(CREATIVE_TAB_MAP.containsKey(tabResourceKey)) {
Expand Down

0 comments on commit 4af57bf

Please sign in to comment.