More network stuff, partially done id syncing.
This commit is contained in:
parent
bead2dab97
commit
eff9a3cedc
|
@ -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=|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue