consistency
This commit is contained in:
1 parent
a4d97b1875
commit
78739b3a2c
3 files changed
+53
-55
No files matched your search
@@ -9,17 +9,17 @@ import com.mojang.brigadier.CommandDispatcher;
|
|||||||
import com.mojang.brigadier.arguments.BoolArgumentType;
|
import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
|
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
|
||||||
import net.minecraft.command.arguments.BlockPosArgumentType;
|
import net.minecraft.command.arguments.BlockPosArgumentType;
|
||||||
import net.minecraft.command.arguments.DimensionArgumentType;
|
import net.minecraft.command.arguments.DimensionArgumentType;
|
||||||
import net.minecraft.entity.EntityCategory;
|
import net.minecraft.entity.EntityCategory;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.util.DyeColor;
|
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.util.DyeColor;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.mojang.brigadier.arguments.IntegerArgumentType.getInteger;
|
import static com.mojang.brigadier.arguments.IntegerArgumentType.getInteger;
|
||||||
@@ -102,6 +102,16 @@ public class SpawnCommand
|
|||||||
dispatcher.register(literalargumentbuilder);
|
dispatcher.register(literalargumentbuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static EntityCategory getCategory(String string) throws CommandSyntaxException
|
||||||
|
{
|
||||||
|
if (!Arrays.stream(EntityCategory.values()).map(EntityCategory::getName).collect(Collectors.toSet()).contains(string))
|
||||||
|
{
|
||||||
|
throw new SimpleCommandExceptionType(Messenger.c("r Wrong mob type: "+string+" should be "+ Arrays.stream(EntityCategory.values()).map(EntityCategory::getName).collect(Collectors.joining(", ")))).create();
|
||||||
|
}
|
||||||
|
return EntityCategory.valueOf(string.toUpperCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static int listSpawns(ServerCommandSource source, BlockPos pos)
|
private static int listSpawns(ServerCommandSource source, BlockPos pos)
|
||||||
{
|
{
|
||||||
Messenger.send(source, SpawnReporter.report(pos, source.getWorld()));
|
Messenger.send(source, SpawnReporter.report(pos, source.getWorld()));
|
||||||
@@ -153,14 +163,10 @@ public class SpawnCommand
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int recentSpawnsForType(ServerCommandSource source, String mob_type)
|
private static int recentSpawnsForType(ServerCommandSource source, String mob_type) throws CommandSyntaxException
|
||||||
{
|
{
|
||||||
if (!Arrays.stream(EntityCategory.values()).map(EntityCategory::getName).collect(Collectors.toSet()).contains(mob_type))
|
EntityCategory cat = getCategory(mob_type);
|
||||||
{
|
Messenger.send(source, SpawnReporter.recent_spawns(source.getWorld(), cat));
|
||||||
Messenger.m(source, "r Wrong mob type: "+mob_type+" should be "+ Arrays.stream(EntityCategory.values()).map(EntityCategory::getName).collect(Collectors.joining(", ")));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Messenger.send(source, SpawnReporter.recent_spawns(source.getWorld(), EntityCategory.valueOf(mob_type.toUpperCase())));
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,10 +239,10 @@ public class SpawnCommand
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int setSpawnRates(ServerCommandSource source, String mobtype, int rounds)
|
private static int setSpawnRates(ServerCommandSource source, String mobtype, int rounds) throws CommandSyntaxException
|
||||||
{
|
{
|
||||||
String code = SpawnReporter.get_creature_code_from_string(mobtype);
|
EntityCategory cat = getCategory(mobtype);
|
||||||
//SpawnReporter.spawn_tries.put(code, rounds);
|
SpawnReporter.spawn_tries.put(cat, rounds);
|
||||||
Messenger.m(source, "gi "+mobtype+" mobs will now spawn "+rounds+" times per tick");
|
Messenger.m(source, "gi "+mobtype+" mobs will now spawn "+rounds+" times per tick");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -255,9 +261,10 @@ public class SpawnCommand
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int listEntitiesOfType(ServerCommandSource source, String mobtype)
|
private static int listEntitiesOfType(ServerCommandSource source, String mobtype) throws CommandSyntaxException
|
||||||
{
|
{
|
||||||
Messenger.send(source, SpawnReporter.printEntitiesByType(EntityCategory.valueOf(mobtype.toUpperCase()), source.getWorld()));
|
EntityCategory cat = getCategory(mobtype);
|
||||||
|
Messenger.send(source, SpawnReporter.printEntitiesByType(cat, source.getWorld()));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.CarpetSettings;
|
|
||||||
import carpet.utils.SpawnReporter;
|
import carpet.utils.SpawnReporter;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import net.minecraft.entity.EntityCategory;
|
import net.minecraft.entity.EntityCategory;
|
||||||
@@ -18,7 +17,6 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
@@ -97,7 +95,7 @@ public abstract class ServerChunkManagerMixin
|
|||||||
private int getNewMobcaps(EntityCategory entityCategory)
|
private int getNewMobcaps(EntityCategory entityCategory)
|
||||||
{
|
{
|
||||||
DimensionType dim = this.world.dimension.getType();
|
DimensionType dim = this.world.dimension.getType();
|
||||||
int newCap = entityCategory.getSpawnCap()*(int)(Math.pow(2.0,(SpawnReporter.mobcap_exponent/4)));
|
int newCap = (int) ((double)entityCategory.getSpawnCap()*(Math.pow(2.0,(SpawnReporter.mobcap_exponent/4))));
|
||||||
if (SpawnReporter.track_spawns > 0L)
|
if (SpawnReporter.track_spawns > 0L)
|
||||||
{
|
{
|
||||||
int int_2 = SpawnReporter.chunkCounts.get(dim); // eligible chunks for spawning
|
int int_2 = SpawnReporter.chunkCounts.get(dim); // eligible chunks for spawning
|
||||||
|
|||||||
@@ -1,47 +1,37 @@
|
|||||||
|
|
||||||
package carpet.utils;
|
package carpet.utils;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import carpet.CarpetSettings;
|
|
||||||
import carpet.mixins.WeightedPickerEntryMixin;
|
import carpet.mixins.WeightedPickerEntryMixin;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2LongMap;
|
import it.unimi.dsi.fastutil.objects.Object2LongMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.EntityCategory;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.SpawnRestriction;
|
||||||
import net.minecraft.entity.SpawnType;
|
import net.minecraft.entity.SpawnType;
|
||||||
import net.minecraft.entity.mob.MobEntity;
|
import net.minecraft.entity.mob.MobEntity;
|
||||||
import net.minecraft.server.world.ServerChunkManager;
|
import net.minecraft.entity.passive.OcelotEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
|
||||||
import net.minecraft.structure.OceanMonumentGenerator;
|
|
||||||
import net.minecraft.util.registry.Registry;
|
|
||||||
import net.minecraft.network.chat.BaseComponent;
|
import net.minecraft.network.chat.BaseComponent;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
import net.minecraft.util.DyeColor;
|
import net.minecraft.util.DyeColor;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.entity.EntityCategory;
|
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
|
import net.minecraft.world.Heightmap;
|
||||||
|
import net.minecraft.world.SpawnHelper;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.SpawnHelper;
|
|
||||||
import net.minecraft.entity.SpawnRestriction;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
|
|
||||||
import net.minecraft.entity.passive.OcelotEntity;
|
|
||||||
import net.minecraft.world.Heightmap;
|
|
||||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import java.lang.Math;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class SpawnReporter
|
public class SpawnReporter
|
||||||
{
|
{
|
||||||
@@ -111,7 +101,7 @@ public class SpawnReporter
|
|||||||
for (EntityCategory enumcreaturetype : EntityCategory.values())
|
for (EntityCategory enumcreaturetype : EntityCategory.values())
|
||||||
{
|
{
|
||||||
int cur = dimCounts.getOrDefault(enumcreaturetype, -1);
|
int cur = dimCounts.getOrDefault(enumcreaturetype, -1);
|
||||||
int max = chunkcount * enumcreaturetype.getSpawnCap() / (int)Math.pow(17.0D, 2.0D); // from ServerChunkManager.CHUNKS_ELIGIBLE_FOR_SPAWNING
|
int max = chunkcount * (int)((double)enumcreaturetype.getSpawnCap() * (Math.pow(2.0,(SpawnReporter.mobcap_exponent/4)))) / (int)Math.pow(17.0D, 2.0D); // from ServerChunkManager.CHUNKS_ELIGIBLE_FOR_SPAWNING
|
||||||
String color = Messenger.heatmap_color(cur, max);
|
String color = Messenger.heatmap_color(cur, max);
|
||||||
String mobColor = Messenger.creatureTypeColor(enumcreaturetype);
|
String mobColor = Messenger.creatureTypeColor(enumcreaturetype);
|
||||||
if (multiline)
|
if (multiline)
|
||||||
@@ -160,8 +150,10 @@ public class SpawnReporter
|
|||||||
for (Pair<EntityType, BlockPos> pair : spawned_mobs.get(Pair.of(world.getDimension().getType(),creature_type)).keySet())
|
for (Pair<EntityType, BlockPos> pair : spawned_mobs.get(Pair.of(world.getDimension().getType(),creature_type)).keySet())
|
||||||
{
|
{
|
||||||
lst.add( Messenger.c(
|
lst.add( Messenger.c(
|
||||||
String.format("w - %s ", Registry.ENTITY_TYPE.getId(pair.getLeft()).toString().replaceFirst("minecraft.","")),
|
"w - ",
|
||||||
Messenger.tp("wb",pair.getRight())));
|
Messenger.tp("wb",pair.getRight()),
|
||||||
|
String.format("w : %s", EntityType.getId(pair.getLeft()).toString().replaceFirst("minecraft.",""))
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lst.size()==1)
|
if (lst.size()==1)
|
||||||
@@ -261,20 +253,21 @@ public class SpawnReporter
|
|||||||
return get_type_string(get_creature_type_from_code(str));
|
return get_type_string(get_creature_type_from_code(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<BaseComponent> printEntitiesByType(EntityCategory type, World worldIn) //Class<?> entityType)
|
public static List<BaseComponent> printEntitiesByType(EntityCategory cat, World worldIn) //Class<?> entityType)
|
||||||
{
|
{
|
||||||
CarpetSettings.LOG.error("\n\n\nprinting spawnlist\n\n\n");
|
|
||||||
List<BaseComponent> lst = new ArrayList<>();
|
List<BaseComponent> lst = new ArrayList<>();
|
||||||
Class<?> cls = type.getDeclaringClass();// getBaseClass();// getCreatureClass();
|
lst.add( Messenger.s(String.format("Loaded entities for %s class:", get_type_string(cat))));
|
||||||
lst.add( Messenger.s(String.format("Loaded entities for %s class:", get_type_string(type))));
|
for (Entity entity : ((ServerWorld)worldIn).getEntities(null, (e) -> e.getType().getCategory()==cat))
|
||||||
|
|
||||||
lst.add(Messenger.s(" <sorry, this list will be populated, once M figures out what counts>"));
|
|
||||||
for (Entity entity : ((ServerWorld)worldIn).getEntities(null, (e) -> e.getType().getCategory()==type))
|
|
||||||
{
|
{
|
||||||
if (!(entity instanceof MobEntity) || !((MobEntity)entity).isPersistent())
|
if (!(entity instanceof MobEntity) || !((MobEntity)entity).isPersistent())
|
||||||
{
|
{
|
||||||
lst.add(Messenger.c("w - ",
|
EntityType type = entity.getType();
|
||||||
Messenger.tp("w", entity.x, entity.y, entity.z),"w : "+EntityType.getId(entity.getType()).toString().replaceFirst("minecraft.","")));
|
BlockPos pos = entity.getBlockPos();
|
||||||
|
lst.add( Messenger.c(
|
||||||
|
"w - ",
|
||||||
|
Messenger.tp("wb",pos),
|
||||||
|
String.format("w : %s", EntityType.getId(type).toString().replaceFirst("minecraft.",""))
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (lst.size()==1)
|
if (lst.size()==1)
|
||||||
|
|||||||
Reference in new issue
Block a user