Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non-NBT/MCA code cleanups #374

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ public BiomeRegistry.BiomeIdentifier getOldValue(ChunkData data) {

@Override
public void change(ChunkData data) {
VersionController.getChunkFilter(data.region().getData().getInt("DataVersion")).changeBiome(data.region().getData(), getNewValue());
VersionController.getChunkFilter(data.getDataVersion()).changeBiome(data.region().getData(), getNewValue());
}

@Override
public void force(ChunkData data) {
VersionController.getChunkFilter(data.region().getData().getInt("DataVersion")).forceBiome(data.region().getData(), getNewValue());
VersionController.getChunkFilter(data.getDataVersion()).forceBiome(data.region().getData(), getNewValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public DataVersionField() {

@Override
public Integer getOldValue(ChunkData data) {
return ValidationHelper.withDefault(() -> data.region().getData().getInt("DataVersion"), null);
return ValidationHelper.withDefault(data::getDataVersion, null);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
VersionController.getEntityFilter(data.region().getData().getInt("DataVersion")).deleteEntities(data, null);
VersionController.getEntityFilter(data.getDataVersion()).deleteEntities(data, null);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ public boolean parseNewValue(String s) {
@Override
public void change(ChunkData data) {
if (data.region() != null && data.region().getData() != null) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.deleteSections(data.region().getData(), getNewValue());
}
// delete entities and poi as well
if (data.entities() != null && data.entities().getData() != null) {
EntityFilter entityFilter = VersionController.getEntityFilter(data.entities().getData().getInt("DataVersion"));
EntityFilter entityFilter = VersionController.getEntityFilter(data.getDataVersion());
entityFilter.deleteEntities(data, getNewValue());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
CompoundTag references = chunkFilter.getStructureReferences(data.region().getData());
CompoundTag starts = chunkFilter.getStructureStarts(data.region().getData());
for (String structure : getNewValue()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
StringTag status = chunkFilter.getStatus(data.region().getData());

if ("empty".equals(status.getValue())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData root) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(root.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(root.getDataVersion());
chunkFilter.forceBlending(root.region().getData());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public InhabitedTimeField() {

@Override
public Long getOldValue(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag inhabitedTime = chunkFilter.getInhabitedTime(data.region().getData());
return inhabitedTime == null ? null : inhabitedTime.asLong();
}
Expand All @@ -32,7 +32,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag tag = chunkFilter.getInhabitedTime(data.region().getData());
if (tag != null) {
chunkFilter.setInhabitedTime(data.region().getData(), getNewValue());
Expand All @@ -41,7 +41,7 @@ public void change(ChunkData data) {

@Override
public void force(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.setInhabitedTime(data.region().getData(), getNewValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public LastUpdateField() {

@Override
public Long getOldValue(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag lastUpdate = chunkFilter.getLastUpdate(data.region().getData());
return lastUpdate == null ? null : lastUpdate.asLong();
}
Expand All @@ -32,7 +32,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag tag = chunkFilter.getLastUpdate(data.region().getData());
if (tag != null) {
chunkFilter.setLastUpdate(data.region().getData(), getNewValue());
Expand All @@ -41,7 +41,7 @@ public void change(ChunkData data) {

@Override
public void force(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.setLastUpdate(data.region().getData(), getNewValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public LightPopulatedField() {

@Override
public Byte getOldValue(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
ByteTag lightPopulated = chunkFilter.getLightPopulated(data.region().getData());
return lightPopulated == null ? null : lightPopulated.asByte();
}
Expand All @@ -35,7 +35,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
ByteTag tag = chunkFilter.getLightPopulated(data.region().getData());
if (tag != null) {
chunkFilter.setLightPopulated(data.region().getData(), getNewValue());
Expand All @@ -44,7 +44,7 @@ public void change(ChunkData data) {

@Override
public void force(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.setLightPopulated(data.region().getData(), getNewValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public void change(ChunkData data) {

// attempt to fix chunk coordinates of structure references

ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
CompoundTag references = chunkFilter.getStructureReferences(data.region().getData());
int xPos = chunkFilter.getXPos(data.region().getData()).asInt();
int zPos = chunkFilter.getZPos(data.region().getData()).asInt();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public Map<String, ChunkFilter.BlockReplaceData> getOldValue(ChunkData data) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.replaceBlocks(data.region().getData(), getNewValue());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public StatusField() {

@Override
public String getOldValue(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
StringTag status = chunkFilter.getStatus(data.region().getData());
return status == null ? null : status.getValue();
}
Expand All @@ -56,7 +56,7 @@ public boolean parseNewValue(String s) {

@Override
public void change(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
StringTag tag = chunkFilter.getStatus(data.region().getData());
if (tag != null) {
chunkFilter.setStatus(data.region().getData(), getNewValue());
Expand All @@ -65,7 +65,7 @@ public void change(ChunkData data) {

@Override
public void force(ChunkData data) {
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
chunkFilter.setStatus(data.region().getData(), getNewValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public boolean contains(List<BiomeRegistry.BiomeIdentifier> value, ChunkData dat
if (data.region() == null) {
return false;
}
return VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"))
return VersionController.getChunkFilter(data.getDataVersion())
.matchBiomes(data.region().getData(), value);
}

Expand All @@ -52,7 +52,7 @@ public boolean intersects(List<BiomeRegistry.BiomeIdentifier> value, ChunkData d
if (data.region() == null) {
return false;
}
return VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"))
return VersionController.getChunkFilter(data.getDataVersion())
.matchAnyBiome(data.region().getData(), value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ protected Integer getNumber(ChunkData data) {
return 9;
}

ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
StringTag tag = chunkFilter.getStatus(data.region().getData());
if (tag == null || !tag.getValue().equals("full")) {
return 9;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public boolean contains(List<CircleFilterDefinition> value, ChunkData data) {
return false;
}

ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
IntTag xPos = chunkFilter.getXPos(data.region().getData());
IntTag zPos = chunkFilter.getZPos(data.region().getData());
if (xPos == null || zPos == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ protected Integer getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This check is going to be inconsistent with getDataVersion and i think it should be removed entirely.
It could use ValidationHelper.withDefault(data::getDataVersion, 0); if we don't want it to log a warning on failure to find a DataVersion, but i think it would make more sense if it logs the warning because it would imply a chunk corruption.

I also noticed that Region#getFilteredChunks does not check if a chunk is completely empty. There should be a check like this:

if (regionChunk == null && entitiesChunk == null && poiChunk == null) {
    continue;
}

This should stop all filters requiring a DataVersion from throwing an exception if a chunk is completely empty because they shouldn't even be executed.

return 0;
}
return data.region().getData().getInt("DataVersion");
return data.getDataVersion();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,7 @@ private EntityAmountFilter(Operator operator, Comparator comparator, int value)

@Override
protected Integer getNumber(ChunkData data) {
int dataVersion;
if (data.region() != null && data.region().getData() != null) {
dataVersion = data.region().getData().getInt("DataVersion");
} else if (data.entities() != null && data.entities().getData() != null) {
dataVersion = data.entities().getData().getInt("DataVersion");
} else {
return 0;
}
EntityFilter entityFilter = VersionController.getEntityFilter(dataVersion);
EntityFilter entityFilter = VersionController.getEntityFilter(data.getDataVersion());
ListTag entities = entityFilter.getEntities(data);
if (entities == null) {
return 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,7 @@ private EntityFilter(Operator operator, Comparator comparator, List<String> valu

@Override
public boolean contains(List<String> value, ChunkData data) {
int dataVersion;
if (data.region() != null && data.region().getData() != null) {
dataVersion = data.region().getData().getInt("DataVersion");
} else if (data.entities() != null && data.entities().getData() != null) {
dataVersion = data.entities().getData().getInt("DataVersion");
} else {
return false;
}
ListTag entities = VersionController.getEntityFilter(dataVersion).getEntities(data);
ListTag entities = VersionController.getEntityFilter(data.getDataVersion()).getEntities(data);
if (entities == null || entities.getID() == Tag.LONG_ARRAY) {
return false;
}
Expand All @@ -84,7 +76,7 @@ public boolean intersects(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
ListTag entities = VersionController.getEntityFilter(data.region().getData().getInt("DataVersion")).getEntities(data);
ListTag entities = VersionController.getEntityFilter(data.getDataVersion()).getEntities(data);
if (entities == null || entities.getID() == Tag.LONG_ARRAY) {
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ protected Long getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return 0L;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag tag = chunkFilter.getInhabitedTime(data.region().getData());
return tag == null ? 0L : tag.asLong();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ protected Long getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return 0L;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
LongTag tag = chunkFilter.getLastUpdate(data.region().getData());
return tag == null ? 0L : tag.asLong();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ protected Byte getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return 0;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
ByteTag tag = chunkFilter.getLightPopulated(data.region().getData());
return tag == null ? 0 : tag.asByte();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public boolean contains(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
return VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"))
return VersionController.getChunkFilter(data.getDataVersion())
.matchBlockNames(data.region().getData(), value);
}

Expand All @@ -66,15 +66,15 @@ public boolean intersects(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
return VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"))
return VersionController.getChunkFilter(data.getDataVersion())
.matchAnyBlockName(data.region().getData(), value);
}

public boolean equals(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
return VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"))
return VersionController.getChunkFilter(data.getDataVersion())
.paletteEquals(data.region().getData(), value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public boolean contains(PlayerLocationFilterDefinition value, ChunkData data) {
}
}

ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
IntTag xPos = chunkFilter.getXPos(data.region().getData());
IntTag zPos = chunkFilter.getZPos(data.region().getData());
if (xPos == null || zPos == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public boolean isEqual(String value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
StringTag tag = chunkFilter.getStatus(data.region().getData());
return tag != null && value.equals(tag.getValue());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public boolean contains(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
CompoundTag references = chunkFilter.getStructureReferences(data.region().getData());
if (references == null) {
return false;
Expand Down Expand Up @@ -56,7 +56,7 @@ public boolean intersects(List<String> value, ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return false;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
CompoundTag references = chunkFilter.getStructureReferences(data.region().getData());
if (references == null) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ protected Integer getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return 0;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
ListTag tileEntities = chunkFilter.getTileEntities(data.region().getData());
return tileEntities == null ? 0 : tileEntities.size();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected Integer getNumber(ChunkData data) {
if (data.region() == null || data.region().getData() == null) {
return null;
}
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.region().getData().getInt("DataVersion"));
ChunkFilter chunkFilter = VersionController.getChunkFilter(data.getDataVersion());
IntTag tag = chunkFilter.getXPos(data.region().getData());
return tag.asInt();
}
Expand Down
Loading