HitboxCommand class

Пакет: com.hypixel.hytale.server.core.modules.collision.commands

Файл: com/hypixel/hytale/server/core/modules/collision/commands/HitboxCommand.java

extends: AbstractCommandCollection

Поля (21)

МодификаторыТипИмя
private final RequiredArg<String> hitboxArg
private final OptionalArg<Double> thresholdArg
double var10
double var12
double var14
int var16
int var17
int var18
int var19
BlockTypeAssetMap var2
String var2
int var20
IndexedLookupTableAssetMap var3
BlockBoundingBoxes var3
int var4
BlockBoundingBoxes.RotatedVariantBoxes var4
double var5
Box[] var5
Message var6
Set var7
Box var9

Методы (12)

МодификаторыВозвратСигнатура
public HitboxExtentsCommandpublic HitboxExtentsCommand()
public HitboxGetCommandpublic HitboxGetCommand()
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
if if(var10 - var16 > var5)
if if(var12 - var17 > var5)
if if(var14 - var18 > var5)
if if(var3 != null)
if if(var5.length > 0)
abstract super super("hitbox", "server.commands.hitbox.desc")
abstract super super("extents", "server.commands.hitbox.extents.desc")
abstract super super("server.commands.hitbox.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockhitbox.BlockBoundingBoxes;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.Rotation;
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.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.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.core.util.message.MessageFormat;
class="kw">import java.util.Arrays;
class="kw">import java.util.Set;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;

class="kw">public class HitboxCommand class="kw">extends AbstractCommandCollection {
   class="kw">public HitboxCommand() {
      super("hitbox", "server.commands.hitbox.desc");
      this.setPermissionGroups("hytale:WorldEditor");
      this.addSubCommand(new HitboxCommand.HitboxExtentsCommand());
      this.addUsageVariant(new HitboxCommand.HitboxGetCommand());
   }

   @Nonnull
   class="kw">private class="kw">static Message formatBox(@Nonnull Box var0) {
      class="kw">return Message.translation("server.commands.hitbox.box")
         .param("minX", var0.min.x)
         .param("minY", var0.min.y)
         .param("minZ", var0.min.z)
         .param("maxX", var0.max.x)
         .param("maxY", var0.max.y)
         .param("maxZ", var0.max.z);
   }

   class="kw">private class="kw">static class HitboxExtentsCommand class="kw">extends CommandBase {
      @Nonnull
      class="kw">private class="kw">final OptionalArg<Double> thresholdArg = this.withOptionalArg("threshold", "server.commands.hitbox.extents.threshold.desc", ArgTypes.DOUBLE);

      class="kw">public HitboxExtentsCommand() {
         super("extents", "server.commands.hitbox.extents.desc");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         BlockTypeAssetMap var2 = BlockType.getAssetMap();
         IndexedLookupTableAssetMap var3 = BlockBoundingBoxes.getAssetMap();
         int var4 = 0;
         double var5 = this.thresholdArg.provided(var1) ? this.thresholdArg.get(var1) : 0.5;

         for (BlockType var8 : var2.getAssetMap().values()) {
            Box var9 = var3.getAsset(var8.getHitboxTypeIndex()).get(0).getBoundingBox();
            double var10 = var9.width();
            double var12 = var9.height();
            double var14 = var9.depth();
            int var16 = Math.max(MathUtil.floor(var10), 1);
            int var17 = Math.max(MathUtil.floor(var12), 1);
            int var18 = Math.max(MathUtil.floor(var14), 1);
            if (var10 - var16 > var5) {
               var16++;
            }

            if (var12 - var17 > var5) {
               var17++;
            }

            if (var14 - var18 > var5) {
               var18++;
            }

            int var19 = var16 * var17 * var18;
            int var20 = var19 - 1;
            var4 += var20;
         }

         var1.sendMessage(Message.translation("server.commands.hitbox.extentsThresholdNeeded").param("threshold", var5).param("nb", var4));
      }
   }

   class="kw">private class="kw">static class HitboxGetCommand class="kw">extends CommandBase {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<String> hitboxArg = this.withRequiredArg("hitbox", "server.commands.hitbox.hitbox.desc", ArgTypes.STRING);

      class="kw">public HitboxGetCommand() {
         super("server.commands.hitbox.desc");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         String var2 = this.hitboxArg.get(var1);
         BlockBoundingBoxes var3 = BlockBoundingBoxes.getAssetMap().getAsset(var2);
         if (var3 != null) {
            BlockBoundingBoxes.RotatedVariantBoxes var4 = var3.get(Rotation.None, Rotation.None, Rotation.None);
            var1.sendMessage(Message.translation("server.commands.hitbox.boundingBox").param("box", HitboxCommand.formatBox(var4.getBoundingBox())));
            Box[] var5 = var4.getDetailBoxes();
            if (var5.length > 0) {
               Message var6 = Message.translation("server.commands.hitbox.details.header");
               Set var7 = Arrays.stream(var5).map(HitboxCommand::formatBox).collect(Collectors.toSet());
               var1.sendMessage(MessageFormat.list(var6, var7));
            }
         } else {
            var1.sendMessage(Message.translation("server.commands.hitbox.notFound").param("name", var2));
         }
      }
   }
}