Skip to content
This repository was archived by the owner on Mar 8, 2022. It is now read-only.

Commit f0717e0

Browse files
committed
support legacy material name
1 parent 9e199e8 commit f0717e0

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

src/main/java/cat/nyaa/nyaautils/particle/ParticleData.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cat.nyaa.nyaautils.NyaaUtils;
55
import org.bukkit.*;
66
import org.bukkit.block.data.BlockData;
7+
import org.bukkit.configuration.ConfigurationSection;
78
import org.bukkit.entity.Player;
89
import org.bukkit.inventory.ItemStack;
910

@@ -33,6 +34,7 @@ public class ParticleData implements ISerializable {
3334
@Serializable
3435
private Material material;
3536
private Map<UUID, Long> lastSend = new HashMap<>();
37+
private Object data = null;
3638

3739
public ParticleData() {
3840

@@ -103,7 +105,6 @@ public void sendParticle(UUID uuid, Location loc, ParticleLimit limit, long time
103105
lastSend.put(uuid, time);
104106
double distance = Bukkit.getViewDistance() * 16;
105107
distance *= distance;
106-
Object data = getData();
107108
for (Player player : loc.getWorld().getPlayers()) {
108109
if (player.isValid() && !NyaaUtils.instance.particleTask.bypassPlayers.contains(player.getUniqueId())
109110
&& loc.distanceSquared(player.getLocation()) <= distance) {
@@ -113,7 +114,7 @@ public void sendParticle(UUID uuid, Location loc, ParticleLimit limit, long time
113114
offsetY > limit.getOffsetY() ? limit.getOffsetY() : offsetY,
114115
offsetZ > limit.getOffsetZ() ? limit.getOffsetZ() : offsetZ,
115116
extra > limit.getExtra() ? limit.getExtra() : extra,
116-
data);
117+
getData());
117118
}
118119
}
119120
}
@@ -128,14 +129,37 @@ public void setMaterial(Material material) {
128129
}
129130

130131
private Object getData() {
131-
if (particle.getDataType().equals(ItemStack.class)) {
132-
return new ItemStack(material);
133-
} else if (particle.getDataType().equals(BlockData.class)) {
134-
return material.createBlockData();
132+
if (data != null || particle.getDataType().equals(Void.class)) {
133+
return data;
134+
} else if (particle.getDataType().equals(ItemStack.class) && material != null && material.isItem()) {
135+
data = new ItemStack(material);
136+
} else if (particle.getDataType().equals(BlockData.class) && material != null && material.isBlock()) {
137+
data = material.createBlockData();
135138
} else if (particle.getDataType().equals(Particle.DustOptions.class)) {
136-
return new Particle.DustOptions(Color.fromRGB(dustOptions_color), (float) dustOptions_size);
137-
} else {
138-
return null;
139+
data = new Particle.DustOptions(Color.fromRGB(dustOptions_color), (float) dustOptions_size);
139140
}
141+
return data;
142+
}
143+
144+
@Override
145+
public void serialize(ConfigurationSection config) {
146+
ISerializable.serialize(config, this);
147+
config.set("version", Bukkit.getVersion());
148+
}
149+
150+
@Override
151+
public void deserialize(ConfigurationSection config) {
152+
if (config.getString("version", "").length() == 0) {
153+
String materialName = config.getString("material", null);
154+
if (materialName != null) {
155+
Material m = Material.matchMaterial(materialName, true);
156+
if (m.isBlock() && config.isInt("dataValue")) {
157+
config.set("material", Bukkit.getUnsafe().fromLegacy(m, (byte) config.getInt("dataValue")).getMaterial().name());
158+
} else {
159+
config.set("material", Bukkit.getUnsafe().fromLegacy(m).name());
160+
}
161+
}
162+
}
163+
ISerializable.deserialize(config, this);
140164
}
141165
}

0 commit comments

Comments
 (0)