CopyRegionCommand class
Пакет: com.hypixel.hytale.builtin.buildertools.commands
Файл: com/hypixel/hytale/builtin/buildertools/commands/CopyCommand.java
extends: AbstractPlayerCommand
Поля (24)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final FlagArg |
emptyFlag |
|
private final FlagArg |
entitiesOnlyFlag |
|
private final FlagArg |
keepAnchorsFlag |
|
private final FlagArg |
noEntitiesFlag |
|
private final FlagArg |
playerAnchorFlag |
|
int |
var10 |
|
int |
var11 |
|
int |
var12 |
|
int |
var13 |
|
int |
var14 |
|
int |
var15 |
|
int |
var16 |
|
int |
var17 |
|
Vector3i |
var18 |
|
Player |
var6 |
|
BuilderToolsPlugin.BuilderState |
var7 |
|
boolean |
var8 |
|
boolean |
var9 |
|
private final RequiredArg<Integer> |
xMaxArg |
|
private final RequiredArg<Integer> |
xMinArg |
|
private final RequiredArg<Integer> |
yMaxArg |
|
private final RequiredArg<Integer> |
yMinArg |
|
private final RequiredArg<Integer> |
zMaxArg |
|
private final RequiredArg<Integer> |
zMinArg |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
|
|
if if(!var8) |
|
|
if if(!var9 || var8) |
abstract |
|
super super("server.commands.copy.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.commands;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.PrefabCopyException;
class="kw">import com.hypixel.hytale.builtin.buildertools.PrototypePlayerBuilderToolSettings;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
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.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
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 com.hypixel.hytale.server.core.util.TempAssetIdUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;
class="kw">public class CopyCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION = Message.translation("server.builderTools.copycut.noSelection");
@Nonnull
class="kw">private class="kw">final FlagArg noEntitiesFlag = this.withFlagArg("noEntities", "server.commands.copy.noEntities.desc");
@Nonnull
class="kw">private class="kw">final FlagArg entitiesOnlyFlag = this.withFlagArg("onlyEntities", "server.commands.copy.entitiesonly.desc");
@Nonnull
class="kw">private class="kw">final FlagArg emptyFlag = this.withFlagArg("empty", "server.commands.copy.empty.desc");
@Nonnull
class="kw">private class="kw">final FlagArg keepAnchorsFlag = this.withFlagArg("keepanchors", "server.commands.copy.keepanchors.desc");
@Nonnull
class="kw">private class="kw">final FlagArg playerAnchorFlag = this.withFlagArg("playerAnchor", "server.commands.copy.playerAnchor.desc");
class="kw">public CopyCommand() {
super("copy", "server.commands.copy.desc");
this.setPermissionGroups("hytale:WorldEditor");
this.requirePermission(HytalePermissions.EDITOR_SELECTION_CLIPBOARD);
this.addUsageVariant(new CopyCommand.CopyRegionCommand());
}
@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)) {
BuilderToolsPlugin.BuilderState var7 = BuilderToolsPlugin.getState(var6, var4);
boolean var8 = this.entitiesOnlyFlag.get(var1);
boolean var9 = this.noEntitiesFlag.get(var1);
int var10 = 0;
if (!var8) {
var10 |= 8;
}
if (this.emptyFlag.get(var1)) {
var10 |= 4;
}
if (this.keepAnchorsFlag.get(var1)) {
var10 |= 64;
}
if (!var9 || var8) {
var10 |= 16;
}
int var11 = var10;
Vector3i var12 = getPlayerAnchor(var3, var2, this.playerAnchorFlag.get(var1));
BuilderToolsPlugin.addToQueue(var6, var4, (var4x, var5x, var6x) -> {
try {
BlockSelection var7 = var7.getSelection();
if (var7 == null || !var7.hasSelectionBounds()) {
var1.sendMessage(MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION);
class="kw">return;
}
Vector3i var8 = var7.getSelectionMin();
Vector3i var9 = var7.getSelectionMax();
var7.copyOrCut(var4x, var8.x(), var8.y(), var8.z(), var9.x(), var9.y(), var9.z(), var11, var12, var6x);
} catch (PrefabCopyException var10) {
var1.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var10.getMessage()));
}
});
}
}
@Nullable
class="kw">private class="kw">static Vector3i getPlayerAnchor(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, boolean var2) {
if (!var2) {
class="kw">return null;
}
TransformComponent var3 = var1.getComponent(var0, TransformComponent.getComponentType());
if (var3 == null) {
class="kw">return null;
}
Vector3d var4 = var3.getPosition();
class="kw">return new Vector3i(MathUtil.floor(var4.x()), MathUtil.floor(var4.y()), MathUtil.floor(var4.z()));
}
class="kw">public class="kw">static void copySelection(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
Player var2 = var1.getComponent(var0, Player.getComponentType());
assert var2 != null;
PlayerRef var3 = var1.getComponent(var0, PlayerRef.getComponentType());
assert var3 != null;
copySelection(var0, var1, BuilderToolsPlugin.getState(var2, var3), 28);
}
class="kw">public class="kw">static void copySelection(
@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull BuilderToolsPlugin.BuilderState var2, int var3
) {
Player var4 = var1.getComponent(var0, Player.getComponentType());
assert var4 != null;
PlayerRef var5 = var1.getComponent(var0, PlayerRef.getComponentType());
assert var5 != null;
BuilderToolsPlugin.addToQueue(var4, var5, (var3x, var4x, var5x) -> {
try {
BlockSelection var6 = var2.getSelection();
if (var6 == null || !var6.hasSelectionBounds()) {
var5.sendMessage(MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION);
class="kw">return;
}
Vector3i var7 = var6.getSelectionMin();
Vector3i var8 = var6.getSelectionMax();
var2.copyOrCut(var3x, var7.x(), var7.y(), var7.z(), var8.x(), var8.y(), var8.z(), var3, var5x);
} catch (PrefabCopyException var9) {
var5.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var9.getMessage()));
}
});
}
class="kw">private class="kw">static class CopyRegionCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> xMinArg = this.withRequiredArg("xMin", "server.commands.copy.xMin.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> yMinArg = this.withRequiredArg("yMin", "server.commands.copy.yMin.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> zMinArg = this.withRequiredArg("zMin", "server.commands.copy.zMin.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> xMaxArg = this.withRequiredArg("xMax", "server.commands.copy.xMax.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> yMaxArg = this.withRequiredArg("yMax", "server.commands.copy.yMax.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> zMaxArg = this.withRequiredArg("zMax", "server.commands.copy.zMax.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final FlagArg noEntitiesFlag = this.withFlagArg("noEntities", "server.commands.copy.noEntities.desc");
@Nonnull
class="kw">private class="kw">final FlagArg entitiesOnlyFlag = this.withFlagArg("onlyEntities", "server.commands.copy.entitiesonly.desc");
@Nonnull
class="kw">private class="kw">final FlagArg emptyFlag = this.withFlagArg("empty", "server.commands.copy.empty.desc");
@Nonnull
class="kw">private class="kw">final FlagArg keepAnchorsFlag = this.withFlagArg("keepanchors", "server.commands.copy.keepanchors.desc");
@Nonnull
class="kw">private class="kw">final FlagArg playerAnchorFlag = this.withFlagArg("playerAnchor", "server.commands.copy.playerAnchor.desc");
class="kw">public CopyRegionCommand() {
super("server.commands.copy.desc");
}
@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)) {
BuilderToolsPlugin.BuilderState var7 = BuilderToolsPlugin.getState(var6, var4);
boolean var8 = this.entitiesOnlyFlag.get(var1);
boolean var9 = this.noEntitiesFlag.get(var1);
int var10 = 0;
if (!var8) {
var10 |= 8;
}
if (this.emptyFlag.get(var1)) {
var10 |= 4;
}
if (this.keepAnchorsFlag.get(var1)) {
var10 |= 64;
}
if (!var9 || var8) {
var10 |= 16;
}
int var11 = this.xMinArg.get(var1);
int var12 = this.yMinArg.get(var1);
int var13 = this.zMinArg.get(var1);
int var14 = this.xMaxArg.get(var1);
int var15 = this.yMaxArg.get(var1);
int var16 = this.zMaxArg.get(var1);
int var17 = var10;
Vector3i var18 = CopyCommand.getPlayerAnchor(var3, var2, this.playerAnchorFlag.get(var1));
BuilderToolsPlugin.addToQueue(var6, var4, (var10x, var11x, var12x) -> {
try {
var7.copyOrCut(var10x, var11, var12, var13, var14, var15, var16, var17, var18, var12x);
} catch (PrefabCopyException var14) {
var1.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var14.getMessage()));
SoundUtil.playSoundEvent2d(var10x, TempAssetIdUtil.getSoundEventIndex("CREATE_ERROR"), SoundCategory.UI, var12x);
}
});
}
}
}
}