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));
}
}
}
}