From 0c5a575c88d5df405af3a5510d8465655fafd1dd Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Mon, 24 Oct 2016 21:51:22 +0200 Subject: [PATCH] Fix disk drive rendering --- .../render/BakedModelDiskDrive.java | 48 ++++++++++++++----- .../refinedstorage/tile/TileDiskDrive.java | 4 ++ 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java index 4a41876b5..aa776a310 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java @@ -18,22 +18,50 @@ import net.minecraftforge.common.property.IExtendedBlockState; import javax.annotation.Nullable; import javax.vecmath.Vector3f; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class BakedModelDiskDrive implements IBakedModel { - class CacheKey { + private class CacheKey { private IBlockState state; private EnumFacing side; private Integer[] diskState; - CacheKey(IBlockState state, EnumFacing side, Integer[] diskState) { + CacheKey(IBlockState state, @Nullable EnumFacing side, Integer[] diskState) { this.state = state; this.side = side; this.diskState = diskState; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + CacheKey cacheKey = (CacheKey) o; + + if (!state.equals(cacheKey.state)) { + return false; + } + + if (side != cacheKey.side) { + return false; + } + + return Arrays.equals(diskState, cacheKey.diskState); + } + + @Override + public int hashCode() { + int result = state.hashCode(); + result = 31 * result + (side != null ? side.hashCode() : 0); + result = 31 * result + Arrays.hashCode(diskState); + return result; + } } private IBakedModel base; @@ -99,7 +127,7 @@ public class BakedModelDiskDrive implements IBakedModel { @Override public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { - if (!(state instanceof IExtendedBlockState) || side == null) { + if (!(state instanceof IExtendedBlockState)) { return base.getQuads(state, side, rand); } @@ -109,12 +137,6 @@ public class BakedModelDiskDrive implements IBakedModel { return base.getQuads(state, side, rand); } - for (Integer individualState : diskState) { - if (individualState == null) { - return base.getQuads(state, side, rand); - } - } - CacheKey key = new CacheKey(((IExtendedBlockState) state).getClean(), side, diskState); return cache.getUnchecked(key); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java index 038fb3299..37ec69f37 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileDiskDrive.java @@ -209,6 +209,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl dataManager.addWatchedParameter(TYPE); dataManager.addWatchedParameter(VOID_EXCESS); dataManager.addWatchedParameter(ACCESS_TYPE); + + for (int i = 0; i < 8; ++i) { + diskState[i] = DISK_STATE_NONE; + } } @Override