Extremely early disk drives.
This commit is contained in:
@@ -2,39 +2,51 @@ package com.raoulvdberge.refinedstorage;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
|
||||
import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry;
|
||||
import com.raoulvdberge.refinedstorage.render.model.baked.DiskDriveBakedModel;
|
||||
import com.raoulvdberge.refinedstorage.render.model.baked.FullbrightBakedModel;
|
||||
import com.raoulvdberge.refinedstorage.screen.ControllerScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.FilterScreen;
|
||||
import net.minecraft.client.gui.ScreenManager;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ClientSetup {
|
||||
private BakedModelOverrideRegistry bakedModelOverrideRegistry = new BakedModelOverrideRegistry();
|
||||
|
||||
public ClientSetup() {
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "controller"), base -> new FullbrightBakedModel(
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "controller"), (base, registry) -> new FullbrightBakedModel(
|
||||
base,
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"),
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"),
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/on")
|
||||
));
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "creative_controller"), base -> new FullbrightBakedModel(
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "creative_controller"), (base, registry) -> new FullbrightBakedModel(
|
||||
base,
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"),
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"),
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/on")
|
||||
));
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new DiskDriveBakedModel(
|
||||
base,
|
||||
registry.get(new ResourceLocation(RS.ID + ":block/disks/disk")),
|
||||
registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity")),
|
||||
registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_full")),
|
||||
registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected"))
|
||||
));
|
||||
|
||||
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk"));
|
||||
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity"));
|
||||
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_full"));
|
||||
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected"));
|
||||
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onModelBake);
|
||||
}
|
||||
@@ -53,10 +65,10 @@ public class ClientSetup {
|
||||
@SubscribeEvent
|
||||
public void onModelBake(ModelBakeEvent e) {
|
||||
for (ResourceLocation id : e.getModelRegistry().keySet()) {
|
||||
Function<IBakedModel, IBakedModel> factory = this.bakedModelOverrideRegistry.get(new ResourceLocation(id.getNamespace(), id.getPath()));
|
||||
BakedModelOverrideRegistry.BakedModelOverrideFactory factory = this.bakedModelOverrideRegistry.get(new ResourceLocation(id.getNamespace(), id.getPath()));
|
||||
|
||||
if (factory != null) {
|
||||
e.getModelRegistry().put(id, factory.apply(e.getModelRegistry().get(id)));
|
||||
e.getModelRegistry().put(id, factory.create(e.getModelRegistry().get(id), e.getModelRegistry()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryItem;
|
||||
import com.raoulvdberge.refinedstorage.block.CableBlock;
|
||||
import com.raoulvdberge.refinedstorage.block.ControllerBlock;
|
||||
import com.raoulvdberge.refinedstorage.block.MachineCasingBlock;
|
||||
import com.raoulvdberge.refinedstorage.block.QuartzEnrichedIronBlock;
|
||||
import com.raoulvdberge.refinedstorage.block.*;
|
||||
import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability;
|
||||
import com.raoulvdberge.refinedstorage.config.ServerConfig;
|
||||
import com.raoulvdberge.refinedstorage.container.ControllerContainer;
|
||||
@@ -22,6 +19,7 @@ import com.raoulvdberge.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSeri
|
||||
import com.raoulvdberge.refinedstorage.tile.BaseTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.CableTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.ControllerTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
import com.raoulvdberge.refinedstorage.util.BlockUtils;
|
||||
import net.minecraft.block.Block;
|
||||
@@ -91,6 +89,7 @@ public final class RS {
|
||||
e.getRegistry().register(new ControllerBlock(ControllerBlock.Type.CREATIVE));
|
||||
e.getRegistry().register(new MachineCasingBlock());
|
||||
e.getRegistry().register(new CableBlock());
|
||||
e.getRegistry().register(new DiskDriveBlock());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -104,6 +103,9 @@ public final class RS {
|
||||
));
|
||||
|
||||
e.getRegistry().register(TileEntityType.Builder.create(CableTile::new, RSBlocks.CABLE).build(null).setRegistryName(RS.ID, "cable"));
|
||||
e.getRegistry().register(registerTileDataParameters(
|
||||
TileEntityType.Builder.create(DiskDriveTile::new, RSBlocks.DISK_DRIVE).build(null).setRegistryName(RS.ID, "disk_drive")
|
||||
));
|
||||
}
|
||||
|
||||
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
|
||||
@@ -168,6 +170,7 @@ public final class RS {
|
||||
e.getRegistry().register(new ControllerBlockItem(RSBlocks.CREATIVE_CONTROLLER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.MACHINE_CASING));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CABLE));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DISK_DRIVE));
|
||||
}
|
||||
|
||||
/* TODO
|
||||
|
||||
@@ -5,7 +5,6 @@ import net.minecraftforge.registries.ObjectHolder;
|
||||
|
||||
public final class RSBlocks {
|
||||
public static final BlockGrid GRID = new BlockGrid();
|
||||
public static final BlockDiskDrive DISK_DRIVE = new BlockDiskDrive();
|
||||
public static final BlockExternalStorage EXTERNAL_STORAGE = new BlockExternalStorage();
|
||||
public static final BlockImporter IMPORTER = new BlockImporter();
|
||||
public static final BlockExporter EXPORTER = new BlockExporter();
|
||||
@@ -41,6 +40,9 @@ public final class RSBlocks {
|
||||
@ObjectHolder(RS.ID + ":cable")
|
||||
public static final CableBlock CABLE = null;
|
||||
|
||||
@ObjectHolder(RS.ID + ":disk_drive")
|
||||
public static final DiskDriveBlock DISK_DRIVE = null;
|
||||
|
||||
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
|
||||
public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid();
|
||||
public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager();
|
||||
|
||||
@@ -27,8 +27,10 @@ public class RSTiles {
|
||||
public static final TileEntityType<TileDestructor> DESTRUCTOR = null;
|
||||
//@ObjectHolder(RS.ID + ":detector")
|
||||
public static final TileEntityType<TileDetector> DETECTOR = null;
|
||||
//@ObjectHolder(RS.ID + ":disk_drive")
|
||||
public static final TileEntityType<TileDiskDrive> DISK_DRIVE = null;
|
||||
|
||||
@ObjectHolder(RS.ID + ":disk_drive")
|
||||
public static final TileEntityType<DiskDriveTile> DISK_DRIVE = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":disk_manipulator")
|
||||
public static final TileEntityType<TileDiskManipulator> DISK_MANIPULATOR = null;
|
||||
//@ObjectHolder(RS.ID + ":exporter")
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
@@ -74,7 +74,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
||||
TileEntity facing = getFacingTile();
|
||||
IItemHandler handler = WorldUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||
|
||||
if (facing instanceof TileDiskDrive || handler == null) {
|
||||
if (facing instanceof DiskDriveTile || handler == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
||||
@@ -16,7 +15,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
||||
@@ -104,6 +103,7 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
/*TODO
|
||||
int usage = RS.INSTANCE.config.diskDriveUsage;
|
||||
|
||||
for (IStorage storage : itemDisks) {
|
||||
@@ -117,7 +117,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
||||
}
|
||||
}
|
||||
|
||||
return usage;
|
||||
return usage;*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -268,42 +269,42 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getTypeParameter() {
|
||||
return TileDiskDrive.TYPE;
|
||||
return DiskDriveTile.TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getRedstoneModeParameter() {
|
||||
return TileDiskDrive.REDSTONE_MODE;
|
||||
return DiskDriveTile.REDSTONE_MODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getCompareParameter() {
|
||||
return TileDiskDrive.COMPARE;
|
||||
return DiskDriveTile.COMPARE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getFilterParameter() {
|
||||
return TileDiskDrive.MODE;
|
||||
return DiskDriveTile.MODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getPriorityParameter() {
|
||||
return TileDiskDrive.PRIORITY;
|
||||
return DiskDriveTile.PRIORITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
|
||||
return TileDiskDrive.ACCESS_TYPE;
|
||||
return DiskDriveTile.ACCESS_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getStored() {
|
||||
return TileDiskDrive.STORED.getValue();
|
||||
return DiskDriveTile.STORED.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getCapacity() {
|
||||
return TileDiskDrive.CAPACITY.getValue();
|
||||
return DiskDriveTile.CAPACITY.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -346,7 +347,7 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return world.isRemote ? TileDiskDrive.TYPE.getValue() : type;
|
||||
return world.isRemote ? DiskDriveTile.TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,14 +1,34 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.util.BlockUtils;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
|
||||
public class BlockDiskDrive extends BlockNode {
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class DiskDriveBlock extends NodeBlock {
|
||||
// TODO public static final PropertyObject<Integer[]> DISK_STATE = new PropertyObject<>("disk_state", Integer[].class);
|
||||
|
||||
public BlockDiskDrive() {
|
||||
super(BlockInfoBuilder.forId("disk_drive").tileEntity(TileDiskDrive::new).create());
|
||||
public DiskDriveBlock() {
|
||||
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
|
||||
|
||||
this.setRegistryName(RS.ID, "disk_drive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new DiskDriveTile();
|
||||
}
|
||||
|
||||
/* TODO
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@@ -3,13 +3,13 @@ package com.raoulvdberge.refinedstorage.container;
|
||||
import com.raoulvdberge.refinedstorage.RSContainers;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
|
||||
public class DiskDriveContainer extends BaseContainer {
|
||||
public DiskDriveContainer(TileDiskDrive diskDrive, PlayerEntity player, int windowId) {
|
||||
public DiskDriveContainer(DiskDriveTile diskDrive, PlayerEntity player, int windowId) {
|
||||
super(RSContainers.DISK_DRIVE, diskDrive, player, windowId);
|
||||
|
||||
int x = 80;
|
||||
|
||||
@@ -6,17 +6,20 @@ import net.minecraft.util.ResourceLocation;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class BakedModelOverrideRegistry {
|
||||
private Map<ResourceLocation, Function<IBakedModel, IBakedModel>> registry = new HashMap<>();
|
||||
public interface BakedModelOverrideFactory {
|
||||
IBakedModel create(IBakedModel base, Map<ResourceLocation, IBakedModel> registry);
|
||||
}
|
||||
|
||||
public void add(ResourceLocation id, Function<IBakedModel, IBakedModel> factory) {
|
||||
private Map<ResourceLocation, BakedModelOverrideFactory> registry = new HashMap<>();
|
||||
|
||||
public void add(ResourceLocation id, BakedModelOverrideFactory factory) {
|
||||
registry.put(id, factory);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Function<IBakedModel, IBakedModel> get(ResourceLocation id) {
|
||||
public BakedModelOverrideFactory get(ResourceLocation id) {
|
||||
return registry.get(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.render.model;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelBakery;
|
||||
import net.minecraft.client.renderer.texture.ISprite;
|
||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.IModel;
|
||||
import net.minecraftforge.client.model.ModelLoaderRegistry;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ModelDiskDrive implements IUnbakedModel {
|
||||
private static final ResourceLocation MODEL_BASE = new ResourceLocation(RS.ID + ":block/disk_drive");
|
||||
|
||||
private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disks/disk");
|
||||
private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity");
|
||||
private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disks/disk_full");
|
||||
private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disks/disk_disconnected");
|
||||
|
||||
@Override
|
||||
public Collection<ResourceLocation> getDependencies() {
|
||||
List<ResourceLocation> dependencies = new ArrayList<>();
|
||||
|
||||
dependencies.add(MODEL_BASE);
|
||||
dependencies.add(MODEL_DISK);
|
||||
dependencies.add(MODEL_DISK_NEAR_CAPACITY);
|
||||
dependencies.add(MODEL_DISK_FULL);
|
||||
dependencies.add(MODEL_DISK_DISCONNECTED);
|
||||
|
||||
return dependencies;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ResourceLocation> getTextures(Function<ResourceLocation, IUnbakedModel> modelGetter, Set<String> missingTextureErrors) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IBakedModel bake(ModelBakery bakery, Function spriteGetter, ISprite sprite, VertexFormat format) {
|
||||
IModel baseModel;
|
||||
IModel diskModel;
|
||||
IModel diskModelNearCapacity;
|
||||
IModel diskModelFull;
|
||||
IModel diskModelDisconnected;
|
||||
|
||||
try {
|
||||
baseModel = ModelLoaderRegistry.getModel(MODEL_BASE);
|
||||
diskModel = ModelLoaderRegistry.getModel(MODEL_DISK);
|
||||
diskModelNearCapacity = ModelLoaderRegistry.getModel(MODEL_DISK_NEAR_CAPACITY);
|
||||
diskModelFull = ModelLoaderRegistry.getModel(MODEL_DISK_FULL);
|
||||
diskModelDisconnected = ModelLoaderRegistry.getModel(MODEL_DISK_DISCONNECTED);
|
||||
} catch (Exception e) {
|
||||
throw new Error("Unable to load disk drive models", e);
|
||||
}
|
||||
/*
|
||||
return new BakedModelDiskDrive(
|
||||
baseModel.bake(bakery, spriteGetter, sprite, format),
|
||||
new BakedModelFullbright(diskModel.bake(bakery, spriteGetter, sprite, format), RS.ID + ":blocks/disks/leds").setCacheDisabled(),
|
||||
new BakedModelFullbright(diskModelNearCapacity.bake(bakery, spriteGetter, sprite, format), RS.ID + ":blocks/disks/leds").setCacheDisabled(),
|
||||
new BakedModelFullbright(diskModelFull.bake(bakery, spriteGetter, sprite, format), RS.ID + ":blocks/disks/leds").setCacheDisabled(),
|
||||
diskModelDisconnected.bake(bakery, spriteGetter, sprite, format)
|
||||
);*/
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,28 @@
|
||||
package com.raoulvdberge.refinedstorage.render.model.baked;
|
||||
|
||||
/*
|
||||
public class BakedModelDiskDrive extends BakedModelDelegate {
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraftforge.client.model.data.IModelData;
|
||||
import net.minecraftforge.common.model.TRSRTransformation;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.vecmath.Vector3f;
|
||||
import java.util.*;
|
||||
|
||||
public class DiskDriveBakedModel extends DelegateBakedModel {
|
||||
private class CacheKey {
|
||||
private BlockState state;
|
||||
private Direction side;
|
||||
private Integer[] diskState;
|
||||
private Random random;
|
||||
|
||||
CacheKey(BlockState state, @Nullable Direction side, Integer[] diskState) {
|
||||
CacheKey(BlockState state, @Nullable Direction side, Integer[] diskState, Random random) {
|
||||
this.state = state;
|
||||
this.side = side;
|
||||
this.diskState = diskState;
|
||||
@@ -52,13 +66,14 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
|
||||
private LoadingCache<CacheKey, List<BakedQuad>> cache = CacheBuilder.newBuilder().build(new CacheLoader<CacheKey, List<BakedQuad>>() {
|
||||
@Override
|
||||
public List<BakedQuad> load(CacheKey key) {
|
||||
Direction facing = key.state.get(RSBlocks.DISK_DRIVE.getDirection().getProperty());
|
||||
// TODO Direction facing = key.state.get(RSBlocks.DISK_DRIVE.getDirection().getProperty());
|
||||
Direction facing = Direction.NORTH;
|
||||
|
||||
List<BakedQuad> quads = models.get(facing).getQuads(key.state, key.side, new Random());
|
||||
List<BakedQuad> quads = new ArrayList<>(models.get(facing).getQuads(key.state, key.side, key.random));
|
||||
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
if (key.diskState[i] != ConstantsDisk.DISK_STATE_NONE) {
|
||||
quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, 0));
|
||||
quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, key.random));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,11 +81,15 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
|
||||
}
|
||||
});
|
||||
|
||||
public BakedModelDiskDrive(IBakedModel base, IBakedModel disk, IBakedModel diskNearCapacity, IBakedModel diskFull, IBakedModel diskDisconnected) {
|
||||
public DiskDriveBakedModel(IBakedModel base,
|
||||
IBakedModel disk,
|
||||
IBakedModel diskNearCapacity,
|
||||
IBakedModel diskFull,
|
||||
IBakedModel diskDisconnected) {
|
||||
super(base);
|
||||
|
||||
for (Direction facing : Direction.values()) { // TODO only horizontals
|
||||
models.put(facing, new BakedModelTRSR(base, facing));
|
||||
models.put(facing, new TRSRBakedModel(base, facing));
|
||||
|
||||
disks.put(facing, new HashMap<>());
|
||||
|
||||
@@ -89,7 +108,7 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
|
||||
private void initDiskModels(IBakedModel disk, int type, Direction facing) {
|
||||
for (int y = 0; y < 4; ++y) {
|
||||
for (int x = 0; x < 2; ++x) {
|
||||
BakedModelTRSR model = new BakedModelTRSR(disk, facing);
|
||||
TRSRBakedModel model = new TRSRBakedModel(disk, facing);
|
||||
|
||||
Vector3f trans = model.transformation.getTranslation();
|
||||
|
||||
@@ -108,21 +127,27 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, long rand) {
|
||||
if (!(state instanceof IExtendedBlockState)) {
|
||||
return base.getQuads(state, side, rand);
|
||||
}
|
||||
private static Integer[] TEST_STATE = {
|
||||
ConstantsDisk.DISK_STATE_FULL,
|
||||
ConstantsDisk.DISK_STATE_NEAR_CAPACITY,
|
||||
ConstantsDisk.DISK_STATE_NONE,
|
||||
ConstantsDisk.DISK_STATE_NORMAL,
|
||||
ConstantsDisk.DISK_STATE_NORMAL,
|
||||
ConstantsDisk.DISK_STATE_NONE,
|
||||
ConstantsDisk.DISK_STATE_NONE,
|
||||
ConstantsDisk.DISK_STATE_NONE,
|
||||
};
|
||||
|
||||
Integer[] diskState = ((IExtendedBlockState) state).getValue(BlockDiskDrive.DISK_STATE);
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data) {
|
||||
Integer[] diskState = TEST_STATE;
|
||||
|
||||
if (diskState == null) {
|
||||
return base.getQuads(state, side, rand);
|
||||
return base.getQuads(state, side, rand, data);
|
||||
}
|
||||
|
||||
CacheKey key = new CacheKey(((IExtendedBlockState) state).getClean(), side, diskState);
|
||||
CacheKey key = new CacheKey(state, side, diskState, rand);
|
||||
|
||||
return cache.getUnchecked(key);
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -1,68 +1,62 @@
|
||||
package com.raoulvdberge.refinedstorage.render.model.baked;
|
||||
/*
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import net.minecraft.block.state.BlockState;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||
import net.minecraft.client.renderer.model.ItemOverrideList;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
|
||||
import net.minecraftforge.client.model.pipeline.VertexTransformer;
|
||||
import net.minecraftforge.common.model.TRSRTransformation;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.vecmath.Matrix3f;
|
||||
import javax.vecmath.Matrix4f;
|
||||
import javax.vecmath.Vector3f;
|
||||
import javax.vecmath.Vector4f;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
**
|
||||
* @link https://github.com/SlimeKnights/Mantle/blob/master/src/main/java/slimeknights/mantle/client/model/TRSRBakedModel.java
|
||||
*
|
||||
public class BakedModelTRSR implements IBakedModel {
|
||||
/**
|
||||
* @link https://github.com/SlimeKnights/Mantle/blob/1.14/src/main/java/slimeknights/mantle/client/model/TRSRBakedModel.java
|
||||
*/
|
||||
// for those wondering TRSR stands for Translation Rotation Scale Rotation
|
||||
public class TRSRBakedModel implements IBakedModel {
|
||||
protected final IBakedModel original;
|
||||
public TRSRTransformation transformation;
|
||||
private final TRSROverride override;
|
||||
protected TRSRTransformation transformation;
|
||||
private final int faceOffset;
|
||||
|
||||
public BakedModelTRSR(IBakedModel original, float x, float y, float z, float scale) {
|
||||
public TRSRBakedModel(IBakedModel original, float x, float y, float z, float scale) {
|
||||
this(original, x, y, z, 0, 0, 0, scale, scale, scale);
|
||||
}
|
||||
|
||||
public BakedModelTRSR(IBakedModel original, float x, float y, float z, float rotX, float rotY, float rotZ, float scale) {
|
||||
public TRSRBakedModel(IBakedModel original, float x, float y, float z, float rotX, float rotY, float rotZ, float scale) {
|
||||
this(original, x, y, z, rotX, rotY, rotZ, scale, scale, scale);
|
||||
}
|
||||
|
||||
public BakedModelTRSR(IBakedModel original, float x, float y, float z, float rotX, float rotY, float rotZ, float scaleX, float scaleY, float scaleZ) {
|
||||
public TRSRBakedModel(IBakedModel original, float x, float y, float z, float rotX, float rotY, float rotZ, float scaleX, float scaleY, float scaleZ) {
|
||||
this(original, new TRSRTransformation(new Vector3f(x, y, z),
|
||||
null,
|
||||
new Vector3f(scaleX, scaleY, scaleZ),
|
||||
TRSRTransformation.quatFromXYZ(rotX, rotY, rotZ)));
|
||||
}
|
||||
|
||||
public BakedModelTRSR(IBakedModel original, TRSRTransformation transform) {
|
||||
public TRSRBakedModel(IBakedModel original, TRSRTransformation transform) {
|
||||
this.original = original;
|
||||
this.transformation = TRSRTransformation.blockCenterToCorner(transform);
|
||||
this.override = new TRSROverride(this);
|
||||
this.faceOffset = 0;
|
||||
}
|
||||
|
||||
**
|
||||
/**
|
||||
* Rotates around the Y axis and adjusts culling appropriately. South is default.
|
||||
*
|
||||
public BakedModelTRSR(IBakedModel original, Direction facing) {
|
||||
*/
|
||||
public TRSRBakedModel(IBakedModel original, Direction facing) {
|
||||
this.original = original;
|
||||
this.override = new TRSROverride(this);
|
||||
|
||||
this.faceOffset = 4 + Direction.NORTH.getHorizontalIndex() - facing.getHorizontalIndex();
|
||||
|
||||
@@ -73,10 +67,10 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, long rand) {
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, Random rand) {
|
||||
// transform quads obtained from parent
|
||||
|
||||
List<BakedQuad> quads = new ArrayList<>();
|
||||
ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();
|
||||
|
||||
if (!original.isBuiltInRenderer()) {
|
||||
try {
|
||||
@@ -87,14 +81,14 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
for (BakedQuad quad : original.getQuads(state, side, rand)) {
|
||||
Transformer transformer = new Transformer(transformation, quad.getFormat());
|
||||
quad.pipe(transformer);
|
||||
quads.add(transformer.build());
|
||||
builder.add(transformer.build());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// do nothing. Seriously, why are you using immutable lists?!
|
||||
}
|
||||
}
|
||||
|
||||
return quads;
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -120,7 +114,6 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public ItemCameraTransforms getItemCameraTransforms() {
|
||||
return original.getItemCameraTransforms();
|
||||
}
|
||||
@@ -128,25 +121,7 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
@Nonnull
|
||||
@Override
|
||||
public ItemOverrideList getOverrides() {
|
||||
return override;
|
||||
}
|
||||
|
||||
private static class TRSROverride extends ItemOverrideList {
|
||||
private final BakedModelTRSR model;
|
||||
|
||||
public TRSROverride(BakedModelTRSR model) {
|
||||
super(ImmutableList.of());
|
||||
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IBakedModel handleItemState(@Nonnull IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) {
|
||||
IBakedModel baked = model.original.getOverrides().handleItemState(originalModel, stack, world, entity);
|
||||
|
||||
return new BakedModelTRSR(baked, model.transformation);
|
||||
}
|
||||
return original.getOverrides();
|
||||
}
|
||||
|
||||
private static class Transformer extends VertexTransformer {
|
||||
@@ -156,7 +131,7 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
public Transformer(TRSRTransformation transformation, VertexFormat format) {
|
||||
super(new UnpackedBakedQuad.Builder(format));
|
||||
// position transform
|
||||
this.transformation = transformation.getMatrix();
|
||||
this.transformation = transformation.getMatrixVec();
|
||||
// normal transform
|
||||
this.normalTransformation = new Matrix3f();
|
||||
this.transformation.getRotationScale(this.normalTransformation);
|
||||
@@ -166,15 +141,15 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
|
||||
@Override
|
||||
public void put(int element, float... data) {
|
||||
VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage();
|
||||
VertexFormatElement.Usage usage = parent.getVertexFormat().getElement(element).getUsage();
|
||||
|
||||
// transform normals and position
|
||||
if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) {
|
||||
if (usage == VertexFormatElement.Usage.POSITION && data.length >= 3) {
|
||||
Vector4f vec = new Vector4f(data[0], data[1], data[2], 1f);
|
||||
transformation.transform(vec);
|
||||
data = new float[4];
|
||||
vec.get(data);
|
||||
} else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) {
|
||||
} else if (usage == VertexFormatElement.Usage.NORMAL && data.length >= 3) {
|
||||
Vector3f vec = new Vector3f(data);
|
||||
normalTransformation.transform(vec);
|
||||
vec.normalize();
|
||||
@@ -188,4 +163,4 @@ public class BakedModelTRSR implements IBakedModel {
|
||||
return ((UnpackedBakedQuad.Builder) parent).build();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import net.minecraftforge.client.model.ICustomModelLoader;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CustomModelLoaderCover implements ICustomModelLoader {
|
||||
public class CoverCustomModelLoader implements ICustomModelLoader {
|
||||
@Override
|
||||
public void onResourceManagerReload(IResourceManager resourceManager) {
|
||||
// NO OP
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.render.model.loader;
|
||||
|
||||
import net.minecraft.client.renderer.model.IUnbakedModel;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.ICustomModelLoader;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class CustomModelLoaderDefault implements ICustomModelLoader {
|
||||
private ResourceLocation modelLocation;
|
||||
private Supplier<IUnbakedModel> model;
|
||||
|
||||
public CustomModelLoaderDefault(ResourceLocation modelLocation, Supplier<IUnbakedModel> model) {
|
||||
this.modelLocation = modelLocation;
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResourceManagerReload(IResourceManager resourceManager) {
|
||||
// NO OP
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accepts(ResourceLocation modelLocation) {
|
||||
return this.modelLocation.equals(modelLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IUnbakedModel loadModel(ResourceLocation modelLocation) {
|
||||
return model.get();
|
||||
}
|
||||
}
|
||||
@@ -14,13 +14,13 @@ import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class TileDiskDrive extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
||||
public static final TileDataParameter<Integer, TileDiskDrive> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer, TileDiskDrive> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer, TileDiskDrive> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer, TileDiskDrive> TYPE = IType.createParameter();
|
||||
public static final TileDataParameter<AccessType, TileDiskDrive> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final TileDataParameter<Long, TileDiskDrive> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
public class DiskDriveTile extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
||||
public static final TileDataParameter<Integer, DiskDriveTile> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer, DiskDriveTile> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer, DiskDriveTile> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer, DiskDriveTile> TYPE = IType.createParameter();
|
||||
public static final TileDataParameter<AccessType, DiskDriveTile> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final TileDataParameter<Long, DiskDriveTile> STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
long stored = 0;
|
||||
|
||||
for (IStorageDisk storage : t.getNode().getItemDisks()) {
|
||||
@@ -37,7 +37,7 @@ public class TileDiskDrive extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
||||
|
||||
return stored;
|
||||
});
|
||||
public static final TileDataParameter<Long, TileDiskDrive> CAPACITY = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
public static final TileDataParameter<Long, DiskDriveTile> CAPACITY = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
long capacity = 0;
|
||||
|
||||
for (IStorageDisk storage : t.getNode().getItemDisks()) {
|
||||
@@ -67,7 +67,7 @@ public class TileDiskDrive extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
||||
|
||||
private Integer[] diskState = new Integer[8];
|
||||
|
||||
public TileDiskDrive() {
|
||||
public DiskDriveTile() {
|
||||
super(RSTiles.DISK_DRIVE);
|
||||
|
||||
dataManager.addWatchedParameter(PRIORITY);
|
||||
@@ -132,7 +132,8 @@ public class TileDiskDrive extends NetworkNodeTile<NetworkNodeDiskDrive> {
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO @Override
|
||||
/* TODO
|
||||
@Override
|
||||
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable Direction facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
@@ -32,14 +32,14 @@ public class TileDiskManipulator extends NetworkNodeTile<NetworkNodeDiskManipula
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(IO_MODE);
|
||||
|
||||
TileDiskDrive.initDiskState(diskState);
|
||||
DiskDriveTile.initDiskState(diskState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeUpdate(CompoundNBT tag) {
|
||||
super.writeUpdate(tag);
|
||||
|
||||
TileDiskDrive.writeDiskState(tag, 6, getNode().canUpdate(), getNode().getItemDisks(), getNode().getFluidDisks());
|
||||
DiskDriveTile.writeDiskState(tag, 6, getNode().canUpdate(), getNode().getItemDisks(), getNode().getFluidDisks());
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -48,7 +48,7 @@ public class TileDiskManipulator extends NetworkNodeTile<NetworkNodeDiskManipula
|
||||
public void readUpdate(CompoundNBT tag) {
|
||||
super.readUpdate(tag);
|
||||
|
||||
TileDiskDrive.readDiskState(tag, diskState);
|
||||
DiskDriveTile.readDiskState(tag, diskState);
|
||||
}
|
||||
|
||||
public Integer[] getDiskState() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "refinedstorage:disk_drive"
|
||||
"": {
|
||||
"model": "refinedstorage:block/disk_drive"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
"block.refinedstorage:grid.1": "Crafting Grid",
|
||||
"block.refinedstorage:grid.2": "Pattern Grid",
|
||||
"block.refinedstorage:grid.3": "Fluid Grid",
|
||||
"block.refinedstorage:disk_drive": "Disk Drive",
|
||||
"block.refinedstorage.disk_drive": "Disk Drive",
|
||||
"block.refinedstorage:disk_manipulator": "Disk Manipulator",
|
||||
"block.refinedstorage:external_storage": "External Storage",
|
||||
"block.refinedstorage:importer": "Importer",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:blocks/disk_drive",
|
||||
"front": "refinedstorage:blocks/disk_drive",
|
||||
"bottom": "refinedstorage:blocks/disk_drive_bottom",
|
||||
"top": "refinedstorage:blocks/disk_drive_top",
|
||||
"side": "refinedstorage:blocks/disk_drive_side"
|
||||
"particle": "refinedstorage:block/disk_drive",
|
||||
"front": "refinedstorage:block/disk_drive",
|
||||
"bottom": "refinedstorage:block/disk_drive_bottom",
|
||||
"top": "refinedstorage:block/disk_drive_top",
|
||||
"side": "refinedstorage:block/disk_drive_side"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||
"textures": {
|
||||
"base": "refinedstorage:blocks/disks/disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"base": "refinedstorage:block/disks/disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||
"textures": {
|
||||
"base": "refinedstorage:blocks/disks/disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"base": "refinedstorage:block/disks/disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||
"textures": {
|
||||
"base": "refinedstorage:blocks/disks/disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"base": "refinedstorage:block/disks/disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||
"textures": {
|
||||
"base": "refinedstorage:blocks/disks/disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"base": "refinedstorage:block/disks/disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": {
|
||||
"disk": "refinedstorage:blocks/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"disk": "refinedstorage:block/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": {
|
||||
"disk": "refinedstorage:blocks/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:blocks/disks/portable_grid_leds"
|
||||
"disk": "refinedstorage:block/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:block/disks/portable_grid_leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": {
|
||||
"disk": "refinedstorage:blocks/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"disk": "refinedstorage:block/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": {
|
||||
"disk": "refinedstorage:blocks/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:blocks/disks/leds"
|
||||
"disk": "refinedstorage:block/disks/portable_grid_disk",
|
||||
"led": "refinedstorage:block/disks/leds"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/disk_drive"
|
||||
}
|
||||
@@ -10,14 +10,13 @@
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"C": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "chest"
|
||||
"tag": "forge:chests"
|
||||
},
|
||||
"M": {
|
||||
"item": "refinedstorage:machine_casing"
|
||||
},
|
||||
"P": {
|
||||
"item": "#advanced_processor"
|
||||
"item": "refinedstorage:advanced_processor"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
Reference in New Issue
Block a user