spawning illegal entities with perimetercheck, fixes #194

This commit is contained in:
gnembon committed 2020-03-31 21:04:09 -03:00
1 parent 182eac89c9
commit 652ca7d6a0
1 file changed
+5 -2
@@ -7,6 +7,7 @@ import carpet.utils.PerimeterDiagnostics;
import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.command.suggestion.SuggestionProviders; import net.minecraft.command.suggestion.SuggestionProviders;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.mob.MobEntity;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
@@ -51,15 +52,17 @@ public class PerimeterInfoCommand
if (mobId != null) if (mobId != null)
{ {
nbttagcompound.putString("id", mobId); nbttagcompound.putString("id", mobId);
entityliving = (MobEntity) EntityType.loadEntityWithPassengers(nbttagcompound, source.getWorld(), (entity_1x) -> { Entity baseEntity = EntityType.loadEntityWithPassengers(nbttagcompound, source.getWorld(), (entity_1x) -> {
entity_1x.refreshPositionAndAngles(pos.offset(Direction.UP,2), entity_1x.yaw, entity_1x.pitch); entity_1x.refreshPositionAndAngles(pos.offset(Direction.UP,2), entity_1x.yaw, entity_1x.pitch);
return !source.getWorld().tryLoadEntity(entity_1x) ? null : entity_1x; return !source.getWorld().tryLoadEntity(entity_1x) ? null : entity_1x;
}); });
if (entityliving == null) if (!(baseEntity instanceof MobEntity))
{ {
Messenger.m(source, "r Failed to spawn test entity"); Messenger.m(source, "r Failed to spawn test entity");
if (baseEntity != null) baseEntity.remove();
return 0; return 0;
} }
entityliving = (MobEntity) baseEntity;
} }
PerimeterDiagnostics.Result res = PerimeterDiagnostics.countSpots(source.getWorld(), pos, entityliving); PerimeterDiagnostics.Result res = PerimeterDiagnostics.countSpots(source.getWorld(), pos, entityliving);