TeleporterPlugin class

Пакет: com.hypixel.hytale.builtin.adventure.teleporter

Файл: com/hypixel/hytale/builtin/adventure/teleporter/TeleporterPlugin.java

extends: JavaPlugin

Поля (25)

МодификаторыТипИмя
private final ComponentType<ChunkStore, BlockModule.BlockStateInfo> blockStateComponentType
private final ComponentType<ChunkStore, BlockModule.BlockStateInfo> blockStateComponentType
static TeleporterPlugin instance
instance
private final Query<ChunkStore> query
private final ComponentType<ChunkStore, Teleporter> teleporterComponentType
private final ComponentType<ChunkStore, Teleporter> teleporterComponentType
ComponentRegistryProxy var1
Warp var1
ComponentRegistryProxy var2
ComponentType var3
ComponentType var4
ComponentType var5
String var5
Teleporter var5
Teleporter var5
ComponentType var6
String var6
BlockModule.BlockStateInfo var6
BlockModule.BlockStateInfo var6
BlockModule.BlockStateInfo var6
ComponentType var7
BlockModule.BlockStateInfo var7
ComponentType var8
ComponentType var9

Методы (20)

МодификаторыВозвратСигнатура
public TeleporterOwnedWarpRefChangeSystempublic TeleporterOwnedWarpRefChangeSystem(@Nonnull ComponentType<ChunkStore, Teleporter> var1, @Nonnull ComponentType<ChunkStore, BlockModule.BlockStateInfo> var2)
public TeleporterOwnedWarpRefSystempublic TeleporterOwnedWarpRefSystem(@Nonnull ComponentType<ChunkStore, Teleporter> var1, @Nonnull ComponentType<ChunkStore, BlockModule.BlockStateInfo> var2)
public ComponentType<ChunkStore, Teleporter> componentTypepublic ComponentType<ChunkStore, Teleporter> componentType()
static TeleporterPlugin getTeleporterPlugin get()
public Query<ChunkStore> getQuerypublic Query<ChunkStore> getQuery()
public Query<ChunkStore> getQuerypublic Query<ChunkStore> getQuery()
public ComponentType<ChunkStore, Teleporter> getTeleporterComponentTypeComponentType<ChunkStore, Teleporter> getTeleporterComponentType()
public ComponentType<EntityStore, UsedTeleporter> getUsedTeleporterComponentTypeComponentType<EntityStore, UsedTeleporter> getUsedTeleporterComponentType()
static void handleModifyWarpEventvoid handleModifyWarpEvent(ModifyWarpEvent var0)
if if(var2 != null)
if if(var2 == AddReason.LOAD)
if if(var6 != null)
if if(var2 == RemoveReason.REMOVE)
if if(var6 != null)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull Teleporter var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<ChunkStore> var1, @Nonnull Teleporter var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<ChunkStore> var1, @Nullable Teleporter var2, @Nonnull Teleporter var3, @Nonnull Store<ChunkStore> var4, @Nonnull CommandBuffer<ChunkStore> var5)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.teleporter;

