Make ContraptionType API and a registry (#14)

* I cast spell of net.minecraft.core.Registry
- make ContraptionType a registry
- moved some behavior that checked == to tags

* use holder for ID

* run data

---------

Co-authored-by: IThundxr <me@ithundxr.dev>
This commit is contained in:
TropheusJ 2025-02-20 19:06:39 -05:00 committed by GitHub
parent 5d75785f9d
commit 84cc8086e8
Failed to generate hash of commit
25 changed files with 609 additions and 455 deletions

View file

@ -0,0 +1,3 @@
// 1.20.1 2025-02-20T18:50:30.47100651 Create's Contraption Type Tags
700982b6682ea583e7f08e44198af1b3219531d5 data/create/tags/create/contraption_type/opens_controls.json
08384ffb27c43caadbd36c2d390ed9af1c357084 data/create/tags/create/contraption_type/requires_vehicle_for_render.json

View file

@ -0,0 +1,3 @@
{
"values": []
}

View file

@ -0,0 +1,5 @@
{
"values": [
"create:carriage"
]
}

View file

@ -0,0 +1,5 @@
{
"values": [
"create:mounted"
]
}

View file

@ -0,0 +1,50 @@
package com.simibubi.create;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.api.registry.CreateRegistries;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.bearing.BearingContraption;
import com.simibubi.create.content.contraptions.bearing.ClockworkContraption;
import com.simibubi.create.content.contraptions.bearing.StabilizedContraption;
import com.simibubi.create.content.contraptions.elevator.ElevatorContraption;
import com.simibubi.create.content.contraptions.gantry.GantryContraption;
import com.simibubi.create.content.contraptions.mounted.MountedContraption;
import com.simibubi.create.content.contraptions.piston.PistonContraption;
import com.simibubi.create.content.contraptions.pulley.PulleyContraption;
import com.simibubi.create.content.trains.entity.CarriageContraption;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
public class AllContraptionTypes {
private static final DeferredRegister<ContraptionType> REGISTER = DeferredRegister.create(CreateRegistries.CONTRAPTION_TYPE, Create.ID);
public static final Map<String, ContraptionType> BY_LEGACY_NAME = new HashMap<>();
public static final RegistryObject<ContraptionType> PISTON = register("piston", PistonContraption::new);
public static final RegistryObject<ContraptionType> BEARING = register("bearing", BearingContraption::new);
public static final RegistryObject<ContraptionType> PULLEY = register("pulley", PulleyContraption::new);
public static final RegistryObject<ContraptionType> CLOCKWORK = register("clockwork", ClockworkContraption::new);
public static final RegistryObject<ContraptionType> MOUNTED = register("mounted", MountedContraption::new);
public static final RegistryObject<ContraptionType> STABILIZED = register("stabilized", StabilizedContraption::new);
public static final RegistryObject<ContraptionType> GANTRY = register("gantry", GantryContraption::new);
public static final RegistryObject<ContraptionType> CARRIAGE = register("carriage", CarriageContraption::new);
public static final RegistryObject<ContraptionType> ELEVATOR = register("elevator", ElevatorContraption::new);
private static RegistryObject<ContraptionType> register(String name, Supplier<? extends Contraption> factory) {
return REGISTER.register(name, () -> {
ContraptionType type = new ContraptionType(factory);
BY_LEGACY_NAME.put(name, type);
return type;
});
}
public static void register(IEventBus modEventBus) {
REGISTER.register(modEventBus);
}
}

View file

@ -8,6 +8,9 @@ import static com.simibubi.create.AllTags.NameSpace.TIC;
import java.util.Collections;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.api.registry.CreateRegistries;
import net.createmod.catnip.lang.Lang;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
@ -399,11 +402,33 @@ public class AllTags {
}
}
public enum AllContraptionTypeTags {
OPENS_CONTROLS,
REQUIRES_VEHICLE_FOR_RENDER;
public final TagKey<ContraptionType> tag;
public final boolean alwaysDatagen;
AllContraptionTypeTags() {
ResourceLocation tagId = Create.asResource(Lang.asId(this.name()));
this.tag = TagKey.create(CreateRegistries.CONTRAPTION_TYPE, tagId);
this.alwaysDatagen = true;
}
public boolean matches(ContraptionType type) {
return type.is(this.tag);
}
private static void init() {
}
}
public static void init() {
AllBlockTags.init();
AllItemTags.init();
AllFluidTags.init();
AllEntityTags.init();
AllRecipeSerializerTags.init();
AllContraptionTypeTags.init();
}
}

