BlockUsed class

Пакет: com.hypixel.hytale.builtin.triggervolumes.system

Файл: com/hypixel/hytale/builtin/triggervolumes/system/TriggerVolumeBlockEventSystems.java

extends: EntityEventSystem<EntityStore, UseBlockEvent.Post>

Поля (5)

МодификаторыТипИмя
private final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType
TriggerVolumeManager var6
Ref var7
UUIDComponent var8
Vector3i var9

Методы (5)

МодификаторыВозвратСигнатура
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull UseBlockEvent.Post var5)
if if(var6 != null)
if if(var8 != null)
abstract super super(UseBlockEvent.Post.class)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEventType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.TriggerVolumeManager;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.ResourceType;
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.EntityEventSystem;
class="kw">import com.hypixel.hytale.component.system.WorldEventSystem;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.BreakBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.EnvironmentBreakBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.PlaceBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.ecs.UseEntityEvent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
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">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class="kw">final class TriggerVolumeBlockEventSystems {
   class="kw">private TriggerVolumeBlockEventSystems() {
   }

   class="kw">public class="kw">static class="kw">final class BlockBroken class="kw">extends EntityEventSystem<EntityStore, BreakBlockEvent> {
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;

      class="kw">public BlockBroken(@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1) {
         super(BreakBlockEvent.class);
         this.managerResourceType = var1;
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull BreakBlockEvent var5
      ) {
         TriggerVolumeManager var6 = var3.getResource(this.managerResourceType);
         if (var6 != null) {
            Ref var7 = var2.getReferenceTo(var1);
            UUIDComponent var8 = var3.getComponent(var7, UUIDComponent.getComponentType());
            if (var8 != null) {
               Vector3i var9 = var5.getTargetBlock();
               var6.enqueueBlockEvent(
                  TriggerEventType.BLOCK_BROKEN,
                  var7,
                  var8.getUuid(),
                  new Vector3d(var9.x() + 0.5, var9.y() + 0.5, var9.z() + 0.5),
                  var5.getBlockType().getId()
               );
            }
         }
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.empty();
      }
   }

   class="kw">public class="kw">static class="kw">final class BlockPlaced class="kw">extends EntityEventSystem<EntityStore, PlaceBlockEvent> {
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;

      class="kw">public BlockPlaced(@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1) {
         super(PlaceBlockEvent.class);
         this.managerResourceType = var1;
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull PlaceBlockEvent var5
      ) {
         ItemStack var6 = var5.getItemInHand();
         if (var6 != null && var6.getItem() != null && var6.getItem().hasBlockType()) {
            this.enqueue(
               var1,
               var2,
               var3,
               var5.getTargetBlock().x(),
               var5.getTargetBlock().y(),
               var5.getTargetBlock().z(),
               var6.getItem().getBlockId(),
               TriggerEventType.BLOCK_PLACED
            );
         }
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.empty();
      }

      class="kw">private void enqueue(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         int var4,
         int var5,
         int var6,
         @Nonnull String var7,
         @Nonnull TriggerEventType var8
      ) {
         TriggerVolumeManager var9 = var3.getResource(this.managerResourceType);
         if (var9 != null) {
            Ref var10 = var2.getReferenceTo(var1);
            UUIDComponent var11 = var3.getComponent(var10, UUIDComponent.getComponentType());
            if (var11 != null) {
               var9.enqueueBlockEvent(var8, var10, var11.getUuid(), new Vector3d(var4 + 0.5, var5 + 0.5, var6 + 0.5), var7);
            }
         }
      }
   }

   class="kw">public class="kw">static class="kw">final class BlockUsed class="kw">extends EntityEventSystem<EntityStore, UseBlockEvent.Post> {
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;

      class="kw">public BlockUsed(@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1) {
         super(UseBlockEvent.Post.class);
         this.managerResourceType = var1;
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull UseBlockEvent.Post var5
      ) {
         TriggerVolumeManager var6 = var3.getResource(this.managerResourceType);
         if (var6 != null) {
            Ref var7 = var2.getReferenceTo(var1);
            UUIDComponent var8 = var3.getComponent(var7, UUIDComponent.getComponentType());
            if (var8 != null) {
               Vector3i var9 = var5.getTargetBlock();
               var6.enqueueBlockEvent(
                  TriggerEventType.BLOCK_USED,
                  var7,
                  var8.getUuid(),
                  new Vector3d(var9.x() + 0.5, var9.y() + 0.5, var9.z() + 0.5),
                  var5.getBlockType().getId(),
                  var5.getInteractionType()
               );
            }
         }
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.empty();
      }
   }

   class="kw">public class="kw">static class="kw">final class EntityUsed class="kw">extends EntityEventSystem<EntityStore, UseEntityEvent.Post> {
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;

      class="kw">public EntityUsed(@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1) {
         super(UseEntityEvent.Post.class);
         this.managerResourceType = var1;
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull UseEntityEvent.Post var5
      ) {
         TriggerVolumeManager var6 = var3.getResource(this.managerResourceType);
         if (var6 != null) {
            Ref var7 = var2.getReferenceTo(var1);
            UUIDComponent var8 = var3.getComponent(var7, UUIDComponent.getComponentType());
            if (var8 != null) {
               Ref var9 = var5.getTargetEntity();
               if (var9.isValid()) {
                  TransformComponent var10 = var3.getComponent(var9, TransformComponent.getComponentType());
                  if (var10 != null && var10.getPosition() != null) {
                     var6.enqueueEntityUseEvent(
                        var7, var8.getUuid(), new Vector3d(var10.getPosition()), resolveEntityTypeId(var3, var9), var5.getInteractionType()
                     );
                  }
               }
            }
         }
      }

      @Nullable
      class="kw">private class="kw">static String resolveEntityTypeId(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
         ItemComponent var2 = var0.getComponent(var1, ItemComponent.getComponentType());
         if (var2 != null) {
            ItemStack var3 = var2.getItemStack();
            if (var3 != null) {
               class="kw">return var3.getItemId();
            }
         }

         class="kw">return null;
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.empty();
      }
   }

   class="kw">public class="kw">static class="kw">final class EnvironmentBlockBroken class="kw">extends WorldEventSystem<EntityStore, EnvironmentBreakBlockEvent> {
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;

      class="kw">public EnvironmentBlockBroken(@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1) {
         super(EnvironmentBreakBlockEvent.class);
         this.managerResourceType = var1;
      }

      class="kw">public void handle(@Nonnull Store<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull EnvironmentBreakBlockEvent var3) {
         TriggerVolumeManager var4 = var1.getResource(this.managerResourceType);
         if (var4 != null && var4.hasVolumes()) {
            Vector3i var5 = var3.getTargetBlock();
            var4.enqueueEnvironmentBlockEvent(
               TriggerEventType.BLOCK_BROKEN, new Vector3d(var5.x() + 0.5, var5.y() + 0.5, var5.z() + 0.5), var3.getBlockType().getId()
            );
         }
      }
   }
}