command "/pocket log creation"

logs to chat whenever a SchematicGenerator generates a pocket
This commit is contained in:
CreepyCre 2021-06-17 16:59:17 +02:00
parent 444bc184d1
commit 09b3f6f05c
4 changed files with 48 additions and 1 deletions

View file

@ -18,6 +18,7 @@ import org.dimdev.dimdoors.block.door.DimensionalDoorBlockRegistrar;
import org.dimdev.dimdoors.block.door.data.condition.Condition;
import org.dimdev.dimdoors.block.entity.ModBlockEntityTypes;
import org.dimdev.dimdoors.command.ModCommands;
import org.dimdev.dimdoors.command.PocketCommand;
import org.dimdev.dimdoors.enchantment.FrayedEnchantment;
import org.dimdev.dimdoors.enchantment.ModEnchants;
import org.dimdev.dimdoors.entity.ModEntityTypes;
@ -164,6 +165,7 @@ public class DimensionalDoorsInitializer implements ModInitializer {
ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> {
((ExtendedServerPlayNetworkHandler) handler).getDimDoorsPacketHandler().unregister();
PocketCommand.logSetting.remove(handler.getPlayer().getUuid());
});
ServerChunkEvents.CHUNK_LOAD.register(new ChunkLoadListener()); // lazy pocket gen

View file

@ -17,12 +17,19 @@ import net.minecraft.text.TranslatableText;
import net.fabricmc.loader.api.FabricLoader;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import static net.minecraft.server.command.CommandManager.argument;
import static net.minecraft.server.command.CommandManager.literal;
public class PocketCommand {
private static final Logger LOGGER = LogManager.getLogger();
// TODO: probably move somewhere else
public static final Map<UUID, ServerCommandSource> logSetting = new HashMap<>();
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
dispatcher.register(
literal("pocket")
@ -49,6 +56,26 @@ public class PocketCommand {
)
)
)
.then(
literal("log")
// TODO: make command toggle logging of pocket creation to console if used from console
.then(literal("creation")
.requires(commandSource -> commandSource.getEntity() instanceof ServerPlayerEntity)
.executes(ctx -> {
ServerCommandSource commandSource = ctx.getSource();
UUID playerUUID = commandSource.getPlayer().getUuid();
if (logSetting.containsKey(playerUUID)) {
logSetting.remove(playerUUID);
commandSource.sendFeedback(new TranslatableText("commands.pocket.log.creation.off"), false);
} else {
logSetting.put(playerUUID, commandSource);
commandSource.sendFeedback(new TranslatableText("commands.pocket.log.creation.on"), false);
}
return Command.SINGLE_SUCCESS;
})
)
)
);
}

View file

@ -1,8 +1,19 @@
package org.dimdev.dimdoors.pockets.generator;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.fabricmc.fabric.api.util.NbtType;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.network.ServerInfo;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.network.ServerPlayerInteractionManager;
import net.minecraft.server.world.ServerEntityManager;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
@ -11,6 +22,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.api.util.Path;
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
import org.dimdev.dimdoors.command.PocketCommand;
import org.dimdev.dimdoors.pockets.PocketLoader;
import org.dimdev.dimdoors.pockets.PocketTemplate;
import org.dimdev.dimdoors.pockets.modifier.AbsoluteRiftBlockEntityModifier;
@ -144,7 +156,10 @@ public class SchematicGenerator extends LazyPocketGenerator{
if (template == null) throw new RuntimeException("Pocket template of id " + templateID + " not found!");
Pocket pocket = DimensionalRegistry.getPocketDirectory(world.getRegistryKey()).newPocket(builder);
LOGGER.info("Generating pocket from template " + templateID + " at location " + pocket.getOrigin());
BlockPos origin = pocket.getOrigin();
LOGGER.info("Generating pocket from template " + templateID + " at location " + origin);
PocketCommand.logSetting.values().forEach(commandSource -> commandSource.sendFeedback(new TranslatableText("commands.pocket.log.creation.generating", templateID, origin.getX(), origin.getY(), origin.getZ()), false));
if (pocket instanceof LazyGenerationPocket) {
Map<BlockPos, RiftBlockEntity> absoluteRifts = template.getAbsoluteRifts(pocket);

View file

@ -160,6 +160,9 @@
"commands.pocket.unknownPocketTemplate": "Unknown Pocket Template '%s'",
"commands.pocket.placedSchem": "Placed schematic %s at %s in world %s",
"commands.pocket.loadedSchem": "Loaded schematic %s to clipboard. Paste it using //paste",
"commands.pocket.log.creation.off": "Toggled logging of pocket creation off.",
"commands.pocket.log.creation.on": "Toggled logging of pocket creation on.",
"commands.pocket.log.creation.generating": "Generating pocket from template '%s' at location %s %s %s",
"rifts.unlinked1": "This rift doesn't lead anywhere",
"rifts.unlinked2": "This rift has closed",