diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-06-03 14:47:25 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-06-03 14:47:25 +0800 |
| commit | e9c230bfcd93b3bb6191a668891d99c1f241e5be (patch) | |
| tree | 9971f31b42a1eb6a03067030a3f70b844cc49a0b /runtime/src/main/java/me/shedaniel/rei/impl/common | |
| parent | 572ebd36c32c0248f2c826cc518eeedbc0701287 (diff) | |
| download | RoughlyEnoughItems-e9c230bfcd93b3bb6191a668891d99c1f241e5be.tar.gz RoughlyEnoughItems-e9c230bfcd93b3bb6191a668891d99c1f241e5be.tar.bz2 RoughlyEnoughItems-e9c230bfcd93b3bb6191a668891d99c1f241e5be.zip | |
Use Java 16 features
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl/common')
4 files changed, 22 insertions, 13 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/category/CategoryIdentifierImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/category/CategoryIdentifierImpl.java index 2b9ed42ed..6bbf0954e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/category/CategoryIdentifierImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/category/CategoryIdentifierImpl.java @@ -28,14 +28,18 @@ import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.impl.Internals; import net.minecraft.resources.ResourceLocation; +import java.util.Map; import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; public class CategoryIdentifierImpl<D extends Display> implements CategoryIdentifier<D> { private final ResourceLocation location; + private final int hashCode; public CategoryIdentifierImpl(ResourceLocation location) { this.location = Objects.requireNonNull(location); + this.hashCode = location.hashCode(); } @Override @@ -45,13 +49,13 @@ public class CategoryIdentifierImpl<D extends Display> implements CategoryIdenti @Override public int hashCode() { - return location.hashCode(); + return hashCode; } @Override public boolean equals(Object obj) { - if (!(obj instanceof CategoryIdentifier)) return false; - return location.equals(((CategoryIdentifier<?>) obj).getIdentifier()); + if (!(obj instanceof CategoryIdentifier<?> that)) return false; + return location.equals(that.getIdentifier()); } @Override @@ -60,6 +64,13 @@ public class CategoryIdentifierImpl<D extends Display> implements CategoryIdenti } public static void attach() { - Internals.attachInstance((Function<ResourceLocation, CategoryIdentifier<?>>) CategoryIdentifierImpl::new, "categoryIdentifier"); + Map<String, CategoryIdentifier<?>> cache = new ConcurrentHashMap<>(); + Internals.attachInstance((Function<String, CategoryIdentifier<?>>) id -> { + CategoryIdentifier<?> identifier = cache.get(id); + if (identifier != null) return identifier; + identifier = new CategoryIdentifierImpl<>(new ResourceLocation(id)); + cache.put(id, identifier); + return identifier; + }, "categoryIdentifier"); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java index db95d6a76..ae09bcd7e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java @@ -171,8 +171,7 @@ public abstract class AbstractEntryStack<A> extends AbstractRenderer implements @Override public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof AbstractEntryStack)) return false; - AbstractEntryStack<?> that = (AbstractEntryStack<?>) o; + if (!(o instanceof AbstractEntryStack<?> that)) return false; return EntryStacks.equalsExact(this, that); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/EntryIngredientImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/EntryIngredientImpl.java index b6a706d9d..1d9214326 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/EntryIngredientImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/EntryIngredientImpl.java @@ -58,11 +58,11 @@ public class EntryIngredientImpl { @Override public EntryIngredient of(Iterable<EntryStack<?>> stacks) { if (stacks instanceof EntryIngredient) return (EntryIngredient) stacks; - if (stacks instanceof Collection) { - int size = ((Collection<EntryStack<?>>) stacks).size(); + if (stacks instanceof Collection<EntryStack<?>> collection) { + int size = collection.size(); if (size == 0) return empty(); if (size == 1) return of(stacks.iterator().next()); - return _of(((Collection<EntryStack<?>>) stacks).toArray(new EntryStack[0])); + return _of(collection.toArray(new EntryStack[0])); } return _of(StreamSupport.stream(stacks.spliterator(), false).toArray(EntryStack[]::new)); } @@ -125,8 +125,7 @@ public class EntryIngredientImpl { @Override public EntryIngredient.Builder addAll(Iterable<? extends EntryStack<?>> stacks) { - if (stacks instanceof Collection) { - Collection<?> collection = (Collection<?>) stacks; + if (stacks instanceof Collection<?> collection) { ensureCapacity(size + collection.size()); } for (EntryStack<?> stack : stacks) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/NbtHasherProviderImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/NbtHasherProviderImpl.java index e25f754f1..89c2653fb 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/NbtHasherProviderImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/NbtHasherProviderImpl.java @@ -74,8 +74,8 @@ public class NbtHasherProviderImpl implements Internals.NbtHasherProvider { private int hashTag(Tag tag) { if (tag == null) return 0; - if (tag instanceof ListTag) return hashListTag((ListTag) tag); - if (tag instanceof CompoundTag) return hashCompoundTag((CompoundTag) tag); + if (tag instanceof ListTag list) return hashListTag(list); + if (tag instanceof CompoundTag compound) return hashCompoundTag(compound); return tag.hashCode(); } |
