MountPlugin class

Пакет: com.hypixel.hytale.builtin.mounts

Файл: com/hypixel/hytale/builtin/mounts/MountPlugin.java

extends: JavaPlugin

Поля (21)

МодификаторыТипИмя
static MountPlugin instance
instance
ComponentRegistryProxy var1
ComponentType var10
ComponentType var11
ComponentType var12
ResourceType var13
ComponentType var2
ComponentType var3
int var3
Ref var3
NPCEntity var3
PlayerRef var3
ComponentType var4
NPCMountComponent var4
MovementManager var4
ComponentType var5
ComponentType var6
ComponentType var7
ComponentType var8
ComponentType var9

Методы (20)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("Mounted component cannot be default constructed")
static void checkDismountNpcvoid checkDismountNpc(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull Player var2)
static void dismountNpcvoid dismountNpc(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, int var2)
abstract dismountNpc dismountNpc(var0, var1, var3)
public ComponentType<ChunkStore, BlockMountComponent> getBlockMountComponentTypeComponentType<ChunkStore, BlockMountComponent> getBlockMountComponentType()
static MountPlugin getInstanceMountPlugin getInstance()
public ComponentType<EntityStore, MinecartComponent> getMinecartComponentTypeComponentType<EntityStore, MinecartComponent> getMinecartComponentType()
public ComponentType<EntityStore, NPCMountComponent> getMountComponentTypeComponentType<EntityStore, NPCMountComponent> getMountComponentType()
public ComponentType<EntityStore, MountedByComponent> getMountedByComponentTypeComponentType<EntityStore, MountedByComponent> getMountedByComponentType()
public ComponentType<EntityStore, MountedComponent> getMountedComponentTypeComponentType<EntityStore, MountedComponent> getMountedComponentType()
if if(var3 != 0)
if if(var3 != null)
static void resetOriginalMountRolevoid resetOriginalMountRole(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull NPCMountComponent var2)
abstract resetOriginalMountRole resetOriginalMountRole(var3, var0, var4)
static void resetOriginalPlayerMovementSettingsvoid resetOriginalPlayerMovementSettings(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1)
static void resetOriginalPlayerMovementSettingsvoid resetOriginalPlayerMovementSettings(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, int var2)
abstract resetOriginalPlayerMovementSettings resetOriginalPlayerMovementSettings(var1, var0, var2)
abstract resetOriginalPlayerMovementSettings resetOriginalPlayerMovementSettings(var1, var0, -1)
abstract resetOriginalPlayerMovementSettings resetOriginalPlayerMovementSettings(var0, var1, -1)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.mounts.commands.MountCommand;
class="kw">import com.hypixel.hytale.builtin.mounts.interactions.MountInteraction;
class="kw">import com.hypixel.hytale.builtin.mounts.interactions.SeatingInteraction;
class="kw">import com.hypixel.hytale.builtin.mounts.interactions.SpawnMinecartInteraction;
class="kw">import com.hypixel.hytale.builtin.mounts.minecart.MinecartComponent;
class="kw">import com.hypixel.hytale.builtin.mounts.npc.builders.BuilderActionMount;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
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.ResourceType;
class="kw">import com.hypixel.hytale.protocol.packets.interaction.DismountNPC;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.movement.MovementManager;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.io.ServerManager;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Interactable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerInput;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.time.TimeResource;
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.prefab.PrefabCopyableComponent;
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 com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.systems.RoleChangeSystem;
class="kw">import javax.annotation.Nonnull;

class="kw">public class MountPlugin class="kw">extends JavaPlugin {
   class="kw">private class="kw">static MountPlugin instance;
   class="kw">private ComponentType<ChunkStore, BlockMountComponent> blockMountComponentType;
   class="kw">private ComponentType<EntityStore, NPCMountComponent> mountComponentType;
   class="kw">private ComponentType<EntityStore, MountedComponent> mountedComponentType;
   class="kw">private ComponentType<EntityStore, MountedByComponent> mountedByComponentType;
   class="kw">private ComponentType<EntityStore, MinecartComponent> minecartComponentType;

   class="kw">public class="kw">static MountPlugin getInstance() {
      class="kw">return instance;
   }

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

   class="kw">public ComponentType<EntityStore, NPCMountComponent> getMountComponentType() {
      class="kw">return this.mountComponentType;
   }

   class="kw">public ComponentType<EntityStore, MountedComponent> getMountedComponentType() {
      class="kw">return this.mountedComponentType;
   }

   class="kw">public ComponentType<EntityStore, MountedByComponent> getMountedByComponentType() {
      class="kw">return this.mountedByComponentType;
   }

   class="kw">public ComponentType<EntityStore, MinecartComponent> getMinecartComponentType() {
      class="kw">return this.minecartComponentType;
   }

