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