class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.component.Teleporter;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.interaction.server.TeleporterInteraction;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.interaction.server.UsedTeleporter;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.page.TeleporterSettingsPageSupplier;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.ClearUsedTeleporterSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.CreateWarpWhenTeleporterPlacedSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.TurnOffTeleportersSystem;
class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
class="kw">import com.hypixel.hytale.builtin.teleport.Warp;
class="kw">import com.hypixel.hytale.builtin.teleport.commands.event.ModifyWarpEvent;
class="kw">import com.hypixel.hytale.builtin.teleport.commands.event.RemoveWarpEvent;
class="kw">import com.hypixel.hytale.builtin.teleport.commands.event.ReplaceWarpEvent;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentRegistryProxy;
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.Store;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.PendingTeleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.TeleportRecord;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.components.PlacedByInteractionComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.OpenCustomUIInteraction;
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.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class TeleporterPlugin class="kw">extends JavaPlugin {
   class="kw">private class="kw">static TeleporterPlugin instance;
   class="kw">private class="kw">static class="kw">final Message MESSAGE_TELEPORTER_PROTECTION_REASON = Message.translation("server.commands.teleporter.warp.class="kw">protected");
   class="kw">private ComponentType<ChunkStore, Teleporter> teleporterComponentType;
   class="kw">private ComponentType<EntityStore, UsedTeleporter> usedTeleporterComponentType;

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

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

   @Override
   class="kw">protected void setup() {
      ComponentRegistryProxy var1 = this.getChunkStoreRegistry();
      ComponentRegistryProxy var2 = this.getEntityStoreRegistry();
      this.teleporterComponentType = var1.registerComponent(Teleporter.class, "Teleporter", Teleporter.CODEC);
      ComponentType var3 = PlacedByInteractionComponent.getComponentType();
      ComponentType var4 = BlockModule.BlockStateInfo.getComponentType();
      ComponentType var5 = PlayerRef.getComponentType();
      ComponentType var6 = TransformComponent.getComponentType();
      ComponentType var7 = TeleportRecord.getComponentType();
      ComponentType var8 = Teleport.getComponentType();
      ComponentType var9 = PendingTeleport.getComponentType();
      var1.registerSystem(new TeleporterPlugin.TeleporterOwnedWarpRefChangeSystem(this.teleporterComponentType, var4));
      var1.registerSystem(new TeleporterPlugin.TeleporterOwnedWarpRefSystem(this.teleporterComponentType, var4));
      var1.registerSystem(new TurnOffTeleportersSystem());
      this.getChunkStoreRegistry().registerSystem(new CreateWarpWhenTeleporterPlacedSystem(var3, this.teleporterComponentType, var4, var5));
      this.usedTeleporterComponentType = var2.registerComponent(UsedTeleporter.class, UsedTeleporter::new);
      var2.registerSystem(new ClearUsedTeleporterSystem(this.usedTeleporterComponentType, var6, var7, var8, var9));
      this.getCodecRegistry(Interaction.CODEC).register("Teleporter", TeleporterInteraction.class, TeleporterInteraction.CODEC);
      this.getCodecRegistry(OpenCustomUIInteraction.PAGE_CODEC)
         .register("Teleporter", TeleporterSettingsPageSupplier.class, TeleporterSettingsPageSupplier.CODEC);
      this.getEventRegistry().registerGlobal(RemoveWarpEvent.class, TeleporterPlugin::handleModifyWarpEvent);
      this.getEventRegistry().registerGlobal(ReplaceWarpEvent.class, TeleporterPlugin::handleModifyWarpEvent);
   }

   class="kw">public ComponentType<ChunkStore, Teleporter> getTeleporterComponentType() {
      class="kw">return this.teleporterComponentType;
   }

   class="kw">public ComponentType<EntityStore, UsedTeleporter> getUsedTeleporterComponentType() {
      class="kw">return this.usedTeleporterComponentType;
   }

   class="kw">private class="kw">static void handleModifyWarpEvent(ModifyWarpEvent var0) {
      Warp var1 = var0.getWarp();
      if (var1.getCreator().equals("*Teleporter")) {
         var0.cancel(MESSAGE_TELEPORTER_PROTECTION_REASON.param("name", var1.getId()));
      }
   }

   class="kw">private class="kw">static class TeleporterOwnedWarpRefChangeSystem class="kw">extends RefChangeSystem<ChunkStore, Teleporter> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<ChunkStore, Teleporter> teleporterComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<ChunkStore, BlockModule.BlockStateInfo> blockStateComponentType;

      class="kw">public TeleporterOwnedWarpRefChangeSystem(
         @Nonnull ComponentType<ChunkStore, Teleporter> var1, @Nonnull ComponentType<ChunkStore, BlockModule.BlockStateInfo> var2
      ) {
         this.teleporterComponentType = var1;
         this.blockStateComponentType = var2;
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<ChunkStore, Teleporter> componentType() {
         class="kw">return this.teleporterComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<ChunkStore> var1, @Nonnull Teleporter var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<ChunkStore> var1,
         @Nullable Teleporter var2,
         @Nonnull Teleporter var3,
         @Nonnull Store<ChunkStore> var4,
         @Nonnull CommandBuffer<ChunkStore> var5
      ) {
         if (var2 != null) {
            String var6 = var2.getOwnedWarp();
            if (var6 != null && !var6.isEmpty() && !var6.equals(var3.getOwnedWarp())) {
               BlockModule.BlockStateInfo var7 = var5.getComponent(var1, this.blockStateComponentType);
               if (var7 != null && Teleporter.validateWarp(var4, var2, var7) == Teleporter.ValidationResult.VALID) {
                  TeleportPlugin.get().removeWarp(var6);
               }

               var2.setOwnedWarp(null);
            }
         }
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<ChunkStore> var1, @Nonnull Teleporter var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
         String var5 = var2.getOwnedWarp();
         if (var5 != null && !var5.isEmpty()) {
            BlockModule.BlockStateInfo var6 = var4.getComponent(var1, this.blockStateComponentType);
            if (var6 != null && Teleporter.validateWarp(var3, var2, var6) == Teleporter.ValidationResult.VALID) {
               TeleportPlugin.get().removeWarp(var5);
            }

            var2.setOwnedWarp(null);
         }
      }

      @Nonnull
      @Override
      class="kw">public Query<ChunkStore> getQuery() {
         class="kw">return Query.any();
      }
   }

   class="kw">private class="kw">static class TeleporterOwnedWarpRefSystem class="kw">extends RefSystem<ChunkStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<ChunkStore, Teleporter> teleporterComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<ChunkStore, BlockModule.BlockStateInfo> blockStateComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<ChunkStore> query;

      class="kw">public TeleporterOwnedWarpRefSystem(
         @Nonnull ComponentType<ChunkStore, Teleporter> var1, @Nonnull ComponentType<ChunkStore, BlockModule.BlockStateInfo> var2
      ) {
         this.teleporterComponentType = var1;
         this.blockStateComponentType = var2;
         this.query = Query.and(var1, var2);
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
         if (var2 == AddReason.LOAD) {
            Teleporter var5 = var4.getComponent(var1, this.teleporterComponentType);
            if (var5 != null && var5.getOwnedWarp() != null) {
               BlockModule.BlockStateInfo var6 = var4.getComponent(var1, this.blockStateComponentType);
               if (var6 != null) {
                  if (Teleporter.validateWarp(var3, var5, var6) != Teleporter.ValidationResult.VALID) {
                     ((HytaleLogger.Api)TeleporterPlugin.get().getLogger().atInfo())
                        .log("Owned warp '%s' is no longer valid for teleporter", var5.getOwnedWarp());
                     var5.setOwnedWarp(null);
                  }
               }
            }
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
         if (var2 == RemoveReason.REMOVE) {
            Teleporter var5 = var4.getComponent(var1, this.teleporterComponentType);
            if (var5 != null && var5.getOwnedWarp() != null) {
               BlockModule.BlockStateInfo var6 = var4.getComponent(var1, this.blockStateComponentType);
               if (var6 != null) {
                  if (Teleporter.validateWarp(var3, var5, var6) == Teleporter.ValidationResult.VALID) {
                     TeleportPlugin.get().removeWarp(var5.getOwnedWarp());
                  }

                  var5.setOwnedWarp(null);
               }
            }
         }
      }

      @Nonnull
      @Override
      class="kw">public Query<ChunkStore> getQuery() {
         class="kw">return this.query;
      }
   }
}