From e98951ee65e1f1ec0cb790d7cd5f0fd8069954cd Mon Sep 17 00:00:00 2001 From: David Quintana Date: Fri, 11 Jan 2019 23:52:30 +0100 Subject: [PATCH] Fix blockstate id map calculation. (#5279) --- .../net/minecraft/block/Block.java.patch | 10 +- .../registries/ForgeRegistry.java | 39 +- .../minecraftforge/registries/GameData.java | 99 +++-- .../registries/IForgeRegistry.java | 8 + .../registries/RegistryBuilder.java | 83 +++- .../registries/RegistryManager.java | 18 +- .../resources/META-INF/accesstransformer.cfg | 10 +- src/main/resources/forge_at.cfg | 396 ------------------ .../FMLUserdevClientLaunchProvider.java | 19 + .../userdev/FMLUserdevLaunchProvider.java | 19 + .../FMLUserdevServerLaunchProvider.java | 19 + 11 files changed, 261 insertions(+), 459 deletions(-) delete mode 100644 src/main/resources/forge_at.cfg diff --git a/patches/minecraft/net/minecraft/block/Block.java.patch b/patches/minecraft/net/minecraft/block/Block.java.patch index e233c2605a..9aa0467fe9 100644 --- a/patches/minecraft/net/minecraft/block/Block.java.patch +++ b/patches/minecraft/net/minecraft/block/Block.java.patch @@ -181,7 +181,15 @@ func_196254_a("dropper", new BlockDropper(Block.Builder.func_200945_a(Material.field_151576_e).func_200943_b(3.5F))); func_196254_a("white_terracotta", new Block(Block.Builder.func_200949_a(Material.field_151576_e, MapColor.field_193561_M).func_200948_a(1.25F, 4.2F))); func_196254_a("orange_terracotta", new Block(Block.Builder.func_200949_a(Material.field_151576_e, MapColor.field_193562_N).func_200948_a(1.25F, 4.2F))); -@@ -1604,4 +1620,83 @@ +@@ -1464,6 +1480,7 @@ + func_196254_a("structure_block", new BlockStructure(Block.Builder.func_200949_a(Material.field_151573_f, MapColor.field_197656_x).func_200948_a(-1.0F, 3600000.0F))); + field_149771_c.func_177776_a(); + ++ if(false) // Processed in GameData.BlockCallbacks#onBake + for(Block block80 : field_149771_c) { + for(IBlockState iblockstate : block80.func_176194_O().func_177619_a()) { + field_176229_d.func_195867_b(iblockstate); +@@ -1604,4 +1621,83 @@ return Objects.hash(this.field_212164_a, this.field_212165_b, this.field_212166_c); } } diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java index dd87edb580..afd55dd299 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java @@ -78,6 +78,7 @@ public class ForgeRegistry> implements IForgeRe private final AddCallback add; private final ClearCallback clear; private final ValidateCallback validate; + private final BakeCallback bake; private final MissingFactory missing; private final BitSet availabilityMap; private final Set dummies = Sets.newHashSet(); @@ -94,23 +95,27 @@ public class ForgeRegistry> implements IForgeRe private V defaultValue = null; boolean isFrozen = false; - ForgeRegistry(Class superType, ResourceLocation defaultKey, int min, int max, @Nullable CreateCallback create, @Nullable AddCallback add, @Nullable ClearCallback clear, @Nullable ValidateCallback validate, RegistryManager stage, boolean allowOverrides, boolean isModifiable, @Nullable DummyFactory dummyFactory, @Nullable MissingFactory missing) + private final RegistryBuilder builder; + + ForgeRegistry(RegistryManager stage, RegistryBuilder builder) { + this.builder = builder; this.stage = stage; - this.superType = superType; - this.defaultKey = defaultKey; - this.min = min; - this.max = max; + this.superType = builder.getType(); + this.defaultKey = builder.getDefault(); + this.min = builder.getMinId(); + this.max = builder.getMaxId(); this.availabilityMap = new BitSet(Math.min(max + 1, 0x0FFF)); - this.create = create; - this.add = add; - this.clear = clear; - this.validate = validate; - this.missing = missing; + this.create = builder.getCreate(); + this.add = builder.getAdd(); + this.clear = builder.getClear(); + this.validate = builder.getValidate(); + this.bake = builder.getBake(); + this.missing = builder.getMissingFactory(); + this.dummyFactory = builder.getDummyFactory(); this.isDelegated = ForgeRegistryEntry.class.isAssignableFrom(superType); //TODO: Make this IDelegatedRegistryEntry? - this.allowOverrides = allowOverrides; - this.isModifiable = isModifiable; - this.dummyFactory = dummyFactory; + this.allowOverrides = builder.getAllowOverrides(); + this.isModifiable = builder.getAllowModifications(); if (this.create != null) this.create.onCreate(this, stage); } @@ -268,7 +273,7 @@ public class ForgeRegistry> implements IForgeRe ForgeRegistry copy(RegistryManager stage) { - return new ForgeRegistry(superType, defaultKey, min, max, create, add, clear, validate, stage, allowOverrides, isModifiable, dummyFactory, missing); + return new ForgeRegistry<>(stage, builder); } int add(int id, V value) @@ -465,6 +470,12 @@ public class ForgeRegistry> implements IForgeRe } } + public void bake() + { + if (this.bake != null) + this.bake.onBake(this, this.stage); + } + void sync(ResourceLocation name, ForgeRegistry from) { LOGGER.debug(REGISTRIES,"Registry {} Sync: {} -> {}", this.superType.getSimpleName(), this.stage.getName(), from.stage.getName()); diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 4907918ee1..8fc13aef32 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -19,10 +19,7 @@ package net.minecraftforge.registries; -import com.google.common.collect.HashBiMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; +import com.google.common.collect.*; import net.minecraft.block.Block; import net.minecraft.block.BlockAir; import net.minecraft.block.material.Material; @@ -33,6 +30,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionType; +import net.minecraft.state.StateContainer; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.ObjectIntIdentityMap; import net.minecraft.util.ResourceLocation; @@ -43,14 +41,18 @@ import net.minecraft.world.biome.Biome; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent.MissingMappings; -import net.minecraftforge.fml.common.EnhancedRuntimeException; -import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; import net.minecraftforge.fml.ModThreadContext; import net.minecraftforge.fml.StartupQuery; +import net.minecraftforge.fml.common.EnhancedRuntimeException; +import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; +import net.minecraftforge.fml.common.thread.EffectiveSide; +import org.apache.commons.lang3.Validate; +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 com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.BiMap; - +import javax.annotation.Nullable; import java.lang.reflect.Field; import java.util.Collection; import java.util.Collections; @@ -62,17 +64,6 @@ import java.util.function.BiConsumer; import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.annotation.Nullable; - -import net.minecraftforge.fml.common.thread.EffectiveSide; -import org.apache.commons.lang3.Validate; -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 net.minecraftforge.fml.common.EnhancedRuntimeException.WrappedPrintStream; - /** * INTERNAL ONLY * MODDERS SHOULD HAVE NO REASON TO USE THIS CLASS @@ -226,7 +217,10 @@ public class GameData reg.validateContent(name); reg.freeze(); }); - RegistryManager.ACTIVE.registries.forEach((name, reg) -> reg.freeze()); + RegistryManager.ACTIVE.registries.forEach((name, reg) -> { + reg.freeze(); + reg.bake(); + }); // the id mapping is finalized, no ids actually changed but this is a good place to tell everyone to 'bake' their stuff. //Loader.instance().fireRemapEvent(ImmutableMap.of(), true); @@ -250,6 +244,7 @@ public class GameData final Class clazz = RegistryManager.ACTIVE.getSuperType(r.getKey()); loadRegistry(r.getKey(), RegistryManager.FROZEN, RegistryManager.ACTIVE, clazz, true); } + RegistryManager.ACTIVE.registries.forEach((name, reg) -> reg.bake()); // the id mapping has reverted, fire remap events for those that care about id changes //Loader.instance().fireRemapEvent(ImmutableMap.of(), true); @@ -273,23 +268,47 @@ public class GameData { this.identityMap.clear(); this.objectList.clear(); + this.nextId = 0; } } - - private static class BlockCallbacks implements IForgeRegistry.AddCallback, IForgeRegistry.ClearCallback, IForgeRegistry.CreateCallback, IForgeRegistry.DummyFactory + private static class BlockCallbacks implements IForgeRegistry.AddCallback, IForgeRegistry.ClearCallback, IForgeRegistry.BakeCallback, IForgeRegistry.CreateCallback, IForgeRegistry.DummyFactory { static final BlockCallbacks INSTANCE = new BlockCallbacks(); @Override public void onAdd(IForgeRegistryInternal owner, RegistryManager stage, int id, Block block, @Nullable Block oldBlock) { - @SuppressWarnings("unchecked") - ClearableObjectIntIdentityMap blockstateMap = owner.getSlaveMap(BLOCKSTATE_TO_ID, ClearableObjectIntIdentityMap.class); + if (oldBlock != null) + { + StateContainer oldContainer = oldBlock.getStateContainer(); + StateContainer newContainer = block.getStateContainer(); + ImmutableList oldValidStates = oldContainer.getValidStates(); + ImmutableList newValidStates = newContainer.getValidStates(); - int offset = 0; - for (IBlockState state : block.getStateContainer().getValidStates()) - blockstateMap.put(state, id + offset++); + // Test vanilla blockstates, if the number matches, make sure they also match in their string representations + if (block.getRegistryName().getNamespace().equals("minecraft") && ( + oldValidStates.size() != newValidStates.size() || + !Streams.zip(oldValidStates.stream().map(Object::toString), + newValidStates.stream().map(Object::toString), + String::equals).allMatch(v -> v))) + { + String oldSequence = oldContainer.getProperties().stream() + .map(s -> String.format("%s={%s}", s.getName(), + s.getAllowedValues().stream().map(Object::toString).collect(Collectors.joining( "," )))) + .collect(Collectors.joining(";")); + String newSequence = newContainer.getProperties().stream() + .map(s -> String.format("%s={%s}", s.getName(), + s.getAllowedValues().stream().map(Object::toString).collect(Collectors.joining( "," )))) + .collect(Collectors.joining(";")); + + LOGGER.error("Registry replacements for vanilla block '{}' must not change the number or order of blockstates.\n"+ + "\tOld: {}\n"+ + "\tNew: {}", block.getRegistryName(), oldSequence, newSequence); + + throw new RuntimeException("Invalid vanilla replacement. See log for details."); + } + } /* if ("minecraft:tripwire".equals(block.getRegistryName().toString())) //Tripwire is crap so we have to special case whee! @@ -362,6 +381,22 @@ public class GameData GameData.forceRegistryName(ret, key); return ret; } + + @Override + public void onBake(IForgeRegistryInternal owner, RegistryManager stage) + { + @SuppressWarnings("unchecked") + ClearableObjectIntIdentityMap blockstateMap = owner.getSlaveMap(BLOCKSTATE_TO_ID, ClearableObjectIntIdentityMap.class); + + for (Block block : owner) + { + for (IBlockState state : block.getStateContainer().getValidStates()) + { + blockstateMap.add(state); + } + } + } + private static class BlockDummyAir extends BlockAir //A named class so DummyBlockReplacementTest can detect if its a dummy { private BlockDummyAir(Block.Builder builder) @@ -688,8 +723,12 @@ public class GameData loadRegistry(key, STAGING, RegistryManager.ACTIVE, registrySuperType, true); }); - // Dump the active registry - RegistryManager.ACTIVE.registries.forEach((name, reg) -> reg.dump(name)); + RegistryManager.ACTIVE.registries.forEach((name, reg) -> { + reg.bake(); + + // Dump the active registry + reg.dump(name); + }); // Tell mods that the ids have changed //Loader.instance().fireRemapEvent(remaps, false); diff --git a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java index 5dd4a32f76..8a9cf14196 100644 --- a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java @@ -95,6 +95,14 @@ public interface IForgeRegistry> extends Iterab void onValidate(IForgeRegistryInternal owner, RegistryManager stage, int id, ResourceLocation key, V obj); } + /** + * Callback fired when the registry is done processing. Used to calculate state ID maps. + */ + interface BakeCallback> + { + void onBake(IForgeRegistryInternal owner, RegistryManager stage); + } + /** * Factory for creating dummy entries, allowing worlds to be loaded and keep the missing block references. */ diff --git a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java index 315721337a..7acf3f289e 100644 --- a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java +++ b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java @@ -41,6 +41,7 @@ public class RegistryBuilder> private List> clearCallback = Lists.newArrayList(); private List> createCallback = Lists.newArrayList(); private List> validateCallback = Lists.newArrayList(); + private List> bakeCallback = Lists.newArrayList(); private boolean saveToDisc = true; private boolean allowOverrides = true; private boolean allowModifications = false; @@ -88,6 +89,8 @@ public class RegistryBuilder> this.add((CreateCallback)inst); if (inst instanceof ValidateCallback) this.add((ValidateCallback)inst); + if (inst instanceof BakeCallback) + this.add((BakeCallback)inst); if (inst instanceof DummyFactory) this.set((DummyFactory)inst); if (inst instanceof MissingFactory) @@ -119,6 +122,12 @@ public class RegistryBuilder> return this; } + public RegistryBuilder add(BakeCallback bake) + { + this.bakeCallback.add(bake); + return this; + } + public RegistryBuilder set(DummyFactory factory) { this.dummyFactory = factory; @@ -151,12 +160,11 @@ public class RegistryBuilder> public IForgeRegistry create() { - return RegistryManager.ACTIVE.createRegistry(registryName, registryType, optionalDefaultKey, minId, maxId, - getAdd(), getClear(), getCreate(), getValidate(), saveToDisc, allowOverrides, allowModifications, dummyFactory, missingFactory); + return RegistryManager.ACTIVE.createRegistry(registryName, this); } @Nullable - private AddCallback getAdd() + public AddCallback getAdd() { if (addCallback.isEmpty()) return null; @@ -171,7 +179,7 @@ public class RegistryBuilder> } @Nullable - private ClearCallback getClear() + public ClearCallback getClear() { if (clearCallback.isEmpty()) return null; @@ -186,7 +194,7 @@ public class RegistryBuilder> } @Nullable - private CreateCallback getCreate() + public CreateCallback getCreate() { if (createCallback.isEmpty()) return null; @@ -201,7 +209,7 @@ public class RegistryBuilder> } @Nullable - private ValidateCallback getValidate() + public ValidateCallback getValidate() { if (validateCallback.isEmpty()) return null; @@ -214,4 +222,67 @@ public class RegistryBuilder> cb.onValidate(owner, stage, id, key, obj); }; } + + @Nullable + public BakeCallback getBake() + { + if (bakeCallback.isEmpty()) + return null; + if (bakeCallback.size() == 1) + return bakeCallback.get(0); + + return (owner, stage) -> + { + for (BakeCallback cb : this.bakeCallback) + cb.onBake(owner, stage); + }; + } + + public Class getType() + { + return registryType; + } + + @Nullable + public ResourceLocation getDefault() + { + return this.optionalDefaultKey; + } + + public int getMinId() + { + return minId; + } + + public int getMaxId() + { + return maxId; + } + + public boolean getAllowOverrides() + { + return allowOverrides; + } + + public boolean getAllowModifications() + { + return allowModifications; + } + + @Nullable + public DummyFactory getDummyFactory() + { + return dummyFactory; + } + + @Nullable + public MissingFactory getMissingFactory() + { + return missingFactory; + } + + public boolean getSaveToDisc() + { + return saveToDisc; + } } diff --git a/src/main/java/net/minecraftforge/registries/RegistryManager.java b/src/main/java/net/minecraftforge/registries/RegistryManager.java index be9c04a0b9..6b99206b6d 100644 --- a/src/main/java/net/minecraftforge/registries/RegistryManager.java +++ b/src/main/java/net/minecraftforge/registries/RegistryManager.java @@ -25,8 +25,6 @@ import java.util.Set; import java.util.function.Supplier; import java.util.stream.Collectors; -import javax.annotation.Nullable; - import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.google.common.collect.Maps; @@ -37,7 +35,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.network.FMLHandshakeMessages; import net.minecraftforge.fml.network.NetworkEvent; import net.minecraftforge.registries.ForgeRegistry.Snapshot; -import net.minecraftforge.registries.IForgeRegistry.*; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -101,23 +98,22 @@ public class RegistryManager return getRegistry(key); } - > ForgeRegistry createRegistry(ResourceLocation name, Class type, ResourceLocation defaultKey, int min, int max, - @Nullable AddCallback add, @Nullable ClearCallback clear, @Nullable CreateCallback create, @Nullable ValidateCallback validate, - boolean persisted, boolean allowOverrides, boolean isModifiable, @Nullable DummyFactory dummyFactory, @Nullable MissingFactory missing) + > ForgeRegistry createRegistry(ResourceLocation name, RegistryBuilder builder) { Set> parents = Sets.newHashSet(); - findSuperTypes(type, parents); + findSuperTypes(builder.getType(), parents); SetView> overlappedTypes = Sets.intersection(parents, superTypes.keySet()); if (!overlappedTypes.isEmpty()) { Class foundType = overlappedTypes.iterator().next(); - LOGGER.error("Found existing registry of type {} named {}, you cannot create a new registry ({}) with type {}, as {} has a parent of that type", foundType, superTypes.get(foundType), name, type, type); + LOGGER.error("Found existing registry of type {} named {}, you cannot create a new registry ({}) with type {}, as {} has a parent of that type", + foundType, superTypes.get(foundType), name, builder.getType(), builder.getType()); throw new IllegalArgumentException("Duplicate registry parent type found - you can only have one registry for a particular super type"); } - ForgeRegistry reg = new ForgeRegistry(type, defaultKey, min, max, create, add, clear, validate, this, allowOverrides, isModifiable, dummyFactory, missing); + ForgeRegistry reg = new ForgeRegistry(this, builder); registries.put(name, reg); - superTypes.put(type, name); - if (persisted) + superTypes.put(builder.getType(), name); + if (builder.getSaveToDisc()) this.persisted.add(name); return getRegistry(name); } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index a41a4dd5ed..1ff956e661 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -227,6 +227,7 @@ public net.minecraft.world.storage.SaveFormatOld field_75808_a # savesDirectory protected net.minecraft.util.ObjectIntIdentityMap field_148749_a # internal map protected net.minecraft.util.ObjectIntIdentityMap field_148748_b # internal index list +protected net.minecraft.util.ObjectIntIdentityMap field_195868_a # nextId #protected-f net.minecraft.util.RegistryNamespaced field_148759_a # identitymap # GuiButton @@ -385,4 +386,11 @@ public net.minecraft.world.storage.SaveHandler field_75771_c # playersDirectory public net.minecraft.item.BlockItemUseContext (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)V #EntitySpawnPlacementRegistry -public net.minecraft.entity.EntitySpawnPlacementRegistry func_209346_a(Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/EntitySpawnPlacementRegistry$SpawnPlacementType;Lnet/minecraft/world/gen/Heightmap$Type;Lnet/minecraft/tags/Tag;)V # register \ No newline at end of file +public net.minecraft.entity.EntitySpawnPlacementRegistry func_209346_a(Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/EntitySpawnPlacementRegistry$SpawnPlacementType;Lnet/minecraft/world/gen/Heightmap$Type;Lnet/minecraft/tags/Tag;)V # register + +# Block$Builder +public net.minecraft.block.Block$Builder func_200947_a(Lnet/minecraft/block/SoundType;)Lnet/minecraft/block/Block$Builder; # sound +public net.minecraft.block.Block$Builder func_200951_a(I)Lnet/minecraft/block/Block$Builder; # lightValue +public net.minecraft.block.Block$Builder func_200944_c()Lnet/minecraft/block/Block$Builder; # needsRandomTick +public net.minecraft.block.Block$Builder func_208770_d()Lnet/minecraft/block/Block$Builder; # variableOpacity +public net.minecraft.block.Block$Builder func_200943_b(F)Lnet/minecraft/block/Block$Builder; # hardnessAndResistance diff --git a/src/main/resources/forge_at.cfg b/src/main/resources/forge_at.cfg deleted file mode 100644 index 9589ff4061..0000000000 --- a/src/main/resources/forge_at.cfg +++ /dev/null @@ -1,396 +0,0 @@ -#Main Forge Access Transformer configuration file -# SoundManager -public net.minecraft.client.audio.SoundManager field_148622_c #sndHandler -# Block -public net.minecraft.block.Block (Lnet/minecraft/block/material/Material;)V -public net.minecraft.block.Block func_149752_b(F)Lnet.minecraft.block.Block; #setResistance -public net.minecraft.block.Block func_149711_c(F)Lnet.minecraft.block.Block; #setHardness -public net.minecraft.block.Block func_149713_g(I)Lnet.minecraft.block.Block; #setLightOpacity -public net.minecraft.block.Block func_149715_a(F)Lnet.minecraft.block.Block; #setLightValue -public net.minecraft.block.Block func_149722_s()Lnet.minecraft.block.Block; #setBlockUnbreakable -public net.minecraft.block.Block func_149675_a(Z)Lnet.minecraft.block.Block; #setTickRandomly -public net.minecraft.block.Block func_180637_b(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;I)V # dropXpOnBlockBreak -# BlockFire -public net.minecraft.block.BlockFire func_176532_c(Lnet/minecraft/block/Block;)I # getFireSpreadSpeed -public net.minecraft.block.BlockFire func_176534_d(Lnet/minecraft/block/Block;)I # getFireSpreadSpeed -# Item -public net.minecraft.item.Item func_77656_e(I)Lnet.minecraft.item.Item; #setMaxDamage -public net.minecraft.item.Item func_77627_a(Z)Lnet.minecraft.item.Item; #setHasSubtypes -public net.minecraft.item.Item field_185051_m # properties -# Fluid -public net.minecraft.fluid.Fluid func_180664_k()Lnet/minecraft/util/BlockRenderLayer; # getRenderLayer -# Entity -public net.minecraft.entity.Entity func_70022_Q()Ljava/lang/String; # getEntityString -# EntityPlayer -public net.minecraft.entity.player.EntityPlayer func_71053_j()V #closeScreen -# EntityTrackerEntry -public net.minecraft.entity.EntityTrackerEntry field_73134_o # trackingPlayers -# Save Location -public net.minecraft.world.chunk.storage.AnvilChunkLoader field_75825_d # chunkSaveLocation -public net.minecraft.world.gen.ChunkProviderServer field_73247_e # currentChunkLoader -# World -public-f net.minecraft.world.World field_72982_D #villageCollectionObj -# Biome -public net.minecraft.world.biome.Biome *() #Everything protected->public -public net.minecraft.world.biome.BiomeForest *() -public net.minecraft.world.biome.BiomeHills *() -public net.minecraft.world.biome.BiomeMesa *() -public net.minecraft.world.biome.BiomePlains *() -public net.minecraft.world.biome.BiomeSavanna *() -public net.minecraft.world.biome.BiomeSnow *() -public net.minecraft.world.biome.BiomeTaiga *() -public net.minecraft.world.biome.Biome$BiomeProperties *() -# Map Gen Biome Lists -public+f net.minecraft.world.gen.structure.MapGenStronghold field_151546_e -# MapGenVillage -public-f net.minecraft.world.gen.structure.MapGenVillage field_75055_e #villageSpawnBiomes -# LayerUtil -public net.minecraft.world.gen.layer.LayerUtil func_202829_a(JLnet/minecraft/world/gen/layer/traits/IAreaTransformer1;Lnet/minecraft/world/gen/area/IAreaFactory;ILjava/util/function/LongFunction;)Lnet/minecraft/world/gen/area/IAreaFactory; # repeat -# ShapedRecipes -public+f net.minecraft.item.crafting.ShapedRecipes field_77574_d #recipeItems -public+f net.minecraft.item.crafting.ShapedRecipes field_77576_b #recipeWidth -public+f net.minecraft.item.crafting.ShapedRecipes field_77577_c #recipeHeight -# ShapelessRecipes -public net.minecraft.item.crafting.ShapelessRecipes field_77579_b #recipeItems -# ContainerRepair -public net.minecraft.inventory.ContainerRepair field_82856_l #ContainerRepair/stackSizeToBeUsedInRepair -# BiomeDecorator -public net.minecraft.world.biome.BiomeDecorator * -# CreativeTabs -public-f net.minecraft.creativetab.CreativeTabs field_78032_a # creativeTabArray non-final -# World stuff -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_72923_a(Lnet/minecraft/entity/Entity;)V #onEntityAdded -public net.minecraft.world.World func_72847_b(Lnet/minecraft/entity/Entity;)V #onEntityRemoved -public net.minecraft.world.WorldServer func_72923_a(Lnet/minecraft/entity/Entity;)V #onEntityAdded -public net.minecraft.world.WorldServer func_72847_b(Lnet/minecraft/entity/Entity;)V #onEntityRemoved -public net.minecraft.client.multiplayer.WorldClient func_72923_a(Lnet/minecraft/entity/Entity;)V #onEntityAdded -public net.minecraft.client.multiplayer.WorldClient func_72847_b(Lnet/minecraft/entity/Entity;)V #onEntityRemoved -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 -# GuiIngame -protected net.minecraft.client.gui.GuiIngame * -protected net.minecraft.client.gui.GuiIngame func_194798_c(F)V -protected net.minecraft.client.gui.GuiIngame func_194800_d(F)V -protected net.minecraft.client.gui.GuiIngame func_194805_e(F)V -protected net.minecraft.client.gui.GuiIngame func_194808_p()V -protected net.minecraft.client.gui.GuiIngame func_194802_a(Lnet/minecraft/scoreboard/ScoreObjective;)V -# ItemStack -default net.minecraft.item.ItemStack field_77991_e -# MapGenStructureIO -public net.minecraft.world.gen.structure.MapGenStructureIO func_143034_b(Ljava/lang/Class;Ljava/lang/String;)V # registerStart -public net.minecraft.world.gen.structure.MapGenStructureIO func_143031_a(Ljava/lang/Class;Ljava/lang/String;)V # registerPiece -# Stronghold -public net.minecraft.world.gen.structure.StructureStrongholdPieces$Stronghold -# Packets -public net.minecraft.network.play.server.SPacketBlockChange field_148883_d # blockState -# WorldType -public-f net.minecraft.world.WorldType field_77139_a #worldTypes -# DamageSource -public net.minecraft.util.DamageSource *() #All methods public, most are already -# EntityAITasks -public net.minecraft.entity.ai.EntityAITasks field_75782_a # taskEntries -# EntityXPOrb -public net.minecraft.entity.item.EntityXPOrb field_70530_e # xpValue -# Village -public net.minecraft.world.gen.structure.StructureVillagePieces$Village -# RenderPlayer -#public net.minecraft.client.renderer.entity.RenderBiped field_77071_a #modelBipedMain -# ChunkProviderServer -public net.minecraft.world.gen.ChunkProviderServer field_186029_c # chunkGenerator -public net.minecraft.world.gen.ChunkProviderServer field_73244_f # loadedChunkHashMap -#public net.minecraft.world.gen.ChunkProviderServer field_73245_g # loadedChunks -public net.minecraft.world.gen.ChunkProviderServer field_73251_h # worldObj - -# RenderEntityItem -protected net.minecraft.client.renderer.entity.RenderEntityItem func_177078_a(Lnet/minecraft/item/ItemStack;)I # getMiniItemCount -public net.minecraft.item.crafting.RecipeTippedArrow -public net.minecraft.item.crafting.ShieldRecipes$Decoration -public net.minecraft.item.crafting.RecipesBanners$RecipeAddPattern -public net.minecraft.item.crafting.RecipesBanners$RecipeDuplicatePattern -public net.minecraft.block.state.BlockStateContainer$StateImplementation -protected net.minecraft.block.state.BlockStateContainer$StateImplementation (Lnet/minecraft/block/Block;Lcom/google/common/collect/ImmutableMap;)V -protected net.minecraft.block.state.BlockStateContainer$StateImplementation field_177238_c # propertyValueTable - -# ModelBlock -public net.minecraft.client.renderer.block.model.ModelBlock field_178318_c # textures -public net.minecraft.client.renderer.block.model.ModelBlock field_178315_d # parent -public net.minecraft.client.renderer.block.model.ModelBlock field_178322_i # ambientOcclusion -public net.minecraft.client.renderer.block.model.ModelBlock func_209568_a(Lnet/minecraft/client/renderer/block/model/ModelBlock;Ljava/util/function/Function;Ljava/util/function/Function;)Lnet/minecraft/client/renderer/block/model/ItemOverrideList; # getOverrides -public net.minecraft.client.renderer.block.model.ModelBlock func_187966_f()Ljava/util/List; # getOverrides - -# ModelBakery -public net.minecraft.client.renderer.block.model.ModelBakery field_177604_a # MODEL_MISSING -protected net.minecraft.client.renderer.block.model.ModelBakery field_177602_b # LOCATIONS_BUILTIN_TEXTURES -protected net.minecraft.client.renderer.block.model.ModelBakery field_177598_f # resourceManager -protected net.minecraft.client.renderer.block.model.ModelBakery field_177599_g # sprites -protected net.minecraft.client.renderer.block.model.ModelBakery field_177609_j # textureMap -protected net.minecraft.client.renderer.block.model.ModelBakery field_177610_k # blockModelShapes -protected net.minecraft.client.renderer.block.model.ModelBakery field_177605_n # bakedRegistry -protected net.minecraft.client.renderer.block.model.ModelBakery field_177606_o # MODEL_GENERATED -#protected net.minecraft.client.renderer.block.model.ModelBakery field_177618_p # MODEL_COMPASS -#protected net.minecraft.client.renderer.block.model.ModelBakery field_177617_q # MODEL_CLOCK -protected net.minecraft.client.renderer.block.model.ModelBakery field_177616_r # MODEL_ENTITY -#protected net.minecraft.client.renderer.block.model.ModelBakery func_177591_a(Ljava/util/Collection;)V # loadVariants -protected net.minecraft.client.renderer.block.model.ModelBakery func_177569_a(Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition;Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;)V # registerVariant -protected net.minecraft.client.renderer.block.model.ModelBakery func_177586_a(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; # getModelBlockDefinition -protected net.minecraft.client.renderer.block.model.ModelBakery func_177594_c(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlock; # loadModel -protected net.minecraft.client.renderer.block.model.ModelBakery func_177592_e()V # registerVariantNames -protected net.minecraft.client.renderer.block.model.ModelBakery func_177596_a(Lnet/minecraft/item/Item;)Ljava/util/List; # getVariantNames -protected net.minecraft.client.renderer.block.model.ModelBakery func_177583_a(Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; # getItemLocation -protected net.minecraft.client.renderer.block.model.ModelBakery func_177585_a(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Ljava/util/Set; # getTextureLocations -protected net.minecraft.client.renderer.block.model.ModelBakery func_177581_b(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z # hasItemModel -protected net.minecraft.client.renderer.block.model.ModelBakery func_177587_c(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z # isCustomRenderer -protected net.minecraft.client.renderer.block.model.ModelBakery func_177582_d(Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; # makeItemModel -protected net.minecraft.client.renderer.block.model.ModelBakery func_177580_d(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; # getModelLocation -protected net.minecraft.client.renderer.block.model.ModelBakery func_188640_b()V # loadBlocks -protected net.minecraft.client.renderer.block.model.ModelBakery func_177577_b()V # loadVariantItemModels -protected net.minecraft.client.renderer.block.model.ModelBakery func_177590_d()V # loadItemModels -protected net.minecraft.client.renderer.block.model.ModelBakery func_177595_c()V # loadVariantModels -protected net.minecraft.client.renderer.block.model.ModelBakery func_188637_e()V # loadMultipartVariantModels -protected net.minecraft.client.renderer.block.model.ModelBakery func_188638_a(Lnet/minecraft/client/renderer/block/model/ModelResourceLocation;Lnet/minecraft/client/renderer/block/model/VariantList;)V # loadVariantList -#public net.minecraft.client.renderer.block.model.WeightedBakedModel field_177565_b # models - -# ItemModelMesher -# This field is public and uses int IDs, so we hide it and expose ItemModelMesherForge methods instead -private net.minecraft.client.renderer.ItemModelMesher field_199313_a - -# ItemOverrideList -protected net.minecraft.client.renderer.block.model.ItemOverrideList ()V - -# EnumFacing -public net.minecraft.util.EnumFacing field_82609_l # VALUES -public net.minecraft.util.EnumFacing field_176754_o # HORIZONTALS -public net.minecraft.client.renderer.BufferBuilder func_78909_a(I)I # getColorIndex -public net.minecraft.client.renderer.BufferBuilder func_178972_a(IIII)V # putColorRGB -- Add A? -# ModelBlock Constructor -#public net.minecraft.client.renderer.block.model.ModelBlock (Lnet/minecraft/util/ResourceLocation;Ljava/util/List;Ljava/util/Map;ZZLnet/minecraft/client/renderer/block/model/ItemCameraTransforms;)V -# RenderLivingEntity -#public net.minecraft.client.renderer.entity.RenderLivingBase func_177094_a(Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z # addLayer - -# S00PacketServerInfo -public net.minecraft.network.status.server.SPacketServerInfo field_149297_a # GSON - -# Resource Packs -public net.minecraft.resources.FallbackResourceManager field_199023_a # resourcePacks -public net.minecraft.resources.AbstractResourcePack field_195771_a # file - -#Main FML Access Transformer configuration file -# EntityList addMappings -#public net.minecraft.entity.EntityList func_75618_a(Ljava/lang/Class;Ljava/lang/String;I)V -#public net.minecraft.entity.EntityList func_75614_a(Ljava/lang/Class;Ljava/lang/String;III)V -#public net.minecraft.entity.EntityList field_75625_b #nameToClassMap -#public net.minecraft.entity.EntityList field_75626_c #classToNameMap -#public net.minecraft.entity.EntityList field_75623_d #idToClassMap -## RenderManager -public net.minecraft.client.renderer.entity.RenderManager field_78729_o #renderers -## TileEntityRendererDispatcher -public net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher field_147559_m -public net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher field_147557_n # fontRenderer - needed for rendering text in TESR items before entering world -## EntityRenderer -public net.minecraft.client.renderer.EntityRenderer func_175069_a(Lnet/minecraft/util/ResourceLocation;)V #loadShader -## WeightedRandomItem -public net.minecraft.util.WeightedRandom$Item field_76292_a #probability -# EntityPlayer -public net.minecraft.entity.player.EntityPlayer func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; # dropItemAndGetStack -protected net.minecraft.entity.player.EntityPlayer field_71077_c # spawnPos -protected net.minecraft.entity.player.EntityPlayer field_82248_d # spawnForced -# EntityPlayerSP -public net.minecraft.client.entity.EntityPlayerSP func_184816_a(Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/item/ItemStack; # dropItemAndGetStack -## EntityPlayerMP getNextWindowId -public net.minecraft.entity.player.EntityPlayerMP func_71117_bO()V -public net.minecraft.entity.player.EntityPlayerMP field_71139_cq -## EntityAITaskEntry -public net.minecraft.entity.ai.EntityAITasks$EntityAITaskEntry -## EntityLiving -public net.minecraft.entity.EntityLiving field_70714_bg #tasks -public net.minecraft.entity.EntityLiving field_70715_bh #targetTasks -## EntityMinecartContainer -public net.minecraft.entity.item.EntityMinecartContainer field_94112_b #dropContentsWhenDead -# GuiScreen -public net.minecraft.client.gui.GuiScreen field_146297_k # minecraft instance - public because gui's outside access it -# Minecraft -public net.minecraft.client.Minecraft field_71446_o # textureManager -public net.minecraft.client.Minecraft field_110450_ap # mcDefaultResourcePack -public net.minecraft.client.Minecraft func_71370_a(II)V # resize -public net.minecraft.client.Minecraft func_180510_a(Lnet/minecraft/client/renderer/texture/TextureManager;)V # drawSplashScreen -public net.minecraft.client.Minecraft func_184119_a(Lnet/minecraft/item/ItemStack;Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; # storeTEInStack -# MinecraftServer -protected net.minecraft.server.MinecraftServer field_211151_aa # serverTime -## DedicatedServer -public net.minecraft.server.dedicated.DedicatedServer field_71341_l # pendingCommandList -## SaveFormatOld -public net.minecraft.world.storage.SaveFormatOld field_75808_a # savesDirectory - -protected net.minecraft.util.ObjectIntIdentityMap field_148749_a # internal map -protected net.minecraft.util.ObjectIntIdentityMap field_148748_b # internal index list -#protected-f net.minecraft.util.RegistryNamespaced field_148759_a # identitymap - -# GuiButton -public net.minecraft.client.gui.GuiButton field_146120_f # width - needed for config GUI stuff -public net.minecraft.client.gui.GuiButton field_146121_g # height - needed for config GUI stuff -# GuiTextField -public-f net.minecraft.client.gui.GuiTextField field_146218_h # width - needed for config GUI stuff -public-f net.minecraft.client.gui.GuiTextField field_146219_i # height - needed for config GUI stuff -# GuiSlot -public net.minecraft.client.gui.GuiSlot field_148149_f # slotHeight - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148151_d # right - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148152_e # left - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148153_b # top - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148154_c # bottom - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148155_a # width - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148158_l # height - needed for config GUI stuff -public net.minecraft.client.gui.GuiSlot field_148160_j # headerPadding - needed for config GUI stuff - -# Villager Traid Classes -public net.minecraft.entity.passive.EntityVillager$EmeraldForItems -public net.minecraft.entity.passive.EntityVillager$ITradeList -public net.minecraft.entity.passive.EntityVillager$ItemAndEmeraldToItem -public net.minecraft.entity.passive.EntityVillager$ListEnchantedBookForEmeralds -public net.minecraft.entity.passive.EntityVillager$ListEnchantedItemForEmeralds -public net.minecraft.entity.passive.EntityVillager$ListItemForEmeralds -public net.minecraft.entity.passive.EntityVillager$PriceInfo - -# Font renderer -protected net.minecraft.client.gui.FontRenderer field_78286_d # charWidth -protected net.minecraft.client.gui.FontRenderer field_78287_e # glyphWidth -protected net.minecraft.client.gui.FontRenderer field_111273_g # locationFontTexture -protected net.minecraft.client.gui.FontRenderer field_78295_j # posX -protected net.minecraft.client.gui.FontRenderer field_78296_k # posY -protected net.minecraft.client.gui.FontRenderer func_78266_a(IZ)F # renderDefaultChar -protected net.minecraft.client.gui.FontRenderer func_78277_a(CZ)F # renderUnicodeChar - -# ChunkGeneratorEnd -private-f net.minecraft.world.gen.ChunkGeneratorEnd field_185969_i #lperlin1 -private-f net.minecraft.world.gen.ChunkGeneratorEnd field_185970_j #lperlin2 -private-f net.minecraft.world.gen.ChunkGeneratorEnd field_185971_k #perlin -private-f net.minecraft.world.gen.ChunkGeneratorEnd field_185973_o #island -private-f net.minecraft.world.gen.ChunkGeneratorEnd field_185972_n #endCityGen - -# ChunkGeneratorOverworld -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185991_j #lperlin1 -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185992_k #lperlin2 -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185993_l #perlin -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185994_m #surface -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185979_A #ravineGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_185980_B #oceanMonumentGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_186003_v #caveGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_186004_w #strongholdGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_186005_x #villageGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_186006_y #mineshaftGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_186007_z #scatteredFeatureGenerator -private-f net.minecraft.world.gen.ChunkGeneratorOverworld field_191060_C #woodlandMansionGenerator - -# ChunkGeneratorHell -private-f net.minecraft.world.gen.ChunkGeneratorHell field_185957_u #lperlin1 -private-f net.minecraft.world.gen.ChunkGeneratorHell field_185958_v #lperlin2 -private-f net.minecraft.world.gen.ChunkGeneratorHell field_185959_w #perlin -private-f net.minecraft.world.gen.ChunkGeneratorHell field_73177_m #perlin2 -private-f net.minecraft.world.gen.ChunkGeneratorHell field_73174_n #perlin3 -public-f net.minecraft.world.gen.ChunkGeneratorHell field_185946_g #scale -public-f net.minecraft.world.gen.ChunkGeneratorHell field_185947_h #depth -private-f net.minecraft.world.gen.ChunkGeneratorHell field_185939_I #netherCaveGenerator -private-f net.minecraft.world.gen.ChunkGeneratorHell field_73172_c #netherBridgeGenerator - -# PlayerManager -private-f net.minecraft.server.management.PlayerChunkMapEntry field_187285_e # field_187285_e - -# RenderLivingBase -public net.minecraft.client.renderer.entity.RenderLivingBase func_177094_a(Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z # addLayer -#public net.minecraft.client.renderer.entity.RenderLivingBase func_177089_b(Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z # removeLayer - -# LootTable Stuff -private-f net.minecraft.world.storage.loot.LootPool field_186455_c # rolls -private-f net.minecraft.world.storage.loot.LootPool field_186456_d # bonusRolls - -#NBTPrimitive -public net.minecraft.nbt.NBTPrimitive - -#GuiOverlayDebug -public net.minecraft.client.gui.GuiOverlayDebug func_181554_e()V # renderLagometer -protected net.minecraft.client.gui.GuiOverlayDebug field_211537_g # rayTraceBlock -protected net.minecraft.client.gui.GuiOverlayDebug field_211538_h # rayTraceFluid - -# Expose vanilla brewing recipe system -public net.minecraft.potion.PotionHelper$MixPredicate -public net.minecraft.potion.PotionHelper func_193355_a(Lnet/minecraft/item/ItemPotion;Lnet/minecraft/item/Item;Lnet/minecraft/item/ItemPotion;)V # registerPotionItemConversion -public net.minecraft.potion.PotionHelper func_193354_a(Lnet/minecraft/item/ItemPotion;)V # registerPotionItem -public net.minecraft.potion.PotionHelper func_193357_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/Item;Lnet/minecraft/potion/PotionType;)V # registerPotionTypeConversion -public net.minecraft.potion.PotionHelper func_193356_a(Lnet/minecraft/potion/PotionType;Lnet/minecraft/item/crafting/Ingredient;Lnet/minecraft/potion/PotionType;)V # registerPotionTypeConversion - -# TileEntity -public net.minecraft.tileentity.TileEntity func_190560_a(Ljava/lang/String;Ljava/lang/Class;)V # register - -# TileEntityHopper -public net.minecraft.tileentity.TileEntityHopper func_174914_o()Z # mayTransfer -public net.minecraft.tileentity.TileEntityHopper func_145896_c(I)V # setTransferCooldown -protected net.minecraft.tileentity.TileEntityHopper func_145887_i()Z # updateHopper - -# DataFixer -public net.minecraft.util.datafix.DataFixer field_188262_d # version - -# AbstractSkeleton -protected net.minecraft.entity.monster.AbstractSkeleton func_190727_o()Lnet/minecraft/util/SoundEvent; # getStepSound - make AbstractSkeleton implementable - -# EntityWitherSkeleton -protected net.minecraft.entity.monster.EntityWitherSkeleton func_190727_o()Lnet/minecraft/util/SoundEvent; # getStepSound - make AbstractSkeleton implementable - -# EntityStray -protected net.minecraft.entity.monster.EntityStray func_190727_o()Lnet/minecraft/util/SoundEvent; # getStepSound - make AbstractSkeleton implementable - -# EntitySkeleton -protected net.minecraft.entity.monster.EntitySkeleton func_190727_o()Lnet/minecraft/util/SoundEvent; # getStepSound - make AbstractSkeleton implementable - -# EntitySelector -public net.minecraft.command.EntitySelector func_190826_c(Ljava/lang/String;)Ljava/lang/String; # addArgument - -# Teleporter -protected net.minecraft.world.Teleporter field_85192_a # world -protected net.minecraft.world.Teleporter field_77187_a # random -protected net.minecraft.world.Teleporter field_85191_c # destinationCoordinateCache - -public net.minecraft.util.ResourceLocation func_177516_a(Ljava/lang/String;)[Ljava/lang/String; # splitObjectName - -# Ingredient -public-f net.minecraft.item.crafting.Ingredient -protected net.minecraft.item.crafting.Ingredient (Ljava/util/stream/Stream;)V -public net.minecraft.item.crafting.Ingredient func_209357_a(Ljava/util/stream/Stream;)Lnet/minecraft/item/crafting/Ingredient; -public+f net.minecraft.item.crafting.Ingredient func_199564_a(Lnet/minecraft/network/PacketBuffer;)V -public net.minecraft.item.crafting.Ingredient$IItemList -public net.minecraft.item.crafting.Ingredient$SingleItemList -public net.minecraft.item.crafting.Ingredient$SingleItemList (Lnet/minecraft/item/ItemStack;)V -public net.minecraft.item.crafting.Ingredient$TagList -public net.minecraft.item.crafting.Ingredient$TagList (Lnet/minecraft/tags/Tag;)V - -# Crafting -public net.minecraft.client.Minecraft func_193986_ar()V # populateSearchTreeManager - -# Advancements -public net.minecraft.advancements.AdvancementManager func_195439_b(Lnet/minecraft/resources/IResourceManager;)Ljava/util/Map; # loadCustomAdvancements -public net.minecraft.advancements.CriteriaTriggers func_192118_a(Lnet/minecraft/advancements/ICriterionTrigger;)Lnet/minecraft/advancements/ICriterionTrigger; # register - -# BiomeProvider -public net.minecraft.world.biome.provider.BiomeProvider field_201540_a # BIOMES_TO_SPAWN_IN - -# BlockTags.Wrapper -public net.minecraft.tags.BlockTags$Wrapper - -#SaveHandler -public net.minecraft.world.storage.SaveHandler field_75771_c # playersDirectory - -#BlockItemUseContext -public net.minecraft.item.BlockItemUseContext (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)V - -#EntitySpawnPlacementRegistry -public net.minecraft.entity.EntitySpawnPlacementRegistry func_209346_a(Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/EntitySpawnPlacementRegistry$SpawnPlacementType;Lnet/minecraft/world/gen/Heightmap$Type;Lnet/minecraft/tags/Tag;)V # register - -# Block$Builder -public net.minecraft.block.Block$Builder func_200947_a(Lnet/minecraft/block/SoundType;)Lnet/minecraft/block/Block$Builder; # sound -public net.minecraft.block.Block$Builder func_200951_a(I)Lnet/minecraft/block/Block$Builder; # lightValue -public net.minecraft.block.Block$Builder func_200944_c()Lnet/minecraft/block/Block$Builder; # needsRandomTick -public net.minecraft.block.Block$Builder func_208770_d()Lnet/minecraft/block/Block$Builder; # variableOpacity -public net.minecraft.block.Block$Builder func_200943_b(F)Lnet/minecraft/block/Block$Builder; # hardnessAndResistance - diff --git a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevClientLaunchProvider.java b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevClientLaunchProvider.java index a61e4fef07..7d7441c7d2 100644 --- a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevClientLaunchProvider.java +++ b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevClientLaunchProvider.java @@ -1,3 +1,22 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2018. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package net.minecraftforge.userdev; import cpw.mods.modlauncher.api.ILaunchHandlerService; diff --git a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java index dd594e06ec..7e09fa7953 100644 --- a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java +++ b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java @@ -1,3 +1,22 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2018. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package net.minecraftforge.userdev; import cpw.mods.modlauncher.api.IEnvironment; diff --git a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java index 1e48f37c0b..007d63d650 100644 --- a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java +++ b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java @@ -1,3 +1,22 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2018. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package net.minecraftforge.userdev; import cpw.mods.modlauncher.api.ILaunchHandlerService;