Fix disk drive rendering

This commit is contained in:
Raoul Van den Berge
2016-10-24 21:51:22 +02:00
parent 21673c1b28
commit 0c5a575c88
2 changed files with 39 additions and 13 deletions

View File

@@ -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<BakedQuad> 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);

View File

@@ -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