mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
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:
parent
5d75785f9d
commit
84cc8086e8
25 changed files with 609 additions and 455 deletions
File diff suppressed because it is too large
Load diff
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"values": []
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"create:carriage"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"create:mounted"
|
||||
]
|
||||
}
|
50
src/main/java/com/simibubi/create/AllContraptionTypes.java
Normal file
50
src/main/java/com/simibubi/create/AllContraptionTypes.java
Normal 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);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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(
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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() {}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
}
|
|
@ -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));
|
||||
|
|
Loading…
Add table
Reference in a new issue