ItemSystems class

Пакет: com.hypixel.hytale.server.core.modules.entity.item

Файл: com/hypixel/hytale/server/core/modules/entity/item/ItemSystems.java

Поля (26)

МодификаторыТипИмя
private static final ComponentType<EntityStore, ItemComponent> ITEM_COMPONENT_TYPE
private final Query<EntityStore> query
ItemComponent var1
ColorLight var10
boolean var10
var10
ItemStack var2
Item var3
ModelComponent var4
String var4
ItemStack var4
Box var5
var5
ModelAsset var5
ItemUpdate var5
BoundingBox var6
Box var6
EntityTrackerSystems.Visible var6
TransformComponent var7
ItemComponent var7
Rotation3f var8
float var8
var8
ItemComponent var9
EntityScaleComponent var9
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType

Методы (23)

МодификаторыВозвратСигнатура
public EnsureRequiredComponentspublic EnsureRequiredComponents()
public TrackerSystempublic TrackerSystem(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1)
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var5 != null)
if if(var7 != null)
if if(var10 != null)
if if(var1 == null)
if if(var2 == null)
if if(var3 == null)
if if(var4 != null)
if if(var5 != null)
if if(var4 != null)
if if(var6 != null)
if if(var9 != null)
if if(var9 != null)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
private static void queueUpdatesForprivate static void queueUpdatesFor(@Nonnull Ref<EntityStore> var0, @Nonnull ItemComponent var1, float var2, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var3)
private static Box resolveItemBoundsprivate static Box resolveItemBounds(@Nonnull Holder<EntityStore> var0)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.entity.item;

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
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.SystemGroup;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.ColorLight;
class="kw">import com.hypixel.hytale.protocol.ItemUpdate;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.BlockyModelBoundsParser;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DynamicLight;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.EntityScaleComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PropComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.universe.world.storage.EntityStore;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ItemSystems {
   class="kw">public ItemSystems() {
   }

   class="kw">public class="kw">static class EnsureRequiredComponents class="kw">extends HolderSystem<EntityStore> {
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, ItemComponent> ITEM_COMPONENT_TYPE = ItemComponent.getComponentType();

      class="kw">public EnsureRequiredComponents() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return ITEM_COMPONENT_TYPE;
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         if (!var1.getArchetype().contains(NetworkId.getComponentType())) {
            var1.addComponent(NetworkId.getComponentType(), new NetworkId(var3.getExternalData().takeNextNetworkId()));
         }

         var1.ensureComponent(ItemPhysicsComponent.getComponentType());
         if (!var1.getArchetype().contains(BoundingBox.getComponentType())) {
            ModelComponent var4 = var1.getComponent(ModelComponent.getComponentType());
            Box var5 = var4 != null && var4.getModel() != null ? var4.getModel().getBoundingBox() : null;
            if (var5 == null && var1.getArchetype().contains(PropComponent.getComponentType())) {
               var5 = resolveItemBounds(var1);
            }

            BoundingBox var6 = new BoundingBox(var5 != null ? var5 : Box.horizontallyCentered(0.5, 0.5, 0.5));
            if (var5 != null) {
               var6.setBaseModelBox(var5);
               TransformComponent var7 = var1.getComponent(TransformComponent.getComponentType());
               if (var7 != null) {
                  Rotation3f var8 = var7.getRotation();
                  var6.applyRotation(var8.pitch(), var8.yaw(), var8.roll());
               }
            }

            var1.putComponent(BoundingBox.getComponentType(), var6);
         }

         ItemComponent var9 = var1.getComponent(ItemComponent.getComponentType());
         assert var9 != null;
         ColorLight var10 = var9.computeDynamicLight();
         if (var10 != null) {
            var1.putComponent(DynamicLight.getComponentType(), new DynamicLight(var10));
         }
      }

      @Nullable
      class="kw">private class="kw">static Box resolveItemBounds(@Nonnull Holder<EntityStore> var0) {
         ItemComponent var1 = var0.getComponent(ITEM_COMPONENT_TYPE);
         if (var1 == null) {
            class="kw">return null;
         }

         ItemStack var2 = var1.getItemStack();
         if (var2 == null) {
            class="kw">return null;
         }

         Item var3 = Item.getAssetMap().getAsset(var2.getItemId());
         if (var3 == null) {
            class="kw">return null;
         }

         String var4 = var3.getModel();
         if (var4 != null) {
            ModelAsset var5 = ModelAsset.getAssetMap().getAsset(var4);
            if (var5 != null) {
               class="kw">return var5.getBoundingBox();
            }
         }

         if (var4 != null) {
            Box var6 = BlockyModelBoundsParser.computeBounds(var4);
            if (var6 != null) {
               class="kw">return var6;
            }
         }

         class="kw">return null;
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }
   }

   class="kw">public class="kw">static class TrackerSystem class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public TrackerSystem(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1) {
         this.visibleComponentType = var1;
         this.query = Query.and(var1, ItemComponent.getComponentType());
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityTrackerSystems.QUEUE_UPDATE_GROUP;
      }

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

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         EntityTrackerSystems.Visible var6 = var3.getComponent(var2, this.visibleComponentType);
         assert var6 != null;
         ItemComponent var7 = var3.getComponent(var2, ItemComponent.getComponentType());
         assert var7 != null;
         float var8 = 0.0F;
         EntityScaleComponent var9 = var3.getComponent(var2, EntityScaleComponent.getComponentType());
         if (var9 != null) {
            var8 = var9.getScale();
         }

         boolean var10 = false;
         if (var9 != null) {
            var10 = var9.consumeNetworkOutdated();
         }

         if (var7.consumeNetworkOutdated() || var10) {
            queueUpdatesFor(var3.getReferenceTo(var2), var7, var8, var6.visibleTo);
         } else if (!var6.newlyVisibleTo.isEmpty()) {
            queueUpdatesFor(var3.getReferenceTo(var2), var7, var8, var6.newlyVisibleTo);
         }
      }

      class="kw">private class="kw">static void queueUpdatesFor(
         @Nonnull Ref<EntityStore> var0, @Nonnull ItemComponent var1, float var2, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var3
      ) {
         ItemStack var4 = var1.getItemStack();
         ItemUpdate var5 = new ItemUpdate(var4 != null ? var4.toPacket() : null, var2);

         for (EntityTrackerSystems.EntityViewer var7 : var3.values()) {
            var7.queueUpdate(var0, var5);
         }
      }
   }
}