   @Override
   class="kw">protected void setup() {
      ComponentRegistryProxy var1 = this.getEntityStoreRegistry();
      instance = this;
      this.blockMountComponentType = this.getChunkStoreRegistry().registerComponent(BlockMountComponent.class, BlockMountComponent::new);
      NPCPlugin.get().registerCoreComponentType("Mount", BuilderActionMount::new);
      this.mountComponentType = var1.registerComponent(NPCMountComponent.class, "Mount", NPCMountComponent.CODEC);
      this.mountedComponentType = var1.registerComponent(MountedComponent.class, () -> {
         throw new UnsupportedOperationException("Mounted component cannot be class="kw">default constructed");
      });
      this.mountedByComponentType = var1.registerComponent(MountedByComponent.class, MountedByComponent::new);
      this.minecartComponentType = var1.registerComponent(MinecartComponent.class, "Minecart", MinecartComponent.CODEC);
      ComponentType var2 = NPCEntity.getComponentType();
      ComponentType var3 = NetworkId.getComponentType();
      ComponentType var4 = Player.getComponentType();
      ComponentType var5 = EntityTrackerSystems.Visible.getComponentType();
      ComponentType var6 = PlayerInput.getComponentType();
      ComponentType var7 = MovementStatesComponent.getComponentType();
      ComponentType var8 = TransformComponent.getComponentType();
      ComponentType var9 = Teleport.getComponentType();
      ComponentType var10 = DeathComponent.getComponentType();
      ComponentType var11 = Interactable.getComponentType();
      ComponentType var12 = PrefabCopyableComponent.getComponentType();
      ResourceType var13 = TimeResource.getResourceType();
      var1.registerSystem(new NPCMountSystems.OnAdd(this.mountComponentType, var2, var3));
      var1.registerSystem(new NPCMountSystems.DismountOnPlayerDeath(var4));
      var1.registerSystem(new NPCMountSystems.DismountOnPlayerSpectating(var4));
      var1.registerSystem(new NPCMountSystems.DismountOnMountDeath(this.mountComponentType));
      var1.registerSystem(new NPCMountSystems.OnPlayerRemove(var4));
      var1.registerSystem(new MountSystems.TrackerUpdate(var5, this.mountedComponentType));
      var1.registerSystem(new MountSystems.TrackerRemove(this.mountedComponentType, var5));
      var1.registerSystem(new MountSystems.RemoveMountedBy(this.mountedByComponentType, this.mountedComponentType));
      var1.registerSystem(new MountSystems.RemoveMounted(this.mountedComponentType));
      var1.registerSystem(new MountSystems.RemoveMountedHolder(this.mountedComponentType));
      var1.registerSystem(new MountSystems.TeleportMountedEntity(this.mountedComponentType, var9));
      var1.registerSystem(new MountSystems.MountedEntityDeath(this.mountedComponentType, var10));
      var1.registerSystem(new MountSystems.MountedEntitySpectating(this.mountedComponentType));
      var1.registerSystem(new MountSystems.PlayerMount(this.mountedComponentType, var6, var3));
      var1.registerSystem(new MountSystems.HandleMountInput(this.mountedComponentType, var6, var7, var8));
      var1.registerSystem(new MountSystems.TrackedMounted(this.mountedComponentType, this.mountedByComponentType));
      var1.registerSystem(new MountSystems.EnsureMinecartComponents(this.minecartComponentType, var11, var3, var12));
      var1.registerSystem(new MountSystems.OnMinecartHit(this.minecartComponentType, var8, var4, var13));
      this.getChunkStoreRegistry().registerSystem(new MountSystems.RemoveBlockSeat(this.blockMountComponentType, this.mountedComponentType));
      ServerManager.get().registerSubPacketHandlers(MountGamePacketHandler::new);
      this.getCommandRegistry().registerCommand(new MountCommand());
      Interaction.CODEC.register("SpawnMinecart", SpawnMinecartInteraction.class, SpawnMinecartInteraction.CODEC);
      Interaction.CODEC.register("Mount", MountInteraction.class, MountInteraction.CODEC);
      Interaction.CODEC.register("Seating", SeatingInteraction.class, SeatingInteraction.CODEC);
   }

   class="kw">public ComponentType<ChunkStore, BlockMountComponent> getBlockMountComponentType() {
      class="kw">return this.blockMountComponentType;
   }

   class="kw">public class="kw">static void checkDismountNpc(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull Player var2) {
      int var3 = var2.getMountEntityId();
      if (var3 != 0) {
         var2.setMountEntityId(0);
         dismountNpc(var0, var1, var3);
      }
   }

   class="kw">private class="kw">static void dismountNpc(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, int var2) {
      Ref var3 = var0.getExternalData().getRefFromNetworkId(var2);
      if (var3 != null && var3.isValid()) {
         NPCMountComponent var4 = var0.getComponent(var3, NPCMountComponent.getComponentType());
         assert var4 != null;
         resetOriginalMountRole(var3, var0, var4);
         resetOriginalPlayerMovementSettings(var1, var0, var2);
      } else {
         resetOriginalPlayerMovementSettings(var1, var0, -1);
      }
   }

   class="kw">private class="kw">static void resetOriginalMountRole(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull NPCMountComponent var2) {
      NPCEntity var3 = var1.getComponent(var0, NPCEntity.getComponentType());
      assert var3 != null;
      RoleChangeSystem.requestRoleChange(var0, var3.getRole(), var2.getOriginalRoleIndex(), false, "Idle", null, var1);
      var1.removeComponent(var0, NPCMountComponent.getComponentType());
   }

   class="kw">public class="kw">static void resetOriginalPlayerMovementSettings(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
      resetOriginalPlayerMovementSettings(var0, var1, -1);
   }

   class="kw">public class="kw">static void resetOriginalPlayerMovementSettings(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, int var2) {
      PlayerRef var3 = var1.getComponent(var0, PlayerRef.getComponentType());
      if (var3 != null) {
         var3.getPacketHandler().write(new DismountNPC(var2));
         MovementManager var4 = var1.getComponent(var0, MovementManager.getComponentType());
         assert var4 != null;
         var4.resetDefaultsAndUpdate(var0, var1);
      }
   }
}