Blackboard class
Пакет: com.hypixel.hytale.server.npc.blackboard
Файл: com/hypixel/hytale/server/npc/blackboard/Blackboard.java
implements: Resource<EntityStore>
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
HytaleLogger |
LOGGER |
|
Blackboard |
var1 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
cleanupViewsvoid cleanupViews() |
public |
void |
clearvoid clear() |
public |
<View extends IBlackboardView<View>> void |
forEachView<View extends IBlackboardView<View>> void forEachView(Class<View> var1, Consumer<View> var2) |
public |
<View extends IBlackboardView<View>> View |
getIfExists<View extends IBlackboardView<View>> View getIfExists(Class<View> var1, long var2) |
static |
ResourceType<EntityStore, Blackboard> |
getResourceTypeResourceType<EntityStore, Blackboard> getResourceType() |
public |
<View extends IBlackboardView<View>> View |
getView<View extends IBlackboardView<View>> View getView(Class<View> var1, Ref<EntityStore> var2, ComponentAccessor<EntityStore> var3) |
public |
<View extends IBlackboardView<View>> View |
getView<View extends IBlackboardView<View>> View getView(Class<View> var1, int var2, int var3) |
public |
<View extends IBlackboardView<View>> View |
getView<View extends IBlackboardView<View>> View getView(Class<View> var1, long var2) |
public |
void |
initvoid init(@Nonnull World var1) |
public |
void |
onEntityBreakBlockvoid onEntityBreakBlock(@Nonnull Ref<EntityStore> var1, @Nonnull BreakBlockEvent var2) |
public |
void |
onEntityDamageBlockvoid onEntityDamageBlock(@Nonnull Ref<EntityStore> var1, @Nonnull DamageBlockEvent var2) |
public |
void |
onEntityUseBlockvoid onEntityUseBlock(@Nonnull Ref<EntityStore> var1, @Nonnull UseBlockEvent.Post var2) |
public |
void |
onEntityUseEntityvoid onEntityUseEntity(@Nonnull Ref<EntityStore> var1, @Nonnull UseEntityEvent.Post var2) |
public |
void |
onWorldRemovedvoid onWorldRemoved() |
private |
<View extends IBlackboardView<View>> void |
registerViewType<View extends IBlackboardView<View>> void registerViewType(@Nonnull Class<View> var1, @Nonnull IBlackboardViewManager<View> var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.blackboard;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
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.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.IBlackboardView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.IBlackboardViewManager;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.SingletonBlackboardViewManager;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.attitude.AttitudeView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.blocktype.BlockTypeView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.blocktype.BlockTypeViewManager;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.event.block.BlockEventView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.event.entity.EntityEventView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.interaction.InteractionView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.resource.ResourceView;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.resource.ResourceViewManager;
class="kw">import java.util.Objects;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">public class Blackboard class="kw">implements Resource<EntityStore> {
class="kw">public class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private class="kw">final ConcurrentHashMap<Class<? class="kw">extends IBlackboardView<?>>, IBlackboardViewManager<?>> views = new ConcurrentHashMap<>();
class="kw">public Blackboard() {
}
class="kw">public class="kw">static ResourceType<EntityStore, Blackboard> getResourceType() {
class="kw">return NPCPlugin.get().getBlackboardResourceType();
}
class="kw">public void init(@Nonnull World var1) {
this.registerViewType(BlockTypeView.class, new BlockTypeViewManager());
this.registerViewType(BlockEventView.class, new SingletonBlackboardViewManager<>(new BlockEventView(var1)));
this.registerViewType(EntityEventView.class, new SingletonBlackboardViewManager<>(new EntityEventView(var1)));
this.registerViewType(ResourceView.class, new ResourceViewManager());
this.registerViewType(AttitudeView.class, new SingletonBlackboardViewManager<>(new AttitudeView(var1)));
this.registerViewType(InteractionView.class, new SingletonBlackboardViewManager<>(new InteractionView(var1)));
}
class="kw">public void onEntityDamageBlock(@Nonnull Ref<EntityStore> var1, @Nonnull DamageBlockEvent var2) {
this.forEachView(BlockEventView.class, var2x -> var2x.onEntityDamageBlock(var1, var2));
}
class="kw">public void onEntityBreakBlock(@Nonnull Ref<EntityStore> var1, @Nonnull BreakBlockEvent var2) {
this.forEachView(BlockEventView.class, var2x -> var2x.onEntityBreakBlock(var1, var2));
}
class="kw">public void onEntityUseBlock(@Nonnull Ref<EntityStore> var1, @Nonnull UseBlockEvent.Post var2) {
this.forEachView(BlockEventView.class, var2x -> var2x.onEntityUseBlock(var1, var2));
}
class="kw">public void onEntityUseEntity(@Nonnull Ref<EntityStore> var1, @Nonnull UseEntityEvent.Post var2) {
this.forEachView(EntityEventView.class, var2x -> var2x.onEntityUseEntity(var1, var2));
}
class="kw">private <View class="kw">extends IBlackboardView<View>> void registerViewType(@Nonnull Class<View> var1, @Nonnull IBlackboardViewManager<View> var2) {
this.views.put(var1, var2);
}
class="kw">public void cleanupViews() {
this.views.forEach((var0, var1) -> var1.cleanup());
}
class="kw">public void clear() {
this.views.forEach((var0, var1) -> var1.clear());
}
class="kw">public void onWorldRemoved() {
this.views.forEach((var0, var1) -> var1.onWorldRemoved());
}
class="kw">public <View class="kw">extends IBlackboardView<View>> void forEachView(Class<View> var1, Consumer<View> var2) {
this.getViewManager(var1).forEachView(var2);
}
class="kw">public <View class="kw">extends IBlackboardView<View>> View getView(Class<View> var1, Ref<EntityStore> var2, ComponentAccessor<EntityStore> var3) {
class="kw">return this.getViewManager(var1).get(var2, this, var3);
}
class="kw">public <View class="kw">extends IBlackboardView<View>> View getView(Class<View> var1, int var2, int var3) {
class="kw">return this.getViewManager(var1).get(var2, var3, this);
}
class="kw">public <View class="kw">extends IBlackboardView<View>> View getView(Class<View> var1, long var2) {
class="kw">return this.getViewManager(var1).get(var2, this);
}
class="kw">public <View class="kw">extends IBlackboardView<View>> View getIfExists(Class<View> var1, long var2) {
class="kw">return this.getViewManager(var1).getIfExists(var2);
}
@Nonnull
class="kw">private <View class="kw">extends IBlackboardView<View>> IBlackboardViewManager<View> getViewManager(Class<View> var1) {
class="kw">return Objects.requireNonNull((IBlackboardViewManager<View>)this.views.get(var1), "View type manager not registered!");
}
@Nonnull
@Override
class="kw">public Resource<EntityStore> clone() {
Blackboard var1 = new Blackboard();
var1.views.putAll(this.views);
class="kw">return var1;
}
}