ReplaceSwapCommand class
Пакет: com.hypixel.hytale.builtin.buildertools.commands
Файл: com/hypixel/hytale/builtin/buildertools/commands/ReplaceCommand.java
extends: AbstractPlayerCommand
Поля (18)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
private final RequiredArg<String> |
fromArg |
|
private final RequiredArg<String> |
toArg |
|
String[] |
var10 |
|
Int2IntArrayMap |
var11 |
|
BlockType |
var13 |
|
String |
var14 |
|
String |
var19 |
|
String |
var20 |
|
String |
var21 |
|
int |
var22 |
|
String |
var23 |
|
int |
var24 |
|
Player |
var6 |
|
int |
var6 |
|
String |
var7 |
|
String |
var8 |
|
BlockTypeAssetMap |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
|
|
for for(String var18 : var10) |
abstract |
|
for for(int var12 = 0; var12 < var9.getAssetCount() |
|
|
if if(var22 != -1) |
|
|
if if(var24 != Integer.MIN_VALUE) |
abstract |
|
super super("swap", "server.commands.replace.swap.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.commands;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.PrototypePlayerBuilderToolSettings;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.Material;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockFilter;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockMask;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntArrayMap;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import java.util.regex.Pattern;
class="kw">import java.util.regex.PatternSyntaxException;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ReplaceCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<BlockPattern> toArg = this.withRequiredArg("to", "server.commands.replace.toBlock.desc", ArgTypes.BLOCK_PATTERN);
class="kw">public ReplaceCommand() {
super("replace", "server.commands.replace.desc");
this.setPermissionGroups("hytale:WorldEditor");
this.addUsageVariant(new ReplaceCommand.ReplaceFromToCommand());
this.addSubCommand(new ReplaceCommand.ReplaceSwapCommand());
this.addSubCommand(new ReplaceCommand.ReplaceRegexCommand());
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
executeBlockReplace(var1, var2, var3, var4, null, this.toArg.get(var1));
}
class="kw">static void executeBlockReplace(
@Nonnull CommandContext var0,
@Nonnull Store<EntityStore> var1,
@Nonnull Ref<EntityStore> var2,
@Nonnull PlayerRef var3,
@Nullable BlockMask var4,
@Nonnull BlockPattern var5
) {
Player var6 = var1.getComponent(var2, Player.getComponentType());
assert var6 != null;
if (PrototypePlayerBuilderToolSettings.isOkayToDoCommandsOnSelection(var2, var3, var1)) {
if (var4 != null && var4.hasInvalidBlocks()) {
var0.sendMessage(Message.translation("server.builderTools.invalidBlockType").param("key", var4.toString()));
} else {
BlockFilter var7 = new BlockFilter(BlockFilter.FilterType.TargetBlock, new String[]{"Empty"}, true);
BlockMask var8 = new BlockMask(new BlockFilter[]{var7});
BlockMask var9 = var4 != null ? var4 : var8;
String var10 = var5.toString();
String var11 = var9.toString();
Material var12 = var11 != null ? Material.fromKey(var11) : null;
Material var13 = Material.fromPattern(var5, ThreadLocalRandom.current());
if (var13.isFluid()) {
if (var12 == null) {
var0.sendMessage(Message.translation("server.commands.replace.fromRequired"));
} else {
BuilderToolsPlugin.addToQueue(var6, var3, (var2x, var3x, var4x) -> var3x.replace(var2x, var12, var13, var4x));
var0.sendMessage(Message.translation("server.builderTools.replace.replacementBlockDone").param("from", var11).param("to", var10));
}
} else if (var12 != null && var12.isFluid()) {
BuilderToolsPlugin.addToQueue(var6, var3, (var2x, var3x, var4x) -> var3x.replace(var2x, var12, var13, var4x));
var0.sendMessage(Message.translation("server.builderTools.replace.replacementBlockDone").param("from", var11).param("to", var10));
} else {
BuilderToolsPlugin.addToQueue(var6, var3, (var2x, var3x, var4x) -> var3x.replace(var2x, var9, var5, var4x));
var0.sendMessage(Message.translation("server.builderTools.replace.replacementBlockDone").param("from", var11).param("to", var10));
}
}
}
}
class="kw">private class="kw">static class ReplaceFromToCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<BlockMask> fromArg = this.withRequiredArg("from", "server.commands.replace.from.desc", ArgTypes.BLOCK_MASK);
@Nonnull
class="kw">private class="kw">final RequiredArg<BlockPattern> toArg = this.withRequiredArg("to", "server.commands.replace.toBlock.desc", ArgTypes.BLOCK_PATTERN);
class="kw">public ReplaceFromToCommand() {
super("server.commands.replace.desc");
this.setPermissionGroups("hytale:WorldEditor");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
ReplaceCommand.executeBlockReplace(var1, var2, var3, var4, this.fromArg.get(var1), this.toArg.get(var1));
}
}
class="kw">private class="kw">static class ReplaceRegexCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> fromArg = this.withRequiredArg("from", "server.commands.replace.regex.from.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final RequiredArg<BlockPattern> toArg = this.withRequiredArg("to", "server.commands.replace.regex.to.desc", ArgTypes.BLOCK_PATTERN);
class="kw">public ReplaceRegexCommand() {
super("regex", "server.commands.replace.regex.desc");
this.setPermissionGroups("hytale:WorldEditor");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
Player var6 = var2.getComponent(var3, Player.getComponentType());
assert var6 != null;
if (PrototypePlayerBuilderToolSettings.isOkayToDoCommandsOnSelection(var3, var4, var2)) {
String var7 = this.fromArg.get(var1);
BlockPattern var8 = this.toArg.get(var1);
Pattern var9;
try {
var9 = Pattern.compile(var7);
} catch (PatternSyntaxException var14) {
var1.sendMessage(Message.translation("server.commands.replace.invalidRegex").param("error", var14.getMessage()));
class="kw">return;
}
BlockTypeAssetMap var10 = BlockType.getAssetMap();
ArrayList var11 = new ArrayList<>();
for (int var12 = 0; var12 < var10.getAssetCount(); var12++) {
BlockType var13 = var10.getAsset(var12);
if (var13 != null && var9.matcher(var13.getId()).matches()) {
var11.add(var13.getId());
}
}
if (var11.isEmpty()) {
var1.sendMessage(Message.translation("server.commands.replace.noMatchingBlocks").param("blockType", var7));
} else {
BlockMask var15 = BlockMask.parse(var11.toArray(new String[0]));
BuilderToolsPlugin.addToQueue(var6, var4, (var4x, var5x, var6x) -> {
var5x.replace(var4x, var15, var8, var6x);
var1.sendMessage(Message.translation("server.commands.replace.success").param("regex", var7).param("replacement", var8.toString()));
});
}
}
}
}
class="kw">private class="kw">static class ReplaceSwapCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> fromArg = this.withRequiredArg("from", "server.commands.replace.swap.from.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final RequiredArg<String> toArg = this.withRequiredArg("to", "server.commands.replace.swap.to.desc", ArgTypes.STRING);
class="kw">public ReplaceSwapCommand() {
super("swap", "server.commands.replace.swap.desc");
this.setPermissionGroups("hytale:WorldEditor");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
Player var6 = var2.getComponent(var3, Player.getComponentType());
assert var6 != null;
if (PrototypePlayerBuilderToolSettings.isOkayToDoCommandsOnSelection(var3, var4, var2)) {
String var7 = this.fromArg.get(var1);
String var8 = this.toArg.get(var1);
BlockTypeAssetMap var9 = BlockType.getAssetMap();
String[] var10 = var7.split(",", 0);
Int2IntArrayMap var11 = new Int2IntArrayMap();
for (int var12 = 0; var12 < var9.getAssetCount(); var12++) {
BlockType var13 = var9.getAsset(var12);
String var14 = var13.getId();
for (String var18 : var10) {
String var19 = var18.trim();
String var20 = var14.toLowerCase(Locale.ROOT);
String var21 = var19.toLowerCase(Locale.ROOT);
int var22 = var20.indexOf(var21);
if (var22 != -1) {
String var23 = var14.substring(0, var22) + var8 + var14.substring(var22 + var19.length());
int var24 = var9.getIndex(var23);
if (var24 != Integer.MIN_VALUE) {
var11.put(var12, var24);
break;
}
}
}
}
if (!var11.isEmpty()) {
BuilderToolsPlugin.addToQueue(var6, var4, (var3x, var4x, var5x) -> {
int var6 = var4x.replace(var3x, var1x -> var11.getOrDefault(var1x, var1x), var5x);
var1.sendMessage(Message.translation("server.builderTools.replace.replacementDone").param("nb", var6).param("to", var8));
});
} else {
var1.sendMessage(Message.translation("server.commands.replace.noMatchingBlocks").param("blockType", var7));
}
}
}
}
}