Fixed save incompatibility with missing types
This commit is contained in:
@@ -37,6 +37,8 @@ public abstract class SaveFileReader{
|
|||||||
"command-center", "legacy-command-center"
|
"command-center", "legacy-command-center"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
protected int lastRegionLength;
|
||||||
|
|
||||||
protected void region(String name, DataInput stream, CounterInputStream counter, IORunner<DataInput> cons) throws IOException{
|
protected void region(String name, DataInput stream, CounterInputStream counter, IORunner<DataInput> cons) throws IOException{
|
||||||
counter.resetCount();
|
counter.resetCount();
|
||||||
int length;
|
int length;
|
||||||
@@ -90,6 +92,7 @@ public abstract class SaveFileReader{
|
|||||||
/** Reads a chunk of some length. Use the runner for reading to catch more descriptive errors. */
|
/** Reads a chunk of some length. Use the runner for reading to catch more descriptive errors. */
|
||||||
public int readChunk(DataInput input, boolean isShort, IORunner<DataInput> runner) throws IOException{
|
public int readChunk(DataInput input, boolean isShort, IORunner<DataInput> runner) throws IOException{
|
||||||
int length = isShort ? input.readUnsignedShort() : input.readInt();
|
int length = isShort ? input.readUnsignedShort() : input.readInt();
|
||||||
|
lastRegionLength = length;
|
||||||
runner.accept(input);
|
runner.accept(input);
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,6 +331,11 @@ public abstract class SaveVersion extends SaveFileReader{
|
|||||||
for(int j = 0; j < amount; j++){
|
for(int j = 0; j < amount; j++){
|
||||||
readChunk(stream, true, in -> {
|
readChunk(stream, true, in -> {
|
||||||
byte typeid = in.readByte();
|
byte typeid = in.readByte();
|
||||||
|
if(EntityMapping.map(typeid) == null){
|
||||||
|
in.skipBytes(lastRegionLength - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Entityc entity = (Entityc)EntityMapping.map(typeid).get();
|
Entityc entity = (Entityc)EntityMapping.map(typeid).get();
|
||||||
entity.read(Reads.get(in));
|
entity.read(Reads.get(in));
|
||||||
entity.add();
|
entity.add();
|
||||||
|
|||||||
Reference in New Issue
Block a user