VoidSpawnerSystems class
Пакет: com.hypixel.hytale.builtin.portals.systems.voidevent
Файл: com/hypixel/hytale/builtin/portals/systems/voidevent/VoidSpawnerSystems.java
Поля (18)
| Модификаторы | Тип | Имя |
|---|---|---|
|
VoidSpawner |
var10 |
|
TransformComponent |
var11 |
|
Vector3d |
var12 |
|
String |
var14 |
|
Vector3d |
var15 |
|
int |
var16 |
|
BeaconSpawnWrapper |
var17 |
|
Holder |
var18 |
|
UUID |
var19 |
|
String |
var20 |
|
World |
var5 |
|
World |
var5 |
|
PortalGameplayConfig |
var6 |
|
VoidSpawner |
var6 |
|
VoidEventConfig |
var7 |
|
InvasionPortalConfig |
var8 |
|
List |
var9 |
|
Ref |
var9 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Instantiatepublic Instantiate() |
abstract |
|
for for(int var13 = 0; var13 < var9.size() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
if if(var16 == -1) |
|
|
if if(var20 != null) |
|
|
if if(var9 != null) |
|
public void |
onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
|
public void |
onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.portals.systems.voidevent;
class="kw">import com.hypixel.hytale.builtin.portals.components.voidevent.VoidSpawner;
class="kw">import com.hypixel.hytale.builtin.portals.components.voidevent.config.InvasionPortalConfig;
class="kw">import com.hypixel.hytale.builtin.portals.components.voidevent.config.VoidEventConfig;
class="kw">import com.hypixel.hytale.builtin.portals.integrations.PortalGameplayConfig;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
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.spawning.SpawningPlugin;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.BeaconNPCSpawn;
class="kw">import com.hypixel.hytale.server.spawning.beacons.LegacySpawnBeaconEntity;
class="kw">import com.hypixel.hytale.server.spawning.wrappers.BeaconSpawnWrapper;
class="kw">import java.util.List;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">final class VoidSpawnerSystems {
@Nonnull
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(VoidSpawner.getComponentType(), TransformComponent.getComponentType());
class="kw">public VoidSpawnerSystems() {
}
class="kw">public class="kw">static class Instantiate class="kw">extends RefSystem<EntityStore> {
class="kw">public Instantiate() {
}
@Override
class="kw">public void onEntityAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
HytaleLogger.getLogger().at(Level.INFO).log("Adding void spawner...");
World var5 = var3.getExternalData().getWorld();
PortalGameplayConfig var6 = var5.getGameplayConfig().getPluginConfig().get(PortalGameplayConfig.class);
VoidEventConfig var7 = var6.getVoidEvent();
InvasionPortalConfig var8 = var7.getInvasionPortalConfig();
List var9 = var8.getSpawnBeaconsList();
if (var9.isEmpty()) {
HytaleLogger.getLogger()
.at(Level.WARNING)
.log("No spawn beacons configured for void spawn in GameplayConfig for portal world (no mobs will spawn during void event)");
} else {
VoidSpawner var10 = var4.getComponent(var1, VoidSpawner.getComponentType());
TransformComponent var11 = var4.getComponent(var1, TransformComponent.getComponentType());
Vector3d var12 = var11.getPosition();
for (int var13 = 0; var13 < var9.size(); var13++) {
String var14 = var9.get(var13);
Vector3d var15 = new Vector3d(var12).add(0.0, 0.5 + 0.1 * var13, 0.0);
int var16 = BeaconNPCSpawn.getAssetMap().getIndexOrDefault(var14, -1);
if (var16 == -1) {
HytaleLogger.getLogger().at(Level.WARNING).log("No asset found for spawn beacon \"%s\" in GameplayConfig for portal world", var14);
} else {
BeaconSpawnWrapper var17 = SpawningPlugin.get().getBeaconSpawnWrapper(var16);
Holder var18 = LegacySpawnBeaconEntity.createHolder(var17, var15, var11.getRotation());
var4.addEntity(var18, AddReason.SPAWN);
UUID var19 = var18.getComponent(UUIDComponent.getComponentType()).getUuid();
var10.getSpawnBeaconUuids().add(var19);
}
}
String var20 = var8.getOnSpawnParticles();
if (var20 != null) {
ParticleUtil.spawnParticleEffect(var20, var12, var4);
}
}
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
World var5 = var3.getExternalData().getWorld();
VoidSpawner var6 = var4.getComponent(var1, VoidSpawner.getComponentType());
assert var6 != null;
for (UUID var8 : var6.getSpawnBeaconUuids()) {
Ref var9 = var5.getEntityStore().getRefFromUUID(var8);
if (var9 != null) {
var4.removeEntity(var9, RemoveReason.REMOVE);
}
}
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return VoidSpawnerSystems.QUERY;
}
}
}