Fix disk drive rendering
This commit is contained in:
@@ -18,22 +18,50 @@ import net.minecraftforge.common.property.IExtendedBlockState;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.vecmath.Vector3f;
|
import javax.vecmath.Vector3f;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class BakedModelDiskDrive implements IBakedModel {
|
public class BakedModelDiskDrive implements IBakedModel {
|
||||||
class CacheKey {
|
private class CacheKey {
|
||||||
private IBlockState state;
|
private IBlockState state;
|
||||||
private EnumFacing side;
|
private EnumFacing side;
|
||||||
private Integer[] diskState;
|
private Integer[] diskState;
|
||||||
|
|
||||||
CacheKey(IBlockState state, EnumFacing side, Integer[] diskState) {
|
CacheKey(IBlockState state, @Nullable EnumFacing side, Integer[] diskState) {
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.side = side;
|
this.side = side;
|
||||||
this.diskState = diskState;
|
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;
|
private IBakedModel base;
|
||||||
@@ -99,7 +127,7 @@ public class BakedModelDiskDrive implements IBakedModel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
|
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);
|
return base.getQuads(state, side, rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,12 +137,6 @@ public class BakedModelDiskDrive implements IBakedModel {
|
|||||||
return base.getQuads(state, side, rand);
|
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);
|
CacheKey key = new CacheKey(((IExtendedBlockState) state).getClean(), side, diskState);
|
||||||
|
|
||||||
return cache.getUnchecked(key);
|
return cache.getUnchecked(key);
|
||||||
|
|||||||
@@ -209,6 +209,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
|||||||
dataManager.addWatchedParameter(TYPE);
|
dataManager.addWatchedParameter(TYPE);
|
||||||
dataManager.addWatchedParameter(VOID_EXCESS);
|
dataManager.addWatchedParameter(VOID_EXCESS);
|
||||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||||
|
|
||||||
|
for (int i = 0; i < 8; ++i) {
|
||||||
|
diskState[i] = DISK_STATE_NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user