[1.18.x] Fix Banner Patterns not being extensible (#8530)

Co-authored-by: Curle <42079760+TheCurle@users.noreply.github.com>
This commit is contained in:
ChampionAsh5357andCurle authored and GitHub committed 2022-06-05 15:39:29 +01:00
1 parent d4c8708229
commit f179eed971
8 files changed
+177 -1

No files matched your search

@@ -7,6 +7,7 @@ package net.minecraftforge.common;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
@@ -63,6 +64,7 @@ import net.minecraft.world.item.*;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BannerPattern;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.storage.WorldData;
@@ -1482,7 +1484,33 @@ public class ForgeHooks
return fallback;
}
}
private static BannerPattern[] nonPatternItems;
private static int totalPatternRows;
public static void refreshBannerPatternData()
{
nonPatternItems = Arrays.stream(BannerPattern.values())
.filter(p -> !p.hasPatternItem)
.toArray(BannerPattern[]::new);
totalPatternRows = (nonPatternItems.length + 2) / 4;
}
public static int getTotalPatternRows()
{
return totalPatternRows;
}
public static int getNonPatternItemCount()
{
return nonPatternItems.length;
}
public static int getActualPatternIndex(int index)
{
return nonPatternItems[index].ordinal();
}
public static boolean shouldSuppressEnderManAnger(EnderMan enderMan, Player player, ItemStack mask)
{
return mask.isEnderMask(player, enderMan) || MinecraftForge.EVENT_BUS.post(new EnderManAngerEvent(enderMan, player));