Skip to content

Commit

Permalink
added KyoyuRegion JsonAdapter for fix compatible issue before 1.14
Browse files Browse the repository at this point in the history
  • Loading branch information
topi-banana committed Jan 31, 2025
1 parent 4cbdab6 commit 32a7b4f
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/vulpeus/kyoyu/placement/KyoyuRegion.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.vulpeus.kyoyu.placement;

import com.google.gson.annotations.JsonAdapter;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;

@JsonAdapter(KyoyuRegionJsonAdapter.class)
public class KyoyuRegion {

private final BlockPos pos;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.vulpeus.kyoyu.placement;

import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;

import java.io.IOException;

public class KyoyuRegionJsonAdapter extends TypeAdapter<KyoyuRegion> {
@Override
public void write(JsonWriter out, KyoyuRegion value) throws IOException {
out.beginObject();
out.name("name").value(value.getName());
out.name("pos").value(value.getPos().asLong());
out.name("mirror").value(value.getMirror().name());
out.name("rotation").value(value.getRotation().name());
out.name("ignoreEntity").value(value.ignoreEntities());
out.name("enable").value(value.isEnable());
out.endObject();
}

@Override
public KyoyuRegion read(JsonReader in) throws IOException {
String name = "none";
BlockPos pos = BlockPos.ZERO;
Mirror mirror = Mirror.NONE;
Rotation rotation = Rotation.NONE;
boolean ignoreEntity = false;
boolean enable = true;

in.beginObject();
while (in.hasNext()) {
String key = in.nextName();
switch (key) {
case "name":
name = in.nextString();
break;
case "pos":
pos = BlockPos.of(in.nextLong());
break;
case "mirror":
mirror = Mirror.valueOf(in.nextString());
break;
case "rotation":
rotation = Rotation.valueOf(in.nextString());
break;
case "ignoreEntity":
ignoreEntity = in.nextBoolean();
break;
case "enable":
enable = in.nextBoolean();
break;
default:
in.skipValue();
}
}
in.endObject();

return new KyoyuRegion(pos, mirror, rotation, name, ignoreEntity, enable);
}
}

0 comments on commit 32a7b4f

Please sign in to comment.