mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2024-11-24 03:05:56 +01:00
Fixed rotatable blocks in island level other than 0
This commit is contained in:
parent
af583ed710
commit
15667c8635
@ -375,7 +375,9 @@ public class LevellingManager {
|
|||||||
return materialStorage;
|
return materialStorage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LevellingData {
|
private static class LevellingData {
|
||||||
|
private final static int version = NMSUtil.getVersionNumber();
|
||||||
|
|
||||||
private final Material material;
|
private final Material material;
|
||||||
private final byte data;
|
private final byte data;
|
||||||
private final EntityType spawnerType;
|
private final EntityType spawnerType;
|
||||||
@ -391,12 +393,32 @@ public class LevellingManager {
|
|||||||
if (!(obj instanceof LevellingData)) return false;
|
if (!(obj instanceof LevellingData)) return false;
|
||||||
LevellingData data = (LevellingData) obj;
|
LevellingData data = (LevellingData) obj;
|
||||||
if (this == obj) return true;
|
if (this == obj) return true;
|
||||||
return this.material == data.material && this.data == data.data && this.spawnerType == data.spawnerType;
|
if (version > 12) {
|
||||||
|
return this.material == data.material && this.spawnerType == data.spawnerType;
|
||||||
|
} else {
|
||||||
|
if (this.data == 0 && data.data == 0)
|
||||||
|
return this.material == data.material && this.spawnerType == data.spawnerType;
|
||||||
|
|
||||||
|
Materials thisMaterials = Materials.requestMaterials(this.material.name(), this.data);
|
||||||
|
Materials otherMaterials = Materials.requestMaterials(this.material.name(), (byte) 0);
|
||||||
|
|
||||||
|
return thisMaterials == otherMaterials && this.spawnerType == data.spawnerType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(this.material, this.data, this.spawnerType);
|
if (version > 12) {
|
||||||
|
return Objects.hash(this.material, this.spawnerType);
|
||||||
|
} else {
|
||||||
|
if (this.data == 0)
|
||||||
|
return Objects.hash(this.material, true, this.spawnerType);
|
||||||
|
|
||||||
|
Materials thisMaterials = Materials.requestMaterials(this.material.name(), this.data);
|
||||||
|
Materials otherMaterials = Materials.requestMaterials(this.material.name(), (byte) 0);
|
||||||
|
|
||||||
|
return Objects.hash(this.material, thisMaterials == otherMaterials, this.spawnerType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Materials getMaterials() {
|
private Materials getMaterials() {
|
||||||
@ -415,7 +437,7 @@ public class LevellingManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class QueuedIsland {
|
private static class QueuedIsland {
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final Island island;
|
private final Island island;
|
||||||
|
|
||||||
|
@ -1125,37 +1125,42 @@ public enum Materials {
|
|||||||
private static HashMap<String, Materials> cachedSearch = new HashMap<>();
|
private static HashMap<String, Materials> cachedSearch = new HashMap<>();
|
||||||
|
|
||||||
public static Materials requestMaterials(String name, byte data) {
|
public static Materials requestMaterials(String name, byte data) {
|
||||||
if (cachedSearch.containsKey(name.toUpperCase() + "," + data)) {
|
if (cachedSearch.containsKey(name.toUpperCase() + "," + data))
|
||||||
return cachedSearch.get(name.toUpperCase() + "," + data);
|
return cachedSearch.get(name.toUpperCase() + "," + data);
|
||||||
|
|
||||||
|
Materials pmat = internalRequestMaterials(name, data);
|
||||||
|
if (pmat != null || data == 0) {
|
||||||
|
cachedSearch.put(name.toUpperCase() + "," + data, pmat);
|
||||||
|
return pmat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pmat = internalRequestMaterials(name, (byte) 0);
|
||||||
|
cachedSearch.put(name.toUpperCase() + "," + data, pmat);
|
||||||
|
return pmat;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Materials internalRequestMaterials(String name, byte data) {
|
||||||
Materials pmat = null;
|
Materials pmat = null;
|
||||||
|
|
||||||
// Try 1.13+ names
|
// Try 1.13+ names
|
||||||
for (Materials mat : Materials.values()) {
|
for (Materials mat : Materials.values()) {
|
||||||
if (name.equalsIgnoreCase(mat.name())) {
|
if (name.equalsIgnoreCase(mat.name())) {
|
||||||
if (pmat == null) {
|
if (pmat == null)
|
||||||
pmat = mat;
|
pmat = mat;
|
||||||
}
|
|
||||||
|
|
||||||
if (((byte) mat.data) == data) {
|
if (((byte) mat.data) == data)
|
||||||
cachedSearch.put(mat.name() + "," + data, mat);
|
|
||||||
return mat;
|
return mat;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try 1.12- names
|
// Try 1.12- names
|
||||||
for (Materials mat : Materials.values()) {
|
for (Materials mat : Materials.values()) {
|
||||||
if (name.equalsIgnoreCase(mat.old12Mat)) {
|
if (name.equalsIgnoreCase(mat.old12Mat)) {
|
||||||
if (pmat == null) {
|
if (pmat == null)
|
||||||
pmat = mat;
|
pmat = mat;
|
||||||
}
|
|
||||||
|
|
||||||
if (((byte) mat.data) == data) {
|
if (((byte) mat.data) == data)
|
||||||
cachedSearch.put(mat.old12Mat + "," + data, mat);
|
|
||||||
return mat;
|
return mat;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user