Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-03 01:50:07 +01:00
Parse empty sign lines as empty JSON strings.
Since the server doesn't bother validating sign text, and the client validates it by crashing. Note that this attempts to wrap strings as JSON, but hasn't been fully tested.
Dieser Commit ist enthalten in:
Ursprung
219d2da0ff
Commit
867e59ba3d
@ -22,6 +22,7 @@ package com.sk89q.worldedit.blocks;
|
|||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.StringTag;
|
import com.sk89q.jnbt.StringTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
|
import com.sk89q.worldedit.util.gson.GsonUtil;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -33,6 +34,8 @@ public class SignBlock extends BaseBlock implements TileEntityBlock {
|
|||||||
|
|
||||||
private String[] text;
|
private String[] text;
|
||||||
|
|
||||||
|
private static String EMPTY = "{\"text\":\"\"}";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct the sign without text.
|
* Construct the sign without text.
|
||||||
*
|
*
|
||||||
@ -41,7 +44,7 @@ public class SignBlock extends BaseBlock implements TileEntityBlock {
|
|||||||
*/
|
*/
|
||||||
public SignBlock(int type, int data) {
|
public SignBlock(int type, int data) {
|
||||||
super(type, data);
|
super(type, data);
|
||||||
this.text = new String[] { "", "", "", "" };
|
this.text = new String[] { EMPTY, EMPTY, EMPTY, EMPTY };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +57,15 @@ public class SignBlock extends BaseBlock implements TileEntityBlock {
|
|||||||
public SignBlock(int type, int data, String[] text) {
|
public SignBlock(int type, int data, String[] text) {
|
||||||
super(type, data);
|
super(type, data);
|
||||||
if (text == null) {
|
if (text == null) {
|
||||||
this.text = new String[] { "", "", "", "" };
|
this.text = new String[] { EMPTY, EMPTY, EMPTY, EMPTY };
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < text.length; i++) {
|
||||||
|
if (text[i].isEmpty()) {
|
||||||
|
text[i] = EMPTY;
|
||||||
|
} else {
|
||||||
|
text[i] = "{\"text\":\"" + GsonUtil.stringValue(text[i]) + "\"}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.text = text;
|
this.text = text;
|
||||||
}
|
}
|
||||||
@ -110,7 +121,7 @@ public class SignBlock extends BaseBlock implements TileEntityBlock {
|
|||||||
|
|
||||||
Tag t;
|
Tag t;
|
||||||
|
|
||||||
text = new String[] { "", "", "", "" };
|
text = new String[] { EMPTY, EMPTY, EMPTY, EMPTY };
|
||||||
|
|
||||||
t = values.get("id");
|
t = values.get("id");
|
||||||
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Sign")) {
|
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals("Sign")) {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.util.gson;
|
package com.sk89q.worldedit.util.gson;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.Vector;
|
||||||
|
|
||||||
@ -41,4 +42,8 @@ public final class GsonUtil {
|
|||||||
return gsonBuilder;
|
return gsonBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Gson gson = new Gson();
|
||||||
|
public static String stringValue(String s) {
|
||||||
|
return gson.toJson(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren