Fix tag removal functionality that broke during the 1.19 update. Closes #9053 and #8949

This commit is contained in:
LexManos committed 2023-07-19 10:26:55 -07:00
1 parent bcdd44aece
commit 2745531f08
11 files changed
+146 -87

No files matched your search

@@ -1081,22 +1081,8 @@ public class ForgeHooks
return false;
}
public static <T> void deserializeTagAdditions(List<TagEntry> list, JsonObject json, List<TagEntry> allList)
{
if (json.has("remove"))
{
for (JsonElement entry : GsonHelper.getAsJsonArray(json, "remove"))
{
String s = GsonHelper.convertToString(entry, "value");
TagEntry dummy;
if (!s.startsWith("#"))
dummy = TagEntry.optionalElement(new ResourceLocation(s));
else
dummy = TagEntry.tag(new ResourceLocation(s.substring(1)));
allList.removeIf(e -> e.equals(dummy));
}
}
}
@Deprecated(forRemoval = true, since = "1.20.1") // Tags use a codec now This was never used in 1.20
public static <T> void deserializeTagAdditions(List<TagEntry> list, JsonObject json, List<TagEntry> allList) {}
@Nullable
public static EntityDataSerializer<?> getSerializer(int id, CrudeIncrementalIntIdentityHashBiMap<EntityDataSerializer<?>> vanilla)
@@ -10,8 +10,7 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
public interface IForgeIntrinsicHolderTagAppender<T> extends IForgeTagAppender<T>
{
public interface IForgeIntrinsicHolderTagAppender<T> extends IForgeTagAppender<T> {
private IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> self() {
return (IntrinsicHolderTagsProvider.IntrinsicTagAppender<T>) this;
}
@@ -24,8 +23,7 @@ public interface IForgeIntrinsicHolderTagAppender<T> extends IForgeTagAppender<T
* @param entry The entry to remove
* @return The builder for chaining
*/
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final T entry)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final T entry) {
return remove(this.getKey(entry));
}
@@ -36,78 +34,66 @@ public interface IForgeIntrinsicHolderTagAppender<T> extends IForgeTagAppender<T
* @return The builder for chaining
*/
@SuppressWarnings("unchecked")
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final T first, final T...entries)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final T first, final T...entries) {
this.remove(first);
for (T entry : entries)
{
this.remove(entry);
}
return self();
}
@Override
@SuppressWarnings("unchecked")
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> addTags(TagKey<T>... values)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> addTags(TagKey<T>... values) {
IForgeTagAppender.super.addTags(values);
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> replace()
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> replace() {
IForgeTagAppender.super.replace();
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> replace(boolean value)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> replace(boolean value) {
IForgeTagAppender.super.replace(value);
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceLocation location)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceLocation location) {
IForgeTagAppender.super.remove(location);
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceLocation first, final ResourceLocation... locations)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceLocation first, final ResourceLocation... locations) {
IForgeTagAppender.super.remove(first, locations);
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceKey<T> resourceKey)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceKey<T> resourceKey) {
IForgeTagAppender.super.remove(resourceKey);
return self();
}
@Override
@SuppressWarnings("unchecked")
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceKey<T> firstResourceKey, final ResourceKey<T>... resourceKeys)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(final ResourceKey<T> firstResourceKey, final ResourceKey<T>... resourceKeys) {
IForgeTagAppender.super.remove(firstResourceKey, resourceKeys);
return self();
}
@Override
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(TagKey<T> tag)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(TagKey<T> tag) {
IForgeTagAppender.super.remove(tag);
return self();
}
@Override
@SuppressWarnings("unchecked")
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(TagKey<T> first, TagKey<T>...tags)
{
default IntrinsicHolderTagsProvider.IntrinsicTagAppender<T> remove(TagKey<T> first, TagKey<T>...tags) {
IForgeTagAppender.super.remove(first, tags);
return self();
}
@@ -5,37 +5,22 @@
package net.minecraftforge.common.extensions;
import java.util.stream.Stream;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagBuilder;
import net.minecraft.tags.TagEntry;
public interface IForgeRawTagBuilder
{
default TagBuilder getRawBuilder()
{
public interface IForgeRawTagBuilder {
default TagBuilder getRawBuilder() {
return (TagBuilder)this;
}
/**
* internal, called when a raw builder is written to json to add forge additions (e.g. the remove list)
* @deprecated Never used, tags use a Codec now, so remove this later.
*/
default void serializeTagAdditions(final JsonObject tagJson)
{
TagBuilder rawBuilder = this.getRawBuilder();
Stream<TagEntry> removeEntries = rawBuilder.getRemoveEntries();
JsonArray removeEntriesAsJsonArray = new JsonArray();
//removeEntries.forEach(proxy ->proxy.serializeTo(removeEntriesAsJsonArray)); // TODO: Figure out what the replacement for this is. -C
if (removeEntriesAsJsonArray.size() > 0)
{
tagJson.add("remove", removeEntriesAsJsonArray);
}
}
@Deprecated(forRemoval = true, since = "1.20.1")
default void serializeTagAdditions(final JsonObject tagJson) {}
/**
* Adds a tag entry to the remove list.
@@ -43,8 +28,7 @@ public interface IForgeRawTagBuilder
* @param source The source of the caller for logging purposes (generally a modid)
* @return The builder for chaining purposes
*/
default TagBuilder remove(final TagEntry tagEntry, final String source)
{
default TagBuilder remove(final TagEntry tagEntry, final String source) {
return this.getRawBuilder().remove(tagEntry);
}
@@ -54,20 +38,17 @@ public interface IForgeRawTagBuilder
* @param source The source of the caller for logging purposes (generally a modid)
* @return The builder for chaining purposes
*/
default TagBuilder removeElement(final ResourceLocation elementID, final String source)
{
default TagBuilder removeElement(final ResourceLocation elementID, final String source) {
return this.remove(TagEntry.element(elementID), source);
}
/**
* Adds a tag to the remove list.
* @param tagID The ID of the tag to add to the remove list
* @param source The source of the caller for logging purposes (generally a modid)
* @return The builder for chaining purposes
*/
default TagBuilder removeTag(final ResourceLocation tagID, final String source)
{
default TagBuilder removeTag(final ResourceLocation tagID, final String source) {
return this.remove(TagEntry.tag(tagID), source);
}
}