add setProperty method to the api

This commit is contained in:
Pyrbu 2023-06-26 12:20:42 +02:00
parent 16c48043b4
commit 4489e5dacc
3 changed files with 11 additions and 0 deletions

@ -3,4 +3,5 @@ package lol.pyr.znpcsplus.api.entity;
public interface PropertyHolder {
<T> T getProperty(EntityProperty<T> key);
boolean hasProperty(EntityProperty<?> key);
<T> void setProperty(EntityProperty<T> key, T value);
}

@ -52,4 +52,9 @@ public class HologramLine implements PropertyHolder {
public boolean hasProperty(EntityProperty<?> key) {
return key.getName().equalsIgnoreCase("name") || key.getName().equalsIgnoreCase("invisible");
}
@Override
public <T> void setProperty(EntityProperty<T> key, T value) {
throw new UnsupportedOperationException("Can't set properties on a hologram");
}
}

@ -129,6 +129,11 @@ public class NpcImpl extends Viewable implements Npc {
return propertyMap.containsKey((EntityPropertyImpl<?>) key);
}
@Override
public <T> void setProperty(EntityProperty<T> key, T value) {
setProperty((EntityPropertyImpl<T>) key, value );
}
public <T> void setProperty(EntityPropertyImpl<T> key, T value) {
if (value == null || value.equals(key.getDefaultValue())) removeProperty(key);
else propertyMap.put(key, value);