JoinCommand class
Пакет: com.hypixel.hytale.server.flock.commands
Файл: com/hypixel/hytale/server/flock/commands/NPCFlockCommand.java
extends: AbstractPlayerCommand
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
String |
var3 |
|
boolean |
var6 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
|
|
if if(var3 != null) |
|
|
if if(!var6) |
abstract |
|
super super("join", "server.commands.npc.flock.join.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.flock.commands;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
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.command.system.CommandContext;
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.modules.entity.component.HeadRotation;
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.flock.FlockMembership;
class="kw">import com.hypixel.hytale.server.flock.FlockMembershipSystems;
class="kw">import com.hypixel.hytale.server.flock.FlockPlugin;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.util.NPCPhysicsMath;
class="kw">import java.util.List;
class="kw">import java.util.function.BiPredicate;
class="kw">import java.util.function.Predicate;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class NPCFlockCommand class="kw">extends AbstractCommandCollection {
class="kw">private class="kw">static class="kw">final double ENTITY_IN_VIEW_DISTANCE = 8.0;
class="kw">private class="kw">static class="kw">final float ENTITY_IN_VIEW_ANGLE = 30.0F;
class="kw">private class="kw">static class="kw">final int ENTITY_IN_VIEW_HEIGHT = 2;
class="kw">public NPCFlockCommand() {
super("flock", "server.commands.npc.flock.desc");
this.addSubCommand(new NPCFlockCommand.LeaveCommand());
this.addSubCommand(new NPCFlockCommand.GrabCommand());
this.addSubCommand(new NPCFlockCommand.JoinCommand());
this.addSubCommand(new NPCFlockCommand.PlayerLeaveCommand());
}
class="kw">public class="kw">static int forNpcEntitiesInViewCone(
@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nonnull BiPredicate<Ref<EntityStore>, NPCEntity> var2
) {
ComponentType var3 = TransformComponent.getComponentType();
TransformComponent var4 = var1.getComponent(var0, var3);
assert var4 != null;
Vector3d var5 = var4.getPosition();
HeadRotation var6 = var1.getComponent(var0, HeadRotation.getComponentType());
assert var6 != null;
Rotation3f var7 = var6.getRotation();
float var8 = var7.yaw();
double var9 = var5.x();
double var11 = var5.y();
double var13 = var5.z();
SpatialResource var15 = var1.getResource(NPCPlugin.get().getNpcSpatialResource());
List var16 = SpatialResource.getThreadLocalReferenceList();
var15.getSpatialStructure().collect(var5, 8.0, var16);
ComponentType var17 = NPCEntity.getComponentType();
assert var17 != null;
int var18 = 0;
for (Ref var20 : var16) {
NPCEntity var21 = var1.getComponent(var20, var17);
assert var21 != null;
TransformComponent var22 = var1.getComponent(var20, var3);
assert var22 != null;
Vector3d var23 = var22.getPosition();
if (Math.abs(var23.y() - var11) < 2.0
&& NPCPhysicsMath.inViewSector(var9, var13, var8, (float) (Math.PI / 6), var23.x(), var23.z())
&& var2.test(var20, var21)) {
var18++;
}
}
class="kw">return var18;
}
class="kw">public class="kw">static boolean anyEntityInViewCone(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nonnull Predicate<Ref<EntityStore>> var2) {
ComponentType var3 = TransformComponent.getComponentType();
TransformComponent var4 = var1.getComponent(var0, var3);
assert var4 != null;
Vector3d var5 = var4.getPosition();
HeadRotation var6 = var1.getComponent(var0, HeadRotation.getComponentType());
assert var6 != null;
Rotation3f var7 = var6.getRotation();
float var8 = var7.yaw();
double var9 = var5.x();
double var11 = var5.y();
double var13 = var5.z();
SpatialResource var15 = var1.getResource(NPCPlugin.get().getNpcSpatialResource());
List var16 = SpatialResource.getThreadLocalReferenceList();
var15.getSpatialStructure().ordered(var5, 8.0, var16);
for (Ref var18 : var16) {
TransformComponent var19 = var1.getComponent(var18, var3);
assert var19 != null;
Vector3d var20 = var19.getPosition();
if (Math.abs(var20.y() - var11) < 2.0
&& NPCPhysicsMath.inViewSector(var9, var13, var8, (float) (Math.PI / 6), var20.x(), var20.z())
&& var2.test(var18)) {
class="kw">return true;
}
}
class="kw">return false;
}
class="kw">public class="kw">static class GrabCommand class="kw">extends AbstractPlayerCommand {
class="kw">public GrabCommand() {
super("grab", "server.commands.npc.flock.grab.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
int var6 = NPCFlockCommand.forNpcEntitiesInViewCone(var3, var2, (var2x, var3x) -> {
FlockMembership var4 = var2.getComponent(var2x, FlockMembership.getComponentType());
if (var4 == null) {
Ref var5 = FlockPlugin.getFlockReference(var3, var2);
if (var5 == null) {
var5 = FlockPlugin.createFlock(var2, var3x.getRole());
FlockMembershipSystems.join(var3, var5, var2);
}
FlockMembershipSystems.join(var2x, var5, var2);
class="kw">return true;
} else {
class="kw">return false;
}
});
var1.sendMessage(Message.translation("server.commands.npc.flock.addedToFlock").param("count", var6));
}
}
class="kw">public class="kw">static class JoinCommand class="kw">extends AbstractPlayerCommand {
class="kw">public JoinCommand() {
super("join", "server.commands.npc.flock.join.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
boolean var6 = NPCFlockCommand.anyEntityInViewCone(var3, var2, var2x -> {
Ref var3 = FlockPlugin.getFlockReference(var2x, var2);
if (var3 != null) {
FlockMembershipSystems.join(var3, var3, var2);
class="kw">return true;
} else {
class="kw">return false;
}
});
if (!var6) {
var1.sendMessage(Message.translation("server.commands.npc.flock.resultJoinFlock").param("status", "Failed"));
} else {
var5.execute(() -> {
String var3 = FlockPlugin.isFlockMember(var3, var2) ? "Succeeded" : "Failed";
var1.sendMessage(Message.translation("server.commands.npc.flock.resultJoinFlock").param("status", var3));
});
}
}
}
class="kw">public class="kw">static class LeaveCommand class="kw">extends AbstractPlayerCommand {
class="kw">public LeaveCommand() {
super("leave", "server.commands.npc.flock.leave.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
int var6 = NPCFlockCommand.forNpcEntitiesInViewCone(var3, var2, (var1x, var2x) -> {
var2.tryRemoveComponent(var1x, FlockMembership.getComponentType());
class="kw">return true;
});
var1.sendMessage(Message.translation("server.commands.npc.flock.removedFromFlock").param("count", var6));
}
}
class="kw">public class="kw">static class PlayerLeaveCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_FLOCK_LEFT_FLOCK = Message.translation("server.commands.npc.flock.leftFlock");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_FLOCK_FAILED_LEAVE_FLOCK = Message.translation("server.commands.npc.flock.failedLeaveFlock");
class="kw">public PlayerLeaveCommand() {
super("playerleave", "server.commands.npc.flock.playerleave.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
if (var2.removeComponentIfExists(var3, FlockMembership.getComponentType())) {
var1.sendMessage(MESSAGE_COMMANDS_NPC_FLOCK_LEFT_FLOCK);
} else {
var1.sendMessage(MESSAGE_COMMANDS_NPC_FLOCK_FAILED_LEAVE_FLOCK);
}
}
}
}