StashCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.utility

Файл: com/hypixel/hytale/server/core/command/commands/utility/StashCommand.java

extends: AbstractPlayerCommand

Поля (15)

МодификаторыТипИмя
BlockModule.BlockStateInfo var10
Ref var10
String var11
ItemContainerBlock var11
BlockSection var12
int var13
Vector3i var5
StashCommand.TargetContainer var6
ChunkStore var6
Store var7
Ref var7
ItemContainerBlock var8
int var8
String var9
int var9

Методы (8)

МодификаторыВозвратСигнатура
private record TargetContainerrecord TargetContainer(@Nonnull Ref<ChunkStore> blockRef, @Nonnull ItemContainerBlock container)
if if(var6 != null)
if if(var11 != null)
if if(var5 == null)
if if(var13 != 0)
if if(var10 == null)
if if(var11 == null)
abstract super super("stash", "server.commands.stash.getDroplist.desc")

Исходный код

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

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.ChunkUtil;
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.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.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.block.components.ItemContainerBlock;
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.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class StashCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_STASH_DROP_LIST_SET = Message.translation("server.commands.stash.droplistSet");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_STASH_NO_DROP_LIST = Message.translation("server.commands.stash.noDroplist");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_BLOCK_TARGET_NOT_IN_RANGE = Message.translation("server.general.blockTargetNotInRange");
   class="kw">private class="kw">static class="kw">final int DISTANCE_MAX = 10;
   @Nonnull
   class="kw">private class="kw">final OptionalArg<String> setArg = this.withOptionalArg("set", "server.commands.stash.setDroplist.desc", ArgTypes.STRING);

   class="kw">public StashCommand() {
      super("stash", "server.commands.stash.getDroplist.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
   ) {
      StashCommand.TargetContainer var6 = this.getItemContainerBlock(var3, var5, var1, var2);
      if (var6 != null) {
         Store var7 = var6.blockRef().getStore();
         ItemContainerBlock var8 = var6.container();
         if (this.setArg.provided(var1)) {
            String var9 = this.setArg.get(var1);
            var8.setDroplist(var9);
            BlockModule.BlockStateInfo var10 = var7.getComponent(var6.blockRef(), BlockModule.BlockStateInfo.getComponentType());
            assert var10 != null;
            var10.markNeedsSaving();
            var1.sendMessage(MESSAGE_COMMANDS_STASH_DROP_LIST_SET);
         } else {
            String var11 = var8.getDroplist();
            if (var11 != null) {
               var1.sendMessage(Message.translation("server.commands.stash.currentDroplist").param("droplist", var11));
            } else {
               var1.sendMessage(MESSAGE_COMMANDS_STASH_NO_DROP_LIST);
            }
         }
      }
   }

   @Nullable
   class="kw">private StashCommand.TargetContainer getItemContainerBlock(
      @Nonnull Ref<EntityStore> var1, @Nonnull World var2, @Nonnull CommandContext var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      Vector3i var5 = TargetUtil.getTargetBlock(var1, 10.0, var4);
      if (var5 == null) {
         var3.sendMessage(MESSAGE_GENERAL_BLOCK_TARGET_NOT_IN_RANGE);
         class="kw">return null;
      }

      ChunkStore var6 = var2.getChunkStore();
      Ref var7 = var6.getChunkSectionReferenceAtBlock(var5.x, var5.y, var5.z);
      if (var7 != null && var7.isValid()) {
         BlockSection var12 = var6.getStore().getComponent(var7, BlockSection.getComponentType());
         assert var12 != null;
         int var13 = var12.getFiller(var5.x, var5.y, var5.z);
         if (var13 != 0) {
            var5.x = var5.x - FillerBlockUtil.unpackX(var13);
            var5.y = var5.y - FillerBlockUtil.unpackY(var13);
            var5.z = var5.z - FillerBlockUtil.unpackZ(var13);
         }

         Ref var10 = BlockModule.getBlockEntity(var2, var5.x, var5.y, var5.z);
         if (var10 == null) {
            var3.sendMessage(Message.translation("server.general.containerNotFound").param("block", var5.toString()));
            class="kw">return null;
         } else {
            ItemContainerBlock var11 = var10.getStore().getComponent(var10, ItemContainerBlock.getComponentType());
            if (var11 == null) {
               var3.sendMessage(Message.translation("server.general.containerNotFound").param("block", var5.toString()));
               class="kw">return null;
            } else {
               class="kw">return new StashCommand.TargetContainer(var10, var11);
            }
         }
      } else {
         int var8 = ChunkUtil.chunkCoordinate(var5.x);
         int var9 = ChunkUtil.chunkCoordinate(var5.z);
         var3.sendMessage(
            Message.translation("server.commands.errors.chunkNotLoaded").param("chunkX", var8).param("chunkZ", var9).param("world", var2.getName())
         );
         class="kw">return null;
      }
   }

   class="kw">private record TargetContainer(@Nonnull Ref<ChunkStore> blockRef, @Nonnull ItemContainerBlock container) {
      class="kw">private TargetContainer {
      }
   }
}