View file

@ -135,6 +135,7 @@ public class Create {
AllArmInteractionPointTypes.register(modEventBus);
AllFanProcessingTypes.register(modEventBus);
AllItemAttributeTypes.register(modEventBus);
AllContraptionTypes.register(modEventBus);
// FIXME: some of these registrations are not thread-safe
BogeySizes.init();

View file

@ -0,0 +1,43 @@
package com.simibubi.create.api.contraption;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.registry.CreateBuiltInRegistries;
import com.simibubi.create.content.contraptions.Contraption;
import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
public final class ContraptionType {
public final Supplier<? extends Contraption> factory;
public final Holder.Reference<ContraptionType> holder;
public ContraptionType(Supplier<? extends Contraption> factory) {
this.factory = factory;
this.holder = CreateBuiltInRegistries.CONTRAPTION_TYPE.createIntrusiveHolder(this);
}
public boolean is(TagKey<ContraptionType> tag) {
return this.holder.is(tag);
}
/**
* Lookup the ContraptionType with the given ID, and create a new Contraption from it if present.
* If it doesn't exist, returns null.
*/
@Nullable
public static Contraption fromType(String typeId) {
ContraptionType legacy = AllContraptionTypes.BY_LEGACY_NAME.get(typeId);
if (legacy != null) {
return legacy.factory.get();
}
ResourceLocation id = ResourceLocation.tryParse(typeId);
ContraptionType type = CreateBuiltInRegistries.CONTRAPTION_TYPE.get(id);
return type == null ? null : type.factory.get();
}
}

View file

@ -7,6 +7,7 @@ import org.jetbrains.annotations.ApiStatus;
import com.mojang.serialization.Lifecycle;
import com.simibubi.create.api.behaviour.display.DisplaySource;
import com.simibubi.create.api.behaviour.display.DisplayTarget;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType;
import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType;
import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType;
@ -34,11 +35,16 @@ public class CreateBuiltInRegistries {
public static final Registry<DisplayTarget> DISPLAY_TARGET = simple(CreateRegistries.DISPLAY_TARGET);
public static final Registry<MountedItemStorageType<?>> MOUNTED_ITEM_STORAGE_TYPE = simple(CreateRegistries.MOUNTED_ITEM_STORAGE_TYPE);
public static final Registry<MountedFluidStorageType<?>> MOUNTED_FLUID_STORAGE_TYPE = simple(CreateRegistries.MOUNTED_FLUID_STORAGE_TYPE);
public static final Registry<ContraptionType> CONTRAPTION_TYPE = withIntrusiveHolders(CreateRegistries.CONTRAPTION_TYPE);
private static <T> Registry<T> simple(ResourceKey<Registry<T>> key) {
return register(key, new MappedRegistry<>(key, Lifecycle.stable(), false));
}
private static <T> Registry<T> withIntrusiveHolders(ResourceKey<Registry<T>> key) {
return register(key, new MappedRegistry<>(key, Lifecycle.stable(), true));
}
@SuppressWarnings("unchecked")
private static <T> Registry<T> register(ResourceKey<Registry<T>> key, WritableRegistry<T> registry) {
ROOT_REGISTRY.register(

View file

@ -3,6 +3,7 @@ package com.simibubi.create.api.registry;
import com.simibubi.create.Create;
import com.simibubi.create.api.behaviour.display.DisplaySource;
import com.simibubi.create.api.behaviour.display.DisplayTarget;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType;
import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType;
import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType;
@ -24,6 +25,7 @@ public class CreateRegistries {
public static final ResourceKey<Registry<DisplayTarget>> DISPLAY_TARGET = key("display_target");
public static final ResourceKey<Registry<MountedItemStorageType<?>>> MOUNTED_ITEM_STORAGE_TYPE = key("mounted_item_storage_type");
public static final ResourceKey<Registry<MountedFluidStorageType<?>>> MOUNTED_FLUID_STORAGE_TYPE = key("mounted_fluid_storage_type");
public static final ResourceKey<Registry<ContraptionType>> CONTRAPTION_TYPE = key("contraption_type");
private static <T> ResourceKey<Registry<T>> key(String name) {
return ResourceKey.createRegistryKey(Create.asResource(name));

View file

@ -29,9 +29,11 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.simibubi.create.AllBlockEntityTypes;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTags.AllContraptionTypeTags;
import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour;
import com.simibubi.create.api.behaviour.movement.MovementBehaviour;
import com.simibubi.create.api.contraption.BlockMovementChecks;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement;
import com.simibubi.create.content.contraptions.actors.harvester.HarvesterMovementBehaviour;
import com.simibubi.create.content.contraptions.actors.seat.SeatBlock;
@ -90,6 +92,7 @@ import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag;
import net.minecraft.network.protocol.game.DebugPackets;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.ai.village.poi.PoiTypes;
@ -615,7 +618,7 @@ public abstract class Contraption {
blockstate = blockstate.setValue(RedstoneContactBlock.POWERED, true);
if (AllBlocks.POWERED_SHAFT.has(blockstate))
blockstate = BlockHelper.copyProperties(blockstate, AllBlocks.SHAFT.getDefaultState());
if (blockstate.getBlock() instanceof ControlsBlock && getType() == ContraptionType.CARRIAGE)
if (blockstate.getBlock() instanceof ControlsBlock && AllContraptionTypeTags.OPENS_CONTROLS.matches(this.getType()))
blockstate = blockstate.setValue(ControlsBlock.OPEN, true);
if (blockstate.hasProperty(SlidingDoorBlock.VISIBLE))
blockstate = blockstate.setValue(SlidingDoorBlock.VISIBLE, false);
@ -799,7 +802,8 @@ public abstract class Contraption {
public CompoundTag writeNBT(boolean spawnPacket) {
CompoundTag nbt = new CompoundTag();
nbt.putString("Type", getType().id);
ResourceLocation typeId = this.getType().holder.key().location();
nbt.putString("Type", typeId.toString());
CompoundTag blocksNBT = writeBlocksCompound(spawnPacket);

View file

@ -1,53 +0,0 @@
package com.simibubi.create.content.contraptions;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.Supplier;
import com.simibubi.create.content.contraptions.bearing.BearingContraption;
import com.simibubi.create.content.contraptions.bearing.ClockworkContraption;
import com.simibubi.create.content.contraptions.bearing.StabilizedContraption;
import com.simibubi.create.content.contraptions.elevator.ElevatorContraption;
import com.simibubi.create.content.contraptions.gantry.GantryContraption;
import com.simibubi.create.content.contraptions.mounted.MountedContraption;
import com.simibubi.create.content.contraptions.piston.PistonContraption;
import com.simibubi.create.content.contraptions.pulley.PulleyContraption;
import com.simibubi.create.content.trains.entity.CarriageContraption;
public class ContraptionType {
public static final Map<String, ContraptionType> ENTRIES = new HashMap<>();
public static final ContraptionType
PISTON = register("piston", PistonContraption::new),
BEARING = register("bearing", BearingContraption::new),
PULLEY = register("pulley", PulleyContraption::new),
CLOCKWORK = register("clockwork", ClockworkContraption::new),
MOUNTED = register("mounted", MountedContraption::new),
STABILIZED = register("stabilized", StabilizedContraption::new),
GANTRY = register("gantry", GantryContraption::new),
CARRIAGE = register("carriage", CarriageContraption::new),
ELEVATOR = register("elevator", ElevatorContraption::new);
Supplier<? extends Contraption> factory;
String id;
public static ContraptionType register(String id, Supplier<? extends Contraption> factory) {
ContraptionType value = new ContraptionType(id, factory);
ENTRIES.put(id, value);
return value;
}
private ContraptionType(String id, Supplier<? extends Contraption> factory) {
this.factory = factory;
this.id = id;
}
public static Contraption fromType(String type) {
for (Entry<String, ContraptionType> allContraptionTypes : ENTRIES.entrySet())
if (type.equals(allContraptionTypes.getKey()))
return allContraptionTypes.getValue().factory.get();
return null;
}
}

View file

@ -3,10 +3,11 @@ package com.simibubi.create.content.contraptions.bearing;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.decoration.copycat.CopycatBlockEntity;
import com.simibubi.create.infrastructure.config.AllConfigs;
@ -48,7 +49,7 @@ public class BearingContraption extends Contraption {
@Override
public ContraptionType getType() {
return ContraptionType.BEARING;
return AllContraptionTypes.BEARING.get();
}
@Override

View file

@ -6,9 +6,10 @@ import java.util.Set;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.ContraptionType;
import net.createmod.catnip.nbt.NBTHelper;
import net.minecraft.core.BlockPos;
@ -25,7 +26,7 @@ public class ClockworkContraption extends Contraption {
@Override
public ContraptionType getType() {
return ContraptionType.CLOCKWORK;
return AllContraptionTypes.CLOCKWORK.get();
}
private void ignoreBlocks(Set<BlockPos> blocks, BlockPos anchor) {

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.contraptions.bearing;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.ContraptionType;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -37,7 +38,7 @@ public class StabilizedContraption extends Contraption {
@Override
public ContraptionType getType() {
return ContraptionType.STABILIZED;
return AllContraptionTypes.STABILIZED.get();
}
@Override

View file

@ -7,10 +7,11 @@ import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.ImmutableList;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.AllPackets;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement.ElevatorFloorSelection;
import com.simibubi.create.content.contraptions.behaviour.MovementContext;
import com.simibubi.create.content.contraptions.elevator.ElevatorColumn.ColumnCoords;
@ -173,7 +174,7 @@ public class ElevatorContraption extends PulleyContraption {
@Override
public ContraptionType getType() {
return ContraptionType.ELEVATOR;
return AllContraptionTypes.ELEVATOR.get();
}
public void setClientYTarget(int clientYTarget) {

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.contraptions.gantry;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.TranslatingContraption;
import net.minecraft.core.BlockPos;
@ -49,7 +50,7 @@ public class GantryContraption extends TranslatingContraption {
@Override
public ContraptionType getType() {
return ContraptionType.GANTRY;
return AllContraptionTypes.GANTRY.get();
}
public Direction getFacing() {

View file

@ -7,9 +7,10 @@ import java.util.Queue;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.mounted.CartAssemblerBlockEntity.CartMovementMode;
import net.createmod.catnip.data.Iterate;
@ -48,7 +49,7 @@ public class MountedContraption extends Contraption {
@Override
public ContraptionType getType() {
return ContraptionType.MOUNTED;
return AllContraptionTypes.MOUNTED.get();
}
@Override

View file

@ -14,9 +14,10 @@ import java.util.Queue;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.BlockMovementChecks;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.TranslatingContraption;
import com.simibubi.create.content.contraptions.piston.MechanicalPistonBlock.PistonState;
import com.simibubi.create.infrastructure.config.AllConfigs;
@ -47,10 +48,11 @@ public class PistonContraption extends TranslatingContraption {
@Override
public ContraptionType getType() {
return ContraptionType.PISTON;
return AllContraptionTypes.PISTON.get();
}
public PistonContraption() {}
public PistonContraption() {
}
public PistonContraption(Direction direction, boolean retract) {
orientation = direction;
@ -126,9 +128,9 @@ public class PistonContraption extends TranslatingContraption {
extensionLength = extensionsInBack + extensionsInFront;
initialExtensionProgress = extensionsInFront;
pistonExtensionCollisionBox = new AABB(
BlockPos.ZERO.relative(direction, -1),
BlockPos.ZERO.relative(direction, -extensionLength - 1)).expandTowards(1,
1, 1);
BlockPos.ZERO.relative(direction, -1),
BlockPos.ZERO.relative(direction, -extensionLength - 1)).expandTowards(1,
1, 1);
if (extensionLength == 0)
throw AssemblyException.noPistonPoles();

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.pulley;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.TranslatingContraption;
import net.minecraft.core.BlockPos;
@ -14,7 +15,7 @@ public class PulleyContraption extends TranslatingContraption {
@Override
public ContraptionType getType() {
return ContraptionType.PULLEY;
return AllContraptionTypes.PULLEY.get();
}
public PulleyContraption() {}

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.render;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.AllTags.AllContraptionTypeTags;
import com.simibubi.create.content.contraptions.OrientedContraptionEntity;
import net.minecraft.client.renderer.culling.Frustum;
@ -16,9 +16,9 @@ public class OrientedContraptionEntityRenderer extends ContraptionEntityRenderer
double cameraZ) {
if (!super.shouldRender(entity, frustum, cameraX, cameraY, cameraZ))
return false;
if (entity.getContraption()
.getType() == ContraptionType.MOUNTED && entity.getVehicle() == null)
if (entity.getVehicle() == null && AllContraptionTypeTags.REQUIRES_VEHICLE_FOR_RENDER.matches(entity.getContraption().getType()))
return false;
return true;
}
}

View file

@ -10,11 +10,12 @@ import java.util.Optional;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.api.behaviour.interaction.ConductorBlockInteractionBehavior;
import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.Contraption;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.MountedStorageManager;
import com.simibubi.create.content.contraptions.actors.trainControls.ControlsBlock;
import com.simibubi.create.content.contraptions.minecart.TrainCargoManager;
@ -230,7 +231,7 @@ public class CarriageContraption extends Contraption {
@Override
public ContraptionType getType() {
return ContraptionType.CARRIAGE;
return AllContraptionTypes.CARRIAGE.get();
}
public Direction getAssemblyDirection() {

View file

@ -0,0 +1,47 @@
package com.simibubi.create.infrastructure.data;
import java.util.concurrent.CompletableFuture;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.AllContraptionTypes;
import com.simibubi.create.AllTags.AllContraptionTypeTags;
import com.simibubi.create.Create;
import com.simibubi.create.api.contraption.ContraptionType;
import com.simibubi.create.api.registry.CreateRegistries;
import net.minecraft.core.HolderLookup.Provider;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.tags.TagEntry;
import net.minecraftforge.common.data.ExistingFileHelper;
public class CreateContraptionTypeTagsProvider extends TagsProvider<ContraptionType> {
public CreateContraptionTypeTagsProvider(PackOutput output, CompletableFuture<Provider> lookupProvider, @Nullable ExistingFileHelper existingFileHelper) {
super(output, CreateRegistries.CONTRAPTION_TYPE, lookupProvider, Create.ID, existingFileHelper);
}
@Override
protected void addTags(Provider pProvider) {
tag(AllContraptionTypeTags.OPENS_CONTROLS.tag).add(
TagEntry.element(AllContraptionTypes.CARRIAGE.getId())
);
tag(AllContraptionTypeTags.REQUIRES_VEHICLE_FOR_RENDER.tag).add(
TagEntry.element(AllContraptionTypes.MOUNTED.getId())
);
// VALIDATE
for (AllContraptionTypeTags tag : AllContraptionTypeTags.values()) {
if (tag.alwaysDatagen) {
getOrCreateRawBuilder(tag.tag);
}
}
}
@Override
public String getName() {
return "Create's Contraption Type Tags";
}
}

View file

@ -23,6 +23,7 @@ import net.createmod.ponder.foundation.PonderIndex;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.data.event.GatherDataEvent;
@ -42,6 +43,7 @@ public class CreateDatagen {
generator.addProvider(event.includeServer(), generatedEntriesProvider);
generator.addProvider(event.includeServer(), new CreateRecipeSerializerTagsProvider(output, lookupProvider, existingFileHelper));
generator.addProvider(event.includeServer(), new CreateContraptionTypeTagsProvider(output, lookupProvider, existingFileHelper));
generator.addProvider(event.includeServer(), new DamageTypeTagGen(output, lookupProvider, existingFileHelper));
generator.addProvider(event.includeServer(), new AllAdvancements(output));
generator.addProvider(event.includeServer(), new StandardRecipeGen(output));