TeleporterOwnedWarpRefChangeSystem class

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

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

extends: RefChangeSystem<ChunkStore, Teleporter>

Поля (6)

МодификаторыТипИмя
private final ComponentType<ChunkStore, BlockModule.BlockStateInfo> blockStateComponentType
private final ComponentType<ChunkStore, Teleporter> teleporterComponentType
String var5
String var6
BlockModule.BlockStateInfo var6
BlockModule.BlockStateInfo var7

Методы (6)

МодификаторыВозвратСигнатура
public ComponentType<ChunkStore, Teleporter> componentTypepublic ComponentType<ChunkStore, Teleporter> componentType()
public Query<ChunkStore> getQuerypublic Query<ChunkStore> getQuery()
if if(var2 != 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)

Исходный код

Показать/скрыть
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;
      }
   }
}