HitboxExtentsCommand class
Пакет: com.hypixel.hytale.server.core.modules.collision.commands
Файл: com/hypixel/hytale/server/core/modules/collision/commands/HitboxCommand.java
extends: CommandBase
Поля (14)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final OptionalArg<Double> |
thresholdArg |
|
double |
var10 |
|
double |
var12 |
|
double |
var14 |
|
int |
var16 |
|
int |
var17 |
|
int |
var18 |
|
int |
var19 |
|
BlockTypeAssetMap |
var2 |
|
int |
var20 |
|
IndexedLookupTableAssetMap |
var3 |
|
int |
var4 |
|
double |
var5 |
|
Box |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeSyncprotected void executeSync(@Nonnull CommandContext var1) |
|
|
if if(var10 - var16 > var5) |
|
|
if if(var12 - var17 > var5) |
|
|
if if(var14 - var18 > var5) |
abstract |
|
super super("extents", "server.commands.hitbox.extents.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));
}
}
}
}