diff --git a/src/main/java/org/dimdev/dimdoors/DimDoors.java b/src/main/java/org/dimdev/dimdoors/DimDoors.java index e07d7dea..48acaad5 100644 --- a/src/main/java/org/dimdev/dimdoors/DimDoors.java +++ b/src/main/java/org/dimdev/dimdoors/DimDoors.java @@ -1,6 +1,7 @@ package org.dimdev.dimdoors; import net.minecraft.entity.player.EntityPlayerMP; +import org.dimdev.dimdoors.shared.commands.CommandFabricConvert; import org.dimdev.dimdoors.shared.commands.CommandPocket; import org.dimdev.dimdoors.shared.commands.CommandDimTeleport; import org.dimdev.dimdoors.shared.Config; @@ -74,6 +75,7 @@ public class DimDoors { event.registerServerCommand(new CommandDimTeleport()); event.registerServerCommand(new CommandPocket()); event.registerServerCommand(new CommandSaveSchem()); + event.registerServerCommand(new CommandFabricConvert()); } public static void sendMessage(Entity entity, String text) { diff --git a/src/main/java/org/dimdev/dimdoors/shared/commands/CommandFabricConvert.java b/src/main/java/org/dimdev/dimdoors/shared/commands/CommandFabricConvert.java new file mode 100644 index 00000000..a7ca1807 --- /dev/null +++ b/src/main/java/org/dimdev/dimdoors/shared/commands/CommandFabricConvert.java @@ -0,0 +1,80 @@ +package org.dimdev.dimdoors.shared.commands; + +import com.flowpowered.math.vector.Vector3i; +import net.minecraft.block.state.IBlockState; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.EnumDyeColor; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; +import org.dimdev.ddutils.schem.Schematic; +import org.dimdev.dimdoors.DimDoors; +import org.dimdev.dimdoors.shared.blocks.BlockFabric; +import org.dimdev.dimdoors.shared.pockets.SchematicHandler; +import org.dimdev.dimdoors.shared.world.pocketdimension.WorldProviderPocket; +import org.dimdev.pocketlib.Pocket; +import org.dimdev.pocketlib.PocketRegistry; + +import java.util.ArrayList; +import java.util.List; + +public class CommandFabricConvert extends CommandBase { + private final List aliases; + + public CommandFabricConvert() { + aliases = new ArrayList<>(); + aliases.add("fabricconvert"); + } + + @Override + public String getName() { + return "fabricconvert"; + } + + @Override + public String getUsage(ICommandSender sender) { + return "fabricconvert"; + } + + @Override + public List getAliases() { + return aliases; + } + + @Override + public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + // Execute only if it's a player + if (sender instanceof EntityPlayerMP) { + EntityPlayerMP player = getCommandSenderAsPlayer(sender); + + if (!(player.world.provider instanceof WorldProviderPocket)) { + DimDoors.chat(player, "Current Dimension isn't a pocket dimension"); + return; + } + + Pocket pocket = PocketRegistry.instance(player.dimension).getPocketAt(player.getPosition()); + + BlockPos origin = pocket.getOrigin(); + int size = (pocket.getSize() + 1) * 16 - 1; + + for (int x = 0; x < size; x++) { + for (int y = 0; y < size; y++) { + for (int z = 0; z < size; z++) { + IBlockState state = player.world.getBlockState(new BlockPos(origin.getX() + x, origin.getY() + y, origin.getZ() + z)); + + if (state.getBlock() instanceof BlockFabric) { + player.world.setBlockState(origin, state.withProperty(BlockFabric.COLOR, EnumDyeColor.BLACK)); + } + } + } + } + + DimDoors.chat(player, "All fabric's of reality have been converted to black."); + } else { + DimDoors.log.info("Not executing command /" + getName() + " because it wasn't sent by a player."); + } + } +}