MapMarkersInViewCommand class
Пакет: com.hypixel.hytale.server.core.command.commands.utility.worldmap.marker
Файл: com/hypixel/hytale/server/core/command/commands/utility/worldmap/marker/MapMarkersInViewCommand.java
extends: AbstractPlayerCommand
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
float |
DEFAULT_FIELD_OF_VIEW |
|
boolean |
var10 |
|
boolean |
var11 |
|
Quaterniond |
var11 |
|
ObjectSet |
var12 |
|
Matrix4d |
var12 |
|
String |
var15 |
|
boolean |
var16 |
|
String |
var17 |
|
Player |
var6 |
|
Transform |
var6 |
|
float |
var7 |
|
double |
var7 |
|
double |
var8 |
|
double |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
void |
drawViewConevoid drawViewCone(@Nonnull World var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, float var3, double var4) |
abstract |
|
drawViewCone drawViewCone(var5, var3, var2, var7, var8) |
|
|
if if(var11) |
|
|
if if(var11) |
abstract |
|
super super("inview", "server.commands.worldmap.markers.inview.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.utility.worldmap.marker;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.DebugShape;
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.debug.DebugUtils;
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.core.universe.world.worldmap.markers.DiscoverableMapMarkers;
class="kw">import com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectSet;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Matrix4d;
class="kw">import org.joml.Quaterniond;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">public class MapMarkersInViewCommand class="kw">extends AbstractPlayerCommand {
class="kw">private class="kw">static class="kw">final float DEFAULT_FIELD_OF_VIEW = 70.0F;
class="kw">private class="kw">static class="kw">final double DEFAULT_MAX_DISTANCE = 64.0;
class="kw">private class="kw">static class="kw">final float DEBUG_SHAPE_SECONDS = 10.0F;
class="kw">private class="kw">static class="kw">final double DEBUG_ARROW_HEIGHT = 2.0;
class="kw">private class="kw">static class="kw">final double MAX_DEBUG_HALF_ANGLE_DEGREES = 89.0;
@Nonnull
class="kw">private class="kw">static class="kw">final Vector3dc CONE_AXIS = new Vector3d(0.0, 1.0, 0.0);
@Nonnull
class="kw">private class="kw">final OptionalArg<Float> fieldOfViewArg = this.withOptionalArg("fov", "server.commands.worldmap.markers.inview.fov.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final OptionalArg<Double> maxDistanceArg = this.withOptionalArg("distance", "server.commands.worldmap.markers.inview.distance.desc", ArgTypes.DOUBLE);
@Nonnull
class="kw">private class="kw">final FlagArg hideFlag = this.withFlagArg("hide", "server.commands.worldmap.markers.inview.hide.desc");
@Nonnull
class="kw">private class="kw">final FlagArg debugFlag = this.withFlagArg("debug", "server.commands.worldmap.markers.inview.debug.desc");
class="kw">public MapMarkersInViewCommand() {
super("inview", "server.commands.worldmap.markers.inview.desc");
this.addAliases("cone");
}
@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;
float var7 = this.fieldOfViewArg.provided(var1) ? this.fieldOfViewArg.get(var1) : 70.0F;
double var8 = this.maxDistanceArg.provided(var1) ? this.maxDistanceArg.get(var1) : 64.0;
boolean var10 = this.hideFlag.get(var1);
boolean var11 = this.debugFlag.get(var1);
if (Float.isFinite(var7) && !(var7 <= 0.0F) && !(var7 > 360.0F)) {
if (Double.isFinite(var8) && !(var8 <= 0.0)) {
ObjectSet var12 = DiscoverableMapMarkers.getThreadLocalMarkerIdSet();
DiscoverableMapMarkers.collectMarkersInView(var6, var2, var7, var8, var10, var12);
if (var11) {
drawViewCone(var5, var3, var2, var7, var8);
}
if (var12.isEmpty()) {
var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.none").param("fov", var7).param("distance", var8));
} else {
var1.sendMessage(
Message.translation("server.commands.worldmap.markers.inview.header").param("count", var12.size()).param("fov", var7).param("distance", var8)
);
for (BlockMarkerLookup.Match var14 : BlockMarkerLookup.findAll(var5)) {
String var15 = var14.data().getMarkerId();
if (var12.contains(var15)) {
boolean var16 = var10 ? DiscoverableMapMarkers.hide(var6, var15) : DiscoverableMapMarkers.reveal(var6, var15);
String var17 = var16
? (var10 ? "server.commands.worldmap.markers.inview.state.hidden" : "server.commands.worldmap.markers.inview.state.revealed")
: "server.commands.worldmap.markers.inview.state.noChange";
var1.sendMessage(
Message.translation("server.commands.worldmap.markers.inview.entry")
.param("id", var15)
.param("x", var14.x())
.param("y", var14.y())
.param("z", var14.z())
.param("state", Message.translation(var17))
);
if (var11) {
DebugUtils.addArrow(
var5, new Vector3d(var14.x() + 0.5, var14.y() + 2.0, var14.z() + 0.5), Vector3dUtil.DOWN, DebugUtils.COLOR_MAGENTA, 10.0F, 3
);
}
}
}
}
} else {
var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.badDistance"));
}
} else {
var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.badFov"));
}
}
class="kw">private class="kw">static void drawViewCone(@Nonnull World var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, float var3, double var4) {
Transform var6 = TargetUtil.getLook(var1, var2);
double var7 = Math.toRadians(Math.min(var3 * 0.5, 89.0));
double var9 = 2.0 * var4 * Math.tan(var7);
Quaterniond var11 = new Quaterniond().rotationTo(CONE_AXIS, var6.getDirection().negate());
Matrix4d var12 = new Matrix4d().translate(var6.getPosition()).rotate(var11).translate(0.0, -var4 * 0.5, 0.0).scale(var9, var4, var9);
DebugUtils.add(var0, DebugShape.Cone, var12, DebugUtils.COLOR_CYAN, 10.0F, 3);
}
}