use of net.minecraft.server.level.ServerLevel in project MinecraftForge by MinecraftForge.
the class TPSCommand method register.
static ArgumentBuilder<CommandSourceStack, ?> register() {
return Commands.literal("tps").requires(// permission
cs -> cs.hasPermission(0)).then(Commands.argument("dim", DimensionArgument.dimension()).executes(ctx -> sendTime(ctx.getSource(), DimensionArgument.getDimension(ctx, "dim")))).executes(ctx -> {
for (ServerLevel dim : ctx.getSource().getServer().getAllLevels()) sendTime(ctx.getSource(), dim);
@SuppressWarnings("resource") double meanTickTime = mean(ctx.getSource().getServer().tickTimes) * 1.0E-6D;
double meanTPS = Math.min(1000.0 / meanTickTime, 20);
ctx.getSource().sendSuccess(new TranslatableComponent("commands.forge.tps.summary.all", TIME_FORMATTER.format(meanTickTime), TIME_FORMATTER.format(meanTPS)), false);
return 0;
});
}
use of net.minecraft.server.level.ServerLevel in project MinecraftForge by MinecraftForge.
the class DimensionsCommand method register.
static ArgumentBuilder<CommandSourceStack, ?> register() {
return Commands.literal("dimensions").requires(// permission
cs -> cs.hasPermission(0)).executes(ctx -> {
ctx.getSource().sendSuccess(new TranslatableComponent("commands.forge.dimensions.list"), true);
final Registry<DimensionType> reg = ctx.getSource().registryAccess().registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY);
Map<ResourceLocation, List<ResourceLocation>> types = new HashMap<>();
for (ServerLevel dim : ctx.getSource().getServer().getAllLevels()) {
types.computeIfAbsent(reg.getKey(dim.dimensionType()), k -> new ArrayList<>()).add(dim.dimension().location());
}
types.keySet().stream().sorted().forEach(key -> {
ctx.getSource().sendSuccess(new TextComponent(key + ": " + types.get(key).stream().map(ResourceLocation::toString).sorted().collect(Collectors.joining(", "))), false);
});
return 0;
});
}
use of net.minecraft.server.level.ServerLevel in project Denizen-For-Bukkit by DenizenScript.
the class ChunkHelperImpl method changeChunkServerThread.
@Override
public void changeChunkServerThread(World world) {
if (DenizenCoreImplementation.tagThread == null) {
return;
}
if (resetServerThread != null) {
return;
}
ServerLevel nmsWorld = ((CraftWorld) world).getHandle();
ServerChunkCache provider = nmsWorld.getChunkProvider();
try {
resetServerThread = (Thread) chunkProviderServerThreadField.get(provider);
chunkProviderServerThreadFieldSetter.invoke(provider, Thread.currentThread());
worldThreadFieldSetter.invoke(nmsWorld, Thread.currentThread());
} catch (Throwable ex) {
Debug.echoError(ex);
}
}
use of net.minecraft.server.level.ServerLevel in project Denizen-For-Bukkit by DenizenScript.
the class Handler method getBiomes.
@Override
public List<BiomeNMS> getBiomes(World world) {
ServerLevel level = ((CraftWorld) world).getHandle();
ArrayList<BiomeNMS> output = new ArrayList<>();
for (Map.Entry<ResourceKey<Biome>, Biome> pair : level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).entrySet()) {
output.add(new BiomeNMSImpl(level, pair.getKey().location().toString()));
}
return output;
}
use of net.minecraft.server.level.ServerLevel in project Denizen-For-Bukkit by DenizenScript.
the class Handler method getBiomeAt.
@Override
public BiomeNMS getBiomeAt(Block block) {
// Based on CraftWorld source
ServerLevel level = ((CraftWorld) block.getWorld()).getHandle();
Biome biome = level.getNoiseBiome(block.getX() >> 2, block.getY() >> 2, block.getZ() >> 2);
ResourceLocation key = level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getKey(biome);
String keyText = key.getNamespace().equals("minecraft") ? key.getPath() : key.toString();
return new BiomeNMSImpl(level, keyText);
}
Aggregations