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.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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user