From 495cb3ecb30885d6c107fc7f29027386beeaffba Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 2 Oct 2019 22:15:02 +0200 Subject: [PATCH] Extremely early disk drives. --- .../refinedstorage/ClientSetup.java | 26 ++++-- .../com/raoulvdberge/refinedstorage/RS.java | 11 ++- .../raoulvdberge/refinedstorage/RSBlocks.java | 4 +- .../raoulvdberge/refinedstorage/RSTiles.java | 6 +- .../network/node/NetworkNodeImporter.java | 4 +- .../node/diskdrive/NetworkNodeDiskDrive.java | 25 +++--- ...lockDiskDrive.java => DiskDriveBlock.java} | 30 +++++-- .../container/DiskDriveContainer.java | 4 +- .../render/BakedModelOverrideRegistry.java | 11 ++- .../render/model/ModelDiskDrive.java | 74 ---------------- ...iskDrive.java => DiskDriveBakedModel.java} | 61 +++++++++---- ...akedModelTRSR.java => TRSRBakedModel.java} | 85 +++++++------------ ...Cover.java => CoverCustomModelLoader.java} | 2 +- .../loader/CustomModelLoaderDefault.java | 33 ------- ...{TileDiskDrive.java => DiskDriveTile.java} | 21 ++--- .../tile/TileDiskManipulator.java | 6 +- .../blockstates/disk_drive.json | 4 +- .../assets/refinedstorage/lang/en_us.json | 2 +- .../models/block/disk_drive.json | 10 +-- .../models/block/disks/disk.json | 5 +- .../models/block/disks/disk_disconnected.json | 4 +- .../models/block/disks/disk_full.json | 4 +- .../block/disks/disk_near_capacity.json | 4 +- .../block/disks/portable_grid_disk.json | 4 +- .../portable_grid_disk_disconnected.json | 4 +- .../block/disks/portable_grid_disk_full.json | 4 +- .../portable_grid_disk_near_capacity.json | 4 +- .../models/item/disk_drive.json | 3 + .../refinedstorage/recipes/disk_drive.json | 5 +- 29 files changed, 199 insertions(+), 261 deletions(-) rename src/main/java/com/raoulvdberge/refinedstorage/block/{BlockDiskDrive.java => DiskDriveBlock.java} (66%) mode change 100755 => 100644 delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java rename src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/{BakedModelDiskDrive.java => DiskDriveBakedModel.java} (65%) rename src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/{BakedModelTRSR.java => TRSRBakedModel.java} (66%) rename src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/{CustomModelLoaderCover.java => CoverCustomModelLoader.java} (95%) delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderDefault.java rename src/main/java/com/raoulvdberge/refinedstorage/tile/{TileDiskDrive.java => DiskDriveTile.java} (89%) mode change 100755 => 100644 create mode 100644 src/main/resources/assets/refinedstorage/models/item/disk_drive.json rename src/main/resources/{assets => data}/refinedstorage/recipes/disk_drive.json (79%) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index 09937b9ec..968f73cf5 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -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 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())); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 87ce037e4..6c8fabe0e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -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 TileEntityType registerTileDataParameters(TileEntityType 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 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index c0ff9a14a..0cbff412c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -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(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index 3c68aa35d..3f430eaab 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -27,8 +27,10 @@ public class RSTiles { public static final TileEntityType DESTRUCTOR = null; //@ObjectHolder(RS.ID + ":detector") public static final TileEntityType DETECTOR = null; - //@ObjectHolder(RS.ID + ":disk_drive") - public static final TileEntityType DISK_DRIVE = null; + + @ObjectHolder(RS.ID + ":disk_drive") + public static final TileEntityType DISK_DRIVE = null; + //@ObjectHolder(RS.ID + ":disk_manipulator") public static final TileEntityType DISK_MANIPULATOR = null; //@ObjectHolder(RS.ID + ":exporter") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java index d7cab3e20..3a3181de6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java @@ -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; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java index 1579ff88a..f78ef59aa 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java @@ -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 getTypeParameter() { - return TileDiskDrive.TYPE; + return DiskDriveTile.TYPE; } @Override public TileDataParameter getRedstoneModeParameter() { - return TileDiskDrive.REDSTONE_MODE; + return DiskDriveTile.REDSTONE_MODE; } @Override public TileDataParameter getCompareParameter() { - return TileDiskDrive.COMPARE; + return DiskDriveTile.COMPARE; } @Override public TileDataParameter getFilterParameter() { - return TileDiskDrive.MODE; + return DiskDriveTile.MODE; } @Override public TileDataParameter getPriorityParameter() { - return TileDiskDrive.PRIORITY; + return DiskDriveTile.PRIORITY; } @Override public TileDataParameter 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 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java old mode 100755 new mode 100644 similarity index 66% rename from src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java rename to src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java index fe4c7ac35..dd392703a --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/DiskDriveBlock.java @@ -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 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) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/DiskDriveContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/DiskDriveContainer.java index 3c8dd039b..184264aec 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/DiskDriveContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/DiskDriveContainer.java @@ -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; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelOverrideRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelOverrideRegistry.java index 886ebf8fd..9635321a1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelOverrideRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelOverrideRegistry.java @@ -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> registry = new HashMap<>(); + public interface BakedModelOverrideFactory { + IBakedModel create(IBakedModel base, Map registry); + } - public void add(ResourceLocation id, Function factory) { + private Map registry = new HashMap<>(); + + public void add(ResourceLocation id, BakedModelOverrideFactory factory) { registry.put(id, factory); } @Nullable - public Function get(ResourceLocation id) { + public BakedModelOverrideFactory get(ResourceLocation id) { return registry.get(id); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java deleted file mode 100644 index a75fbc533..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java +++ /dev/null @@ -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 getDependencies() { - List 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 getTextures(Function modelGetter, Set 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; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/DiskDriveBakedModel.java similarity index 65% rename from src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelDiskDrive.java rename to src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/DiskDriveBakedModel.java index 16f0f06ee..98c1c67e0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/DiskDriveBakedModel.java @@ -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> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override public List 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 quads = models.get(facing).getQuads(key.state, key.side, new Random()); + List 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 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 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); } } -*/ \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelTRSR.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/TRSRBakedModel.java similarity index 66% rename from src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelTRSR.java rename to src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/TRSRBakedModel.java index 22161849c..caaee77cf 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelTRSR.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/TRSRBakedModel.java @@ -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 getQuads(BlockState state, Direction side, long rand) { + public List getQuads(BlockState state, Direction side, Random rand) { // transform quads obtained from parent - List quads = new ArrayList<>(); + ImmutableList.Builder 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(); } } -}*/ \ No newline at end of file +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderCover.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CoverCustomModelLoader.java similarity index 95% rename from src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderCover.java rename to src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CoverCustomModelLoader.java index dd79750e5..66d1bcec8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CoverCustomModelLoader.java @@ -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 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderDefault.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderDefault.java deleted file mode 100644 index ace113347..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/loader/CustomModelLoaderDefault.java +++ /dev/null @@ -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 model; - - public CustomModelLoaderDefault(ResourceLocation modelLocation, Supplier 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(); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java old mode 100755 new mode 100644 similarity index 89% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java rename to src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java index f3fb50471..01ec92faa --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/DiskDriveTile.java @@ -14,13 +14,13 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileDiskDrive extends NetworkNodeTile { - public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); - public static final TileDataParameter COMPARE = IComparable.createParameter(); - public static final TileDataParameter MODE = IFilterable.createParameter(); - public static final TileDataParameter TYPE = IType.createParameter(); - public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); - public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { +public class DiskDriveTile extends NetworkNodeTile { + public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); + public static final TileDataParameter COMPARE = IComparable.createParameter(); + public static final TileDataParameter MODE = IFilterable.createParameter(); + public static final TileDataParameter TYPE = IType.createParameter(); + public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); + public static final TileDataParameter 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 { return stored; }); - public static final TileDataParameter CAPACITY = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { + public static final TileDataParameter 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 { 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 { } } - /* TODO @Override + /* TODO + @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable Direction facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java index 610b49898..a9f8424b9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskManipulator.java @@ -32,14 +32,14 @@ public class TileDiskManipulator extends NetworkNodeTile