Entry class

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

Файл: com/hypixel/hytale/builtin/adventure/worldevents/context/ContextMap.java

Поля (2)

МодификаторыТипИмя
protected final Map<ContextKey, T> context
protected final Class<T> type

Методы (3)

МодификаторыВозвратСигнатура
protected T getprotected T get(@Nonnull ContextKey var1)
protected void putprotected void put(@Nonnull ContextKey var1, @Nonnull Object var2)
protected T removeprotected T remove(@Nonnull ContextKey var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.function.consumer.TriConsumer;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ContextMap {
   class="kw">protected class="kw">final Map<Class<? class="kw">extends Context>, ContextMap.Entry<?>> types = new Reference2ObjectOpenHashMap();

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

   class="kw">public void clear() {
      this.types.clear();
   }

   class="kw">public void putAll(@Nonnull ContextMap var1) {
      for (Map.Entry var3 : var1.types.entrySet()) {
         this.types.put(var3.getKey(), new ContextMap.Entry<>(var3.getValue()));
      }
   }

   class="kw">public <T class="kw">extends Context> void put(@Nonnull ContextKey var1, @Nonnull T var2) {
      this.types.computeIfAbsent((Class<? class="kw">extends Context>)var2.getClass(), ContextMap.Entry::new).put(var1, var2);
   }

   class="kw">public boolean has(@Nonnull ContextKey var1, @Nonnull Class<? class="kw">extends Context> var2) {
      ContextMap.Entry var3 = this.types.get(var2);
      class="kw">return var3 != null && var3.context.containsKey(var1);
   }

   @Nullable
   class="kw">public <T class="kw">extends Context> T get(@Nonnull ContextKey var1, @Nonnull Class<T> var2) {
      ContextMap.Entry var3 = this.types.get(var2);
      if (var3 == null) {
         class="kw">return null;
      }

      Context var4 = var3.get(var1);
      class="kw">return var4 == null ? null : var2.cast(var4);
   }

   @Nullable
   class="kw">public <T class="kw">extends Context> T consume(@Nonnull ContextKey var1, @Nonnull Class<T> var2) {
      ContextMap.Entry var3 = this.types.get(var2);
      if (var3 == null) {
         class="kw">return null;
      }

      Context var4 = var3.remove(var1);
      class="kw">return var4 == null ? null : var2.cast(var4);
   }

   class="kw">public <T class="kw">extends Context> void remove(@Nonnull ContextKey var1, @Nonnull Class<T> var2) {
      ContextMap.Entry var3 = this.types.get(var2);
      if (var3 != null) {
         var3.remove(var1);
      }
   }

   class="kw">public void clear(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull WorldEvent var2) {
      for (ContextMap.Entry var4 : this.types.values()) {
         for (Context var6 : var4.context.values()) {
            var6.cleanup(var1, var2);
         }
      }

      this.types.clear();
   }

   class="kw">public <T class="kw">extends Context, U, V> void forEach(@Nonnull Class<T> var1, @Nullable U var2, @Nullable V var3, @Nonnull TriConsumer<T, U, V> var4) {
      ContextMap.Entry var5 = this.types.get(var1);
      if (var5 != null) {
         assert var5.type == var1;
         ContextMap.Entry var6 = (ContextMap.Entry<T>)var5;

         for (Context var8 : var6.context.values()) {
            var4.accept(var8, var2, var3);
         }
      }
   }

   @Nonnull
   class="kw">public ContextEntry[] toEntries() {
      ObjectArrayList var1 = new ObjectArrayList();

      for (ContextMap.Entry var3 : this.types.values()) {
         for (Map.Entry var5 : var3.context.entrySet()) {
            var1.add(new ContextEntry(var5.getKey(), var5.getValue()));
         }
      }

      class="kw">return (ContextEntry[])var1.toArray(ContextEntry.EMPTY_ARRAY);
   }

   class="kw">public void fromEntries(@Nonnull ContextEntry[] var1) {
      this.types.clear();

      for (ContextEntry var5 : var1) {
         ContextKey var6 = var5.key();
         Context var7 = var5.context();
         if (var6 != null && var7 != null) {
            this.put(var6, var7);
         }
      }
   }

   class="kw">public class="kw">static class Entry<T class="kw">extends Context> {
      @Nonnull
      class="kw">protected class="kw">final Class<T> type;
      class="kw">protected class="kw">final Map<ContextKey, T> context = new Reference2ObjectOpenHashMap();

      class="kw">protected Entry(@Nonnull Class<T> var1) {
         this.type = var1;
      }

      class="kw">protected Entry(@Nonnull ContextMap.Entry<T> var1) {
         this.type = var1.type;
         this.context.putAll(var1.context);
      }

      @Nullable
      class="kw">protected T get(@Nonnull ContextKey var1) {
         class="kw">return this.context.get(var1);
      }

      @Nullable
      class="kw">protected T remove(@Nonnull ContextKey var1) {
         class="kw">return this.context.remove(var1);
      }

      class="kw">protected void put(@Nonnull ContextKey var1, @Nonnull Object var2) {
         if (var2.getClass() == this.type) {
            this.context.put(var1, this.type.cast(var2));
         }
      }
   }
}