Re-write checkATs function and automate making Items/Blocks public.
This commit is contained in:
parent
99e7fad655
commit
ab29145328
11 changed files with 364 additions and 69 deletions
249
build.gradle
249
build.gradle
|
@ -43,6 +43,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
|
|||
import de.undercouch.gradle.tasks.download.Download
|
||||
import org.gradle.plugins.ide.eclipse.model.SourceFolder
|
||||
import org.objectweb.asm.ClassReader
|
||||
import org.objectweb.asm.Opcodes
|
||||
|
||||
plugins {
|
||||
id 'net.minecrell.licenser' version '0.4'
|
||||
|
@ -52,7 +53,7 @@ plugins {
|
|||
}
|
||||
apply plugin: 'eclipse'
|
||||
|
||||
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version'))
|
||||
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
||||
|
||||
ext {
|
||||
JAR_SIGNER = null
|
||||
|
@ -217,6 +218,7 @@ project(':forge') {
|
|||
SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.8.5'
|
||||
VERSION_JSON = project(':mcp').file('build/mcp/downloadJson/version.json')
|
||||
BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
|
||||
INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.1.11'
|
||||
}
|
||||
|
||||
def getVersion = {
|
||||
|
@ -621,6 +623,7 @@ project(':forge') {
|
|||
}
|
||||
|
||||
task extractInheritance(type: ExtractInheritance, dependsOn: [genJoinedBinPatches, downloadLibraries]) {
|
||||
tool = INSTALLER_TOOLS + ':fatjar'
|
||||
input { genJoinedBinPatches.cleanJar }
|
||||
doFirst {
|
||||
def json = new JsonSlurper().parseText(VERSION_JSON.text)
|
||||
|
@ -634,51 +637,220 @@ project(':forge') {
|
|||
}
|
||||
}
|
||||
}
|
||||
task checkATs(dependsOn: genJoinedBinPatches) {
|
||||
inputs.file { genJoinedBinPatches.cleanJar }
|
||||
task checkATs(dependsOn: extractInheritance) {
|
||||
inputs.file { extractInheritance.output }
|
||||
inputs.files patcher.accessTransformers
|
||||
doLast {
|
||||
def vanilla = [:]
|
||||
def zip = new java.util.zip.ZipFile(genJoinedBinPatches.cleanJar)
|
||||
zip.entries().findAll { !it.directory && it.name.endsWith('.class') }.each { entry ->
|
||||
new ClassReader(zip.getInputStream(entry)).accept(new org.objectweb.asm.ClassVisitor(org.objectweb.asm.Opcodes.ASM7) {
|
||||
String name
|
||||
void visit(int version, int access, String name, String sig, String superName, String[] interfaces) {
|
||||
this.name = name
|
||||
vanilla[name] = access
|
||||
}
|
||||
org.objectweb.asm.FieldVisitor visitField(int access, String name, String desc, String sig, Object value) {
|
||||
vanilla[this.name + ' ' + name] = access
|
||||
return null
|
||||
}
|
||||
org.objectweb.asm.MethodVisitor visitMethod(int access, String name, String desc, String sig, String[] excs) {
|
||||
vanilla[this.name + ' ' + name + desc] = access
|
||||
return null
|
||||
}
|
||||
}, ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES)
|
||||
def parse = { line ->
|
||||
def idx = line.indexOf('#')
|
||||
def comment = idx == -1 ? null : line.substring(idx)
|
||||
if (idx != -1) line = line.substring(0, idx - 1)
|
||||
def (modifier, cls, desc) = (line.trim() + ' ').split(' ', -1)
|
||||
def key = cls + (desc.isEmpty() ? '' : ' ' + desc)
|
||||
return [modifier, cls, desc, comment, key]
|
||||
}
|
||||
def accessLevel = { access ->
|
||||
if ((access & Opcodes.ACC_PUBLIC) != 0) return 3
|
||||
if ((access & Opcodes.ACC_PROTECTED) != 0) return 2
|
||||
if ((access & Opcodes.ACC_PRIVATE) != 0) return 0
|
||||
return 1
|
||||
}
|
||||
def accessStr = { access ->
|
||||
if (access.endsWith('-f') || access.endsWith('+f'))
|
||||
return 4
|
||||
switch (access.toLowerCase()) {
|
||||
case 'public': return 3
|
||||
case 'protected': return 2
|
||||
case 'default': return 1
|
||||
case 'private': return 0
|
||||
default: return -1
|
||||
}
|
||||
}
|
||||
def json = new JsonSlurper().parseText(extractInheritance.output.text)
|
||||
|
||||
patcher.accessTransformers.each { f ->
|
||||
TreeMap lines = [:]
|
||||
f.eachLine { line ->
|
||||
def idx = line.indexOf('#')
|
||||
if (idx == 0 || line.isEmpty()) return
|
||||
def comment = idx == -1 ? null : line.substring(idx)
|
||||
if (idx != -1) line = line.substring(0, idx - 1)
|
||||
def (modifier, cls, desc) = (line.trim() + ' ').split(' ', -1)
|
||||
def key = cls + (desc.isEmpty() ? '' : ' ' + desc)
|
||||
def access = vanilla[key.replace('.', '/')]
|
||||
if (access == null) {
|
||||
if ((desc.equals('*') || desc.equals('*()')) && vanilla[cls.replace('.', '/')] != null)
|
||||
println('Warning: ' + line)
|
||||
else {
|
||||
println('Invalid: ' + line)
|
||||
return
|
||||
def group = null
|
||||
for (def line : f.readLines()) {
|
||||
if (line.isEmpty()) continue
|
||||
if (line.startsWith('#group ')) {
|
||||
def (modifier, cls, desc, comment, key) = parse.call(line.substring(7))
|
||||
|
||||
if (!desc.equals('*') && !desc.equals('*()') && !desc.equals('<init>'))
|
||||
throw new IllegalStateException('Invalid group: ' + line)
|
||||
|
||||
group = [modifier: modifier, cls: cls, desc: desc, comment: comment,
|
||||
'existing': [] as Set,
|
||||
'children': [] as TreeSet,
|
||||
group: true
|
||||
]
|
||||
if (lines.containsKey(key))
|
||||
throw new IllegalStateException('Duplicate group: ' + line)
|
||||
|
||||
lines[key] = group
|
||||
} else if (group != null) {
|
||||
if (line.startsWith('#endgroup')) {
|
||||
group = null
|
||||
} else {
|
||||
def (modifier, cls, desc, comment, key) = parse.call(line)
|
||||
group['existing'].add(key)
|
||||
}
|
||||
} else if (line.startsWith('#endgroup')) {
|
||||
throw new IllegalStateException('Invalid group ending: ' + line)
|
||||
} else if (line.startsWith('#')) {
|
||||
//Nom
|
||||
} else {
|
||||
def (modifier, cls, desc, comment, key) = parse.call(line)
|
||||
if (lines.containsKey(key)) {
|
||||
println('Duplicate: ' + line)
|
||||
continue
|
||||
}
|
||||
lines[key] = [modifier: modifier, cls: cls, desc: desc, comment: comment, group: false]
|
||||
}
|
||||
}
|
||||
|
||||
// Process Groups, this will remove any entries outside the group that is covered by the group
|
||||
for (def key : new ArrayList<>(lines.keySet())) {
|
||||
def entry = lines.get(key)
|
||||
if (entry != null && entry['group']) {
|
||||
def cls = entry['cls']
|
||||
def jcls = json.get(cls.replaceAll('\\.', '/'))
|
||||
if (jcls == null) {
|
||||
lines.remove(key)
|
||||
println('Invalid Group: ' + key)
|
||||
} else if ('*'.equals(entry['desc'])) {
|
||||
if (!jcls.containsKey('fields')) {
|
||||
lines.remove(key)
|
||||
println('Invalid Group, Class has no fields: ' + key)
|
||||
} else {
|
||||
jcls['fields'].each { field, value ->
|
||||
def fkey = cls + ' ' + field
|
||||
if (accessLevel.call(value['access']) < accessStr.call(entry['modifier'])) {
|
||||
if (lines.containsKey(fkey)) {
|
||||
lines.remove(fkey)
|
||||
} else if (!entry['existing'].contains(fkey)) {
|
||||
println('Added: ' + fkey)
|
||||
}
|
||||
entry['children'].add(fkey)
|
||||
} else if (lines.containsKey(fkey)) {
|
||||
lines.remove(fkey)
|
||||
println('Removed: ' + fkey)
|
||||
}
|
||||
}
|
||||
entry['existing'].stream().findAll{ !entry['children'].contains(it) }.each{ println('Removed: ' + it) }
|
||||
}
|
||||
} else if ('*()'.equals(entry['desc'])) {
|
||||
if (!jcls.containsKey('methods')) {
|
||||
lines.remove(key)
|
||||
println('Invalid Group, Class has no methods: ' + key)
|
||||
} else {
|
||||
jcls['methods'].each{ mtd, value ->
|
||||
if (mtd.startsWith('<clinit>'))
|
||||
return
|
||||
key = cls + ' ' + mtd.replace(' ', '')
|
||||
if (accessLevel.call(value['access']) < accessStr.call(entry['modifier'])) {
|
||||
if (lines.containsKey(key)) {
|
||||
lines.remove(key)
|
||||
} else if (!entry['existing'].contains(key)) {
|
||||
println('Added: ' + key)
|
||||
}
|
||||
entry['children'].add(key)
|
||||
} else if (lines.containsKey(key)) {
|
||||
lines.remove(key)
|
||||
println('Removed: ' + key)
|
||||
}
|
||||
}
|
||||
entry['existing'].stream().findAll{ !entry['children'].contains(it) }.each{ println('Removed: ' + it) }
|
||||
}
|
||||
} else if ('<init>'.equals(entry['desc'])) { //Make all public non-abstract subclasses
|
||||
json.each{ tcls,value ->
|
||||
if (!value.containsKey('methods') || ((value['access'] & Opcodes.ACC_ABSTRACT) != 0))
|
||||
return
|
||||
def parents = [] as Set
|
||||
def parent = tcls
|
||||
while (parent != null && json.containsKey(parent)) {
|
||||
parents.add(parent)
|
||||
def p = json[parent]
|
||||
parent = p == null ? null : p['superName']
|
||||
}
|
||||
if (parents.contains(cls.replaceAll('\\.', '/'))) {
|
||||
value['methods'].each{ mtd, v ->
|
||||
if (mtd.startsWith('<init>')) {
|
||||
def child = tcls.replaceAll('/', '\\.') + ' ' + mtd.replace(' ', '')
|
||||
if (accessLevel.call(v['access']) < 3) {
|
||||
if (lines.containsKey(child)) {
|
||||
lines.remove(child)
|
||||
} else if (!entry['existing'].contains(child)) {
|
||||
println('Added: ' + child)
|
||||
}
|
||||
entry['children'].add(child)
|
||||
} else if (lines.containsKey(child)) {
|
||||
lines.remove(child)
|
||||
println('Removed: ' + child)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
entry['existing'].stream().findAll{ !entry['children'].contains(it) }.each{ println('Removed: ' + it) }
|
||||
}
|
||||
}
|
||||
//TODO: Check access actually changes, and expand inheretence?
|
||||
lines[key] = [modifier: modifier, comment: comment]
|
||||
}
|
||||
f.text = lines.collect{ it.value.modifier + ' ' + it.key + (it.value.comment == null ? '' : ' ' + it.value.comment) }.join('\n')
|
||||
|
||||
// Process normal lines, remove invalid and remove narrowing
|
||||
for (def key : new ArrayList<>(lines.keySet())) {
|
||||
def entry = lines.get(key)
|
||||
if (entry != null && !entry['group']) {
|
||||
def cls = entry['cls']
|
||||
def jcls = json.get(cls.replaceAll('\\.', '/'))
|
||||
if (jcls == null) {
|
||||
lines.remove(key)
|
||||
println('Invalid: ' + key)
|
||||
} else if (entry['desc'] == '') {
|
||||
if (accessLevel.call(jcls['access']) >= accessStr.call(entry['modifier']) && (entry.comment == null || !entry.comment.startsWith('#force '))) {
|
||||
lines.remove(key)
|
||||
println('Invalid Narrowing: ' + key)
|
||||
}
|
||||
} else if (!entry['desc'].contains('(')) {
|
||||
if (!jcls.containsKey('fields') || !jcls['fields'].containsKey(entry['desc'])) {
|
||||
lines.remove(key)
|
||||
println('Invalid: ' + key)
|
||||
} else {
|
||||
def value = jcls['fields'][entry['desc']]
|
||||
if (accessLevel.call(value['access']) >= accessStr.call(entry['modifier']) && (entry.comment == null || !entry.comment.startsWith('#force '))) {
|
||||
lines.remove(key)
|
||||
println('Invalid Narrowing: ' + key)
|
||||
println(entry.comment)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
def jdesc = entry['desc'].replace('(', ' (')
|
||||
if (!jcls.containsKey('methods') || !jcls['methods'].containsKey(jdesc)) {
|
||||
lines.remove(key)
|
||||
println('Invalid: ' + key)
|
||||
} else {
|
||||
def value = jcls['methods'][jdesc]
|
||||
if (accessLevel.call(value['access']) >= accessStr.call(entry['modifier']) && (entry.comment == null || !entry.comment.startsWith('#force '))) {
|
||||
lines.remove(key)
|
||||
println('Invalid Narrowing: ' + key)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def data = []
|
||||
lines.each { key,value ->
|
||||
if (!value.group) {
|
||||
data.add(value.modifier + ' ' + key + (value.comment == null ? '' : ' ' + value.comment))
|
||||
} else {
|
||||
data.add('#group ' + value.modifier + ' ' + key + (value.comment == null ? '' : ' ' + value.comment))
|
||||
value.children.each{ data.add(value.modifier + ' ' + it) }
|
||||
data.add('#endgroup')
|
||||
}
|
||||
}
|
||||
f.text = data.join('\n')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -779,7 +951,6 @@ project(':forge') {
|
|||
task installerJson(dependsOn: [launcherJson, genClientBinPatches, applyClientBinPatches, applyServerBinPatches/*, createClientSRG, createServerSRG*/]) {
|
||||
ext {
|
||||
output = file('build/install_profile.json')
|
||||
INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.1.4'
|
||||
JAR_SPLITTER = 'net.minecraftforge:jarsplitter:1.1.2'
|
||||
}
|
||||
doFirst {
|
||||
|
|
|
@ -19,6 +19,7 @@ archivesBaseName = 'modid'
|
|||
|
||||
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
|
||||
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
||||
minecraft {
|
||||
// The mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD Snapshot are built nightly.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
-public class BushBlock extends Block {
|
||||
+public class BushBlock extends Block implements net.minecraftforge.common.IPlantable {
|
||||
protected BushBlock(AbstractBlock.Properties p_i48437_1_) {
|
||||
public BushBlock(AbstractBlock.Properties p_i48437_1_) {
|
||||
super(p_i48437_1_);
|
||||
}
|
||||
@@ -22,6 +22,8 @@
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
+public class DeadBushBlock extends BushBlock implements net.minecraftforge.common.IForgeShearable {
|
||||
protected static final VoxelShape field_196397_a = Block.func_208617_a(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D);
|
||||
|
||||
protected DeadBushBlock(AbstractBlock.Properties p_i48418_1_) {
|
||||
public DeadBushBlock(AbstractBlock.Properties p_i48418_1_) {
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
public static final VoxelShape field_235510_c_ = Block.func_208617_a(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D);
|
||||
|
||||
+ @Deprecated // Forge: Use the constructor that takes a supplier
|
||||
protected FlowingFluidBlock(FlowingFluid p_i49014_1_, AbstractBlock.Properties p_i49014_2_) {
|
||||
public FlowingFluidBlock(FlowingFluid p_i49014_1_, AbstractBlock.Properties p_i49014_2_) {
|
||||
super(p_i49014_2_);
|
||||
this.field_204517_c = p_i49014_1_;
|
||||
@@ -47,8 +48,21 @@
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
public static final BooleanProperty field_176569_M = BlockStateProperties.field_208194_u;
|
||||
+ private final boolean isActivator; // TRUE for an Activator Rail, FALSE for Powered Rail
|
||||
|
||||
protected PoweredRailBlock(AbstractBlock.Properties p_i48349_1_) {
|
||||
public PoweredRailBlock(AbstractBlock.Properties p_i48349_1_) {
|
||||
- super(true, p_i48349_1_);
|
||||
+ this(p_i48349_1_, false);
|
||||
+ }
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
+public class SeaGrassBlock extends BushBlock implements IGrowable, ILiquidContainer, net.minecraftforge.common.IForgeShearable {
|
||||
protected static final VoxelShape field_207798_a = Block.func_208617_a(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D);
|
||||
|
||||
protected SeaGrassBlock(AbstractBlock.Properties p_i48780_1_) {
|
||||
public SeaGrassBlock(AbstractBlock.Properties p_i48780_1_) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
}
|
||||
|
||||
+ @Deprecated // Forge: Use the other constructor that takes a Supplier
|
||||
protected StairsBlock(BlockState p_i48321_1_, AbstractBlock.Properties p_i48321_2_) {
|
||||
public StairsBlock(BlockState p_i48321_1_, AbstractBlock.Properties p_i48321_2_) {
|
||||
super(p_i48321_2_);
|
||||
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176309_a, Direction.NORTH).func_206870_a(field_176308_b, Half.BOTTOM).func_206870_a(field_176310_M, StairsShape.STRAIGHT).func_206870_a(field_204513_t, Boolean.valueOf(false)));
|
||||
this.field_150149_b = p_i48321_1_.func_177230_c();
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
+public class TallGrassBlock extends BushBlock implements IGrowable, net.minecraftforge.common.IForgeShearable {
|
||||
protected static final VoxelShape field_196389_a = Block.func_208617_a(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D);
|
||||
|
||||
protected TallGrassBlock(AbstractBlock.Properties p_i48310_1_) {
|
||||
public TallGrassBlock(AbstractBlock.Properties p_i48310_1_) {
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
+ private final java.util.function.Supplier<SoundEvent> soundSupplier;
|
||||
|
||||
+ @Deprecated // Forge: Use the constructor that takes a supplier instead
|
||||
protected MusicDiscItem(int p_i48475_1_, SoundEvent p_i48475_2_, Item.Properties p_i48475_3_) {
|
||||
public MusicDiscItem(int p_i48475_1_, SoundEvent p_i48475_2_, Item.Properties p_i48475_3_) {
|
||||
super(p_i48475_3_);
|
||||
this.field_195977_c = p_i48475_1_;
|
||||
this.field_185076_b = p_i48475_2_;
|
||||
|
|
|
@ -1,9 +1,97 @@
|
|||
public net.minecraft.advancements.CriteriaTriggers func_192118_a(Lnet/minecraft/advancements/ICriterionTrigger;)Lnet/minecraft/advancements/ICriterionTrigger; # register
|
||||
public net.minecraft.block.AbstractBlock$Properties func_200943_b(F)Lnet/minecraft/block/AbstractBlock$Properties; # hardnessAndResistance
|
||||
public net.minecraft.block.AbstractBlock$Properties func_200944_c()Lnet/minecraft/block/AbstractBlock$Properties; # needsRandomTick
|
||||
public net.minecraft.block.AbstractBlock$Properties func_200947_a(Lnet/minecraft/block/SoundType;)Lnet/minecraft/block/AbstractBlock$Properties; # sound
|
||||
public net.minecraft.block.AbstractBlock$Properties func_208770_d()Lnet/minecraft/block/AbstractBlock$Properties; # variableOpacity
|
||||
public net.minecraft.block.AbstractBlock$Properties func_222380_e()Lnet/minecraft/block/AbstractBlock$Properties; # noDrops
|
||||
#group public net.minecraft.block.Block <init>
|
||||
public net.minecraft.block.AbstractCoralPlantBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.AirBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.AttachedStemBlock <init>(Lnet/minecraft/block/StemGrownBlock;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.BarrierBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.BlastFurnaceBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.BreakableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.BushBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CactusBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CakeBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CarpetBlock <init>(Lnet/minecraft/item/DyeColor;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CartographyTableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CarvedPumpkinBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.ChestBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;Ljava/util/function/Supplier;)V
|
||||
public net.minecraft.block.ChorusFlowerBlock <init>(Lnet/minecraft/block/ChorusPlantBlock;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.ChorusPlantBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CoralFanBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CoralFinBlock <init>(Lnet/minecraft/block/Block;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CoralPlantBlock <init>(Lnet/minecraft/block/Block;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CoralWallFanBlock <init>(Lnet/minecraft/block/Block;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CraftingTableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.CropsBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.DeadBushBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.DeadCoralPlantBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.DeadCoralWallFanBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.DispenserBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.DoorBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.EnchantingTableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.EndGatewayBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.EndPortalBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.EndRodBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.EnderChestBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.FarmlandBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.FletchingTableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.FlowingFluidBlock <init>(Lnet/minecraft/fluid/FlowingFluid;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.FourWayBlock <init>(FFFFFLnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.FungusBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;Ljava/util/function/Supplier;)V
|
||||
public net.minecraft.block.FurnaceBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.GrassPathBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.GrindstoneBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.HorizontalFaceBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.JigsawBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.JukeboxBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.KelpBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.KelpTopBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.LadderBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.LecternBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.LeverBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.LilyPadBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.LoomBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.MelonBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.NetherRootsBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.NetherWartBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.NyliumBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.PaneBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.PoweredRailBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.PressurePlateBlock <init>(Lnet/minecraft/block/PressurePlateBlock$Sensitivity;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.PumpkinBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.RailBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.RedstoneTorchBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.RedstoneWallTorchBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.RepeaterBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SaplingBlock <init>(Lnet/minecraft/block/trees/Tree;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.ScaffoldingBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SeaGrassBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SeaPickleBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SixWayBlock <init>(FLnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SkullBlock <init>(Lnet/minecraft/block/SkullBlock$ISkullType;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SkullPlayerBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SkullWallPlayerBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SmithingTableBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SmokerBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SnowBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SnowyDirtBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SpawnerBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SpongeBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.StairsBlock <init>(Lnet/minecraft/block/BlockState;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.StemBlock <init>(Lnet/minecraft/block/StemGrownBlock;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.StoneButtonBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.StructureBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.StructureVoidBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.SugarCaneBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.TallGrassBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.TorchBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;Lnet/minecraft/particles/IParticleData;)V
|
||||
public net.minecraft.block.TrapDoorBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WallSkullBlock <init>(Lnet/minecraft/block/SkullBlock$ISkullType;Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WallTorchBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;Lnet/minecraft/particles/IParticleData;)V
|
||||
public net.minecraft.block.WeightedPressurePlateBlock <init>(ILnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WetSpongeBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WitherSkeletonSkullBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WitherSkeletonWallSkullBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
public net.minecraft.block.WoodButtonBlock <init>(Lnet/minecraft/block/AbstractBlock$Properties;)V
|
||||
#endgroup
|
||||
public net.minecraft.block.Block func_180637_b(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;I)V # dropXpOnBlockBreak
|
||||
public net.minecraft.block.FireBlock func_220274_q(Lnet/minecraft/block/BlockState;)I # func_220274_q
|
||||
public net.minecraft.block.FireBlock func_220275_r(Lnet/minecraft/block/BlockState;)I # func_220275_r
|
||||
|
@ -12,7 +100,39 @@ public net.minecraft.client.Minecraft field_71446_o # textureManager
|
|||
public net.minecraft.client.Minecraft func_184119_a(Lnet/minecraft/item/ItemStack;Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; # storeTEInStack
|
||||
public net.minecraft.client.Minecraft func_193986_ar()V # populateSearchTreeManager
|
||||
public net.minecraft.client.audio.SoundEngine field_148622_c #sndHandler
|
||||
protected net.minecraft.client.gui.IngameGui *
|
||||
#group protected net.minecraft.client.gui.IngameGui *
|
||||
protected net.minecraft.client.gui.IngameGui field_110328_d
|
||||
protected net.minecraft.client.gui.IngameGui field_110329_b
|
||||
protected net.minecraft.client.gui.IngameGui field_110330_c
|
||||
protected net.minecraft.client.gui.IngameGui field_175189_D
|
||||
protected net.minecraft.client.gui.IngameGui field_175190_E
|
||||
protected net.minecraft.client.gui.IngameGui field_175191_F
|
||||
protected net.minecraft.client.gui.IngameGui field_175192_A
|
||||
protected net.minecraft.client.gui.IngameGui field_175193_B
|
||||
protected net.minecraft.client.gui.IngameGui field_175194_C
|
||||
protected net.minecraft.client.gui.IngameGui field_175195_w
|
||||
protected net.minecraft.client.gui.IngameGui field_175196_v
|
||||
protected net.minecraft.client.gui.IngameGui field_175197_u
|
||||
protected net.minecraft.client.gui.IngameGui field_175198_t
|
||||
protected net.minecraft.client.gui.IngameGui field_175199_z
|
||||
protected net.minecraft.client.gui.IngameGui field_175200_y
|
||||
protected net.minecraft.client.gui.IngameGui field_175201_x
|
||||
protected net.minecraft.client.gui.IngameGui field_184049_t
|
||||
protected net.minecraft.client.gui.IngameGui field_184050_w
|
||||
protected net.minecraft.client.gui.IngameGui field_191743_I
|
||||
protected net.minecraft.client.gui.IngameGui field_194811_H
|
||||
protected net.minecraft.client.gui.IngameGui field_194812_I
|
||||
protected net.minecraft.client.gui.IngameGui field_73837_f
|
||||
protected net.minecraft.client.gui.IngameGui field_73838_g
|
||||
protected net.minecraft.client.gui.IngameGui field_73839_d
|
||||
protected net.minecraft.client.gui.IngameGui field_73840_e
|
||||
protected net.minecraft.client.gui.IngameGui field_73841_b
|
||||
protected net.minecraft.client.gui.IngameGui field_73842_c
|
||||
protected net.minecraft.client.gui.IngameGui field_73844_j
|
||||
protected net.minecraft.client.gui.IngameGui field_73845_h
|
||||
protected net.minecraft.client.gui.IngameGui field_92016_l
|
||||
protected net.minecraft.client.gui.IngameGui field_92017_k
|
||||
#endgroup
|
||||
protected net.minecraft.client.gui.IngameGui func_194805_e(F)V
|
||||
protected net.minecraft.client.gui.IngameGui func_194808_p()V
|
||||
protected net.minecraft.client.gui.IngameGui func_212303_b(Lnet/minecraft/entity/Entity;)V
|
||||
|
@ -28,7 +148,7 @@ public net.minecraft.client.particle.ParticleManager func_199283_a(Lnet/minecraf
|
|||
public net.minecraft.client.particle.ParticleManager func_215234_a(Lnet/minecraft/particles/ParticleType;Lnet/minecraft/client/particle/ParticleManager$IParticleMetaFactory;)V # registerFactory
|
||||
public net.minecraft.client.particle.ParticleManager$IParticleMetaFactory
|
||||
public net.minecraft.client.renderer.GameRenderer func_175069_a(Lnet/minecraft/util/ResourceLocation;)V #loadShader
|
||||
private net.minecraft.client.renderer.ItemModelMesher field_199313_a
|
||||
private net.minecraft.client.renderer.ItemModelMesher field_199313_a #force public -> private
|
||||
public net.minecraft.client.renderer.ItemRenderer func_229112_a_(Lcom/mojang/blaze3d/matrix/MatrixStack;Lcom/mojang/blaze3d/vertex/IVertexBuilder;Ljava/util/List;Lnet/minecraft/item/ItemStack;II)V # renderQuads
|
||||
public net.minecraft.client.renderer.entity.EntityRendererManager field_78729_o #renderers
|
||||
public net.minecraft.client.renderer.entity.EntityRendererManager func_229087_a_(Lnet/minecraft/entity/EntityType;Lnet/minecraft/client/renderer/entity/EntityRenderer;)V # addRenderer
|
||||
|
@ -38,7 +158,6 @@ public net.minecraft.client.renderer.model.BlockFaceUV$Deserializer <init>()V
|
|||
public net.minecraft.client.renderer.model.BlockModel field_178315_d # parent
|
||||
public net.minecraft.client.renderer.model.BlockModel field_178318_c # textures
|
||||
public net.minecraft.client.renderer.model.BlockModel field_178322_i # ambientOcclusion
|
||||
public net.minecraft.client.renderer.model.BlockModel func_187966_f()Ljava/util/List; # getOverrides
|
||||
public net.minecraft.client.renderer.model.BlockPart func_178236_a(Lnet/minecraft/util/Direction;)[F # getFaceUvs
|
||||
public net.minecraft.client.renderer.model.BlockPart$Deserializer <init>()V
|
||||
public net.minecraft.client.renderer.model.BlockPartFace$Deserializer <init>()V
|
||||
|
@ -51,9 +170,6 @@ public net.minecraft.client.renderer.model.ItemTransformVec3f$Deserializer field
|
|||
public net.minecraft.client.renderer.model.ItemTransformVec3f$Deserializer field_178362_a # ROTATION_DEFAULT
|
||||
protected net.minecraft.client.renderer.model.ModelBakery field_177598_f # resourceManager
|
||||
protected net.minecraft.client.renderer.model.ModelBakery field_177602_b # LOCATIONS_BUILTIN_TEXTURES
|
||||
public net.minecraft.client.renderer.model.ModelBakery field_177604_a # MODEL_MISSING
|
||||
protected net.minecraft.client.renderer.model.ModelBakery field_177606_o # MODEL_GENERATED
|
||||
protected net.minecraft.client.renderer.model.ModelBakery field_177616_r # MODEL_ENTITY
|
||||
private-f net.minecraft.client.renderer.model.ModelBakery field_217853_J # field_217853_J - need to un-finalize so that we can delay initialization to after calling super() in ModelLoader
|
||||
protected net.minecraft.client.renderer.model.ModelBakery func_177594_c(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/model/BlockModel; # loadModel
|
||||
private-f net.minecraft.client.renderer.tileentity.PistonTileEntityRenderer field_178462_c # blockRenderer - it's static so we need to un-finalize in case this class loads to early.
|
||||
|
@ -120,10 +236,15 @@ public net.minecraft.entity.player.ServerPlayerEntity func_71117_bO()V
|
|||
public net.minecraft.inventory.container.ContainerType <init>(Lnet/minecraft/inventory/container/ContainerType$IFactory;)V
|
||||
public net.minecraft.inventory.container.ContainerType$IFactory
|
||||
public net.minecraft.inventory.container.RepairContainer field_82856_l #RepairContainer/stackSizeToBeUsedInRepair
|
||||
#group public net.minecraft.item.Item <init>
|
||||
public net.minecraft.item.AxeItem <init>(Lnet/minecraft/item/IItemTier;FFLnet/minecraft/item/Item$Properties;)V
|
||||
public net.minecraft.item.HoeItem <init>(Lnet/minecraft/item/IItemTier;IFLnet/minecraft/item/Item$Properties;)V
|
||||
public net.minecraft.item.MusicDiscItem <init>(ILnet/minecraft/util/SoundEvent;Lnet/minecraft/item/Item$Properties;)V
|
||||
public net.minecraft.item.PickaxeItem <init>(Lnet/minecraft/item/IItemTier;IFLnet/minecraft/item/Item$Properties;)V
|
||||
public net.minecraft.item.ToolItem <init>(FFLnet/minecraft/item/IItemTier;Ljava/util/Set;Lnet/minecraft/item/Item$Properties;)V
|
||||
#endgroup
|
||||
public-f net.minecraft.item.ItemGroup field_78032_a # group array
|
||||
public net.minecraft.item.ItemModelsProperties func_239418_a_(Lnet/minecraft/item/Item;Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/item/IItemPropertyGetter;)V
|
||||
public net.minecraft.item.PickaxeItem <init>(Lnet/minecraft/item/IItemTier;IFLnet/minecraft/item/Item$Properties;)V
|
||||
public-f net.minecraft.item.crafting.Ingredient
|
||||
protected net.minecraft.item.crafting.Ingredient <init>(Ljava/util/stream/Stream;)V
|
||||
public+f net.minecraft.item.crafting.Ingredient func_199564_a(Lnet/minecraft/network/PacketBuffer;)V
|
||||
|
@ -134,10 +255,8 @@ public net.minecraft.item.crafting.Ingredient$SingleItemList
|
|||
public net.minecraft.item.crafting.Ingredient$SingleItemList <init>(Lnet/minecraft/item/ItemStack;)V
|
||||
public net.minecraft.item.crafting.Ingredient$TagList
|
||||
public net.minecraft.item.crafting.Ingredient$TagList <init>(Lnet/minecraft/tags/ITag;)V
|
||||
public net.minecraft.item.crafting.TippedArrowRecipe
|
||||
private-f net.minecraft.loot.LootPool field_186455_c # rolls
|
||||
private-f net.minecraft.loot.LootPool field_186456_d # bonusRolls
|
||||
public net.minecraft.nbt.NumberNBT
|
||||
public net.minecraft.network.status.server.SServerInfoPacket field_149297_a # GSON
|
||||
public net.minecraft.particles.BasicParticleType <init>(Z)V
|
||||
public net.minecraft.particles.ParticleType <init>(ZLnet/minecraft/particles/IParticleData$IDeserializer;)V
|
||||
|
@ -149,9 +268,19 @@ public net.minecraft.tags.BlockTags func_199894_a(Ljava/lang/String;)Lnet/minecr
|
|||
public net.minecraft.tags.EntityTypeTags func_232896_a_(Ljava/lang/String;)Lnet/minecraft/tags/ITag$INamedTag; # makeWrapperTag
|
||||
public net.minecraft.tags.FluidTags func_206956_a(Ljava/lang/String;)Lnet/minecraft/tags/ITag$INamedTag; # makeWrapperTag
|
||||
public net.minecraft.tags.ItemTags func_199901_a(Ljava/lang/String;)Lnet/minecraft/tags/ITag$INamedTag; # makeWrapperTag
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_199719_a # blocks
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_199720_b # items
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_205705_c # fluids
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_215299_d # entityTypes
|
||||
public net.minecraft.tileentity.HopperTileEntity func_145896_c(I)V # setTransferCooldown
|
||||
public net.minecraft.tileentity.HopperTileEntity func_174914_o()Z # mayTransfer
|
||||
public net.minecraft.util.DamageSource *() #All methods public, most are already
|
||||
#group public net.minecraft.util.DamageSource *() #All methods public, most are already
|
||||
public net.minecraft.util.DamageSource <init>(Ljava/lang/String;)V
|
||||
public net.minecraft.util.DamageSource func_151518_m()Lnet/minecraft/util/DamageSource;
|
||||
public net.minecraft.util.DamageSource func_76348_h()Lnet/minecraft/util/DamageSource;
|
||||
public net.minecraft.util.DamageSource func_76359_i()Lnet/minecraft/util/DamageSource;
|
||||
public net.minecraft.util.DamageSource func_76361_j()Lnet/minecraft/util/DamageSource;
|
||||
#endgroup
|
||||
protected net.minecraft.util.ObjectIntIdentityMap field_148748_b # internal index list
|
||||
protected net.minecraft.util.ObjectIntIdentityMap field_148749_a # internal map
|
||||
protected net.minecraft.util.ObjectIntIdentityMap field_195868_a # nextId
|
||||
|
@ -167,8 +296,6 @@ public net.minecraft.world.World field_73003_n #prevRainingStrength
|
|||
public net.minecraft.world.World field_73004_o #rainingStrength
|
||||
public net.minecraft.world.World field_73017_q #thunderingStrength
|
||||
public net.minecraft.world.World field_73018_p #prevThunderingStrength
|
||||
public net.minecraft.world.World func_175701_a(Lnet/minecraft/util/math/BlockPos;)Z # isValid
|
||||
public net.minecraft.world.World func_189509_E(Lnet/minecraft/util/math/BlockPos;)Z # isOutsideBuildHeight
|
||||
public net.minecraft.world.biome.Biome func_180626_a(Lnet/minecraft/util/math/BlockPos;)F # getTemperature
|
||||
public net.minecraft.world.biome.DeepFrozenOceanBiome func_180626_a(Lnet/minecraft/util/math/BlockPos;)F # getTemperature
|
||||
public net.minecraft.world.biome.FrozenOceanBiome func_180626_a(Lnet/minecraft/util/math/BlockPos;)F # getTemperature
|
||||
|
@ -178,8 +305,4 @@ public net.minecraft.world.gen.layer.LayerUtil func_202829_a(JLnet/minecraft/wor
|
|||
private-f net.minecraft.world.server.ChunkHolder field_219320_o # block update location
|
||||
public net.minecraft.world.server.ServerChunkProvider field_186029_c # chunkGenerator
|
||||
public net.minecraft.world.server.ServerChunkProvider field_73251_h # worldObj
|
||||
public net.minecraft.world.storage.FolderName <init>(Ljava/lang/String;)V # constructor
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_215299_d # entityTypes
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_205705_c # fluids
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_199720_b # items
|
||||
protected-f net.minecraft.tags.NetworkTagManager field_199719_a # blocks
|
||||
public net.minecraft.world.storage.FolderName <init>(Ljava/lang/String;)V # constructor
|
Loading…
Reference in a new issue