two last commands from 1.13.2
This commit is contained in:
1 parent
5109263fd8
commit
9cf9928bbd
2 files changed
+171
No files matched your search
@@ -0,0 +1,42 @@
|
|||||||
|
package carpet.commands;
|
||||||
|
|
||||||
|
import carpet.CarpetSettings;
|
||||||
|
import carpet.utils.DistanceCalculator;
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.command.arguments.Vec3ArgumentType;
|
||||||
|
|
||||||
|
import static net.minecraft.server.command.CommandManager.argument;
|
||||||
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
|
|
||||||
|
public class DistanceCommand
|
||||||
|
{
|
||||||
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher)
|
||||||
|
{
|
||||||
|
LiteralArgumentBuilder<ServerCommandSource> command = literal("distance").
|
||||||
|
requires((player) -> CarpetSettings.getBool("commandDistance")).
|
||||||
|
then(literal("from").
|
||||||
|
executes( (c) -> DistanceCalculator.setStart(c.getSource(), c.getSource().getPosition())).
|
||||||
|
then(argument("from", Vec3ArgumentType.create()).
|
||||||
|
executes( (c) -> DistanceCalculator.setStart(
|
||||||
|
c.getSource(),
|
||||||
|
Vec3ArgumentType.getVec3(c, "from"))).
|
||||||
|
then(literal("to").
|
||||||
|
executes((c) -> DistanceCalculator.distance(
|
||||||
|
c.getSource(),
|
||||||
|
Vec3ArgumentType.getVec3(c, "from"),
|
||||||
|
c.getSource().getPosition())).
|
||||||
|
then(argument("to", Vec3ArgumentType.create()).
|
||||||
|
executes( (c) -> DistanceCalculator.distance(
|
||||||
|
c.getSource(),
|
||||||
|
Vec3ArgumentType.getVec3(c, "from"),
|
||||||
|
Vec3ArgumentType.getVec3(c, "to")
|
||||||
|
)))))).
|
||||||
|
then(literal("to").
|
||||||
|
executes( (c) -> DistanceCalculator.setEnd(c.getSource(), c.getSource().getPosition()) ).
|
||||||
|
then(argument("to", Vec3ArgumentType.create()).
|
||||||
|
executes( (c) -> DistanceCalculator.setEnd(c.getSource(), Vec3ArgumentType.getVec3(c, "to")))));
|
||||||
|
dispatcher.register(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
package carpet.commands;
|
||||||
|
|
||||||
|
import carpet.CarpetSettings;
|
||||||
|
import carpet.utils.BlockInfo;
|
||||||
|
import carpet.utils.EntityInfo;
|
||||||
|
import carpet.utils.Messenger;
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import net.minecraft.network.chat.BaseComponent;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.command.arguments.BlockPosArgumentType;
|
||||||
|
import net.minecraft.command.arguments.EntityArgumentType;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import static com.mojang.brigadier.arguments.StringArgumentType.getString;
|
||||||
|
import static com.mojang.brigadier.arguments.StringArgumentType.greedyString;
|
||||||
|
import static net.minecraft.server.command.CommandManager.argument;
|
||||||
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
|
|
||||||
|
public class InfoCommand
|
||||||
|
{
|
||||||
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher)
|
||||||
|
{
|
||||||
|
LiteralArgumentBuilder<ServerCommandSource> command = literal("info").
|
||||||
|
requires((player) -> CarpetSettings.getBool("commandInfo")).
|
||||||
|
then(literal("block").
|
||||||
|
then(argument("block position", BlockPosArgumentType.create()).
|
||||||
|
executes( (c) -> infoBlock(
|
||||||
|
c.getSource(),
|
||||||
|
BlockPosArgumentType.getBlockPos(c, "block position"), null)).
|
||||||
|
then(literal("grep").
|
||||||
|
then(argument("regexp",greedyString()).
|
||||||
|
executes( (c) -> infoBlock(
|
||||||
|
c.getSource(),
|
||||||
|
BlockPosArgumentType.getBlockPos(c, "block position"),
|
||||||
|
getString(c, "regexp"))))))).
|
||||||
|
then(literal("entity").
|
||||||
|
then(argument("entity selector", EntityArgumentType.entities()).
|
||||||
|
executes( (c) -> infoEntities(
|
||||||
|
c.getSource(), EntityArgumentType.getEntities(c,"entity selector"), null)).
|
||||||
|
then(literal("grep").
|
||||||
|
then(argument("regexp",greedyString()).
|
||||||
|
executes( (c) -> infoEntities(
|
||||||
|
c.getSource(),
|
||||||
|
EntityArgumentType.getEntities(c,"entity selector"),
|
||||||
|
getString(c, "regexp")))))));
|
||||||
|
|
||||||
|
dispatcher.register(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printEntity(List<BaseComponent> messages, ServerCommandSource source, String grep)
|
||||||
|
{
|
||||||
|
List<BaseComponent> actual = new ArrayList<>();
|
||||||
|
if (grep != null)
|
||||||
|
{
|
||||||
|
Pattern p = Pattern.compile(grep);
|
||||||
|
actual.add(messages.get(0));
|
||||||
|
boolean empty = true;
|
||||||
|
for (int i = 1; i<messages.size(); i++)
|
||||||
|
{
|
||||||
|
BaseComponent line = messages.get(i);
|
||||||
|
Matcher m = p.matcher(line.getString());
|
||||||
|
if (m.find())
|
||||||
|
{
|
||||||
|
empty = false;
|
||||||
|
actual.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
actual = messages;
|
||||||
|
}
|
||||||
|
Messenger.m(source, "");
|
||||||
|
Messenger.send(source, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printBlock(List<BaseComponent> messages, ServerCommandSource source, String grep)
|
||||||
|
{
|
||||||
|
Messenger.m(source, "");
|
||||||
|
if (grep != null)
|
||||||
|
{
|
||||||
|
Pattern p = Pattern.compile(grep);
|
||||||
|
Messenger.m(source, messages.get(0));
|
||||||
|
for (int i = 1; i<messages.size(); i++)
|
||||||
|
{
|
||||||
|
BaseComponent line = messages.get(i);
|
||||||
|
Matcher m = p.matcher(line.getString());
|
||||||
|
if (m.find())
|
||||||
|
{
|
||||||
|
Messenger.m(source, line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Messenger.send(source, messages);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static int infoEntities(ServerCommandSource source, Collection<? extends Entity> entities, String grep)
|
||||||
|
{
|
||||||
|
for (Entity e: entities)
|
||||||
|
{
|
||||||
|
List<BaseComponent> report = EntityInfo.entityInfo(e, source.getWorld());
|
||||||
|
printEntity(report, source, grep);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
private static int infoBlock(ServerCommandSource source, BlockPos pos, String grep)
|
||||||
|
{
|
||||||
|
printBlock(BlockInfo.blockInfo(pos, source.getWorld()),source, grep);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in new issue
Block a user