Fix EnumRarity, make sure extensible enums have at least one factory candidate

This commit is contained in:
tterrag 2019-04-25 19:38:03 -04:00
parent bda3f1b7c6
commit cab1b9716c
2 changed files with 7 additions and 5 deletions

View File

@ -1,9 +1,7 @@
--- a/net/minecraft/item/EnumRarity.java --- a/net/minecraft/item/EnumRarity.java
+++ b/net/minecraft/item/EnumRarity.java +++ b/net/minecraft/item/EnumRarity.java
@@ -1,8 +1,9 @@ @@ -2,7 +2,7 @@
package net.minecraft.item;
+import net.minecraft.tileentity.BannerPattern;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
-public enum EnumRarity { -public enum EnumRarity {
@ -11,12 +9,12 @@
COMMON(TextFormatting.WHITE), COMMON(TextFormatting.WHITE),
UNCOMMON(TextFormatting.YELLOW), UNCOMMON(TextFormatting.YELLOW),
RARE(TextFormatting.AQUA), RARE(TextFormatting.AQUA),
@@ -13,4 +14,8 @@ @@ -13,4 +13,8 @@
private EnumRarity(TextFormatting p_i48837_3_) { private EnumRarity(TextFormatting p_i48837_3_) {
this.field_77937_e = p_i48837_3_; this.field_77937_e = p_i48837_3_;
} }
+ +
+ public static BannerPattern create(String enumName, TextFormatting p_i48837_3_) { + public static EnumRarity create(String enumName, TextFormatting p_i48837_3_) {
+ throw new IllegalStateException("Enum not extended"); + throw new IllegalStateException("Enum not extended");
+ } + }
} }

View File

@ -88,6 +88,10 @@ public class RuntimeEnumExtender implements ILaunchPluginService {
.filter(m -> ((m.access & Opcodes.ACC_STATIC) != 0) && m.name.equals("create") && Type.getReturnType(m.desc).equals(classType)) .filter(m -> ((m.access & Opcodes.ACC_STATIC) != 0) && m.name.equals("create") && Type.getReturnType(m.desc).equals(classType))
.collect(Collectors.toList()); .collect(Collectors.toList());
if (candidates.isEmpty()) {
throw new IllegalStateException("IExtensibleEnum has no candidate factory methods: " + classType.getClassName());
}
candidates.forEach(mtd -> candidates.forEach(mtd ->
{ {
Type[] args = Type.getArgumentTypes(mtd.desc); Type[] args = Type.getArgumentTypes(mtd.desc);