Add class

Пакет: com.hypixel.hytale.server.spawning.commands

Файл: com/hypixel/hytale/server/spawning/commands/SpawnBeaconsCommand.java

extends: AbstractPlayerCommand

Поля (17)

МодификаторыТипИмя
private final RequiredArg<BeaconNPCSpawn> beaconArg
private final FlagArg manualArg
BeaconSpawnWrapper var10
SpawnBeacon var11
BeaconNPCSpawn var12
String var13
ModelAsset var14
var14
Model var15
var15
var15
Holder var16
Message var17
TransformComponent var6
Rotation3f var7
Vector3d var8
BeaconNPCSpawn var9

Методы (3)

МодификаторыВозвратСигнатура
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
if if(var14 == null)
abstract super super("add", "server.commands.spawning.beacons.add.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
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.AssetArgumentType;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetEntityCommand;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentDisplayName;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentModel;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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 com.hypixel.hytale.server.spawning.SpawningPlugin;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.BeaconNPCSpawn;
class="kw">import com.hypixel.hytale.server.spawning.beacons.LegacySpawnBeaconEntity;
class="kw">import com.hypixel.hytale.server.spawning.beacons.SpawnBeacon;
class="kw">import com.hypixel.hytale.server.spawning.util.FloodFillPositionSelector;
class="kw">import com.hypixel.hytale.server.spawning.wrappers.BeaconSpawnWrapper;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class SpawnBeaconsCommand class="kw">extends AbstractCommandCollection {
   class="kw">private class="kw">static class="kw">final AssetArgumentType<BeaconNPCSpawn, ?> BEACON_SPAWN_ASSET_TYPE = new AssetArgumentType(
      "server.commands.spawning.beacons.arg.beacon.name", BeaconNPCSpawn.class, "server.commands.spawning.beacons.arg.beacon.usage"
   );

   class="kw">public SpawnBeaconsCommand() {
      super("beacons", "server.commands.spawning.beacons.desc");
      this.addSubCommand(new SpawnBeaconsCommand.Add());
      this.addSubCommand(new SpawnBeaconsCommand.ManualTrigger());
   }

   class="kw">private class="kw">static class Add class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<BeaconNPCSpawn> beaconArg = this.withRequiredArg(
         "beacon", "server.commands.spawning.beacons.add.arg.beacon.desc", SpawnBeaconsCommand.BEACON_SPAWN_ASSET_TYPE
      );
      @Nonnull
      class="kw">private class="kw">final FlagArg manualArg = this.withFlagArg("manual", "server.commands.spawning.beacons.add.manual.desc");

      class="kw">public Add() {
         super("add", "server.commands.spawning.beacons.add.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         TransformComponent var6 = var2.getComponent(var3, TransformComponent.getComponentType());
         assert var6 != null;
         Rotation3f var7 = var6.getRotation();
         Vector3d var8 = var6.getPosition();
         BeaconNPCSpawn var9 = this.beaconArg.get(var1);
         BeaconSpawnWrapper var10 = SpawningPlugin.get().getBeaconSpawnWrapper(BeaconNPCSpawn.getAssetMap().getIndex(var9.getId()));
         if (this.manualArg.get(var1)) {
            SpawnBeacon var11 = new SpawnBeacon();
            var11.setSpawnWrapper(var10);
            BeaconNPCSpawn var12 = var10.getSpawn();
            String var13 = var12.getModel();
            ModelAsset var14 = null;
            if (var13 != null && !var13.isEmpty()) {
               var14 = ModelAsset.getAssetMap().getAsset(var13);
            }

            Model var15;
            if (var14 == null) {
               var15 = SpawningPlugin.get().getSpawnMarkerModel();
            } else {
               var15 = Model.createUnitScaleModel(var14);
            }

            Holder var16 = EntityStore.REGISTRY.newHolder();
            var16.addComponent(SpawnBeacon.getComponentType(), var11);
            var16.addComponent(TransformComponent.getComponentType(), new TransformComponent(var8, var7));
            var16.ensureComponent(UUIDComponent.getComponentType());
            var16.addComponent(ModelComponent.getComponentType(), new ModelComponent(var15));
            var16.addComponent(PersistentModel.getComponentType(), new PersistentModel(var15.toReference()));
            Message var17 = Message.raw(var12.getId());
            var16.addComponent(PersistentDisplayName.getComponentType(), new PersistentDisplayName(var17));
            var16.addComponent(DisplayNameComponent.getComponentType(), new DisplayNameComponent(var17));
            var16.addComponent(Nameplate.getComponentType(), new Nameplate(var12.getId()));
            var2.addEntity(var16, AddReason.SPAWN);
         } else {
            LegacySpawnBeaconEntity.create(var10, var8, var7, var2);
         }

         var1.sendMessage(Message.translation("server.commands.spawning.beacons.add.added").param("beaconId", var9.getId()));
      }
   }

   class="kw">private class="kw">static class ManualTrigger class="kw">extends AbstractTargetEntityCommand {
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_SPAWNING_BEACONS_TRIGGER_NO_BEACONS = Message.translation(
         "server.commands.spawning.beacons.trigger.no_beacons"
      );

      class="kw">public ManualTrigger() {
         super("trigger", "server.commands.spawning.beacons.trigger.desc");
      }

      @Override
      class="kw">protected void execute(@Nonnull CommandContext var1, @Nonnull List<Ref<EntityStore>> var2, @Nonnull World var3, @Nonnull Store<EntityStore> var4) {
         if (var2.isEmpty()) {
            var1.sendMessage(MESSAGE_COMMANDS_SPAWNING_BEACONS_TRIGGER_NO_BEACONS);
         } else {
            int var5 = 0;

            for (Ref var7 : var2) {
               if (var7 != null && var7.isValid()) {
                  UUIDComponent var8 = var4.getComponent(var7, UUIDComponent.getComponentType());
                  if (var8 != null) {
                     FloodFillPositionSelector var9 = var4.getComponent(var7, FloodFillPositionSelector.getComponentType());
                     if (var9 != null) {
                        SpawnBeacon var10 = var4.getComponent(var7, SpawnBeacon.getComponentType());
                        if (var10 != null) {
                           if (!var10.manualTrigger(var7, var9, var7, var4)) {
                              Message var11 = Message.translation("server.commands.spawning.beacons.trigger.no_spots");
                              var11.param("id", var8.getUuid().toString());
                              var1.sendMessage(var11);
                           } else {
                              Message var12 = Message.translation("server.commands.spawning.beacons.trigger.success");
                              var12.param("id", var8.getUuid().toString());
                              var1.sendMessage(var12);
                              var5++;
                           }
                        }
                     }
                  }
               }
            }

            if (var5 == 0) {
               var1.sendMessage(MESSAGE_COMMANDS_SPAWNING_BEACONS_TRIGGER_NO_BEACONS);
            }
         }
      }
   }
}