diff --git a/src/main/java/carpet/commands/SpawnCommand.java b/src/main/java/carpet/commands/SpawnCommand.java index c15ccfb5..7ef13ce5 100644 --- a/src/main/java/carpet/commands/SpawnCommand.java +++ b/src/main/java/carpet/commands/SpawnCommand.java @@ -98,7 +98,8 @@ public class SpawnCommand executes( (c) -> generalMobcaps(c.getSource()) ). then(argument("type", string()). suggests( (c, b)->suggestMatching(Arrays.stream(SpawnGroup.values()).map(SpawnGroup::getName), b)). - executes( (c) -> listEntitiesOfType(c.getSource(), getString(c, "type"))))); + executes( (c) -> listEntitiesOfType(c.getSource(), getString(c, "type"), false)). + then(literal("all").executes( (c) -> listEntitiesOfType(c.getSource(), getString(c, "type"), true))))); dispatcher.register(literalargumentbuilder); } @@ -262,10 +263,10 @@ public class SpawnCommand return 1; } - private static int listEntitiesOfType(ServerCommandSource source, String mobtype) throws CommandSyntaxException + private static int listEntitiesOfType(ServerCommandSource source, String mobtype, boolean all) throws CommandSyntaxException { SpawnGroup cat = getCategory(mobtype); - Messenger.send(source, SpawnReporter.printEntitiesByType(cat, source.getWorld())); + Messenger.send(source, SpawnReporter.printEntitiesByType(cat, source.getWorld(), all)); return 1; } } diff --git a/src/main/java/carpet/utils/SpawnReporter.java b/src/main/java/carpet/utils/SpawnReporter.java index 45ac76b9..b27142b5 100644 --- a/src/main/java/carpet/utils/SpawnReporter.java +++ b/src/main/java/carpet/utils/SpawnReporter.java @@ -187,7 +187,7 @@ public class SpawnReporter } else { - return printEntitiesByType(creature_type, worldIn); + return printEntitiesByType(creature_type, worldIn, true); } @@ -257,22 +257,24 @@ public class SpawnReporter return get_type_string(get_creature_type_from_code(str)); } - public static List printEntitiesByType(SpawnGroup cat, World worldIn) //Class entityType) + public static List printEntitiesByType(SpawnGroup cat, World worldIn, boolean all) //Class entityType) { List lst = new ArrayList<>(); lst.add( Messenger.s(String.format("Loaded entities for %s class:", get_type_string(cat)))); for (Entity entity : ((ServerWorld)worldIn).getEntities(null, (e) -> e.getType().getSpawnGroup()==cat)) { - if (!(entity instanceof MobEntity) || !((MobEntity)entity).isPersistent()) - { - EntityType type = entity.getType(); - BlockPos pos = entity.getBlockPos(); - lst.add( Messenger.c( - "w - ", - Messenger.tp("wb",pos), - String.format("w : %s", type.getName().getString()) - )); - } + boolean persistent = entity instanceof MobEntity && ( ((MobEntity) entity).isPersistent() || ((MobEntity) entity).cannotDespawn()); + if (!all && persistent) + continue; + + EntityType type = entity.getType(); + BlockPos pos = entity.getBlockPos(); + lst.add( Messenger.c( + "w - ", + Messenger.tp(persistent?"gb":"wb",pos), + String.format(persistent?"g : %s":"w : %s", type.getName().getString()) + )); + } if (lst.size()==1) {