From 0d2a0deef396a46ceadd8cdaeb0deca36770188f Mon Sep 17 00:00:00 2001 From: LexManos Date: Wed, 1 Apr 2020 11:34:36 -0700 Subject: [PATCH] Cleanup IForgeTagBuilder code style. --- .../net/minecraft/tags/Tag.java.patch | 22 +-- .../minecraft/tags/TagCollection.java.patch | 2 +- .../net/minecraftforge/common/ForgeHooks.java | 6 +- .../common/data/IOptionalTagEntry.java | 8 +- .../common/extensions/IForgeTagBuilder.java | 130 +++++++++--------- 5 files changed, 77 insertions(+), 91 deletions(-) diff --git a/patches/minecraft/net/minecraft/tags/Tag.java.patch b/patches/minecraft/net/minecraft/tags/Tag.java.patch index 8ed2d291b..1f76c5347 100644 --- a/patches/minecraft/net/minecraft/tags/Tag.java.patch +++ b/patches/minecraft/net/minecraft/tags/Tag.java.patch @@ -82,7 +82,7 @@ } public Tag.Builder func_219783_a(Function> p_219783_1_, JsonObject p_219783_2_) { -@@ -143,8 +171,26 @@ +@@ -143,8 +171,10 @@ } this.field_200052_a.addAll(list); @@ -90,26 +90,10 @@ return this; } + public Tag.Builder remove(Tag.ITagEntry e) { this.field_200052_a.remove(e); return this; } -+ -+ public Tag.Builder addOptional(TagCollection collection, ResourceLocation entry) { -+ return addOptional(collection.getEntryLookup(), Collections.singleton(entry)); -+ } -+ -+ @SafeVarargs -+ public final Tag.Builder addOptional(TagCollection collection, ResourceLocation... entries) { -+ return addOptional(collection.getEntryLookup(), Lists.newArrayList(entries)); -+ } -+ -+ @SafeVarargs -+ public final Tag.Builder addOptionalTag(ResourceLocation... tags) { -+ for (ResourceLocation tag : tags) -+ addOptionalTag(tag); -+ return this; -+ } } public interface ITagEntry { -@@ -183,6 +229,8 @@ +@@ -183,6 +213,8 @@ public Collection func_200578_a() { return this.field_200165_a; } @@ -118,7 +102,7 @@ } public static class TagEntry implements Tag.ITagEntry { -@@ -229,5 +277,7 @@ +@@ -229,5 +261,7 @@ public void func_200576_a(JsonArray p_200576_1_, Function p_200576_2_) { p_200576_1_.add("#" + this.func_200577_a()); } diff --git a/patches/minecraft/net/minecraft/tags/TagCollection.java.patch b/patches/minecraft/net/minecraft/tags/TagCollection.java.patch index 8b4f68851..ca95d1454 100644 --- a/patches/minecraft/net/minecraft/tags/TagCollection.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagCollection.java.patch @@ -5,7 +5,7 @@ return this.field_199921_d; } + -+ Function> getEntryLookup() { ++ public Function> getEntryLookup() { + return this.field_200040_e; + } } diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 832459af0..71b0b7126 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -39,7 +39,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Queues; import com.google.common.collect.Sets; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; @@ -47,8 +46,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.advancements.Advancement; import net.minecraft.block.Block; -import net.minecraft.client.renderer.model.Material; -import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.fluid.*; import net.minecraft.util.CachedBlockInfo; import net.minecraft.block.BlockState; @@ -119,7 +116,6 @@ import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.storage.loot.LootContext; import net.minecraft.world.storage.loot.LootTable; import net.minecraft.world.storage.loot.LootTableManager; -import net.minecraftforge.common.data.IOptionalTagEntry; import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.common.loot.LootModifierManager; import net.minecraftforge.common.util.BlockSnapshot; @@ -1089,6 +1085,7 @@ public class ForgeHooks return res == Result.DEFAULT ? 0 : res == Result.DENY ? -1 : 1; } + @SuppressWarnings("deprecation") public static void deserializeTagAdditions(Tag.Builder builder, Function> valueGetter, JsonObject json) { if (json.has("optional")) @@ -1177,6 +1174,7 @@ public class ForgeHooks } } + @SuppressWarnings("deprecation") public static synchronized void updateBurns() { VANILLA_BURNS.clear(); diff --git a/src/main/java/net/minecraftforge/common/data/IOptionalTagEntry.java b/src/main/java/net/minecraftforge/common/data/IOptionalTagEntry.java index 1bb8ef85f..30ec98993 100644 --- a/src/main/java/net/minecraftforge/common/data/IOptionalTagEntry.java +++ b/src/main/java/net/minecraftforge/common/data/IOptionalTagEntry.java @@ -2,7 +2,7 @@ package net.minecraftforge.common.data; import net.minecraft.tags.Tag.ITagEntry; -public interface IOptionalTagEntry extends ITagEntry -{ - -} +/** + * Marker class used by Forge to make a tag entry optional at runtime + */ +public interface IOptionalTagEntry extends ITagEntry {} diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeTagBuilder.java b/src/main/java/net/minecraftforge/common/extensions/IForgeTagBuilder.java index fb495d5a5..5a481d92f 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeTagBuilder.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeTagBuilder.java @@ -1,5 +1,6 @@ package net.minecraftforge.common.extensions; +import java.util.Arrays; import java.util.Collection; import java.util.Optional; import java.util.function.Function; @@ -9,77 +10,80 @@ import javax.annotation.Nonnull; import com.google.gson.JsonArray; import net.minecraft.tags.Tag; +import net.minecraft.tags.TagCollection; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.data.IOptionalTagEntry; public interface IForgeTagBuilder -{ - default Tag.Builder addOptional(Function> valueGetter, Collection locations) +{ + + default Tag.Builder addOptional(final TagCollection collection, final ResourceLocation... locations) { - return ((Tag.Builder)this).add(new OptionalListEntry<>(locations, valueGetter)); + return addOptional(collection, Arrays.asList(locations)); + } + + default Tag.Builder addOptional(final TagCollection collection, final Collection locations) + { + return addOptional(collection.getEntryLookup(), locations); + } + + @Deprecated //Use the TagCollection version + default Tag.Builder addOptional(final Function> entryLookup, final Collection locations) + { + return ((Tag.Builder)this).add(new IOptionalTagEntry() { + @Override + public void populate(Collection itemsIn) + { + locations.stream().map(entryLookup).forEach(e -> e.ifPresent(itemsIn::add)); + } + + @Override + public void serialize(JsonArray array, Function getNameForObject) + { + locations.stream().map(ResourceLocation::toString).forEach(array::add); + } + }); + } + + default Tag.Builder addOptionalTag(final TagCollection collection, @SuppressWarnings("unchecked") final Tag... tags) + { + for (Tag tag : tags) + addOptionalTag(tag.getId()); + return ((Tag.Builder)this); + } + + default Tag.Builder addOptionalTag(final ResourceLocation... tags) + { + for (ResourceLocation rl : tags) + addOptionalTag(rl); + return ((Tag.Builder)this); } default Tag.Builder addOptionalTag(ResourceLocation tag) { - return ((Tag.Builder)this).add(new OptionalTagEntry<>(tag)); - } -} - -class OptionalListEntry implements IOptionalTagEntry -{ - private final Collection names; - private final Function> valueGetter; - - OptionalListEntry(Collection names, Function> valueGetter) - { - this.names = names; - this.valueGetter = valueGetter; - } - - @Override - public void populate(Collection itemsIn) - { - for (ResourceLocation rl : names) - { - valueGetter.apply(rl).ifPresent(itemsIn::add); - } - } - - @Override - public void serialize(JsonArray array, Function getNameForObject) - { - for (ResourceLocation rl : names) - { - array.add(rl.toString()); - } - } -} - -class OptionalTagEntry extends Tag.TagEntry implements IOptionalTagEntry -{ - private Tag resolvedTag = null; - - OptionalTagEntry(ResourceLocation referent) - { - super(referent); - } - - @Override - public boolean resolve(@Nonnull Function> resolver) - { - if (this.resolvedTag == null) - { - this.resolvedTag = resolver.apply(this.getSerializedId()); - } - return true; // never fail if resolver returns null - } - - @Override - public void populate(@Nonnull Collection items) - { - if (this.resolvedTag != null) - { - items.addAll(this.resolvedTag.getAllElements()); - } + class TagTarget extends Tag.TagEntry implements IOptionalTagEntry + { + private Tag resolvedTag = null; + protected TagTarget(ResourceLocation referent) { + super(referent); + } + + @Override + public boolean resolve(@Nonnull Function> resolver) + { + if (this.resolvedTag == null) + this.resolvedTag = resolver.apply(this.getSerializedId()); + return true; // never fail if resolver returns null + } + + @Override + public void populate(@Nonnull Collection items) + { + if (this.resolvedTag != null) + items.addAll(this.resolvedTag.getAllElements()); + } + }; + + return ((Tag.Builder)this).add(new TagTarget<>(tag)); } }