diff --git a/at-mlservice/build.gradle b/at-mlservice/build.gradle index 662a79f..330c35c 100644 --- a/at-mlservice/build.gradle +++ b/at-mlservice/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'org.cadixdev.licenser' version '0.6.1' id 'eclipse' id 'java-library' - id 'net.minecraftforge.gradleutils' version '[2.1.2,)' + id 'net.minecraftforge.licenser' version '1.0.1' + id 'net.minecraftforge.gradleutils' version '[2.3,2.4)' } repositories { diff --git a/at-test-jar/build.gradle b/at-test-jar/build.gradle index a4995ed..c0ba981 100644 --- a/at-test-jar/build.gradle +++ b/at-test-jar/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'org.cadixdev.licenser' version '0.6.1' id 'eclipse' id 'java-library' - id 'net.minecraftforge.gradleutils' version '[2.1.2,)' + id 'net.minecraftforge.licenser' version '1.0.1' + id 'net.minecraftforge.gradleutils' version '[2.3,2.4)' } repositories { diff --git a/at-test/build.gradle b/at-test/build.gradle index 0f2fba3..1ec7e62 100644 --- a/at-test/build.gradle +++ b/at-test/build.gradle @@ -1,9 +1,8 @@ plugins { - id 'org.cadixdev.licenser' version '0.6.1' id 'eclipse' id 'java-library' - id 'org.gradlex.extra-java-module-info' version '1.4.2' - id 'net.minecraftforge.gradleutils' version '[2.1.2,)' + id 'net.minecraftforge.licenser' + id 'net.minecraftforge.gradleutils' } repositories { @@ -45,55 +44,27 @@ dependencies { testCompileOnly(libs.nulls) } -extraJavaModuleInfo { - failOnMissingModuleInfo = false - automaticModule('jopt-simple-5.0.4.jar', 'jopt.simple') +tasks.register('testAll', AggregateTest) { + input = file('build/test-results/') + output = rootProject.file('test_results.html') } -// If we are being told a specific vendor then we are probably being run in parallel -if (project.hasProperty('javaVendor') && project.hasProperty('javaVersion')) { - test.javaLauncher.set(javaToolchains.launcherFor { - it.vendor.set(JvmVendorSpec."${project.property('javaVendor').toUpperCase(Locale.ROOT)}" as JvmVendorSpec) - it.languageVersion.set(JavaLanguageVersion.of(project.property('javaVersion') as int)) - it.implementation.set(JvmImplementation.VENDOR_SPECIFIC) - }) -} else if (!project.hasProperty('disable_bulk_tests')) { - configurations { - groovyScript - } - - dependencies { - groovyScript 'org.apache.ivy:ivy:2.4.0' - groovyScript 'org.codehaus.groovy:groovy-all:3.0.19' - } - - tasks.register('collectTests', JavaExec) { - classpath = configurations.groovyScript - main = 'groovy.ui.GroovyMain' - args '.github/workflows/aggregate-junit-tests.groovy' - workingDir rootProject.projectDir - } - - VALID_VMS.each { javaVendor, javaVersions -> - javaVersions.each { javaVersion -> - def task = tasks.register("test${javaVendor}${javaVersion}", Test) { - useJUnitPlatform() - javaLauncher.set(javaToolchains.launcherFor { - it.vendor.set(JvmVendorSpec."${javaVendor.toUpperCase(Locale.ROOT)}" as JvmVendorSpec) - it.languageVersion.set(JavaLanguageVersion.of(javaVersion)) - it.implementation.set(JvmImplementation.VENDOR_SPECIFIC) - }) - reports.html.destination = rootProject.file("build/test_artifacts/test-reports-${javaVendor}-${javaVersion}/") - reports.junitXml.destination = rootProject.file("build/test_artifacts/test-results-${javaVendor}-${javaVersion}/") - } - test.dependsOn(task) - collectTests.mustRunAfter(task) +VALID_VMS.each { javaVendor, javaVersions -> + javaVersions.each { javaVersion -> + def output = file("build/test-results/${javaVendor}-${javaVersion}/") + output.mkdirs() + def task = tasks.register("test${javaVendor}${javaVersion}", Test) { + useJUnitPlatform() + javaLauncher.set(javaToolchains.launcherFor { + it.vendor.set(JvmVendorSpec."${javaVendor.toUpperCase(Locale.ROOT)}" as JvmVendorSpec) + it.languageVersion.set(JavaLanguageVersion.of(javaVersion)) + it.implementation.set(JvmImplementation.VENDOR_SPECIFIC) + }) + reports.html.destination = file("build/test-reports/${javaVendor}-${javaVersion}/") + reports.junitXml.destination = output } + testAll.inputs.dir(output) + testAll.dependsOn(task) + testAll.mustRunAfter(task) } -} - -// Hack eclipse into knowing that the gradle deps are modules -eclipse.classpath { - containers 'org.eclipse.buildship.core.gradleclasspathcontainer' - file.whenMerged { entries.findAll { it.kind == 'lib' || it.path == 'org.eclipse.buildship.core.gradleclasspathcontainer' }.each { it.entryAttributes['module'] = 'true' } } } \ No newline at end of file diff --git a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/AtTest.java b/at-test/src/test/java/net/minecraftforge/accesstransformer/test/AtTest.java deleted file mode 100644 index 3515522..0000000 --- a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/AtTest.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) Forge Development LLC - * SPDX-License-Identifier: LGPL-2.1-only - */ -package net.minecraftforge.accesstransformer.test; - -import org.antlr.v4.runtime.CharStreams; -import org.antlr.v4.runtime.CodePointCharStream; -import org.antlr.v4.runtime.CommonTokenStream; -import org.junit.jupiter.api.Test; - -import net.minecraftforge.accesstransformer.generated.*; - -class AtTest { - - @Test - void test() { - final CodePointCharStream stream = CharStreams.fromString("public net.minecraft.world.World func_175663_a(ILjava/lang/String;Lcom/mojang/authlib/GameProfile;IISLjava/lang/String;Z)Lnet/minecraft/util/math/BlockPos; # isAreaLoaded"); - final AtLexer lexer = new AtLexer(stream); - final AtParser parser = new AtParser(new CommonTokenStream(lexer)); - parser.file(); - } -} diff --git a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/BatATParseTest.java b/at-test/src/test/java/net/minecraftforge/accesstransformer/test/BatATParseTest.java deleted file mode 100644 index 12cfc37..0000000 --- a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/BatATParseTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) Forge Development LLC - * SPDX-License-Identifier: LGPL-2.1-only - */ -package net.minecraftforge.accesstransformer.test; - -import net.minecraftforge.accesstransformer.generated.*; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.CharStreams; -import org.antlr.v4.runtime.Vocabulary; -import org.junit.jupiter.api.Test; - -public class BatATParseTest { - @Test - public void testParseBadAT() throws Exception { - final CharStream charStream = CharStreams.fromStream(getClass().getClassLoader().getResourceAsStream("bad_at.cfg")); - final AtLexer lexer = new AtLexer(charStream); - final Vocabulary vocab = lexer.getVocabulary(); - - final List tokens = new ArrayList<>(); - - int type; - while ((type = lexer.nextToken().getType()) != AtLexer.EOF) { - if (type != AtLexer.WS) { - tokens.add(vocab.getSymbolicName(type)); - } - } - - final List expectation = Files.readAllLines(Paths.get(getClass().getClassLoader().getResource("bad_at.cfg.txt").toURI())); - assertEquals(expectation, tokens); - } -} diff --git a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/ForgeATBaseParserTest.java b/at-test/src/test/java/net/minecraftforge/accesstransformer/test/ForgeATBaseParserTest.java deleted file mode 100644 index bf5d751..0000000 --- a/at-test/src/test/java/net/minecraftforge/accesstransformer/test/ForgeATBaseParserTest.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) Forge Development LLC - * SPDX-License-Identifier: LGPL-2.1-only - */ -package net.minecraftforge.accesstransformer.test; - -import net.minecraftforge.accesstransformer.generated.*; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.*; -import org.junit.jupiter.api.*; - -import java.io.*; -import java.net.*; -import java.nio.file.*; -import java.util.*; - -import static org.junit.jupiter.api.Assertions.fail; - -public class ForgeATBaseParserTest { - @Test - public void testLoadingForgeAT() throws IOException, URISyntaxException { - final Path path = Paths.get(getClass().getClassLoader().getResource("forge_at.cfg").toURI()); - final CharStream stream = CharStreams.fromPath(path); - final AtLexer lexer = new AtLexer(stream); - final CommonTokenStream tokenStream = new CommonTokenStream(lexer); - final AtParser parser = new AtParser(tokenStream); - parser.addErrorListener(new ANTLRErrorListener() { - @Override - public void syntaxError(final Recognizer recognizer, final Object offendingSymbol, final int line, final int charPositionInLine, final String msg, final RecognitionException e) { - fail("syntax error"); - } - - @Override - public void reportAmbiguity(final Parser recognizer, final DFA dfa, final int startIndex, final int stopIndex, final boolean exact, final BitSet ambigAlts, final ATNConfigSet configs) { - } - - @Override - public void reportAttemptingFullContext(final Parser recognizer, final DFA dfa, final int startIndex, final int stopIndex, final BitSet conflictingAlts, final ATNConfigSet configs) { - } - - @Override - public void reportContextSensitivity(final Parser recognizer, final DFA dfa, final int startIndex, final int stopIndex, final int prediction, final ATNConfigSet configs) { - } - }); - parser.file(); - } -} diff --git a/at-test/src/test/resources/forge_at.cfg.json b/at-test/src/test/resources/forge_at.cfg.json index 9805d8c..6ee37c0 100644 --- a/at-test/src/test/resources/forge_at.cfg.json +++ b/at-test/src/test/resources/forge_at.cfg.json @@ -1,418 +1,418 @@ { - "net.minecraft.block.Block": [ - "net.minecraft.block.Block METHOD \u003cinit\u003e(Lnet/minecraft/block/material/Material;)V PUBLIC LEAVE forge_at.cfg:5", - "net.minecraft.block.Block METHOD func_149675_a(Z)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:11", - "net.minecraft.block.Block METHOD func_149711_c(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:7", - "net.minecraft.block.Block METHOD func_149713_g(I)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:8", - "net.minecraft.block.Block METHOD func_149715_a(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:9", - "net.minecraft.block.Block METHOD func_149722_s()Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:10", - "net.minecraft.block.Block METHOD func_149752_b(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:6", - "net.minecraft.block.Block METHOD func_180637_b(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;I)V PUBLIC LEAVE forge_at.cfg:12" - ], - "net.minecraft.block.BlockFire": [ - "net.minecraft.block.BlockFire METHOD func_176532_c(Lnet/minecraft/block/Block;)I PUBLIC LEAVE forge_at.cfg:14", - "net.minecraft.block.BlockFire METHOD func_176534_d(Lnet/minecraft/block/Block;)I PUBLIC LEAVE forge_at.cfg:15" - ], - "net.minecraft.block.state.BlockStateContainer": [ - "net.minecraft.block.state.BlockStateContainer INNERCLASS StateImplementation PUBLIC LEAVE forge_at.cfg:103" - ], - "net.minecraft.block.state.BlockStateContainer$StateImplementation": [ - "net.minecraft.block.state.BlockStateContainer$StateImplementation CLASS PUBLIC LEAVE forge_at.cfg:103", - "net.minecraft.block.state.BlockStateContainer$StateImplementation FIELD field_177238_c PROTECTED LEAVE forge_at.cfg:105", - "net.minecraft.block.state.BlockStateContainer$StateImplementation METHOD \u003cinit\u003e(Lnet/minecraft/block/Block;Lcom/google/common/collect/ImmutableMap;)V PROTECTED LEAVE forge_at.cfg:104" - ], - "net.minecraft.client.Minecraft": [ - "net.minecraft.client.Minecraft FIELD field_110450_ap PUBLIC LEAVE forge_at.cfg:186", - "net.minecraft.client.Minecraft FIELD field_71446_o PUBLIC LEAVE forge_at.cfg:185", - "net.minecraft.client.Minecraft METHOD func_180510_a(Lnet/minecraft/client/renderer/texture/TextureManager;)V PUBLIC LEAVE forge_at.cfg:188", - "net.minecraft.client.Minecraft METHOD func_184119_a(Lnet/minecraft/item/ItemStack;Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:189", - "net.minecraft.client.Minecraft METHOD func_71370_a(II)V PUBLIC LEAVE forge_at.cfg:187" - ], - "net.minecraft.client.audio.SoundManager": [ - "net.minecraft.client.audio.SoundManager FIELD field_148622_c PUBLIC LEAVE forge_at.cfg:3" - ], - "net.minecraft.client.entity.EntityPlayerSP": [ - "net.minecraft.client.entity.EntityPlayerSP METHOD func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:171" - ], - "net.minecraft.client.gui.FontRenderer": [ - "net.minecraft.client.gui.FontRenderer FIELD field_111273_g PROTECTED LEAVE forge_at.cfg:227", - "net.minecraft.client.gui.FontRenderer FIELD field_78286_d PROTECTED LEAVE forge_at.cfg:225", - "net.minecraft.client.gui.FontRenderer FIELD field_78287_e PROTECTED LEAVE forge_at.cfg:226", - "net.minecraft.client.gui.FontRenderer FIELD field_78295_j PROTECTED LEAVE forge_at.cfg:228", - "net.minecraft.client.gui.FontRenderer FIELD field_78296_k PROTECTED LEAVE forge_at.cfg:229", - "net.minecraft.client.gui.FontRenderer METHOD func_78266_a(IZ)F PROTECTED LEAVE forge_at.cfg:230", - "net.minecraft.client.gui.FontRenderer METHOD func_78277_a(CZ)F PROTECTED LEAVE forge_at.cfg:231" - ], - "net.minecraft.client.gui.GuiButton": [ - "net.minecraft.client.gui.GuiButton FIELD field_146120_f PUBLIC LEAVE forge_at.cfg:200", - "net.minecraft.client.gui.GuiButton FIELD field_146121_g PUBLIC LEAVE forge_at.cfg:201" - ], - "net.minecraft.client.gui.GuiIngame": [ - "net.minecraft.client.gui.GuiIngame FIELDWILDCARD PROTECTED LEAVE forge_at.cfg:68", - "net.minecraft.client.gui.GuiIngame METHODWILDCARD PROTECTED LEAVE forge_at.cfg:69" - ], - "net.minecraft.client.gui.GuiOverlayDebug": [ - "net.minecraft.client.gui.GuiOverlayDebug METHOD func_181554_e()V PUBLIC LEAVE forge_at.cfg:278" - ], - "net.minecraft.client.gui.GuiScreen": [ - "net.minecraft.client.gui.GuiScreen FIELD field_146297_k PUBLIC LEAVE forge_at.cfg:183" - ], - "net.minecraft.client.gui.GuiSlot": [ - "net.minecraft.client.gui.GuiSlot FIELD field_148149_f PUBLIC LEAVE forge_at.cfg:206", - "net.minecraft.client.gui.GuiSlot FIELD field_148151_d PUBLIC LEAVE forge_at.cfg:207", - "net.minecraft.client.gui.GuiSlot FIELD field_148152_e PUBLIC LEAVE forge_at.cfg:208", - "net.minecraft.client.gui.GuiSlot FIELD field_148153_b PUBLIC LEAVE forge_at.cfg:209", - "net.minecraft.client.gui.GuiSlot FIELD field_148154_c PUBLIC LEAVE forge_at.cfg:210", - "net.minecraft.client.gui.GuiSlot FIELD field_148155_a PUBLIC LEAVE forge_at.cfg:211", - "net.minecraft.client.gui.GuiSlot FIELD field_148158_l PUBLIC LEAVE forge_at.cfg:212", - "net.minecraft.client.gui.GuiSlot FIELD field_148160_j PUBLIC LEAVE forge_at.cfg:213" - ], - "net.minecraft.client.gui.GuiTextField": [ - "net.minecraft.client.gui.GuiTextField FIELD field_146218_h PUBLIC REMOVEFINAL forge_at.cfg:203", - "net.minecraft.client.gui.GuiTextField FIELD field_146219_i PUBLIC REMOVEFINAL forge_at.cfg:204" - ], - "net.minecraft.client.multiplayer.WorldClient": [ - "net.minecraft.client.multiplayer.WorldClient METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:64", - "net.minecraft.client.multiplayer.WorldClient METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:63" - ], - "net.minecraft.client.renderer.BufferBuilder": [ - "net.minecraft.client.renderer.BufferBuilder METHOD func_178972_a(IIII)V PUBLIC LEAVE forge_at.cfg:143", - "net.minecraft.client.renderer.BufferBuilder METHOD func_78909_a(I)I PUBLIC LEAVE forge_at.cfg:142" - ], - "net.minecraft.client.renderer.EntityRenderer": [ - "net.minecraft.client.renderer.EntityRenderer METHOD func_175069_a(Lnet/minecraft/util/ResourceLocation;)V PUBLIC LEAVE forge_at.cfg:165" - ], - "net.minecraft.client.renderer.block.model.ModelBakery": [ - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177598_f PROTECTED LEAVE forge_at.cfg:111", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177599_g PROTECTED LEAVE forge_at.cfg:112", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177602_b PROTECTED LEAVE forge_at.cfg:110", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177605_n PROTECTED LEAVE forge_at.cfg:115", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177606_o PROTECTED LEAVE forge_at.cfg:116", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177609_j PROTECTED LEAVE forge_at.cfg:113", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177610_k PROTECTED LEAVE forge_at.cfg:114", - "net.minecraft.client.renderer.block.model.ModelBakery FIELD field_177616_r PROTECTED LEAVE forge_at.cfg:119", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177569_a(Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition;Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;)V PROTECTED LEAVE forge_at.cfg:121", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177577_b()V PROTECTED LEAVE forge_at.cfg:133", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177580_d(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; PROTECTED LEAVE forge_at.cfg:131", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177581_b(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z PROTECTED LEAVE forge_at.cfg:128", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177582_d(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; PROTECTED LEAVE forge_at.cfg:130", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177583_a(Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; PROTECTED LEAVE forge_at.cfg:126", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177585_a(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Ljava/util/Set; PROTECTED LEAVE forge_at.cfg:127", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177586_a(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; PROTECTED LEAVE forge_at.cfg:122", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177587_c(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z PROTECTED LEAVE forge_at.cfg:129", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177590_d()V PROTECTED LEAVE forge_at.cfg:134", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177592_e()V PROTECTED LEAVE forge_at.cfg:124", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177594_c(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlock; PROTECTED LEAVE forge_at.cfg:123", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177595_c()V PROTECTED LEAVE forge_at.cfg:135", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_177596_a(Lnet/minecraft/item/Item;)Ljava/util/List; PROTECTED LEAVE forge_at.cfg:125", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_188637_e()V PROTECTED LEAVE forge_at.cfg:136", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_188638_a(Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;Lnet/minecraft/client/renderer/block/model/VariantList;)V PROTECTED LEAVE forge_at.cfg:137", - "net.minecraft.client.renderer.block.model.ModelBakery METHOD func_188640_b()V PROTECTED LEAVE forge_at.cfg:132" - ], - "net.minecraft.client.renderer.block.model.ModelBlock": [ - "net.minecraft.client.renderer.block.model.ModelBlock FIELD field_178315_d PUBLIC LEAVE forge_at.cfg:107", - "net.minecraft.client.renderer.block.model.ModelBlock FIELD field_178318_c PUBLIC LEAVE forge_at.cfg:106", - "net.minecraft.client.renderer.block.model.ModelBlock FIELD field_178322_i PUBLIC LEAVE forge_at.cfg:108", - "net.minecraft.client.renderer.block.model.ModelBlock METHOD func_187966_f()Ljava/util/List; PUBLIC LEAVE forge_at.cfg:109" - ], - "net.minecraft.client.renderer.entity.RenderEntityItem": [ - "net.minecraft.client.renderer.entity.RenderEntityItem METHOD func_177078_a(Lnet/minecraft/item/ItemStack;)I PROTECTED LEAVE forge_at.cfg:98" - ], - "net.minecraft.client.renderer.entity.RenderLivingBase": [ - "net.minecraft.client.renderer.entity.RenderLivingBase METHOD func_177094_a(Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z PUBLIC LEAVE forge_at.cfg:267" - ], - "net.minecraft.client.renderer.entity.RenderManager": [ - "net.minecraft.client.renderer.entity.RenderManager FIELD field_78729_o PUBLIC LEAVE forge_at.cfg:160" - ], - "net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher": [ - "net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher FIELD field_147557_n PUBLIC LEAVE forge_at.cfg:163", - "net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher FIELD field_147559_m PUBLIC LEAVE forge_at.cfg:162" - ], - "net.minecraft.command.EntitySelector": [ - "net.minecraft.command.EntitySelector METHOD func_190826_c(Ljava/lang/String;)Ljava/lang/String; PUBLIC LEAVE forge_at.cfg:311" - ], - "net.minecraft.creativetab.CreativeTabs": [ - "net.minecraft.creativetab.CreativeTabs FIELD field_78032_a PUBLIC REMOVEFINAL forge_at.cfg:53" - ], - "net.minecraft.entity.EntityLiving": [ - "net.minecraft.entity.EntityLiving FIELD field_70714_bg PUBLIC LEAVE forge_at.cfg:178", - "net.minecraft.entity.EntityLiving FIELD field_70715_bh PUBLIC LEAVE forge_at.cfg:179" - ], - "net.minecraft.entity.EntityTrackerEntry": [ - "net.minecraft.entity.EntityTrackerEntry FIELD field_73134_o PUBLIC LEAVE forge_at.cfg:22" - ], - "net.minecraft.entity.ai.EntityAITasks": [ - "net.minecraft.entity.ai.EntityAITasks FIELD field_75782_a PUBLIC LEAVE forge_at.cfg:84", - "net.minecraft.entity.ai.EntityAITasks INNERCLASS EntityAITaskEntry PUBLIC LEAVE forge_at.cfg:176" - ], - "net.minecraft.entity.ai.EntityAITasks$EntityAITaskEntry": [ - "net.minecraft.entity.ai.EntityAITasks$EntityAITaskEntry CLASS PUBLIC LEAVE forge_at.cfg:176" - ], - "net.minecraft.entity.item.EntityMinecartContainer": [ - "net.minecraft.entity.item.EntityMinecartContainer FIELD field_94112_b PUBLIC LEAVE forge_at.cfg:181" + "net/minecraft/block/Block": [ + "net/minecraft/block/Block METHOD \u003cinit\u003e(Lnet/minecraft/block/material/Material;)V PUBLIC LEAVE forge_at.cfg:4", + "net/minecraft/block/Block METHOD func_149675_a(Z)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:10", + "net/minecraft/block/Block METHOD func_149711_c(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:6", + "net/minecraft/block/Block METHOD func_149713_g(I)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:7", + "net/minecraft/block/Block METHOD func_149715_a(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:8", + "net/minecraft/block/Block METHOD func_149722_s()Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:9", + "net/minecraft/block/Block METHOD func_149752_b(F)Lnet/minecraft/block/Block; PUBLIC LEAVE forge_at.cfg:5", + "net/minecraft/block/Block METHOD func_180637_b(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;I)V PUBLIC LEAVE forge_at.cfg:11" + ], + "net/minecraft/block/BlockFire": [ + "net/minecraft/block/BlockFire METHOD func_176532_c(Lnet/minecraft/block/Block;)I PUBLIC LEAVE forge_at.cfg:13", + "net/minecraft/block/BlockFire METHOD func_176534_d(Lnet/minecraft/block/Block;)I PUBLIC LEAVE forge_at.cfg:14" + ], + "net/minecraft/block/state/BlockStateContainer": [ + "net/minecraft/block/state/BlockStateContainer INNERCLASS StateImplementation PUBLIC LEAVE forge_at.cfg:102" + ], + "net/minecraft/block/state/BlockStateContainer$StateImplementation": [ + "net/minecraft/block/state/BlockStateContainer$StateImplementation CLASS PUBLIC LEAVE forge_at.cfg:102", + "net/minecraft/block/state/BlockStateContainer$StateImplementation FIELD field_177238_c PROTECTED LEAVE forge_at.cfg:104", + "net/minecraft/block/state/BlockStateContainer$StateImplementation METHOD \u003cinit\u003e(Lnet/minecraft/block/Block;Lcom/google/common/collect/ImmutableMap;)V PROTECTED LEAVE forge_at.cfg:103" + ], + "net/minecraft/client/Minecraft": [ + "net/minecraft/client/Minecraft FIELD field_110450_ap PUBLIC LEAVE forge_at.cfg:185", + "net/minecraft/client/Minecraft FIELD field_71446_o PUBLIC LEAVE forge_at.cfg:184", + "net/minecraft/client/Minecraft METHOD func_180510_a(Lnet/minecraft/client/renderer/texture/TextureManager;)V PUBLIC LEAVE forge_at.cfg:187", + "net/minecraft/client/Minecraft METHOD func_184119_a(Lnet/minecraft/item/ItemStack;Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:188", + "net/minecraft/client/Minecraft METHOD func_71370_a(II)V PUBLIC LEAVE forge_at.cfg:186" + ], + "net/minecraft/client/audio/SoundManager": [ + "net/minecraft/client/audio/SoundManager FIELD field_148622_c PUBLIC LEAVE forge_at.cfg:2" + ], + "net/minecraft/client/entity/EntityPlayerSP": [ + "net/minecraft/client/entity/EntityPlayerSP METHOD func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:170" + ], + "net/minecraft/client/gui/FontRenderer": [ + "net/minecraft/client/gui/FontRenderer FIELD field_111273_g PROTECTED LEAVE forge_at.cfg:226", + "net/minecraft/client/gui/FontRenderer FIELD field_78286_d PROTECTED LEAVE forge_at.cfg:224", + "net/minecraft/client/gui/FontRenderer FIELD field_78287_e PROTECTED LEAVE forge_at.cfg:225", + "net/minecraft/client/gui/FontRenderer FIELD field_78295_j PROTECTED LEAVE forge_at.cfg:227", + "net/minecraft/client/gui/FontRenderer FIELD field_78296_k PROTECTED LEAVE forge_at.cfg:228", + "net/minecraft/client/gui/FontRenderer METHOD func_78266_a(IZ)F PROTECTED LEAVE forge_at.cfg:229", + "net/minecraft/client/gui/FontRenderer METHOD func_78277_a(CZ)F PROTECTED LEAVE forge_at.cfg:230" + ], + "net/minecraft/client/gui/GuiButton": [ + "net/minecraft/client/gui/GuiButton FIELD field_146120_f PUBLIC LEAVE forge_at.cfg:199", + "net/minecraft/client/gui/GuiButton FIELD field_146121_g PUBLIC LEAVE forge_at.cfg:200" + ], + "net/minecraft/client/gui/GuiIngame": [ + "net/minecraft/client/gui/GuiIngame FIELDWILDCARD PROTECTED LEAVE forge_at.cfg:67", + "net/minecraft/client/gui/GuiIngame METHODWILDCARD PROTECTED LEAVE forge_at.cfg:68" + ], + "net/minecraft/client/gui/GuiOverlayDebug": [ + "net/minecraft/client/gui/GuiOverlayDebug METHOD func_181554_e()V PUBLIC LEAVE forge_at.cfg:277" + ], + "net/minecraft/client/gui/GuiScreen": [ + "net/minecraft/client/gui/GuiScreen FIELD field_146297_k PUBLIC LEAVE forge_at.cfg:182" + ], + "net/minecraft/client/gui/GuiSlot": [ + "net/minecraft/client/gui/GuiSlot FIELD field_148149_f PUBLIC LEAVE forge_at.cfg:205", + "net/minecraft/client/gui/GuiSlot FIELD field_148151_d PUBLIC LEAVE forge_at.cfg:206", + "net/minecraft/client/gui/GuiSlot FIELD field_148152_e PUBLIC LEAVE forge_at.cfg:207", + "net/minecraft/client/gui/GuiSlot FIELD field_148153_b PUBLIC LEAVE forge_at.cfg:208", + "net/minecraft/client/gui/GuiSlot FIELD field_148154_c PUBLIC LEAVE forge_at.cfg:209", + "net/minecraft/client/gui/GuiSlot FIELD field_148155_a PUBLIC LEAVE forge_at.cfg:210", + "net/minecraft/client/gui/GuiSlot FIELD field_148158_l PUBLIC LEAVE forge_at.cfg:211", + "net/minecraft/client/gui/GuiSlot FIELD field_148160_j PUBLIC LEAVE forge_at.cfg:212" + ], + "net/minecraft/client/gui/GuiTextField": [ + "net/minecraft/client/gui/GuiTextField FIELD field_146218_h PUBLIC REMOVEFINAL forge_at.cfg:202", + "net/minecraft/client/gui/GuiTextField FIELD field_146219_i PUBLIC REMOVEFINAL forge_at.cfg:203" + ], + "net/minecraft/client/multiplayer/WorldClient": [ + "net/minecraft/client/multiplayer/WorldClient METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:63", + "net/minecraft/client/multiplayer/WorldClient METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:62" + ], + "net/minecraft/client/renderer/BufferBuilder": [ + "net/minecraft/client/renderer/BufferBuilder METHOD func_178972_a(IIII)V PUBLIC LEAVE forge_at.cfg:142", + "net/minecraft/client/renderer/BufferBuilder METHOD func_78909_a(I)I PUBLIC LEAVE forge_at.cfg:141" + ], + "net/minecraft/client/renderer/EntityRenderer": [ + "net/minecraft/client/renderer/EntityRenderer METHOD func_175069_a(Lnet/minecraft/util/ResourceLocation;)V PUBLIC LEAVE forge_at.cfg:164" + ], + "net/minecraft/client/renderer/block/model/ModelBakery": [ + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177598_f PROTECTED LEAVE forge_at.cfg:110", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177599_g PROTECTED LEAVE forge_at.cfg:111", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177602_b PROTECTED LEAVE forge_at.cfg:109", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177605_n PROTECTED LEAVE forge_at.cfg:114", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177606_o PROTECTED LEAVE forge_at.cfg:115", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177609_j PROTECTED LEAVE forge_at.cfg:112", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177610_k PROTECTED LEAVE forge_at.cfg:113", + "net/minecraft/client/renderer/block/model/ModelBakery FIELD field_177616_r PROTECTED LEAVE forge_at.cfg:118", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177569_a(Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition;Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;)V PROTECTED LEAVE forge_at.cfg:120", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177577_b()V PROTECTED LEAVE forge_at.cfg:132", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177580_d(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; PROTECTED LEAVE forge_at.cfg:130", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177581_b(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z PROTECTED LEAVE forge_at.cfg:127", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177582_d(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; PROTECTED LEAVE forge_at.cfg:129", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177583_a(Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; PROTECTED LEAVE forge_at.cfg:125", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177585_a(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Ljava/util/Set; PROTECTED LEAVE forge_at.cfg:126", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177586_a(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; PROTECTED LEAVE forge_at.cfg:121", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177587_c(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z PROTECTED LEAVE forge_at.cfg:128", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177590_d()V PROTECTED LEAVE forge_at.cfg:133", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177592_e()V PROTECTED LEAVE forge_at.cfg:123", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177594_c(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlock; PROTECTED LEAVE forge_at.cfg:122", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177595_c()V PROTECTED LEAVE forge_at.cfg:134", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_177596_a(Lnet/minecraft/item/Item;)Ljava/util/List; PROTECTED LEAVE forge_at.cfg:124", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_188637_e()V PROTECTED LEAVE forge_at.cfg:135", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_188638_a(Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;Lnet/minecraft/client/renderer/block/model/VariantList;)V PROTECTED LEAVE forge_at.cfg:136", + "net/minecraft/client/renderer/block/model/ModelBakery METHOD func_188640_b()V PROTECTED LEAVE forge_at.cfg:131" + ], + "net/minecraft/client/renderer/block/model/ModelBlock": [ + "net/minecraft/client/renderer/block/model/ModelBlock FIELD field_178315_d PUBLIC LEAVE forge_at.cfg:106", + "net/minecraft/client/renderer/block/model/ModelBlock FIELD field_178318_c PUBLIC LEAVE forge_at.cfg:105", + "net/minecraft/client/renderer/block/model/ModelBlock FIELD field_178322_i PUBLIC LEAVE forge_at.cfg:107", + "net/minecraft/client/renderer/block/model/ModelBlock METHOD func_187966_f()Ljava/util/List; PUBLIC LEAVE forge_at.cfg:108" + ], + "net/minecraft/client/renderer/entity/RenderEntityItem": [ + "net/minecraft/client/renderer/entity/RenderEntityItem METHOD func_177078_a(Lnet/minecraft/item/ItemStack;)I PROTECTED LEAVE forge_at.cfg:97" + ], + "net/minecraft/client/renderer/entity/RenderLivingBase": [ + "net/minecraft/client/renderer/entity/RenderLivingBase METHOD func_177094_a(Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z PUBLIC LEAVE forge_at.cfg:266" + ], + "net/minecraft/client/renderer/entity/RenderManager": [ + "net/minecraft/client/renderer/entity/RenderManager FIELD field_78729_o PUBLIC LEAVE forge_at.cfg:159" + ], + "net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher": [ + "net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher FIELD field_147557_n PUBLIC LEAVE forge_at.cfg:162", + "net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher FIELD field_147559_m PUBLIC LEAVE forge_at.cfg:161" + ], + "net/minecraft/command/EntitySelector": [ + "net/minecraft/command/EntitySelector METHOD func_190826_c(Ljava/lang/String;)Ljava/lang/String; PUBLIC LEAVE forge_at.cfg:310" + ], + "net/minecraft/creativetab/CreativeTabs": [ + "net/minecraft/creativetab/CreativeTabs FIELD field_78032_a PUBLIC REMOVEFINAL forge_at.cfg:52" + ], + "net/minecraft/entity/EntityLiving": [ + "net/minecraft/entity/EntityLiving FIELD field_70714_bg PUBLIC LEAVE forge_at.cfg:177", + "net/minecraft/entity/EntityLiving FIELD field_70715_bh PUBLIC LEAVE forge_at.cfg:178" + ], + "net/minecraft/entity/EntityTrackerEntry": [ + "net/minecraft/entity/EntityTrackerEntry FIELD field_73134_o PUBLIC LEAVE forge_at.cfg:21" + ], + "net/minecraft/entity/ai/EntityAITasks": [ + "net/minecraft/entity/ai/EntityAITasks FIELD field_75782_a PUBLIC LEAVE forge_at.cfg:83", + "net/minecraft/entity/ai/EntityAITasks INNERCLASS EntityAITaskEntry PUBLIC LEAVE forge_at.cfg:175" + ], + "net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry": [ + "net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry CLASS PUBLIC LEAVE forge_at.cfg:175" + ], + "net/minecraft/entity/item/EntityMinecartContainer": [ + "net/minecraft/entity/item/EntityMinecartContainer FIELD field_94112_b PUBLIC LEAVE forge_at.cfg:180" ], - "net.minecraft.entity.item.EntityXPOrb": [ - "net.minecraft.entity.item.EntityXPOrb FIELD field_70530_e PUBLIC LEAVE forge_at.cfg:86" - ], - "net.minecraft.entity.monster.AbstractSkeleton": [ - "net.minecraft.entity.monster.AbstractSkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:299" - ], - "net.minecraft.entity.monster.EntitySkeleton": [ - "net.minecraft.entity.monster.EntitySkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:308" - ], - "net.minecraft.entity.monster.EntityStray": [ - "net.minecraft.entity.monster.EntityStray METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:305" + "net/minecraft/entity/item/EntityXPOrb": [ + "net/minecraft/entity/item/EntityXPOrb FIELD field_70530_e PUBLIC LEAVE forge_at.cfg:85" + ], + "net/minecraft/entity/monster/AbstractSkeleton": [ + "net/minecraft/entity/monster/AbstractSkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:298" + ], + "net/minecraft/entity/monster/EntitySkeleton": [ + "net/minecraft/entity/monster/EntitySkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:307" + ], + "net/minecraft/entity/monster/EntityStray": [ + "net/minecraft/entity/monster/EntityStray METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:304" ], - "net.minecraft.entity.monster.EntityWitherSkeleton": [ - "net.minecraft.entity.monster.EntityWitherSkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:302" + "net/minecraft/entity/monster/EntityWitherSkeleton": [ + "net/minecraft/entity/monster/EntityWitherSkeleton METHOD func_190727_o()Lnet/minecraft/util/SoundEvent; PROTECTED LEAVE forge_at.cfg:301" ], - "net.minecraft.entity.passive.EntityVillager": [ - "net.minecraft.entity.passive.EntityVillager INNERCLASS EmeraldForItems PUBLIC LEAVE forge_at.cfg:216", - "net.minecraft.entity.passive.EntityVillager INNERCLASS ITradeList PUBLIC LEAVE forge_at.cfg:217", - "net.minecraft.entity.passive.EntityVillager INNERCLASS ItemAndEmeraldToItem PUBLIC LEAVE forge_at.cfg:218", - "net.minecraft.entity.passive.EntityVillager INNERCLASS ListEnchantedBookForEmeralds PUBLIC LEAVE forge_at.cfg:219", - "net.minecraft.entity.passive.EntityVillager INNERCLASS ListEnchantedItemForEmeralds PUBLIC LEAVE forge_at.cfg:220", - "net.minecraft.entity.passive.EntityVillager INNERCLASS ListItemForEmeralds PUBLIC LEAVE forge_at.cfg:221", - "net.minecraft.entity.passive.EntityVillager INNERCLASS PriceInfo PUBLIC LEAVE forge_at.cfg:222" + "net/minecraft/entity/passive/EntityVillager": [ + "net/minecraft/entity/passive/EntityVillager INNERCLASS EmeraldForItems PUBLIC LEAVE forge_at.cfg:215", + "net/minecraft/entity/passive/EntityVillager INNERCLASS ITradeList PUBLIC LEAVE forge_at.cfg:216", + "net/minecraft/entity/passive/EntityVillager INNERCLASS ItemAndEmeraldToItem PUBLIC LEAVE forge_at.cfg:217", + "net/minecraft/entity/passive/EntityVillager INNERCLASS ListEnchantedBookForEmeralds PUBLIC LEAVE forge_at.cfg:218", + "net/minecraft/entity/passive/EntityVillager INNERCLASS ListEnchantedItemForEmeralds PUBLIC LEAVE forge_at.cfg:219", + "net/minecraft/entity/passive/EntityVillager INNERCLASS ListItemForEmeralds PUBLIC LEAVE forge_at.cfg:220", + "net/minecraft/entity/passive/EntityVillager INNERCLASS PriceInfo PUBLIC LEAVE forge_at.cfg:221" ], - "net.minecraft.entity.passive.EntityVillager$EmeraldForItems": [ - "net.minecraft.entity.passive.EntityVillager$EmeraldForItems CLASS PUBLIC LEAVE forge_at.cfg:216" + "net/minecraft/entity/passive/EntityVillager$EmeraldForItems": [ + "net/minecraft/entity/passive/EntityVillager$EmeraldForItems CLASS PUBLIC LEAVE forge_at.cfg:215" ], - "net.minecraft.entity.passive.EntityVillager$ITradeList": [ - "net.minecraft.entity.passive.EntityVillager$ITradeList CLASS PUBLIC LEAVE forge_at.cfg:217" + "net/minecraft/entity/passive/EntityVillager$ITradeList": [ + "net/minecraft/entity/passive/EntityVillager$ITradeList CLASS PUBLIC LEAVE forge_at.cfg:216" ], - "net.minecraft.entity.passive.EntityVillager$ItemAndEmeraldToItem": [ - "net.minecraft.entity.passive.EntityVillager$ItemAndEmeraldToItem CLASS PUBLIC LEAVE forge_at.cfg:218" + "net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem": [ + "net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem CLASS PUBLIC LEAVE forge_at.cfg:217" ], - "net.minecraft.entity.passive.EntityVillager$ListEnchantedBookForEmeralds": [ - "net.minecraft.entity.passive.EntityVillager$ListEnchantedBookForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:219" + "net/minecraft/entity/passive/EntityVillager$ListEnchantedBookForEmeralds": [ + "net/minecraft/entity/passive/EntityVillager$ListEnchantedBookForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:218" ], - "net.minecraft.entity.passive.EntityVillager$ListEnchantedItemForEmeralds": [ - "net.minecraft.entity.passive.EntityVillager$ListEnchantedItemForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:220" + "net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds": [ + "net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:219" ], - "net.minecraft.entity.passive.EntityVillager$ListItemForEmeralds": [ - "net.minecraft.entity.passive.EntityVillager$ListItemForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:221" + "net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds": [ + "net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds CLASS PUBLIC LEAVE forge_at.cfg:220" ], - "net.minecraft.entity.passive.EntityVillager$PriceInfo": [ - "net.minecraft.entity.passive.EntityVillager$PriceInfo CLASS PUBLIC LEAVE forge_at.cfg:222" + "net/minecraft/entity/passive/EntityVillager$PriceInfo": [ + "net/minecraft/entity/passive/EntityVillager$PriceInfo CLASS PUBLIC LEAVE forge_at.cfg:221" ], - "net.minecraft.entity.player.EntityPlayer": [ - "net.minecraft.entity.player.EntityPlayer METHOD func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:169", - "net.minecraft.entity.player.EntityPlayer METHOD func_71053_j()V PUBLIC LEAVE forge_at.cfg:20" + "net/minecraft/entity/player/EntityPlayer": [ + "net/minecraft/entity/player/EntityPlayer METHOD func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; PUBLIC LEAVE forge_at.cfg:168", + "net/minecraft/entity/player/EntityPlayer METHOD func_71053_j()V PUBLIC LEAVE forge_at.cfg:19" ], - "net.minecraft.entity.player.EntityPlayerMP": [ - "net.minecraft.entity.player.EntityPlayerMP FIELD field_71139_cq PUBLIC LEAVE forge_at.cfg:174", - "net.minecraft.entity.player.EntityPlayerMP METHOD func_71117_bO()V PUBLIC LEAVE forge_at.cfg:173" + "net/minecraft/entity/player/EntityPlayerMP": [ + "net/minecraft/entity/player/EntityPlayerMP FIELD field_71139_cq PUBLIC LEAVE forge_at.cfg:173", + "net/minecraft/entity/player/EntityPlayerMP METHOD func_71117_bO()V PUBLIC LEAVE forge_at.cfg:172" ], - "net.minecraft.inventory.ContainerRepair": [ - "net.minecraft.inventory.ContainerRepair FIELD field_82856_l PUBLIC LEAVE forge_at.cfg:49" + "net/minecraft/inventory/ContainerRepair": [ + "net/minecraft/inventory/ContainerRepair FIELD field_82856_l PUBLIC LEAVE forge_at.cfg:48" ], - "net.minecraft.item.Item": [ - "net.minecraft.item.Item METHOD func_77627_a(Z)Lnet/minecraft/item/Item; PUBLIC LEAVE forge_at.cfg:18", - "net.minecraft.item.Item METHOD func_77656_e(I)Lnet/minecraft/item/Item; PUBLIC LEAVE forge_at.cfg:17" + "net/minecraft/item/Item": [ + "net/minecraft/item/Item METHOD func_77627_a(Z)Lnet/minecraft/item/Item; PUBLIC LEAVE forge_at.cfg:17", + "net/minecraft/item/Item METHOD func_77656_e(I)Lnet/minecraft/item/Item; PUBLIC LEAVE forge_at.cfg:16" ], - "net.minecraft.item.ItemStack": [ - "net.minecraft.item.ItemStack FIELD field_77991_e DEFAULT LEAVE forge_at.cfg:71" + "net/minecraft/item/ItemStack": [ + "net/minecraft/item/ItemStack FIELD field_77991_e DEFAULT LEAVE forge_at.cfg:70" ], - "net.minecraft.item.crafting.RecipeTippedArrow": [ - "net.minecraft.item.crafting.RecipeTippedArrow CLASS PUBLIC LEAVE forge_at.cfg:99" + "net/minecraft/item/crafting/RecipeTippedArrow": [ + "net/minecraft/item/crafting/RecipeTippedArrow CLASS PUBLIC LEAVE forge_at.cfg:98" ], - "net.minecraft.item.crafting.RecipesBanners": [ - "net.minecraft.item.crafting.RecipesBanners INNERCLASS RecipeAddPattern PUBLIC LEAVE forge_at.cfg:101", - "net.minecraft.item.crafting.RecipesBanners INNERCLASS RecipeDuplicatePattern PUBLIC LEAVE forge_at.cfg:102" + "net/minecraft/item/crafting/RecipesBanners": [ + "net/minecraft/item/crafting/RecipesBanners INNERCLASS RecipeAddPattern PUBLIC LEAVE forge_at.cfg:100", + "net/minecraft/item/crafting/RecipesBanners INNERCLASS RecipeDuplicatePattern PUBLIC LEAVE forge_at.cfg:101" ], - "net.minecraft.item.crafting.RecipesBanners$RecipeAddPattern": [ - "net.minecraft.item.crafting.RecipesBanners$RecipeAddPattern CLASS PUBLIC LEAVE forge_at.cfg:101" + "net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern": [ + "net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern CLASS PUBLIC LEAVE forge_at.cfg:100" ], - "net.minecraft.item.crafting.RecipesBanners$RecipeDuplicatePattern": [ - "net.minecraft.item.crafting.RecipesBanners$RecipeDuplicatePattern CLASS PUBLIC LEAVE forge_at.cfg:102" + "net/minecraft/item/crafting/RecipesBanners$RecipeDuplicatePattern": [ + "net/minecraft/item/crafting/RecipesBanners$RecipeDuplicatePattern CLASS PUBLIC LEAVE forge_at.cfg:101" ], - "net.minecraft.item.crafting.ShapedRecipes": [ - "net.minecraft.item.crafting.ShapedRecipes FIELD field_77574_d PUBLIC MAKEFINAL forge_at.cfg:43", - "net.minecraft.item.crafting.ShapedRecipes FIELD field_77576_b PUBLIC MAKEFINAL forge_at.cfg:44", - "net.minecraft.item.crafting.ShapedRecipes FIELD field_77577_c PUBLIC MAKEFINAL forge_at.cfg:45" + "net/minecraft/item/crafting/ShapedRecipes": [ + "net/minecraft/item/crafting/ShapedRecipes FIELD field_77574_d PUBLIC MAKEFINAL forge_at.cfg:42", + "net/minecraft/item/crafting/ShapedRecipes FIELD field_77576_b PUBLIC MAKEFINAL forge_at.cfg:43", + "net/minecraft/item/crafting/ShapedRecipes FIELD field_77577_c PUBLIC MAKEFINAL forge_at.cfg:44" ], - "net.minecraft.item.crafting.ShapelessRecipes": [ - "net.minecraft.item.crafting.ShapelessRecipes FIELD field_77579_b PUBLIC LEAVE forge_at.cfg:47" + "net/minecraft/item/crafting/ShapelessRecipes": [ + "net/minecraft/item/crafting/ShapelessRecipes FIELD field_77579_b PUBLIC LEAVE forge_at.cfg:46" ], - "net.minecraft.item.crafting.ShieldRecipes": [ - "net.minecraft.item.crafting.ShieldRecipes INNERCLASS Decoration PUBLIC LEAVE forge_at.cfg:100" + "net/minecraft/item/crafting/ShieldRecipes": [ + "net/minecraft/item/crafting/ShieldRecipes INNERCLASS Decoration PUBLIC LEAVE forge_at.cfg:99" ], - "net.minecraft.item.crafting.ShieldRecipes$Decoration": [ - "net.minecraft.item.crafting.ShieldRecipes$Decoration CLASS PUBLIC LEAVE forge_at.cfg:100" + "net/minecraft/item/crafting/ShieldRecipes$Decoration": [ + "net/minecraft/item/crafting/ShieldRecipes$Decoration CLASS PUBLIC LEAVE forge_at.cfg:99" ], - "net.minecraft.nbt.NBTPrimitive": [ - "net.minecraft.nbt.NBTPrimitive CLASS PUBLIC LEAVE forge_at.cfg:275" + "net/minecraft/nbt/NBTPrimitive": [ + "net/minecraft/nbt/NBTPrimitive CLASS PUBLIC LEAVE forge_at.cfg:274" ], - "net.minecraft.network.play.server.SPacketBlockChange": [ - "net.minecraft.network.play.server.SPacketBlockChange FIELD field_148883_d PUBLIC LEAVE forge_at.cfg:78" + "net/minecraft/network/play/server/SPacketBlockChange": [ + "net/minecraft/network/play/server/SPacketBlockChange FIELD field_148883_d PUBLIC LEAVE forge_at.cfg:77" ], - "net.minecraft.network.status.server.SPacketServerInfo": [ - "net.minecraft.network.status.server.SPacketServerInfo FIELD field_149297_a PUBLIC LEAVE forge_at.cfg:150" + "net/minecraft/network/status/server/SPacketServerInfo": [ + "net/minecraft/network/status/server/SPacketServerInfo FIELD field_149297_a PUBLIC LEAVE forge_at.cfg:149" ], - "net.minecraft.potion.PotionHelper": [ - "net.minecraft.potion.PotionHelper INNERCLASS MixPredicate PUBLIC LEAVE forge_at.cfg:281", - "net.minecraft.potion.PotionHelper METHOD func_193354_a(Lnet/minecraft/item/ItemPotion;)V PUBLIC LEAVE forge_at.cfg:283", - "net.minecraft.potion.PotionHelper METHOD func_193355_a(Lnet/minecraft/item/ItemPotion;Lnet/minecraft/item/Item;Lnet/minecraft/item/ItemPotion;)V PUBLIC LEAVE forge_at.cfg:282", - "net.minecraft.potion.PotionHelper METHOD func_193356_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/crafting/Ingredient;Lnet/minecraft/potion/PotionType;)V PUBLIC LEAVE forge_at.cfg:285", - "net.minecraft.potion.PotionHelper METHOD func_193357_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/Item;Lnet/minecraft/potion/PotionType;)V PUBLIC LEAVE forge_at.cfg:284" + "net/minecraft/potion/PotionHelper": [ + "net/minecraft/potion/PotionHelper INNERCLASS MixPredicate PUBLIC LEAVE forge_at.cfg:280", + "net/minecraft/potion/PotionHelper METHOD func_193354_a(Lnet/minecraft/item/ItemPotion;)V PUBLIC LEAVE forge_at.cfg:282", + "net/minecraft/potion/PotionHelper METHOD func_193355_a(Lnet/minecraft/item/ItemPotion;Lnet/minecraft/item/Item;Lnet/minecraft/item/ItemPotion;)V PUBLIC LEAVE forge_at.cfg:281", + "net/minecraft/potion/PotionHelper METHOD func_193356_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/crafting/Ingredient;Lnet/minecraft/potion/PotionType;)V PUBLIC LEAVE forge_at.cfg:284", + "net/minecraft/potion/PotionHelper METHOD func_193357_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/Item;Lnet/minecraft/potion/PotionType;)V PUBLIC LEAVE forge_at.cfg:283" ], - "net.minecraft.potion.PotionHelper$MixPredicate": [ - "net.minecraft.potion.PotionHelper$MixPredicate CLASS PUBLIC LEAVE forge_at.cfg:281" + "net/minecraft/potion/PotionHelper$MixPredicate": [ + "net/minecraft/potion/PotionHelper$MixPredicate CLASS PUBLIC LEAVE forge_at.cfg:280" ], - "net.minecraft.server.dedicated.DedicatedServer": [ - "net.minecraft.server.dedicated.DedicatedServer FIELD field_71341_l PUBLIC LEAVE forge_at.cfg:191" + "net/minecraft/server/dedicated/DedicatedServer": [ + "net/minecraft/server/dedicated/DedicatedServer FIELD field_71341_l PUBLIC LEAVE forge_at.cfg:190" ], - "net.minecraft.server.management.PlayerChunkMapEntry": [ - "net.minecraft.server.management.PlayerChunkMapEntry FIELD field_187285_e PRIVATE REMOVEFINAL forge_at.cfg:264" + "net/minecraft/server/management/PlayerChunkMapEntry": [ + "net/minecraft/server/management/PlayerChunkMapEntry FIELD field_187285_e PRIVATE REMOVEFINAL forge_at.cfg:263" ], - "net.minecraft.tileentity.TileEntity": [ - "net.minecraft.tileentity.TileEntity METHOD func_190560_a(Ljava/lang/String;Ljava/lang/Class;)V PUBLIC LEAVE forge_at.cfg:288" + "net/minecraft/tileentity/TileEntity": [ + "net/minecraft/tileentity/TileEntity METHOD func_190560_a(Ljava/lang/String;Ljava/lang/Class;)V PUBLIC LEAVE forge_at.cfg:287" ], - "net.minecraft.tileentity.TileEntityHopper": [ - "net.minecraft.tileentity.TileEntityHopper METHOD func_145887_i()Z PROTECTED LEAVE forge_at.cfg:293", - "net.minecraft.tileentity.TileEntityHopper METHOD func_145896_c(I)V PUBLIC LEAVE forge_at.cfg:292", - "net.minecraft.tileentity.TileEntityHopper METHOD func_174914_o()Z PUBLIC LEAVE forge_at.cfg:291" + "net/minecraft/tileentity/TileEntityHopper": [ + "net/minecraft/tileentity/TileEntityHopper METHOD func_145887_i()Z PROTECTED LEAVE forge_at.cfg:292", + "net/minecraft/tileentity/TileEntityHopper METHOD func_145896_c(I)V PUBLIC LEAVE forge_at.cfg:291", + "net/minecraft/tileentity/TileEntityHopper METHOD func_174914_o()Z PUBLIC LEAVE forge_at.cfg:290" ], - "net.minecraft.util.DamageSource": [ - "net.minecraft.util.DamageSource METHODWILDCARD PUBLIC LEAVE forge_at.cfg:82" + "net/minecraft/util/DamageSource": [ + "net/minecraft/util/DamageSource METHODWILDCARD PUBLIC LEAVE forge_at.cfg:81" ], - "net.minecraft.util.EnumFacing": [ - "net.minecraft.util.EnumFacing FIELD field_176754_o PUBLIC LEAVE forge_at.cfg:141", - "net.minecraft.util.EnumFacing FIELD field_82609_l PUBLIC LEAVE forge_at.cfg:140" + "net/minecraft/util/EnumFacing": [ + "net/minecraft/util/EnumFacing FIELD field_176754_o PUBLIC LEAVE forge_at.cfg:140", + "net/minecraft/util/EnumFacing FIELD field_82609_l PUBLIC LEAVE forge_at.cfg:139" ], - "net.minecraft.util.ObjectIntIdentityMap": [ - "net.minecraft.util.ObjectIntIdentityMap FIELD field_148748_b PROTECTED LEAVE forge_at.cfg:196", - "net.minecraft.util.ObjectIntIdentityMap FIELD field_148749_a PROTECTED LEAVE forge_at.cfg:195" + "net/minecraft/util/ObjectIntIdentityMap": [ + "net/minecraft/util/ObjectIntIdentityMap FIELD field_148748_b PROTECTED LEAVE forge_at.cfg:195", + "net/minecraft/util/ObjectIntIdentityMap FIELD field_148749_a PROTECTED LEAVE forge_at.cfg:194" ], - "net.minecraft.util.ResourceLocation": [ - "net.minecraft.util.ResourceLocation METHOD func_177516_a(Ljava/lang/String;)[Ljava/lang/String; PUBLIC LEAVE forge_at.cfg:318" + "net/minecraft/util/ResourceLocation": [ + "net/minecraft/util/ResourceLocation METHOD func_177516_a(Ljava/lang/String;)[Ljava/lang/String; PUBLIC LEAVE forge_at.cfg:317" ], - "net.minecraft.util.WeightedRandom$Item": [ - "net.minecraft.util.WeightedRandom$Item FIELD field_76292_a PUBLIC LEAVE forge_at.cfg:167" + "net/minecraft/util/WeightedRandom$Item": [ + "net/minecraft/util/WeightedRandom$Item FIELD field_76292_a PUBLIC LEAVE forge_at.cfg:166" ], - "net.minecraft.util.datafix.DataFixer": [ - "net.minecraft.util.datafix.DataFixer FIELD field_188262_d PUBLIC LEAVE forge_at.cfg:296" + "net/minecraft/util/datafix/DataFixer": [ + "net/minecraft/util/datafix/DataFixer FIELD field_188262_d PUBLIC LEAVE forge_at.cfg:295" ], - "net.minecraft.world.Teleporter": [ - "net.minecraft.world.Teleporter FIELD field_77187_a PROTECTED LEAVE forge_at.cfg:315", - "net.minecraft.world.Teleporter FIELD field_85191_c PROTECTED LEAVE forge_at.cfg:316", - "net.minecraft.world.Teleporter FIELD field_85192_a PROTECTED LEAVE forge_at.cfg:314" + "net/minecraft/world/Teleporter": [ + "net/minecraft/world/Teleporter FIELD field_77187_a PROTECTED LEAVE forge_at.cfg:314", + "net/minecraft/world/Teleporter FIELD field_85191_c PROTECTED LEAVE forge_at.cfg:315", + "net/minecraft/world/Teleporter FIELD field_85192_a PROTECTED LEAVE forge_at.cfg:313" ], - "net.minecraft.world.World": [ - "net.minecraft.world.World FIELD field_72982_D PUBLIC REMOVEFINAL forge_at.cfg:27", - "net.minecraft.world.World FIELD field_73003_n PUBLIC LEAVE forge_at.cfg:55", - "net.minecraft.world.World FIELD field_73004_o PUBLIC LEAVE forge_at.cfg:56", - "net.minecraft.world.World FIELD field_73017_q PUBLIC LEAVE forge_at.cfg:57", - "net.minecraft.world.World FIELD field_73018_p PUBLIC LEAVE forge_at.cfg:58", - "net.minecraft.world.World METHOD func_175701_a(Lnet/minecraft/util/math/BlockPos;)Z PUBLIC LEAVE forge_at.cfg:65", - "net.minecraft.world.World METHOD func_189509_E(Lnet/minecraft/util/math/BlockPos;)Z PUBLIC LEAVE forge_at.cfg:66", - "net.minecraft.world.World METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:60", - "net.minecraft.world.World METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:59" + "net/minecraft/world/World": [ + "net/minecraft/world/World FIELD field_72982_D PUBLIC REMOVEFINAL forge_at.cfg:26", + "net/minecraft/world/World FIELD field_73003_n PUBLIC LEAVE forge_at.cfg:54", + "net/minecraft/world/World FIELD field_73004_o PUBLIC LEAVE forge_at.cfg:55", + "net/minecraft/world/World FIELD field_73017_q PUBLIC LEAVE forge_at.cfg:56", + "net/minecraft/world/World FIELD field_73018_p PUBLIC LEAVE forge_at.cfg:57", + "net/minecraft/world/World METHOD func_175701_a(Lnet/minecraft/util/math/BlockPos;)Z PUBLIC LEAVE forge_at.cfg:64", + "net/minecraft/world/World METHOD func_189509_E(Lnet/minecraft/util/math/BlockPos;)Z PUBLIC LEAVE forge_at.cfg:65", + "net/minecraft/world/World METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:59", + "net/minecraft/world/World METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:58" ], - "net.minecraft.world.WorldServer": [ - "net.minecraft.world.WorldServer METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:62", - "net.minecraft.world.WorldServer METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:61" + "net/minecraft/world/WorldServer": [ + "net/minecraft/world/WorldServer METHOD func_72847_b(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:61", + "net/minecraft/world/WorldServer METHOD func_72923_a(Lnet/minecraft/entity/Entity;)V PUBLIC LEAVE forge_at.cfg:60" ], - "net.minecraft.world.WorldType": [ - "net.minecraft.world.WorldType FIELD field_77139_a PUBLIC REMOVEFINAL forge_at.cfg:80" + "net/minecraft/world/WorldType": [ + "net/minecraft/world/WorldType FIELD field_77139_a PUBLIC REMOVEFINAL forge_at.cfg:79" ], - "net.minecraft.world.biome.Biome": [ - "net.minecraft.world.biome.Biome METHODWILDCARD PUBLIC LEAVE forge_at.cfg:29" + "net/minecraft/world/biome/Biome": [ + "net/minecraft/world/biome/Biome METHODWILDCARD PUBLIC LEAVE forge_at.cfg:28" ], - "net.minecraft.world.biome.Biome$BiomeProperties": [ - "net.minecraft.world.biome.Biome$BiomeProperties METHODWILDCARD PUBLIC LEAVE forge_at.cfg:37" + "net/minecraft/world/biome/Biome$BiomeProperties": [ + "net/minecraft/world/biome/Biome$BiomeProperties METHODWILDCARD PUBLIC LEAVE forge_at.cfg:36" ], - "net.minecraft.world.biome.BiomeDecorator": [ - "net.minecraft.world.biome.BiomeDecorator FIELDWILDCARD PUBLIC LEAVE forge_at.cfg:51" + "net/minecraft/world/biome/BiomeDecorator": [ + "net/minecraft/world/biome/BiomeDecorator FIELDWILDCARD PUBLIC LEAVE forge_at.cfg:50" ], - "net.minecraft.world.biome.BiomeForest": [ - "net.minecraft.world.biome.BiomeForest METHODWILDCARD PUBLIC LEAVE forge_at.cfg:30" + "net/minecraft/world/biome/BiomeForest": [ + "net/minecraft/world/biome/BiomeForest METHODWILDCARD PUBLIC LEAVE forge_at.cfg:29" ], - "net.minecraft.world.biome.BiomeHills": [ - "net.minecraft.world.biome.BiomeHills METHODWILDCARD PUBLIC LEAVE forge_at.cfg:31" + "net/minecraft/world/biome/BiomeHills": [ + "net/minecraft/world/biome/BiomeHills METHODWILDCARD PUBLIC LEAVE forge_at.cfg:30" ], - "net.minecraft.world.biome.BiomeMesa": [ - "net.minecraft.world.biome.BiomeMesa METHODWILDCARD PUBLIC LEAVE forge_at.cfg:32" + "net/minecraft/world/biome/BiomeMesa": [ + "net/minecraft/world/biome/BiomeMesa METHODWILDCARD PUBLIC LEAVE forge_at.cfg:31" ], - "net.minecraft.world.biome.BiomePlains": [ - "net.minecraft.world.biome.BiomePlains METHODWILDCARD PUBLIC LEAVE forge_at.cfg:33" + "net/minecraft/world/biome/BiomePlains": [ + "net/minecraft/world/biome/BiomePlains METHODWILDCARD PUBLIC LEAVE forge_at.cfg:32" ], - "net.minecraft.world.biome.BiomeSavanna": [ - "net.minecraft.world.biome.BiomeSavanna METHODWILDCARD PUBLIC LEAVE forge_at.cfg:34" + "net/minecraft/world/biome/BiomeSavanna": [ + "net/minecraft/world/biome/BiomeSavanna METHODWILDCARD PUBLIC LEAVE forge_at.cfg:33" ], - "net.minecraft.world.biome.BiomeSnow": [ - "net.minecraft.world.biome.BiomeSnow METHODWILDCARD PUBLIC LEAVE forge_at.cfg:35" + "net/minecraft/world/biome/BiomeSnow": [ + "net/minecraft/world/biome/BiomeSnow METHODWILDCARD PUBLIC LEAVE forge_at.cfg:34" ], - "net.minecraft.world.biome.BiomeTaiga": [ - "net.minecraft.world.biome.BiomeTaiga METHODWILDCARD PUBLIC LEAVE forge_at.cfg:36" - ], - "net.minecraft.world.chunk.storage.AnvilChunkLoader": [ - "net.minecraft.world.chunk.storage.AnvilChunkLoader FIELD field_75825_d PUBLIC LEAVE forge_at.cfg:24" - ], - "net.minecraft.world.gen.ChunkGeneratorEnd": [ - "net.minecraft.world.gen.ChunkGeneratorEnd FIELD field_185969_i PRIVATE REMOVEFINAL forge_at.cfg:234", - "net.minecraft.world.gen.ChunkGeneratorEnd FIELD field_185970_j PRIVATE REMOVEFINAL forge_at.cfg:235", - "net.minecraft.world.gen.ChunkGeneratorEnd FIELD field_185971_k PRIVATE REMOVEFINAL forge_at.cfg:236", - "net.minecraft.world.gen.ChunkGeneratorEnd FIELD field_185973_o PRIVATE REMOVEFINAL forge_at.cfg:237" + "net/minecraft/world/biome/BiomeTaiga": [ + "net/minecraft/world/biome/BiomeTaiga METHODWILDCARD PUBLIC LEAVE forge_at.cfg:35" + ], + "net/minecraft/world/chunk/storage/AnvilChunkLoader": [ + "net/minecraft/world/chunk/storage/AnvilChunkLoader FIELD field_75825_d PUBLIC LEAVE forge_at.cfg:23" + ], + "net/minecraft/world/gen/ChunkGeneratorEnd": [ + "net/minecraft/world/gen/ChunkGeneratorEnd FIELD field_185969_i PRIVATE REMOVEFINAL forge_at.cfg:233", + "net/minecraft/world/gen/ChunkGeneratorEnd FIELD field_185970_j PRIVATE REMOVEFINAL forge_at.cfg:234", + "net/minecraft/world/gen/ChunkGeneratorEnd FIELD field_185971_k PRIVATE REMOVEFINAL forge_at.cfg:235", + "net/minecraft/world/gen/ChunkGeneratorEnd FIELD field_185973_o PRIVATE REMOVEFINAL forge_at.cfg:236" ], - "net.minecraft.world.gen.ChunkGeneratorHell": [ - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185939_I PRIVATE REMOVEFINAL forge_at.cfg:260", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185946_g PUBLIC REMOVEFINAL forge_at.cfg:258", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185947_h PUBLIC REMOVEFINAL forge_at.cfg:259", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185957_u PRIVATE REMOVEFINAL forge_at.cfg:253", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185958_v PRIVATE REMOVEFINAL forge_at.cfg:254", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_185959_w PRIVATE REMOVEFINAL forge_at.cfg:255", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_73172_c PRIVATE REMOVEFINAL forge_at.cfg:261", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_73174_n PRIVATE REMOVEFINAL forge_at.cfg:257", - "net.minecraft.world.gen.ChunkGeneratorHell FIELD field_73177_m PRIVATE REMOVEFINAL forge_at.cfg:256" - ], - "net.minecraft.world.gen.ChunkGeneratorOverworld": [ - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185979_A PRIVATE REMOVEFINAL forge_at.cfg:244", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185980_B PRIVATE REMOVEFINAL forge_at.cfg:245", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185991_j PRIVATE REMOVEFINAL forge_at.cfg:240", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185992_k PRIVATE REMOVEFINAL forge_at.cfg:241", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185993_l PRIVATE REMOVEFINAL forge_at.cfg:242", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_185994_m PRIVATE REMOVEFINAL forge_at.cfg:243", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_186003_v PRIVATE REMOVEFINAL forge_at.cfg:246", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_186004_w PRIVATE REMOVEFINAL forge_at.cfg:247", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_186005_x PRIVATE REMOVEFINAL forge_at.cfg:248", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_186006_y PRIVATE REMOVEFINAL forge_at.cfg:249", - "net.minecraft.world.gen.ChunkGeneratorOverworld FIELD field_186007_z PRIVATE REMOVEFINAL forge_at.cfg:250" - ], - "net.minecraft.world.gen.ChunkProviderServer": [ - "net.minecraft.world.gen.ChunkProviderServer FIELD field_186029_c PUBLIC LEAVE forge_at.cfg:92", - "net.minecraft.world.gen.ChunkProviderServer FIELD field_73244_f PUBLIC LEAVE forge_at.cfg:93", - "net.minecraft.world.gen.ChunkProviderServer FIELD field_73247_e PUBLIC LEAVE forge_at.cfg:25", - "net.minecraft.world.gen.ChunkProviderServer FIELD field_73251_h PUBLIC LEAVE forge_at.cfg:95" - ], - "net.minecraft.world.gen.structure.MapGenStronghold": [ - "net.minecraft.world.gen.structure.MapGenStronghold FIELD field_151546_e PUBLIC MAKEFINAL forge_at.cfg:39" - ], - "net.minecraft.world.gen.structure.MapGenStructureIO": [ - "net.minecraft.world.gen.structure.MapGenStructureIO METHOD func_143031_a(Ljava/lang/Class;Ljava/lang/String;)V PUBLIC LEAVE forge_at.cfg:74", - "net.minecraft.world.gen.structure.MapGenStructureIO METHOD func_143034_b(Ljava/lang/Class;Ljava/lang/String;)V PUBLIC LEAVE forge_at.cfg:73" - ], - "net.minecraft.world.gen.structure.MapGenVillage": [ - "net.minecraft.world.gen.structure.MapGenVillage FIELD field_75055_e PUBLIC REMOVEFINAL forge_at.cfg:41" - ], - "net.minecraft.world.gen.structure.StructureStrongholdPieces": [ - "net.minecraft.world.gen.structure.StructureStrongholdPieces INNERCLASS Stronghold PUBLIC LEAVE forge_at.cfg:76" - ], - "net.minecraft.world.gen.structure.StructureStrongholdPieces$Stronghold": [ - "net.minecraft.world.gen.structure.StructureStrongholdPieces$Stronghold CLASS PUBLIC LEAVE forge_at.cfg:76" - ], - "net.minecraft.world.gen.structure.StructureVillagePieces": [ - "net.minecraft.world.gen.structure.StructureVillagePieces INNERCLASS Village PUBLIC LEAVE forge_at.cfg:88" - ], - "net.minecraft.world.gen.structure.StructureVillagePieces$Village": [ - "net.minecraft.world.gen.structure.StructureVillagePieces$Village CLASS PUBLIC LEAVE forge_at.cfg:88" + "net/minecraft/world/gen/ChunkGeneratorHell": [ + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185939_I PRIVATE REMOVEFINAL forge_at.cfg:259", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185946_g PUBLIC REMOVEFINAL forge_at.cfg:257", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185947_h PUBLIC REMOVEFINAL forge_at.cfg:258", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185957_u PRIVATE REMOVEFINAL forge_at.cfg:252", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185958_v PRIVATE REMOVEFINAL forge_at.cfg:253", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_185959_w PRIVATE REMOVEFINAL forge_at.cfg:254", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_73172_c PRIVATE REMOVEFINAL forge_at.cfg:260", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_73174_n PRIVATE REMOVEFINAL forge_at.cfg:256", + "net/minecraft/world/gen/ChunkGeneratorHell FIELD field_73177_m PRIVATE REMOVEFINAL forge_at.cfg:255" + ], + "net/minecraft/world/gen/ChunkGeneratorOverworld": [ + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185979_A PRIVATE REMOVEFINAL forge_at.cfg:243", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185980_B PRIVATE REMOVEFINAL forge_at.cfg:244", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185991_j PRIVATE REMOVEFINAL forge_at.cfg:239", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185992_k PRIVATE REMOVEFINAL forge_at.cfg:240", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185993_l PRIVATE REMOVEFINAL forge_at.cfg:241", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_185994_m PRIVATE REMOVEFINAL forge_at.cfg:242", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_186003_v PRIVATE REMOVEFINAL forge_at.cfg:245", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_186004_w PRIVATE REMOVEFINAL forge_at.cfg:246", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_186005_x PRIVATE REMOVEFINAL forge_at.cfg:247", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_186006_y PRIVATE REMOVEFINAL forge_at.cfg:248", + "net/minecraft/world/gen/ChunkGeneratorOverworld FIELD field_186007_z PRIVATE REMOVEFINAL forge_at.cfg:249" + ], + "net/minecraft/world/gen/ChunkProviderServer": [ + "net/minecraft/world/gen/ChunkProviderServer FIELD field_186029_c PUBLIC LEAVE forge_at.cfg:91", + "net/minecraft/world/gen/ChunkProviderServer FIELD field_73244_f PUBLIC LEAVE forge_at.cfg:92", + "net/minecraft/world/gen/ChunkProviderServer FIELD field_73247_e PUBLIC LEAVE forge_at.cfg:24", + "net/minecraft/world/gen/ChunkProviderServer FIELD field_73251_h PUBLIC LEAVE forge_at.cfg:94" + ], + "net/minecraft/world/gen/structure/MapGenStronghold": [ + "net/minecraft/world/gen/structure/MapGenStronghold FIELD field_151546_e PUBLIC MAKEFINAL forge_at.cfg:38" + ], + "net/minecraft/world/gen/structure/MapGenStructureIO": [ + "net/minecraft/world/gen/structure/MapGenStructureIO METHOD func_143031_a(Ljava/lang/Class;Ljava/lang/String;)V PUBLIC LEAVE forge_at.cfg:73", + "net/minecraft/world/gen/structure/MapGenStructureIO METHOD func_143034_b(Ljava/lang/Class;Ljava/lang/String;)V PUBLIC LEAVE forge_at.cfg:72" + ], + "net/minecraft/world/gen/structure/MapGenVillage": [ + "net/minecraft/world/gen/structure/MapGenVillage FIELD field_75055_e PUBLIC REMOVEFINAL forge_at.cfg:40" + ], + "net/minecraft/world/gen/structure/StructureStrongholdPieces": [ + "net/minecraft/world/gen/structure/StructureStrongholdPieces INNERCLASS Stronghold PUBLIC LEAVE forge_at.cfg:75" + ], + "net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold": [ + "net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold CLASS PUBLIC LEAVE forge_at.cfg:75" + ], + "net/minecraft/world/gen/structure/StructureVillagePieces": [ + "net/minecraft/world/gen/structure/StructureVillagePieces INNERCLASS Village PUBLIC LEAVE forge_at.cfg:87" + ], + "net/minecraft/world/gen/structure/StructureVillagePieces$Village": [ + "net/minecraft/world/gen/structure/StructureVillagePieces$Village CLASS PUBLIC LEAVE forge_at.cfg:87" ], - "net.minecraft.world.storage.SaveFormatOld": [ - "net.minecraft.world.storage.SaveFormatOld FIELD field_75808_a PUBLIC LEAVE forge_at.cfg:193" - ], - "net.minecraft.world.storage.loot.LootPool": [ - "net.minecraft.world.storage.loot.LootPool FIELD field_186455_c PRIVATE REMOVEFINAL forge_at.cfg:271", - "net.minecraft.world.storage.loot.LootPool FIELD field_186456_d PRIVATE REMOVEFINAL forge_at.cfg:272" + "net/minecraft/world/storage/SaveFormatOld": [ + "net/minecraft/world/storage/SaveFormatOld FIELD field_75808_a PUBLIC LEAVE forge_at.cfg:192" + ], + "net/minecraft/world/storage/loot/LootPool": [ + "net/minecraft/world/storage/loot/LootPool FIELD field_186455_c PRIVATE REMOVEFINAL forge_at.cfg:270", + "net/minecraft/world/storage/loot/LootPool FIELD field_186456_d PRIVATE REMOVEFINAL forge_at.cfg:271" ] } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 4d00559..9525a3a 100644 --- a/build.gradle +++ b/build.gradle @@ -5,10 +5,9 @@ plugins { id 'java-library' id 'maven-publish' id 'eclipse' - id 'org.cadixdev.licenser' version '0.6.1' id 'com.github.johnrengelman.shadow' version '8.1.1' - id 'antlr' - id 'net.minecraftforge.gradleutils' version '[2.1.2,)' + id 'net.minecraftforge.licenser' version '1.0.1' + id 'net.minecraftforge.gradleutils' version '[2.3,2.4)' } group 'net.minecraftforge' @@ -31,10 +30,6 @@ java { withSourcesJar() } -compileJava { - dependsOn generateGrammarSource -} - tasks.named('jar', Jar).configure { dependsOn ':at-mlservice:processResources' dependsOn ':at-mlservice:compileJava' @@ -63,21 +58,15 @@ tasks.named('jar', Jar).configure { } } -tasks.named('sourcesJar').configure { - dependsOn generateGrammarSource -} - changelog { - fromTag '1.0' + from '1.0' } dependencies { - implementation(libs.antlr4.runtime) implementation(libs.jopt.simple) implementation(libs.bundles.asm) implementation(libs.log4j.api) implementation(libs.log4j.core) - antlr(libs.antlr4) } tasks.named('shadowJar', ShadowJar).configure { @@ -90,11 +79,6 @@ tasks.named('shadowJar', ShadowJar).configure { 'Multi-Release': 'true' ]) } - dependencies { - exclude(dependency { - it.moduleName == 'antlr4' - }) - } } artifacts { @@ -125,11 +109,6 @@ publishing { } } -generateGrammarSource { - arguments += ['-visitor', '-package', 'net.minecraftforge.accesstransformer.generated'] - outputDirectory = file("${project.buildDir}/generated-src/antlr/main/net/minecraftforge/accesstransformer/generated/") -} - allprojects { ext.VALID_VMS = [ 'Adoptium': [16, 17, 18, 19, 20, 21], diff --git a/settings.gradle b/settings.gradle index 1c4fe83..99aa9df 100644 --- a/settings.gradle +++ b/settings.gradle @@ -31,10 +31,6 @@ dependencyResolutionManagement { library('jopt-simple', 'net.sf.jopt-simple:jopt-simple:5.0.4') library('nulls', 'org.jetbrains:annotations:23.0.0') - version('antlr4', '4.9.1') - library('antlr4', 'org.antlr', 'antlr4' ).versionRef('antlr4') - library('antlr4-runtime', 'org.antlr', 'antlr4-runtime').versionRef('antlr4') - version('log4j', '2.19.0') library('log4j-api', 'org.apache.logging.log4j', 'log4j-api' ).versionRef('log4j') library('log4j-core', 'org.apache.logging.log4j', 'log4j-core').versionRef('log4j') diff --git a/src/main/antlr/AtLexer.g4 b/src/main/antlr/AtLexer.g4 deleted file mode 100644 index d8c17a7..0000000 --- a/src/main/antlr/AtLexer.g4 +++ /dev/null @@ -1,32 +0,0 @@ -lexer grammar AtLexer; - -COMMENT : '#' ~('\r' | '\n')* ; - -KEYWORD : ('public' | 'private' | 'protected' | 'default') ([-+]'f')? -> pushMode(CLASS_NAME_MODE) ; - -WS : [ \t]+ ; - -CRLF : '\r' | '\n' | '\r\n' ; - -mode CLASS_NAME_MODE ; -CLASS_NAME : ([\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]*'.')*[\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]* -> popMode, pushMode(MEMBER_NAME) ; -CLASS_NAME_MODE_CRLF : CRLF -> popMode, type(CRLF) ; -CLASS_NAME_MODE_COMMENT : COMMENT -> type(COMMENT) ; -CLASS_NAME_MODE_WS : WS -> type(WS) ; - -mode MEMBER_NAME ; -ASTERISK : '*' ; -ASTERISK_METHOD : '*()' ; -NAME_ELEMENT : (([\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]*) | '') -> popMode, pushMode(TYPES) ; -MEMBER_NAME_CRLF : CRLF -> popMode, type(CRLF) ; -MEMBER_NAME_COMMENT : COMMENT -> type(COMMENT) ; -MEMBER_NAME_WS : WS -> type(WS) ; - -mode TYPES ; -OPEN_PARAM : '(' ; -CLOSE_PARAM : ')' ; -CLASS_VALUE : '['+ [ZBCSIFDJ] | '['* 'L' ~[;\n]+ ';' ; -PRIMITIVE : [ZBCSIFDJV] ; -TYPES_CRLF : CRLF -> popMode, type(CRLF) ; -TYPES_COMMENT : COMMENT -> type(COMMENT) ; -TYPES_WS : WS -> type(WS) ; diff --git a/src/main/antlr/AtParser.g4 b/src/main/antlr/AtParser.g4 deleted file mode 100644 index e027456..0000000 --- a/src/main/antlr/AtParser.g4 +++ /dev/null @@ -1,23 +0,0 @@ -parser grammar AtParser; - -options { tokenVocab=AtLexer; } - -file : (line CRLF)* line? EOF ; - -line : entry? WS? COMMENT? ; - -entry : keyword WS class_name (WS line_value)? ; -line_value : function | field_name | wildcard_method | wildcard_field ; - -wildcard_method : ASTERISK_METHOD ; -wildcard_field : ASTERISK ; -keyword : KEYWORD ; -class_name : CLASS_NAME ; -field_name : NAME_ELEMENT ; - -function : func_name OPEN_PARAM argument* CLOSE_PARAM return_value ; -func_name : NAME_ELEMENT ; - -argument : PRIMITIVE | class_value ; -return_value : PRIMITIVE | class_value ; -class_value : CLASS_VALUE ; diff --git a/src/main/java/net/minecraftforge/accesstransformer/AccessTransformer.java b/src/main/java/net/minecraftforge/accesstransformer/AccessTransformer.java index 2d4a260..48ee221 100644 --- a/src/main/java/net/minecraftforge/accesstransformer/AccessTransformer.java +++ b/src/main/java/net/minecraftforge/accesstransformer/AccessTransformer.java @@ -57,8 +57,12 @@ public void applyModifier(final T node, final Class type, final Seti), MAKEFINAL(i->i | Opcodes.ACC_FINAL), REMOVEFINAL(i->i & ~Opcodes.ACC_FINAL), CONFLICT(i->i); + LEAVE(i->i), + MAKEFINAL(i->i | Opcodes.ACC_FINAL), + REMOVEFINAL(i->i & ~Opcodes.ACC_FINAL), + CONFLICT(i->i); private IntFunction function; FinalState(final IntFunction function) { diff --git a/src/main/java/net/minecraftforge/accesstransformer/MethodTarget.java b/src/main/java/net/minecraftforge/accesstransformer/MethodTarget.java index 690c8c4..1ff7fe4 100644 --- a/src/main/java/net/minecraftforge/accesstransformer/MethodTarget.java +++ b/src/main/java/net/minecraftforge/accesstransformer/MethodTarget.java @@ -4,24 +4,18 @@ */ package net.minecraftforge.accesstransformer; -import org.objectweb.asm.*; -import org.objectweb.asm.tree.*; +import java.util.Objects; +import java.util.Set; -import java.util.*; -import java.util.stream.*; +import org.objectweb.asm.Opcodes; +import org.objectweb.asm.tree.MethodNode; public class MethodTarget extends Target { - private final String methodName; - private final List arguments; - private final Type returnType; private final String targetName; - public MethodTarget(final String className, final String methodName, final List arguments, final String returnValue) { + public MethodTarget(String className, String methodName, String desc) { super(className); - this.methodName = methodName; - this.arguments = arguments.stream().map(s->s.replaceAll("\\.", "/")).map(Type::getType).collect(Collectors.toList()); - this.returnType = Type.getType(returnValue.replaceAll("\\.","/")); - this.targetName = methodName+'('+arguments.stream().collect(Collectors.joining())+')'+returnType; + this.targetName = methodName + desc; } @Override @@ -31,24 +25,19 @@ public TargetType getType() { @Override public String toString() { - return super.toString() + " " - + Objects.toString(methodName) + "(" - + Objects.toString(arguments.stream().map(Object::toString).collect(Collectors.joining()))+")" - +Objects.toString(returnType); + return super.toString() + " " + this.targetName; } @Override public boolean equals(final Object obj) { if (!(obj instanceof MethodTarget)) return false; - return super.equals(obj) && - Objects.equals(methodName, ((MethodTarget)obj).methodName) && - Objects.deepEquals(arguments, ((MethodTarget)obj).arguments) && - Objects.equals(returnType, ((MethodTarget)obj).returnType); + MethodTarget o = (MethodTarget)obj; + return super.equals(obj) && Objects.equals(targetName, o.targetName); } @Override public int hashCode() { - return Objects.hash(getClassName(), getType(), methodName); + return Objects.hash(getClassName(), getType(), targetName); } @Override @@ -61,10 +50,7 @@ public void apply(final MethodNode node, final AccessTransformer.Modifier target boolean wasPrivate = (node.access & Opcodes.ACC_PRIVATE) == Opcodes.ACC_PRIVATE; node.access = targetAccess.mergeWith(node.access); node.access = targetFinalState.mergeWith(node.access); - if (wasPrivate && !"".equals(node.name) && (node.access & Opcodes.ACC_PRIVATE) != Opcodes.ACC_PRIVATE) { + if (wasPrivate && !"".equals(node.name) && (node.access & Opcodes.ACC_PRIVATE) != Opcodes.ACC_PRIVATE) privateChanged.add(node.name+node.desc); - } - } - } diff --git a/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformVisitor.java b/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformVisitor.java deleted file mode 100644 index ab2a719..0000000 --- a/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformVisitor.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) Forge Development LLC - * SPDX-License-Identifier: LGPL-2.1-only - */ -package net.minecraftforge.accesstransformer.parser; - -import net.minecraftforge.accesstransformer.generated.*; - -import net.minecraftforge.accesstransformer.*; - -import org.antlr.v4.runtime.*; - -import java.util.*; -import java.util.stream.*; - - -public class AccessTransformVisitor extends AtParserBaseVisitor { - private final INameHandler nameHandler; - - private List accessTransformers = new ArrayList<>(); - private final String origin; - - public AccessTransformVisitor(final String origin, final INameHandler nameHandler) { - this.origin = origin; - this.nameHandler = nameHandler; - } - - @Override - public Void visitEntry(final AtParser.EntryContext ctx) { - if (ctx.line_value() == null) { - String className = ctx.class_name().getText(); - String modifier = ctx.keyword().getText(); - className = nameHandler.translateClassName(className); - Target target = new ClassTarget(className); - accessTransformers.add(new AccessTransformer(target, ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - - int idx = className.lastIndexOf('$'); //Java uses this to identify inner classes, Scala/others use it for synthetics. Either way we should be fine as it will skip over classes that don't exist. - if (idx != -1) { - String parent = className.substring(0, idx); - accessTransformers.add(new AccessTransformer(new InnerClassTarget(parent, className.replace('.', '/')), ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - } - } - return super.visitEntry(ctx); - } - - @Override - public Void visitFunction(final AtParser.FunctionContext ctx) { - final AtParser.EntryContext entry = (AtParser.EntryContext) ctx.getParent().getParent(); - String className = entry.class_name().getText(); - String modifier = entry.keyword().getText(); - String methodName = ctx.func_name().getText(); - className = nameHandler.translateClassName(className); - methodName = nameHandler.translateMethodName(methodName); - List args = ctx.argument().stream().map(RuleContext::getText).collect(Collectors.toList()); - String retVal = ctx.return_value().getText(); - Target target = new MethodTarget(className, methodName, args, retVal); - accessTransformers.add(new AccessTransformer(target, ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - return super.visitFunction(ctx); - } - - @Override - public Void visitField_name(final AtParser.Field_nameContext ctx) { - final AtParser.EntryContext entry = (AtParser.EntryContext) ctx.getParent().getParent(); - String className = entry.class_name().getText(); - String modifier = entry.keyword().getText(); - String fieldName = ctx.getText(); - className = nameHandler.translateClassName(className); - fieldName = nameHandler.translateFieldName(fieldName); - Target target = new FieldTarget(className, fieldName); - accessTransformers.add(new AccessTransformer(target, ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - return super.visitField_name(ctx); - } - - @Override - public Void visitWildcard_field(final AtParser.Wildcard_fieldContext ctx) { - final AtParser.EntryContext entry = (AtParser.EntryContext) ctx.getParent().getParent(); - String className = entry.class_name().getText(); - String modifier = entry.keyword().getText(); - Target target = new WildcardTarget(className, false); - accessTransformers.add(new AccessTransformer(target, ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - return super.visitWildcard_field(ctx); - } - - @Override - public Void visitWildcard_method(final AtParser.Wildcard_methodContext ctx) { - final AtParser.EntryContext entry = (AtParser.EntryContext) ctx.getParent().getParent(); - String className = entry.class_name().getText(); - String modifier = entry.keyword().getText(); - Target target = new WildcardTarget(className, true); - accessTransformers.add(new AccessTransformer(target, ModifierProcessor.modifier(modifier), ModifierProcessor.finalState(modifier), this.origin, ctx.getStart().getLine())); - return super.visitWildcard_method(ctx); - } - - public List getAccessTransformers() { - return accessTransformers; - } -} diff --git a/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformerList.java b/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformerList.java index ad9727f..64b41b0 100644 --- a/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformerList.java +++ b/src/main/java/net/minecraftforge/accesstransformer/parser/AccessTransformerList.java @@ -4,46 +4,119 @@ */ package net.minecraftforge.accesstransformer.parser; -import net.minecraftforge.accesstransformer.*; -import net.minecraftforge.accesstransformer.generated.*; +import net.minecraftforge.accesstransformer.ClassTarget; +import net.minecraftforge.accesstransformer.WildcardTarget; +import net.minecraftforge.accesstransformer.FieldTarget; +import net.minecraftforge.accesstransformer.MethodTarget; +import net.minecraftforge.accesstransformer.InnerClassTarget; +import net.minecraftforge.accesstransformer.INameHandler; +import net.minecraftforge.accesstransformer.IdentityNameHandler; +import net.minecraftforge.accesstransformer.AccessTransformer; +import net.minecraftforge.accesstransformer.AccessTransformer.FinalState; +import net.minecraftforge.accesstransformer.AccessTransformer.Modifier; +import net.minecraftforge.accesstransformer.Target; +import net.minecraftforge.accesstransformer.TargetType; -import org.antlr.v4.runtime.*; -import org.apache.logging.log4j.*; -import org.objectweb.asm.*; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; +import org.objectweb.asm.Type; +import org.objectweb.asm.commons.Remapper; -import java.io.*; -import java.net.*; -import java.nio.file.*; -import java.util.*; -import java.util.function.*; -import java.util.stream.*; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class AccessTransformerList { private static final Logger LOGGER = LogManager.getLogger("AXFORM"); private static final Marker AXFORM_MARKER = MarkerManager.getMarker("AXFORM"); private final Map, AccessTransformer> accessTransformers = new HashMap<>(); private INameHandler nameHandler = new IdentityNameHandler(); + private Renamer renamer = new Renamer(); - public void loadFromResource(final String resourceName) throws URISyntaxException, IOException { + public void loadFromResource(String resourceName) throws URISyntaxException, IOException { final Path path = Paths.get(getClass().getClassLoader().getResource(resourceName).toURI()); loadFromPath(path, resourceName); } - public void loadFromPath(final Path path, final String resourceName) throws IOException { - LOGGER.debug(AXFORM_MARKER,"Loading access transformer {} from path {}", resourceName, path); - final CharStream stream = CharStreams.fromPath(path); - final AtLexer lexer = new AtLexer(stream); - final CommonTokenStream tokenStream = new CommonTokenStream(lexer); - final AtParser parser = new AtParser(tokenStream); - parser.addErrorListener(new AtParserErrorListener()); - final AtParser.FileContext file = parser.file(); - final AccessTransformVisitor accessTransformVisitor = new AccessTransformVisitor(resourceName, nameHandler); - file.accept(accessTransformVisitor); + public void loadFromPath(Path path, String resourceName) throws IOException { + LOGGER.debug(AXFORM_MARKER, "Loading access transformer {} from path {}", resourceName, path); + load(path, resourceName, Files.readAllLines(path)); + } + + public void load(Path path, String resourceName, List lines) { + boolean failed = false; + List ats = new ArrayList<>(); + int lineIndex = -1; + for (String line : lines) { + lineIndex++; + List tokens = tokenize(line); + if (tokens.isEmpty()) + continue; + + if (tokens.size() < 2 || tokens.size() > 3) { + LOGGER.error(AXFORM_MARKER, "Invalid access transformer line in {}: {}", resourceName, line); + failed = true; + continue; + } + + Modifier mod = ModifierProcessor.modifier(tokens.get(0)); + if (mod == null) { + LOGGER.error(AXFORM_MARKER, "Invalid access transformer line in {}: {}", resourceName, line); + failed = true; + continue; + } + + FinalState fmod = ModifierProcessor.finalState(tokens.get(0)); + Target target = null; + + String cls = tokens.get(1).replace('.', '/'); + String name = tokens.size() == 2 ? null : tokens.get(2); + + if (tokens.size() == 2) { // Class + target = new ClassTarget(renamer.map(cls)); + //Java uses this to identify inner classes, Scala/others use it for synthetics. Either way we should be fine as it will skip over classes that don't exist. + int idx = target.getClassName().lastIndexOf('$'); + if (idx != -1) { + String parent = target.getClassName().substring(0, idx); + ats.add(new AccessTransformer(new InnerClassTarget(parent, target.getClassName()), mod, fmod, resourceName, lineIndex)); + } + } else if ("*".equals(name)) { // Field Wildcard + target = new WildcardTarget(renamer.map(cls), false); + } else if ("*()".equals(name)) { // Method Wildcard + target = new WildcardTarget(renamer.map(cls), true); + } else if (name.indexOf('(') == -1) { // Fields + target = new FieldTarget(renamer.map(cls), renamer.mapFieldName(cls, name, null)); + } else { // Methods + int idx = name.indexOf('('); + String desc = name.substring(idx).replace('.', '/'); + name = name.substring(0, idx); + try { + target = new MethodTarget(renamer.map(cls), renamer.mapMethodName(cls, name, desc), renamer.mapMethodDesc(desc)); + } catch (Throwable t) { + throw t; + } + } + ats.add(new AccessTransformer(target, mod, fmod, resourceName, lineIndex)); + } + + if (failed) + throw new IllegalArgumentException("Invalid AccessTransformer config, see log for details"); + final HashMap, AccessTransformer> localATCopy = new HashMap<>(accessTransformers); - mergeAccessTransformers(accessTransformVisitor.getAccessTransformers(), localATCopy, resourceName); + mergeAccessTransformers(ats, localATCopy, resourceName); final List invalidTransformers = invalidTransformers(localATCopy); if (!invalidTransformers.isEmpty()) { - invalidTransformers.forEach(at -> LOGGER.error(AXFORM_MARKER,"Invalid access transform final state for target {}. Referred in resources {}.",at.getTarget(), at.getOrigins())); + invalidTransformers.forEach(at -> LOGGER.error(AXFORM_MARKER,"Invalid access transform final state for target {}. Referred in resources {}.", at.getTarget(), at.getOrigins())); throw new IllegalArgumentException("Invalid AT final conflicts"); } this.accessTransformers.clear(); @@ -51,36 +124,77 @@ public void loadFromPath(final Path path, final String resourceName) throws IOEx LOGGER.debug(AXFORM_MARKER,"Loaded access transformer {} from path {}", resourceName, path); } - private void mergeAccessTransformers(final List atList, final Map, AccessTransformer> accessTransformers, final String resourceName) { - atList.forEach(at -> accessTransformers.merge(at.getTarget(), at, (accessTransformer, at2) -> accessTransformer.mergeStates(at2, resourceName))); + private static List tokenize(String line) { + int idx = line.indexOf('#'); + if (idx != -1) { + while (idx > 1 && (line.charAt(idx - 1) == ' ' || line.charAt(idx - 1) == '\t')) + idx--; + if (idx == 0) + return Collections.emptyList(); + line = line.substring(0, idx); + } + if (line.length() == 0) + return Collections.emptyList(); + return Arrays.asList(line.split("[ \t]+")); } - private List invalidTransformers(final HashMap, AccessTransformer> accessTransformers) { - return accessTransformers.values().stream().filter(e -> !e.isValid()).collect(Collectors.toList()); + private void mergeAccessTransformers(List atList, Map, AccessTransformer> accessTransformers, String resourceName) { + for (AccessTransformer at : atList) { + accessTransformers.merge(at.getTarget(), at, (at1, at2) -> at1.mergeStates(at2, resourceName)); + } } + private List invalidTransformers(HashMap, AccessTransformer> accessTransformers) { + List ret = new ArrayList<>(); + for (AccessTransformer at : accessTransformers.values()) { + if (!at.isValid()) + ret.add(at); + } + return ret; + } public Map> getAccessTransformers() { - return accessTransformers.entrySet().stream().collect(Collectors.groupingBy( - (Map.Entry, AccessTransformer> e) -> e.getValue().getTarget().getClassName(), - HashMap::new, - Collectors.mapping(Map.Entry::getValue, Collectors.toList())) - ); + Map> ret = new HashMap<>(); + accessTransformers.forEach((k, v) -> { + ret.computeIfAbsent(v.getTarget().getClassName(), t -> new ArrayList<>()).add(v); + }); + return ret; } - public boolean containsClassTarget(final Type type) { + public boolean containsClassTarget(Type type) { return accessTransformers.keySet().stream().anyMatch(k->type.equals(k.getASMType())); } - public Map> getTransformersForTarget(final Type type) { - return accessTransformers.entrySet().stream() - .filter(e -> type.equals(e.getKey().getASMType())) - .map(Map.Entry::getValue) - .collect(Collectors.groupingBy(o->o.getTarget().getType(), HashMap::new, Collectors.toMap(at->at.getTarget().targetName(), Function.identity()))); + public Map> getTransformersForTarget(Type type) { + Map> ret = new HashMap<>(); + accessTransformers.forEach((k, v) -> { + if (!type.equals(k.getASMType())) + return; + ret.computeIfAbsent(v.getTarget().getType(), t -> new HashMap<>()) + .put(v.getTarget().targetName(), v); + }); + return ret; } public void setNameHandler(final INameHandler nameHandler) { this.nameHandler = nameHandler; LOGGER.debug(AXFORM_MARKER, "Set name handler {}", nameHandler); } + + private class Renamer extends Remapper { + @Override + public String map(String internalName) { + return AccessTransformerList.this.nameHandler.translateClassName(internalName); + } + + @Override + public String mapFieldName(String owner, String name, String descriptor) { + return AccessTransformerList.this.nameHandler.translateFieldName(name); + } + + @Override + public String mapMethodName(String owner, String name, String descriptor) { + return AccessTransformerList.this.nameHandler.translateMethodName(name); + } + } } diff --git a/src/main/java/net/minecraftforge/accesstransformer/parser/AtParserErrorListener.java b/src/main/java/net/minecraftforge/accesstransformer/parser/AtParserErrorListener.java deleted file mode 100644 index f5d9e6c..0000000 --- a/src/main/java/net/minecraftforge/accesstransformer/parser/AtParserErrorListener.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) Forge Development LLC - * SPDX-License-Identifier: LGPL-2.1-only - */ -package net.minecraftforge.accesstransformer.parser; - -import org.antlr.v4.runtime.*; - -public class AtParserErrorListener extends BaseErrorListener { - @Override - public void syntaxError(final Recognizer recognizer, final Object offendingSymbol, final int line, final int charPositionInLine, final String msg, final RecognitionException e) { - throw new RuntimeException(""); - } -} diff --git a/src/main/java/net/minecraftforge/accesstransformer/parser/ModifierProcessor.java b/src/main/java/net/minecraftforge/accesstransformer/parser/ModifierProcessor.java index cad5946..5843c42 100644 --- a/src/main/java/net/minecraftforge/accesstransformer/parser/ModifierProcessor.java +++ b/src/main/java/net/minecraftforge/accesstransformer/parser/ModifierProcessor.java @@ -7,16 +7,23 @@ import java.util.*; import net.minecraftforge.accesstransformer.*; +import net.minecraftforge.accesstransformer.AccessTransformer.Modifier; public final class ModifierProcessor { private ModifierProcessor() {} public static AccessTransformer.Modifier modifier(String modifierString) { - final String modifier = modifierString.toUpperCase(Locale.ROOT); - final String ending = modifier.substring(modifier.length()-2, modifier.length()); - if ("+F".equals(ending) || "-F".equals(ending)) { - return AccessTransformer.Modifier.valueOf(modifier.substring(0, modifier.length()-2)); - } else { - return AccessTransformer.Modifier.valueOf(modifier); + String modifier = modifierString.toUpperCase(Locale.ROOT); + String ending = modifier.substring(modifier.length()-2, modifier.length()); + + if ("+F".equals(ending) || "-F".equals(ending)) + modifier = modifier.substring(0, modifier.length()-2); + + switch (modifier) { + case "PUBLIC": return Modifier.PUBLIC; + case "PROTECTED": return Modifier.PROTECTED; + case "DEFAULT": return Modifier.DEFAULT; + case "PRIVATE": return Modifier.PRIVATE; + default: return null; } }