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;
   }
}