rename to SimpleRegistry

This commit is contained in:
TropheusJ 2025-02-15 19:44:59 -05:00
parent 51b3860f21
commit 3c9bfef30e
17 changed files with 57 additions and 56 deletions

View file

@ -2,7 +2,7 @@ package com.simibubi.create;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.content.contraptions.behaviour.DoorMovingInteraction;
import com.simibubi.create.content.contraptions.behaviour.LeverMovingInteraction;
import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour;
@ -15,7 +15,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
public class AllInteractionBehaviours {
public static final AttachedRegistry<Block, MovingInteractionBehaviour> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<Block, MovingInteractionBehaviour> REGISTRY = SimpleRegistry.create();
@Nullable
public static MovingInteractionBehaviour getBehaviour(BlockState state) {
@ -32,8 +32,8 @@ public class AllInteractionBehaviours {
static void registerDefaults() {
REGISTRY.register(Blocks.LEVER, new LeverMovingInteraction());
REGISTRY.registerProvider(AttachedRegistry.Provider.forBlockTag(BlockTags.WOODEN_DOORS, new DoorMovingInteraction()));
REGISTRY.registerProvider(AttachedRegistry.Provider.forBlockTag(BlockTags.WOODEN_TRAPDOORS, new TrapdoorMovingInteraction()));
REGISTRY.registerProvider(AttachedRegistry.Provider.forBlockTag(BlockTags.FENCE_GATES, new TrapdoorMovingInteraction()));
REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_DOORS, new DoorMovingInteraction()));
REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_TRAPDOORS, new TrapdoorMovingInteraction()));
REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.FENCE_GATES, new TrapdoorMovingInteraction()));
}
}

View file

