Skip to content

Commit

Permalink
Fixed backwards compatibility with entity serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
Intelli committed Jul 24, 2024
1 parent 06208a6 commit 9aea187
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 19 deletions.
10 changes: 10 additions & 0 deletions src/main/java/net/coreprotect/bukkit/BukkitAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -298,4 +298,14 @@ public EntityType getEntityType(Material material) {
}
}

@Override
public Object getRegistryKey(Object value) {
return value;
}

@Override
public Object getRegistryValue(String key, Object tClass) {
return null;
}

}
4 changes: 4 additions & 0 deletions src/main/java/net/coreprotect/bukkit/BukkitInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,8 @@ public interface BukkitInterface {

public EntityType getEntityType(Material material);

public Object getRegistryKey(Object value);

public Object getRegistryValue(String key, Object tClass);

}
7 changes: 2 additions & 5 deletions src/main/java/net/coreprotect/bukkit/Bukkit_v1_19.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
import java.util.HashSet;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Frog;
import org.bukkit.entity.Goat;
Expand All @@ -33,7 +31,7 @@ public Bukkit_v1_19() {
public boolean getEntityMeta(LivingEntity entity, List<Object> info) {
if (entity instanceof Frog) {
Frog frog = (Frog) entity;
info.add(frog.getVariant().getKey().asString());
info.add(BukkitAdapter.ADAPTER.getRegistryKey(frog.getVariant()));
}
else if (entity instanceof Tadpole) {
Tadpole tadpole = (Tadpole) entity;
Expand Down Expand Up @@ -61,8 +59,7 @@ public boolean setEntityMeta(Entity entity, Object value, int count) {
Frog frog = (Frog) entity;
if (count == 0) {
if (value instanceof String) {
NamespacedKey namespacedKey = NamespacedKey.fromString((String) value);
value = Bukkit.getRegistry(Frog.Variant.class).get(namespacedKey);
value = BukkitAdapter.ADAPTER.getRegistryValue((String) value, Frog.Variant.class);
}
Frog.Variant set = (Frog.Variant) value;
frog.setVariant(set);
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/net/coreprotect/bukkit/Bukkit_v1_21.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import java.util.Arrays;
import java.util.HashSet;

import org.bukkit.Bukkit;
import org.bukkit.Keyed;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Tag;
import org.bukkit.entity.EntityType;

Expand Down Expand Up @@ -40,4 +43,17 @@ public EntityType getEntityType(Material material) {
}
}

@Override
public Object getRegistryKey(Object value) {
return ((Keyed) value).getKey().asString();
}

@Override
public Object getRegistryValue(String key, Object tClass) {
NamespacedKey namespacedKey = NamespacedKey.fromString(key);
// return RegistryAccess.registryAccess().getRegistry(RegistryKey.CAT_VARIANT).get((NamespacedKey)value);
return Bukkit.getRegistry((Class) tClass).get(namespacedKey);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ else if (entity instanceof IronGolem) {
}
else if (entity instanceof Cat) {
Cat cat = (Cat) entity;
info.add(cat.getCatType().getKey().asString());
info.add(BukkitAdapter.ADAPTER.getRegistryKey(cat.getCatType()));
info.add(cat.getCollarColor());
}
else if (entity instanceof Fox) {
Expand Down Expand Up @@ -404,8 +404,8 @@ else if (entity instanceof AbstractVillager) {

if (abstractVillager instanceof Villager) {
Villager villager = (Villager) abstractVillager;
info.add(villager.getProfession().getKey().asString());
info.add(villager.getVillagerType().getKey().asString());
info.add(BukkitAdapter.ADAPTER.getRegistryKey(villager.getProfession()));
info.add(BukkitAdapter.ADAPTER.getRegistryKey(villager.getVillagerType()));
info.add(recipes);
info.add(villager.getVillagerLevel());
info.add(villager.getVillagerExperience());
Expand Down Expand Up @@ -433,7 +433,7 @@ else if (entity instanceof Wolf) {
else if (entity instanceof ZombieVillager) {
ZombieVillager zombieVillager = (ZombieVillager) entity;
info.add(zombieVillager.isBaby());
info.add(zombieVillager.getVillagerProfession().getKey().asString());
info.add(BukkitAdapter.ADAPTER.getRegistryKey(zombieVillager.getVillagerProfession()));
}
else if (entity instanceof Zombie) {
Zombie zombie = (Zombie) entity;
Expand Down
14 changes: 4 additions & 10 deletions src/main/java/net/coreprotect/utility/entity/EntityUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.OfflinePlayer;
import org.bukkit.attribute.Attributable;
import org.bukkit.attribute.Attribute;
Expand Down Expand Up @@ -233,9 +232,7 @@ else if (entity instanceof Cat) {
Cat cat = (Cat) entity;
if (count == 0) {
if (value instanceof String) {
NamespacedKey namespacedKey = NamespacedKey.fromString((String) value);
value = Bukkit.getRegistry(Cat.Type.class).get(namespacedKey);
// value = RegistryAccess.registryAccess().getRegistry(RegistryKey.CAT_VARIANT).get((NamespacedKey)value);
value = BukkitAdapter.ADAPTER.getRegistryValue((String) value, Cat.Type.class);
}
Cat.Type set = (Cat.Type) value;
cat.setCatType(set);
Expand Down Expand Up @@ -334,8 +331,7 @@ else if (entity instanceof AbstractVillager) {
if (abstractVillager instanceof Villager) {
Villager villager = (Villager) abstractVillager;
if (value instanceof String) {
NamespacedKey namespacedKey = NamespacedKey.fromString((String) value);
value = Bukkit.getRegistry(Profession.class).get(namespacedKey);
value = BukkitAdapter.ADAPTER.getRegistryValue((String) value, Profession.class);
}
Profession set = (Profession) value;
villager.setProfession(set);
Expand All @@ -345,8 +341,7 @@ else if (count == 1) {
if (abstractVillager instanceof Villager && value instanceof Villager.Type) {
Villager villager = (Villager) abstractVillager;
if (value instanceof String) {
NamespacedKey namespacedKey = NamespacedKey.fromString((String) value);
value = Bukkit.getRegistry(Villager.Type.class).get(namespacedKey);
value = BukkitAdapter.ADAPTER.getRegistryValue((String) value, Villager.Type.class);
}
Villager.Type set = (Villager.Type) value;
villager.setVillagerType(set);
Expand Down Expand Up @@ -442,8 +437,7 @@ else if (entity instanceof ZombieVillager) {
}
else if (count == 1) {
if (value instanceof String) {
NamespacedKey namespacedKey = NamespacedKey.fromString((String) value);
value = Bukkit.getRegistry(Profession.class).get(namespacedKey);
value = BukkitAdapter.ADAPTER.getRegistryValue((String) value, Profession.class);
}
Profession set = (Profession) value;
zombieVillager.setVillagerProfession(set);
Expand Down

0 comments on commit 9aea187

Please sign in to comment.