SubscriptionLifecycleSystem class
Пакет: com.hypixel.hytale.server.npc.systems
Файл: com/hypixel/hytale/server/npc/systems/BlackboardSystems.java
extends: RefSystem<EntityStore>
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Set<Dependency<EntityStore>> |
dependencies |
|
private final ComponentType<EntityStore, BlackboardSubscription> |
subscriptionComponentType |
|
BlackboardSubscription |
var5 |
|
BlackboardSubscription |
var5 |
|
BlockTypeView |
var6 |
|
IntList |
var7 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public Set<Dependency<EntityStore>> |
getDependenciespublic Set<Dependency<EntityStore>> getDependencies() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
if if(var6 != null && var7 != 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.server.npc.systems;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.DelayedSystem;
class="kw">import com.hypixel.hytale.component.system.EntityEventSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.component.system.StoreSystem;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.BreakBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.DamageBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.UseEntityEvent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.blackboard.Blackboard;
class="kw">import com.hypixel.hytale.server.npc.blackboard.BlackboardSubscription;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.blocktype.BlockTypeView;
class="kw">import it.unimi.dsi.fastutil.ints.IntList;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BlackboardSystems {
class="kw">public BlackboardSystems() {
}
class="kw">public class="kw">static class BreakBlockEventSystem class="kw">extends EntityEventSystem<EntityStore, BreakBlockEvent> {
class="kw">public BreakBlockEventSystem() {
super(BreakBlockEvent.class);
}
class="kw">public void handle(
int var1,
@Nonnull ArchetypeChunk<EntityStore> var2,
@Nonnull Store<EntityStore> var3,
@Nonnull CommandBuffer<EntityStore> var4,
@Nonnull BreakBlockEvent var5
) {
Blackboard var6 = var3.getResource(Blackboard.getResourceType());
Ref var7 = var2.getReferenceTo(var1);
var6.onEntityBreakBlock(var7, var5);
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return Archetype.empty();
}
}
class="kw">public class="kw">static class DamageBlockEventSystem class="kw">extends EntityEventSystem<EntityStore, DamageBlockEvent> {
class="kw">public DamageBlockEventSystem() {
super(DamageBlockEvent.class);
}
class="kw">public void handle(
int var1,
@Nonnull ArchetypeChunk<EntityStore> var2,
@Nonnull Store<EntityStore> var3,
@Nonnull CommandBuffer<EntityStore> var4,
@Nonnull DamageBlockEvent var5
) {
Blackboard var6 = var3.getResource(Blackboard.getResourceType());
Ref var7 = var2.getReferenceTo(var1);
var6.onEntityDamageBlock(var7, var5);
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return Archetype.empty();
}
}
class="kw">public class="kw">static class InitSystem class="kw">extends StoreSystem<EntityStore> {
@Nonnull
class="kw">private class="kw">final ResourceType<EntityStore, Blackboard> resourceType;
class="kw">public InitSystem(@Nonnull ResourceType<EntityStore, Blackboard> var1) {
this.resourceType = var1;
}
@Override
class="kw">public void onSystemAddedToStore(@Nonnull Store<EntityStore> var1) {
var1.getResource(this.resourceType).init(var1.getExternalData().getWorld());
}
@Override
class="kw">public void onSystemRemovedFromStore(@Nonnull Store<EntityStore> var1) {
var1.getResource(this.resourceType).onWorldRemoved();
}
}
class="kw">public class="kw">static class SubscriptionLifecycleSystem class="kw">extends RefSystem<EntityStore> {
@Nonnull
class="kw">private class="kw">final ComponentType<EntityStore, BlackboardSubscription> subscriptionComponentType;
@Nonnull
class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
class="kw">public SubscriptionLifecycleSystem(@Nonnull ComponentType<EntityStore, BlackboardSubscription> var1) {
this.subscriptionComponentType = var1;
this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, RoleSystems.RoleActivateSystem.class));
}
@Nonnull
@Override
class="kw">public Set<Dependency<EntityStore>> getDependencies() {
class="kw">return this.dependencies;
}
@Override
class="kw">public void onEntityAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
BlackboardSubscription var5 = var4.getComponent(var1, this.subscriptionComponentType);
assert var5 != null;
var5.initEventViews(var1, var4);
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
BlackboardSubscription var5 = var3.getComponent(var1, this.subscriptionComponentType);
assert var5 != null;
BlockTypeView var6 = var5.removeBlockTypeBlackboardView();
IntList var7 = var5.getBlockTypeSets();
if (var6 != null && var7 != null) {
var6.removeSearchedBlockSets(var1, var7);
}
}
@Nonnull
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return this.subscriptionComponentType;
}
}
class="kw">public class="kw">static class TickingSystem class="kw">extends DelayedSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final float SYSTEM_INTERVAL = 5.0F;
@Nonnull
class="kw">private class="kw">final ResourceType<EntityStore, Blackboard> resourceType;
class="kw">public TickingSystem(@Nonnull ResourceType<EntityStore, Blackboard> var1) {
super(5.0F);
this.resourceType = var1;
}
@Override
class="kw">public void delayedTick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
var3.getResource(this.resourceType).cleanupViews();
}
}
class="kw">public class="kw">static class UseBlockEventSystem class="kw">extends EntityEventSystem<EntityStore, UseBlockEvent.Post> {
class="kw">public UseBlockEventSystem() {
super(UseBlockEvent.Post.class);
}
class="kw">public void handle(
int var1,
@Nonnull ArchetypeChunk<EntityStore> var2,
@Nonnull Store<EntityStore> var3,
@Nonnull CommandBuffer<EntityStore> var4,
@Nonnull UseBlockEvent.Post var5
) {
Blackboard var6 = var3.getResource(Blackboard.getResourceType());
Ref var7 = var2.getReferenceTo(var1);
var6.onEntityUseBlock(var7, var5);
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return Archetype.empty();
}
}
class="kw">public class="kw">static class UseEntityEventSystem class="kw">extends EntityEventSystem<EntityStore, UseEntityEvent.Post> {
class="kw">public UseEntityEventSystem() {
super(UseEntityEvent.Post.class);
}
class="kw">public void handle(
int var1,
@Nonnull ArchetypeChunk<EntityStore> var2,
@Nonnull Store<EntityStore> var3,
@Nonnull CommandBuffer<EntityStore> var4,
@Nonnull UseEntityEvent.Post var5
) {
Blackboard var6 = var3.getResource(Blackboard.getResourceType());
Ref var7 = var2.getReferenceTo(var1);
var6.onEntityUseEntity(var7, var5);
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return Archetype.empty();
}
}
}