ignore applying disallowed property
This commit is contained in:
parent
a5de0680c8
commit
256f47bb94
4 changed files with 12 additions and 3 deletions
plugin/src/main/java/lol/pyr/znpcsplus
commands/property
npc
storage/yaml
|
@ -37,7 +37,7 @@ public class PropertyRemoveCommand implements CommandHandler {
|
|||
public List<String> suggest(CommandContext context) throws CommandExecutionException {
|
||||
if (context.argSize() == 1) return context.suggestCollection(npcRegistry.getModifiableIds());
|
||||
if (context.argSize() == 2) return context.suggestStream(context.suggestionParse(0, NpcEntryImpl.class)
|
||||
.getNpc().getAppliedProperties().stream().filter(EntityProperty::isPlayerModifiable).map(EntityProperty::getName));
|
||||
.getNpc().getAllProperties().stream().filter(EntityProperty::isPlayerModifiable).map(EntityProperty::getName));
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.bukkit.World;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class NpcImpl extends Viewable implements Npc {
|
||||
private final PacketFactory packetFactory;
|
||||
|
@ -163,9 +164,13 @@ public class NpcImpl extends Viewable implements Npc {
|
|||
setProperty((EntityPropertyImpl<T>) property, (T) value);
|
||||
}
|
||||
|
||||
public Set<EntityProperty<?>> getAllProperties() {
|
||||
return Collections.unmodifiableSet(propertyMap.keySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<EntityProperty<?>> getAppliedProperties() {
|
||||
return Collections.unmodifiableSet(propertyMap.keySet());
|
||||
return Collections.unmodifiableSet(propertyMap.keySet()).stream().filter(type::isAllowedProperty).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public List<InteractionActionImpl> getActions() {
|
||||
|
|
|
@ -50,6 +50,10 @@ public class NpcTypeImpl implements NpcType {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isAllowedProperty(EntityPropertyImpl<?> entityProperty) {
|
||||
return !entityProperty.isPlayerModifiable() || allowedProperties.contains(entityProperty);
|
||||
}
|
||||
|
||||
protected static final class Builder {
|
||||
private final static Logger logger = Logger.getLogger("NpcTypeBuilder");
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ public class YamlStorage implements NpcStorage {
|
|||
config.set("location", serializeLocation(npc.getLocation()));
|
||||
config.set("type", npc.getType().getName());
|
||||
|
||||
for (EntityProperty<?> property : npc.getAppliedProperties()) try {
|
||||
for (EntityProperty<?> property : npc.getAllProperties()) try {
|
||||
PropertySerializer<?> serializer = propertyRegistry.getSerializer(((EntityPropertyImpl<?>) property).getType());
|
||||
if (serializer == null) {
|
||||
Bukkit.getLogger().log(Level.WARNING, "Unknown serializer for property '" + property.getName() + "' for npc '" + entry.getId() + "'. skipping ...");
|
||||
|
|
Loading…
Reference in a new issue