More network stuff, partially done id syncing.

This commit is contained in:
Christian 2013-12-09 01:22:24 -05:00
parent bead2dab97
commit eff9a3cedc
15 changed files with 507 additions and 253 deletions

View File

@ -1194,9 +1194,9 @@ net/minecraft/command/WrongUsageException=CL_00001192
net/minecraft/dispenser/IBlockSource=CL_00001193
net/minecraft/block/BlockSourceImpl=CL_00001194
net/minecraft/dispenser/BehaviorDefaultDispenseItem=CL_00001195
net/minecraft/init/RegistryNamespacedDefaultedByKey=CL_00001196
net/minecraft/util/RegistryNamespacedDefaultedByKey=CL_00001196
net/minecraft/crash/CrashReport$1=CL_00001197
net/minecraft/dispenser/RegistryDefaulted=CL_00001198
net/minecraft/util/RegistryDefaulted=CL_00001198
net/minecraft/dispenser/IBehaviorDispenseItem=CL_00001199
net/minecraft/dispenser/IBehaviorDispenseItem$1=CL_00001200
net/minecraft/util/EnumFacing=CL_00001201
@ -1204,11 +1204,11 @@ net/minecraft/util/IObjectIntIterable=CL_00001202
net/minecraft/util/ObjectIntIdentityMap=CL_00001203
net/minecraft/dispenser/ILocatableSource=CL_00001204
net/minecraft/dispenser/ILocation=CL_00001205
net/minecraft/init/RegistryNamespaced=CL_00001206
net/minecraft/util/RegistryNamespaced=CL_00001206
net/minecraft/dispenser/IPosition=CL_00001207
net/minecraft/dispenser/PositionImpl=CL_00001208
net/minecraft/dispenser/IRegistry=CL_00001209
net/minecraft/dispenser/RegistrySimple=CL_00001210
net/minecraft/util/IRegistry=CL_00001209
net/minecraft/util/RegistrySimple=CL_00001210
net/minecraft/util/StatCollector=CL_00001211
net/minecraft/util/StringTranslate=CL_00001212
net/minecraft/nbt/NBTTagByteArray=CL_00001213
@ -10328,8 +10328,8 @@ net/minecraft/item/crafting/IRecipe.func_77569_a(Lnet/minecraft/inventory/Invent
net/minecraft/item/crafting/IRecipe.func_77570_a()I=|
net/minecraft/item/crafting/IRecipe.func_77571_b()Lnet/minecraft/item/ItemStack;=|
net/minecraft/item/crafting/IRecipe.func_77572_b(Lnet/minecraft/inventory/InventoryCrafting;)Lnet/minecraft/item/ItemStack;=|
net/minecraft/dispenser/IRegistry.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|
net/minecraft/dispenser/IRegistry.func_82595_a(Ljava/lang/Object;Ljava/lang/Object;)V=|
net/minecraft/util/IRegistry.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|
net/minecraft/util/IRegistry.func_82595_a(Ljava/lang/Object;Ljava/lang/Object;)V=|
net/minecraft/world/storage/ISaveFormat.func_75799_b()Ljava/util/List;=net/minecraft/client/AnvilConverterException|
net/minecraft/world/storage/ISaveFormat.func_75800_d()V=|
net/minecraft/world/storage/ISaveFormat.func_75801_b(Ljava/lang/String;)Z=|
@ -13079,32 +13079,32 @@ net/minecraft/world/chunk/storage/RegionFileCache.func_76551_a()V=|
net/minecraft/world/chunk/storage/RegionFileCache.func_76552_d(Ljava/io/File;II)Ljava/io/DataOutputStream;=|p_76552_0_,p_76552_1_,p_76552_2_
net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer.<init>(Lnet/minecraft/world/chunk/storage/RegionFile;II)V=|p_i2000_1_,p_i2000_2_,p_i2000_3_
net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer.close()V=java/io/IOException|
net/minecraft/dispenser/RegistryDefaulted.<init>(Ljava/lang/Object;)V=|p_i1366_1_
net/minecraft/dispenser/RegistryDefaulted.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/init/RegistryNamespaced.<init>()V=|
net/minecraft/init/RegistryNamespaced.func_148740_a()Ljava/util/Map;=|
net/minecraft/init/RegistryNamespaced.func_148741_d(Ljava/lang/Object;)Z=|p_148741_1_
net/minecraft/init/RegistryNamespaced.func_148750_c(Ljava/lang/Object;)Ljava/lang/String;=|p_148750_1_
net/minecraft/init/RegistryNamespaced.func_82594_a(Ljava/lang/String;)Ljava/lang/Object;=|p_148751_1_
net/minecraft/init/RegistryNamespaced.func_148741_d(Ljava/lang/String;)Z=|p_148752_1_
net/minecraft/init/RegistryNamespaced.func_148753_b(I)Z=|p_148753_1_
net/minecraft/init/RegistryNamespaced.func_148754_a(I)Ljava/lang/Object;=|p_148754_1_
net/minecraft/init/RegistryNamespaced.func_148755_c(Ljava/lang/String;)Ljava/lang/String;=|p_148755_0_
net/minecraft/init/RegistryNamespaced.func_148756_a(ILjava/lang/String;Ljava/lang/Object;)V=|p_148756_1_,p_148756_2_,p_148756_3_
net/minecraft/init/RegistryNamespaced.func_148757_b(Ljava/lang/Object;)I=|p_148757_1_
net/minecraft/init/RegistryNamespaced.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/init/RegistryNamespaced.iterator()Ljava/util/Iterator;=|
net/minecraft/init/RegistryNamespacedDefaultedByKey.<init>(Ljava/lang/String;)V=|p_i45127_1_
net/minecraft/init/RegistryNamespacedDefaultedByKey.func_82594_a(Ljava/lang/String;)Ljava/lang/Object;=|p_148751_1_
net/minecraft/init/RegistryNamespacedDefaultedByKey.func_148754_a(I)Ljava/lang/Object;=|p_148754_1_
net/minecraft/init/RegistryNamespacedDefaultedByKey.func_148756_a(ILjava/lang/String;Ljava/lang/Object;)V=|p_148756_1_,p_148756_2_,p_148756_3_
net/minecraft/init/RegistryNamespacedDefaultedByKey.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/dispenser/RegistrySimple.<init>()V=|
net/minecraft/dispenser/RegistrySimple.func_148740_a()Ljava/util/Map;=|
net/minecraft/dispenser/RegistrySimple.func_148741_d(Ljava/lang/Object;)Z=|p_148741_1_
net/minecraft/dispenser/RegistrySimple.func_148742_b()Ljava/util/Set;=|
net/minecraft/dispenser/RegistrySimple.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/dispenser/RegistrySimple.func_82595_a(Ljava/lang/Object;Ljava/lang/Object;)V=|p_82595_1_,p_82595_2_
net/minecraft/util/RegistryDefaulted.<init>(Ljava/lang/Object;)V=|p_i1366_1_
net/minecraft/util/RegistryDefaulted.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/util/RegistryNamespaced.<init>()V=|
net/minecraft/util/RegistryNamespaced.func_148740_a()Ljava/util/Map;=|
net/minecraft/util/RegistryNamespaced.func_148741_d(Ljava/lang/Object;)Z=|p_148741_1_
net/minecraft/util/RegistryNamespaced.func_148750_c(Ljava/lang/Object;)Ljava/lang/String;=|p_148750_1_
net/minecraft/util/RegistryNamespaced.func_82594_a(Ljava/lang/String;)Ljava/lang/Object;=|p_148751_1_
net/minecraft/util/RegistryNamespaced.func_148741_d(Ljava/lang/String;)Z=|p_148752_1_
net/minecraft/util/RegistryNamespaced.func_148753_b(I)Z=|p_148753_1_
net/minecraft/util/RegistryNamespaced.func_148754_a(I)Ljava/lang/Object;=|p_148754_1_
net/minecraft/util/RegistryNamespaced.func_148755_c(Ljava/lang/String;)Ljava/lang/String;=|p_148755_0_
net/minecraft/util/RegistryNamespaced.func_148756_a(ILjava/lang/String;Ljava/lang/Object;)V=|p_148756_1_,p_148756_2_,p_148756_3_
net/minecraft/util/RegistryNamespaced.func_148757_b(Ljava/lang/Object;)I=|p_148757_1_
net/minecraft/util/RegistryNamespaced.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/util/RegistryNamespaced.iterator()Ljava/util/Iterator;=|
net/minecraft/util/RegistryNamespacedDefaultedByKey.<init>(Ljava/lang/String;)V=|p_i45127_1_
net/minecraft/util/RegistryNamespacedDefaultedByKey.func_82594_a(Ljava/lang/String;)Ljava/lang/Object;=|p_148751_1_
net/minecraft/util/RegistryNamespacedDefaultedByKey.func_148754_a(I)Ljava/lang/Object;=|p_148754_1_
net/minecraft/util/RegistryNamespacedDefaultedByKey.func_148756_a(ILjava/lang/String;Ljava/lang/Object;)V=|p_148756_1_,p_148756_2_,p_148756_3_
net/minecraft/util/RegistryNamespacedDefaultedByKey.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/util/RegistrySimple.<init>()V=|
net/minecraft/util/RegistrySimple.func_148740_a()Ljava/util/Map;=|
net/minecraft/util/RegistrySimple.func_148741_d(Ljava/lang/Object;)Z=|p_148741_1_
net/minecraft/util/RegistrySimple.func_148742_b()Ljava/util/Set;=|
net/minecraft/util/RegistrySimple.func_82594_a(Ljava/lang/Object;)Ljava/lang/Object;=|p_82594_1_
net/minecraft/util/RegistrySimple.func_82595_a(Ljava/lang/Object;Ljava/lang/Object;)V=|p_82595_1_,p_82595_2_
net/minecraft/client/resources/IReloadableResourceManager.func_110541_a(Ljava/util/List;)V=|
net/minecraft/client/resources/IReloadableResourceManager.func_110542_a(Lnet/minecraft/client/resources/IResourceManagerReloadListener;)V=|
net/minecraft/client/renderer/entity/Render.<init>()V=|

View File

@ -1202,8 +1202,8 @@ CL: ch net/minecraft/command/WrongUsageException
CL: cj net/minecraft/dispenser/IBlockSource
CL: ck net/minecraft/block/BlockSourceImpl
CL: cl net/minecraft/dispenser/BehaviorDefaultDispenseItem
CL: cm net/minecraft/init/RegistryNamespacedDefaultedByKey
CL: cn net/minecraft/dispenser/RegistryDefaulted
CL: cm net/minecraft/util/RegistryNamespacedDefaultedByKey
CL: cn net/minecraft/util/RegistryDefaulted
CL: co net/minecraft/dispenser/IBehaviorDispenseItem
CL: cp net/minecraft/dispenser/IBehaviorDispenseItem$1
CL: cq net/minecraft/util/EnumFacing
@ -1211,11 +1211,11 @@ CL: cr net/minecraft/util/IObjectIntIterable
CL: cs net/minecraft/util/ObjectIntIdentityMap
CL: ct net/minecraft/dispenser/ILocatableSource
CL: cu net/minecraft/dispenser/ILocation
CL: cv net/minecraft/init/RegistryNamespaced
CL: cv net/minecraft/util/RegistryNamespaced
CL: cw net/minecraft/dispenser/IPosition
CL: cx net/minecraft/dispenser/PositionImpl
CL: cy net/minecraft/dispenser/IRegistry
CL: cz net/minecraft/dispenser/RegistrySimple
CL: cy net/minecraft/util/IRegistry
CL: cz net/minecraft/util/RegistrySimple
CL: d net/minecraft/crash/CrashReport$2
CL: dc net/minecraft/util/StatCollector
CL: dd net/minecraft/util/StringTranslate
@ -6302,9 +6302,9 @@ FD: ck/a net/minecraft/block/BlockSourceImpl/field_82627_a
FD: ck/b net/minecraft/block/BlockSourceImpl/field_82625_b
FD: ck/c net/minecraft/block/BlockSourceImpl/field_82626_c
FD: ck/d net/minecraft/block/BlockSourceImpl/field_82624_d
FD: cm/d net/minecraft/init/RegistryNamespacedDefaultedByKey/field_148760_d
FD: cm/e net/minecraft/init/RegistryNamespacedDefaultedByKey/field_148761_e
FD: cn/a net/minecraft/dispenser/RegistryDefaulted/field_82597_b
FD: cm/d net/minecraft/util/RegistryNamespacedDefaultedByKey/field_148760_d
FD: cm/e net/minecraft/util/RegistryNamespacedDefaultedByKey/field_148761_e
FD: cn/a net/minecraft/util/RegistryDefaulted/field_82597_b
FD: co/a net/minecraft/dispenser/IBehaviorDispenseItem/field_82483_a
FD: cq/a net/minecraft/util/EnumFacing/DOWN
FD: cq/b net/minecraft/util/EnumFacing/UP
@ -6321,13 +6321,13 @@ FD: cq/l net/minecraft/util/EnumFacing/field_82609_l
FD: cq/m net/minecraft/util/EnumFacing/$VALUES
FD: cs/a net/minecraft/util/ObjectIntIdentityMap/field_148749_a
FD: cs/b net/minecraft/util/ObjectIntIdentityMap/field_148748_b
FD: cv/a net/minecraft/init/RegistryNamespaced/field_148759_a
FD: cv/b net/minecraft/init/RegistryNamespaced/field_148758_b
FD: cv/a net/minecraft/util/RegistryNamespaced/field_148759_a
FD: cv/b net/minecraft/util/RegistryNamespaced/field_148758_b
FD: cx/a net/minecraft/dispenser/PositionImpl/field_82630_a
FD: cx/b net/minecraft/dispenser/PositionImpl/field_82628_b
FD: cx/c net/minecraft/dispenser/PositionImpl/field_82629_c
FD: cz/a net/minecraft/dispenser/RegistrySimple/field_148743_a
FD: cz/c net/minecraft/dispenser/RegistrySimple/field_82596_a
FD: cz/a net/minecraft/util/RegistrySimple/field_148743_a
FD: cz/c net/minecraft/util/RegistrySimple/field_82596_a
FD: d/a net/minecraft/crash/CrashReport$2/field_71496_a
FD: dc/a net/minecraft/util/StatCollector/field_74839_a
FD: dc/b net/minecraft/util/StatCollector/field_150828_b
@ -16287,11 +16287,11 @@ MD: cl/a (Lcj;Labp;)Labp; net/minecraft/dispenser/BehaviorDefaultDispenseItem/fu
MD: cl/a (Lcj;Lcq;)V net/minecraft/dispenser/BehaviorDefaultDispenseItem/func_82489_a (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/util/EnumFacing;)V
MD: cl/a (Lcq;)I net/minecraft/dispenser/BehaviorDefaultDispenseItem/func_82488_a (Lnet/minecraft/util/EnumFacing;)I
MD: cl/b (Lcj;Labp;)Labp; net/minecraft/dispenser/BehaviorDefaultDispenseItem/func_82487_b (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;
MD: cm/a (I)Ljava/lang/Object; net/minecraft/init/RegistryNamespacedDefaultedByKey/func_148754_a (I)Ljava/lang/Object;
MD: cm/a (ILjava/lang/String;Ljava/lang/Object;)V net/minecraft/init/RegistryNamespacedDefaultedByKey/func_148756_a (ILjava/lang/String;Ljava/lang/Object;)V
MD: cm/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/init/RegistryNamespacedDefaultedByKey/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cm/a (Ljava/lang/String;)Ljava/lang/Object; net/minecraft/init/RegistryNamespacedDefaultedByKey/func_82594_a (Ljava/lang/String;)Ljava/lang/Object;
MD: cn/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/dispenser/RegistryDefaulted/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cm/a (I)Ljava/lang/Object; net/minecraft/util/RegistryNamespacedDefaultedByKey/func_148754_a (I)Ljava/lang/Object;
MD: cm/a (ILjava/lang/String;Ljava/lang/Object;)V net/minecraft/util/RegistryNamespacedDefaultedByKey/func_148756_a (ILjava/lang/String;Ljava/lang/Object;)V
MD: cm/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/util/RegistryNamespacedDefaultedByKey/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cm/a (Ljava/lang/String;)Ljava/lang/Object; net/minecraft/util/RegistryNamespacedDefaultedByKey/func_82594_a (Ljava/lang/String;)Ljava/lang/Object;
MD: cn/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/util/RegistryDefaulted/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: co/a (Lcj;Labp;)Labp; net/minecraft/dispenser/IBehaviorDispenseItem/func_82482_a (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;
MD: cp/a (Lcj;Labp;)Labp; net/minecraft/dispenser/IBehaviorDispenseItem$1/func_82482_a (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;
MD: cq/a (I)Lcq; net/minecraft/util/EnumFacing/func_82600_a (I)Lnet/minecraft/util/EnumFacing;
@ -16305,31 +16305,31 @@ MD: cs/b (I)Z net/minecraft/util/ObjectIntIdentityMap/func_148744_b (I)Z
MD: cs/b (Ljava/lang/Object;)I net/minecraft/util/ObjectIntIdentityMap/func_148747_b (Ljava/lang/Object;)I
MD: cs/iterator ()Ljava/util/Iterator; net/minecraft/util/ObjectIntIdentityMap/iterator ()Ljava/util/Iterator;
MD: cu/k ()Lafn; net/minecraft/dispenser/ILocation/func_82618_k ()Lnet/minecraft/world/World;
MD: cv/a ()Ljava/util/Map; net/minecraft/init/RegistryNamespaced/func_148740_a ()Ljava/util/Map;
MD: cv/a (I)Ljava/lang/Object; net/minecraft/init/RegistryNamespaced/func_148754_a (I)Ljava/lang/Object;
MD: cv/a (ILjava/lang/String;Ljava/lang/Object;)V net/minecraft/init/RegistryNamespaced/func_148756_a (ILjava/lang/String;Ljava/lang/Object;)V
MD: cv/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/init/RegistryNamespaced/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cv/a (Ljava/lang/String;)Ljava/lang/Object; net/minecraft/init/RegistryNamespaced/func_82594_a (Ljava/lang/String;)Ljava/lang/Object;
MD: cv/b (I)Z net/minecraft/init/RegistryNamespaced/func_148753_b (I)Z
MD: cv/b (Ljava/lang/Object;)I net/minecraft/init/RegistryNamespaced/func_148757_b (Ljava/lang/Object;)I
MD: cv/b (Ljava/lang/String;)Z net/minecraft/init/RegistryNamespaced/func_148741_d (Ljava/lang/String;)Z
MD: cv/c (Ljava/lang/Object;)Ljava/lang/String; net/minecraft/init/RegistryNamespaced/func_148750_c (Ljava/lang/Object;)Ljava/lang/String;
MD: cv/c (Ljava/lang/String;)Ljava/lang/String; net/minecraft/init/RegistryNamespaced/func_148755_c (Ljava/lang/String;)Ljava/lang/String;
MD: cv/d (Ljava/lang/Object;)Z net/minecraft/init/RegistryNamespaced/func_148741_d (Ljava/lang/Object;)Z
MD: cv/iterator ()Ljava/util/Iterator; net/minecraft/init/RegistryNamespaced/iterator ()Ljava/util/Iterator;
MD: cv/a ()Ljava/util/Map; net/minecraft/util/RegistryNamespaced/func_148740_a ()Ljava/util/Map;
MD: cv/a (I)Ljava/lang/Object; net/minecraft/util/RegistryNamespaced/func_148754_a (I)Ljava/lang/Object;
MD: cv/a (ILjava/lang/String;Ljava/lang/Object;)V net/minecraft/util/RegistryNamespaced/func_148756_a (ILjava/lang/String;Ljava/lang/Object;)V
MD: cv/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/util/RegistryNamespaced/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cv/a (Ljava/lang/String;)Ljava/lang/Object; net/minecraft/util/RegistryNamespaced/func_82594_a (Ljava/lang/String;)Ljava/lang/Object;
MD: cv/b (I)Z net/minecraft/util/RegistryNamespaced/func_148753_b (I)Z
MD: cv/b (Ljava/lang/Object;)I net/minecraft/util/RegistryNamespaced/func_148757_b (Ljava/lang/Object;)I
MD: cv/b (Ljava/lang/String;)Z net/minecraft/util/RegistryNamespaced/func_148741_d (Ljava/lang/String;)Z
MD: cv/c (Ljava/lang/Object;)Ljava/lang/String; net/minecraft/util/RegistryNamespaced/func_148750_c (Ljava/lang/Object;)Ljava/lang/String;
MD: cv/c (Ljava/lang/String;)Ljava/lang/String; net/minecraft/util/RegistryNamespaced/func_148755_c (Ljava/lang/String;)Ljava/lang/String;
MD: cv/d (Ljava/lang/Object;)Z net/minecraft/util/RegistryNamespaced/func_148741_d (Ljava/lang/Object;)Z
MD: cv/iterator ()Ljava/util/Iterator; net/minecraft/util/RegistryNamespaced/iterator ()Ljava/util/Iterator;
MD: cw/a ()D net/minecraft/dispenser/IPosition/func_82615_a ()D
MD: cw/b ()D net/minecraft/dispenser/IPosition/func_82617_b ()D
MD: cw/c ()D net/minecraft/dispenser/IPosition/func_82616_c ()D
MD: cx/a ()D net/minecraft/dispenser/PositionImpl/func_82615_a ()D
MD: cx/b ()D net/minecraft/dispenser/PositionImpl/func_82617_b ()D
MD: cx/c ()D net/minecraft/dispenser/PositionImpl/func_82616_c ()D
MD: cy/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/dispenser/IRegistry/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cy/a (Ljava/lang/Object;Ljava/lang/Object;)V net/minecraft/dispenser/IRegistry/func_82595_a (Ljava/lang/Object;Ljava/lang/Object;)V
MD: cz/a ()Ljava/util/Map; net/minecraft/dispenser/RegistrySimple/func_148740_a ()Ljava/util/Map;
MD: cz/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/dispenser/RegistrySimple/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cz/a (Ljava/lang/Object;Ljava/lang/Object;)V net/minecraft/dispenser/RegistrySimple/func_82595_a (Ljava/lang/Object;Ljava/lang/Object;)V
MD: cz/b ()Ljava/util/Set; net/minecraft/dispenser/RegistrySimple/func_148742_b ()Ljava/util/Set;
MD: cz/d (Ljava/lang/Object;)Z net/minecraft/dispenser/RegistrySimple/func_148741_d (Ljava/lang/Object;)Z
MD: cy/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/util/IRegistry/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cy/a (Ljava/lang/Object;Ljava/lang/Object;)V net/minecraft/util/IRegistry/func_82595_a (Ljava/lang/Object;Ljava/lang/Object;)V
MD: cz/a ()Ljava/util/Map; net/minecraft/util/RegistrySimple/func_148740_a ()Ljava/util/Map;
MD: cz/a (Ljava/lang/Object;)Ljava/lang/Object; net/minecraft/util/RegistrySimple/func_82594_a (Ljava/lang/Object;)Ljava/lang/Object;
MD: cz/a (Ljava/lang/Object;Ljava/lang/Object;)V net/minecraft/util/RegistrySimple/func_82595_a (Ljava/lang/Object;Ljava/lang/Object;)V
MD: cz/b ()Ljava/util/Set; net/minecraft/util/RegistrySimple/func_148742_b ()Ljava/util/Set;
MD: cz/d (Ljava/lang/Object;)Z net/minecraft/util/RegistrySimple/func_148741_d (Ljava/lang/Object;)Z
MD: d/a ()Ljava/lang/String; net/minecraft/crash/CrashReport$2/call ()Ljava/lang/String;
MD: d/call ()Ljava/lang/Object; net/minecraft/crash/CrashReport$2/call ()Ljava/lang/Object;
MD: dc/a ()J net/minecraft/util/StatCollector/func_150827_a ()J

View File

@ -0,0 +1,18 @@
--- ../src-base/minecraft/net/minecraft/block/Block.java
+++ ../src-work/minecraft/net/minecraft/block/Block.java
@@ -1,5 +1,6 @@
package net.minecraft.block;
+import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.Iterator;
@@ -32,7 +33,7 @@
public class Block
{
- public static final RegistryNamespaced field_149771_c = new RegistryNamespacedDefaultedByKey("air");
+ public static final RegistryNamespaced field_149771_c = GameData.blockRegistry;
private CreativeTabs field_149772_a;
protected String field_149768_d;
public static final Block.SoundType field_149769_e = new Block.SoundType("stone", 1.0F, 1.0F);

View File

@ -44,7 +44,7 @@
Display.setVSyncEnabled(this.field_71474_y.field_74352_v);
}
@@ -915,9 +924,11 @@
@@ -916,9 +925,11 @@
if (!this.field_71454_w)
{
@ -56,7 +56,7 @@
}
GL11.glFlush();
@@ -1490,11 +1501,15 @@
@@ -1491,11 +1502,15 @@
public void func_71407_l()
{
@ -72,7 +72,7 @@
this.field_71424_I.func_76320_a("gui");
if (!this.field_71445_n)
@@ -1977,6 +1992,8 @@
@@ -1978,6 +1993,8 @@
this.field_71453_ak.func_74428_b();
}

View File

@ -0,0 +1,20 @@
--- ../src-base/minecraft/net/minecraft/item/Item.java
+++ ../src-work/minecraft/net/minecraft/item/Item.java
@@ -3,6 +3,8 @@
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
+
+import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashSet;
@@ -46,7 +48,7 @@
public class Item
{
- public static final RegistryNamespaced field_150901_e = new RegistryNamespaced();
+ public static final RegistryNamespaced field_150901_e = GameData.itemRegistry;
protected static final UUID field_111210_e = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF");
private CreativeTabs field_77701_a;
protected static Random field_77697_d = new Random();

View File

@ -16,6 +16,7 @@ import java.io.File;
import java.security.cert.Certificate;
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Level;
import net.minecraft.nbt.NBTBase;
@ -25,10 +26,14 @@ import net.minecraft.world.storage.SaveHandler;
import net.minecraft.world.storage.WorldInfo;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import cpw.mods.fml.client.FMLFileResourcePack;
import cpw.mods.fml.client.FMLFolderResourcePack;
import cpw.mods.fml.common.asm.FMLSanityChecker;
import cpw.mods.fml.common.event.FMLConstructionEvent;
import cpw.mods.fml.common.network.NetworkCheckHandler;
import cpw.mods.fml.common.network.NetworkModHolder;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.relauncher.Side;
@ -60,9 +65,21 @@ public class FMLContainer extends DummyModContainer implements WorldAccessContai
@Override
public boolean registerBus(EventBus bus, LoadController controller)
{
bus.register(this);
return true;
}
@Subscribe
public void modConstruction(FMLConstructionEvent evt)
{
NetworkRegistry.INSTANCE.register(this, this.getClass(), null, evt.getASMHarvestedData());
}
@NetworkCheckHandler
public boolean checkModLists(Map<String,String> modList, Side side)
{
return Loader.instance().checkRemoteModList(modList,side);
}
@Override
public NBTTagCompound getDataForWriting(SaveHandler handler, WorldInfo info)
{
@ -76,8 +93,7 @@ public class FMLContainer extends DummyModContainer implements WorldAccessContai
list.func_74742_a(mod);
}
fmlData.func_74782_a("ModList", list);
NBTTagList itemList = new NBTTagList();
GameData.writeItemData(itemList);
NBTTagCompound nbt = GameData.buildItemDataList();
fmlData.func_74782_a("ModItemData", itemList);
return fmlData;
}

View File

@ -17,6 +17,7 @@ import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@ -40,6 +41,7 @@ import com.google.common.collect.Multisets;
import com.google.common.collect.Ordering;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
import com.google.common.collect.TreeMultimap;
import cpw.mods.fml.common.LoaderState.ModState;
@ -56,6 +58,7 @@ import cpw.mods.fml.common.toposort.TopologicalSort;
import cpw.mods.fml.common.versioning.ArtifactVersion;
import cpw.mods.fml.common.versioning.VersionParser;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
import cpw.mods.fml.relauncher.Side;
/**
* The loader class performs the actual loading of the mod code from disk.
@ -817,4 +820,24 @@ public class Loader
{
return getIndexedModList().get(modId).getCustomModProperties();
}
boolean checkRemoteModList(Map<String, String> modList, Side side)
{
Set<String> remoteModIds = modList.keySet();
Set<String> localModIds = namedMods.keySet();
Set<String> difference = Sets.newLinkedHashSet(Sets.difference(localModIds, remoteModIds));
for (Iterator<String> iterator = difference.iterator(); iterator.hasNext();)
{
String missingRemotely = iterator.next();
ModState modState = modController.getModState(namedMods.get(missingRemotely));
if (modState == ModState.DISABLED)
{
iterator.remove();
}
}
FMLLog.info("Attempting connection with missing mods %s at %s", difference, side);
return true;
}
}

View File

@ -1,5 +1,12 @@
package cpw.mods.fml.common.network;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NetworkCheckHandler
{

View File

@ -18,6 +18,8 @@ import java.util.Set;
import java.util.logging.Level;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.SetMultimap;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.ModContainer;
@ -34,11 +36,18 @@ public class NetworkModHolder
public abstract boolean check(Map<String,String> remoteVersions, Side side);
}
private class IgnoredChecker extends NetworkChecker {
@Override
public boolean check(Map<String, String> remoteVersions, Side side)
{
return true;
}
}
private class DefaultNetworkChecker extends NetworkChecker {
@Override
public boolean check(Map<String,String> remoteVersions, Side side)
{
return acceptVersion(remoteVersions.get(container.getModId()));
return remoteVersions.containsKey(container.getModId()) ? acceptVersion(remoteVersions.get(container.getModId())) : false;
}
}
@ -78,7 +87,16 @@ public class NetworkModHolder
public NetworkModHolder(ModContainer container, Class<?> modClass, String acceptableVersionRange, ASMDataTable table)
{
this(container);
Set<ASMData> versionCheckHandlers = table.getAnnotationsFor(container).get(NetworkCheckHandler.class.getName());
SetMultimap<String, ASMData> annotationTable = table.getAnnotationsFor(container);
Set<ASMData> versionCheckHandlers;
if (annotationTable != null)
{
versionCheckHandlers = annotationTable.get(NetworkCheckHandler.class.getName());
}
else
{
versionCheckHandlers = ImmutableSet.of();
}
String networkCheckHandlerMethod = null;
for (ASMData vch : versionCheckHandlers)
{
@ -89,6 +107,24 @@ public class NetworkModHolder
break;
}
}
if (versionCheckHandlers.isEmpty())
{
for (Method m : modClass.getMethods())
{
if (m.isAnnotationPresent(NetworkCheckHandler.class))
{
if (m.getParameterTypes().length == 2 && m.getParameterTypes()[0].equals(Map.class) && m.getParameterTypes()[1].equals(Side.class))
{
this.checkHandler = m;
break;
}
else
{
FMLLog.severe("Found unexpected method signature for annotation NetworkCheckHandler");
}
}
}
}
if (networkCheckHandlerMethod != null)
{
try
@ -104,22 +140,23 @@ public class NetworkModHolder
FMLLog.log(Level.WARNING, e, "The declared version check handler method %s on network mod id %s is not accessible", networkCheckHandlerMethod, container.getModId());
}
}
if (this.checkHandler == null)
if (this.checkHandler != null)
{
String versionBounds = acceptableVersionRange;
if (!Strings.isNullOrEmpty(versionBounds))
this.checker = new MethodNetworkChecker();
} else if (!Strings.isNullOrEmpty(acceptableVersionRange) && !acceptableVersionRange.equals('*'))
{
try
{
try
{
this.acceptableRange = VersionRange.createFromVersionSpec(versionBounds);
}
catch (InvalidVersionSpecificationException e)
{
FMLLog.log(Level.WARNING, e, "Invalid bounded range %s specified for network mod id %s", versionBounds, container.getModId());
}
this.acceptableRange = VersionRange.createFromVersionSpec(acceptableVersionRange);
}
catch (InvalidVersionSpecificationException e)
{
FMLLog.log(Level.WARNING, e, "Invalid bounded range %s specified for network mod id %s", acceptableVersionRange, container.getModId());
}
this.checker = new DefaultNetworkChecker();
} else {
this.checker = new IgnoredChecker();
}
FMLLog.finest("Testing mod %s to verify it accepts its own version in a remote connection", container.getModId());
boolean acceptsSelf = acceptVersion(container.getVersion());
if (!acceptsSelf)
@ -130,8 +167,6 @@ public class NetworkModHolder
{
FMLLog.finest("The mod %s accepts its own version (%s)", container.getModId(), container.getVersion());
}
this.checker = checkHandler == null ? new DefaultNetworkChecker() : new MethodNetworkChecker();
}
public boolean acceptVersion(String version)

View File

@ -35,6 +35,7 @@ import com.google.common.collect.Maps;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.discovery.ASMDataTable;
import cpw.mods.fml.common.network.handshake.NetworkDispatcher;
@ -59,6 +60,7 @@ public enum NetworkRegistry
public static final AttributeKey<Side> CHANNEL_SOURCE = new AttributeKey<Side>("fml:channelSource");
public static final AttributeKey<OutboundTarget> FML_MESSAGETARGET = new AttributeKey<OutboundTarget>("fml:outboundTarget");
public static final AttributeKey<Object> FML_MESSAGETARGETARGS = new AttributeKey<Object>("fml:outboundTargetArgs");
public static final AttributeKey<ModContainer> MOD_CONTAINER = new AttributeKey<ModContainer>("fml:modContainer");
public static final byte FML_PROTOCOL = 1;
@ -204,10 +206,15 @@ public enum NetworkRegistry
static class FMLEmbeddedChannel extends EmbeddedChannel {
public FMLEmbeddedChannel(String channelName, Side source, ChannelHandler... handlers)
{
this(Loader.instance().activeModContainer(), channelName, source, handlers);
}
public FMLEmbeddedChannel(ModContainer container, String channelName, Side source, ChannelHandler... handlers)
{
super(handlers);
this.attr(FML_CHANNEL).set(channelName);
this.attr(CHANNEL_SOURCE).set(source);
this.attr(MOD_CONTAINER).setIfAbsent(container);
this.pipeline().addFirst(new FMLOutboundHandler());
}
}
@ -255,6 +262,23 @@ public enum NetworkRegistry
return result;
}
public EnumMap<Side,EmbeddedChannel> newChannel(ModContainer container, String name, ChannelHandler... handlers)
{
if (channels.containsKey(name) || name.startsWith("MC|") || name.startsWith("\u0001") || (name.startsWith("FML") && !("FML".equals(container.getModId()))))
{
throw new RuntimeException("That channel is already registered");
}
EnumMap<Side,EmbeddedChannel> result = Maps.newEnumMap(Side.class);
for (Side side : Side.values())
{
FMLEmbeddedChannel channel = new FMLEmbeddedChannel(container, name, side, handlers);
channels.get(side).put(name,channel);
result.put(side, channel);
}
return result;
}
public EmbeddedChannel getChannel(String name, Side source)
{
return channels.get(source).get(name);

View File

@ -276,14 +276,6 @@ public class NetworkDispatcher extends SimpleChannelInboundHandler<Packet> {
}
}
/**
* Callback from the networkmanager
* @param fmlProxyPacket
*/
public void dispatch(FMLProxyPacket fmlProxyPacket)
{
}
public void sendProxy(FMLProxyPacket msg)
{
if (side == Side.CLIENT)

View File

@ -0,0 +1,184 @@
package cpw.mods.fml.common.registry;
import gnu.trove.map.hash.TIntIntHashMap;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map;
import java.util.Map.Entry;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import net.minecraft.util.ObjectIntIdentityMap;
import net.minecraft.util.RegistryNamespaced;
public class FMLControlledNamespacedRegistry<I> extends RegistryNamespaced {
public class FMLObjectIntIdentityMap extends ObjectIntIdentityMap {
private TIntIntHashMap oldMap;
private TIntIntHashMap newMap;
private ArrayList<Integer> oldIndex;
private ArrayList<Integer> newIndex;
public FMLObjectIntIdentityMap()
{
}
boolean containsID(int id)
{
return func_148744_b(id);
}
Object get(int id)
{
return func_148745_a(id);
}
int get(Object obj)
{
return func_148747_b(obj);
}
@SuppressWarnings("unchecked")
void beginSwap()
{
oldMap = field_148749_a;
newMap = new TIntIntHashMap(256, 0.5F, -1, -1);
oldIndex = (ArrayList<Integer>) field_148748_b;
newIndex = new ArrayList<Integer>(oldIndex.size());
}
void completeSwap()
{
field_148749_a = newMap;
field_148748_b = newIndex;
oldIndex = newIndex = null;
oldMap = newMap = null;
}
void putNew(int id, Object item)
{
field_148749_a = newMap;
field_148748_b = newIndex;
super.func_148746_a(item, id);
field_148749_a = oldMap;
field_148748_b = oldIndex;
}
}
private final Class<I> superType;
private String optionalDefaultName;
private I optionalDefaultObject;
private BiMap<String,Integer> namedIds = HashBiMap.create();
private BitSet availabilityMap;
private int maxId;
private int minId;
public FMLControlledNamespacedRegistry(String optionalDefault, int maxIdValue, int minIdValue, Class<I> type)
{
this.superType = type;
this.optionalDefaultName = optionalDefault;
this.availabilityMap = new BitSet(maxIdValue);
this.maxId = maxIdValue;
this.minId = minIdValue;
this.field_148759_a = new FMLObjectIntIdentityMap();
}
@Override
public void func_148756_a(int id, String name, Object thing)
{
add(id, name, superType.cast(thing));
}
public void add(int id, String name, I thing)
{
if (name.equals(optionalDefaultName))
{
this.optionalDefaultObject = thing;
}
int idToUse = id;
if (availabilityMap.get(id))
{
idToUse = availabilityMap.nextClearBit(minId);
}
if (idToUse >= maxId)
{
throw new RuntimeException(String.format("Invalid id %s - not accepted",id));
}
namedIds.put(name,idToUse);
ModContainer mc = Loader.instance().activeModContainer();
String prefix = mc.getModId();
name = prefix + ":"+ name;
super.func_148756_a(idToUse, name, thing);
}
@Override
public I func_82594_a(String name)
{
I object = superType.cast(super.func_82594_a(name));
return object == null ? this.optionalDefaultObject : object;
}
@Override
public I func_148754_a(int id)
{
I object = superType.cast(super.func_148754_a(id));
return object == null ? this.optionalDefaultObject : object;
}
void injectIdMapping(BiMap<String,Integer> values)
{
MapDifference<String, Integer> difference = Maps.difference(values, namedIds);
for (Entry<String, Integer> missing : difference.entriesOnlyOnLeft().entrySet())
{
String name = missing.getKey();
Integer id = missing.getValue();
String[] parts = name.split(":");
ModContainer modContainer = GameData.findModOwner(parts[0]);
}
@SuppressWarnings("unchecked")
BiMap<String,Object> nameMap = (BiMap<String,Object>) field_82596_a;
FMLObjectIntIdentityMap idMap = (FMLObjectIntIdentityMap) field_148759_a;
idMap.beginSwap();
for (Entry<String, Integer> entry : values.entrySet())
{
String name = entry.getKey();
Integer id = entry.getValue();
Object item = nameMap.get(name);
idMap.putNew(id, item);
}
idMap.completeSwap();
}
public I get(int id)
{
return func_148754_a(id);
}
public I get(String name)
{
return func_82594_a(name);
}
public int getId(I thing)
{
return func_148757_b(thing);
}
public void serializeInto(Map<String, Integer> idMapping)
{
for (Entry<String, Integer> id: namedIds.entrySet())
{
idMapping.put(id.getKey(), id.getValue());
}
}
}

View File

@ -53,48 +53,10 @@ import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;
public class GameData {
private static Map<Integer, ItemData> idMap = Maps.newHashMap();
private static CountDownLatch serverValidationLatch;
private static CountDownLatch clientValidationLatch;
private static MapDifference<Integer, ItemData> difference;
private static boolean shouldContinue = true;
private static boolean isSaveValid = true;
private static ImmutableTable<String, String, Integer> modObjectTable;
private static Table<String, String, ItemStack> customItemStacks = HashBasedTable.create();
private static Map<String,String> ignoredMods;
private static boolean validated;
private static boolean isModIgnoredForIdValidation(String modId)
{
if (ignoredMods == null)
{
File f = new File(Loader.instance().getConfigDir(),"fmlIDChecking.properties");
if (f.exists())
{
Properties p = new Properties();
try
{
p.load(new FileInputStream(f));
ignoredMods = Maps.fromProperties(p);
if (ignoredMods.size()>0)
{
FMLLog.log("fml.ItemTracker", Level.WARNING, "Using non-empty ignored mods configuration file %s", ignoredMods.keySet());
}
}
catch (Exception e)
{
Throwables.propagateIfPossible(e);
FMLLog.log("fml.ItemTracker", Level.SEVERE, e, "Failed to read ignored ID checker mods properties file");
ignoredMods = ImmutableMap.<String, String>of();
}
}
else
{
ignoredMods = ImmutableMap.<String, String>of();
}
}
return ignoredMods.containsKey(modId);
}
public static final FMLControlledNamespacedRegistry<Block> blockRegistry = new FMLControlledNamespacedRegistry<Block>("air", 4095, 0, Block.class);
public static final FMLControlledNamespacedRegistry<Item> itemRegistry = new FMLControlledNamespacedRegistry<Item>(null, 32000, 4096, Item.class);
public static void newItemAdded(Item item)
{
@ -193,47 +155,12 @@ public class GameData {
}
}
public static void writeItemData(NBTTagList itemList)
public static Map<String,Integer> buildItemDataList()
{
for (ItemData dat : idMap.values())
{
itemList.func_74742_a(dat.toNBT());
}
}
/**
* Initialize the server gate
* @param gateCount the countdown amount. If it's 2 we're on the client and the client and server
* will wait at the latch. 1 is a server and the server will proceed
*/
public static void initializeServerGate(int gateCount)
{
serverValidationLatch = new CountDownLatch(gateCount - 1);
clientValidationLatch = new CountDownLatch(gateCount - 1);
}
public static MapDifference<Integer, ItemData> gateWorldLoadingForValidation()
{
try
{
serverValidationLatch.await();
if (!isSaveValid)
{
return difference;
}
}
catch (InterruptedException e)
{
}
difference = null;
return null;
}
public static void releaseGate(boolean carryOn)
{
shouldContinue = carryOn;
clientValidationLatch.countDown();
Map<String,Integer> idMapping = Maps.newHashMap();
blockRegistry.serializeInto(idMapping);
itemRegistry.serializeInto(idMapping);
return idMapping;
}
public static Set<ItemData> buildWorldItemData(NBTTagList modList)
@ -241,71 +168,21 @@ public class GameData {
Set<ItemData> worldSaveItems = Sets.newHashSet();
for (int i = 0; i < modList.func_74745_c(); i++)
{
NBTTagCompound mod = (NBTTagCompound) modList.func_74743_b(i);
NBTTagCompound mod = modList.func_150305_b(i);
ItemData dat = new ItemData(mod);
worldSaveItems.add(dat);
}
return worldSaveItems;
}
static void setName(Item item, String name, String modId)
{
int id = item.field_77779_bT;
ItemData itemData = idMap.get(id);
itemData.setName(name,modId);
}
public static void buildModObjectTable()
{
if (modObjectTable != null)
{
throw new IllegalStateException("Illegal call to buildModObjectTable!");
}
Map<Integer, Cell<String, String, Integer>> map = Maps.transformValues(idMap, new Function<ItemData,Cell<String,String,Integer>>() {
public Cell<String,String,Integer> apply(ItemData data)
{
if ("Minecraft".equals(data.getModId()) || !data.isOveridden())
{
return null;
}
return Tables.immutableCell(data.getModId(), data.getItemType(), data.getItemId());
}
});
Builder<String, String, Integer> tBuilder = ImmutableTable.builder();
for (Cell<String, String, Integer> c : map.values())
{
if (c!=null)
{
tBuilder.put(c);
}
}
modObjectTable = tBuilder.build();
}
static Item findItem(String modId, String name)
{
if (modObjectTable == null || !modObjectTable.contains(modId, name))
{
return null;
}
return Item.field_77698_e[modObjectTable.get(modId, name)];
return (Item) itemRegistry.func_82594_a(modId + ":" + name);
}
static Block findBlock(String modId, String name)
{
if (modObjectTable == null)
{
return null;
}
Integer blockId = modObjectTable.get(modId, name);
if (blockId == null || blockId >= Block.field_71973_m.length)
{
return null;
}
return Block.field_71973_m[blockId];
return (Block) blockRegistry.func_82594_a(modId+":"+name);
}
static ItemStack findItemStack(String modId, String name)
@ -366,25 +243,27 @@ public class GameData {
static UniqueIdentifier getUniqueName(Block block)
{
if (block == null) return null;
ItemData itemData = idMap.get(block.field_71990_ca);
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
String name = blockRegistry.func_148750_c(block);
UniqueIdentifier ui = new UniqueIdentifier(name);
if (customItemStacks.contains(ui.modId, ui.name))
{
return null;
}
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
return ui;
}
static UniqueIdentifier getUniqueName(Item item)
{
if (item == null) return null;
ItemData itemData = idMap.get(item.field_77779_bT);
if (itemData == null || !itemData.isOveridden() || customItemStacks.contains(itemData.getModId(), itemData.getItemType()))
String name = itemRegistry.func_148750_c(item);
UniqueIdentifier ui = new UniqueIdentifier(name);
if (customItemStacks.contains(ui.modId, ui.name))
{
return null;
}
return new UniqueIdentifier(itemData.getModId(), itemData.getItemType());
return ui;
}
public static void validateRegistry()
@ -406,4 +285,40 @@ public class GameData {
}
*/ validated = true;
}
private static Map<UniqueIdentifier, ModContainer> customOwners = Maps.newHashMap();
static Block registerBlockAndItem(Item item, Block block, String name, String modId)
{
}
static Item registerItem(Item item, String name, String modId)
{
ModContainer mc = Loader.instance().activeModContainer();
if (modId != null)
{
customOwners.put(new UniqueIdentifier(modId, name), mc);
}
itemRegistry.add(0, name, item);
int itemId = itemRegistry.getId(item);
blockRegistry.clearItem(itemId);
return item;
}
static Block registerBlock(Block block, String name, String modId)
{
ModContainer mc = Loader.instance().activeModContainer();
if (modId != null)
{
customOwners.put(new UniqueIdentifier(modId, name), mc);
}
blockRegistry.func_148756_a(0, name, block);
return block;
}
public static ModContainer findModOwner(String string)
{
UniqueIdentifier ui = new UniqueIdentifier(string);
if (customOwners.containsKey(ui))
{
return customOwners.get(ui);
}
return Loader.instance().getIndexedModList().get(ui.modId);
}
}

View File

@ -35,6 +35,7 @@ import net.minecraft.world.WorldType;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import com.google.common.base.Objects;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
@ -54,12 +55,10 @@ import cpw.mods.fml.common.ObfuscationReflectionHelper;
public class GameRegistry
{
private static Multimap<ModContainer, BlockProxy> blockRegistry = ArrayListMultimap.create();
private static Set<IWorldGenerator> worldGenerators = Sets.newHashSet();
private static List<IFuelHandler> fuelHandlers = Lists.newArrayList();
private static List<ICraftingHandler> craftingHandlers = Lists.newArrayList();
private static List<IPickupNotifier> pickupHandlers = Lists.newArrayList();
private static List<IPlayerTracker> playerTrackers = Lists.newArrayList();
/**
* Register a world generator - something that inserts new block types into the world
@ -114,19 +113,19 @@ public class GameRegistry
* @param modId An optional modId that will "own" this block - generally used by multi-mod systems
* where one mod should "own" all the blocks of all the mods, null defaults to the active mod
*/
public static void registerItem(net.minecraft.item.Item item, String name, String modId)
public static Item registerItem(Item item, String name, String modId)
{
GameData.setName(item, name, modId);
return GameData.registerItem(item, name, modId);
}
/**
* Register a block with the specified mod specific name : overrides the standard type based name
* Register a block with the specified mod specific name
* @param block The block to register
* @param name The mod-unique name to register it as
*/
public static void registerBlock(net.minecraft.block.Block block, String name)
public static Block registerBlock(Block block, String name)
{
registerBlock(block, ItemBlock.class, name);
return registerBlock(block, ItemBlock.class, name);
}
/**
* Register a block with the world, with the specified item class and block name
@ -134,9 +133,9 @@ public class GameRegistry
* @param itemclass The item type to register with it
* @param name The mod-unique name to register it with
*/
public static void registerBlock(net.minecraft.block.Block block, Class<? extends ItemBlock> itemclass, String name)
public static Block registerBlock(Block block, Class<? extends ItemBlock> itemclass, String name)
{
registerBlock(block, itemclass, name, null);
return registerBlock(block, itemclass, name, null);
}
/**
* Register a block with the world, with the specified item class, block name and owning modId
@ -145,7 +144,7 @@ public class GameRegistry
* @param name The mod-unique name to register it with
* @param modId The modId that will own the block name. null defaults to the active modId
*/
public static void registerBlock(net.minecraft.block.Block block, Class<? extends ItemBlock> itemclass, String name, String modId)
public static Block registerBlock(Block block, Class<? extends ItemBlock> itemclass, String name, String modId)
{
if (Loader.instance().isInState(LoaderState.CONSTRUCTING))
{
@ -155,16 +154,17 @@ public class GameRegistry
{
assert block != null : "registerBlock: block cannot be null";
assert itemclass != null : "registerBlock: itemclass cannot be null";
Constructor<? extends ItemBlock> itemCtor = itemclass.getConstructor(net.minecraft.block.Block.class);
Constructor<? extends ItemBlock> itemCtor = itemclass.getConstructor(Block.class);
Item i = itemCtor.newInstance(block);
GameData.registerBlock(block, name, modId);
GameRegistry.registerItem(i, name, modId);
return block;
}
catch (Exception e)
{
FMLLog.log(Level.SEVERE, e, "Caught an exception during block registration");
throw new LoaderException(e);
}
blockRegistry.put(Loader.instance().activeModContainer(), (BlockProxy) block);
}
public static void addRecipe(ItemStack output, Object... params)
@ -347,7 +347,7 @@ public class GameRegistry
* @param name The name of the block itself
* @return The block or null if not found
*/
public static net.minecraft.block.Block findBlock(String modId, String name)
public static Block findBlock(String modId, String name)
{
return GameData.findBlock(modId, name);
}
@ -358,7 +358,7 @@ public class GameRegistry
* @param name The name of the item itself
* @return The item or null if not found
*/
public static net.minecraft.item.Item findItem(String modId, String name)
public static Item findItem(String modId, String name)
{
return GameData.findItem(modId, name);
}
@ -408,6 +408,22 @@ public class GameRegistry
this.modId = modId;
this.name = name;
}
public UniqueIdentifier(String string)
{
String[] parts = string.split(":");
this.modId = parts[0];
this.name = parts[1];
}
@Override
public boolean equals(Object obj)
{
if (obj == null) return false;
if (obj.getClass() != this.getClass()) return false;
final UniqueIdentifier other = (UniqueIdentifier) obj;
return Objects.equal(modId, other.modId) && Objects.equal(name, other.name);
}
}
/**
@ -421,7 +437,7 @@ public class GameRegistry
* @param block to lookup
* @return a {@link UniqueIdentifier} for the block or null
*/
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.block.Block block)
public static UniqueIdentifier findUniqueIdentifierFor(Block block)
{
return GameData.getUniqueName(block);
}
@ -436,7 +452,7 @@ public class GameRegistry
* @param item to lookup
* @return a {@link UniqueIdentifier} for the item or null
*/
public static UniqueIdentifier findUniqueIdentifierFor(net.minecraft.item.Item item)
public static UniqueIdentifier findUniqueIdentifierFor(Item item)
{
return GameData.getUniqueName(item);
}

View File

@ -74,3 +74,7 @@ public net.minecraft.entity.passive.EntityVillager.field_70960_bC
# Minecraft
#public atv.D #FD:Minecraft/field_71425_J #running
public net.minecraft.client.Minecraft.field_71446_o # textureManager
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