@ -2,7 +2,7 @@ package com.simibubi.create;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.content.contraptions.behaviour.BellMovementBehaviour;
import com.simibubi.create.content.contraptions.behaviour.CampfireMovementBehaviour;
import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour;
@ -15,7 +15,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
public class AllMovementBehaviours {
public static final AttachedRegistry<Block, MovementBehaviour> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<Block, MovementBehaviour> REGISTRY = SimpleRegistry.create();
@Nullable
public static MovementBehaviour getBehaviour(BlockState state) {

View file

@ -3,7 +3,7 @@ package com.simibubi.create.api.contraption.storage;
import com.simibubi.create.Create;
import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType;
import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.impl.contraption.storage.MountedStorageTypeRegistryImpl;
import com.tterrag.registrate.builders.BlockBuilder;
import com.tterrag.registrate.util.entry.RegistryEntry;
@ -23,8 +23,8 @@ public class MountedStorageTypeRegistries {
Create.asResource("mounted_fluid_storage_type")
);
public static final AttachedRegistry<Block, MountedItemStorageType<?>> ITEM_STORAGES = MountedStorageTypeRegistryImpl.ITEM_STORAGES;
public static final AttachedRegistry<Block, MountedFluidStorageType<?>> FLUID_STORAGES = MountedStorageTypeRegistryImpl.FLUID_STORAGES;
public static final SimpleRegistry<Block, MountedItemStorageType<?>> ITEM_STORAGES = MountedStorageTypeRegistryImpl.ITEM_STORAGES;
public static final SimpleRegistry<Block, MountedFluidStorageType<?>> FLUID_STORAGES = MountedStorageTypeRegistryImpl.FLUID_STORAGES;
/**
* @throws NullPointerException if called before registry registration

View file

@ -2,7 +2,7 @@ package com.simibubi.create.api.contraption.storage.fluid.registrate;
import com.simibubi.create.api.contraption.storage.MountedStorageTypeRegistries;
import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.tterrag.registrate.AbstractRegistrate;
import com.tterrag.registrate.builders.AbstractBuilder;
import com.tterrag.registrate.builders.BuilderCallback;
@ -25,7 +25,7 @@ public class MountedFluidStorageTypeBuilder<T extends MountedFluidStorageType<?>
}
public MountedFluidStorageTypeBuilder<T, P> registerTo(TagKey<Block> tag) {
MountedStorageTypeRegistries.FLUID_STORAGES.registerProvider(AttachedRegistry.Provider.forBlockTag(tag, this.type));
MountedStorageTypeRegistries.FLUID_STORAGES.registerProvider(SimpleRegistry.Provider.forBlockTag(tag, this.type));
return this;
}

View file

@ -2,7 +2,7 @@ package com.simibubi.create.api.contraption.storage.item.registrate;
import com.simibubi.create.api.contraption.storage.MountedStorageTypeRegistries;
import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.tterrag.registrate.AbstractRegistrate;
import com.tterrag.registrate.builders.AbstractBuilder;
import com.tterrag.registrate.builders.BuilderCallback;
@ -25,7 +25,7 @@ public class MountedItemStorageTypeBuilder<T extends MountedItemStorageType<?>,
}
public MountedItemStorageTypeBuilder<T, P> registerTo(TagKey<Block> tag) {
MountedStorageTypeRegistries.ITEM_STORAGES.registerProvider(AttachedRegistry.Provider.forBlockTag(tag, this.type));
MountedStorageTypeRegistries.ITEM_STORAGES.registerProvider(SimpleRegistry.Provider.forBlockTag(tag, this.type));
return this;
}

View file

@ -1,6 +1,6 @@
package com.simibubi.create.api.contraption.transformable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.content.contraptions.StructureTransform;
import net.minecraft.world.level.block.Block;
@ -13,8 +13,8 @@ import net.minecraft.world.level.block.state.BlockState;
* These interfaces are alternatives to the {@link ITransformableBlock} and {@link ITransformableBlockEntity} interfaces.
*/
public class MovedBlockTransformerRegistries {
public static final AttachedRegistry<Block, BlockTransformer> BLOCK_TRANSFORMERS = AttachedRegistry.create();
public static final AttachedRegistry<BlockEntityType<?>, BlockEntityTransformer> BLOCK_ENTITY_TRANSFORMERS = AttachedRegistry.create();
public static final SimpleRegistry<Block, BlockTransformer> BLOCK_TRANSFORMERS = SimpleRegistry.create();
public static final SimpleRegistry<BlockEntityType<?>, BlockEntityTransformer> BLOCK_ENTITY_TRANSFORMERS = SimpleRegistry.create();
@FunctionalInterface
public interface BlockTransformer {

View file

@ -4,7 +4,7 @@ import java.util.function.Function;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.impl.registry.AttachedRegistryImpl;
import com.simibubi.create.impl.registry.SimpleRegistryImpl;
import com.simibubi.create.impl.registry.TagProviderImpl;
import net.minecraft.core.Holder;
@ -13,12 +13,13 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
/**
* A mapping of registered objects to something else.
* A simple registry mapping between objects. Provides simple registration functionality, as well as lazy providers.
* This class is thread-safe, and may be safely used during parallel mod init.
*/
public interface AttachedRegistry<K, V> {
public interface SimpleRegistry<K, V> {
/**
* Register an association between a key and a value.
* Direct registrations here always take priority over providers.
* @throws IllegalArgumentException if the object already has an associated value
*/
void register(K object, V value);
@ -41,8 +42,8 @@ public interface AttachedRegistry<K, V> {
@Nullable
V get(K object);
static <K, V> AttachedRegistry<K, V> create() {
return new AttachedRegistryImpl<>();
static <K, V> SimpleRegistry<K, V> create() {
return new SimpleRegistryImpl<>();
}
/**
@ -50,7 +51,7 @@ public interface AttachedRegistry<K, V> {
* associated value, all providers will be queried in reverse-registration order.
* <p>
* The values returned by providers are cached so that repeated queries always return the same value.
* To invalidate the cache of a provider, call {@link AttachedRegistry#invalidateProvider(Provider)}.
* To invalidate the cache of a provider, call {@link SimpleRegistry#invalidateProvider(Provider)}.
*/
@FunctionalInterface
interface Provider<K, V> {
@ -58,11 +59,11 @@ public interface AttachedRegistry<K, V> {
V get(K object);
/**
* Called by the AttachedRegistry this provider is registered to after it's registered.
* Called by the SimpleRegistry this provider is registered to after it's registered.
* This is useful for behavior that should only happen if a provider is actually registered,
* such as registering event listeners.
*/
default void onRegister(AttachedRegistry<K, V> registry) {
default void onRegister(SimpleRegistry<K, V> registry) {
}
/**

View file

@ -1,6 +1,6 @@
package com.simibubi.create.api.schematic.nbt;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.entity.BlockEntity;
@ -14,7 +14,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
* This is provided as an alternative to {@link IPartialSafeNBT}.
*/
public class SafeNbtWriterRegistry {
public static final AttachedRegistry<BlockEntityType<?>, SafeNbtWriter> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<BlockEntityType<?>, SafeNbtWriter> REGISTRY = SimpleRegistry.create();
@FunctionalInterface
public interface SafeNbtWriter {

View file

@ -2,7 +2,7 @@ package com.simibubi.create.api.schematic.requirement;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import net.minecraft.world.entity.Entity;
@ -24,9 +24,9 @@ import net.minecraft.world.level.block.state.BlockState;
* </ul>
*/
public class SchematicRequirementRegistries {
public static final AttachedRegistry<Block, BlockRequirement> BLOCKS = AttachedRegistry.create();
public static final AttachedRegistry<BlockEntityType<?>, BlockEntityRequirement> BLOCK_ENTITIES = AttachedRegistry.create();
public static final AttachedRegistry<EntityType<?>, EntityRequirement> ENTITIES = AttachedRegistry.create();
public static final SimpleRegistry<Block, BlockRequirement> BLOCKS = SimpleRegistry.create();
public static final SimpleRegistry<BlockEntityType<?>, BlockEntityRequirement> BLOCK_ENTITIES = SimpleRegistry.create();
public static final SimpleRegistry<EntityType<?>, EntityRequirement> ENTITIES = SimpleRegistry.create();
@FunctionalInterface
public interface BlockRequirement {

View file

@ -5,7 +5,7 @@ import java.util.function.Supplier;
import javax.annotation.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.minecraft.world.level.block.Block;
@ -17,7 +17,7 @@ import net.minecraftforge.common.extensions.IForgeBlock;
public enum ContraptionMovementSetting {
MOVABLE, NO_PICKUP, UNMOVABLE;
public static final AttachedRegistry<Block, Supplier<ContraptionMovementSetting>> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<Block, Supplier<ContraptionMovementSetting>> REGISTRY = SimpleRegistry.create();
@Nullable
public static ContraptionMovementSetting get(Block block) {

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.fluids.tank;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.utility.BlockHelper;
@ -16,7 +16,7 @@ public class BoilerHeaters {
public static final int PASSIVE_HEAT = 0;
public static final int NO_HEAT = -1;
public static final AttachedRegistry<Block, Heater> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<Block, Heater> REGISTRY = SimpleRegistry.create();
public static final Heater PASSIVE_HEATER = (level, pos, state) -> BlockHelper.isNotUnheated(state) ? PASSIVE_HEAT : NO_HEAT;
@ -44,7 +44,7 @@ public class BoilerHeaters {
return PASSIVE_HEAT;
});
REGISTRY.registerProvider(AttachedRegistry.Provider.forBlockTag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag, PASSIVE_HEATER));
REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag, PASSIVE_HEATER));
}
@FunctionalInterface

View file

@ -9,7 +9,7 @@ import java.util.Map;
import javax.annotation.Nullable;
import com.simibubi.create.Create;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.compat.Mods;
import com.simibubi.create.content.redstone.displayLink.source.ComputerDisplaySource;
import com.simibubi.create.content.redstone.displayLink.source.DeathCounterDisplaySource;
@ -38,11 +38,11 @@ import net.minecraftforge.registries.ForgeRegistries;
public class AllDisplayBehaviours {
public static final Map<ResourceLocation, DisplayBehaviour> GATHERER_BEHAVIOURS = new HashMap<>();
private static final AttachedRegistry<Block, List<DisplaySource>> SOURCES_BY_BLOCK = AttachedRegistry.create();
private static final AttachedRegistry<BlockEntityType<?>, List<DisplaySource>> SOURCES_BY_BLOCK_ENTITY = AttachedRegistry.create();
private static final SimpleRegistry<Block, List<DisplaySource>> SOURCES_BY_BLOCK = SimpleRegistry.create();
private static final SimpleRegistry<BlockEntityType<?>, List<DisplaySource>> SOURCES_BY_BLOCK_ENTITY = SimpleRegistry.create();
private static final AttachedRegistry<Block, DisplayTarget> TARGETS_BY_BLOCK = AttachedRegistry.create();
private static final AttachedRegistry<BlockEntityType<?>, DisplayTarget> TARGETS_BY_BLOCK_ENTITY = AttachedRegistry.create();
private static final SimpleRegistry<Block, DisplayTarget> TARGETS_BY_BLOCK = SimpleRegistry.create();
private static final SimpleRegistry<BlockEntityType<?>, DisplayTarget> TARGETS_BY_BLOCK_ENTITY = SimpleRegistry.create();
public static DisplayBehaviour register(ResourceLocation id, DisplayBehaviour behaviour) {
behaviour.id = id;

View file

@ -5,7 +5,7 @@ import java.util.function.Function;
import java.util.function.UnaryOperator;
import com.simibubi.create.Create;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import com.simibubi.create.compat.Mods;
import com.simibubi.create.compat.betterend.BetterEndPortalCompat;
import com.simibubi.create.content.contraptions.glue.SuperGlueEntity;
@ -49,7 +49,7 @@ public class AllPortalTracks {
/**
* Registry mapping portal blocks to their respective {@link PortalTrackProvider}s.
*/
public static final AttachedRegistry<Block, PortalTrackProvider> REGISTRY = AttachedRegistry.create();
public static final SimpleRegistry<Block, PortalTrackProvider> REGISTRY = SimpleRegistry.create();
/**
* Registers a portal track integration for a given block identified by its {@link ResourceLocation}, if it exists.

View file

@ -2,7 +2,7 @@ package com.simibubi.create.foundation.item;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import net.minecraft.world.item.Item;
@ -10,7 +10,7 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@FunctionalInterface
public interface TooltipModifier {
AttachedRegistry<Item, TooltipModifier> REGISTRY = AttachedRegistry.create();
SimpleRegistry<Item, TooltipModifier> REGISTRY = SimpleRegistry.create();
TooltipModifier EMPTY = new TooltipModifier() {
@Override

View file

@ -10,7 +10,7 @@ import com.simibubi.create.AllTags;
import com.simibubi.create.api.contraption.storage.MountedStorageTypeRegistries;
import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType;
import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import net.minecraft.Util;
import net.minecraft.world.level.block.Block;
@ -26,12 +26,12 @@ import net.minecraftforge.registries.RegistryBuilder;
@ApiStatus.Internal
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class MountedStorageTypeRegistryImpl {
public static final AttachedRegistry<Block, MountedItemStorageType<?>> ITEM_STORAGES = Util.make(() -> {
AttachedRegistry<Block, MountedItemStorageType<?>> registry = AttachedRegistry.create();
public static final SimpleRegistry<Block, MountedItemStorageType<?>> ITEM_STORAGES = Util.make(() -> {
SimpleRegistry<Block, MountedItemStorageType<?>> registry = SimpleRegistry.create();
registry.registerProvider(ItemFallbackProvider.INSTANCE);
return registry;
});
public static final AttachedRegistry<Block, MountedFluidStorageType<?>> FLUID_STORAGES = AttachedRegistry.create();
public static final SimpleRegistry<Block, MountedFluidStorageType<?>> FLUID_STORAGES = SimpleRegistry.create();
private static IForgeRegistry<MountedItemStorageType<?>> itemsRegistry;
private static IForgeRegistry<MountedFluidStorageType<?>> fluidsRegistry;
@ -58,7 +58,7 @@ public class MountedStorageTypeRegistryImpl {
);
}
private enum ItemFallbackProvider implements AttachedRegistry.Provider<Block, MountedItemStorageType<?>> {
private enum ItemFallbackProvider implements SimpleRegistry.Provider<Block, MountedItemStorageType<?>> {
INSTANCE;
@Override
@ -70,7 +70,7 @@ public class MountedStorageTypeRegistryImpl {
}
@Override
public void onRegister(AttachedRegistry<Block, MountedItemStorageType<?>> registry) {
public void onRegister(SimpleRegistry<Block, MountedItemStorageType<?>> registry) {
MinecraftForge.EVENT_BUS.addListener((TagsUpdatedEvent event) -> {
if (event.shouldUpdateStaticData()) {
registry.invalidateProvider(this);

View file

@ -10,10 +10,10 @@ import java.util.Set;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
// methods are synchronized since registrations can happen during parallel mod loading
public class AttachedRegistryImpl<K, V> implements AttachedRegistry<K, V> {
public class SimpleRegistryImpl<K, V> implements SimpleRegistry<K, V> {
private static final Object nullMarker = new Object();
private final Map<K, V> registrations = new IdentityHashMap<>();

View file

@ -4,7 +4,7 @@ import java.util.function.Function;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.api.registry.AttachedRegistry;
import com.simibubi.create.api.registry.SimpleRegistry;
import net.minecraft.core.Holder;
import net.minecraft.tags.TagKey;
@ -12,7 +12,7 @@ import net.minecraft.tags.TagKey;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TagsUpdatedEvent;
public class TagProviderImpl<K, V> implements AttachedRegistry.Provider<K, V> {
public class TagProviderImpl<K, V> implements SimpleRegistry.Provider<K, V> {
private final TagKey<K> tag;
private final Function<K, Holder<K>> holderGetter;
private final V value;
@ -31,7 +31,7 @@ public class TagProviderImpl<K, V> implements AttachedRegistry.Provider<K, V> {
}
@Override
public void onRegister(AttachedRegistry<K, V> registry) {
public void onRegister(SimpleRegistry<K, V> registry) {
MinecraftForge.EVENT_BUS.addListener((TagsUpdatedEvent event) -> {
if (event.shouldUpdateStaticData()) {
registry.invalidateProvider(this);