ViewportCommand class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.commands

Файл: com/hypixel/hytale/builtin/hytalegenerator/commands/ViewportCommand.java

extends: AbstractPlayerCommand

Поля (17)

МодификаторыТипИмя
return
Vector3i var10
Vector3i var11
BuilderToolsPlugin.BuilderState var13
Viewport var14
BlockSelection var15
WeakReference var16
World var2
String var2
var2
Player var6
Bounds3i var7
var7
var7
Integer var8
var8
Vector3d var9

Методы (5)

МодификаторыВозвратСигнатура
if if(this.activeTask != null)
if if(var8 != null)
if if(var15 == null)
if if(var2 != null)
abstract super super("Viewport", "server.commands.viewport.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.commands;

class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.Viewport;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.AssetManager;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.common.util.ExceptionUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
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.OptionalArg;
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.prefab.selection.standard.BlockSelection;
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 java.lang.ref.WeakReference;
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 ViewportCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">final FlagArg deleteFlag = this.withFlagArg("delete", "server.commands.viewport.delete.desc");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Integer> radiusArg = this.withOptionalArg("radius", "server.commands.viewport.radius.desc", ArgTypes.INTEGER);
   @Nonnull
   class="kw">private class="kw">final AssetManager assetManager;
   @Nullable
   class="kw">private Runnable activeTask;

   class="kw">public ViewportCommand(@Nonnull AssetManager var1) {
      super("Viewport", "server.commands.viewport.desc");
      this.setPermissionGroups("hytale:WorldEditor");
      this.assetManager = var1;
   }

   @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 (this.activeTask != null) {
         this.assetManager.unregisterReloadListener(this.activeTask);
         this.activeTask = null;
      }

      if (var1.get(this.deleteFlag)) {
         var4.sendMessage(Message.translation("server.commands.viewport.removed"));
      } else {
         Integer var8 = var1.get(this.radiusArg);
         Bounds3i var7;
         if (var8 != null) {
            var8 = var8 << 5;
            Vector3d var9 = var2.getComponent(var3, TransformComponent.getComponentType()).getPosition();
            Vector3i var10 = Vector3dUtil.toVector3i(new Vector3d(var9).sub(var8.intValue(), var8.intValue(), var8.intValue()));
            Vector3i var11 = Vector3dUtil.toVector3i(new Vector3d(var9).add(var8.intValue(), var8.intValue(), var8.intValue())).add(Vector3iUtil.ALL_ONES);
            var7 = new Bounds3i(var10, var11);
         } else {
            BuilderToolsPlugin.BuilderState var13 = BuilderToolsPlugin.getState(var6, var4);
            BlockSelection var15 = var13.getSelection();
            if (var15 == null) {
               class="kw">return;
            }

            var7 = new Bounds3i(var15.getSelectionMin(), var15.getSelectionMax());
         }

         Viewport var14 = new Viewport(var7, var5);
         WeakReference var16 = new WeakReference<>(var5);
         this.activeTask = () -> {
            World var2 = var16.get();
            if (var2 != null) {
               var2.execute(() -> {
                  try {
                     var14.refresh();
                  } catch (Exception var3) {
                     String var2 = "Could not refresh viewport because of the following exception:\n";
                     var2 = var2 + ExceptionUtil.toStringWithStack(var3);
                     LoggerUtil.getLogger().severe(var2);
                  }
               });
            }
         };
         this.activeTask.run();
         this.assetManager.registerReloadListener(this.activeTask);
         var4.sendMessage(Message.translation("server.commands.viewport.created"));
      }
   }
}