WorldThreadAnchorActionHandler interface

Пакет: com.hypixel.hytale.server.core.modules.anchoraction

Файл: com/hypixel/hytale/server/core/modules/anchoraction/AnchorActionModule.java

Методы (1)

МодификаторыВозвратСигнатура
abstract void handlevoid handle(@Nonnull PlayerRef var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.anchoraction;

class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
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.core.util.BsonUtil;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;

class="kw">public class AnchorActionModule class="kw">extends JavaPlugin {
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(AnchorActionModule.class).build();
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">private class="kw">static AnchorActionModule instance;
   class="kw">private class="kw">final Map<String, AnchorActionHandler> handlers = new ConcurrentHashMap<>();

   class="kw">public class="kw">static AnchorActionModule get() {
      class="kw">return instance;
   }

   class="kw">public AnchorActionModule(@Nonnull JavaPluginInit var1) {
      super(var1);
      instance = this;
   }

   class="kw">public void register(@Nonnull String var1, @Nonnull AnchorActionHandler var2) {
      this.handlers.put(var1, var2);
   }

   class="kw">public void register(@Nonnull String var1, @Nonnull AnchorActionModule.WorldThreadAnchorActionHandler var2) {
      this.register(var1, var1x -> {
         Ref var2 = var1x.getReference();
         if (var2 != null) {
            Store var3 = var2.getStore();
            World var4 = var3.getExternalData().getWorld();
            var4.execute(() -> {
               if (var2.isValid()) {
                  var2.handle(var1x, var2, var3);
               }
            });
         }
      });
   }

   class="kw">public void unregister(@Nonnull String var1) {
      this.handlers.remove(var1);
   }

   class="kw">public boolean tryHandle(@Nonnull PlayerRef var1, @Nonnull String var2) {
      String var3 = null;

      try {
         BsonDocument var4 = BsonUtil.parseWithMaxDepth(var2);
         if (!var4.containsKey("action")) {
            class="kw">return false;
         }

         var3 = var4.getString("action").getValue();
         AnchorActionHandler var5 = this.handlers.get(var3);
         if (var5 == null) {
            class="kw">return false;
         }

         var5.handle(var1);
         class="kw">return true;
      } catch (Exception var6) {
         ((HytaleLogger.Api)((HytaleLogger.Api)LOGGER.atWarning()).withCause(var6))
            .log("Failed to handle anchor action '%s' for player %s", var3, var1.getUuid());
         class="kw">return false;
      }
   }

   @FunctionalInterface
   class="kw">public class="kw">interface WorldThreadAnchorActionHandler {
      void handle(@Nonnull PlayerRef var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3);
   }
}