mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 09:05:17 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a67e147dc |
No files matched your search
@@ -1 +0,0 @@
|
||||
asdfsnb -a -v "svn"+
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
@@ -1,231 +0,0 @@
|
||||
net/minecraft/client/Minecraft.func_6257_q()V=org/lwjgl/LWJGLException
|
||||
net/minecraft/client/Minecraft.func_6271_a()V=org/lwjgl/LWJGLException
|
||||
net/minecraft/src/ChunkLoader.func_812_a(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/ChunkLoader.func_813_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/ChunkLoader.func_815_b(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_1138_a(Ljava/io/InputStream;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_1139_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_1141_a(Ljava/io/DataInput;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_1143_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/OutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_35620_b(Lnet/minecraft/src/NBTTagCompound;Ljava/io/File;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_35621_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/File;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_35622_a(Ljava/io/File;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_40591_a(Lnet/minecraft/src/NBTTagCompound;)[B=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_40592_a([B)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21125_a(Ljava/util/List;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21127_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21128_a(Ljava/io/DataOutputStream;Lnet/minecraft/src/WatchableObject;)V=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21131_a(Ljava/io/DataInputStream;)Ljava/util/List;=java/io/IOException
|
||||
net/minecraft/src/GuiMultiplayer.func_35328_b(Lnet/minecraft/src/ServerNBTStorage;)V=java/io/IOException
|
||||
net/minecraft/src/GuiMultiplayer.func_35336_a(Lnet/minecraft/src/GuiMultiplayer;Lnet/minecraft/src/ServerNBTStorage;)V=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_812_a(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_813_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_815_b(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/J_CompactJsonFormatter.func_27328_a(Lnet/minecraft/src/J_JsonNode;Ljava/io/Writer;)V=java/io/IOException
|
||||
net/minecraft/src/J_CompactJsonFormatter.func_27329_a(Lnet/minecraft/src/J_JsonRootNode;Ljava/io/Writer;)V=java/io/IOException
|
||||
net/minecraft/src/J_JdomParser.func_27366_a(Ljava/io/Reader;)Lnet/minecraft/src/J_JsonRootNode;=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_JdomParser.func_27367_a(Ljava/lang/String;)Lnet/minecraft/src/J_JsonRootNode;=net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_PositionTrackingPushbackReader.func_27333_c()I=java/io/IOException
|
||||
net/minecraft/src/J_PositionTrackingPushbackReader.func_27334_a(C)V=java/io/IOException
|
||||
net/minecraft/src/J_PositionTrackingPushbackReader.func_27336_b([C)I=java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27448_l(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)I=java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27449_c(Lnet/minecraft/src/J_PositionTrackingPushbackReader;Lnet/minecraft/src/J_JsonListener;)V=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27450_k(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)I=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27451_b(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27452_i(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27453_b(Lnet/minecraft/src/J_PositionTrackingPushbackReader;Lnet/minecraft/src/J_JsonListener;)V=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27454_g(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27455_a(Lnet/minecraft/src/J_PositionTrackingPushbackReader;Lnet/minecraft/src/J_JsonListener;)V=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27456_e(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27457_j(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)C=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27458_d(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)C=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27459_a(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27460_c(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)C=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27461_h(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27462_f(Lnet/minecraft/src/J_PositionTrackingPushbackReader;)Ljava/lang/String;=java/io/IOException,net/minecraft/src/J_InvalidSyntaxException
|
||||
net/minecraft/src/J_SajParser.func_27463_a(Ljava/io/Reader;Lnet/minecraft/src/J_JsonListener;)V=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/J_SajParser.func_27464_d(Lnet/minecraft/src/J_PositionTrackingPushbackReader;Lnet/minecraft/src/J_JsonListener;)V=net/minecraft/src/J_InvalidSyntaxException,java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_734_b(Ljava/io/DataInput;)Lnet/minecraft/src/NBTBase;=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_738_a(Lnet/minecraft/src/NBTBase;Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByte.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByte.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByteArray.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByteArray.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagCompound.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagCompound.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagDouble.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagDouble.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagEnd.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagEnd.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagFloat.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagFloat.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagInt.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagInt.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagList.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagList.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagLong.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagLong.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagShort.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagShort.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagString.func_735_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagString.func_736_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NetClientHandler.<init>(Lnet/minecraft/client/Minecraft;Ljava/lang/String;I)V=java/net/UnknownHostException,java/io/IOException
|
||||
net/minecraft/src/NetworkManager.<init>(Ljava/net/Socket;Ljava/lang/String;Lnet/minecraft/src/NetHandler;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_27048_a(Ljava/io/DataInputStream;I)Ljava/lang/String;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_27049_a(Ljava/lang/String;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_324_b(Ljava/io/DataInputStream;Z)Lnet/minecraft/src/Packet;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_328_a(Lnet/minecraft/src/Packet;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40186_c(Ljava/io/DataInputStream;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40187_b(Ljava/io/DataInputStream;)Lnet/minecraft/src/ItemStack;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40188_a(Lnet/minecraft/src/ItemStack;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40189_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet0KeepAlive.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet0KeepAlive.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet100OpenWindow.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet100OpenWindow.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet101CloseWindow.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet101CloseWindow.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet102WindowClick.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet102WindowClick.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet103SetSlot.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet103SetSlot.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet104WindowItems.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet104WindowItems.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet105UpdateProgressbar.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet105UpdateProgressbar.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet106Transaction.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet106Transaction.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet107CreativeSetSlot.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet107CreativeSetSlot.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet108EnchantItem.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet108EnchantItem.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet10Flying.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet10Flying.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet11PlayerPosition.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet11PlayerPosition.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet12PlayerLook.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet12PlayerLook.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet130UpdateSign.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet130UpdateSign.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet131MapData.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet131MapData.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet13PlayerLookMove.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet13PlayerLookMove.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet14BlockDig.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet14BlockDig.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet15Place.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet15Place.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet16BlockItemSwitch.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet16BlockItemSwitch.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet17Sleep.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet17Sleep.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet18Animation.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet18Animation.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet19EntityAction.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet19EntityAction.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet1Login.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet1Login.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet200Statistic.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet200Statistic.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet201PlayerInfo.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet201PlayerInfo.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet20NamedEntitySpawn.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet20NamedEntitySpawn.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet21PickupSpawn.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet21PickupSpawn.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet22Collect.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet22Collect.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet23VehicleSpawn.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet23VehicleSpawn.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet24MobSpawn.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet24MobSpawn.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet254ServerPing.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet254ServerPing.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet255KickDisconnect.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet255KickDisconnect.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet25EntityPainting.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet25EntityPainting.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet26EntityExpOrb.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet26EntityExpOrb.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet27Position.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet27Position.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet28EntityVelocity.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet28EntityVelocity.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet29DestroyEntity.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet29DestroyEntity.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet2Handshake.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet2Handshake.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet30Entity.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet30Entity.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet31RelEntityMove.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet31RelEntityMove.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet32EntityLook.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet32EntityLook.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet33RelEntityMoveLook.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet33RelEntityMoveLook.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet34EntityTeleport.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet34EntityTeleport.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet38EntityStatus.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet38EntityStatus.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet39AttachEntity.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet39AttachEntity.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet3Chat.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet3Chat.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet40EntityMetadata.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet40EntityMetadata.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet41EntityEffect.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet41EntityEffect.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet42RemoveEntityEffect.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet42RemoveEntityEffect.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet43Experience.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet43Experience.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet4UpdateTime.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet4UpdateTime.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet50PreChunk.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet50PreChunk.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet51MapChunk.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet51MapChunk.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet52MultiBlockChange.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet52MultiBlockChange.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet53BlockChange.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet53BlockChange.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet54PlayNoteBlock.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet54PlayNoteBlock.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet5PlayerInventory.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet5PlayerInventory.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet60Explosion.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet60Explosion.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet61DoorChange.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet61DoorChange.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet6SpawnPosition.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet6SpawnPosition.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet70Bed.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet70Bed.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet71Weather.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet71Weather.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet7UseEntity.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet7UseEntity.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet8UpdateHealth.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet8UpdateHealth.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet9Respawn.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet9Respawn.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet250CustomPayload.func_322_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet250CustomPayload.func_327_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22196_b()V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22198_a(III)V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22200_a(I[BI)V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22208_b(III)V=java/io/IOException
|
||||
net/minecraft/src/RenderEngine.func_6526_a(Ljava/io/InputStream;)Ljava/awt/image/BufferedImage;=java/io/IOException
|
||||
net/minecraft/src/StatsSyncher.func_27410_a(Ljava/util/Map;Ljava/io/File;Ljava/io/File;Ljava/io/File;)V=java/io/IOException
|
||||
net/minecraft/src/StatsSyncher.func_27412_a(Lnet/minecraft/src/StatsSyncher;Ljava/util/Map;Ljava/io/File;Ljava/io/File;Ljava/io/File;)V=java/io/IOException
|
||||
net/minecraft/src/TexturePackBase.func_6485_a(Lnet/minecraft/client/Minecraft;)V=java/io/IOException
|
||||
net/minecraft/src/TexturePackCustom.func_6485_a(Lnet/minecraft/client/Minecraft;)V=java/io/IOException
|
||||
net/minecraft/src/ThreadDownloadResources.func_1212_a(Ljava/net/URL;Ljava/io/File;J)V=java/io/IOException
|
||||
net/minecraft/src/ThreadedChunkLoader.func_40551_a(Lnet/minecraft/src/ThreadedChunkLoaderPending;)V=java/io/IOException
|
||||
net/minecraft/src/ThreadedChunkLoader.func_813_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/ThreadedFileIOBase.func_40566_a()V=java/lang/InterruptedException
|
||||
net/minecraft/src/StringTranslate.func_44025_a(Ljava/util/Properties;Ljava/lang/String;)V=java/io/IOException
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,141 +0,0 @@
|
||||
[DEFAULT]
|
||||
DirTemp = temp
|
||||
DirSrc = src
|
||||
DirLogs = logs
|
||||
DirBin = bin
|
||||
DirJars = jars
|
||||
DirReobf = reobf
|
||||
DirConf = conf
|
||||
DirRuntime = runtime
|
||||
DirLib = lib
|
||||
DirFFOut = temp/ffout
|
||||
DirBinOut = temp/bin
|
||||
DirModSrc = modsrc
|
||||
DirEclipse = eclipse
|
||||
|
||||
[CSV]
|
||||
Classes = %(DirConf)s/classes.csv
|
||||
Methods = %(DirConf)s/methods.csv
|
||||
Fields = %(DirConf)s/fields.csv
|
||||
|
||||
[SRGS]
|
||||
Client = %(DirTemp)s/client_rg.srg
|
||||
Server = %(DirTemp)s/server_rg.srg
|
||||
|
||||
[JAR]
|
||||
DirNatives = %(DirJars)s/bin/natives
|
||||
Client = %(DirJars)s/bin/minecraft.jar
|
||||
Server = %(DirJars)s/minecraft_server.jar
|
||||
MD5Client = e92302d2acdba7c97e0d8df1e10d2006
|
||||
MD5Server = b0f4fb91f9723104adf35944bbf3d3cf
|
||||
|
||||
[RETROGUARD]
|
||||
Location = %(DirRuntime)s/bin/retroguard.jar
|
||||
RetroConf = %(DirTemp)s/retroguard.cfg
|
||||
RetroReobConf = %(DirTemp)s/retroguard_ro.cfg
|
||||
ClientConf = %(DirTemp)s/client_rg.cfg
|
||||
ServerConf = %(DirTemp)s/server_rg.cfg
|
||||
ClientReobConf = %(DirTemp)s/client_ro.cfg
|
||||
ServerReobConf = %(DirTemp)s/server_ro.cfg
|
||||
ClientOut = %(DirTemp)s/minecraft_rg.jar
|
||||
ServerOut = %(DirTemp)s/minecraft_server_rg.jar
|
||||
ClientLog = %(DirLogs)s/client_rg.log
|
||||
ServerLog = %(DirLogs)s/server_rg.log
|
||||
ClientDeobLog = %(DirLogs)s/client_deob.log
|
||||
ServerDeobLog = %(DirLogs)s/server_deob.log
|
||||
|
||||
[EXCEPTOR]
|
||||
XClientCfg = %(DirConf)s/client.exc
|
||||
XServerCfg = %(DirConf)s/server.exc
|
||||
XClientOut = %(DirTemp)s/minecraft_exc.jar
|
||||
XServerOut = %(DirTemp)s/minecraft_server_exc.jar
|
||||
XClientLog = %(DirLogs)s/client_exc.log
|
||||
XServerLog = %(DirLogs)s/server_exc.log
|
||||
|
||||
[DECOMPILE]
|
||||
FFClientOut = %(DirFFOut)s/client
|
||||
FFServerOut = %(DirFFOut)s/server
|
||||
FFClientSrc = %(DirFFOut)s/minecraft_exc.jar
|
||||
FFServerSrc = %(DirFFOut)s/minecraft_server_exc.jar
|
||||
FFSource = net
|
||||
|
||||
[OUTPUT]
|
||||
BinClient = %(DirBinOut)s/minecraft
|
||||
BinServer = %(DirBinOut)s/minecraft_server
|
||||
SrcClient = %(DirSrc)s/minecraft
|
||||
SrcServer = %(DirSrc)s/minecraft_server
|
||||
TestClient = net/minecraft/client/Minecraft
|
||||
TestServer = net/minecraft/server/MinecraftServer
|
||||
|
||||
[PATCHES]
|
||||
PatchClient = %(DirConf)s/patches/minecraft.patch
|
||||
PatchServer = %(DirConf)s/patches/minecraft_server.patch
|
||||
PatchTemp = %(DirTemp)s/temp.patch
|
||||
FFPatchClient = %(DirConf)s/patches/minecraft_ff.patch
|
||||
FFPatchServer = %(DirConf)s/patches/minecraft_server_ff.patch
|
||||
PatchClient_osx = %(DirConf)s/patches/minecraft_osx.patch
|
||||
PatchServer_osx = %(DirConf)s/patches/minecraft_server_osx.patch
|
||||
|
||||
[RECOMPILE]
|
||||
BinClient = %(DirBin)s/minecraft
|
||||
BinServer = %(DirBin)s/minecraft_server
|
||||
ClassPathClient = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/bin/minecraft.jar,%(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
|
||||
ClassPathServer = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/minecraft_server.jar
|
||||
ClientFixes = %(DirConf)s/patches
|
||||
|
||||
[REOBF]
|
||||
MD5Client = %(DirTemp)s/client.md5
|
||||
MD5Server = %(DirTemp)s/server.md5
|
||||
MD5PreReobfClient = %(DirTemp)s/client_reobf.md5
|
||||
MD5PreReobfServer = %(DirTemp)s/server_reobf.md5
|
||||
ObfSRGClient = %(DirTemp)s/client_ro.srg
|
||||
ObfSRGServer = %(DirTemp)s/server_ro.srg
|
||||
RecompJarClient = %(DirTemp)s/client_recomp.jar
|
||||
RecompJarServer = %(DirTemp)s/server_recomp.jar
|
||||
ObfJarClient = %(DirTemp)s/client_reobf.jar
|
||||
ObfJarServer = %(DirTemp)s/server_reobf.jar
|
||||
ReobfDirClient = %(DirReobf)s/minecraft
|
||||
ReobfDirServer = %(DirReobf)s/minecraft_server
|
||||
ClientRoLog = %(DirLogs)s/client_ro.log
|
||||
ServerRoLog = %(DirLogs)s/server_ro.log
|
||||
ReobfClientLog = %(DirLogs)s/client_reob.log
|
||||
ReobfServerLog = %(DirLogs)s/server_reob.log
|
||||
FixSound = ga
|
||||
FixStart = Start
|
||||
NullPkg = net/minecraft/src
|
||||
IgnorePkg = paulscode,com/jcraft,isom,ibxm,de/matthiasmann/twl,org/xmlpull,javax/xml
|
||||
|
||||
[GETMODSOURCE]
|
||||
OutSRCClient = %(DirModSrc)s/minecraft
|
||||
OutSRCServer = %(DirModSrc)s/minecraft_server
|
||||
|
||||
[MCP]
|
||||
LogFile = %(DirLogs)s/mcp.log
|
||||
LogFileErr = %(DirLogs)s/mcperr.log
|
||||
UpdateUrl = http://mcp.ocean-labs.de/files/mcprolling_{version}/
|
||||
IgnoreUpdate = %(DirBin)s,%(DirLib)s,%(DirLogs)s,%(DirModSrc)s,%(DirReobf)s,%(DirSrc)s,%(DirTemp)s,%(DirEclipse)s/Client/bin,%(DirEclipse)s/Server/bin,%(DirJars)s/world,%(DirJars)s/saves,%(DirJars)s/resources
|
||||
|
||||
[COMMANDS]
|
||||
Patcher_win = %(DirRuntime)s/bin/applydiff.exe
|
||||
Patcher_linux = patch
|
||||
Patcher_osx = patch
|
||||
Jad_win = %(DirRuntime)s/bin/jad.exe
|
||||
Jad_linux = wine %(DirRuntime)s/bin/jad.exe
|
||||
Jad_osx = %(DirRuntime)s/bin/jad-osx
|
||||
AStyle_win = %(DirRuntime)s/bin/astyle.exe
|
||||
AStyle_linux = wine %(DirRuntime)s/bin/astyle.exe
|
||||
AStyle_osx = %(DirRuntime)s/bin/astyle-osx
|
||||
JadRetro = %(DirRuntime)s/bin/jadretro.jar
|
||||
Fernflower = %(DirRuntime)s/bin/fernflower.jar
|
||||
Exceptor = %(DirRuntime)s/bin/exceptor.jar
|
||||
CmdPatch = %s -p1 -u -i {patchfile} -d {srcdir}
|
||||
CmdJad = %s -b -d {outdir} -dead -o -r -s .java -stat -ff {classes}
|
||||
CmdAStyle = %s -A1s4CSKYm1M1pHjcnqz2 {classes}
|
||||
CmdRG = %s -cp "{classpath}" RetroGuard -searge {conffile}
|
||||
CmdRGReobf = %s -cp "{classpath}" RetroGuard -notch {conffile}
|
||||
CmdJadretro = %s -jar %s {targetdir}
|
||||
CmdFernflower = %s -jar %s -rbr=0 -dgs=1 -asc=1 -log=WARN {jarin} {jarout}
|
||||
CmdExceptor = %s -jar %s {input} {output} {conf} {log}
|
||||
CmdRecomp = %s -g -source 1.6 -target 1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
|
||||
CmdStartSrv = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" net.minecraft.server.MinecraftServer
|
||||
CmdStartClt = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" -Djava.library.path={natives} Start
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,27 +0,0 @@
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class Start
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
// set new minecraft data folder to prevent it from using the .minecraft folder
|
||||
// this makes it a portable version
|
||||
Field f = Minecraft.class.getDeclaredField("minecraftDir");
|
||||
Field.setAccessible(new Field[] { f }, true);
|
||||
f.set(null, new File("."));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
||||
// start minecraft game application
|
||||
Minecraft.main(args);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
// this is needed for the sound engine to work with deobfuscated sourcecode without crashing
|
||||
|
||||
public class ga
|
||||
{
|
||||
public static int c(double d)
|
||||
{
|
||||
int i = (int)d;
|
||||
return d >= (double)i ? i : i - 1;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,109 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net\minecraft\client\Minecraft.java
|
||||
--- minecraft\net\minecraft\client\Minecraft.java Fri Jan 13 17:44:46 2012
|
||||
+++ minecraft_patched\net\minecraft\client\Minecraft.java Fri Jan 13 17:35:06 2012
|
||||
@@ -1609,11 +1609,13 @@
|
||||
|
||||
this.field_6324_e.func_600_a(var6.field_22395_a + var10, 64, var6.field_22396_c + var8);
|
||||
if(!this.field_6327_b.func_35643_e()) {
|
||||
+/*
|
||||
while(true) {
|
||||
if(this.field_6324_e.func_6465_g()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
+*/
|
||||
}
|
||||
}
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\CodecMus.java minecraft_patched\net\minecraft\src\CodecMus.java
|
||||
--- minecraft\net\minecraft\src\CodecMus.java Fri Jan 13 17:44:20 2012
|
||||
+++ minecraft_patched\net\minecraft\src\CodecMus.java Fri Jan 13 17:35:06 2012
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import net.minecraft.src.MusInputStream;
|
||||
import paulscode.sound.codecs.CodecJOrbis;
|
||||
@@ -7,6 +8,11 @@
|
||||
public class CodecMus extends CodecJOrbis {
|
||||
|
||||
protected InputStream openInputStream() {
|
||||
- return new MusInputStream(this, this.url, this.urlConnection.getInputStream());
|
||||
+ try {
|
||||
+ return new MusInputStream(this, this.url, this.urlConnection.getInputStream());
|
||||
+ }
|
||||
+ catch (IOException e) {
|
||||
+ return null;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
diff -r -U 3 minecraft\net\minecraft\src\ItemMap.java minecraft_patched\net\minecraft\src\ItemMap.java
|
||||
--- minecraft\net\minecraft\src\ItemMap.java Fri Jan 13 17:43:42 2012
|
||||
+++ minecraft_patched\net\minecraft\src\ItemMap.java Fri Jan 13 17:35:06 2012
|
||||
@@ -19,7 +19,6 @@
|
||||
}
|
||||
|
||||
public static MapData func_28013_a(short var0, World var1) {
|
||||
- "map_" + var0;
|
||||
MapData var3 = (MapData)var1.func_28103_a(MapData.class, "map_" + var0);
|
||||
if(var3 == null) {
|
||||
int var4 = var1.func_28101_b("map");
|
||||
@@ -32,7 +31,6 @@
|
||||
}
|
||||
|
||||
public MapData func_28012_a(ItemStack var1, World var2) {
|
||||
- "map_" + var1.func_21181_i();
|
||||
MapData var4 = (MapData)var2.func_28103_a(MapData.class, "map_" + var1.func_21181_i());
|
||||
if(var4 == null) {
|
||||
var1.func_28156_b(var2.func_28101_b("map"));
|
||||
diff -r -U 3 minecraft\net\minecraft\src\MusInputStream.java minecraft_patched\net\minecraft\src\MusInputStream.java
|
||||
--- minecraft\net\minecraft\src\MusInputStream.java Fri Jan 13 17:42:36 2012
|
||||
+++ minecraft_patched\net\minecraft\src\MusInputStream.java Fri Jan 13 17:35:06 2012
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import net.minecraft.src.CodecMus;
|
||||
@@ -28,7 +29,12 @@
|
||||
}
|
||||
|
||||
public int read(byte[] var1, int var2, int var3) {
|
||||
- var3 = this.field_1515_d.read(var1, var2, var3);
|
||||
+ try {
|
||||
+ var3 = this.field_1515_d.read(var1, var2, var3);
|
||||
+ }
|
||||
+ catch (IOException e) {
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
byte var5 = var1[var2 + var4] = (byte)(var1[var2 + var4] ^ this.field_1516_c >> 8);
|
||||
diff -r -U 3 minecraft\net\minecraft\src\RenderGlobal.java minecraft_patched\net\minecraft\src\RenderGlobal.java
|
||||
--- minecraft\net\minecraft\src\RenderGlobal.java Fri Jan 13 17:43:24 2012
|
||||
+++ minecraft_patched\net\minecraft\src\RenderGlobal.java Fri Jan 13 17:35:06 2012
|
||||
@@ -1466,7 +1466,7 @@
|
||||
double var15 = this.field_1439_t.field_22009_h.field_611_ak - var2;
|
||||
double var17 = this.field_1439_t.field_22009_h.field_610_al - var4;
|
||||
double var19 = this.field_1439_t.field_22009_h.field_609_am - var6;
|
||||
- Object var21 = null;
|
||||
+ EntityFX var21 = null;
|
||||
if(var1.equals("hugeexplosion")) {
|
||||
this.field_1439_t.field_6321_h.func_1192_a(var21 = new EntityHugeExplodeFX(this.field_1448_k, var2, var4, var6, var8, var10, var12));
|
||||
} else if(var1.equals("largeexplode")) {
|
||||
diff -r -U 3 minecraft\net\minecraft\src\ThreadedFileIOBase.java minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java
|
||||
--- minecraft\net\minecraft\src\ThreadedFileIOBase.java Fri Jan 13 17:43:00 2012
|
||||
+++ minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java Fri Jan 13 17:35:06 2012
|
||||
@@ -21,7 +21,9 @@
|
||||
}
|
||||
|
||||
public void run() {
|
||||
- this.func_40568_b();
|
||||
+ while (true) {
|
||||
+ this.func_40568_b();
|
||||
+ }
|
||||
}
|
||||
|
||||
private void func_40568_b() {
|
||||
@@ -1,54 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\src\EntityMinecart.java minecraft_patched\net\minecraft\src\EntityMinecart.java
|
||||
--- minecraft\net\minecraft\src\EntityMinecart.java Sat Jan 14 16:05:10 2012
|
||||
+++ minecraft_patched\net\minecraft\src\EntityMinecart.java Sat Jan 14 16:07:41 2012
|
||||
@@ -811,7 +811,7 @@
|
||||
double d = entity.field_611_ak - field_611_ak;
|
||||
double d1 = entity.field_609_am - field_609_am;
|
||||
double d2 = d * d + d1 * d1;
|
||||
- if(d2 >= 9.9999997473787516E-05D)
|
||||
+ if(d2 >= 9.9999997473787516E-005D)
|
||||
{
|
||||
d2 = MathHelper.func_1109_a(d2);
|
||||
d /= d2;
|
||||
diff -r -U 3 minecraft\net\minecraft\src\RenderGlobal.java minecraft_patched\net\minecraft\src\RenderGlobal.java
|
||||
--- minecraft\net\minecraft\src\RenderGlobal.java Sat Jan 14 16:05:10 2012
|
||||
+++ minecraft_patched\net\minecraft\src\RenderGlobal.java Sat Jan 14 16:07:41 2012
|
||||
@@ -968,7 +968,7 @@
|
||||
f3 = f7;
|
||||
f4 = f8;
|
||||
}
|
||||
- float f6 = 0.0004882812F;
|
||||
+ float f6 = 0.0004882813F;
|
||||
double d = (float)field_1435_x + f;
|
||||
double d1 = field_1439_t.field_22009_h.field_9285_at + (field_1439_t.field_22009_h.field_611_ak - field_1439_t.field_22009_h.field_9285_at) * (double)f + d * 0.029999999329447746D;
|
||||
double d2 = field_1439_t.field_22009_h.field_9283_av + (field_1439_t.field_22009_h.field_609_am - field_1439_t.field_22009_h.field_9283_av) * (double)f;
|
||||
diff -r -U 3 minecraft\net\minecraft\src\Vec3D.java minecraft_patched\net\minecraft\src\Vec3D.java
|
||||
--- minecraft\net\minecraft\src\Vec3D.java Sat Jan 14 16:05:10 2012
|
||||
+++ minecraft_patched\net\minecraft\src\Vec3D.java Sat Jan 14 16:07:41 2012
|
||||
@@ -137,7 +137,7 @@
|
||||
double d1 = vec3d.field_1776_a - field_1776_a;
|
||||
double d2 = vec3d.field_1775_b - field_1775_b;
|
||||
double d3 = vec3d.field_1779_c - field_1779_c;
|
||||
- if(d1 * d1 < 1.0000000116860974E-07D)
|
||||
+ if(d1 * d1 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -156,7 +156,7 @@
|
||||
double d1 = vec3d.field_1776_a - field_1776_a;
|
||||
double d2 = vec3d.field_1775_b - field_1775_b;
|
||||
double d3 = vec3d.field_1779_c - field_1779_c;
|
||||
- if(d2 * d2 < 1.0000000116860974E-07D)
|
||||
+ if(d2 * d2 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -175,7 +175,7 @@
|
||||
double d1 = vec3d.field_1776_a - field_1776_a;
|
||||
double d2 = vec3d.field_1775_b - field_1775_b;
|
||||
double d3 = vec3d.field_1779_c - field_1779_c;
|
||||
- if(d3 * d3 < 1.0000000116860974E-07D)
|
||||
+ if(d3 * d3 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,26 +0,0 @@
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\ItemMap.java minecraft_server_patched\net\minecraft\src\ItemMap.java
|
||||
--- minecraft_server\net\minecraft\src\ItemMap.java Fri Jan 13 17:46:22 2012
|
||||
+++ minecraft_server_patched\net\minecraft\src\ItemMap.java Fri Jan 13 17:37:00 2012
|
||||
@@ -22,7 +22,6 @@
|
||||
}
|
||||
|
||||
public MapData func_28023_a(ItemStack var1, World var2) {
|
||||
- "map_" + var1.func_21125_h();
|
||||
MapData var4 = (MapData)var2.func_28103_a(MapData.class, "map_" + var1.func_21125_h());
|
||||
if(var4 == null) {
|
||||
var1.func_28145_b(var2.func_28104_b("map"));
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\RConThreadClient.java minecraft_server_patched\net\minecraft\src\RConThreadClient.java
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\ThreadedFileIOBase.java minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java
|
||||
--- minecraft_server\net\minecraft\src\ThreadedFileIOBase.java Fri Jan 13 17:45:20 2012
|
||||
+++ minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java Fri Jan 13 17:37:00 2012
|
||||
@@ -21,7 +21,9 @@
|
||||
}
|
||||
|
||||
public void run() {
|
||||
- this.func_40509_b();
|
||||
+ while (true) {
|
||||
+ this.func_40509_b();
|
||||
+ }
|
||||
}
|
||||
|
||||
private void func_40509_b() {
|
||||
@@ -1,60 +0,0 @@
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\EntityMinecart.java minecraft_server_patched\net\minecraft\src\EntityMinecart.java
|
||||
--- minecraft_server\net\minecraft\src\EntityMinecart.java Sat Jan 14 16:05:25 2012
|
||||
+++ minecraft_server_patched\net\minecraft\src\EntityMinecart.java Sat Jan 14 16:07:50 2012
|
||||
@@ -751,7 +751,7 @@
|
||||
double d = entity.field_322_l - field_322_l;
|
||||
double d1 = entity.field_320_n - field_320_n;
|
||||
double d2 = d * d + d1 * d1;
|
||||
- if(d2 >= 9.9999997473787516E-05D)
|
||||
+ if(d2 >= 9.9999997473787516E-005D)
|
||||
{
|
||||
d2 = MathHelper.func_583_a(d2);
|
||||
d /= d2;
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\GuiStatsComponent.java minecraft_server_patched\net\minecraft\src\GuiStatsComponent.java
|
||||
--- minecraft_server\net\minecraft\src\GuiStatsComponent.java Sat Jan 14 16:05:25 2012
|
||||
+++ minecraft_server_patched\net\minecraft\src\GuiStatsComponent.java Sat Jan 14 16:07:50 2012
|
||||
@@ -43,12 +43,12 @@
|
||||
System.gc();
|
||||
field_768_c[0] = (new StringBuilder()).append("Memory use: ").append(l / 1024L / 1024L).append(" mb (").append((Runtime.getRuntime().freeMemory() * 100L) / Runtime.getRuntime().maxMemory()).append("% free)").toString();
|
||||
field_768_c[1] = (new StringBuilder()).append("Threads: ").append(NetworkManager.field_1052_b).append(" + ").append(NetworkManager.field_1051_c).toString();
|
||||
- field_768_c[2] = (new StringBuilder()).append("Avg tick: ").append(field_40573_a.format(func_40571_a(field_40572_e.field_40027_f) * 9.9999999999999995E-07D)).append(" ms").toString();
|
||||
+ field_768_c[2] = (new StringBuilder()).append("Avg tick: ").append(field_40573_a.format(func_40571_a(field_40572_e.field_40027_f) * 9.9999999999999995E-007D)).append(" ms").toString();
|
||||
i = 0;
|
||||
_L3:
|
||||
if(i >= field_40572_e.field_6034_e.length) goto _L2; else goto _L1
|
||||
_L1:
|
||||
- field_768_c[3 + i] = (new StringBuilder()).append("Lvl ").append(i).append(" tick: ").append(field_40573_a.format(func_40571_a(field_40572_e.field_40028_g[i]) * 9.9999999999999995E-07D)).append(" ms").toString();
|
||||
+ field_768_c[3 + i] = (new StringBuilder()).append("Lvl ").append(i).append(" tick: ").append(field_40573_a.format(func_40571_a(field_40572_e.field_40028_g[i]) * 9.9999999999999995E-007D)).append(" ms").toString();
|
||||
if(field_40572_e.field_6034_e[i] == null || field_40572_e.field_6034_e[i].field_20911_y == null)
|
||||
{
|
||||
continue; /* Loop/switch isn't completed */
|
||||
diff -r -U 3 minecraft_server\net\minecraft\src\Vec3D.java minecraft_server_patched\net\minecraft\src\Vec3D.java
|
||||
--- minecraft_server\net\minecraft\src\Vec3D.java Sat Jan 14 16:05:25 2012
|
||||
+++ minecraft_server_patched\net\minecraft\src\Vec3D.java Sat Jan 14 16:07:50 2012
|
||||
@@ -121,7 +121,7 @@
|
||||
double d1 = vec3d.field_1055_a - field_1055_a;
|
||||
double d2 = vec3d.field_1054_b - field_1054_b;
|
||||
double d3 = vec3d.field_1058_c - field_1058_c;
|
||||
- if(d1 * d1 < 1.0000000116860974E-07D)
|
||||
+ if(d1 * d1 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -140,7 +140,7 @@
|
||||
double d1 = vec3d.field_1055_a - field_1055_a;
|
||||
double d2 = vec3d.field_1054_b - field_1054_b;
|
||||
double d3 = vec3d.field_1058_c - field_1058_c;
|
||||
- if(d2 * d2 < 1.0000000116860974E-07D)
|
||||
+ if(d2 * d2 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -159,7 +159,7 @@
|
||||
double d1 = vec3d.field_1055_a - field_1055_a;
|
||||
double d2 = vec3d.field_1054_b - field_1054_b;
|
||||
double d3 = vec3d.field_1058_c - field_1058_c;
|
||||
- if(d3 * d3 < 1.0000000116860974E-07D)
|
||||
+ if(d3 * d3 < 1.0000000116860974E-007D)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
Now it is YOURCRAFT!
|
||||
@@ -1,205 +0,0 @@
|
||||
net/minecraft/server/MinecraftServer.func_6008_d()Z=java/net/UnknownHostException
|
||||
net/minecraft/src/ChunkLoader.func_4104_b(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/ChunkLoader.func_659_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/ChunkLoader.func_662_a(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_40515_a([B)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_40516_a(Lnet/minecraft/src/NBTTagCompound;)[B=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_769_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/OutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_770_a(Ljava/io/InputStream;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_771_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/CompressedStreamTools.func_774_a(Ljava/io/DataInput;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21149_a(Ljava/io/DataInputStream;)Ljava/util/List;=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21151_a(Ljava/util/List;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21152_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/DataWatcher.func_21154_a(Ljava/io/DataOutputStream;Lnet/minecraft/src/WatchableObject;)V=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_4104_b(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_659_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/IChunkLoader.func_662_a(Lnet/minecraft/src/World;Lnet/minecraft/src/Chunk;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_380_a(Lnet/minecraft/src/NBTBase;Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTBase.func_383_b(Ljava/io/DataInput;)Lnet/minecraft/src/NBTBase;=java/io/IOException
|
||||
net/minecraft/src/NBTTagByte.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByte.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByteArray.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagByteArray.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagCompound.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagCompound.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagDouble.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagDouble.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagEnd.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagEnd.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagFloat.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagFloat.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagInt.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagInt.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagList.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagList.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagLong.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagLong.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagShort.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagShort.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagString.func_381_a(Ljava/io/DataOutput;)V=java/io/IOException
|
||||
net/minecraft/src/NBTTagString.func_382_a(Ljava/io/DataInput;)V=java/io/IOException
|
||||
net/minecraft/src/NetLoginHandler.<init>(Lnet/minecraft/server/MinecraftServer;Ljava/net/Socket;Ljava/lang/String;)V=java/io/IOException
|
||||
net/minecraft/src/NetworkListenThread.<init>(Lnet/minecraft/server/MinecraftServer;Ljava/net/InetAddress;I)V=java/io/IOException
|
||||
net/minecraft/src/NetworkManager.<init>(Ljava/net/Socket;Ljava/lang/String;Lnet/minecraft/src/NetHandler;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_27037_a(Ljava/io/DataInputStream;I)Ljava/lang/String;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_27038_a(Ljava/lang/String;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40259_c(Ljava/io/DataInputStream;)Lnet/minecraft/src/NBTTagCompound;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40260_a(Lnet/minecraft/src/NBTTagCompound;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40261_a(Lnet/minecraft/src/ItemStack;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_40262_b(Ljava/io/DataInputStream;)Lnet/minecraft/src/ItemStack;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_65_b(Ljava/io/DataInputStream;Z)Lnet/minecraft/src/Packet;=java/io/IOException
|
||||
net/minecraft/src/Packet.func_66_a(Lnet/minecraft/src/Packet;Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet0KeepAlive.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet0KeepAlive.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet100OpenWindow.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet100OpenWindow.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet101CloseWindow.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet101CloseWindow.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet102WindowClick.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet102WindowClick.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet103SetSlot.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet103SetSlot.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet104WindowItems.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet104WindowItems.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet105UpdateProgressbar.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet105UpdateProgressbar.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet106Transaction.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet106Transaction.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet107CreativeSetSlot.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet107CreativeSetSlot.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet108EnchantItem.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet108EnchantItem.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet10Flying.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet10Flying.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet11PlayerPosition.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet11PlayerPosition.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet12PlayerLook.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet12PlayerLook.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet130UpdateSign.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet130UpdateSign.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet131MapData.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet131MapData.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet13PlayerLookMove.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet13PlayerLookMove.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet14BlockDig.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet14BlockDig.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet15Place.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet15Place.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet16BlockItemSwitch.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet16BlockItemSwitch.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet17Sleep.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet17Sleep.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet18Animation.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet18Animation.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet19EntityAction.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet19EntityAction.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet1Login.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet1Login.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet200Statistic.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet200Statistic.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet201PlayerInfo.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet201PlayerInfo.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet20NamedEntitySpawn.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet20NamedEntitySpawn.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet21PickupSpawn.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet21PickupSpawn.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet22Collect.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet22Collect.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet23VehicleSpawn.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet23VehicleSpawn.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet24MobSpawn.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet24MobSpawn.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet255KickDisconnect.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet255KickDisconnect.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet25EntityPainting.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet25EntityPainting.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet26EntityExpOrb.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet26EntityExpOrb.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet27Position.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet27Position.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet28EntityVelocity.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet28EntityVelocity.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet29DestroyEntity.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet29DestroyEntity.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet2Handshake.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet2Handshake.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet30Entity.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet30Entity.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet31RelEntityMove.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet31RelEntityMove.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet32EntityLook.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet32EntityLook.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet33RelEntityMoveLook.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet33RelEntityMoveLook.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet34EntityTeleport.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet34EntityTeleport.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet38EntityStatus.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet38EntityStatus.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet39AttachEntity.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet39AttachEntity.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet3Chat.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet3Chat.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet40EntityMetadata.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet40EntityMetadata.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet41EntityEffect.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet41EntityEffect.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet42RemoveEntityEffect.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet42RemoveEntityEffect.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet43Experience.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet43Experience.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet4UpdateTime.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet4UpdateTime.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet50PreChunk.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet50PreChunk.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet51MapChunk.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet51MapChunk.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet52MultiBlockChange.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet52MultiBlockChange.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet53BlockChange.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet53BlockChange.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet54PlayNoteBlock.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet54PlayNoteBlock.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet5PlayerInventory.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet5PlayerInventory.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet60Explosion.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet60Explosion.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet61DoorChange.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet61DoorChange.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet6SpawnPosition.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet6SpawnPosition.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet70Bed.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet70Bed.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet71Weather.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet71Weather.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet7UseEntity.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet7UseEntity.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet8UpdateHealth.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet8UpdateHealth.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet9Respawn.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet9Respawn.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet250CustomPayload.func_68_a(Ljava/io/DataOutputStream;)V=java/io/IOException
|
||||
net/minecraft/src/Packet250CustomPayload.func_70_a(Ljava/io/DataInputStream;)V=java/io/IOException
|
||||
net/minecraft/src/RConOutputStream.func_40393_a(I)V=java/io/IOException
|
||||
net/minecraft/src/RConOutputStream.func_40394_a(S)V=java/io/IOException
|
||||
net/minecraft/src/RConOutputStream.func_40396_a([B)V=java/io/IOException
|
||||
net/minecraft/src/RConOutputStream.func_40397_a(Ljava/lang/String;)V=java/io/IOException
|
||||
net/minecraft/src/RConThreadClient.func_40453_a(IILjava/lang/String;)V=java/io/IOException
|
||||
net/minecraft/src/RConThreadClient.func_40454_e()V=java/io/IOException
|
||||
net/minecraft/src/RConThreadClient.func_40455_a(ILjava/lang/String;)V=java/io/IOException
|
||||
net/minecraft/src/RConThreadQuery.func_40428_a([BLjava/net/DatagramPacket;)V=java/net/SocketException,java/io/IOException
|
||||
net/minecraft/src/RConThreadQuery.func_40430_a(Ljava/net/DatagramPacket;)Z=java/io/IOException
|
||||
net/minecraft/src/RConThreadQuery.func_40431_d(Ljava/net/DatagramPacket;)V=java/net/SocketException,java/io/IOException
|
||||
net/minecraft/src/RConThreadQuery.func_40434_b(Ljava/net/DatagramPacket;)[B=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22126_b()V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22128_a(III)V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22130_a(I[BI)V=java/io/IOException
|
||||
net/minecraft/src/RegionFile.func_22138_b(III)V=java/io/IOException
|
||||
net/minecraft/src/ThreadedChunkLoader.func_40325_a(Lnet/minecraft/src/ThreadedChunkLoaderPending;)V=java/io/IOException
|
||||
net/minecraft/src/ThreadedChunkLoader.func_659_a(Lnet/minecraft/src/World;II)Lnet/minecraft/src/Chunk;=java/io/IOException
|
||||
net/minecraft/src/ThreadedFileIOBase.func_40508_a()V=java/lang/InterruptedException
|
||||
net/minecraft/src/StringTranslate.func_44011_a(Ljava/util/Properties;Ljava/lang/String;)V=java/io/IOException
|
||||
@@ -1,4 +0,0 @@
|
||||
[VERSION]
|
||||
MCPVersion = 5.6
|
||||
ClientVersion = 1.1
|
||||
ServerVersion = 1.1
|
||||
@@ -1,25 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry including="*.java" kind="src" path="start"/>
|
||||
<classpathentry kind="src" path="forge_common"/>
|
||||
<classpathentry kind="src" path="minecraft"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="lib" path="../../jars/bin/jinput.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="forge_client/jars/bin/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="../../jars/bin/lwjgl.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="forge_client/jars/bin/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="../../jars/bin/lwjgl_util.jar">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="forge_client/jars/bin/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="../../jars/bin/jinput.jar"/>
|
||||
<classpathentry kind="lib" path="../../jars/bin/lwjgl.jar"/>
|
||||
<classpathentry kind="lib" path="../../jars/bin/lwjgl_util.jar"/>
|
||||
<classpathentry kind="lib" path="../../jars/bin/minecraft.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -20,64 +20,10 @@
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-1-PROJECT_LOC/forge_common</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>jars</name>
|
||||
<type>2</type>
|
||||
<locationURI>MCP_LOC/jars</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>minecraft</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-1-WORKSPACE_LOC/src_work/minecraft</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>start</name>
|
||||
<type>2</type>
|
||||
<locationURI>MCP_LOC/conf/patches</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1324024223159</id>
|
||||
<name>jars</name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-bin</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1324024223163</id>
|
||||
<name>jars</name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-*</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1324022795404</id>
|
||||
<name>start</name>
|
||||
<type>5</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-*.java</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1324024144075</id>
|
||||
<name>jars/bin</name>
|
||||
<type>5</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-*.jar</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
<variableList>
|
||||
<variable>
|
||||
<name>MCP_LOC</name>
|
||||
<value>$%7BPARENT-1-WORKSPACE_LOC%7D</value>
|
||||
</variable>
|
||||
</variableList>
|
||||
</projectDescription>
|
||||
@@ -30,16 +30,7 @@ public class ForgeHooksClient {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void onRenderWorldLast(RenderGlobal rg, float f) {
|
||||
for (IRenderWorldLastHandler handler : renderWorldLastHandlers) {
|
||||
handler.onRenderWorldLast(rg,f);
|
||||
}
|
||||
}
|
||||
|
||||
static LinkedList<IHighlightHandler> highlightHandlers =
|
||||
new LinkedList<IHighlightHandler>();
|
||||
static LinkedList<IRenderWorldLastHandler> renderWorldLastHandlers =
|
||||
new LinkedList<IRenderWorldLastHandler>();
|
||||
static LinkedList<IHighlightHandler> highlightHandlers = new LinkedList<IHighlightHandler>();
|
||||
|
||||
public static boolean canRenderInPass(Block block, int pass) {
|
||||
if(block instanceof IMultipassRender) {
|
||||
@@ -50,54 +41,25 @@ public class ForgeHooksClient {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static class TesKey implements Comparable<TesKey> {
|
||||
public TesKey(int t, int s) { tex=t; sub=s; }
|
||||
public int compareTo(TesKey key) {
|
||||
if(sub==key.sub) return tex-key.tex;
|
||||
return sub-key.sub;
|
||||
}
|
||||
public boolean equals(Object obj) {
|
||||
return compareTo((TesKey)obj)==0;
|
||||
}
|
||||
public int hashCode() {
|
||||
int c1=Integer.valueOf(tex).hashCode();
|
||||
int c2=Integer.valueOf(sub).hashCode();
|
||||
return c1+31*c2;
|
||||
}
|
||||
public int tex, sub;
|
||||
}
|
||||
|
||||
static HashMap<TesKey,Tessellator> tessellators=
|
||||
new HashMap<TesKey,Tessellator>();
|
||||
static HashMap<String,Integer> textures=new HashMap<String,Integer>();
|
||||
static HashMap tessellators=new HashMap();
|
||||
static HashMap textures=new HashMap();
|
||||
static boolean inWorld=false;
|
||||
static TreeSet<TesKey> renderTextures=new TreeSet<TesKey>();
|
||||
static HashSet renderTextureTest=new HashSet();
|
||||
static ArrayList<List> renderTextureList=new ArrayList();
|
||||
static Tessellator defaultTessellator=null;
|
||||
static HashMap<TesKey,IRenderContextHandler> renderHandlers=new
|
||||
HashMap<TesKey,IRenderContextHandler>();
|
||||
|
||||
protected static void registerRenderContextHandler(String tex, int sub,
|
||||
IRenderContextHandler handler) {
|
||||
Integer n;
|
||||
n=textures.get(tex);
|
||||
if(n==null) {
|
||||
n=ModLoader.getMinecraftInstance().renderEngine
|
||||
.getTexture(tex);
|
||||
textures.put(tex,n);
|
||||
}
|
||||
renderHandlers.put(new TesKey(n,sub),handler);
|
||||
}
|
||||
|
||||
protected static void bindTessellator(int tex, int sub) {
|
||||
TesKey key=new TesKey(tex,sub);
|
||||
List key=Arrays.asList(tex,sub);
|
||||
Tessellator t;
|
||||
t=tessellators.get(key);
|
||||
if(t==null) {
|
||||
if(!tessellators.containsKey(key)) {
|
||||
t=new Tessellator();
|
||||
tessellators.put(key,t);
|
||||
} else {
|
||||
t=(Tessellator)tessellators.get(key);
|
||||
}
|
||||
if(inWorld && !renderTextures.contains(key)) {
|
||||
renderTextures.add(key);
|
||||
if(inWorld && !renderTextureTest.contains(key)) {
|
||||
renderTextureTest.add(key);
|
||||
renderTextureList.add(key);
|
||||
t.startDrawingQuads();
|
||||
t.setTranslationD(defaultTessellator.xOffset,
|
||||
defaultTessellator.yOffset,
|
||||
@@ -106,30 +68,22 @@ public class ForgeHooksClient {
|
||||
Tessellator.instance=t;
|
||||
}
|
||||
|
||||
static IRenderContextHandler unbindContext=null;
|
||||
protected static void bindTexture(String name, int sub) {
|
||||
Integer n;
|
||||
n=textures.get(name);
|
||||
if(n==null) {
|
||||
int n;
|
||||
if(!textures.containsKey(name)) {
|
||||
n=ModLoader.getMinecraftInstance().renderEngine
|
||||
.getTexture(name);
|
||||
textures.put(name,n);
|
||||
} else {
|
||||
n=(Integer)textures.get(name);
|
||||
}
|
||||
if(!inWorld) {
|
||||
if(unbindContext!=null) {
|
||||
unbindContext.afterRenderContext();
|
||||
unbindContext=null;
|
||||
}
|
||||
if(Tessellator.instance.isDrawing) {
|
||||
int mode=Tessellator.instance.drawMode;
|
||||
Tessellator.instance.draw();
|
||||
Tessellator.instance.startDrawing(mode);
|
||||
}
|
||||
GL11.glBindTexture(3553 /* GL_TEXTURE_2D */,n);
|
||||
unbindContext=renderHandlers.get(new TesKey(n,sub));
|
||||
if(unbindContext!=null) {
|
||||
unbindContext.beforeRenderContext();
|
||||
}
|
||||
return;
|
||||
}
|
||||
bindTessellator(n,sub);
|
||||
@@ -142,10 +96,6 @@ public class ForgeHooksClient {
|
||||
if(Tessellator.instance.isDrawing) {
|
||||
int mode=Tessellator.instance.drawMode;
|
||||
Tessellator.instance.draw();
|
||||
if(unbindContext!=null) {
|
||||
unbindContext.afterRenderContext();
|
||||
unbindContext=null;
|
||||
}
|
||||
Tessellator.instance.startDrawing(mode);
|
||||
}
|
||||
GL11.glBindTexture(3553 /* GL_TEXTURE_2D */, ModLoader
|
||||
@@ -163,31 +113,25 @@ public class ForgeHooksClient {
|
||||
GL11.glBindTexture(3553 /* GL_TEXTURE_2D */, ModLoader
|
||||
.getMinecraftInstance().renderEngine
|
||||
.getTexture("/terrain.png"));
|
||||
renderTextures.clear();
|
||||
renderTextureTest.clear();
|
||||
renderTextureList.clear();
|
||||
inWorld=true;
|
||||
}
|
||||
|
||||
public static void afterRenderPass(int pass) {
|
||||
renderPass=-1;
|
||||
inWorld=false;
|
||||
for(TesKey tk : renderTextures) {
|
||||
IRenderContextHandler irch=renderHandlers.get(tk);
|
||||
GL11.glBindTexture(GL11.GL_TEXTURE_2D,tk.tex);
|
||||
Tessellator t=tessellators.get(tk);
|
||||
if(irch==null) {
|
||||
t.draw();
|
||||
} else {
|
||||
Tessellator.instance=t;
|
||||
irch.beforeRenderContext();
|
||||
t.draw();
|
||||
irch.afterRenderContext();
|
||||
}
|
||||
for(List l : renderTextureList) {
|
||||
// TODO: call appropriate client hooks
|
||||
Integer[] tn=(Integer[])l.toArray();
|
||||
GL11.glBindTexture(GL11.GL_TEXTURE_2D,tn[0]);
|
||||
Tessellator t=(Tessellator)tessellators.get(l);
|
||||
t.draw();
|
||||
}
|
||||
GL11.glBindTexture(3553 /* GL_TEXTURE_2D */, ModLoader
|
||||
.getMinecraftInstance().renderEngine
|
||||
.getTexture("/terrain.png"));
|
||||
Tessellator.renderingWorldRenderer=false;
|
||||
Tessellator.instance=defaultTessellator;
|
||||
}
|
||||
|
||||
public static void beforeBlockRender(Block block,
|
||||
@@ -216,18 +160,6 @@ public class ForgeHooksClient {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getTexture(String def, Object item)
|
||||
{
|
||||
if (item instanceof ITextureProvider)
|
||||
{
|
||||
return ((ITextureProvider)item).getTextureFile();
|
||||
}
|
||||
else
|
||||
{
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderCustomItem(ICustomItemRenderer customRenderer, RenderBlocks renderBlocks,int itemID, int meta, float f) {
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
if (renderBlocks.useInventoryTint) {
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* This software is provided under the terms of the Minecraft Forge Public
|
||||
* License v1.0.
|
||||
*/
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
public interface IRenderContextHandler {
|
||||
/** Run before the specified rendering context.
|
||||
*/
|
||||
public void beforeRenderContext();
|
||||
|
||||
/** Run after the specified rendering context.
|
||||
*/
|
||||
public void afterRenderContext();
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* This software is provided under the terms of the Minecraft Forge Public
|
||||
* License v1.0.
|
||||
*/
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.RenderGlobal;
|
||||
|
||||
public interface IRenderWorldLastHandler {
|
||||
/** Called after rendering all the 3D data of the world. This is
|
||||
* called before the user's tool is rendered, but otherwise after all
|
||||
* 3D content. It is called twice in anaglyph mode. This is intended
|
||||
* for rendering visual effect overlays into the world.
|
||||
*/
|
||||
void onRenderWorldLast(RenderGlobal rg, float f);
|
||||
}
|
||||
|
||||
@@ -18,20 +18,6 @@ public class MinecraftForgeClient {
|
||||
ForgeHooksClient.highlightHandlers.add(handler);
|
||||
}
|
||||
|
||||
/** Register a new render context handler. A render context is a block
|
||||
* of rendering performed with similar OpenGL modes, for example,
|
||||
* texture name.
|
||||
* @param tex The name of the texture for this render context.
|
||||
* @param sub The subid of this render context. 0 is the default pass
|
||||
* for normal rendering, higher subids render later. All subids of 0
|
||||
* will render before all subids of 1, etc.
|
||||
* @param handler The handler to register.
|
||||
*/
|
||||
public static void registerRenderContextHandler(String tex, int sub,
|
||||
IRenderContextHandler handler) {
|
||||
ForgeHooksClient.registerRenderContextHandler(tex,sub,handler);
|
||||
}
|
||||
|
||||
/** Bind a texture. This is used to bind a texture file when
|
||||
* performing your own rendering, rather than using ITextureProvider.
|
||||
*
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import java.util.Random;
|
||||
import net.minecraft.src.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* Used to hold a list of all items that can be spawned in a world dungeon
|
||||
*
|
||||
*/
|
||||
public class DungeonLoot
|
||||
{
|
||||
private ItemStack item;
|
||||
private int minCount = 1;
|
||||
private int maxCount = 1;
|
||||
|
||||
/**
|
||||
* @param item A item stack
|
||||
* @param min Minimum stack size when randomly generating
|
||||
* @param max Maximum stack size when randomly generating
|
||||
*/
|
||||
public DungeonLoot(ItemStack item, int min, int max)
|
||||
{
|
||||
this.item = item;
|
||||
minCount = min;
|
||||
maxCount = max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Grabs a ItemStack ready to be added to the dungeon chest,
|
||||
* the stack size will be between minCount and maxCount
|
||||
* @param rand World gen random number generator
|
||||
* @return The ItemStack to be added to the chest
|
||||
*/
|
||||
public ItemStack generateStack(Random rand)
|
||||
{
|
||||
ItemStack ret = this.item.copy();
|
||||
ret.stackSize = minCount + (rand.nextInt(maxCount - minCount + 1));
|
||||
return ret;
|
||||
}
|
||||
|
||||
public boolean equals(ItemStack item, int min, int max)
|
||||
{
|
||||
return (min == minCount && max == maxCount && item.isItemEqual(this.item));
|
||||
}
|
||||
|
||||
public boolean equals(ItemStack item)
|
||||
{
|
||||
return item.isItemEqual(this.item);
|
||||
}
|
||||
}
|
||||
@@ -309,7 +309,7 @@ public class EnumHelper {
|
||||
else
|
||||
{
|
||||
if ((field.getModifiers() & flags) == flags &&
|
||||
field.getType().getName().replace('.', '/').equals(valueType)) //Apparently some JVMs return .'s and some don't..
|
||||
field.getType().getName().equals(valueType))
|
||||
{
|
||||
valuesField = field;
|
||||
break;
|
||||
|
||||
@@ -6,14 +6,11 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.EntityMinecart;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.IInventory;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.EnumStatus;
|
||||
import net.minecraft.src.ModLoader;
|
||||
import net.minecraft.src.World;
|
||||
|
||||
import java.util.*;
|
||||
@@ -73,36 +70,6 @@ public class ForgeHooks {
|
||||
}
|
||||
|
||||
static LinkedList<ISleepHandler> sleepHandlers = new LinkedList<ISleepHandler>();
|
||||
|
||||
|
||||
public static void onMinecartUpdate(EntityMinecart minecart, int x, int y, int z)
|
||||
{
|
||||
for (IMinecartHandler handler : minecartHandlers)
|
||||
{
|
||||
handler.onMinecartUpdate(minecart, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onMinecartEntityCollision(EntityMinecart minecart, Entity entity)
|
||||
{
|
||||
for (IMinecartHandler handler : minecartHandlers)
|
||||
{
|
||||
handler.onMinecartEntityCollision(minecart, entity);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean onMinecartInteract(EntityMinecart minecart, EntityPlayer player)
|
||||
{
|
||||
boolean canceled = true;
|
||||
for (IMinecartHandler handler : minecartHandlers)
|
||||
{
|
||||
boolean tmp = handler.onMinecartInteract(minecart, player, canceled);
|
||||
canceled = canceled && tmp;
|
||||
}
|
||||
return canceled;
|
||||
}
|
||||
|
||||
static LinkedList<IMinecartHandler> minecartHandlers = new LinkedList<IMinecartHandler>();
|
||||
|
||||
// Plant Management
|
||||
// ------------------------------------------------------------
|
||||
@@ -212,100 +179,72 @@ public class ForgeHooks {
|
||||
}
|
||||
|
||||
public static boolean isToolEffective(ItemStack ist, Block bl, int md) {
|
||||
List tc = (List)toolClasses.get(ist.itemID);
|
||||
if (tc == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Object[] ta = tc.toArray();
|
||||
String cls = (String)ta[0];
|
||||
return toolEffectiveness.contains(Arrays.asList(bl.blockID, md, cls));
|
||||
List tc=(List)toolClasses.get(ist.itemID);
|
||||
if(tc==null) return false;
|
||||
Object[] ta=tc.toArray();
|
||||
String cls=(String)ta[0];
|
||||
|
||||
return toolEffectiveness.contains(Arrays.asList(
|
||||
bl.blockID,md,cls));
|
||||
}
|
||||
|
||||
static void initTools() {
|
||||
if(toolInit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
toolInit = true;
|
||||
if(toolInit) return;
|
||||
toolInit=true;
|
||||
|
||||
MinecraftForge.setToolClass(Item.pickaxeWood, "pickaxe", 0);
|
||||
MinecraftForge.setToolClass(Item.pickaxeStone, "pickaxe", 1);
|
||||
MinecraftForge.setToolClass(Item.pickaxeSteel, "pickaxe", 2);
|
||||
MinecraftForge.setToolClass(Item.pickaxeGold, "pickaxe", 0);
|
||||
MinecraftForge.setToolClass(Item.pickaxeDiamond, "pickaxe", 3);
|
||||
MinecraftForge.setToolClass(Item.pickaxeWood,"pickaxe",0);
|
||||
MinecraftForge.setToolClass(Item.pickaxeStone,"pickaxe",1);
|
||||
MinecraftForge.setToolClass(Item.pickaxeSteel,"pickaxe",2);
|
||||
MinecraftForge.setToolClass(Item.pickaxeGold,"pickaxe",0);
|
||||
MinecraftForge.setToolClass(Item.pickaxeDiamond,"pickaxe",3);
|
||||
|
||||
MinecraftForge.setToolClass(Item.axeWood, "axe", 0);
|
||||
MinecraftForge.setToolClass(Item.axeStone, "axe", 1);
|
||||
MinecraftForge.setToolClass(Item.axeSteel, "axe", 2);
|
||||
MinecraftForge.setToolClass(Item.axeGold, "axe", 0);
|
||||
MinecraftForge.setToolClass(Item.axeDiamond, "axe", 3);
|
||||
MinecraftForge.setToolClass(Item.axeWood,"axe",0);
|
||||
MinecraftForge.setToolClass(Item.axeStone,"axe",1);
|
||||
MinecraftForge.setToolClass(Item.axeSteel,"axe",2);
|
||||
MinecraftForge.setToolClass(Item.axeGold,"axe",0);
|
||||
MinecraftForge.setToolClass(Item.axeDiamond,"axe",3);
|
||||
|
||||
MinecraftForge.setToolClass(Item.shovelWood, "shovel", 0);
|
||||
MinecraftForge.setToolClass(Item.shovelStone, "shovel", 1);
|
||||
MinecraftForge.setToolClass(Item.shovelSteel, "shovel", 2);
|
||||
MinecraftForge.setToolClass(Item.shovelGold, "shovel", 0);
|
||||
MinecraftForge.setToolClass(Item.shovelDiamond, "shovel", 3);
|
||||
MinecraftForge.setToolClass(Item.shovelWood,"shovel",0);
|
||||
MinecraftForge.setToolClass(Item.shovelStone,"shovel",1);
|
||||
MinecraftForge.setToolClass(Item.shovelSteel,"shovel",2);
|
||||
MinecraftForge.setToolClass(Item.shovelGold,"shovel",0);
|
||||
MinecraftForge.setToolClass(Item.shovelDiamond,"shovel",3);
|
||||
|
||||
MinecraftForge.setBlockHarvestLevel(Block.obsidian, "pickaxe", 3);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreDiamond, "pickaxe", 2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockDiamond, "pickaxe", 2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreGold, "pickaxe", 2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockGold, "pickaxe", 2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreIron, "pickaxe", 1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockSteel, "pickaxe", 1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreLapis, "pickaxe", 1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockLapis, "pickaxe", 1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreRedstone, "pickaxe", 2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreRedstoneGlowing, "pickaxe", 2);
|
||||
MinecraftForge.removeBlockEffectiveness(Block.oreRedstone, "pickaxe");
|
||||
MinecraftForge.removeBlockEffectiveness(Block.obsidian, "pickaxe");
|
||||
MinecraftForge.removeBlockEffectiveness(Block.oreRedstoneGlowing, "pickaxe");
|
||||
MinecraftForge.setBlockHarvestLevel(Block.obsidian,"pickaxe",3);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreDiamond,"pickaxe",2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockDiamond,"pickaxe",2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreGold,"pickaxe",2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockGold,"pickaxe",2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreIron,"pickaxe",1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockSteel,"pickaxe",1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreLapis,"pickaxe",1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blockLapis,"pickaxe",1);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreRedstone,"pickaxe",2);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.oreRedstoneGlowing,"pickaxe",2);
|
||||
MinecraftForge.removeBlockEffectiveness(Block.oreRedstone,"pickaxe");
|
||||
MinecraftForge.removeBlockEffectiveness(Block.oreRedstoneGlowing,"pickaxe");
|
||||
MinecraftForge.removeBlockEffectiveness(Block.obsidian,"pickaxe");
|
||||
|
||||
Block[] pickeff = {
|
||||
Block[] pickeff ={
|
||||
Block.cobblestone, Block.stairDouble,
|
||||
Block.stairSingle, Block.stone,
|
||||
Block.sandStone, Block.cobblestoneMossy,
|
||||
Block.oreCoal, Block.ice,
|
||||
Block.netherrack, Block.oreLapis,
|
||||
Block.stairSingle, Block.stone, Block.sandStone,
|
||||
Block.cobblestoneMossy,
|
||||
Block.oreCoal,
|
||||
Block.ice, Block.netherrack, Block.oreLapis,
|
||||
Block.blockLapis
|
||||
};
|
||||
for (Block bl : pickeff)
|
||||
{
|
||||
MinecraftForge.setBlockHarvestLevel(bl, "pickaxe", 0);
|
||||
}
|
||||
|
||||
Block[] spadeEff = {
|
||||
Block.grass, Block.dirt,
|
||||
Block.sand, Block.gravel,
|
||||
Block.snow, Block.blockSnow,
|
||||
Block.blockClay, Block.tilledField,
|
||||
Block.slowSand, Block.mycelium
|
||||
};
|
||||
for (Block bl : spadeEff)
|
||||
{
|
||||
MinecraftForge.setBlockHarvestLevel(bl, "shovel", 0);
|
||||
}
|
||||
|
||||
Block[] axeEff = {
|
||||
Block.planks, Block.bookShelf,
|
||||
Block.wood, Block.chest,
|
||||
Block.stairDouble, Block.stairSingle,
|
||||
Block.pumpkin, Block.pumpkinLantern
|
||||
};
|
||||
for (Block bl : axeEff)
|
||||
{
|
||||
MinecraftForge.setBlockHarvestLevel(bl, "axe", 0);
|
||||
};
|
||||
for(Block bl : pickeff) {
|
||||
MinecraftForge.setBlockHarvestLevel(bl,"pickaxe",0);
|
||||
}
|
||||
|
||||
// TODO: add other tool tables.
|
||||
}
|
||||
|
||||
public static final int majorVersion=1;
|
||||
public static final int minorVersion=3;
|
||||
public static final int revisionVersion=0;
|
||||
public static final int minorVersion=2;
|
||||
public static final int revisionVersion=1;
|
||||
static {
|
||||
System.out.printf("MinecraftForge V%d.%d.%d Initialized\n", majorVersion, minorVersion, revisionVersion);
|
||||
ModLoader.getLogger().info(String.format("MinecraftForge V%d.%d.%d Initialized\n", majorVersion, minorVersion, revisionVersion));
|
||||
System.out.printf("MinecraftForge V%d.%d.%d Initialized\n",majorVersion,minorVersion,revisionVersion);
|
||||
}
|
||||
|
||||
static boolean toolInit=false;
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.EntityMinecart;
|
||||
|
||||
/**
|
||||
* This class defines a replacement for the default minecart collision code.
|
||||
* Only one handler can be registered at a time. It it registered with EntityMinecart.registerCollisionHandler().
|
||||
* If you use this, make it a configuration option.
|
||||
* @author CovertJaguar
|
||||
*/
|
||||
public interface IMinecartCollisionHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* This basically replaces the function of the same name in EnityMinecart.
|
||||
* Code in IMinecartHooks.applyEntityCollisionHook is still run.
|
||||
* @param cart The cart that called the collision.
|
||||
* @param other The object it collided with.
|
||||
*/
|
||||
public void onEntityCollision(EntityMinecart cart, Entity other);
|
||||
|
||||
/**
|
||||
* This function replaced the function of the same name in EntityMinecart.
|
||||
* It is used to define whether minecarts collide with specific entities,
|
||||
* for example items.
|
||||
* @param cart The cart for which the collision box was requested.
|
||||
* @param other The entity requesting the collision box.
|
||||
* @return The collision box or null.
|
||||
*/
|
||||
public AxisAlignedBB getCollisionBox(EntityMinecart cart, Entity other);
|
||||
|
||||
/**
|
||||
* This function is used to define the box used for detecting minecart collisions.
|
||||
* It is generally bigger that the normal collision box.
|
||||
* @param cart The cart for which the collision box was requested.
|
||||
* @return The collision box, cannot be null.
|
||||
*/
|
||||
public AxisAlignedBB getMinecartCollisionBox(EntityMinecart cart);
|
||||
|
||||
/**
|
||||
* This function replaces the function of the same name in EntityMinecart.
|
||||
* It defines whether minecarts are solid to the player.
|
||||
* @param cart The cart for which the bounding box was requested.
|
||||
* @return The bounding box or null.
|
||||
*/
|
||||
public AxisAlignedBB getBoundingBox(EntityMinecart cart);
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.EntityMinecart;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
|
||||
public interface IMinecartHandler {
|
||||
|
||||
/**
|
||||
* This functions is called at the end of every minecart's doUpdate loop.
|
||||
* If you override EntityMinecart.doUpdate(), is recommended that you retain the code that calls this function.
|
||||
* @param cart The cart that called the function.
|
||||
* @param i X coordinate of the rail
|
||||
* @param j Y coordinate of the rail
|
||||
* @param k Z coordinate of the rail
|
||||
*/
|
||||
public void onMinecartUpdate(EntityMinecart minecart, int x, int y, int z);
|
||||
|
||||
/**
|
||||
* This function allows several mods to add code into the collision routine at the same time regardless of the collision handler registered.
|
||||
* If you override EntityMinecart.applyEntityCollision(), is recommended that you retain the code that calls this function.
|
||||
* @param cart The cart that called the function.
|
||||
* @param other
|
||||
*/
|
||||
public void onMinecartEntityCollision(EntityMinecart minecart, Entity entity);
|
||||
|
||||
/**
|
||||
* This function is called whenever a player attempts to interact with a minecart.
|
||||
* The primary reason for this hook is to fix a few bugs and put restrictions on how a minecart can be used under certain circumstances.
|
||||
* If you override EntityMinecart.interact(), is recommended that you retain the code that calls this function.
|
||||
* @param cart The cart that called the function.
|
||||
* @param player The player that tried to interact with the minecart.
|
||||
* @param canceled Wither or not a pervious hook has canceled the interaction of a player.
|
||||
* @return Whether the player can interact with the minecart.
|
||||
*/
|
||||
public boolean onMinecartInteract(EntityMinecart minecart, EntityPlayer player, boolean canceled);
|
||||
|
||||
}
|
||||
@@ -14,9 +14,6 @@ import net.minecraft.src.World;
|
||||
* This interface is to be implemented by item classes. It will allow an item
|
||||
* to perform a use before the block is activated.
|
||||
*
|
||||
* @deprecated This interface is no longer used, the function has been moved to
|
||||
* Item. The functionality remains, it simply does not require this interface
|
||||
* any further.
|
||||
* @see Item
|
||||
*/
|
||||
public interface IUseItemFirst {
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.EntityMinecart;
|
||||
|
||||
/**
|
||||
* Used to create hashmap values for Minecart/type pairs
|
||||
* Written by CovertJaguar
|
||||
*/
|
||||
public class MinecartKey {
|
||||
public final Class<? extends EntityMinecart> minecart;
|
||||
public final int type;
|
||||
|
||||
public MinecartKey(Class<? extends EntityMinecart> c, int t)
|
||||
{
|
||||
minecart = c;
|
||||
type = t;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if(obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final MinecartKey other = (MinecartKey)obj;
|
||||
if(this.minecart != other.minecart && (this.minecart == null || !this.minecart.equals(other.minecart)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (this.type == other.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 7;
|
||||
hash = 59 * hash + (this.minecart != null ? this.minecart.hashCode() : 0);
|
||||
hash = 59 * hash + this.type;
|
||||
return hash;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.EntityMinecart;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.World;
|
||||
@@ -57,15 +56,6 @@ public class MinecraftForge {
|
||||
public static void registerCraftingHandler(ICraftingHandler handler) {
|
||||
ForgeHooks.craftingHandlers.add(handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a new minecart handler
|
||||
* @param handler The Handler to be registered
|
||||
*/
|
||||
public static void registerMinecartHandler(IMinecartHandler handler)
|
||||
{
|
||||
ForgeHooks.minecartHandlers.add(handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is not supposed to be called outside of Minecraft internals.
|
||||
@@ -375,392 +365,4 @@ public class MinecraftForge {
|
||||
}
|
||||
}
|
||||
|
||||
private static int dungeonLootAttempts = 8;
|
||||
private static ArrayList<ObjectPair<Float, String>> dungeonMobs = new ArrayList<ObjectPair<Float, String>>();
|
||||
private static ArrayList<ObjectPair<Float, DungeonLoot>> dungeonLoot = new ArrayList<ObjectPair<Float, DungeonLoot>>();
|
||||
/**
|
||||
* Set the number of item stacks that will be attempted to be added to each Dungeon chest.
|
||||
* Note: Due to random number generation, you will not always get this amount per chest.
|
||||
* @param number The maximum number of item stacks to add to a chest.
|
||||
*/
|
||||
public static void setDungeonLootTries(int number)
|
||||
{
|
||||
dungeonLootAttempts = number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The max number of item stacks found in each dungeon chest.
|
||||
*/
|
||||
public static int getDungeonLootTries()
|
||||
{
|
||||
return dungeonLootAttempts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a mob to the possible list of creatures the spawner will create.
|
||||
* If the mob is already in the spawn list, the rarity will be added to the existing one,
|
||||
* causing the mob to be more common.
|
||||
*
|
||||
* @param name The name of the monster, use the same name used when registering the entity.
|
||||
* @param rarity The rarity of selecting this mob over others. Must be greater then 0.
|
||||
* Vanilla Minecraft has the following mobs:
|
||||
* Spider 1
|
||||
* Skeleton 1
|
||||
* Zombie 2
|
||||
* Meaning, Zombies are twice as common as spiders or skeletons.
|
||||
* @return The new rarity of the monster,
|
||||
*/
|
||||
public static float addDungeonMob(String name, float rarity)
|
||||
{
|
||||
if (rarity <= 0)
|
||||
{
|
||||
throw new IllegalArgumentException("Rarity must be greater then zero");
|
||||
}
|
||||
|
||||
for(ObjectPair<Float, String> mob : dungeonMobs)
|
||||
{
|
||||
if (name.equals(mob.getValue2()))
|
||||
{
|
||||
mob.setValue1(mob.getValue1() + rarity);
|
||||
return mob.getValue1();
|
||||
}
|
||||
}
|
||||
|
||||
dungeonMobs.add(new ObjectPair<Float, String>(rarity, name));
|
||||
return rarity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Will completely remove a Mob from the dungeon spawn list.
|
||||
*
|
||||
* @param name The name of the mob to remove
|
||||
* @return The rarity of the removed mob, prior to being removed.
|
||||
*/
|
||||
public static float removeDungeonMob(String name)
|
||||
{
|
||||
for (ObjectPair<Float, String> mob : dungeonMobs)
|
||||
{
|
||||
if (name.equals(name))
|
||||
{
|
||||
dungeonMobs.remove(mob);
|
||||
return mob.getValue1();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a random mob name from the list.
|
||||
* @param rand World generation random number generator
|
||||
* @return The mob name
|
||||
*/
|
||||
public static String getRandomDungeonMob(Random rand)
|
||||
{
|
||||
float maxRarity = 0f;
|
||||
for (ObjectPair<Float, String> mob : dungeonMobs)
|
||||
{
|
||||
maxRarity += mob.getValue1();
|
||||
}
|
||||
|
||||
float targetRarity = rand.nextFloat() * maxRarity;
|
||||
for (ObjectPair<Float, String> mob : dungeonMobs)
|
||||
{
|
||||
if (targetRarity < mob.getValue1())
|
||||
{
|
||||
return mob.getValue2();
|
||||
}
|
||||
targetRarity -= mob.getValue1();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a item stack to the dungeon loot list with a stack size
|
||||
* of 1.
|
||||
*
|
||||
* @param item The ItemStack to be added to the loot list
|
||||
* @param rarity The relative chance that this item will spawn, Vanilla has
|
||||
* most of its items set to 1. Like the saddle, bread, silk, wheat, etc..
|
||||
* Rarer items are set to lower values, EXA: Golden Apple 0.01
|
||||
*/
|
||||
public static void addDungeonLoot(ItemStack item, float rarity)
|
||||
{
|
||||
addDungeonLoot(item, rarity, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a item stack, with a range of sizes, to the dungeon loot list.
|
||||
* If a stack matching the same item, and size range, is already in the list
|
||||
* the rarities will be added together making the item more common.
|
||||
*
|
||||
* @param item The ItemStack to be added to the loot list
|
||||
* @param rarity The relative chance that this item will spawn, Vanilla has
|
||||
* most of its items set to 1. Like the saddle, bread, silk, wheat, etc..
|
||||
* Rarer items are set to lower values, EXA: Golden Apple 0.01
|
||||
* @param minCount When this item does generate, the minimum number that is in the stack
|
||||
* @param maxCount When this item does generate, the maximum number that can bein the stack
|
||||
* @return The new rarity of the loot.
|
||||
*/
|
||||
public static float addDungeonLoot(ItemStack item, float rarity, int minCount, int maxCount)
|
||||
{
|
||||
for (ObjectPair<Float, DungeonLoot> loot : dungeonLoot)
|
||||
{
|
||||
if (loot.getValue2().equals(item, minCount, maxCount))
|
||||
{
|
||||
loot.setValue1(loot.getValue1() + rarity);
|
||||
return loot.getValue1();
|
||||
}
|
||||
}
|
||||
|
||||
dungeonLoot.add(new ObjectPair<Float, DungeonLoot>(rarity, new DungeonLoot(item, minCount, maxCount)));
|
||||
return rarity;
|
||||
}
|
||||
/**
|
||||
* Removes a item stack from the dungeon loot list, this will remove all items
|
||||
* as long as the item stack matches, it will not care about matching the stack
|
||||
* size ranges perfectly.
|
||||
*
|
||||
* @param item The item stack to remove
|
||||
* @return The total rarity of all items removed
|
||||
*/
|
||||
public static float removeDungeonLoot(ItemStack item)
|
||||
{
|
||||
return removeDungeonLoot(item, -1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a item stack from the dungeon loot list. If 'minCount' parameter
|
||||
* is greater then 0, it will only remove loot items that have the same exact
|
||||
* stack size range as passed in by parameters.
|
||||
*
|
||||
* @param item The item stack to remove
|
||||
* @param minCount The minimum count for the match check, if less then 0,
|
||||
* the size check is skipped
|
||||
* @param maxCount The max count used in match check when 'minCount' is >= 0
|
||||
* @return The total rarity of all items removed
|
||||
*/
|
||||
public static float removeDungeonLoot(ItemStack item, int minCount, int maxCount)
|
||||
{
|
||||
float rarity = 0;
|
||||
ArrayList<ObjectPair<Float, DungeonLoot>> lootTmp = (ArrayList<ObjectPair<Float, DungeonLoot>>)dungeonLoot.clone();
|
||||
if (minCount < 0)
|
||||
{
|
||||
for (ObjectPair<Float, DungeonLoot> loot : lootTmp)
|
||||
{
|
||||
if (loot.getValue2().equals(item))
|
||||
{
|
||||
dungeonLoot.remove(loot);
|
||||
rarity += loot.getValue1();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ObjectPair<Float, DungeonLoot> loot : lootTmp)
|
||||
{
|
||||
if (loot.getValue2().equals(item, minCount, maxCount))
|
||||
{
|
||||
dungeonLoot.remove(loot);
|
||||
rarity += loot.getValue1();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rarity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a random item stack to place in a dungeon chest during world generation
|
||||
* @param rand World generation random number generator
|
||||
* @return The item stack
|
||||
*/
|
||||
public static ItemStack getRandomDungeonLoot(Random rand)
|
||||
{
|
||||
float maxRarity = 0f;
|
||||
for (ObjectPair<Float, DungeonLoot> loot : dungeonLoot)
|
||||
{
|
||||
maxRarity += loot.getValue1();
|
||||
}
|
||||
|
||||
float targetRarity = rand.nextFloat() * maxRarity;
|
||||
for (ObjectPair<Float, DungeonLoot> loot : dungeonLoot)
|
||||
{
|
||||
if (targetRarity < loot.getValue1())
|
||||
{
|
||||
return loot.getValue2().generateStack(rand);
|
||||
}
|
||||
targetRarity -= loot.getValue1();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//Minecart Dictionary --------------------------------------
|
||||
private static Map<MinecartKey, ItemStack> itemForMinecart = new HashMap<MinecartKey, ItemStack>();
|
||||
private static Map<ItemStack, MinecartKey> minecartForItem = new HashMap<ItemStack, MinecartKey>();
|
||||
/**
|
||||
* Registers a custom minecart and its corresponding item.
|
||||
* This should be the item used to place the minecart by the user,
|
||||
* not the item dropped by the cart.
|
||||
* @param cart The minecart.
|
||||
* @param item The item used to place the cart.
|
||||
*/
|
||||
public static void registerMinecart(Class<? extends EntityMinecart> cart, ItemStack item)
|
||||
{
|
||||
registerMinecart(cart, 0, item);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a minecart and its corresponding item.
|
||||
* This should be the item used to place the minecart by the user,
|
||||
* not the item dropped by the cart.
|
||||
* @param minecart The minecart.
|
||||
* @param type The minecart type, used to differentiate carts that have the same class.
|
||||
* @param item The item used to place the cart.
|
||||
*/
|
||||
public static void registerMinecart(Class<? extends EntityMinecart> minecart, int type, ItemStack item)
|
||||
{
|
||||
MinecartKey k = new MinecartKey(minecart, type);
|
||||
itemForMinecart.put(k, item);
|
||||
minecartForItem.put(item, k);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a previously registered Minecart. Useful for replacing the vanilla minecarts.
|
||||
* @param minecart
|
||||
* @param type
|
||||
*/
|
||||
public static void removeMinecart(Class<? extends EntityMinecart> minecart, int type)
|
||||
{
|
||||
MinecartKey k = new MinecartKey(minecart, type);
|
||||
ItemStack item = itemForMinecart.remove(k);
|
||||
if(item != null)
|
||||
{
|
||||
minecartForItem.remove(item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function returns an ItemStack that represents this cart.
|
||||
* The player should be able to use this item to place the minecart.
|
||||
* This is the item that was registered with the cart via the registerMinecart function,
|
||||
* but is not necessary the item the cart drops when destroyed.
|
||||
* @param minecart The cart class
|
||||
* @return An ItemStack that can be used to place the cart.
|
||||
*/
|
||||
public static ItemStack getItemForCart(Class<? extends EntityMinecart> minecart)
|
||||
{
|
||||
return getItemForCart(minecart, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function returns an ItemStack that represents this cart.
|
||||
* The player should be able to use this item to place the minecart.
|
||||
* This is the item that was registered with the cart via the registerMinecart function,
|
||||
* but is not necessary the item the cart drops when destroyed.
|
||||
* @param minecart The cart class
|
||||
* @param type The minecartType value
|
||||
* @return An ItemStack that can be used to place the cart.
|
||||
*/
|
||||
public static ItemStack getItemForCart(Class<? extends EntityMinecart> minecart, int type)
|
||||
{
|
||||
ItemStack item = itemForMinecart.get(new MinecartKey(minecart, type));
|
||||
if (item == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return item.copy();
|
||||
}
|
||||
|
||||
/**
|
||||
* This function returns an ItemStack that represents this cart.
|
||||
* The player should be able to use this item to place the minecart.
|
||||
* This is the item that was registered with the cart via the registerMinecart function,
|
||||
* but is not necessary the item the cart drops when destroyed.
|
||||
* @param cart The cart entity
|
||||
* @return An ItemStack that can be used to place the cart.
|
||||
*/
|
||||
public static ItemStack getItemForCart(EntityMinecart cart)
|
||||
{
|
||||
if(cart.getClass() == EntityMinecart.class)
|
||||
{
|
||||
return getItemForCart(cart.getClass(), cart.getMinecartType());
|
||||
}
|
||||
return getItemForCart(cart.getClass(), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* The function will return the cart class for a given item.
|
||||
* If the item was not registered via the registerMinecart function it will return null.
|
||||
* @param item The item to test.
|
||||
* @return Cart if mapping exists, null if not.
|
||||
*/
|
||||
public static Class<? extends EntityMinecart> getCartClassForItem(ItemStack item)
|
||||
{
|
||||
MinecartKey k = minecartForItem.get(item);
|
||||
if(k != null)
|
||||
{
|
||||
return k.minecart;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The function will return the cart type for a given item.
|
||||
* Will return -1 if the mapping doesn't exist.
|
||||
* If the item was not registered via the registerMinecart function it will return null.
|
||||
* @param item The item to test.
|
||||
* @return the cart minecartType value.
|
||||
*/
|
||||
public static int getCartTypeForItem(ItemStack item)
|
||||
{
|
||||
MinecartKey k = minecartForItem.get(item);
|
||||
if(k != null)
|
||||
{
|
||||
return k.type;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Will return a set of all registered minecart items.
|
||||
* @return a copy of the set of all minecart items
|
||||
*/
|
||||
public static Set<ItemStack> getAllCartItems()
|
||||
{
|
||||
Set<ItemStack> ret = new HashSet<ItemStack>();
|
||||
for(ItemStack item : minecartForItem.keySet())
|
||||
{
|
||||
ret.add(item.copy());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
{
|
||||
addDungeonMob("Skeleton", 1.0f);
|
||||
addDungeonMob("Zombie", 2.0f);
|
||||
addDungeonMob("Spider", 1.0f);
|
||||
|
||||
addDungeonLoot(new ItemStack(Item.saddle), 1.00f );
|
||||
addDungeonLoot(new ItemStack(Item.ingotIron), 1.00f, 1, 4);
|
||||
addDungeonLoot(new ItemStack(Item.bread), 1.00f );
|
||||
addDungeonLoot(new ItemStack(Item.wheat), 1.00f, 1, 4);
|
||||
addDungeonLoot(new ItemStack(Item.gunpowder), 1.00f, 1, 4);
|
||||
addDungeonLoot(new ItemStack(Item.silk), 1.00f, 1, 4);
|
||||
addDungeonLoot(new ItemStack(Item.bucketEmpty), 1.00f );
|
||||
addDungeonLoot(new ItemStack(Item.appleGold), 0.01f );
|
||||
addDungeonLoot(new ItemStack(Item.redstone), 0.50f, 1, 4);
|
||||
addDungeonLoot(new ItemStack(Item.record13), 0.05f );
|
||||
addDungeonLoot(new ItemStack(Item.recordCat), 0.05f );
|
||||
addDungeonLoot(new ItemStack(Item.dyePowder, 1, 3), 1.00f );
|
||||
|
||||
registerMinecart(EntityMinecart.class, 0, new ItemStack(Item.minecartEmpty));
|
||||
registerMinecart(EntityMinecart.class, 1, new ItemStack(Item.minecartCrate));
|
||||
registerMinecart(EntityMinecart.class, 2, new ItemStack(Item.minecartPowered));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package net.minecraft.src.forge;
|
||||
|
||||
/**
|
||||
* A class that holds two generic values, can be used as a Key/Value pair,
|
||||
* but is used in forge as a frequency/object pair.
|
||||
*
|
||||
* @param <T1> The type of the first value
|
||||
* @param <T2> The Type of the second value
|
||||
*/
|
||||
public class ObjectPair<T1, T2>
|
||||
{
|
||||
private T1 object1;
|
||||
private T2 object2;
|
||||
|
||||
public ObjectPair(T1 obj1, T2 obj2)
|
||||
{
|
||||
this.object1 = obj1;
|
||||
this.object2 = obj2;
|
||||
}
|
||||
|
||||
public T1 getValue1()
|
||||
{
|
||||
return this.object1;
|
||||
}
|
||||
|
||||
public T2 getValue2()
|
||||
{
|
||||
return this.object2;
|
||||
}
|
||||
|
||||
public void setValue1(T1 value)
|
||||
{
|
||||
object1 = value;
|
||||
}
|
||||
|
||||
public void setValue2(T2 value)
|
||||
{
|
||||
object2 = value;
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,9 @@ Extract the download archive directly into your MCP-directiory.
|
||||
It should create a folder "forge" within that directory, containing all
|
||||
extracted files.
|
||||
|
||||
You should use freshly downloaded jars, solely including ModLoader &
|
||||
ModLoaderMP. Anything else can eventually cause conflicts.
|
||||
You should use freshly decompiled jars, solely including ModLoader &
|
||||
ModLoaderMP respectively. Anything else can eventually cause conflicts.
|
||||
|
||||
Now just start the install.cmd/.sh, MCForge will install itself into the proper
|
||||
locations and copy all needed files, as well as modifying the needed baseclasses.
|
||||
|
||||
Forge also includes a snapshot of the MCP mapings, this may not be the current
|
||||
version of the mapings. But you must use the provided mapings in order for the
|
||||
patch files to work together.
|
||||
|
||||
The install scripts should take care of everything for you, so you should not need
|
||||
to run ANY MCP script before installing forge.
|
||||
Now just start the install-bat, MCForge will install itself into the proper
|
||||
locations and copy all ned files, as well as modifying the ned baseclasses.
|
||||
|
||||
+12
-35
@@ -5,50 +5,27 @@ echo:
|
||||
|
||||
pushd .. >nul
|
||||
|
||||
xcopy /Y /E /I forge\conf\* conf
|
||||
|
||||
if exist runtime\bin\fernflower.jar move runtime\bin\fernflower.jar runtime\bin\fernflower.jar-backup
|
||||
|
||||
cmd /C cleanup.bat
|
||||
cmd /C decompile.bat
|
||||
|
||||
if exist runtime\bin\fernflower.jar-backup move runtime\bin\fernflower.jar-backup runtime\bin\fernflower.jar
|
||||
|
||||
pushd src >nul
|
||||
del minecraft\net\minecraft\src\MLProp.java
|
||||
copy ..\forge\MLProp.java minecraft\net\minecraft\src\MLProp.java
|
||||
del minecraft_server\net\minecraft\src\MLProp.java
|
||||
copy ..\forge\MLProp.java minecraft_server\net\minecraft\src\MLProp.java
|
||||
|
||||
if exist ..\jars\bin\minecraft.jar (
|
||||
del minecraft\net\minecraft\src\MLProp.java
|
||||
copy ..\forge\MLProp.java minecraft\net\minecraft\src\MLProp.java
|
||||
|
||||
for /f "delims=" %%a in ('dir /a -d /b /S ..\forge\patches\minecraft') do (
|
||||
pushd "%%a" 2>nul
|
||||
if errorlevel 1 (
|
||||
..\runtime\bin\python\python_mcp ..\forge\lfcr.py "%%a" "%%a"
|
||||
..\runtime\bin\applydiff.exe -uf -p2 -i "%%a"
|
||||
) else popd
|
||||
)
|
||||
)
|
||||
|
||||
if exist ..\jars\minecraft_server.jar (
|
||||
del minecraft_server\net\minecraft\src\MLProp.java
|
||||
copy ..\forge\MLProp.java minecraft_server\net\minecraft\src\MLProp.java
|
||||
..\runtime\bin\python\python_mcp ..\forge\lfcr.py ../forge/modLoaderMP.patch ../forge/modLoaderMP.patch
|
||||
..\runtime\bin\applydiff.exe -uf -p2 -i ../forge/modLoaderMP.patch
|
||||
|
||||
..\runtime\bin\python\python_mcp ..\forge\lfcr.py ../forge/modLoaderMP.patch ../forge/modLoaderMP.patch
|
||||
..\runtime\bin\applydiff.exe -uf -p2 -i ../forge/modLoaderMP.patch
|
||||
|
||||
for /f "delims=" %%a in ('dir /a -d /b /S ..\forge\patches\minecraft_server') do (
|
||||
pushd "%%a" 2>nul
|
||||
if errorlevel 1 (
|
||||
..\runtime\bin\python\python_mcp ..\forge\lfcr.py "%%a" "%%a"
|
||||
..\runtime\bin\applydiff.exe -uf -p2 -i "%%a"
|
||||
) else popd
|
||||
)
|
||||
|
||||
for /f "delims=" %%a in ('dir /a -d /b /S ..\forge\patches') do (
|
||||
pushd "%%a" 2>nul
|
||||
if errorlevel 1 (
|
||||
..\runtime\bin\python\python_mcp ..\forge\lfcr.py "%%a" "%%a"
|
||||
..\runtime\bin\applydiff.exe -uf -p2 -i "%%a"
|
||||
) else popd
|
||||
)
|
||||
popd >nul
|
||||
|
||||
xcopy /Y /E forge\src\* src
|
||||
|
||||
cmd /C updatemcp.bat
|
||||
cmd /C updatenames.bat
|
||||
cmd /C updatemd5.bat
|
||||
+10
-44
@@ -5,55 +5,21 @@ echo
|
||||
|
||||
pushd .. > /dev/null
|
||||
|
||||
rm -rf conf
|
||||
mkdir conf
|
||||
cp -r forge/conf/* conf
|
||||
|
||||
if [ -f runtime/bin/fernflower.jar ];
|
||||
then
|
||||
mv runtime/bin/fernflower.jar runtime/bin/fernflower.jar-backup
|
||||
fi
|
||||
|
||||
./cleanup.sh
|
||||
./decompile.sh
|
||||
|
||||
if [ -f runtime/bin/fernflower.jar-backup ];
|
||||
then
|
||||
mv runtime/bin/fernflower.jar-backup runtime/bin/fernflower.jar
|
||||
fi
|
||||
|
||||
|
||||
pushd src > /dev/null
|
||||
find . -name *.java -exec sed -i 's/\r//g' \{\} \;
|
||||
find ../forge/ -name *.patch -exec sed -i 's/\r//g' \{\} \;
|
||||
|
||||
if [ -f ../jars/bin/minecraft.jar ];
|
||||
then
|
||||
cp ../forge/MLProp.java minecraft/net/minecraft/src/MLProp.java
|
||||
|
||||
for i in `find ../forge/patches/minecraft/ -type f`
|
||||
do
|
||||
patch -p2 -i $i
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
if [ -f ../jars/minecraft_server.jar ];
|
||||
then
|
||||
cp ../forge/MLProp.java minecraft_server/net/minecraft/src/MLProp.java
|
||||
|
||||
patch -p2 -i ../forge/modLoaderMP.patch
|
||||
|
||||
for i in `find ../forge/patches/minecraft_server/ -type f`
|
||||
do
|
||||
patch -p2 -i $i
|
||||
done
|
||||
fi
|
||||
find . -name *.java -exec sed -i 's/\r//g' \{\} \;
|
||||
cp ../forge/MLProp.java minecraft/net/minecraft/src/MLProp.java
|
||||
cp ../forge/MLProp.java minecraft_server/net/minecraft/src/MLProp.java
|
||||
patch -p2 -i ../forge/modLoaderMP.patch
|
||||
#patch -p1 -i ../forge/mlprop.patch
|
||||
for i in `find ../forge/patches/ -type f`
|
||||
do
|
||||
patch -p2 -i $i
|
||||
done
|
||||
popd > /dev/null
|
||||
|
||||
cp -r forge/src/* src
|
||||
|
||||
|
||||
./updatemcp.sh
|
||||
./updatenames.sh
|
||||
./updatemd5.sh
|
||||
./updatemd5.sh
|
||||
@@ -16,5 +16,3 @@ ScotTools Background: ScotTools was an API that enabled modders to add blocks to
|
||||
|
||||
* SpaceToad *
|
||||
|
||||
* LexManos *
|
||||
|
||||
+22
-6
@@ -1,18 +1,33 @@
|
||||
diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/server/MinecraftServer.java ../src_work/minecraft_server/net/minecraft/server/MinecraftServer.java
|
||||
--- ../src_base/minecraft_server/net/minecraft/server/MinecraftServer.java 2011-07-17 00:28:07.755771900 +0200
|
||||
+++ ../src_work/minecraft_server/net/minecraft/server/MinecraftServer.java 2011-07-17 00:28:09.485870900 +0200
|
||||
@@ -397,38 +397,7 @@
|
||||
@@ -333,41 +333,22 @@
|
||||
}
|
||||
finally
|
||||
{
|
||||
System.exit(0);
|
||||
- System.exit(0);
|
||||
+ try
|
||||
+ {
|
||||
+ stopServer();
|
||||
+ serverStopped = true;
|
||||
+ }
|
||||
+ catch(Throwable throwable2)
|
||||
+ {
|
||||
+ throwable2.printStackTrace();
|
||||
+ }
|
||||
+ finally
|
||||
+ {
|
||||
+ System.exit(0);
|
||||
+ }
|
||||
}
|
||||
- break MISSING_BLOCK_LABEL_350;
|
||||
}
|
||||
- }
|
||||
- try
|
||||
- {
|
||||
- stopServer();
|
||||
- serverStopped = true;
|
||||
- }
|
||||
- catch (Throwable throwable)
|
||||
- catch(Throwable throwable)
|
||||
- {
|
||||
- throwable.printStackTrace();
|
||||
- }
|
||||
@@ -28,7 +43,7 @@ diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/server
|
||||
- stopServer();
|
||||
- serverStopped = true;
|
||||
- }
|
||||
- catch (Throwable throwable3)
|
||||
- catch(Throwable throwable3)
|
||||
- {
|
||||
- throwable3.printStackTrace();
|
||||
- }
|
||||
@@ -38,9 +53,10 @@ diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/server
|
||||
- }
|
||||
- throw exception2;
|
||||
}
|
||||
+}
|
||||
|
||||
private void doTick()
|
||||
|
||||
{
|
||||
diff U3 ../src_base/minecraft_server/net/minecraft/src/MLProp.java ../src_work/minecraft_server/net/minecraft/src/MLProp.java
|
||||
--- ../src_base/minecraft_server/net/minecraft/src/MLProp.java Wed Nov 30 22:27:22 2011
|
||||
+++ ../src_work/minecraft_server/net/minecraft/src/MLProp.java Sun Dec 04 14:31:04 2011
|
||||
|
||||
@@ -55,13 +55,11 @@ mkdir src
|
||||
mkdir src/minecraft
|
||||
mkdir src/minecraft_server
|
||||
mkdir patches
|
||||
mkdir conf
|
||||
cp -r ../forge_client/src/* src/minecraft
|
||||
cp -r ../forge_server/src/* src/minecraft_server
|
||||
cp -r ../forge_common/* src/minecraft
|
||||
cp -r ../forge_common/* src/minecraft_server
|
||||
cp -r ../patches/* patches
|
||||
cp -r ../conf/* conf
|
||||
cp ../lfcr.py .
|
||||
cp ../install/install.cmd .
|
||||
cp ../install/install.sh .
|
||||
@@ -75,8 +73,6 @@ cd src
|
||||
remove_svn .
|
||||
cd ../patches
|
||||
remove_svn .
|
||||
cd ../conf
|
||||
remove_svn .
|
||||
cd ..
|
||||
|
||||
cd ..
|
||||
|
||||
@@ -1,89 +1,123 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Block.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Block.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,5 +1,6 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
@@ -277,12 +278,12 @@
|
||||
@@ -312,12 +313,14 @@
|
||||
|
||||
public float getBlockBrightness(IBlockAccess iblockaccess, int i, int j, int k)
|
||||
{
|
||||
- return iblockaccess.getBrightness(i, j, k, lightValue[blockID]);
|
||||
+ return iblockaccess.getBrightness(i, j, k, getLightValue(iblockaccess,i,j,k));
|
||||
+ return iblockaccess.getBrightness(i, j, k,
|
||||
+ getLightValue(iblockaccess,i,j,k));
|
||||
}
|
||||
|
||||
public int getMixedBrightnessForBlock(IBlockAccess iblockaccess, int i, int j, int k)
|
||||
{
|
||||
- return iblockaccess.getLightBrightnessForSkyBlocks(i, j, k, lightValue[blockID]);
|
||||
+ return iblockaccess.getLightBrightnessForSkyBlocks(i, j, k, getLightValue(iblockaccess,i,j,k));
|
||||
+ return iblockaccess.getLightBrightnessForSkyBlocks(i, j, k,
|
||||
+ getLightValue(iblockaccess,i,j,k));
|
||||
}
|
||||
|
||||
public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l)
|
||||
@@ -410,20 +411,15 @@
|
||||
@@ -438,25 +441,56 @@
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
-
|
||||
+
|
||||
+ /* FORGE: Metadata-sensitive version.
|
||||
+ */
|
||||
+ public int quantityDropped(int meta, int fortune, Random random)
|
||||
+ {
|
||||
+ return func_40198_a(fortune, random);
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Metadata-sensitive version.
|
||||
+ */
|
||||
+ public int quantityDropped(int meta, Random random)
|
||||
+ {
|
||||
+ return quantityDropped(meta, 0, random);
|
||||
+ }
|
||||
+
|
||||
public int idDropped(int i, Random random, int j)
|
||||
{
|
||||
return blockID;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Deprecated in favor of a metadata sensitive version
|
||||
+ * @param entityplayer Entity attacking the block
|
||||
+ * @return
|
||||
+ /* FORGE: This function isnt called by Minecraft anymore. Use
|
||||
+ * blockStrength(EntityPlayer,int) instead.
|
||||
+ */
|
||||
+ @Deprecated
|
||||
public float blockStrength(EntityPlayer entityplayer)
|
||||
{
|
||||
- if (blockHardness < 0.0F)
|
||||
- if(blockHardness < 0.0F)
|
||||
- {
|
||||
- return 0.0F;
|
||||
- }
|
||||
- if (!entityplayer.canHarvestBlock(this))
|
||||
- if(!entityplayer.canHarvestBlock(this))
|
||||
- {
|
||||
- return 1.0F / blockHardness / 100F;
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- return entityplayer.getCurrentPlayerStrVsBlock(this) / blockHardness / 30F;
|
||||
- }
|
||||
+ return blockStrength(entityplayer, 0);
|
||||
+ return blockStrength(entityplayer,0);
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: This function returns the complete list of drops for a block.
|
||||
+ */
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world,
|
||||
+ int i, int j, int k, int md, int fortune) {
|
||||
+
|
||||
+ ArrayList<ItemStack> tr = new ArrayList<ItemStack>();
|
||||
+
|
||||
+ int q = quantityDropped(md, fortune, world.rand);
|
||||
+ for (int n = 0; n < q; n++) {
|
||||
+ int id = idDropped(md, world.rand, 0);
|
||||
+ if(id > 0) {
|
||||
+ tr.add(new ItemStack(id, 1, damageDropped(md)));
|
||||
+ }
|
||||
+ }
|
||||
+ return tr;
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: This function returns the complete list of drops for a block.
|
||||
+ */
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world,
|
||||
+ int i, int j, int k, int md) {
|
||||
+ return getBlockDropped (world, i, j, k, md);
|
||||
}
|
||||
|
||||
public final void dropBlockAsItem(World world, int i, int j, int k, int l, int i1)
|
||||
@@ -437,18 +433,15 @@
|
||||
@@ -470,18 +504,13 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
- int j1 = quantityDroppedWithBonus(i1, world.rand);
|
||||
- for (int k1 = 0; k1 < j1; k1++)
|
||||
+
|
||||
+ ArrayList<ItemStack> items = getBlockDropped(world, i, j, k, l, i1);
|
||||
+ for(ItemStack item : items)
|
||||
{
|
||||
if (world.rand.nextFloat() > f)
|
||||
- int j1 = func_40198_a(i1, world.rand);
|
||||
- for(int k1 = 0; k1 < j1; k1++)
|
||||
- {
|
||||
+ ArrayList<ItemStack> ar = getBlockDropped(world, i, j, k, l, i1);
|
||||
+ for (ItemStack ist : ar) {
|
||||
if(world.rand.nextFloat() > f)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
- int l1 = idDropped(l, world.rand, i1);
|
||||
- if (l1 > 0)
|
||||
- if(l1 > 0)
|
||||
- {
|
||||
- dropBlockAsItem_do(world, i, j, k, new ItemStack(l1, 1, damageDropped(l)));
|
||||
- }
|
||||
+ dropBlockAsItem_do(world, i, j, k, item);
|
||||
+ dropBlockAsItem_do(world, i, j, k, ist);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,7 +689,7 @@
|
||||
{
|
||||
entityplayer.addStat(StatList.mineBlockStatArray[blockID], 1);
|
||||
entityplayer.addExhaustion(0.025F);
|
||||
- if (renderAsNormalBlock() && !isBlockContainer[blockID] && EnchantmentHelper.getSilkTouchModifier(entityplayer.inventory))
|
||||
+ if (renderAsNormalBlock() && !hasTileEntity(l) && EnchantmentHelper.getSilkTouchModifier(entityplayer.inventory))
|
||||
{
|
||||
ItemStack itemstack = createStackedBlock(l);
|
||||
if (itemstack != null)
|
||||
@@ -780,6 +773,273 @@
|
||||
{
|
||||
}
|
||||
@@ -805,6 +834,107 @@
|
||||
return iblockaccess.isBlockNormalCube(i, j, k) ? 0.2F : 1.0F;
|
||||
}
|
||||
|
||||
+ /* FORGE: Allow a block to set illumination on a coordinate basis.
|
||||
@@ -95,8 +129,8 @@
|
||||
+ /* FORGE: Implement and return true if you wish this block to behave
|
||||
+ * like a ladder when the player is inside.
|
||||
+ */
|
||||
+ public boolean isLadder(World world, int i, int j, int k) {
|
||||
+ return false;
|
||||
+ public boolean isLadder() {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Return true if the block is a normal, solid cube. This
|
||||
@@ -186,172 +220,6 @@
|
||||
+ public void addCreativeItems(ArrayList itemList)
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ protected static int blockFireSpreadSpeed[] = new int[256];
|
||||
+ protected static int blockFlammability[] = new int[256];
|
||||
+
|
||||
+ /**
|
||||
+ * Chance that fire will spread and consume this block.
|
||||
+ * 300 being a 100% chance, 0, being a 0% chance.
|
||||
+ *
|
||||
+ * @param world The current world
|
||||
+ * @param x The blocks X position
|
||||
+ * @param y The blocks Y position
|
||||
+ * @param z The blocks Z position
|
||||
+ * @param metadata The blocks current metadata
|
||||
+ * @param face The face that the fire is coming from
|
||||
+ * @return A number ranging from 0 to 300 relating used to determine if the block will be consumed by fire
|
||||
+ */
|
||||
+ public int getFlammability(IBlockAccess world, int x, int y, int z, int metadata, int face)
|
||||
+ {
|
||||
+ return blockFlammability[blockID];
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when fire is updating, checks if a block face can catch fire.
|
||||
+ *
|
||||
+ *
|
||||
+ * @param world The current world
|
||||
+ * @param x The blocks X position
|
||||
+ * @param y The blocks Y position
|
||||
+ * @param z The blocks Z position
|
||||
+ * @param metadata The blocks current metadata
|
||||
+ * @param face The face that the fire is coming from
|
||||
+ * @return True if the face can be on fire, false otherwise.
|
||||
+ */
|
||||
+ public boolean isFlammable(IBlockAccess world, int x, int y, int z, int metadata, int face)
|
||||
+ {
|
||||
+ return getFlammability(world, x, y, z, metadata, face) > 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when fire is updating on a neighbor block.
|
||||
+ * The higher the number returned, the faster fire will spread around this block.
|
||||
+ *
|
||||
+ * @param world The current world
|
||||
+ * @param x The blocks X position
|
||||
+ * @param y The blocks Y position
|
||||
+ * @param z The blocks Z position
|
||||
+ * @param metadata The blocks current metadata
|
||||
+ * @param face The face that the fire is coming from
|
||||
+ * @return A number that is used to determine the speed of fire growth around the block
|
||||
+ */
|
||||
+ public int getFireSpreadSpeed(World world, int x, int y, int z, int metadata, int face)
|
||||
+ {
|
||||
+ return blockFireSpreadSpeed[blockID];
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Currently only called by fire when it is on top of this block.
|
||||
+ * Returning true will prevent the fire from naturally dying during updating.
|
||||
+ * Also prevents firing from dying from rain.
|
||||
+ *
|
||||
+ * @param world The current world
|
||||
+ * @param x The blocks X position
|
||||
+ * @param y The blocks Y position
|
||||
+ * @param z The blocks Z position
|
||||
+ * @param metadata The blocks current metadata
|
||||
+ * @param face The face that the fire is coming from
|
||||
+ * @return
|
||||
+ */
|
||||
+ public boolean isFireSource(World world, int x, int y, int z, int metadata, int face)
|
||||
+ {
|
||||
+ if (blockID == Block.netherrack.blockID && face == 0)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ if ((world.worldProvider instanceof WorldProviderEnd) && blockID == Block.bedrock.blockID && face == 0)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called by BlockFire to setup the burn values of vanilla blocks.
|
||||
+ * @param id The block id
|
||||
+ * @param encouragement How much the block encourages fire to spread
|
||||
+ * @param flammability how easy a block is to catch fire
|
||||
+ */
|
||||
+ public static void setBurnProperties(int id, int encouragement, int flammability)
|
||||
+ {
|
||||
+ blockFireSpreadSpeed[id] = encouragement;
|
||||
+ blockFlammability[id] = flammability;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called throughout the code as a replacement for block instanceof BlockContainer
|
||||
+ * Moving this to the Block base class allows for mods that wish to extend vinella
|
||||
+ * blocks, and also want to have a tile entity on that block, may.
|
||||
+ *
|
||||
+ * Return true from this function to specify this block has a tile entity.
|
||||
+ *
|
||||
+ * @param metadata Metadata of the current block
|
||||
+ * @return True if block has a tile entity, false otherwise
|
||||
+ */
|
||||
+ public boolean hasTileEntity(int metadata)
|
||||
+ {
|
||||
+ return isBlockContainer[blockID];
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called throughout the code as a replacement for BlockContainer.getBlockEntity
|
||||
+ * Return the same thing you would from that function.
|
||||
+ * This will fall back to BlockContainer.getBlockEntity if this block is a BlockContainer.
|
||||
+ *
|
||||
+ * @param metadata The Metadata of the current block
|
||||
+ * @return A instance of a class extending TileEntity
|
||||
+ */
|
||||
+ public TileEntity getTileEntity(int metadata)
|
||||
+ {
|
||||
+ if (this instanceof BlockContainer)
|
||||
+ {
|
||||
+ return ((BlockContainer)this).getBlockEntity(metadata);
|
||||
+ }
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Metadata and fortune sensitive version, this replaces the old (int meta, Random rand)
|
||||
+ * version in 1.1.
|
||||
+ *
|
||||
+ * @param meta Blocks Metadata
|
||||
+ * @param fortune Current item fortune level
|
||||
+ * @param random Random number generator
|
||||
+ * @return The number of items to drop
|
||||
+ */
|
||||
+ public int quantityDropped(int meta, int fortune, Random random)
|
||||
+ {
|
||||
+ return quantityDroppedWithBonus(fortune, random);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * This returns a complete list of items dropped from this block.
|
||||
+ *
|
||||
+ * @param world The current world
|
||||
+ * @param X X Position
|
||||
+ * @param Y Y Position
|
||||
+ * @param Z Z Position
|
||||
+ * @param metadata Current metadata
|
||||
+ * @param fortune Breakers fortune level
|
||||
+ * @return A ArrayList containing all items this block drops
|
||||
+ */
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world, int X, int Y, int Z, int metadata, int fortune)
|
||||
+ {
|
||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
+
|
||||
+ int count = quantityDropped(metadata, fortune, world.rand);
|
||||
+ for(int i = 0; i < count; i++)
|
||||
+ {
|
||||
+ int id = idDropped(metadata, world.rand, 0);
|
||||
+ if (id > 0)
|
||||
+ {
|
||||
+ ret.add(new ItemStack(id, 1, damageDropped(metadata)));
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
static Class _mthclass$(String s)
|
||||
{
|
||||
|
||||
@@ -1,119 +1,119 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockButton.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockButton.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -32,36 +32,36 @@
|
||||
@@ -41,36 +41,36 @@
|
||||
|
||||
public boolean canPlaceBlockOnSide(World world, int i, int j, int k, int l)
|
||||
{
|
||||
- if (l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return l == 5 && world.isBlockNormalCube(i - 1, j, k);
|
||||
+ return l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5);
|
||||
+ return l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return world.isBlockNormalCube(i, j, k + 1);
|
||||
+ return world.isBlockSolidOnSide(i, j, k + 1, 2);
|
||||
+ return world.isBlockSolidOnSide(i, j, k + 1,2);
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World world, int i, int j, int k, int l)
|
||||
@@ -69,19 +69,19 @@
|
||||
@@ -78,19 +78,19 @@
|
||||
int i1 = world.getBlockMetadata(i, j, k);
|
||||
int j1 = i1 & 8;
|
||||
i1 &= 7;
|
||||
- if (l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
i1 = 4;
|
||||
}
|
||||
- else if (l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ else if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
} else
|
||||
- if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
i1 = 3;
|
||||
}
|
||||
- else if (l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ else if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
} else
|
||||
- if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
i1 = 2;
|
||||
}
|
||||
- else if (l == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ else if (l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
} else
|
||||
- if(l == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
i1 = 1;
|
||||
}
|
||||
@@ -94,19 +94,19 @@
|
||||
} else
|
||||
@@ -102,19 +102,19 @@
|
||||
|
||||
private int getOrientation(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
- return !world.isBlockNormalCube(i, j, k + 1) ? 1 : 4;
|
||||
+ return !world.isBlockSolidOnSide(i, j, k + 1, 2) ? 1 : 4;
|
||||
+ return !world.isBlockSolidOnSide(i, j, k + 1,2) ? 1 : 4;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
|
||||
@@ -115,19 +115,19 @@
|
||||
@@ -123,19 +123,19 @@
|
||||
{
|
||||
int i1 = world.getBlockMetadata(i, j, k) & 7;
|
||||
boolean flag = false;
|
||||
- if (!world.isBlockNormalCube(i - 1, j, k) && i1 == 1)
|
||||
+ if (!world.isBlockSolidOnSide(i - 1, j, k, 5) && i1 == 1)
|
||||
- if(!world.isBlockNormalCube(i - 1, j, k) && i1 == 1)
|
||||
+ if(!world.isBlockSolidOnSide(i - 1, j, k,5) && i1 == 1)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i + 1, j, k) && i1 == 2)
|
||||
+ if (!world.isBlockSolidOnSide(i + 1, j, k, 4) && i1 == 2)
|
||||
- if(!world.isBlockNormalCube(i + 1, j, k) && i1 == 2)
|
||||
+ if(!world.isBlockSolidOnSide(i + 1, j, k,4) && i1 == 2)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j, k - 1) && i1 == 3)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k - 1, 3) && i1 == 3)
|
||||
- if(!world.isBlockNormalCube(i, j, k - 1) && i1 == 3)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k - 1,3) && i1 == 3)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j, k + 1) && i1 == 4)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k + 1, 2) && i1 == 4)
|
||||
- if(!world.isBlockNormalCube(i, j, k + 1) && i1 == 4)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k + 1,2) && i1 == 4)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -1,31 +1,31 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockChest.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockChest.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -424,23 +424,23 @@
|
||||
@@ -429,23 +429,23 @@
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j + 1, k))
|
||||
+ if (world.isBlockSolidOnSide(i, j + 1, k, 0))
|
||||
- if(world.isBlockNormalCube(i, j + 1, k))
|
||||
+ if(world.isBlockSolidOnSide(i, j + 1, k,0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.getBlockId(i - 1, j, k) == blockID && world.isBlockNormalCube(i - 1, j + 1, k))
|
||||
+ if (world.getBlockId(i - 1, j, k) == blockID && world.isBlockSolidOnSide(i - 1, j + 1, k, 0))
|
||||
- if(world.getBlockId(i - 1, j, k) == blockID && world.isBlockNormalCube(i - 1, j + 1, k))
|
||||
+ if(world.getBlockId(i - 1, j, k) == blockID && world.isBlockSolidOnSide(i - 1, j + 1, k,0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.getBlockId(i + 1, j, k) == blockID && world.isBlockNormalCube(i + 1, j + 1, k))
|
||||
+ if (world.getBlockId(i + 1, j, k) == blockID && world.isBlockSolidOnSide(i + 1, j + 1, k, 0))
|
||||
- if(world.getBlockId(i + 1, j, k) == blockID && world.isBlockNormalCube(i + 1, j + 1, k))
|
||||
+ if(world.getBlockId(i + 1, j, k) == blockID && world.isBlockSolidOnSide(i + 1, j + 1, k,0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.getBlockId(i, j, k - 1) == blockID && world.isBlockNormalCube(i, j + 1, k - 1))
|
||||
+ if (world.getBlockId(i, j, k - 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k - 1, 0))
|
||||
- if(world.getBlockId(i, j, k - 1) == blockID && world.isBlockNormalCube(i, j + 1, k - 1))
|
||||
+ if(world.getBlockId(i, j, k - 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k - 1,0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.getBlockId(i, j, k + 1) == blockID && world.isBlockNormalCube(i, j + 1, k + 1))
|
||||
+ if (world.getBlockId(i, j, k + 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k + 1, 0))
|
||||
- if(world.getBlockId(i, j, k + 1) == blockID && world.isBlockNormalCube(i, j + 1, k + 1))
|
||||
+ if(world.getBlockId(i, j, k + 1) == blockID && world.isBlockSolidOnSide(i, j + 1, k + 1,0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockContainer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockContainer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -17,7 +17,7 @@
|
||||
@@ -26,7 +26,7 @@
|
||||
public void onBlockAdded(World world, int i, int j, int k)
|
||||
{
|
||||
super.onBlockAdded(world, i, j, k);
|
||||
@@ -9,19 +9,13 @@
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World world, int i, int j, int k)
|
||||
@@ -28,6 +28,18 @@
|
||||
@@ -37,6 +37,12 @@
|
||||
|
||||
public abstract TileEntity getBlockEntity();
|
||||
|
||||
+ /* FORGE: Metadata-sensitive version, to fix 1.8.1 regression.
|
||||
+ */
|
||||
+ /**
|
||||
+ * Metadata-sensitive version, to fix 1.8.1 regression.
|
||||
+ * @param metadata The current Metadata
|
||||
+ * @return And instance of the TileEntity class for this block
|
||||
+ */
|
||||
+ public TileEntity getBlockEntity(int md)
|
||||
+ {
|
||||
+ public TileEntity getBlockEntity(int md) {
|
||||
+ return getBlockEntity();
|
||||
+ }
|
||||
+
|
||||
|
||||
@@ -1,49 +1,48 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockCrops.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockCrops.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -5,6 +5,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
+import java.util.ArrayList;
|
||||
|
||||
public class BlockCrops extends BlockFlower
|
||||
{
|
||||
@@ -98,27 +99,23 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// BlockFlower, Block, World, EntityItem,
|
||||
@@ -108,28 +109,16 @@
|
||||
return 6;
|
||||
}
|
||||
|
||||
- public void dropBlockAsItemWithChance(World world, int i, int j, int k, int l, float f, int i1)
|
||||
+ @Override
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int meta, int fortune)
|
||||
{
|
||||
- {
|
||||
- super.dropBlockAsItemWithChance(world, i, j, k, l, f, 0);
|
||||
- if (world.multiplayerWorld)
|
||||
- if(world.multiplayerWorld)
|
||||
- {
|
||||
- return;
|
||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
+ if (meta == 7)
|
||||
+ {
|
||||
+ ret.add(new ItemStack(Item.wheat));
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world,
|
||||
+ int i, int j, int k, int md) {
|
||||
+ ArrayList<ItemStack> tr = new ArrayList<ItemStack>();
|
||||
+ if (md == 7) tr.add(new ItemStack(Item.wheat));
|
||||
+
|
||||
+ for(int n = 0; n < 3; n++) {
|
||||
+ if (world.rand.nextInt(15) <= md)
|
||||
+ tr.add(new ItemStack(Item.seeds));
|
||||
}
|
||||
- int j1 = 3 + i1;
|
||||
- for (int k1 = 0; k1 < j1; k1++)
|
||||
+
|
||||
+ for (int n = 0; n < 3 + fortune; n++)
|
||||
{
|
||||
- if (world.rand.nextInt(15) <= l)
|
||||
+ if (world.rand.nextInt(15) <= meta)
|
||||
{
|
||||
- for(int k1 = 0; k1 < j1; k1++)
|
||||
- {
|
||||
- if(world.rand.nextInt(15) <= l)
|
||||
- {
|
||||
- float f1 = 0.7F;
|
||||
- float f2 = world.rand.nextFloat() * f1 + (1.0F - f1) * 0.5F;
|
||||
- float f3 = world.rand.nextFloat() * f1 + (1.0F - f1) * 0.5F;
|
||||
- float f4 = world.rand.nextFloat() * f1 + (1.0F - f1) * 0.5F;
|
||||
- EntityItem entityitem = new EntityItem(world, (float)i + f2, (float)j + f3, (float)k + f4, new ItemStack(Item.seeds));
|
||||
- entityitem.delayBeforeCanPickup = 10;
|
||||
- world.spawnEntityInWorld(entityitem);
|
||||
+ ret.add(new ItemStack(Item.seeds));
|
||||
}
|
||||
}
|
||||
+ return ret;
|
||||
- world.entityJoinedWorld(entityitem);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
+ return tr;
|
||||
}
|
||||
|
||||
public int idDropped(int i, Random random, int j)
|
||||
@@ -1,29 +1,29 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockDoor.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockDoor.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -101,7 +101,7 @@
|
||||
@@ -111,7 +111,7 @@
|
||||
{
|
||||
if (blockMaterial == Material.iron)
|
||||
if(blockMaterial == Material.iron)
|
||||
{
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
int l = world.getBlockMetadata(i, j, k);
|
||||
if ((l & 8) != 0)
|
||||
@@ -169,7 +169,7 @@
|
||||
if((l & 8) != 0)
|
||||
@@ -178,7 +178,7 @@
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
flag = true;
|
||||
@@ -238,7 +238,7 @@
|
||||
}
|
||||
else
|
||||
@@ -241,7 +241,7 @@
|
||||
return false;
|
||||
} else
|
||||
{
|
||||
- return world.isBlockNormalCube(i, j - 1, k) && super.canPlaceBlockAt(world, i, j, k) && super.canPlaceBlockAt(world, i, j + 1, k);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k, 1) && super.canPlaceBlockAt(world, i, j, k) && super.canPlaceBlockAt(world, i, j + 1, k);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k,1) && super.canPlaceBlockAt(world, i, j, k) && super.canPlaceBlockAt(world, i, j + 1, k);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,304 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockFire.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockFire.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -10,8 +10,8 @@
|
||||
protected BlockFire(int i, int j)
|
||||
{
|
||||
super(i, j, Material.fire);
|
||||
- chanceToEncourageFire = new int[256];
|
||||
- abilityToCatchFire = new int[256];
|
||||
+ chanceToEncourageFire = Block.blockFireSpreadSpeed;
|
||||
+ abilityToCatchFire = Block.blockFlammability;
|
||||
setTickOnLoad(true);
|
||||
}
|
||||
|
||||
@@ -28,11 +28,10 @@
|
||||
setBurnRate(Block.cloth.blockID, 30, 60);
|
||||
setBurnRate(Block.vine.blockID, 15, 100);
|
||||
}
|
||||
-
|
||||
+
|
||||
private void setBurnRate(int i, int j, int k)
|
||||
{
|
||||
- chanceToEncourageFire[i] = j;
|
||||
- abilityToCatchFire[i] = k;
|
||||
+ Block.setBurnProperties(i, j, k);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
|
||||
@@ -67,11 +66,9 @@
|
||||
|
||||
public void updateTick(World world, int i, int j, int k, Random random)
|
||||
{
|
||||
- boolean flag = world.getBlockId(i, j - 1, k) == Block.netherrack.blockID;
|
||||
- if ((world.worldProvider instanceof WorldProviderEnd) && world.getBlockId(i, j - 1, k) == Block.bedrock.blockID)
|
||||
- {
|
||||
- flag = true;
|
||||
- }
|
||||
+ Block base = Block.blocksList[world.getBlockId(i, j - 1, k)];
|
||||
+ boolean flag = (base != null && base.isFireSource(world, i, j - 1, k, world.getBlockMetadata(i, j - 1, k), 0));
|
||||
+
|
||||
if (!canPlaceBlockAt(world, i, j, k))
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
@@ -89,23 +86,23 @@
|
||||
world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
|
||||
if (!flag && !func_263_h(world, i, j, k))
|
||||
{
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) || l > 3)
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) || l > 3)
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
- if (!flag && !canBlockCatchFire(world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0)
|
||||
+ if (!flag && !canBlockCatchFire(world, i, j - 1, k, 1) && l == 15 && random.nextInt(4) == 0)
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
return;
|
||||
}
|
||||
- tryToCatchBlockOnFire(world, i + 1, j, k, 300, random, l);
|
||||
- tryToCatchBlockOnFire(world, i - 1, j, k, 300, random, l);
|
||||
- tryToCatchBlockOnFire(world, i, j - 1, k, 250, random, l);
|
||||
- tryToCatchBlockOnFire(world, i, j + 1, k, 250, random, l);
|
||||
- tryToCatchBlockOnFire(world, i, j, k - 1, 300, random, l);
|
||||
- tryToCatchBlockOnFire(world, i, j, k + 1, 300, random, l);
|
||||
+ tryToCatchBlockOnFire(world, i + 1, j, k, 300, random, l, 4);
|
||||
+ tryToCatchBlockOnFire(world, i - 1, j, k, 300, random, l, 5);
|
||||
+ tryToCatchBlockOnFire(world, i, j - 1, k, 250, random, l, 1);
|
||||
+ tryToCatchBlockOnFire(world, i, j + 1, k, 250, random, l, 0);
|
||||
+ tryToCatchBlockOnFire(world, i, j, k - 1, 300, random, l, 3);
|
||||
+ tryToCatchBlockOnFire(world, i, j, k + 1, 300, random, l, 2);
|
||||
for (int i1 = i - 1; i1 <= i + 1; i1++)
|
||||
{
|
||||
for (int j1 = k - 1; j1 <= k + 1; j1++)
|
||||
@@ -142,9 +139,24 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Deprecated for a side-sensitive version
|
||||
+ */
|
||||
+ @Deprecated
|
||||
private void tryToCatchBlockOnFire(World world, int i, int j, int k, int l, Random random, int i1)
|
||||
{
|
||||
- int j1 = abilityToCatchFire[world.getBlockId(i, j, k)];
|
||||
+ tryToCatchBlockOnFire(world, i, j, k, l, random, i1, 0);
|
||||
+ }
|
||||
+
|
||||
+ private void tryToCatchBlockOnFire(World world, int i, int j, int k, int l, Random random, int i1, int face)
|
||||
+ {
|
||||
+ int j1 = 0;
|
||||
+ Block block = Block.blocksList[world.getBlockId(i, j, k)];
|
||||
+ if (block != null)
|
||||
+ {
|
||||
+ j1 = block.getFlammability(world, i, j, k, world.getBlockMetadata(i, j, k), face);
|
||||
+ }
|
||||
+
|
||||
if (random.nextInt(l) < j1)
|
||||
{
|
||||
boolean flag = world.getBlockId(i, j, k) == Block.tnt.blockID;
|
||||
@@ -170,27 +182,27 @@
|
||||
|
||||
private boolean func_263_h(World world, int i, int j, int k)
|
||||
{
|
||||
- if (canBlockCatchFire(world, i + 1, j, k))
|
||||
+ if (canBlockCatchFire(world, i + 1, j, k, 4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (canBlockCatchFire(world, i - 1, j, k))
|
||||
+ if (canBlockCatchFire(world, i - 1, j, k, 5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (canBlockCatchFire(world, i, j - 1, k))
|
||||
+ if (canBlockCatchFire(world, i, j - 1, k, 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (canBlockCatchFire(world, i, j + 1, k))
|
||||
+ if (canBlockCatchFire(world, i, j + 1, k, 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (canBlockCatchFire(world, i, j, k - 1))
|
||||
+ if (canBlockCatchFire(world, i, j, k - 1, 3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return canBlockCatchFire(world, i, j, k + 1);
|
||||
+ return canBlockCatchFire(world, i, j, k + 1, 2);
|
||||
}
|
||||
|
||||
private int getChanceOfNeighborsEncouragingFire(World world, int i, int j, int k)
|
||||
@@ -202,12 +214,12 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- l = getChanceToEncourageFire(world, i + 1, j, k, l);
|
||||
- l = getChanceToEncourageFire(world, i - 1, j, k, l);
|
||||
- l = getChanceToEncourageFire(world, i, j - 1, k, l);
|
||||
- l = getChanceToEncourageFire(world, i, j + 1, k, l);
|
||||
- l = getChanceToEncourageFire(world, i, j, k - 1, l);
|
||||
- l = getChanceToEncourageFire(world, i, j, k + 1, l);
|
||||
+ l = getChanceToEncourageFire(world, i + 1, j, k, l, 4);
|
||||
+ l = getChanceToEncourageFire(world, i - 1, j, k, l, 5);
|
||||
+ l = getChanceToEncourageFire(world, i, j - 1, k, l, 1);
|
||||
+ l = getChanceToEncourageFire(world, i, j + 1, k, l, 0);
|
||||
+ l = getChanceToEncourageFire(world, i, j, k - 1, l, 3);
|
||||
+ l = getChanceToEncourageFire(world, i, j, k + 1, l, 2);
|
||||
return l;
|
||||
}
|
||||
}
|
||||
@@ -217,32 +229,32 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Deprecated for a side-sensitive version
|
||||
+ */
|
||||
+ @Deprecated
|
||||
public boolean canBlockCatchFire(IBlockAccess iblockaccess, int i, int j, int k)
|
||||
{
|
||||
- return chanceToEncourageFire[iblockaccess.getBlockId(i, j, k)] > 0;
|
||||
+ return canBlockCatchFire(iblockaccess, i, j, k, 0);
|
||||
}
|
||||
-
|
||||
+
|
||||
+ /**
|
||||
+ * Deprecated for a side-sensitive version
|
||||
+ */
|
||||
+ @Deprecated
|
||||
public int getChanceToEncourageFire(World world, int i, int j, int k, int l)
|
||||
{
|
||||
- int i1 = chanceToEncourageFire[world.getBlockId(i, j, k)];
|
||||
- if (i1 > l)
|
||||
- {
|
||||
- return i1;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- return l;
|
||||
- }
|
||||
+ return getChanceToEncourageFire(world, i, j, k, l, 0);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- return world.isBlockNormalCube(i, j - 1, k) || func_263_h(world, i, j, k);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k, 1) || func_263_h(world, i, j, k);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
|
||||
{
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) && !func_263_h(world, i, j, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && !func_263_h(world, i, j, k))
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
return;
|
||||
@@ -259,7 +271,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) && !func_263_h(world, i, j, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && !func_263_h(world, i, j, k))
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
return;
|
||||
@@ -277,7 +289,7 @@
|
||||
{
|
||||
world.playSoundEffect((float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, "fire.fire", 1.0F + random.nextFloat(), random.nextFloat() * 0.7F + 0.3F);
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j - 1, k) || Block.fire.canBlockCatchFire(world, i, j - 1, k))
|
||||
+ if (world.isBlockSolidOnSide(i, j - 1, k, 1) || Block.fire.canBlockCatchFire(world, i, j - 1, k))
|
||||
{
|
||||
for (int l = 0; l < 3; l++)
|
||||
{
|
||||
@@ -289,7 +301,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (Block.fire.canBlockCatchFire(world, i - 1, j, k))
|
||||
+ if (Block.fire.canBlockCatchFire(world, i - 1, j, k, 5))
|
||||
{
|
||||
for (int i1 = 0; i1 < 2; i1++)
|
||||
{
|
||||
@@ -299,7 +311,7 @@
|
||||
world.spawnParticle("largesmoke", f1, f7, f13, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(world, i + 1, j, k))
|
||||
+ if (Block.fire.canBlockCatchFire(world, i + 1, j, k, 4))
|
||||
{
|
||||
for (int j1 = 0; j1 < 2; j1++)
|
||||
{
|
||||
@@ -309,7 +321,7 @@
|
||||
world.spawnParticle("largesmoke", f2, f8, f14, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(world, i, j, k - 1))
|
||||
+ if (Block.fire.canBlockCatchFire(world, i, j, k - 1, 3))
|
||||
{
|
||||
for (int k1 = 0; k1 < 2; k1++)
|
||||
{
|
||||
@@ -319,7 +331,7 @@
|
||||
world.spawnParticle("largesmoke", f3, f9, f15, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(world, i, j, k + 1))
|
||||
+ if (Block.fire.canBlockCatchFire(world, i, j, k + 1, 2))
|
||||
{
|
||||
for (int l1 = 0; l1 < 2; l1++)
|
||||
{
|
||||
@@ -329,7 +341,7 @@
|
||||
world.spawnParticle("largesmoke", f4, f10, f16, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(world, i, j + 1, k))
|
||||
+ if (Block.fire.canBlockCatchFire(world, i, j + 1, k, 0))
|
||||
{
|
||||
for (int i2 = 0; i2 < 2; i2++)
|
||||
{
|
||||
@@ -341,4 +353,41 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Forge: Side sensitive version
|
||||
+ */
|
||||
+ public boolean canBlockCatchFire(IBlockAccess world, int i, int j, int k, int face)
|
||||
+ {
|
||||
+ Block block = Block.blocksList[world.getBlockId(i, j, k)];
|
||||
+ if (block != null)
|
||||
+ {
|
||||
+ return block.isFlammable(world, i, j, k, world.getBlockMetadata(i, j, k), face);
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Forge: Side sensitive version
|
||||
+ */
|
||||
+ public int getChanceToEncourageFire(World world, int i, int j, int k, int l, int face)
|
||||
+ {
|
||||
+ int i1 = 0;
|
||||
+
|
||||
+ Block block = Block.blocksList[world.getBlockId(i, j, k)];
|
||||
+ if (block != null)
|
||||
+ {
|
||||
+ i1 = block.getFireSpreadSpeed(world, i, j, k, world.getBlockMetadata(i, j, k), face);
|
||||
+ }
|
||||
+
|
||||
+ if (i1 > l)
|
||||
+ {
|
||||
+ return i1;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return l;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
@@ -1,93 +1,84 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockLadder.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockLadder.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -35,7 +35,7 @@
|
||||
setBlockBounds(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F);
|
||||
}
|
||||
@@ -63,6 +63,11 @@
|
||||
return super.getSelectedBoundingBoxFromPool(world, i, j, k);
|
||||
- }
|
||||
+ }
|
||||
}
|
||||
|
||||
+ /* FORGE: Implemented base method, see Block.isLadder */
|
||||
+ public boolean isLadder() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
public boolean isOpaqueCube()
|
||||
{
|
||||
@@ -54,37 +54,37 @@
|
||||
return false;
|
||||
@@ -80,37 +85,37 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return world.isBlockNormalCube(i, j, k + 1);
|
||||
+ return world.isBlockSolidOnSide(i, j, k + 1, 2);
|
||||
+ return world.isBlockSolidOnSide(i, j, k + 1,2);
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World world, int i, int j, int k, int l)
|
||||
{
|
||||
int i1 = world.getBlockMetadata(i, j, k);
|
||||
- if ((i1 == 0 || l == 2) && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if ((i1 == 0 || l == 2) && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if((i1 == 0 || l == 2) && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if((i1 == 0 || l == 2) && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
i1 = 2;
|
||||
}
|
||||
- if ((i1 == 0 || l == 3) && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if ((i1 == 0 || l == 3) && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if((i1 == 0 || l == 3) && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if((i1 == 0 || l == 3) && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
i1 = 3;
|
||||
}
|
||||
- if ((i1 == 0 || l == 4) && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if ((i1 == 0 || l == 4) && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if((i1 == 0 || l == 4) && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if((i1 == 0 || l == 4) && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
i1 = 4;
|
||||
}
|
||||
- if ((i1 == 0 || l == 5) && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if ((i1 == 0 || l == 5) && world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if((i1 == 0 || l == 5) && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if((i1 == 0 || l == 5) && world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
i1 = 5;
|
||||
}
|
||||
@@ -95,19 +95,19 @@
|
||||
@@ -121,19 +126,19 @@
|
||||
{
|
||||
int i1 = world.getBlockMetadata(i, j, k);
|
||||
boolean flag = false;
|
||||
- if (i1 == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (i1 == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(i1 == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(i1 == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (i1 == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (i1 == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(i1 == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(i1 == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (i1 == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (i1 == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(i1 == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(i1 == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (i1 == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (i1 == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(i1 == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(i1 == 5 && world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -123,4 +123,11 @@
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
+
|
||||
+ /* FORGE: Implemented base method, see Block.isLadder */
|
||||
+ @Override
|
||||
+ public boolean isLadder(World world, int X, int Y, int Z)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
}
|
||||
@@ -1,120 +1,120 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockLever.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockLever.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -31,44 +31,44 @@
|
||||
@@ -40,44 +40,44 @@
|
||||
|
||||
public boolean canPlaceBlockOnSide(World world, int i, int j, int k, int l)
|
||||
{
|
||||
- if (l == 1 && world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (l == 1 && world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(l == 1 && world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(l == 1 && world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return l == 5 && world.isBlockNormalCube(i - 1, j, k);
|
||||
+ return l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5);
|
||||
+ return l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- return world.isBlockNormalCube(i, j - 1, k);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k, 1);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k,1);
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World world, int i, int j, int k, int l)
|
||||
@@ -77,23 +77,23 @@
|
||||
@@ -86,23 +86,23 @@
|
||||
int j1 = i1 & 8;
|
||||
i1 &= 7;
|
||||
i1 = -1;
|
||||
- if (l == 1 && world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (l == 1 && world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(l == 1 && world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(l == 1 && world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
i1 = 5 + world.rand.nextInt(2);
|
||||
}
|
||||
- if (l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(l == 2 && world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(l == 2 && world.isBlockSolidOnSide(i, j, k + 1,2))
|
||||
{
|
||||
i1 = 4;
|
||||
}
|
||||
- if (l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(l == 3 && world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(l == 3 && world.isBlockSolidOnSide(i, j, k - 1,3))
|
||||
{
|
||||
i1 = 3;
|
||||
}
|
||||
- if (l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(l == 4 && world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
i1 = 2;
|
||||
}
|
||||
- if (l == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(l == 5 && world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
i1 = 1;
|
||||
}
|
||||
@@ -116,27 +116,27 @@
|
||||
@@ -124,27 +124,27 @@
|
||||
{
|
||||
int i1 = world.getBlockMetadata(i, j, k) & 7;
|
||||
boolean flag = false;
|
||||
- if (!world.isBlockNormalCube(i - 1, j, k) && i1 == 1)
|
||||
+ if (!world.isBlockSolidOnSide(i - 1, j, k, 5) && i1 == 1)
|
||||
- if(!world.isBlockNormalCube(i - 1, j, k) && i1 == 1)
|
||||
+ if(!world.isBlockSolidOnSide(i - 1, j, k,5) && i1 == 1)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i + 1, j, k) && i1 == 2)
|
||||
+ if (!world.isBlockSolidOnSide(i + 1, j, k, 4) && i1 == 2)
|
||||
- if(!world.isBlockNormalCube(i + 1, j, k) && i1 == 2)
|
||||
+ if(!world.isBlockSolidOnSide(i + 1, j, k,4) && i1 == 2)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j, k - 1) && i1 == 3)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k - 1, 3) && i1 == 3)
|
||||
- if(!world.isBlockNormalCube(i, j, k - 1) && i1 == 3)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k - 1,3) && i1 == 3)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j, k + 1) && i1 == 4)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k + 1, 2) && i1 == 4)
|
||||
- if(!world.isBlockNormalCube(i, j, k + 1) && i1 == 4)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k + 1,2) && i1 == 4)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) && i1 == 5)
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && i1 == 5)
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k) && i1 == 5)
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1) && i1 == 5)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) && i1 == 6)
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && i1 == 6)
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k) && i1 == 6)
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1) && i1 == 6)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockNetherStalk.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockNetherStalk.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockNetherStalk extends BlockFlower
|
||||
@@ -57,25 +58,25 @@
|
||||
return 6;
|
||||
}
|
||||
|
||||
- public void dropBlockAsItemWithChance(World world, int i, int j, int k, int l, float f, int i1)
|
||||
+ @Override
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int meta, int fortune)
|
||||
{
|
||||
- if (world.multiplayerWorld)
|
||||
- {
|
||||
- return;
|
||||
- }
|
||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
int j1 = 1;
|
||||
- if (l >= 3)
|
||||
+ if (meta >= 3)
|
||||
{
|
||||
j1 = 2 + world.rand.nextInt(3);
|
||||
- if (i1 > 0)
|
||||
+ if (fortune > 0)
|
||||
{
|
||||
- j1 += world.rand.nextInt(i1 + 1);
|
||||
+ j1 += world.rand.nextInt(fortune + 1);
|
||||
}
|
||||
}
|
||||
for (int k1 = 0; k1 < j1; k1++)
|
||||
{
|
||||
- dropBlockAsItem_do(world, i, j, k, new ItemStack(Item.netherStalkSeeds));
|
||||
+ ret.add(new ItemStack(Item.netherStalkSeeds));
|
||||
}
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
public int idDropped(int i, Random random, int j)
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockPistonBase.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockPistonBase.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -355,7 +355,7 @@
|
||||
return false;
|
||||
}
|
||||
}
|
||||
- return !(Block.blocksList[i] instanceof BlockContainer);
|
||||
+ return !(Block.blocksList[i] != null && Block.blocksList[i].hasTileEntity(world.getBlockMetadata(j, k, l)));
|
||||
}
|
||||
|
||||
private static boolean canExtend(World world, int i, int j, int k, int l)
|
||||
@@ -1,20 +1,22 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockPressurePlate.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockPressurePlate.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -38,7 +38,7 @@
|
||||
@@ -48,7 +48,8 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- return world.isBlockNormalCube(i, j - 1, k) || world.getBlockId(i, j - 1, k) == Block.fence.blockID;
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k, 1) || world.getBlockId(i, j - 1, k) == Block.fence.blockID;
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k,1)
|
||||
+ || world.getBlockId(i, j - 1, k) == Block.fence.blockID;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World world, int i, int j, int k)
|
||||
@@ -48,7 +48,7 @@
|
||||
@@ -58,7 +59,8 @@
|
||||
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
|
||||
{
|
||||
boolean flag = false;
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k) && world.getBlockId(i, j - 1, k) != Block.fence.blockID)
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && world.getBlockId(i, j - 1, k) != Block.fence.blockID)
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k) && world.getBlockId(i, j - 1, k) != Block.fence.blockID)
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1)
|
||||
+ && world.getBlockId(i, j - 1, k) != Block.fence.blockID)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -1,201 +1,55 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockRail.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockRail.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -5,16 +5,29 @@
|
||||
public class BlockRail extends Block
|
||||
{
|
||||
private final boolean isPowered;
|
||||
+
|
||||
+ /**
|
||||
+ * Forge: Moved render type to a field and a setter.
|
||||
+ * This allows for a mod to change the render type
|
||||
+ * for vanilla rails, and any mod rails that extend
|
||||
+ * this class.
|
||||
+ */
|
||||
+ private int renderType = 9;
|
||||
+
|
||||
+ public void setRenderType(int value)
|
||||
+ {
|
||||
+ renderType = value;
|
||||
+ }
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
public static final boolean isRailBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
int l = world.getBlockId(i, j, k);
|
||||
- return l == Block.rail.blockID || l == Block.railPowered.blockID || l == Block.railDetector.blockID;
|
||||
+ return Block.blocksList[l] instanceof BlockRail;
|
||||
+ return Block.blocksList[l] instanceof BlockRail;
|
||||
}
|
||||
|
||||
public static final boolean isRailBlock(int i)
|
||||
{
|
||||
- return i == Block.rail.blockID || i == Block.railPowered.blockID || i == Block.railDetector.blockID;
|
||||
+ return Block.blocksList[i] instanceof BlockRail;
|
||||
+ return Block.blocksList[i] instanceof BlockRail;
|
||||
}
|
||||
|
||||
protected BlockRail(int i, int j, boolean flag)
|
||||
@@ -81,7 +94,7 @@
|
||||
|
||||
public int getRenderType()
|
||||
{
|
||||
- return 9;
|
||||
+ return renderType;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random random)
|
||||
@@ -91,7 +104,7 @@
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- return world.isBlockNormalCube(i, j - 1, k);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k, 1);
|
||||
+ return world.isBlockSolidOnSide(i, j - 1, k,1);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World world, int i, int j, int k)
|
||||
@@ -119,23 +132,23 @@
|
||||
@@ -123,23 +123,23 @@
|
||||
j1 &= 7;
|
||||
}
|
||||
boolean flag = false;
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (j1 == 2 && !world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if (j1 == 2 && !world.isBlockSolidOnSide(i + 1, j, k, 1))
|
||||
- if(j1 == 2 && !world.isBlockNormalCube(i + 1, j, k))
|
||||
+ if(j1 == 2 && !world.isBlockSolidOnSide(i + 1, j, k,1))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (j1 == 3 && !world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if (j1 == 3 && !world.isBlockSolidOnSide(i - 1, j, k, 1))
|
||||
- if(j1 == 3 && !world.isBlockNormalCube(i - 1, j, k))
|
||||
+ if(j1 == 3 && !world.isBlockSolidOnSide(i - 1, j, k,1))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (j1 == 4 && !world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if (j1 == 4 && !world.isBlockSolidOnSide(i, j, k - 1, 1))
|
||||
- if(j1 == 4 && !world.isBlockNormalCube(i, j, k - 1))
|
||||
+ if(j1 == 4 && !world.isBlockSolidOnSide(i, j, k - 1,1))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (j1 == 5 && !world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if (j1 == 5 && !world.isBlockSolidOnSide(i, j, k + 1, 1))
|
||||
- if(j1 == 5 && !world.isBlockNormalCube(i, j, k + 1))
|
||||
+ if(j1 == 5 && !world.isBlockSolidOnSide(i, j, k + 1,1))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -317,8 +330,119 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * This function is no longer called by Minecraft
|
||||
+ */
|
||||
+ @Deprecated
|
||||
static boolean isPoweredBlockRail(BlockRail blockrail)
|
||||
{
|
||||
return blockrail.isPowered;
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Return true if the rail can make corners.
|
||||
+ * Used by placement logic.
|
||||
+ * @param world The world.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ * @return True if the rail can make corners.
|
||||
+ */
|
||||
+ public boolean isFlexibleRail(World world, int i, int j, int k)
|
||||
+ {
|
||||
+ return !isPowered;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if the rail can make up and down slopes.
|
||||
+ * Used by placement logic.
|
||||
+ * @param world The world.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ * @return True if the rail can make slopes.
|
||||
+ */
|
||||
+ public boolean canMakeSlopes(World world, int i, int j, int k)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Return the rails metadata (without the power bit if the rail uses one).
|
||||
+ * Can be used to make the cart think the rail something other than it is,
|
||||
+ * for example when making diamond junctions or switches.
|
||||
+ * The cart parameter will often be null unless it it called from EntityMinecart.
|
||||
+ *
|
||||
+ * Valid rail metadata is defined as follows:
|
||||
+ * 0x0: flat track going North-South
|
||||
+ * 0x1: flat track going West-East
|
||||
+ * 0x2: track ascending to the East
|
||||
+ * 0x3: track ascending to the West
|
||||
+ * 0x4: track ascending to the North
|
||||
+ * 0x5: track ascending to the South
|
||||
+ * 0x6: WestNorth corner (connecting East and South)
|
||||
+ * 0x7: EastNorth corner (connecting West and South)
|
||||
+ * 0x8: EastSouth corner (connecting West and North)
|
||||
+ * 0x9: WestSouth corner (connecting East and North)
|
||||
+ *
|
||||
+ * All directions are Notch defined.
|
||||
+ * In MC Beta 1.8.3 the Sun rises in the North.
|
||||
+ * In MC 1.0.0 the Sun rises in the East.
|
||||
+ * @param world The world.
|
||||
+ * @param cart The cart asking for the metadata, null if it is not called by EntityMinecart.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ * @return The metadata.
|
||||
+ */
|
||||
+ public int getBasicRailMetadata(IBlockAccess world, EntityMinecart cart, int i, int j, int k)
|
||||
+ {
|
||||
+ int meta = world.getBlockMetadata(i, j, k);
|
||||
+ if(isPowered) {
|
||||
+ meta = meta & 7;
|
||||
+ }
|
||||
+ return meta;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns the max speed of the rail at [i, j, k].
|
||||
+ * @param world The world.
|
||||
+ * @param cart The cart on the rail, may be null.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ * @return The max speed of the current rail.
|
||||
+ */
|
||||
+ public float getRailMaxSpeed(World world, EntityMinecart cart, int i, int j, int k)
|
||||
+ {
|
||||
+ return 0.4f;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * This function is called by any minecart that passes over this rail.
|
||||
+ * It is called once per update tick that the minecart is on the rail.
|
||||
+ * @param world The world.
|
||||
+ * @param cart The cart on the rail.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ */
|
||||
+ public void onMinecartPass(World world, EntityMinecart cart, int i, int j, int k)
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Return true if this rail uses the 4th bit as a power bit.
|
||||
+ * Avoid using this function when getBasicRailMetadata() can be used instead.
|
||||
+ * The only reason to use this function is if you wish to change the rails metadata.
|
||||
+ * @param world The world.
|
||||
+ * @param i The rail X coordinate.
|
||||
+ * @param j The rail Y coordinate.
|
||||
+ * @param k The rail Z coordinate.
|
||||
+ * @return True if the 4th bit is a power bit.
|
||||
+ */
|
||||
+ public boolean hasPowerBit(World world, int i, int j, int k)
|
||||
+ {
|
||||
+ return isPowered;
|
||||
+ }
|
||||
}
|
||||
@@ -1,20 +1,20 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockRedstoneRepeater.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockRedstoneRepeater.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -28,7 +28,7 @@
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -40,7 +40,7 @@
|
||||
} else
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
public boolean canBlockStay(World world, int i, int j, int k)
|
||||
{
|
||||
- if (!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1))
|
||||
- if(!world.isBlockNormalCube(i, j - 1, k))
|
||||
+ if(!world.isBlockSolidOnSide(i, j - 1, k,1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
} else
|
||||
@@ -1,15 +1,15 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockRedstoneWire.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockRedstoneWire.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
import java.util.*;
|
||||
|
||||
+import net.minecraft.src.forge.IConnectRedstone;
|
||||
+import net.minecraft.src.forge.*;
|
||||
+
|
||||
public class BlockRedstoneWire extends Block
|
||||
{
|
||||
private boolean wiresProvidePower;
|
||||
@@ -47,7 +49,7 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// Block, Material, World, ChunkPosition,
|
||||
// Item, IBlockAccess, Direction, AxisAlignedBB
|
||||
@@ -56,7 +58,7 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
@@ -18,16 +18,14 @@
|
||||
}
|
||||
|
||||
private void updateAndPropagateCurrentStrength(World world, int i, int j, int k)
|
||||
@@ -467,6 +469,12 @@
|
||||
int j1 = iblockaccess.getBlockMetadata(i, j, k);
|
||||
return l == (j1 & 3) || l == Direction.footInvisibleFaceRemap[j1 & 3];
|
||||
@@ -454,6 +456,10 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ if (Block.blocksList[i1] instanceof IConnectRedstone)
|
||||
+ {
|
||||
+ return ((IConnectRedstone)Block.blocksList[i1]).canConnectRedstone(iblockaccess, i, j, k, l);
|
||||
+ if (Block.blocksList[i1] instanceof IConnectRedstone) {
|
||||
+ IConnectRedstone icr = (IConnectRedstone)Block.blocksList[i1];
|
||||
+ return icr.canConnectRedstone(iblockaccess, i, j, k, l);
|
||||
+ }
|
||||
+
|
||||
return Block.blocksList[i1].canProvidePower() && l != -1;
|
||||
}
|
||||
|
||||
if(Block.blocksList[i1].canProvidePower() && l != -1)
|
||||
{
|
||||
return true;
|
||||
@@ -1,28 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockSnow.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -75,15 +75,7 @@
|
||||
|
||||
public void harvestBlock(World world, EntityPlayer entityplayer, int i, int j, int k, int l)
|
||||
{
|
||||
- int i1 = Item.snowball.shiftedIndex;
|
||||
- float f = 0.7F;
|
||||
- double d = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
|
||||
- double d1 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
|
||||
- double d2 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
|
||||
- EntityItem entityitem = new EntityItem(world, (double)i + d, (double)j + d1, (double)k + d2, new ItemStack(i1, 1, 0));
|
||||
- entityitem.delayBeforeCanPickup = 10;
|
||||
- world.spawnEntityInWorld(entityitem);
|
||||
- world.setBlockWithNotify(i, j, k, 0);
|
||||
+ dropBlockAsItem(world, i, j, k, l, 0);
|
||||
entityplayer.addStat(StatList.mineBlockStatArray[blockID], 1);
|
||||
}
|
||||
|
||||
@@ -94,7 +86,7 @@
|
||||
|
||||
public int quantityDropped(Random random)
|
||||
{
|
||||
- return 0;
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
public void updateTick(World world, int i, int j, int k, Random random)
|
||||
@@ -1,53 +1,38 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockTallGrass.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,7 +1,10 @@
|
||||
package net.minecraft.src;
|
||||
@@ -4,7 +4,10 @@
|
||||
|
||||
+import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public class BlockTallGrass extends BlockFlower
|
||||
{
|
||||
protected BlockTallGrass(int i, int j)
|
||||
@@ -65,14 +68,7 @@
|
||||
import java.util.Random;
|
||||
+import java.util.ArrayList;
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// BlockFlower, ColorizerGrass, ColorizerFoliage, IBlockAccess,
|
||||
@@ -73,13 +76,17 @@
|
||||
|
||||
public int idDropped(int i, Random random, int j)
|
||||
{
|
||||
- if (random.nextInt(8) == 0)
|
||||
- if(random.nextInt(8) == 0)
|
||||
- {
|
||||
- return Item.seeds.shiftedIndex;
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- return -1;
|
||||
- }
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
public int quantityDroppedWithBonus(int i, Random random)
|
||||
@@ -80,6 +76,23 @@
|
||||
return 1 + random.nextInt(i * 2 + 1);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int md, int fortune)
|
||||
+ {
|
||||
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
|
||||
+ if (world.rand.nextInt(8) != 0)
|
||||
+ {
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ItemStack item = ForgeHooks.getGrassSeed(world);
|
||||
+ if (item != null)
|
||||
+ {
|
||||
+ ret.add(item);
|
||||
+ }
|
||||
+ return ret;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
public void harvestBlock(World world, EntityPlayer entityplayer, int i, int j, int k, int l)
|
||||
{
|
||||
if (!world.multiplayerWorld && entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().itemID == Item.shears.shiftedIndex)
|
||||
+
|
||||
+ public ArrayList<ItemStack> getBlockDropped(World world,
|
||||
+ int i, int j, int k, int md) {
|
||||
+ ArrayList<ItemStack> tr=new ArrayList<ItemStack>();
|
||||
+ if(world.rand.nextInt(8)!=0)
|
||||
+ return tr;
|
||||
+ ItemStack ist=ForgeHooks.getGrassSeed(world);
|
||||
+ if(ist!=null) tr.add(ist);
|
||||
+ return tr;
|
||||
}
|
||||
|
||||
public int func_40198_a(int i, Random random)
|
||||
@@ -1,107 +1,107 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockTorch.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockTorch.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -32,7 +32,7 @@
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
private boolean canPlaceTorchOn(World world, int i, int j, int k)
|
||||
private boolean func_31032_h(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.func_41082_b(i, j, k, true))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k, 1))
|
||||
- if(world.func_41082_b(i, j, k, true))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k, 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -45,19 +45,19 @@
|
||||
} else
|
||||
@@ -53,19 +53,19 @@
|
||||
|
||||
public boolean canPlaceBlockAt(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.func_41082_b(i - 1, j, k, true))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.func_41082_b(i - 1, j, k, true))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.func_41082_b(i + 1, j, k, true))
|
||||
+ if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(world.func_41082_b(i + 1, j, k, true))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.func_41082_b(i, j, k - 1, true))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(world.func_41082_b(i, j, k - 1, true))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k-1,3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
- if (world.func_41082_b(i, j, k + 1, true))
|
||||
+ if (world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(world.func_41082_b(i, j, k + 1, true))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k+1,2))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -71,19 +71,19 @@
|
||||
@@ -79,19 +79,19 @@
|
||||
{
|
||||
i1 = 5;
|
||||
}
|
||||
- if (l == 2 && world.func_41082_b(i, j, k + 1, true))
|
||||
+ if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
- if(l == 2 && world.func_41082_b(i, j, k + 1, true))
|
||||
+ if(l == 2 && world.isBlockSolidOnSide(i, j, k+1,2))
|
||||
{
|
||||
i1 = 4;
|
||||
}
|
||||
- if (l == 3 && world.func_41082_b(i, j, k - 1, true))
|
||||
+ if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
- if(l == 3 && world.func_41082_b(i, j, k - 1, true))
|
||||
+ if(l == 3 && world.isBlockSolidOnSide(i, j, k-1,3))
|
||||
{
|
||||
i1 = 3;
|
||||
}
|
||||
- if (l == 4 && world.func_41082_b(i + 1, j, k, true))
|
||||
+ if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
- if(l == 4 && world.func_41082_b(i + 1, j, k, true))
|
||||
+ if(l == 4 && world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
i1 = 2;
|
||||
}
|
||||
- if (l == 5 && world.func_41082_b(i - 1, j, k, true))
|
||||
+ if (l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(l == 5 && world.func_41082_b(i - 1, j, k, true))
|
||||
+ if(l == 5 && world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
i1 = 1;
|
||||
}
|
||||
@@ -101,19 +101,19 @@
|
||||
@@ -109,19 +109,19 @@
|
||||
|
||||
public void onBlockAdded(World world, int i, int j, int k)
|
||||
{
|
||||
- if (world.func_41082_b(i - 1, j, k, true))
|
||||
+ if (world.isBlockSolidOnSide(i - 1, j, k, 5))
|
||||
- if(world.func_41082_b(i - 1, j, k, true))
|
||||
+ if(world.isBlockSolidOnSide(i - 1, j, k,5))
|
||||
{
|
||||
world.setBlockMetadataWithNotify(i, j, k, 1);
|
||||
}
|
||||
- else if (world.func_41082_b(i + 1, j, k, true))
|
||||
+ else if (world.isBlockSolidOnSide(i + 1, j, k, 4))
|
||||
} else
|
||||
- if(world.func_41082_b(i + 1, j, k, true))
|
||||
+ if(world.isBlockSolidOnSide(i + 1, j, k,4))
|
||||
{
|
||||
world.setBlockMetadataWithNotify(i, j, k, 2);
|
||||
}
|
||||
- else if (world.func_41082_b(i, j, k - 1, true))
|
||||
+ else if (world.isBlockSolidOnSide(i, j, k - 1, 3))
|
||||
} else
|
||||
- if(world.func_41082_b(i, j, k - 1, true))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k-1,3))
|
||||
{
|
||||
world.setBlockMetadataWithNotify(i, j, k, 3);
|
||||
}
|
||||
- else if (world.func_41082_b(i, j, k + 1, true))
|
||||
+ else if (world.isBlockSolidOnSide(i, j, k + 1, 2))
|
||||
} else
|
||||
- if(world.func_41082_b(i, j, k + 1, true))
|
||||
+ if(world.isBlockSolidOnSide(i, j, k+1,2))
|
||||
{
|
||||
world.setBlockMetadataWithNotify(i, j, k, 4);
|
||||
}
|
||||
@@ -130,19 +130,19 @@
|
||||
} else
|
||||
@@ -138,19 +138,19 @@
|
||||
{
|
||||
int i1 = world.getBlockMetadata(i, j, k);
|
||||
boolean flag = false;
|
||||
- if (!world.func_41082_b(i - 1, j, k, true) && i1 == 1)
|
||||
+ if (!world.isBlockSolidOnSide(i - 1, j, k, 5) && i1 == 1)
|
||||
- if(!world.func_41082_b(i - 1, j, k, true) && i1 == 1)
|
||||
+ if(!world.isBlockSolidOnSide(i - 1, j, k,5) && i1 == 1)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.func_41082_b(i + 1, j, k, true) && i1 == 2)
|
||||
+ if (!world.isBlockSolidOnSide(i + 1, j, k, 4) && i1 == 2)
|
||||
- if(!world.func_41082_b(i + 1, j, k, true) && i1 == 2)
|
||||
+ if(!world.isBlockSolidOnSide(i + 1, j, k,4) && i1 == 2)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.func_41082_b(i, j, k - 1, true) && i1 == 3)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k - 1, 3) && i1 == 3)
|
||||
- if(!world.func_41082_b(i, j, k - 1, true) && i1 == 3)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k-1,3) && i1 == 3)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
- if (!world.func_41082_b(i, j, k + 1, true) && i1 == 4)
|
||||
+ if (!world.isBlockSolidOnSide(i, j, k + 1, 2) && i1 == 4)
|
||||
- if(!world.func_41082_b(i, j, k + 1, true) && i1 == 4)
|
||||
+ if(!world.isBlockSolidOnSide(i, j, k+1,2) && i1 == 4)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -1,36 +1,35 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/BlockTrapDoor.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/BlockTrapDoor.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,6 +2,9 @@
|
||||
@@ -11,7 +11,10 @@
|
||||
|
||||
public class BlockTrapDoor extends Block
|
||||
{
|
||||
+ /* FORGE: Set this to allow trapdoors to remain free-floating */
|
||||
+ public static boolean disableValidation = false;
|
||||
-
|
||||
+ /* FORGE: Set this to allow trapdoors to remain free-floating
|
||||
+ */
|
||||
+ public static boolean disableValidation=false;
|
||||
+
|
||||
protected BlockTrapDoor(int i, Material material)
|
||||
{
|
||||
super(i, material);
|
||||
@@ -139,7 +142,7 @@
|
||||
@@ -147,7 +150,7 @@
|
||||
{
|
||||
j1--;
|
||||
}
|
||||
- if (!func_41052_f(world.getBlockId(j1, j, k1)))
|
||||
+ if (!(func_41052_f(world.getBlockId(j1, j, k1)) || world.isBlockSolidOnSide(j1, j, k1, (i1 & 3) + 2)))
|
||||
- if(!func_41052_f(world.getBlockId(j1, j, k1)))
|
||||
+ if(!(func_41052_f(world.getBlockId(j1, j, k1)) || world.isBlockSolidOnSide(j1, j, k1, (i1&3)+2)))
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
dropBlockAsItem(world, i, j, k, i1, 0);
|
||||
@@ -181,6 +184,10 @@
|
||||
@@ -192,6 +195,7 @@
|
||||
|
||||
public boolean canPlaceBlockOnSide(World world, int i, int j, int k, int l)
|
||||
{
|
||||
+ if (disableValidation)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
if (l == 0)
|
||||
+ if(disableValidation) return true;
|
||||
if(l == 0)
|
||||
{
|
||||
return false;
|
||||
@@ -205,7 +212,7 @@
|
||||
@@ -216,7 +220,7 @@
|
||||
{
|
||||
i--;
|
||||
}
|
||||
@@ -39,15 +38,14 @@
|
||||
}
|
||||
|
||||
public static boolean isTrapdoorOpen(int i)
|
||||
@@ -215,6 +222,11 @@
|
||||
@@ -226,6 +230,10 @@
|
||||
|
||||
private static boolean func_41052_f(int i)
|
||||
{
|
||||
+ if (disableValidation)
|
||||
+ if (disableValidation)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
if (i <= 0)
|
||||
if(i <= 0)
|
||||
{
|
||||
return false;
|
||||
@@ -1,47 +1,40 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Chunk.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Chunk.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -338,7 +338,7 @@
|
||||
{
|
||||
Block.blocksList[l1].onBlockRemoval(worldObj, i2, j, j2);
|
||||
}
|
||||
- else if ((Block.blocksList[l1] instanceof BlockContainer) && l1 != l)
|
||||
+ else if (Block.blocksList[l1] != null && Block.blocksList[l1].hasTileEntity(getBlockMetadata(i, j, k)) && l1 != l)
|
||||
{
|
||||
worldObj.removeBlockTileEntity(i2, j, j2);
|
||||
}
|
||||
@@ -368,12 +368,12 @@
|
||||
{
|
||||
Block.blocksList[l].onBlockAdded(worldObj, i2, j, j2);
|
||||
}
|
||||
- if (Block.blocksList[l] instanceof BlockContainer)
|
||||
+ if (Block.blocksList[l] != null && Block.blocksList[l].hasTileEntity(i1))
|
||||
{
|
||||
@@ -3,6 +3,7 @@
|
||||
// Decompiler options: packimports(3) braces deadcode fieldsfirst
|
||||
|
||||
package net.minecraft.src;
|
||||
+import net.minecraft.src.forge.*;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.*;
|
||||
@@ -390,7 +391,7 @@
|
||||
TileEntity tileentity = getChunkBlockTileEntity(i, j, k);
|
||||
if (tileentity == null)
|
||||
if(tileentity == null)
|
||||
{
|
||||
- tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity();
|
||||
+ tileentity = Block.blocksList[l].getTileEntity(i1);
|
||||
worldObj.setBlockTileEntity(i2, j, j2, tileentity);
|
||||
+ tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity(i1);
|
||||
worldObj.setBlockTileEntity(i, j, k, tileentity);
|
||||
}
|
||||
if (tileentity != null)
|
||||
@@ -382,14 +382,6 @@
|
||||
if(tileentity != null)
|
||||
@@ -398,14 +399,6 @@
|
||||
tileentity.func_35144_b();
|
||||
}
|
||||
}
|
||||
}
|
||||
- else if (l1 > 0 && (Block.blocksList[l1] instanceof BlockContainer))
|
||||
- } else
|
||||
- if(l1 > 0 && (Block.blocksList[l1] instanceof BlockContainer))
|
||||
- {
|
||||
- TileEntity tileentity1 = getChunkBlockTileEntity(i, j, k);
|
||||
- if (tileentity1 != null)
|
||||
- if(tileentity1 != null)
|
||||
- {
|
||||
- tileentity1.updateContainingBlockInfo();
|
||||
- tileentity1.func_35144_b();
|
||||
- }
|
||||
- }
|
||||
}
|
||||
isModified = true;
|
||||
return true;
|
||||
}
|
||||
@@ -413,7 +405,11 @@
|
||||
@@ -430,7 +423,11 @@
|
||||
blocks[i << worldObj.xShift | k << worldObj.heightShift | j] = (byte)(byte0 & 0xff);
|
||||
if (k1 != 0)
|
||||
if(k1 != 0)
|
||||
{
|
||||
- Block.blocksList[k1].onBlockRemoval(worldObj, l1, j, i2);
|
||||
+ if (!worldObj.multiplayerWorld)
|
||||
@@ -51,150 +44,123 @@
|
||||
+ removeChunkBlockTileEntity(i, j, k);
|
||||
}
|
||||
data.setNibble(i, j, k, 0);
|
||||
if (Block.lightOpacity[byte0 & 0xff] != 0)
|
||||
@@ -436,28 +432,22 @@
|
||||
{
|
||||
Block.blocksList[l].onBlockAdded(worldObj, l1, j, i2);
|
||||
}
|
||||
- if (l > 0 && (Block.blocksList[l] instanceof BlockContainer))
|
||||
+ int meta = getBlockMetadata(i, j, k);
|
||||
+ if (l > 0 && Block.blocksList[l] != null && Block.blocksList[l].hasTileEntity(meta))
|
||||
{
|
||||
if(Block.lightOpacity[byte0 & 0xff] != 0)
|
||||
@@ -458,7 +455,7 @@
|
||||
TileEntity tileentity = getChunkBlockTileEntity(i, j, k);
|
||||
if (tileentity == null)
|
||||
if(tileentity == null)
|
||||
{
|
||||
- tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity();
|
||||
+ tileentity = Block.blocksList[l].getTileEntity(meta);
|
||||
worldObj.setBlockTileEntity(l1, j, i2, tileentity);
|
||||
+ tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity(0);
|
||||
worldObj.setBlockTileEntity(i, j, k, tileentity);
|
||||
}
|
||||
if (tileentity != null)
|
||||
{
|
||||
tileentity.updateContainingBlockInfo();
|
||||
+ tileentity.blockMetadata = meta;
|
||||
if(tileentity != null)
|
||||
@@ -466,14 +463,6 @@
|
||||
tileentity.func_35144_b();
|
||||
}
|
||||
}
|
||||
}
|
||||
- else if (k1 > 0 && (Block.blocksList[k1] instanceof BlockContainer))
|
||||
- } else
|
||||
- if(k1 > 0 && (Block.blocksList[k1] instanceof BlockContainer))
|
||||
- {
|
||||
- TileEntity tileentity1 = getChunkBlockTileEntity(i, j, k);
|
||||
- if (tileentity1 != null)
|
||||
- if(tileentity1 != null)
|
||||
- {
|
||||
- tileentity1.updateContainingBlockInfo();
|
||||
- tileentity1.func_35144_b();
|
||||
- }
|
||||
- }
|
||||
}
|
||||
isModified = true;
|
||||
return true;
|
||||
}
|
||||
@@ -477,7 +467,7 @@
|
||||
}
|
||||
data.setNibble(i, j, k, l);
|
||||
int j1 = getBlockID(i, j, k);
|
||||
- if (j1 > 0 && (Block.blocksList[j1] instanceof BlockContainer))
|
||||
+ if (j1 > 0 && Block.blocksList[j1] != null && Block.blocksList[j1].hasTileEntity(i1))
|
||||
{
|
||||
TileEntity tileentity = getChunkBlockTileEntity(i, j, k);
|
||||
if (tileentity != null)
|
||||
@@ -594,29 +584,27 @@
|
||||
@@ -609,6 +598,11 @@
|
||||
{
|
||||
ChunkPosition chunkposition = new ChunkPosition(i, j, k);
|
||||
TileEntity tileentity = (TileEntity)chunkTileEntityMap.get(chunkposition);
|
||||
+ if (tileentity != null && tileentity.isInvalid())
|
||||
+ if(tileentity != null && tileentity.isInvalid())
|
||||
+ {
|
||||
+ chunkTileEntityMap.remove(chunkposition);
|
||||
+ tileentity = null;
|
||||
+ chunkTileEntityMap.remove(chunkposition);
|
||||
+ tileentity=null;
|
||||
+ }
|
||||
if (tileentity == null)
|
||||
if(tileentity == null)
|
||||
{
|
||||
int l = getBlockID(i, j, k);
|
||||
- if (!Block.isBlockContainer[l])
|
||||
+ int meta = getBlockMetadata(i, j, k);
|
||||
+ if (Block.blocksList[l] == null || !Block.blocksList[l].hasTileEntity(meta))
|
||||
{
|
||||
return null;
|
||||
@@ -618,18 +612,23 @@
|
||||
}
|
||||
if (tileentity == null)
|
||||
if(tileentity == null)
|
||||
{
|
||||
- tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity();
|
||||
+ tileentity = Block.blocksList[l].getTileEntity(meta);
|
||||
+ tileentity = ((BlockContainer)Block.blocksList[l]).getBlockEntity(getBlockMetadata(i,j,k));
|
||||
worldObj.setBlockTileEntity(xPosition * 16 + i, j, zPosition * 16 + k, tileentity);
|
||||
}
|
||||
tileentity = (TileEntity)chunkTileEntityMap.get(chunkposition);
|
||||
}
|
||||
- if (tileentity != null && tileentity.isInvalid())
|
||||
- if(tileentity != null && tileentity.isInvalid())
|
||||
- {
|
||||
- chunkTileEntityMap.remove(chunkposition);
|
||||
- return null;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- return tileentity;
|
||||
- }
|
||||
- } else
|
||||
+ return tileentity;
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Used to remove only invalid TileEntities */
|
||||
+ public void cleanChunkBlockTileEntity(int i, int j, int k)
|
||||
+ {
|
||||
+ ChunkPosition chunkposition = new ChunkPosition(i, j, k);
|
||||
+ if(isChunkLoaded)
|
||||
{
|
||||
- return tileentity;
|
||||
+ TileEntity tileentity = (TileEntity)chunkTileEntityMap.get(chunkposition);
|
||||
+ if(tileentity != null && tileentity.isInvalid())
|
||||
+ chunkTileEntityMap.remove(chunkposition);
|
||||
}
|
||||
}
|
||||
|
||||
public void addTileEntity(TileEntity tileentity)
|
||||
@@ -627,7 +615,7 @@
|
||||
@@ -641,7 +640,7 @@
|
||||
setChunkBlockTileEntity(i, j, k, tileentity);
|
||||
if (isChunkLoaded)
|
||||
if(isChunkLoaded)
|
||||
{
|
||||
- worldObj.loadedTileEntityList.add(tileentity);
|
||||
+ worldObj.addTileEntity(tileentity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -638,12 +626,18 @@
|
||||
tileentity.xCoord = xPosition * 16 + i;
|
||||
tileentity.yCoord = j;
|
||||
tileentity.zCoord = zPosition * 16 + k;
|
||||
- if (getBlockID(i, j, k) == 0 || !(Block.blocksList[getBlockID(i, j, k)] instanceof BlockContainer))
|
||||
+ int id = getBlockID(i, j, k);
|
||||
+ if (id == 0 || Block.blocksList[id] == null || !Block.blocksList[id].hasTileEntity(getBlockMetadata(i, j, k)))
|
||||
{
|
||||
@@ -657,6 +656,8 @@
|
||||
return;
|
||||
}
|
||||
else
|
||||
} else
|
||||
{
|
||||
+ TileEntity old = (TileEntity)chunkTileEntityMap.get(chunkposition);
|
||||
+ if (old != null)
|
||||
+ {
|
||||
+ old.invalidate();
|
||||
+ }
|
||||
+ if (old != null) old.invalidate();
|
||||
tileentity.validate();
|
||||
chunkTileEntityMap.put(chunkposition, tileentity);
|
||||
return;
|
||||
@@ -790,6 +784,16 @@
|
||||
public int setChunkData(byte abyte0[], int i, int j, int k, int l, int i1, int j1,
|
||||
@@ -810,6 +811,15 @@
|
||||
public int setChunkData(byte abyte0[], int i, int j, int k, int l, int i1, int j1,
|
||||
int k1)
|
||||
{
|
||||
+ TileEntity te;
|
||||
+ Iterator iterator = chunkTileEntityMap.values().iterator();
|
||||
+ while (iterator.hasNext())
|
||||
+ {
|
||||
+ while (iterator.hasNext()){
|
||||
+ te = (TileEntity)iterator.next();
|
||||
+ te.updateContainingBlockInfo();
|
||||
+ te.func_35144_b();
|
||||
+ te.getBlockMetadata();
|
||||
+ te.getBlockType();
|
||||
+ }
|
||||
+
|
||||
for (int l1 = i; l1 < l; l1++)
|
||||
for(int l1 = i; l1 < l; l1++)
|
||||
{
|
||||
for (int l2 = k; l2 < j1; l2++)
|
||||
@@ -835,10 +839,29 @@
|
||||
}
|
||||
for(int l2 = k; l2 < j1; l2++)
|
||||
@@ -859,12 +869,25 @@
|
||||
|
||||
}
|
||||
|
||||
- TileEntity tileentity;
|
||||
- for (Iterator iterator = chunkTileEntityMap.values().iterator(); iterator.hasNext(); tileentity.updateContainingBlockInfo())
|
||||
- for(Iterator iterator = chunkTileEntityMap.values().iterator(); iterator.hasNext(); tileentity.func_35144_b())
|
||||
- {
|
||||
- tileentity = (TileEntity)iterator.next();
|
||||
+ List<TileEntity> invalidList=new ArrayList();
|
||||
+ iterator = chunkTileEntityMap.values().iterator();
|
||||
+ while(iterator.hasNext())
|
||||
{
|
||||
- tileentity = (TileEntity)iterator.next();
|
||||
+ while(iterator.hasNext()) {
|
||||
+ te = (TileEntity)iterator.next();
|
||||
+ if ((te.xCoord & 15) >= i && (te.xCoord & 15) <= l &&
|
||||
+ (te.yCoord >= j) && (te.yCoord <= i1) &&
|
||||
+ (te.zCoord & 15) >= k && (te.zCoord & 15) <=j1)
|
||||
+ {
|
||||
+ (te.zCoord & 15) >= k && (te.zCoord & 15) <=j1) {
|
||||
+
|
||||
+ Block bl = te.getBlockType();
|
||||
+ if (bl != null &&
|
||||
@@ -204,30 +170,10 @@
|
||||
+
|
||||
+ invalidList.add(te);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for(TileEntity te2 : invalidList)
|
||||
+ {
|
||||
+ te2.invalidate();
|
||||
}
|
||||
|
||||
-
|
||||
+ for(TileEntity te2 : invalidList)
|
||||
+ te2.invalidate();
|
||||
return k1;
|
||||
@@ -917,4 +940,18 @@
|
||||
{
|
||||
return new ChunkCoordIntPair(xPosition, zPosition);
|
||||
}
|
||||
+
|
||||
+ /* FORGE: Used to remove only invalid TileEntities */
|
||||
+ public void cleanChunkBlockTileEntity(int i, int j, int k)
|
||||
+ {
|
||||
+ ChunkPosition chunkposition = new ChunkPosition(i, j, k);
|
||||
+ if (isChunkLoaded)
|
||||
+ {
|
||||
+ TileEntity tileentity = (TileEntity)chunkTileEntityMap.get(chunkposition);
|
||||
+ if (tileentity != null && tileentity.isInvalid())
|
||||
+ {
|
||||
+ chunkTileEntityMap.remove(chunkposition);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ContainerCreative.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ContainerCreative.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -64,20 +64,23 @@
|
||||
@@ -74,20 +74,23 @@
|
||||
}
|
||||
itemList.add(new ItemStack(ablock[l1], 1, k2));
|
||||
}
|
||||
-
|
||||
+
|
||||
+ for(int x = 0; x < 256; x++)
|
||||
+ {
|
||||
@@ -13,22 +12,22 @@
|
||||
+ Block.blocksList[x].addCreativeItems((ArrayList)itemList);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
for (int i2 = 256; i2 < Item.itemsList.length; i2++)
|
||||
|
||||
for(int i2 = 256; i2 < Item.itemsList.length; i2++)
|
||||
{
|
||||
- if (Item.itemsList[i2] != null && Item.itemsList[i2].shiftedIndex != Item.potion.shiftedIndex && Item.itemsList[i2].shiftedIndex != Item.field_44019_bC.shiftedIndex)
|
||||
+ if (Item.itemsList[i2] != null)
|
||||
- if(Item.itemsList[i2] != null && Item.itemsList[i2].shiftedIndex != Item.potion.shiftedIndex)
|
||||
+ if(Item.itemsList[i2] != null)
|
||||
{
|
||||
- itemList.add(new ItemStack(Item.itemsList[i2]));
|
||||
+ Item.itemsList[i2].addCreativeItems((ArrayList)itemList);
|
||||
+ Item.itemsList[i2].addCreativeItems((ArrayList)itemList);
|
||||
}
|
||||
}
|
||||
|
||||
- for (int j2 = 1; j2 < 16; j2++)
|
||||
- for(int j2 = 1; j2 < 16; j2++)
|
||||
- {
|
||||
- itemList.add(new ItemStack(Item.dyePowder.shiftedIndex, 1, j2));
|
||||
- }
|
||||
-
|
||||
Integer integer;
|
||||
for (Iterator iterator = EntityList.field_44041_a.keySet().iterator(); iterator.hasNext(); itemList.add(new ItemStack(Item.field_44019_bC.shiftedIndex, 1, integer.intValue())))
|
||||
InventoryPlayer inventoryplayer = entityplayer.inventory;
|
||||
for(int l2 = 0; l2 < 9; l2++)
|
||||
{
|
||||
@@ -1,11 +1,11 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/CraftingManager.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/CraftingManager.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -423,7 +423,7 @@
|
||||
@@ -363,7 +363,7 @@
|
||||
i++;
|
||||
}
|
||||
|
||||
- if (i == 2 && itemstack.itemID == itemstack1.itemID && itemstack.stackSize == 1 && itemstack1.stackSize == 1 && Item.itemsList[itemstack.itemID].isDamageable())
|
||||
+ if (i == 2 && itemstack.itemID == itemstack1.itemID && itemstack.stackSize == 1 && itemstack1.stackSize == 1 && Item.itemsList[itemstack.itemID].isRepairable())
|
||||
- if(i == 2 && itemstack.itemID == itemstack1.itemID && itemstack.stackSize == 1 && itemstack1.stackSize == 1 && Item.itemsList[itemstack.itemID].isDamageable())
|
||||
+ if(i == 2 && itemstack.itemID == itemstack1.itemID && itemstack.stackSize == 1 && itemstack1.stackSize == 1 && Item.itemsList[itemstack.itemID].isRepairable())
|
||||
{
|
||||
Item item = Item.itemsList[itemstack.itemID];
|
||||
int l = item.getMaxDamage() - itemstack.getItemDamageForDisplay();
|
||||
@@ -1,17 +1,17 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EffectRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EffectRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,17 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
import java.util.*;
|
||||
+
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
+import net.minecraft.src.forge.BlockTextureParticles;
|
||||
+import net.minecraft.src.forge.ITextureProvider;
|
||||
+
|
||||
import org.lwjgl.opengl.GL11;
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// EntityFX, ActiveRenderInfo, Entity, RenderEngine,
|
||||
// Tessellator, MathHelper, Block, EntityDiggingFX,
|
||||
@@ -17,11 +20,13 @@
|
||||
|
||||
public class EffectRenderer
|
||||
{
|
||||
protected World worldObj;
|
||||
private List fxLayers[];
|
||||
+ private List effectList;
|
||||
@@ -23,90 +23,86 @@
|
||||
+ effectList = new ArrayList();
|
||||
fxLayers = new List[4];
|
||||
rand = new Random();
|
||||
if (world != null)
|
||||
@@ -49,6 +55,23 @@
|
||||
}
|
||||
if(world != null)
|
||||
@@ -61,7 +66,18 @@
|
||||
}
|
||||
|
||||
}
|
||||
+
|
||||
+ for (int x = 0; x < effectList.size(); x++)
|
||||
+ {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles)effectList.get(x);
|
||||
+ for (int y = 0; y < entry.effects.size(); y++)
|
||||
+ {
|
||||
-
|
||||
+ for (int x = 0; x < effectList.size(); x++) {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles) effectList
|
||||
+ .get(x);
|
||||
+ for (int y = 0; y < entry.effects.size(); y++) {
|
||||
+ EntityFX entityfx = (EntityFX) entry.effects.get(y);
|
||||
+ if (entityfx.isDead)
|
||||
+ {
|
||||
+ if (entityfx.isDead) {
|
||||
+ entry.effects.remove(y--);
|
||||
+ }
|
||||
+ }
|
||||
+ if (effectList.size() == 0)
|
||||
+ {
|
||||
+ effectList.remove(x--);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
public void renderParticles(Entity entity, float f)
|
||||
@@ -87,12 +110,31 @@
|
||||
for (int k = 0; k < fxLayers[i].size(); k++)
|
||||
@@ -100,6 +116,7 @@
|
||||
for(int k = 0; k < fxLayers[i].size(); k++)
|
||||
{
|
||||
EntityFX entityfx = (EntityFX)fxLayers[i].get(k);
|
||||
+ if (entityfx instanceof EntityDiggingFX)
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (entityfx instanceof EntityDiggingFX) continue;
|
||||
tessellator.setBrightness(entityfx.getEntityBrightnessForRender(f));
|
||||
entityfx.renderParticle(tessellator, f, f1, f5, f2, f3, f4);
|
||||
}
|
||||
|
||||
@@ -107,6 +124,21 @@
|
||||
tessellator.draw();
|
||||
}
|
||||
+
|
||||
|
||||
+ Tessellator tessellator = Tessellator.instance;
|
||||
+ for (int x = 0; x < effectList.size(); x++)
|
||||
+ {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles) effectList.get(x);
|
||||
+ GL11.glBindTexture(3553 /* GL_TEXTURE_2D */, renderer.getTexture(entry.texture));
|
||||
+ for (int x = 0; x < effectList.size(); x++) {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles) effectList
|
||||
+ .get(x);
|
||||
+ GL11.glBindTexture(3553 /* GL_TEXTURE_2D */,
|
||||
+ renderer.getTexture(entry.texture));
|
||||
+ tessellator.startDrawingQuads();
|
||||
+ for (int y = 0; y < entry.effects.size(); y++)
|
||||
+ {
|
||||
+ for (int y = 0; y < entry.effects.size(); y++) {
|
||||
+ EntityFX entityfx = (EntityFX) entry.effects.get(y);
|
||||
+ tessellator.setBrightness(entityfx.getEntityBrightnessForRender(f));
|
||||
+ entityfx.renderParticle(tessellator, f, f1, f5, f2, f3, f4);
|
||||
+ }
|
||||
+ tessellator.draw();
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
public void func_1187_b(Entity entity, float f)
|
||||
@@ -123,6 +165,12 @@
|
||||
@@ -138,7 +170,12 @@
|
||||
{
|
||||
fxLayers[i].clear();
|
||||
}
|
||||
+ for (int x = 0; x < effectList.size(); x++)
|
||||
+ {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles)effectList.get(x);
|
||||
-
|
||||
+ for (int x = 0; x < effectList.size(); x++) {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles) effectList
|
||||
+ .get(x);
|
||||
+ entry.effects.clear();
|
||||
+ }
|
||||
+ effectList.clear();
|
||||
}
|
||||
|
||||
public void addBlockDestroyEffects(int i, int j, int k, int l, int i1)
|
||||
@@ -143,7 +191,11 @@
|
||||
@@ -159,7 +196,12 @@
|
||||
double d1 = (double)j + ((double)l1 + 0.5D) / (double)j1;
|
||||
double d2 = (double)k + ((double)i2 + 0.5D) / (double)j1;
|
||||
int j2 = rand.nextInt(6);
|
||||
- addEffect((new EntityDiggingFX(worldObj, d, d1, d2, d - (double)i - 0.5D, d1 - (double)j - 0.5D, d2 - (double)k - 0.5D, block, j2, i1)).func_4041_a(i, j, k));
|
||||
+ EntityDiggingFX dig_effect = new EntityDiggingFX(worldObj, d, d1, d2,
|
||||
+ d - (double)i - 0.5D, d1 - (double)j - 0.5D,
|
||||
+ d2 - (double)k - 0.5D, block, j2, i1);
|
||||
+ EntityDiggingFX dig_effect = new EntityDiggingFX(worldObj,
|
||||
+ d, d1, d2, d - (double) i - 0.5D, d1 - (double) j
|
||||
+ - 0.5D, d2 - (double) k - 0.5D, block, j2,
|
||||
+ i1);
|
||||
+ dig_effect.func_4041_a(i, j, k);
|
||||
+ addDigParticleEffect(dig_effect, block);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -185,11 +237,43 @@
|
||||
@@ -204,11 +246,39 @@
|
||||
{
|
||||
d = (double)i + block.maxX + (double)f;
|
||||
}
|
||||
@@ -123,26 +119,22 @@
|
||||
return (new StringBuilder()).append("").append(fxLayers[0].size() + fxLayers[1].size() + fxLayers[2].size()).toString();
|
||||
}
|
||||
+
|
||||
+ public void addDigParticleEffect(EntityDiggingFX dig_effect, Block block)
|
||||
+ {
|
||||
+ public void addDigParticleEffect(EntityDiggingFX dig_effect, Block block) {
|
||||
+ boolean added = false;
|
||||
+ String comp = "/terrain.png";
|
||||
+
|
||||
+ if (block instanceof ITextureProvider)
|
||||
+ {
|
||||
+ comp = ((ITextureProvider)block).getTextureFile();
|
||||
+ if (block instanceof ITextureProvider) {
|
||||
+ comp = ((ITextureProvider) block).getTextureFile();
|
||||
+ }
|
||||
+ for (int x = 0; x < effectList.size(); x++)
|
||||
+ {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles)effectList.get(x);
|
||||
+ if (entry.texture.equals(comp))
|
||||
+ {
|
||||
+ for (int x = 0; x < effectList.size(); x++) {
|
||||
+ BlockTextureParticles entry = (BlockTextureParticles) effectList
|
||||
+ .get(x);
|
||||
+ if (entry.texture.equals(comp)) {
|
||||
+ entry.effects.add(dig_effect);
|
||||
+ added = true;
|
||||
+ }
|
||||
+ }
|
||||
+ if (!added)
|
||||
+ {
|
||||
+ if (!added) {
|
||||
+ BlockTextureParticles entry = new BlockTextureParticles();
|
||||
+ entry.texture = comp;
|
||||
+ entry.effects.add(dig_effect);
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -102,6 +102,16 @@
|
||||
return (new StringBuilder()).append(s).append(" ").append(StatCollector.translateToLocal((new StringBuilder()).append("enchantment.level.").append(i).toString())).toString();
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Called to determine if this enchantment can be applied to a ItemStack
|
||||
+ * @param item The ItemStack that the enchantment might be put on
|
||||
+ * @return True if the item is valid, false otherwise
|
||||
+ */
|
||||
+ public boolean canEnchantItem(ItemStack item)
|
||||
+ {
|
||||
+ return type.canEnchantItem(item.getItem());
|
||||
+ }
|
||||
+
|
||||
static
|
||||
{
|
||||
looting = new EnchantmentLootBonus(21, 2, EnumEnchantmentType.weapon);
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -261,7 +261,7 @@
|
||||
for (int k = 0; k < j; k++)
|
||||
{
|
||||
Enchantment enchantment = aenchantment[k];
|
||||
- if (enchantment == null || !enchantment.type.canEnchantItem(item))
|
||||
+ if (enchantment == null || !enchantment.canEnchantItem(itemstack))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Entity.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Entity.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -70,6 +70,9 @@
|
||||
public int serverPosZ;
|
||||
public boolean ignoreFrustumCheck;
|
||||
public boolean isAirBorne;
|
||||
+
|
||||
+ //Forge: Used to store custom data for each entity.
|
||||
+ private NBTTagCompound customEntityData;
|
||||
|
||||
public Entity(World world)
|
||||
{
|
||||
@@ -110,6 +113,20 @@
|
||||
}
|
||||
|
||||
protected abstract void entityInit();
|
||||
+
|
||||
+ /**
|
||||
+ * Returns a NBTTagCompound that can be used to store custom data for this entity.
|
||||
+ * It will be written, and read from disc, so it persists over world saves.
|
||||
+ * @return A NBTTagCompound
|
||||
+ */
|
||||
+ public NBTTagCompound getEntityData()
|
||||
+ {
|
||||
+ if (customEntityData == null)
|
||||
+ {
|
||||
+ customEntityData = new NBTTagCompound();
|
||||
+ }
|
||||
+ return customEntityData;
|
||||
+ }
|
||||
|
||||
public DataWatcher getDataWatcher()
|
||||
{
|
||||
@@ -967,6 +984,10 @@
|
||||
nbttagcompound.setShort("Fire", (short)fire);
|
||||
nbttagcompound.setShort("Air", (short)getAir());
|
||||
nbttagcompound.setBoolean("OnGround", onGround);
|
||||
+ if (customEntityData != null)
|
||||
+ {
|
||||
+ nbttagcompound.setCompoundTag("ForgeData", customEntityData);
|
||||
+ }
|
||||
writeEntityToNBT(nbttagcompound);
|
||||
}
|
||||
|
||||
@@ -1001,6 +1022,10 @@
|
||||
onGround = nbttagcompound.getBoolean("OnGround");
|
||||
setPosition(posX, posY, posZ);
|
||||
setRotation(rotationYaw, rotationPitch);
|
||||
+ if (nbttagcompound.hasKey("ForgeData"))
|
||||
+ {
|
||||
+ customEntityData = nbttagcompound.getCompoundTag("ForgeData");
|
||||
+ }
|
||||
readEntityFromNBT(nbttagcompound);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EntityLiving.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EntityLiving.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -835,7 +835,13 @@
|
||||
@@ -794,7 +794,9 @@
|
||||
int i = MathHelper.floor_double(posX);
|
||||
int j = MathHelper.floor_double(boundingBox.minY);
|
||||
int k = MathHelper.floor_double(posZ);
|
||||
- return worldObj.getBlockId(i, j, k) == Block.ladder.blockID;
|
||||
+
|
||||
+ Block block = Block.blocksList[worldObj.getBlockId(i, j, k)];
|
||||
+ if (block == null)
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return block.isLadder(worldObj, i, j, k);
|
||||
+ Block block=Block.blocksList[worldObj.getBlockId(i,j,k)];
|
||||
+ if(block==null) return false;
|
||||
+ return block.isLadder();
|
||||
}
|
||||
|
||||
public void writeEntityToNBT(NBTTagCompound nbttagcompound)
|
||||
@@ -1,901 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EntityMinecart.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EntityMinecart.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,18 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+import net.minecraft.src.forge.IMinecartCollisionHandler;
|
||||
+import net.minecraft.src.forge.MinecraftForge;
|
||||
+
|
||||
public class EntityMinecart extends Entity
|
||||
implements IInventory
|
||||
{
|
||||
- private ItemStack cargoItems[];
|
||||
- private int fuel;
|
||||
- private boolean field_856_i;
|
||||
+ protected ItemStack cargoItems[];
|
||||
+ protected int fuel;
|
||||
+ protected boolean field_856_i;
|
||||
public int minecartType;
|
||||
public double pushX;
|
||||
public double pushZ;
|
||||
- private static final int field_855_j[][][] =
|
||||
+ protected static final int field_855_j[][][] =
|
||||
{
|
||||
{
|
||||
{
|
||||
@@ -76,16 +81,36 @@
|
||||
}
|
||||
}
|
||||
};
|
||||
- private int minecartPosRotationIncrements;
|
||||
- private double minecartX;
|
||||
- private double minecartY;
|
||||
- private double minecartZ;
|
||||
- private double minecartYaw;
|
||||
- private double minecartPitch;
|
||||
- private double velocityX;
|
||||
- private double velocityY;
|
||||
- private double velocityZ;
|
||||
-
|
||||
+ protected int minecartPosRotationIncrements;
|
||||
+ protected double minecartX;
|
||||
+ protected double minecartY;
|
||||
+ protected double minecartZ;
|
||||
+ protected double minecartYaw;
|
||||
+ protected double minecartPitch;
|
||||
+ protected double velocityX;
|
||||
+ protected double velocityY;
|
||||
+ protected double velocityZ;
|
||||
+
|
||||
+ /*Forge: Minecart Compatibility Layer Integration.
|
||||
+ */
|
||||
+ public static float defaultMaxSpeedRail = 0.4f;
|
||||
+ public static float defaultMaxSpeedGround = 0.4f;
|
||||
+ public static float defaultMaxSpeedAirLateral = 0.4f;
|
||||
+ public static float defaultMaxSpeedAirVertical = -1f;
|
||||
+ public static double defaultDragAir = 0.94999998807907104D;
|
||||
+ protected boolean canUseRail = true;
|
||||
+ protected boolean canBePushed = true;
|
||||
+ private static IMinecartCollisionHandler collisionHandler = null;
|
||||
+
|
||||
+ /*
|
||||
+ * Instance versions of the above physics properties
|
||||
+ */
|
||||
+ protected float maxSpeedRail;
|
||||
+ protected float maxSpeedGround;
|
||||
+ protected float maxSpeedAirLateral;
|
||||
+ protected float maxSpeedAirVertical;
|
||||
+ protected double dragAir;
|
||||
+
|
||||
public EntityMinecart(World world)
|
||||
{
|
||||
super(world);
|
||||
@@ -95,6 +120,18 @@
|
||||
preventEntitySpawning = true;
|
||||
setSize(0.98F, 0.7F);
|
||||
yOffset = height / 2.0F;
|
||||
+
|
||||
+ maxSpeedRail = defaultMaxSpeedRail;
|
||||
+ maxSpeedGround = defaultMaxSpeedGround;
|
||||
+ maxSpeedAirLateral = defaultMaxSpeedAirLateral;
|
||||
+ maxSpeedAirVertical = defaultMaxSpeedAirVertical;
|
||||
+ dragAir = defaultDragAir;
|
||||
+ }
|
||||
+
|
||||
+ public EntityMinecart(World world, int type)
|
||||
+ {
|
||||
+ this(world);
|
||||
+ minecartType = type;
|
||||
}
|
||||
|
||||
protected boolean canTriggerWalking()
|
||||
@@ -112,17 +149,27 @@
|
||||
|
||||
public AxisAlignedBB getCollisionBox(Entity entity)
|
||||
{
|
||||
+ if (getCollisionHandler() != null)
|
||||
+ {
|
||||
+ return getCollisionHandler().getCollisionBox(this, entity);
|
||||
+ }
|
||||
+
|
||||
return entity.boundingBox;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getBoundingBox()
|
||||
{
|
||||
+ if (getCollisionHandler() != null)
|
||||
+ {
|
||||
+ return getCollisionHandler().getBoundingBox(this);
|
||||
+ }
|
||||
+
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean canBePushed()
|
||||
{
|
||||
- return true;
|
||||
+ return canBePushed;
|
||||
}
|
||||
|
||||
public EntityMinecart(World world, double d, double d1, double d2,
|
||||
@@ -197,12 +244,6 @@
|
||||
}
|
||||
while (true);
|
||||
}
|
||||
-
|
||||
- dropItemWithOffset(Block.chest.blockID, 1, 0.0F);
|
||||
- }
|
||||
- else if (minecartType == 2)
|
||||
- {
|
||||
- dropItemWithOffset(Block.stoneOvenIdle.blockID, 1, 0.0F);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -268,7 +309,7 @@
|
||||
{
|
||||
func_41024_b(func_41025_i() - 1);
|
||||
}
|
||||
- if (isMinecartPowered() && rand.nextInt(4) == 0)
|
||||
+ if (isMinecartPowered() && rand.nextInt(4) == 0 && minecartType == 2 && getClass() == EntityMinecart.class)
|
||||
{
|
||||
worldObj.spawnParticle("largesmoke", posX, posY + 0.80000000000000004D, posZ, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
@@ -309,22 +350,18 @@
|
||||
double d2 = 0.40000000000000002D;
|
||||
double d4 = 0.0078125D;
|
||||
int l = worldObj.getBlockId(i, j, k);
|
||||
- if (BlockRail.isRailBlock(l))
|
||||
+ if (canUseRail() && BlockRail.isRailBlock(l))
|
||||
{
|
||||
Vec3D vec3d = func_514_g(posX, posY, posZ);
|
||||
- int i1 = worldObj.getBlockMetadata(i, j, k);
|
||||
+ int i1 = ((BlockRail)Block.blocksList[l]).getBasicRailMetadata(worldObj, this, i, j, k);
|
||||
posY = j;
|
||||
boolean flag = false;
|
||||
boolean flag1 = false;
|
||||
if (l == Block.railPowered.blockID)
|
||||
{
|
||||
- flag = (i1 & 8) != 0;
|
||||
+ flag = (worldObj.getBlockMetadata(i, j, k) & 8) != 0;
|
||||
flag1 = !flag;
|
||||
}
|
||||
- if (((BlockRail)Block.blocksList[l]).getIsPowered())
|
||||
- {
|
||||
- i1 &= 7;
|
||||
- }
|
||||
if (i1 >= 2 && i1 <= 5)
|
||||
{
|
||||
posY = j + 1;
|
||||
@@ -358,7 +395,7 @@
|
||||
double d13 = Math.sqrt(motionX * motionX + motionZ * motionZ);
|
||||
motionX = (d13 * d9) / d11;
|
||||
motionZ = (d13 * d10) / d11;
|
||||
- if (flag1)
|
||||
+ if (flag1 && shouldDoRailFunctions())
|
||||
{
|
||||
double d16 = Math.sqrt(motionX * motionX + motionZ * motionZ);
|
||||
if (d16 < 0.029999999999999999D)
|
||||
@@ -401,30 +438,9 @@
|
||||
posX = d18 + d9 * d17;
|
||||
posZ = d19 + d10 * d17;
|
||||
setPosition(posX, posY + (double)yOffset, posZ);
|
||||
- double d23 = motionX;
|
||||
- double d25 = motionZ;
|
||||
- if (riddenByEntity != null)
|
||||
- {
|
||||
- d23 *= 0.75D;
|
||||
- d25 *= 0.75D;
|
||||
- }
|
||||
- if (d23 < -d2)
|
||||
- {
|
||||
- d23 = -d2;
|
||||
- }
|
||||
- if (d23 > d2)
|
||||
- {
|
||||
- d23 = d2;
|
||||
- }
|
||||
- if (d25 < -d2)
|
||||
- {
|
||||
- d25 = -d2;
|
||||
- }
|
||||
- if (d25 > d2)
|
||||
- {
|
||||
- d25 = d2;
|
||||
- }
|
||||
- moveEntity(d23, 0.0D, d25);
|
||||
+
|
||||
+ moveMinecartOnRail(i, j, k);
|
||||
+
|
||||
if (ai[0][1] != 0 && MathHelper.floor_double(posX) - i == ai[0][0] && MathHelper.floor_double(posZ) - k == ai[0][2])
|
||||
{
|
||||
setPosition(posX, posY + (double)ai[0][1], posZ);
|
||||
@@ -433,39 +449,9 @@
|
||||
{
|
||||
setPosition(posX, posY + (double)ai[1][1], posZ);
|
||||
}
|
||||
- if (riddenByEntity != null)
|
||||
- {
|
||||
- motionX *= 0.99699997901916504D;
|
||||
- motionY *= 0.0D;
|
||||
- motionZ *= 0.99699997901916504D;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- if (minecartType == 2)
|
||||
- {
|
||||
- double d27 = MathHelper.sqrt_double(pushX * pushX + pushZ * pushZ);
|
||||
- if (d27 > 0.01D)
|
||||
- {
|
||||
- pushX /= d27;
|
||||
- pushZ /= d27;
|
||||
- double d29 = 0.040000000000000001D;
|
||||
- motionX *= 0.80000001192092896D;
|
||||
- motionY *= 0.0D;
|
||||
- motionZ *= 0.80000001192092896D;
|
||||
- motionX += pushX * d29;
|
||||
- motionZ += pushZ * d29;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- motionX *= 0.89999997615814209D;
|
||||
- motionY *= 0.0D;
|
||||
- motionZ *= 0.89999997615814209D;
|
||||
- }
|
||||
- }
|
||||
- motionX *= 0.95999997854232788D;
|
||||
- motionY *= 0.0D;
|
||||
- motionZ *= 0.95999997854232788D;
|
||||
- }
|
||||
+
|
||||
+ applyDragAndPushForces();
|
||||
+
|
||||
Vec3D vec3d1 = func_514_g(posX, posY, posZ);
|
||||
if (vec3d1 != null && vec3d != null)
|
||||
{
|
||||
@@ -486,26 +472,14 @@
|
||||
motionX = d15 * (double)(k1 - i);
|
||||
motionZ = d15 * (double)(l1 - k);
|
||||
}
|
||||
- if (minecartType == 2)
|
||||
+
|
||||
+ updatePushForces();
|
||||
+
|
||||
+ if (shouldDoRailFunctions())
|
||||
{
|
||||
- double d30 = MathHelper.sqrt_double(pushX * pushX + pushZ * pushZ);
|
||||
- if (d30 > 0.01D && motionX * motionX + motionZ * motionZ > 0.001D)
|
||||
- {
|
||||
- pushX /= d30;
|
||||
- pushZ /= d30;
|
||||
- if (pushX * motionX + pushZ * motionZ < 0.0D)
|
||||
- {
|
||||
- pushX = 0.0D;
|
||||
- pushZ = 0.0D;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- pushX = motionX;
|
||||
- pushZ = motionZ;
|
||||
- }
|
||||
- }
|
||||
+ ((BlockRail)Block.blocksList[l]).onMinecartPass(worldObj, this, i, j, k);
|
||||
}
|
||||
- if (flag)
|
||||
+ if (flag && shouldDoRailFunctions())
|
||||
{
|
||||
double d31 = Math.sqrt(motionX * motionX + motionZ * motionZ);
|
||||
if (d31 > 0.01D)
|
||||
@@ -540,35 +514,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (motionX < -d2)
|
||||
- {
|
||||
- motionX = -d2;
|
||||
- }
|
||||
- if (motionX > d2)
|
||||
- {
|
||||
- motionX = d2;
|
||||
- }
|
||||
- if (motionZ < -d2)
|
||||
- {
|
||||
- motionZ = -d2;
|
||||
- }
|
||||
- if (motionZ > d2)
|
||||
- {
|
||||
- motionZ = d2;
|
||||
- }
|
||||
- if (onGround)
|
||||
- {
|
||||
- motionX *= 0.5D;
|
||||
- motionY *= 0.5D;
|
||||
- motionZ *= 0.5D;
|
||||
- }
|
||||
- moveEntity(motionX, motionY, motionZ);
|
||||
- if (!onGround)
|
||||
- {
|
||||
- motionX *= 0.94999998807907104D;
|
||||
- motionY *= 0.94999998807907104D;
|
||||
- motionZ *= 0.94999998807907104D;
|
||||
- }
|
||||
+ moveMinecartOffRail(i, j, k);
|
||||
}
|
||||
rotationPitch = 0.0F;
|
||||
double d6 = prevPosX - posX;
|
||||
@@ -590,7 +536,20 @@
|
||||
field_856_i = !field_856_i;
|
||||
}
|
||||
setRotation(rotationYaw, rotationPitch);
|
||||
- List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D));
|
||||
+
|
||||
+ AxisAlignedBB box = null;
|
||||
+
|
||||
+ if (getCollisionHandler() != null)
|
||||
+ {
|
||||
+ box = getCollisionHandler().getMinecartCollisionBox(this);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+
|
||||
+ box = boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D);
|
||||
+ }
|
||||
+
|
||||
+ List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, box);
|
||||
if (list != null && list.size() > 0)
|
||||
{
|
||||
for (int j1 = 0; j1 < list.size(); j1++)
|
||||
@@ -610,15 +569,8 @@
|
||||
}
|
||||
riddenByEntity = null;
|
||||
}
|
||||
- if (fuel > 0)
|
||||
- {
|
||||
- fuel--;
|
||||
- }
|
||||
- if (fuel <= 0)
|
||||
- {
|
||||
- pushX = pushZ = 0.0D;
|
||||
- }
|
||||
- setMinecartPowered(fuel > 0);
|
||||
+ updateFuel();
|
||||
+ ForgeHooks.onMinecartUpdate(this, i, j, k);
|
||||
}
|
||||
|
||||
public Vec3D func_515_a(double d, double d1, double d2, double d3)
|
||||
@@ -633,11 +585,7 @@
|
||||
int l = worldObj.getBlockId(i, j, k);
|
||||
if (BlockRail.isRailBlock(l))
|
||||
{
|
||||
- int i1 = worldObj.getBlockMetadata(i, j, k);
|
||||
- if (((BlockRail)Block.blocksList[l]).getIsPowered())
|
||||
- {
|
||||
- i1 &= 7;
|
||||
- }
|
||||
+ int i1 = ((BlockRail)Block.blocksList[l]).getBasicRailMetadata(worldObj, this, i, j, k);
|
||||
d1 = j;
|
||||
if (i1 >= 2 && i1 <= 5)
|
||||
{
|
||||
@@ -679,12 +627,8 @@
|
||||
int l = worldObj.getBlockId(i, j, k);
|
||||
if (BlockRail.isRailBlock(l))
|
||||
{
|
||||
- int i1 = worldObj.getBlockMetadata(i, j, k);
|
||||
+ int i1 = ((BlockRail)Block.blocksList[l]).getBasicRailMetadata(worldObj, this, i, j, k);
|
||||
d1 = j;
|
||||
- if (((BlockRail)Block.blocksList[l]).getIsPowered())
|
||||
- {
|
||||
- i1 &= 7;
|
||||
- }
|
||||
if (i1 >= 2 && i1 <= 5)
|
||||
{
|
||||
d1 = j + 1;
|
||||
@@ -739,13 +683,13 @@
|
||||
protected void writeEntityToNBT(NBTTagCompound nbttagcompound)
|
||||
{
|
||||
nbttagcompound.setInteger("Type", minecartType);
|
||||
- if (minecartType == 2)
|
||||
+ if (isPoweredCart())
|
||||
{
|
||||
nbttagcompound.setDouble("PushX", pushX);
|
||||
nbttagcompound.setDouble("PushZ", pushZ);
|
||||
- nbttagcompound.setShort("Fuel", (short)fuel);
|
||||
+ nbttagcompound.setInteger("Fuel", fuel);
|
||||
}
|
||||
- else if (minecartType == 1)
|
||||
+ if (getSizeInventory() > 0)
|
||||
{
|
||||
NBTTagList nbttaglist = new NBTTagList();
|
||||
for (int i = 0; i < cargoItems.length; i++)
|
||||
@@ -766,13 +710,13 @@
|
||||
protected void readEntityFromNBT(NBTTagCompound nbttagcompound)
|
||||
{
|
||||
minecartType = nbttagcompound.getInteger("Type");
|
||||
- if (minecartType == 2)
|
||||
+ if (isPoweredCart())
|
||||
{
|
||||
pushX = nbttagcompound.getDouble("PushX");
|
||||
pushZ = nbttagcompound.getDouble("PushZ");
|
||||
- fuel = nbttagcompound.getShort("Fuel");
|
||||
+ fuel = nbttagcompound.getInteger("Fuel");
|
||||
}
|
||||
- else if (minecartType == 1)
|
||||
+ if (getSizeInventory() > 0)
|
||||
{
|
||||
NBTTagList nbttaglist = nbttagcompound.getTagList("Items");
|
||||
cargoItems = new ItemStack[getSizeInventory()];
|
||||
@@ -795,6 +739,12 @@
|
||||
|
||||
public void applyEntityCollision(Entity entity)
|
||||
{
|
||||
+ ForgeHooks.onMinecartEntityCollision(this, entity);
|
||||
+ if (getCollisionHandler() != null)
|
||||
+ {
|
||||
+ getCollisionHandler().onEntityCollision(this, entity);
|
||||
+ return;
|
||||
+ }
|
||||
if (worldObj.multiplayerWorld)
|
||||
{
|
||||
return;
|
||||
@@ -803,7 +753,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
- if ((entity instanceof EntityLiving) && !(entity instanceof EntityPlayer) && minecartType == 0 && motionX * motionX + motionZ * motionZ > 0.01D && riddenByEntity == null && entity.ridingEntity == null)
|
||||
+ if ((entity instanceof EntityLiving) && !(entity instanceof EntityPlayer) && canBeRidden() && motionX * motionX + motionZ * motionZ > 0.01D && riddenByEntity == null && entity.ridingEntity == null)
|
||||
{
|
||||
entity.mountEntity(this);
|
||||
}
|
||||
@@ -841,7 +791,7 @@
|
||||
}
|
||||
double d7 = entity.motionX + motionX;
|
||||
double d8 = entity.motionZ + motionZ;
|
||||
- if (((EntityMinecart)entity).minecartType == 2 && minecartType != 2)
|
||||
+ if (((EntityMinecart)entity).isPoweredCart() && !isPoweredCart())
|
||||
{
|
||||
motionX *= 0.20000000298023224D;
|
||||
motionZ *= 0.20000000298023224D;
|
||||
@@ -849,7 +799,7 @@
|
||||
entity.motionX *= 0.94999998807907104D;
|
||||
entity.motionZ *= 0.94999998807907104D;
|
||||
}
|
||||
- else if (((EntityMinecart)entity).minecartType != 2 && minecartType == 2)
|
||||
+ else if (!((EntityMinecart)entity).isPoweredCart() && isPoweredCart())
|
||||
{
|
||||
entity.motionX *= 0.20000000298023224D;
|
||||
entity.motionZ *= 0.20000000298023224D;
|
||||
@@ -879,7 +829,7 @@
|
||||
|
||||
public int getSizeInventory()
|
||||
{
|
||||
- return 27;
|
||||
+ return (minecartType == 1 && getClass() == EntityMinecart.class ? 27 : 0);
|
||||
}
|
||||
|
||||
public ItemStack getStackInSlot(int i)
|
||||
@@ -935,7 +885,11 @@
|
||||
|
||||
public boolean interact(EntityPlayer entityplayer)
|
||||
{
|
||||
- if (minecartType == 0)
|
||||
+ if (!ForgeHooks.onMinecartInteract(this, entityplayer))
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ if (canBeRidden())
|
||||
{
|
||||
if (riddenByEntity != null && (riddenByEntity instanceof EntityPlayer) && riddenByEntity != entityplayer)
|
||||
{
|
||||
@@ -946,14 +900,14 @@
|
||||
entityplayer.mountEntity(this);
|
||||
}
|
||||
}
|
||||
- else if (minecartType == 1)
|
||||
+ else if (getSizeInventory() > 0)
|
||||
{
|
||||
if (!worldObj.multiplayerWorld)
|
||||
{
|
||||
entityplayer.displayGUIChest(this);
|
||||
}
|
||||
}
|
||||
- else if (minecartType == 2)
|
||||
+ else if (minecartType == 2 && getClass() == EntityMinecart.class)
|
||||
{
|
||||
ItemStack itemstack = entityplayer.inventory.getCurrentItem();
|
||||
if (itemstack != null && itemstack.itemID == Item.coal.shiftedIndex)
|
||||
@@ -1000,7 +954,7 @@
|
||||
return entityplayer.getDistanceSqToEntity(this) <= 64D;
|
||||
}
|
||||
|
||||
- protected boolean isMinecartPowered()
|
||||
+ public boolean isMinecartPowered()
|
||||
{
|
||||
return (dataWatcher.getWatchableObjectByte(16) & 1) != 0;
|
||||
}
|
||||
@@ -1054,4 +1008,382 @@
|
||||
{
|
||||
return dataWatcher.getWatchableObjectInt(18);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Drops the cart as a item. The exact item dropped is defined by getItemDropped().
|
||||
+ */
|
||||
+ public void dropCartAsItem()
|
||||
+ {
|
||||
+ for(ItemStack item : getItemsDropped())
|
||||
+ {
|
||||
+ entityDropItem(item, 0);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Override this to define which items your cart drops when broken.
|
||||
+ * This does not include items contained in the inventory,
|
||||
+ * that is handled elsewhere.
|
||||
+ * @return A list of items dropped.
|
||||
+ */
|
||||
+ public List<ItemStack> getItemsDropped()
|
||||
+ {
|
||||
+ List<ItemStack> items = new ArrayList<ItemStack>();
|
||||
+ items.add(new ItemStack(Item.minecartEmpty));
|
||||
+
|
||||
+ switch(minecartType)
|
||||
+ {
|
||||
+ case 1:
|
||||
+ items.add(new ItemStack(Block.chest));
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ items.add(new ItemStack(Block.stoneOvenIdle));
|
||||
+ break;
|
||||
+ }
|
||||
+ return items;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * This function returns an ItemStack that represents this cart.
|
||||
+ * This should be an ItemStack that can be used by the player to place the cart.
|
||||
+ * This is the item that was registered with the cart via the registerMinecart function,
|
||||
+ * but is not necessary the item the cart drops when destroyed.
|
||||
+ * @return An ItemStack that can be used to place the cart.
|
||||
+ */
|
||||
+ public ItemStack getCartItem()
|
||||
+ {
|
||||
+ return MinecraftForge.getItemForCart(this);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if this cart is self propelled.
|
||||
+ * @return True if powered.
|
||||
+ */
|
||||
+ public boolean isPoweredCart()
|
||||
+ {
|
||||
+ return minecartType == 2 && getClass() == EntityMinecart.class;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if this cart is a storage cart
|
||||
+ * Some carts may have inventories but not be storage carts
|
||||
+ * and some carts without inventories may be storage carts.
|
||||
+ * @return True if this cart should be classified as a storage cart.
|
||||
+ */
|
||||
+ public boolean isStorageCart()
|
||||
+ {
|
||||
+ return minecartType == 1 && getClass() == EntityMinecart.class;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if this cart can be ridden by an Entity.
|
||||
+ * @return True if this cart can be ridden.
|
||||
+ */
|
||||
+ public boolean canBeRidden()
|
||||
+ {
|
||||
+ if(minecartType == 0 && getClass() == EntityMinecart.class)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if this cart can currently use rails.
|
||||
+ * This function is mainly used to gracefully detach a minecart from a rail.
|
||||
+ * @return True if the minecart can use rails.
|
||||
+ */
|
||||
+ public boolean canUseRail()
|
||||
+ {
|
||||
+ return canUseRail;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set whether the minecart can use rails.
|
||||
+ * This function is mainly used to gracefully detach a minecart from a rail.
|
||||
+ * @param use Whether the minecart can currently use rails.
|
||||
+ */
|
||||
+ public void setCanUseRail(boolean use)
|
||||
+ {
|
||||
+ canUseRail = use;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Return false if this cart should not call IRail.onMinecartPass() and should ignore Powered Rails.
|
||||
+ * @return True if this cart should call IRail.onMinecartPass().
|
||||
+ */
|
||||
+ public boolean shouldDoRailFunctions()
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Simply returns the minecartType variable.
|
||||
+ * @return minecartType
|
||||
+ */
|
||||
+ public int getMinecartType()
|
||||
+ {
|
||||
+ return minecartType;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the current global Minecart Collision handler if none
|
||||
+ * is registered, returns null
|
||||
+ * @return The collision handler or null
|
||||
+ */
|
||||
+ public static IMinecartCollisionHandler getCollisionHandler()
|
||||
+ {
|
||||
+ return collisionHandler;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the global Minecart Collision handler, overwrites any
|
||||
+ * that is currently set.
|
||||
+ * @param handler The new handler
|
||||
+ */
|
||||
+ public static void setCollisionHandler(IMinecartCollisionHandler handler)
|
||||
+ {
|
||||
+ collisionHandler = handler;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Carts should return their drag factor here
|
||||
+ * @return The drag rate.
|
||||
+ */
|
||||
+ protected double getDrag()
|
||||
+ {
|
||||
+ if(riddenByEntity != null)
|
||||
+ {
|
||||
+ return 0.99699997901916504D;
|
||||
+ }
|
||||
+ return 0.95999997854232788D;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides.
|
||||
+ * This code applies drag and updates push forces.
|
||||
+ */
|
||||
+ protected void applyDragAndPushForces()
|
||||
+ {
|
||||
+ if(isPoweredCart())
|
||||
+ {
|
||||
+ double d27 = MathHelper.sqrt_double(pushX * pushX + pushZ * pushZ);
|
||||
+ if(d27 > 0.01D)
|
||||
+ {
|
||||
+ pushX /= d27;
|
||||
+ pushZ /= d27;
|
||||
+ double d29 = 0.040000000000000001D;
|
||||
+ motionX *= 0.80000001192092896D;
|
||||
+ motionY *= 0.0D;
|
||||
+ motionZ *= 0.80000001192092896D;
|
||||
+ motionX += pushX * d29;
|
||||
+ motionZ += pushZ * d29;
|
||||
+ } else
|
||||
+ {
|
||||
+ motionX *= 0.89999997615814209D;
|
||||
+ motionY *= 0.0D;
|
||||
+ motionZ *= 0.89999997615814209D;
|
||||
+ }
|
||||
+ }
|
||||
+ motionX *= getDrag();
|
||||
+ motionY *= 0.0D;
|
||||
+ motionZ *= getDrag();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides.
|
||||
+ * This code updates push forces.
|
||||
+ */
|
||||
+ protected void updatePushForces()
|
||||
+ {
|
||||
+ if(isPoweredCart())
|
||||
+ {
|
||||
+ double push = MathHelper.sqrt_double(pushX * pushX + pushZ * pushZ);
|
||||
+ if(push > 0.01D && motionX * motionX + motionZ * motionZ > 0.001D)
|
||||
+ {
|
||||
+ pushX /= push;
|
||||
+ pushZ /= push;
|
||||
+ if(pushX * motionX + pushZ * motionZ < 0.0D)
|
||||
+ {
|
||||
+ pushX = 0.0D;
|
||||
+ pushZ = 0.0D;
|
||||
+ } else
|
||||
+ {
|
||||
+ pushX = motionX;
|
||||
+ pushZ = motionZ;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides.
|
||||
+ * This code handles minecart movement and speed capping when on a rail.
|
||||
+ */
|
||||
+ protected void moveMinecartOnRail(int i, int j, int k)
|
||||
+ {
|
||||
+ int id = worldObj.getBlockId(i, j, k);
|
||||
+ if (!BlockRail.isRailBlock(id))
|
||||
+ {
|
||||
+ return;
|
||||
+ }
|
||||
+ float railMaxSpeed = ((BlockRail)Block.blocksList[id]).getRailMaxSpeed(worldObj, this, i, j, k);
|
||||
+
|
||||
+ double maxSpeed = Math.min(railMaxSpeed, getMaxSpeedRail());
|
||||
+ double d23 = motionX;
|
||||
+ double d25 = motionZ;
|
||||
+ if(riddenByEntity != null)
|
||||
+ {
|
||||
+ d23 *= 0.75D;
|
||||
+ d25 *= 0.75D;
|
||||
+ }
|
||||
+ if(d23 < -maxSpeed)
|
||||
+ {
|
||||
+ d23 = -maxSpeed;
|
||||
+ }
|
||||
+ if(d23 > maxSpeed)
|
||||
+ {
|
||||
+ d23 = maxSpeed;
|
||||
+ }
|
||||
+ if(d25 < -maxSpeed)
|
||||
+ {
|
||||
+ d25 = -maxSpeed;
|
||||
+ }
|
||||
+ if(d25 > maxSpeed)
|
||||
+ {
|
||||
+ d25 = maxSpeed;
|
||||
+ }
|
||||
+ moveEntity(d23, 0.0D, d25);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides.
|
||||
+ * This code handles minecart movement and speed capping when not on a rail.
|
||||
+ */
|
||||
+ protected void moveMinecartOffRail(int i, int j, int k)
|
||||
+ {
|
||||
+ double d2 = getMaxSpeedGround();
|
||||
+ if(!onGround)
|
||||
+ {
|
||||
+ d2 = getMaxSpeedAirLateral();
|
||||
+ }
|
||||
+ if(motionX < -d2)
|
||||
+ {
|
||||
+ motionX = -d2;
|
||||
+ }
|
||||
+ if(motionX > d2)
|
||||
+ {
|
||||
+ motionX = d2;
|
||||
+ }
|
||||
+ if(motionZ < -d2)
|
||||
+ {
|
||||
+ motionZ = -d2;
|
||||
+ }
|
||||
+ if(motionZ > d2)
|
||||
+ {
|
||||
+ motionZ = d2;
|
||||
+ }
|
||||
+ double moveY = motionY;
|
||||
+ if(getMaxSpeedAirVertical() > 0 && motionY > getMaxSpeedAirVertical())
|
||||
+ {
|
||||
+ moveY = getMaxSpeedAirVertical();
|
||||
+ if(Math.abs(motionX) < 0.3f && Math.abs(motionZ) < 0.3f)
|
||||
+ {
|
||||
+ moveY = 0.15f;
|
||||
+ motionY = moveY;
|
||||
+ }
|
||||
+ }
|
||||
+ if(onGround)
|
||||
+ {
|
||||
+ motionX *= 0.5D;
|
||||
+ motionY *= 0.5D;
|
||||
+ motionZ *= 0.5D;
|
||||
+ }
|
||||
+ moveEntity(motionX, moveY, motionZ);
|
||||
+ if(!onGround)
|
||||
+ {
|
||||
+ motionX *= getDragAir();
|
||||
+ motionY *= getDragAir();
|
||||
+ motionZ *= getDragAir();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Moved to allow overrides.
|
||||
+ * This code applies fuel consumption.
|
||||
+ */
|
||||
+ protected void updateFuel()
|
||||
+ {
|
||||
+ if (fuel > 0)
|
||||
+ {
|
||||
+ fuel--;
|
||||
+ }
|
||||
+ if (fuel <= 0)
|
||||
+ {
|
||||
+ pushX = pushZ = 0.0D;
|
||||
+ }
|
||||
+ setMinecartPowered(fuel > 0);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Getters/setters for physics variables
|
||||
+ */
|
||||
+
|
||||
+ /**
|
||||
+ * Returns the carts max speed.
|
||||
+ * Carts going faster than 1.1 cause issues with chunk loading.
|
||||
+ * Carts cant traverse slopes or corners at greater than 0.5 - 0.6.
|
||||
+ * This value is compared with the rails max speed to determine
|
||||
+ * the carts current max speed. A normal rails max speed is 0.4.
|
||||
+ * @return Carts max speed.
|
||||
+ */
|
||||
+ public float getMaxSpeedRail()
|
||||
+ {
|
||||
+ return maxSpeedRail;
|
||||
+ }
|
||||
+
|
||||
+ public void setMaxSpeedRail(float value)
|
||||
+ {
|
||||
+ maxSpeedRail = value;
|
||||
+ }
|
||||
+
|
||||
+ public float getMaxSpeedGround()
|
||||
+ {
|
||||
+ return maxSpeedGround;
|
||||
+ }
|
||||
+
|
||||
+ public void setMaxSpeedGround(float value)
|
||||
+ {
|
||||
+ maxSpeedGround = value;
|
||||
+ }
|
||||
+
|
||||
+ public float getMaxSpeedAirLateral()
|
||||
+ {
|
||||
+ return maxSpeedAirLateral;
|
||||
+ }
|
||||
+
|
||||
+ public void setMaxSpeedAirLateral(float value)
|
||||
+ {
|
||||
+ maxSpeedAirLateral = value;
|
||||
+ }
|
||||
+
|
||||
+ public float getMaxSpeedAirVertical()
|
||||
+ {
|
||||
+ return maxSpeedAirVertical;
|
||||
+ }
|
||||
+
|
||||
+ public void setMaxSpeedAirVertical(float value)
|
||||
+ {
|
||||
+ maxSpeedAirVertical = value;
|
||||
+ }
|
||||
+
|
||||
+ public double getDragAir()
|
||||
+ {
|
||||
+ return dragAir;
|
||||
+ }
|
||||
+
|
||||
+ public void setDragAir(double value)
|
||||
+ {
|
||||
+ dragAir = value;
|
||||
+ }
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EntityPigZombie.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EntityPigZombie.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -90,7 +90,7 @@
|
||||
@@ -94,7 +94,7 @@
|
||||
return super.attackEntityFrom(damagesource, i);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,53 +1,26 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,6 +2,10 @@
|
||||
@@ -4,6 +4,10 @@
|
||||
|
||||
import java.util.*;
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ArmorProperties;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+import net.minecraft.src.forge.ISpecialArmor;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public abstract class EntityPlayer extends EntityLiving
|
||||
{
|
||||
public InventoryPlayer inventory;
|
||||
@@ -149,6 +153,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+ itemInUse.getItem().onUsingItemTick(itemInUse, this, itemInUseCount);
|
||||
if (itemInUseCount <= 25 && itemInUseCount % 4 == 0)
|
||||
{
|
||||
func_35201_a(itemstack, 5);
|
||||
@@ -490,7 +495,16 @@
|
||||
import java.util.*;
|
||||
|
||||
public void dropCurrentItem()
|
||||
{
|
||||
- dropPlayerItemWithRandomChoice(inventory.decrStackSize(inventory.currentItem, 1), false);
|
||||
+ ItemStack stack = inventory.getCurrentItem();
|
||||
+ if (stack == null)
|
||||
+ {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (stack.getItem().onDroppedByPlayer(stack, this))
|
||||
+ {
|
||||
+ dropPlayerItemWithRandomChoice(inventory.decrStackSize(inventory.currentItem, 1), false);
|
||||
+ }
|
||||
}
|
||||
|
||||
public void dropPlayerItem(ItemStack itemstack)
|
||||
@@ -537,6 +551,9 @@
|
||||
worldObj.spawnEntityInWorld(entityitem);
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -548,6 +552,8 @@
|
||||
worldObj.entityJoinedWorld(entityitem);
|
||||
}
|
||||
|
||||
+ /* FORGE: This isnt called anymore
|
||||
+ */
|
||||
+ @Deprecated
|
||||
public float getCurrentPlayerStrVsBlock(Block block)
|
||||
{
|
||||
float f = inventory.getStrVsBlock(block);
|
||||
@@ -565,6 +582,45 @@
|
||||
@@ -576,6 +582,45 @@
|
||||
return f1;
|
||||
}
|
||||
|
||||
@@ -93,53 +66,50 @@
|
||||
public boolean canHarvestBlock(Block block)
|
||||
{
|
||||
return inventory.canHarvestBlock(block);
|
||||
@@ -764,6 +820,27 @@
|
||||
@@ -774,6 +819,25 @@
|
||||
|
||||
protected void damageEntity(DamageSource damagesource, int i)
|
||||
{
|
||||
+ boolean doRegularComputation = true;
|
||||
+ boolean doRegularComputation = true;
|
||||
+ int initialDamage = i;
|
||||
+
|
||||
+ for (ItemStack stack : inventory.armorInventory)
|
||||
+ {
|
||||
+ if (stack != null && stack.getItem() instanceof ISpecialArmor)
|
||||
+ {
|
||||
+ for (ItemStack stack : inventory.armorInventory) {
|
||||
+ if (stack != null && stack.getItem() instanceof ISpecialArmor) {
|
||||
+ ISpecialArmor armor = (ISpecialArmor) stack.getItem();
|
||||
+
|
||||
+ ArmorProperties props = armor.getProperties(this, initialDamage, i);
|
||||
+ i = i - props.damageRemove;
|
||||
+ doRegularComputation = doRegularComputation && props.allowRegularComputation;
|
||||
+ doRegularComputation = doRegularComputation
|
||||
+ && props.allowRegularComputation;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!doRegularComputation)
|
||||
+ {
|
||||
+ if (!doRegularComputation) {
|
||||
+ super.damageEntity(damagesource, i);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (!damagesource.isUnblockable() && isBlocking())
|
||||
+
|
||||
if(!damagesource.unblockable() && func_35162_ad())
|
||||
{
|
||||
i = 1 + i >> 1;
|
||||
@@ -815,7 +892,9 @@
|
||||
@@ -825,7 +889,9 @@
|
||||
|
||||
public void destroyCurrentEquippedItem()
|
||||
{
|
||||
+ ItemStack orig = inventory.getCurrentItem();
|
||||
+ ItemStack orig=inventory.getCurrentItem();
|
||||
inventory.setInventorySlotContents(inventory.currentItem, null);
|
||||
+ ForgeHooks.onDestroyCurrentItem(this, orig);
|
||||
+ ForgeHooks.onDestroyCurrentItem(this,orig);
|
||||
}
|
||||
|
||||
public double getYOffset()
|
||||
@@ -947,6 +1026,11 @@
|
||||
@@ -957,6 +1023,10 @@
|
||||
|
||||
public EnumStatus sleepInBedAt(int i, int j, int k)
|
||||
{
|
||||
+ EnumStatus customSleep = ForgeHooks.sleepInBedAt(this, i, j, k);
|
||||
+ if (customSleep != null)
|
||||
+ {
|
||||
+ return customSleep;
|
||||
+ }
|
||||
if (!worldObj.multiplayerWorld)
|
||||
+ EnumStatus customSleep = ForgeHooks.sleepInBedAt(this, i, j, k);
|
||||
+ if (customSleep != null) {
|
||||
+ return customSleep;
|
||||
+ }
|
||||
if(!worldObj.multiplayerWorld)
|
||||
{
|
||||
if (isPlayerSleeping() || !isEntityAlive())
|
||||
if(isPlayerSleeping() || !isEntityAlive())
|
||||
@@ -1,48 +1,36 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/EntityRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/EntityRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -4,6 +4,8 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooksClient;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.util.Random;
|
||||
import net.minecraft.client.Minecraft;
|
||||
+import net.minecraft.src.forge.ForgeHooksClient;
|
||||
+
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.ContextCapabilities;
|
||||
import org.lwjgl.opengl.Display;
|
||||
@@ -911,8 +913,11 @@
|
||||
@@ -916,8 +917,10 @@
|
||||
EntityPlayer entityplayer = (EntityPlayer)entityliving;
|
||||
GL11.glDisable(3008 /*GL_ALPHA_TEST*/);
|
||||
Profiler.endStartSection("outline");
|
||||
- renderglobal.drawBlockBreaking(entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f);
|
||||
- renderglobal.drawSelectionBox(entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f);
|
||||
+ if (!ForgeHooksClient.onBlockHighlight(renderglobal, entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f))
|
||||
+ {
|
||||
+ if (!ForgeHooksClient.onBlockHighlight(renderglobal, entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f)) {
|
||||
+ renderglobal.drawBlockBreaking(entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f);
|
||||
+ renderglobal.drawSelectionBox(entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), f);
|
||||
+ }
|
||||
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
|
||||
}
|
||||
}
|
||||
@@ -967,8 +972,11 @@
|
||||
@@ -969,8 +972,10 @@
|
||||
EntityPlayer entityplayer1 = (EntityPlayer)entityliving;
|
||||
GL11.glDisable(3008 /*GL_ALPHA_TEST*/);
|
||||
Profiler.endStartSection("outline");
|
||||
- renderglobal.drawBlockBreaking(entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f);
|
||||
- renderglobal.drawSelectionBox(entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f);
|
||||
+ if (!ForgeHooksClient.onBlockHighlight(renderglobal, entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f))
|
||||
+ {
|
||||
+ if (!ForgeHooksClient.onBlockHighlight(renderglobal, entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f)) {
|
||||
+ renderglobal.drawBlockBreaking(entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f);
|
||||
+ renderglobal.drawSelectionBox(entityplayer1, mc.objectMouseOver, 0, entityplayer1.inventory.getCurrentItem(), f);
|
||||
+ }
|
||||
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
|
||||
}
|
||||
Profiler.endStartSection("weather");
|
||||
@@ -986,6 +994,8 @@
|
||||
setupFog(1, f);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
+ Profiler.endStartSection("fhooks");
|
||||
+ ForgeHooksClient.onRenderWorldLast(renderglobal,f);
|
||||
Profiler.endStartSection("hand");
|
||||
if (cameraZoom == 1.0D)
|
||||
{
|
||||
@@ -1,27 +1,26 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Explosion.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Explosion.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -5,6 +5,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.*;
|
||||
+import net.minecraft.src.forge.ISpecialResistance;
|
||||
|
||||
public class Explosion
|
||||
{
|
||||
@@ -66,7 +67,15 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// World, MathHelper, Block, ChunkPosition,
|
||||
@@ -76,7 +77,14 @@
|
||||
int k3 = worldObj.getBlockId(l2, i3, j3);
|
||||
if (k3 > 0)
|
||||
if(k3 > 0)
|
||||
{
|
||||
- f1 -= (Block.blocksList[k3].getExplosionResistance(exploder) + 0.3F) * f2;
|
||||
+ if (Block.blocksList[k3] instanceof ISpecialResistance)
|
||||
+ {
|
||||
+ if (Block.blocksList[k3] instanceof ISpecialResistance){
|
||||
+ ISpecialResistance isr = (ISpecialResistance)Block.blocksList[k3];
|
||||
+ f1 -= (isr.getSpecialExplosionResistance(worldObj, l2, i3, j3, explosionX, explosionY, explosionZ, exploder) + 0.3F) * f2;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ f1 -= (isr.getSpecialExplosionResistance(worldObj, l2, i3, j3,
|
||||
+ explosionX, explosionY, explosionZ, exploder) + 0.3F) * f2;
|
||||
+ } else {
|
||||
+ f1 -= (Block.blocksList[k3].getExplosionResistance(exploder) + 0.3F) * f2;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
if (f1 > 0.0F)
|
||||
if(f1 > 0.0F)
|
||||
{
|
||||
@@ -1,20 +1,22 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/FurnaceRecipes.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/FurnaceRecipes.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,11 +2,13 @@
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
+import java.util.Arrays;
|
||||
|
||||
public class FurnaceRecipes
|
||||
{
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// Block, ItemStack, Item
|
||||
@@ -15,6 +16,7 @@
|
||||
|
||||
private static final FurnaceRecipes smeltingBase = new FurnaceRecipes();
|
||||
private Map smeltingList;
|
||||
+ private Map metaSmeltingList;
|
||||
|
||||
public static final FurnaceRecipes smelting()
|
||||
{
|
||||
@@ -16,6 +18,7 @@
|
||||
@@ -24,6 +26,7 @@
|
||||
private FurnaceRecipes()
|
||||
{
|
||||
smeltingList = new HashMap();
|
||||
@@ -22,45 +24,34 @@
|
||||
addSmelting(Block.oreIron.blockID, new ItemStack(Item.ingotIron));
|
||||
addSmelting(Block.oreGold.blockID, new ItemStack(Item.ingotGold));
|
||||
addSmelting(Block.oreDiamond.blockID, new ItemStack(Item.diamond));
|
||||
@@ -38,11 +41,43 @@
|
||||
@@ -46,11 +49,32 @@
|
||||
smeltingList.put(Integer.valueOf(i), itemstack);
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Add a metadata-sensitive furnace recipe
|
||||
+ * @param itemID The Item ID
|
||||
+ * @param metadata The Item Metadata
|
||||
+ * @param itemstack The ItemStack for the result
|
||||
+ /* FORGE: Add a metadata-sensitive furnace recipe.
|
||||
+ */
|
||||
+ public void addSmelting(int itemID, int metadata, ItemStack itemstack)
|
||||
+ public void addSmelting(int i, int meta, ItemStack itemstack)
|
||||
+ {
|
||||
+ metaSmeltingList.put(Arrays.asList(itemID, metadata), itemstack);
|
||||
+ metaSmeltingList.put(Arrays.asList(i,meta), itemstack);
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Not used anymore, now uses a metadata sensitive version */
|
||||
+ @Deprecated
|
||||
+ /* FORGE: Not used anymore.
|
||||
+ */
|
||||
public ItemStack getSmeltingResult(int i)
|
||||
{
|
||||
return (ItemStack)smeltingList.get(Integer.valueOf(i));
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Used to get the resulting ItemStack form a source ItemStack
|
||||
+ * @param item The Source ItemStack
|
||||
+ * @return The result ItemStack
|
||||
+ /* FORGE: Added to allow metadata-sensitive smelting.
|
||||
+ */
|
||||
+ public ItemStack getSmeltingResult(ItemStack item)
|
||||
+ {
|
||||
+ if (item == null)
|
||||
+ {
|
||||
+ return null;
|
||||
+ }
|
||||
+ ItemStack ret = (ItemStack)metaSmeltingList.get(Arrays.asList(item.itemID, item.getItemDamage()));
|
||||
+ if (ret != null)
|
||||
+ {
|
||||
+ return ret;
|
||||
+ }
|
||||
+ return (ItemStack)smeltingList.get(Integer.valueOf(item.itemID));
|
||||
+ public ItemStack getSmeltingResult(ItemStack src) {
|
||||
+ ItemStack tr;
|
||||
+
|
||||
+ if(src==null) return null;
|
||||
+ tr=(ItemStack)metaSmeltingList.get(
|
||||
+ Arrays.asList(src.itemID,src.getItemDamage()));
|
||||
+ if(tr!=null) return tr;
|
||||
+ return (ItemStack)smeltingList.get(Integer.valueOf(src.itemID));
|
||||
+ }
|
||||
+
|
||||
public Map getSmeltingList()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Item.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Item.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -5,6 +5,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.PrintStream;
|
||||
@@ -8,123 +8,76 @@
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@@ -157,6 +158,9 @@
|
||||
private String potionModifier;
|
||||
@@ -177,6 +178,9 @@
|
||||
private String field_39010_c;
|
||||
private String itemName;
|
||||
|
||||
+ // FORGE: To disable repair recipes.
|
||||
+ protected boolean canRepair = true;
|
||||
+ protected boolean canRepair=true;
|
||||
+
|
||||
protected Item(int i)
|
||||
{
|
||||
maxStackSize = 64;
|
||||
@@ -469,6 +473,109 @@
|
||||
@@ -231,6 +235,13 @@
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
+ /* FORGE: Metadata-sensitive version of getStrVsBlock
|
||||
+ */
|
||||
+ public float getStrVsBlock(ItemStack itemstack, Block block, int md)
|
||||
+ {
|
||||
+ return getStrVsBlock(itemstack,block);
|
||||
+ }
|
||||
+
|
||||
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
|
||||
{
|
||||
return getIconFromDamage(i);
|
||||
return itemstack;
|
||||
@@ -278,6 +289,29 @@
|
||||
return maxDamage > 0 && !hasSubtypes;
|
||||
}
|
||||
|
||||
+ /* FORGE: Called by CraftingManager to determine if an item is repairable.
|
||||
+ */
|
||||
+ public boolean isRepairable() {
|
||||
+ return canRepair && isDamageable();
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Call to disable repair recipes.
|
||||
+ */
|
||||
+ public Item setNoRepair() {
|
||||
+ canRepair=false;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Called before a block is broken. Return true to prevent default
|
||||
+ * block harvesting.
|
||||
+ *
|
||||
+ * Note: In SMP, this is called on both client and server sides!
|
||||
+ */
|
||||
+ public boolean onBlockStartBreak(ItemStack itemstack, int i, int j, int k,
|
||||
+ EntityPlayer player) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1)
|
||||
{
|
||||
return false;
|
||||
@@ -473,6 +507,18 @@
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Called when a new CreativeContainer is opened, populate the list
|
||||
+ /* FORGE: Called when a new CreativeContainer is opened, populate the list
|
||||
+ * with all of the items for this item you want a player in creative mode
|
||||
+ * to have access to.
|
||||
+ *
|
||||
+ * @param itemList The list of items currently in the creative inventory
|
||||
+ */
|
||||
+ public void addCreativeItems(ArrayList itemList)
|
||||
+ {
|
||||
+ if (this.shiftedIndex != Item.potion.shiftedIndex && this.shiftedIndex != Item.field_44019_bC.shiftedIndex)
|
||||
+ if (this.shiftedIndex != Item.potion.shiftedIndex)
|
||||
+ {
|
||||
+ itemList.add(new ItemStack(this, 1));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when a player drops the item into the world,
|
||||
+ * returning false from this will prevent the item from
|
||||
+ * being removed from the players inventory and spawning
|
||||
+ * in the world
|
||||
+ *
|
||||
+ * @param player The player that dropped the item
|
||||
+ * @param item The item stack, before the item is removed.
|
||||
+ */
|
||||
+ public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * This is called when the item is used, before the block is activated.
|
||||
+ * @param stack The Item Stack
|
||||
+ * @param player The Player that used the item
|
||||
+ * @param world The Current World
|
||||
+ * @param X Target X Position
|
||||
+ * @param Y Target Y Position
|
||||
+ * @param Z Target Z Position
|
||||
+ * @param side The side of the target hit
|
||||
+ * @return Return true to prevent any further processing.
|
||||
+ */
|
||||
+ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int X, int Y, int Z, int side)
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Metadata-sensitive version of getStrVsBlock
|
||||
+ * @param itemstack The Item Stack
|
||||
+ * @param block The block the item is trying to break
|
||||
+ * @param metadata The items current metadata
|
||||
+ * @return The damage strength
|
||||
+ */
|
||||
+ public float getStrVsBlock(ItemStack itemstack, Block block, int metadata)
|
||||
+ {
|
||||
+ return getStrVsBlock(itemstack, block);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called by CraftingManager to determine if an item is reparable.
|
||||
+ * @return True if reparable
|
||||
+ */
|
||||
+ public boolean isRepairable()
|
||||
+ {
|
||||
+ return canRepair && isDamageable();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Call to disable repair recipes.
|
||||
+ * @return The current Item instance
|
||||
+ */
|
||||
+ public Item setNoRepair()
|
||||
+ {
|
||||
+ canRepair = false;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called before a block is broken. Return true to prevent default block harvesting.
|
||||
+ *
|
||||
+ * Note: In SMP, this is called on both client and server sides!
|
||||
+ *
|
||||
+ * @param itemstack The current ItemStack
|
||||
+ * @param X The X Position
|
||||
+ * @param Y The X Position
|
||||
+ * @param Z The X Position
|
||||
+ * @param player The Player that is wielding the item
|
||||
+ * @return True to prevent harvesting, false to continue as normal
|
||||
+ */
|
||||
+ public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player)
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called each tick while using an item.
|
||||
+ * @param stack The Item being used
|
||||
+ * @param player The Player using the item
|
||||
+ * @param count The amount of time in tick the item has been used for continuously
|
||||
+ */
|
||||
+ public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count)
|
||||
+ {
|
||||
+ }
|
||||
|
||||
static
|
||||
static
|
||||
{
|
||||
@@ -1,23 +1,23 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ItemBucket.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ItemBucket.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
+import net.minecraft.src.forge.MinecraftForge;
|
||||
+
|
||||
public class ItemBucket extends Item
|
||||
{
|
||||
private int isFull;
|
||||
@@ -40,6 +42,11 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// Item, EntityPlayer, MovingObjectPosition, EnumMovingObjectType,
|
||||
// World, Material, PlayerCapabilities, ItemStack,
|
||||
@@ -50,6 +52,11 @@
|
||||
{
|
||||
return itemstack;
|
||||
}
|
||||
+ ItemStack customBucket = MinecraftForge.fillCustomBucket(world, i, j, k);
|
||||
+ if (customBucket != null)
|
||||
+ {
|
||||
+ ItemStack customBucket = MinecraftForge.fillCustomBucket(world,
|
||||
+ i, j, k);
|
||||
+ if (customBucket != null) {
|
||||
+ return customBucket;
|
||||
+ }
|
||||
if (world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0)
|
||||
if(world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0)
|
||||
{
|
||||
world.setBlockWithNotify(i, j, k, 0);
|
||||
@@ -1,62 +1,59 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ItemDye.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ItemDye.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,7 +1,10 @@
|
||||
@@ -3,7 +3,9 @@
|
||||
// Decompiler options: packimports(3) braces deadcode fieldsfirst
|
||||
|
||||
package net.minecraft.src;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
|
||||
+import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public class ItemDye extends Item
|
||||
{
|
||||
public static final String dyeColorNames[] =
|
||||
@@ -43,6 +46,16 @@
|
||||
if (itemstack.getItemDamage() == 15)
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -45,13 +47,18 @@
|
||||
|
||||
public boolean onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, int i, int j, int k, int l)
|
||||
{
|
||||
- if(!entityplayer.func_35190_e(i, j, k))
|
||||
+ if(entityplayer!=null && !entityplayer.func_35190_e(i, j, k))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(itemstack.getItemDamage() == 15)
|
||||
{
|
||||
int i1 = world.getBlockId(i, j, k);
|
||||
+
|
||||
+ if (ForgeHooks.onUseBonemeal(world, i1, i, j, k))
|
||||
+ {
|
||||
+ if (!world.multiplayerWorld)
|
||||
+ {
|
||||
+ itemstack.stackSize--;
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
if (i1 == Block.sapling.blockID)
|
||||
+ if(ForgeHooks.onUseBonemeal(world,i1,i,j,k)) {
|
||||
+ if(!world.multiplayerWorld)
|
||||
+ itemstack.stackSize--;
|
||||
+ return true;
|
||||
+ }
|
||||
if(i1 == Block.sapling.blockID)
|
||||
{
|
||||
if (!world.multiplayerWorld)
|
||||
@@ -109,14 +122,7 @@
|
||||
if(!world.multiplayerWorld)
|
||||
@@ -118,13 +125,7 @@
|
||||
world.setBlockAndMetadataWithNotify(k1, l1, i2, Block.tallGrass.blockID, 1);
|
||||
continue;
|
||||
}
|
||||
- if (itemRand.nextInt(3) != 0)
|
||||
- if(itemRand.nextInt(3) != 0)
|
||||
- {
|
||||
- world.setBlockWithNotify(k1, l1, i2, Block.plantYellow.blockID);
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- world.setBlockWithNotify(k1, l1, i2, Block.plantRed.blockID);
|
||||
- }
|
||||
+ ForgeHooks.plantGrassPlant(world, k1, l1, i2);
|
||||
+ ForgeHooks.plantGrassPlant(world,k1,l1,i2);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -125,6 +131,23 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -147,5 +148,17 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Called when a new CreativeContainer is opened, populate the list
|
||||
+ /* FORGE: Called when a new CreativeContainer is opened, populate the list
|
||||
+ * with all of the items for this item you want a player in creative mode
|
||||
+ * to have access to.
|
||||
+ *
|
||||
+ * @param itemList The list of items currently in the creative inventory
|
||||
+ */
|
||||
+ @Override
|
||||
+ public void addCreativeItems(ArrayList itemList)
|
||||
+ {
|
||||
+ for (int x = 0; x < 16; x++)
|
||||
@@ -64,7 +61,5 @@
|
||||
+ itemList.add(new ItemStack(this, 1, x));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
public void useItemOnEntity(ItemStack itemstack, EntityLiving entityliving)
|
||||
{
|
||||
if (entityliving instanceof EntitySheep)
|
||||
|
||||
}
|
||||
@@ -1,22 +1,21 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ItemHoe.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ItemHoe.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,5 +1,7 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public class ItemHoe extends Item
|
||||
{
|
||||
public ItemHoe(int i, EnumToolMaterial enumtoolmaterial)
|
||||
@@ -15,6 +17,11 @@
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// Item, EnumToolMaterial, EntityPlayer, World,
|
||||
@@ -25,6 +26,10 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
+ if(ForgeHooks.onUseHoe(itemstack, entityplayer, world, i, j, k))
|
||||
+ {
|
||||
+ itemstack.damageItem(1, entityplayer);
|
||||
+ return true;
|
||||
+ }
|
||||
+ if(ForgeHooks.onUseHoe(itemstack,entityplayer,world,i,j,k)) {
|
||||
+ itemstack.damageItem(1, entityplayer);
|
||||
+ return true;
|
||||
+ }
|
||||
int i1 = world.getBlockId(i, j, k);
|
||||
int j1 = world.getBlockId(i, j + 1, k);
|
||||
if (l != 0 && j1 == 0 && i1 == Block.grass.blockID || i1 == Block.dirt.blockID)
|
||||
if(l != 0 && j1 == 0 && i1 == Block.grass.blockID || i1 == Block.dirt.blockID)
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ItemRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ItemRenderer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,10 @@
|
||||
@@ -5,6 +5,10 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -10,40 +10,33 @@
|
||||
+
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class ItemRenderer
|
||||
@@ -27,20 +31,31 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -40,18 +44,27 @@
|
||||
public void renderItem(EntityLiving entityliving, ItemStack itemstack, int i)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
- if (itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
- if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(itemstack.itemID);
|
||||
+
|
||||
+ if (customRenderer != null)
|
||||
+ {
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem());
|
||||
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
|
||||
+
|
||||
+ if (customRenderer != null) {
|
||||
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
|
||||
+ ForgeHooksClient.overrideTexture (itemstack.getItem());
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocksInstance, itemstack.itemID, itemstack.getItemDamage(), entityliving.getEntityBrightness(1.0F));
|
||||
+ }
|
||||
+ else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
+ } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
{
|
||||
- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]);
|
||||
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
|
||||
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
|
||||
+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]);
|
||||
renderBlocksInstance.renderBlockAsItem(Block.blocksList[itemstack.itemID], itemstack.getItemDamage(), 1.0F);
|
||||
}
|
||||
else
|
||||
} else
|
||||
{
|
||||
if (itemstack.itemID < 256)
|
||||
if(itemstack.itemID < 256)
|
||||
{
|
||||
- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]);
|
||||
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
|
||||
}
|
||||
else
|
||||
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
|
||||
+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]);
|
||||
} else
|
||||
{
|
||||
- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png"));
|
||||
+ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]);
|
||||
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
|
||||
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png"));
|
||||
+ ForgeHooksClient.overrideTexture (Item.itemsList[itemstack.itemID]);
|
||||
}
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
int j = entityliving.getItemIcon(itemstack, i);
|
||||
@@ -1,12 +1,17 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/ItemTool.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/ItemTool.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,10 +1,12 @@
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.util.Arrays;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public class ItemTool extends Item
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// Item, EnumToolMaterial, ItemStack, Block,
|
||||
@@ -13,8 +15,8 @@
|
||||
{
|
||||
|
||||
private Block blocksEffectiveAgainst[];
|
||||
- protected float efficiencyOnProperMaterial;
|
||||
- private int damageVsEntity;
|
||||
@@ -15,18 +20,15 @@
|
||||
protected EnumToolMaterial toolMaterial;
|
||||
|
||||
protected ItemTool(int i, int j, EnumToolMaterial enumtoolmaterial, Block ablock[])
|
||||
@@ -32,6 +34,17 @@
|
||||
@@ -42,6 +44,14 @@
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
+ /* FORGE: Overridden to allow custom tool effectiveness */
|
||||
+ @Override
|
||||
+ public float getStrVsBlock(ItemStack itemstack, Block block, int md)
|
||||
+ {
|
||||
+ if (ForgeHooks.isToolEffective(itemstack, block, md))
|
||||
+ {
|
||||
+ return efficiencyOnProperMaterial;
|
||||
+ }
|
||||
+ /* FORGE: Overridden to allow custom tool effectiveness
|
||||
+ */
|
||||
+ public float getStrVsBlock(ItemStack itemstack, Block block, int md) {
|
||||
+ if(ForgeHooks.isToolEffective(itemstack,block,md))
|
||||
+ return efficiencyOnProperMaterial;
|
||||
+ return getStrVsBlock(itemstack,block);
|
||||
+ }
|
||||
+
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/MovingObjectPosition.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/MovingObjectPosition.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -9,6 +9,9 @@
|
||||
@@ -18,6 +18,9 @@
|
||||
public int sideHit;
|
||||
public Vec3D hitVec;
|
||||
public Entity entityHit;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Packet100OpenWindow.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Packet100OpenWindow.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -30,9 +30,9 @@
|
||||
throws IOException
|
||||
{
|
||||
windowId = datainputstream.readByte();
|
||||
- inventoryType = datainputstream.readByte();
|
||||
+ inventoryType = datainputstream.readByte()&0xFF;
|
||||
windowTitle = readString(datainputstream, 16);
|
||||
- slotsCount = datainputstream.readByte();
|
||||
+ slotsCount = datainputstream.readByte()&0xFF;
|
||||
}
|
||||
|
||||
public void writePacketData(DataOutputStream dataoutputstream)
|
||||
@@ -1,15 +1,14 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Packet230ModLoader.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Packet230ModLoader.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -71,7 +71,11 @@
|
||||
}));
|
||||
@@ -75,7 +75,10 @@
|
||||
}));
|
||||
}
|
||||
byte abyte0[] = new byte[k1];
|
||||
- datainputstream.read(abyte0, 0, k1);
|
||||
+ int bytesRead = 0;
|
||||
+ while (bytesRead < k1)
|
||||
+ {
|
||||
+ bytesRead += datainputstream.read(abyte0, bytesRead, k1 - bytesRead);
|
||||
+ }
|
||||
+ int bytesRead = 0;
|
||||
+ while (bytesRead < k1) {
|
||||
+ bytesRead += datainputstream.read(abyte0, bytesRead, k1 - bytesRead);
|
||||
+ }
|
||||
dataString[j1] = new String(abyte0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Packet24MobSpawn.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Packet24MobSpawn.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -15,7 +15,7 @@
|
||||
{
|
||||
|
||||
public int entityId;
|
||||
- public byte type;
|
||||
+ public int type;
|
||||
public int xPosition;
|
||||
public int yPosition;
|
||||
public int zPosition;
|
||||
@@ -44,7 +44,7 @@
|
||||
throws IOException
|
||||
{
|
||||
entityId = datainputstream.readInt();
|
||||
- type = datainputstream.readByte();
|
||||
+ type = datainputstream.readByte() & 0xFF;
|
||||
xPosition = datainputstream.readInt();
|
||||
yPosition = datainputstream.readInt();
|
||||
zPosition = datainputstream.readInt();
|
||||
@@ -1,32 +1,34 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/PlayerController.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/PlayerController.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -3,6 +3,7 @@
|
||||
// Decompiler options: packimports(3) braces deadcode fieldsfirst
|
||||
|
||||
package net.minecraft.src;
|
||||
+import net.minecraft.src.forge.*;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
|
||||
public abstract class PlayerController
|
||||
{
|
||||
@@ -29,10 +30,10 @@
|
||||
@@ -39,11 +40,10 @@
|
||||
}
|
||||
world.playAuxSFX(2001, i, j, k, block.blockID + world.getBlockMetadata(i, j, k) * 256);
|
||||
int i1 = world.getBlockMetadata(i, j, k);
|
||||
- boolean flag = world.setBlockWithNotify(i, j, k, 0);
|
||||
- if (block != null && flag)
|
||||
+ boolean flag = block.removeBlockByPlayer(world, mc.thePlayer, i, j, k);
|
||||
+ if (flag)
|
||||
{
|
||||
- if(block != null && flag)
|
||||
- {
|
||||
- block.onBlockDestroyedByPlayer(world, i, j, k, i1);
|
||||
- }
|
||||
+
|
||||
+ boolean flag = block.removeBlockByPlayer(world, mc.thePlayer, i, j, k);
|
||||
+ if(flag)
|
||||
+ block.onBlockDestroyedByPlayer(world, i, j, k, i1);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -57,6 +58,7 @@
|
||||
if (itemstack1.stackSize == 0)
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
if(itemstack1.stackSize == 0)
|
||||
{
|
||||
entityplayer.inventory.mainInventory[entityplayer.inventory.currentItem] = null;
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer,itemstack1);
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer,itemstack1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else
|
||||
@@ -1,17 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/PlayerControllerCreative.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/PlayerControllerCreative.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -48,6 +48,14 @@
|
||||
|
||||
public boolean onPlayerRightClick(EntityPlayer entityplayer, World world, ItemStack itemstack, int i, int j, int k, int l)
|
||||
{
|
||||
+ if (itemstack != null)
|
||||
+ {
|
||||
+ Item item = itemstack.getItem();
|
||||
+ if (item.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l))
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
int i1 = world.getBlockId(i, j, k);
|
||||
if (i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
|
||||
{
|
||||
@@ -1,83 +1,75 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/PlayerControllerMP.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/PlayerControllerMP.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -4,6 +4,9 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
+import net.minecraft.src.forge.IUseItemFirst;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class PlayerControllerMP extends PlayerController
|
||||
{
|
||||
@@ -56,13 +57,19 @@
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -68,13 +71,16 @@
|
||||
|
||||
public boolean onPlayerDestroyBlock(int i, int j, int k, int l)
|
||||
public boolean sendBlockRemoved(int i, int j, int k, int l)
|
||||
{
|
||||
+ ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
+ if (itemstack != null && itemstack.getItem().onBlockStartBreak(itemstack, i, j, k, mc.thePlayer))
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
if (creativeMode)
|
||||
+ ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
+ if(itemstack!=null && itemstack.getItem().onBlockStartBreak(itemstack,
|
||||
+ i,j,k,mc.thePlayer))
|
||||
+ return false;
|
||||
if(creativeMode)
|
||||
{
|
||||
return super.onPlayerDestroyBlock(i, j, k, l);
|
||||
return super.sendBlockRemoved(i, j, k, l);
|
||||
}
|
||||
int i1 = mc.theWorld.getBlockId(i, j, k);
|
||||
boolean flag = super.onPlayerDestroyBlock(i, j, k, l);
|
||||
boolean flag = super.sendBlockRemoved(i, j, k, l);
|
||||
- ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
+
|
||||
if (itemstack != null)
|
||||
if(itemstack != null)
|
||||
{
|
||||
itemstack.onDestroyBlock(i1, i, j, k, mc.thePlayer);
|
||||
@@ -91,7 +98,7 @@
|
||||
@@ -103,7 +109,7 @@
|
||||
{
|
||||
Block.blocksList[i1].onBlockClicked(mc.theWorld, i, j, k, mc.thePlayer);
|
||||
}
|
||||
- if (i1 > 0 && Block.blocksList[i1].blockStrength(mc.thePlayer) >= 1.0F)
|
||||
+ if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld, mc.thePlayer, i, j, k) >= 1.0F)
|
||||
- if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.thePlayer) >= 1.0F)
|
||||
+ if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld,mc.thePlayer,i,j,k) >= 1.0F)
|
||||
{
|
||||
onPlayerDestroyBlock(i, j, k, l);
|
||||
}
|
||||
@@ -138,7 +145,7 @@
|
||||
sendBlockRemoved(i, j, k, l);
|
||||
} else
|
||||
@@ -149,7 +155,7 @@
|
||||
return;
|
||||
}
|
||||
Block block = Block.blocksList[i1];
|
||||
- curBlockDamageMP += block.blockStrength(mc.thePlayer);
|
||||
+ curBlockDamageMP += block.blockStrength(mc.theWorld, mc.thePlayer, i, j, k);
|
||||
if (stepSoundTickCounter % 4F == 0.0F && block != null)
|
||||
+ curBlockDamageMP += block.blockStrength(mc.theWorld,mc.thePlayer,i,j,k);
|
||||
if(stepSoundTickCounter % 4F == 0.0F && block != null)
|
||||
{
|
||||
mc.sndManager.playSound(block.stepSound.stepSoundDir2(), (float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, (block.stepSound.getVolume() + 1.0F) / 8F, block.stepSound.getPitch() * 0.5F);
|
||||
@@ -207,6 +214,16 @@
|
||||
@@ -216,6 +222,13 @@
|
||||
{
|
||||
syncCurrentPlayItem();
|
||||
netClientHandler.addToSendQueue(new Packet15Place(i, j, k, l, entityplayer.inventory.getCurrentItem()));
|
||||
+
|
||||
+ if (itemstack != null)
|
||||
+ {
|
||||
+ Item item = itemstack.getItem();
|
||||
+ if (item.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l))
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ if (itemstack != null && itemstack.getItem() instanceof IUseItemFirst) {
|
||||
+ IUseItemFirst iuif = (IUseItemFirst) itemstack.getItem();
|
||||
+ if (iuif.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l)) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
int i1 = world.getBlockId(i, j, k);
|
||||
if (i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
|
||||
if(i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
|
||||
{
|
||||
@@ -227,7 +244,15 @@
|
||||
}
|
||||
else
|
||||
@@ -235,7 +248,11 @@
|
||||
return flag;
|
||||
} else
|
||||
{
|
||||
- return itemstack.useItem(entityplayer, world, i, j, k, l);
|
||||
+ if (!itemstack.useItem(entityplayer, world, i, j, k, l))
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (itemstack.stackSize == 0)
|
||||
+ {
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer, itemstack);
|
||||
+ }
|
||||
+ return true;
|
||||
+ if(!itemstack.useItem(entityplayer, world, i, j, k, l))
|
||||
+ return false;
|
||||
+ if(itemstack.stackSize == 0)
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer,itemstack);
|
||||
+ return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,80 +1,72 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/PlayerControllerSP.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/PlayerControllerSP.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.minecraft.src;
|
||||
@@ -3,6 +3,8 @@
|
||||
// Decompiler options: packimports(3) braces deadcode fieldsfirst
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
package net.minecraft.src;
|
||||
+import net.minecraft.src.forge.IUseItemFirst;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
|
||||
public class PlayerControllerSP extends PlayerController
|
||||
{
|
||||
@@ -36,11 +37,16 @@
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public boolean onPlayerDestroyBlock(int i, int j, int k, int l)
|
||||
@@ -46,11 +48,14 @@
|
||||
|
||||
public boolean sendBlockRemoved(int i, int j, int k, int l)
|
||||
{
|
||||
+ ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
+ if (itemstack != null && itemstack.getItem().onBlockStartBreak(itemstack, i, j, k, mc.thePlayer))
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
+ if(itemstack!=null && itemstack.getItem().onBlockStartBreak(itemstack,
|
||||
+ i,j,k,mc.thePlayer))
|
||||
+ return false;
|
||||
int i1 = mc.theWorld.getBlockId(i, j, k);
|
||||
int j1 = mc.theWorld.getBlockMetadata(i, j, k);
|
||||
boolean flag = super.onPlayerDestroyBlock(i, j, k, l);
|
||||
boolean flag = super.sendBlockRemoved(i, j, k, l);
|
||||
- ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
|
||||
- boolean flag1 = mc.thePlayer.canHarvestBlock(Block.blocksList[i1]);
|
||||
+ boolean flag1 = Block.blocksList[i1].canHarvestBlock(mc.thePlayer, j1);
|
||||
if (itemstack != null)
|
||||
+ boolean flag1 = Block.blocksList[i1].canHarvestBlock(mc.thePlayer,j1);
|
||||
if(itemstack != null)
|
||||
{
|
||||
itemstack.onDestroyBlock(i1, i, j, k, mc.thePlayer);
|
||||
@@ -69,7 +75,7 @@
|
||||
@@ -79,7 +84,7 @@
|
||||
{
|
||||
Block.blocksList[i1].onBlockClicked(mc.theWorld, i, j, k, mc.thePlayer);
|
||||
}
|
||||
- if (i1 > 0 && Block.blocksList[i1].blockStrength(mc.thePlayer) >= 1.0F)
|
||||
+ if (i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld, mc.thePlayer, i, j, k) >= 1.0F)
|
||||
- if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.thePlayer) >= 1.0F)
|
||||
+ if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld,mc.thePlayer,i,j,k) >= 1.0F)
|
||||
{
|
||||
onPlayerDestroyBlock(i, j, k, l);
|
||||
sendBlockRemoved(i, j, k, l);
|
||||
}
|
||||
@@ -100,7 +106,7 @@
|
||||
@@ -110,7 +115,7 @@
|
||||
return;
|
||||
}
|
||||
Block block = Block.blocksList[i1];
|
||||
- curBlockDamage += block.blockStrength(mc.thePlayer);
|
||||
+ curBlockDamage += block.blockStrength(mc.theWorld, mc.thePlayer, i, j, k);
|
||||
if (blockDestroySoundCounter % 4F == 0.0F && block != null)
|
||||
+ curBlockDamage += block.blockStrength(mc.theWorld,mc.thePlayer,i,j,k);
|
||||
if(field_1069_h % 4F == 0.0F && block != null)
|
||||
{
|
||||
mc.sndManager.playSound(block.stepSound.stepSoundDir2(), (float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, (block.stepSound.getVolume() + 1.0F) / 8F, block.stepSound.getPitch() * 0.5F);
|
||||
@@ -165,6 +171,14 @@
|
||||
@@ -173,6 +178,12 @@
|
||||
|
||||
public boolean onPlayerRightClick(EntityPlayer entityplayer, World world, ItemStack itemstack, int i, int j, int k, int l)
|
||||
public boolean sendPlaceBlock(EntityPlayer entityplayer, World world, ItemStack itemstack, int i, int j, int k, int l)
|
||||
{
|
||||
+ if (itemstack != null)
|
||||
+ {
|
||||
+ Item item = itemstack.getItem();
|
||||
+ if (item.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l))
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ if (itemstack != null && itemstack.getItem() instanceof IUseItemFirst) {
|
||||
+ IUseItemFirst iuif = (IUseItemFirst) itemstack.getItem();
|
||||
+ if (iuif.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l)) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
int i1 = world.getBlockId(i, j, k);
|
||||
if (i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
|
||||
if(i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
|
||||
{
|
||||
@@ -176,7 +190,16 @@
|
||||
}
|
||||
else
|
||||
@@ -183,7 +194,11 @@
|
||||
return false;
|
||||
} else
|
||||
{
|
||||
- return itemstack.useItem(entityplayer, world, i, j, k, l);
|
||||
+ if (!itemstack.useItem(entityplayer, world, i, j, k, l))
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if(!itemstack.useItem(entityplayer, world, i, j, k, l))
|
||||
+ return false;
|
||||
+ if(itemstack.stackSize == 0)
|
||||
+ {
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer, itemstack);
|
||||
+ }
|
||||
+ return true;
|
||||
+ ForgeHooks.onDestroyCurrentItem(entityplayer,itemstack);
|
||||
+ return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RailLogic.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RailLogic.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -3,7 +3,7 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
-class RailLogic
|
||||
+public class RailLogic
|
||||
{
|
||||
private World worldObj;
|
||||
private int trackX;
|
||||
@@ -12,6 +12,7 @@
|
||||
private final boolean isPoweredRail;
|
||||
private List connectedTracks;
|
||||
final BlockRail rail;
|
||||
+ private final boolean canMakeSlopes;
|
||||
|
||||
public RailLogic(BlockRail blockrail, World world, int i, int j, int k)
|
||||
{
|
||||
@@ -23,16 +24,12 @@
|
||||
trackY = j;
|
||||
trackZ = k;
|
||||
int l = world.getBlockId(i, j, k);
|
||||
- int i1 = world.getBlockMetadata(i, j, k);
|
||||
- if (BlockRail.isPoweredBlockRail((BlockRail)Block.blocksList[l]))
|
||||
- {
|
||||
- isPoweredRail = true;
|
||||
- i1 &= -9;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- isPoweredRail = false;
|
||||
- }
|
||||
+
|
||||
+ BlockRail target = (BlockRail)Block.blocksList[l];
|
||||
+ int i1 = target.getBasicRailMetadata(world, null, i, j, k);
|
||||
+ isPoweredRail = !target.isFlexibleRail(world, i, j, k);
|
||||
+ canMakeSlopes = target.canMakeSlopes(world, i, j, k);
|
||||
+
|
||||
setConnections(i1);
|
||||
}
|
||||
|
||||
@@ -243,7 +240,7 @@
|
||||
byte0 = 9;
|
||||
}
|
||||
}
|
||||
- if (byte0 == 0)
|
||||
+ if (byte0 == 0 && canMakeSlopes)
|
||||
{
|
||||
if (BlockRail.isRailBlockAt(worldObj, trackX, trackY + 1, trackZ - 1))
|
||||
{
|
||||
@@ -254,7 +251,7 @@
|
||||
byte0 = 5;
|
||||
}
|
||||
}
|
||||
- if (byte0 == 1)
|
||||
+ if (byte0 == 1 && canMakeSlopes)
|
||||
{
|
||||
if (BlockRail.isRailBlockAt(worldObj, trackX + 1, trackY + 1, trackZ))
|
||||
{
|
||||
@@ -377,7 +374,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
- if (byte0 == 0)
|
||||
+ if (byte0 == 0 && canMakeSlopes)
|
||||
{
|
||||
if (BlockRail.isRailBlockAt(worldObj, trackX, trackY + 1, trackZ - 1))
|
||||
{
|
||||
@@ -388,7 +385,7 @@
|
||||
byte0 = 5;
|
||||
}
|
||||
}
|
||||
- if (byte0 == 1)
|
||||
+ if (byte0 == 1 && canMakeSlopes)
|
||||
{
|
||||
if (BlockRail.isRailBlockAt(worldObj, trackX + 1, trackY + 1, trackZ))
|
||||
{
|
||||
@@ -428,7 +425,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- static int getNAdjacentTracks(RailLogic raillogic)
|
||||
+ public static int getNAdjacentTracks(RailLogic raillogic)
|
||||
{
|
||||
return raillogic.getAdjacentTracks();
|
||||
}
|
||||
@@ -1,128 +1,74 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RenderBlocks.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RenderBlocks.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1323,7 +1323,7 @@
|
||||
double d2 = (float)j1 / 256F;
|
||||
double d3 = ((float)j1 + 15.99F) / 256F;
|
||||
float f = 1.4F;
|
||||
- if (!blockAccess.isBlockNormalCube(i, j - 1, k) && !Block.fire.canBlockCatchFire(blockAccess, i, j - 1, k))
|
||||
+ if (!blockAccess.isBlockNormalCube(i, j - 1, k) && !Block.fire.canBlockCatchFire(blockAccess, i, j - 1, k, 1))
|
||||
{
|
||||
float f1 = 0.2F;
|
||||
float f2 = 0.0625F;
|
||||
@@ -1340,7 +1340,7 @@
|
||||
d1 = d;
|
||||
d = d4;
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k))
|
||||
+ if (Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k, 5))
|
||||
{
|
||||
tessellator.addVertexWithUV((float)i + f1, (float)j + f + f2, k + 1, d1, d2);
|
||||
tessellator.addVertexWithUV(i + 0, (float)(j + 0) + f2, k + 1, d1, d3);
|
||||
@@ -1351,7 +1351,7 @@
|
||||
tessellator.addVertexWithUV(i + 0, (float)(j + 0) + f2, k + 1, d1, d3);
|
||||
tessellator.addVertexWithUV((float)i + f1, (float)j + f + f2, k + 1, d1, d2);
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(blockAccess, i + 1, j, k))
|
||||
+ if (Block.fire.canBlockCatchFire(blockAccess, i + 1, j, k, 4))
|
||||
{
|
||||
tessellator.addVertexWithUV((float)(i + 1) - f1, (float)j + f + f2, k + 0, d, d2);
|
||||
tessellator.addVertexWithUV((i + 1) - 0, (float)(j + 0) + f2, k + 0, d, d3);
|
||||
@@ -1362,7 +1362,7 @@
|
||||
tessellator.addVertexWithUV((i + 1) - 0, (float)(j + 0) + f2, k + 0, d, d3);
|
||||
tessellator.addVertexWithUV((float)(i + 1) - f1, (float)j + f + f2, k + 0, d, d2);
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(blockAccess, i, j, k - 1))
|
||||
+ if (Block.fire.canBlockCatchFire(blockAccess, i, j, k - 1, 3))
|
||||
{
|
||||
tessellator.addVertexWithUV(i + 0, (float)j + f + f2, (float)k + f1, d1, d2);
|
||||
tessellator.addVertexWithUV(i + 0, (float)(j + 0) + f2, k + 0, d1, d3);
|
||||
@@ -1373,7 +1373,7 @@
|
||||
tessellator.addVertexWithUV(i + 0, (float)(j + 0) + f2, k + 0, d1, d3);
|
||||
tessellator.addVertexWithUV(i + 0, (float)j + f + f2, (float)k + f1, d1, d2);
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(blockAccess, i, j, k + 1))
|
||||
+ if (Block.fire.canBlockCatchFire(blockAccess, i, j, k + 1, 2))
|
||||
{
|
||||
tessellator.addVertexWithUV(i + 1, (float)j + f + f2, (float)(k + 1) - f1, d, d2);
|
||||
tessellator.addVertexWithUV(i + 1, (float)(j + 0) + f2, (k + 1) - 0, d, d3);
|
||||
@@ -1384,7 +1384,7 @@
|
||||
tessellator.addVertexWithUV(i + 1, (float)(j + 0) + f2, (k + 1) - 0, d, d3);
|
||||
tessellator.addVertexWithUV(i + 1, (float)j + f + f2, (float)(k + 1) - f1, d, d2);
|
||||
}
|
||||
- if (Block.fire.canBlockCatchFire(blockAccess, i, j + 1, k))
|
||||
+ if (Block.fire.canBlockCatchFire(blockAccess, i, j + 1, k, 0))
|
||||
{
|
||||
double d5 = (double)i + 0.5D + 0.5D;
|
||||
double d7 = ((double)i + 0.5D) - 0.5D;
|
||||
@@ -3324,7 +3324,7 @@
|
||||
@@ -3301,7 +3301,7 @@
|
||||
colorBlueTopRight *= f27;
|
||||
int k2 = block.getBlockTexture(blockAccess, i, j, k, 2);
|
||||
renderEastFace(block, i, j, k, k2);
|
||||
- if (cfgGrassFix && k2 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && k2 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && k2 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && k2 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
colorRedTopLeft *= f;
|
||||
colorRedBottomLeft *= f;
|
||||
@@ -3440,7 +3440,7 @@
|
||||
@@ -3412,7 +3412,7 @@
|
||||
colorBlueTopRight *= f28;
|
||||
int l2 = block.getBlockTexture(blockAccess, i, j, k, 3);
|
||||
renderWestFace(block, i, j, k, block.getBlockTexture(blockAccess, i, j, k, 3));
|
||||
- if (cfgGrassFix && l2 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && l2 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && l2 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && l2 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
colorRedTopLeft *= f;
|
||||
colorRedBottomLeft *= f;
|
||||
@@ -3556,7 +3556,7 @@
|
||||
@@ -3523,7 +3523,7 @@
|
||||
colorBlueTopRight *= f29;
|
||||
int i3 = block.getBlockTexture(blockAccess, i, j, k, 4);
|
||||
renderNorthFace(block, i, j, k, i3);
|
||||
- if (cfgGrassFix && i3 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && i3 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && i3 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && i3 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
colorRedTopLeft *= f;
|
||||
colorRedBottomLeft *= f;
|
||||
@@ -3672,7 +3672,7 @@
|
||||
@@ -3634,7 +3634,7 @@
|
||||
colorBlueTopRight *= f30;
|
||||
int j3 = block.getBlockTexture(blockAccess, i, j, k, 5);
|
||||
renderSouthFace(block, i, j, k, j3);
|
||||
- if (cfgGrassFix && j3 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && j3 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && j3 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && j3 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
colorRedTopLeft *= f;
|
||||
colorRedBottomLeft *= f;
|
||||
@@ -3765,7 +3765,7 @@
|
||||
@@ -3727,7 +3727,7 @@
|
||||
tessellator.setColorOpaque_F(f11, f14, f17);
|
||||
int i1 = block.getBlockTexture(blockAccess, i, j, k, 2);
|
||||
renderEastFace(block, i, j, k, i1);
|
||||
- if (cfgGrassFix && i1 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && i1 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && i1 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && i1 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
tessellator.setColorOpaque_F(f11 * f, f14 * f1, f17 * f2);
|
||||
renderEastFace(block, i, j, k, 38);
|
||||
@@ -3778,7 +3778,7 @@
|
||||
@@ -3740,7 +3740,7 @@
|
||||
tessellator.setColorOpaque_F(f11, f14, f17);
|
||||
int j1 = block.getBlockTexture(blockAccess, i, j, k, 3);
|
||||
renderWestFace(block, i, j, k, j1);
|
||||
- if (cfgGrassFix && j1 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && j1 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && j1 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && j1 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
tessellator.setColorOpaque_F(f11 * f, f14 * f1, f17 * f2);
|
||||
renderWestFace(block, i, j, k, 38);
|
||||
@@ -3791,7 +3791,7 @@
|
||||
@@ -3753,7 +3753,7 @@
|
||||
tessellator.setColorOpaque_F(f12, f15, f18);
|
||||
int k1 = block.getBlockTexture(blockAccess, i, j, k, 4);
|
||||
renderNorthFace(block, i, j, k, k1);
|
||||
- if (cfgGrassFix && k1 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && k1 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && k1 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && k1 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
tessellator.setColorOpaque_F(f12 * f, f15 * f1, f18 * f2);
|
||||
renderNorthFace(block, i, j, k, 38);
|
||||
@@ -3804,7 +3804,7 @@
|
||||
@@ -3766,7 +3766,7 @@
|
||||
tessellator.setColorOpaque_F(f12, f15, f18);
|
||||
int l1 = block.getBlockTexture(blockAccess, i, j, k, 5);
|
||||
renderSouthFace(block, i, j, k, l1);
|
||||
- if (cfgGrassFix && l1 == 3 && overrideBlockTexture < 0)
|
||||
+ if (Tessellator.instance.defaultTexture && cfgGrassFix && l1 == 3 && overrideBlockTexture < 0)
|
||||
- if(cfgGrassFix && l1 == 3 && overrideBlockTexture < 0)
|
||||
+ if(Tessellator.instance.defaultTexture && cfgGrassFix && l1 == 3 && overrideBlockTexture < 0)
|
||||
{
|
||||
tessellator.setColorOpaque_F(f12 * f, f15 * f1, f18 * f2);
|
||||
renderSouthFace(block, i, j, k, 38);
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RenderEngine.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RenderEngine.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -30,7 +30,7 @@
|
||||
@@ -39,7 +39,7 @@
|
||||
private GameSettings options;
|
||||
public boolean clampTexture;
|
||||
public boolean blurTexture;
|
||||
@@ -9,13 +9,12 @@
|
||||
private BufferedImage missingTextureImage;
|
||||
|
||||
public RenderEngine(TexturePackList texturepacklist, GameSettings gamesettings)
|
||||
@@ -135,6 +135,10 @@
|
||||
@@ -142,6 +142,9 @@
|
||||
}
|
||||
try
|
||||
{
|
||||
+ if(Tessellator.renderingWorldRenderer)
|
||||
+ {
|
||||
+ System.out.printf("Warning: Texture %s not preloaded, will cause render glitches!\n", s);
|
||||
+ if(Tessellator.renderingWorldRenderer) {
|
||||
+ System.out.printf("Warning: Texture %s not preloaded, will cause render glitches!\n",s);
|
||||
+ }
|
||||
singleIntBuffer.clear();
|
||||
GLAllocation.generateTextureNames(singleIntBuffer);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RenderGlobal.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RenderGlobal.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -10,8 +10,8 @@
|
||||
implements IWorldAccess
|
||||
@@ -34,8 +34,8 @@
|
||||
{
|
||||
|
||||
public List tileEntities;
|
||||
- private World worldObj;
|
||||
- private RenderEngine renderEngine;
|
||||
@@ -11,7 +11,7 @@
|
||||
private List worldRenderersToUpdate;
|
||||
private WorldRenderer sortedWorldRenderers[];
|
||||
private WorldRenderer worldRenderers[];
|
||||
@@ -19,8 +19,8 @@
|
||||
@@ -43,8 +43,8 @@
|
||||
private int renderChunksTall;
|
||||
private int renderChunksDeep;
|
||||
private int glRenderListBase;
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RenderItem.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RenderItem.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,11 @@
|
||||
@@ -4,6 +4,10 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
+
|
||||
+import net.minecraft.src.forge.ForgeHooksClient;
|
||||
+import net.minecraft.src.forge.ICustomItemRenderer;
|
||||
+import net.minecraft.src.forge.MinecraftForgeClient;
|
||||
+
|
||||
import java.util.Random;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderItem extends Render
|
||||
@@ -43,10 +48,33 @@
|
||||
@@ -54,10 +58,36 @@
|
||||
}
|
||||
GL11.glTranslatef((float)d, (float)d1 + f2, (float)d2);
|
||||
GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/);
|
||||
- if (itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
- if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
+
|
||||
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(itemstack.itemID);
|
||||
+
|
||||
+ if (customRenderer != null)
|
||||
+ {
|
||||
+ if (customRenderer != null) {
|
||||
+ GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
|
||||
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem()));
|
||||
+ loadTexture("/terrain.png");
|
||||
+ ForgeHooksClient.overrideTexture(itemstack.getItem());
|
||||
+ float f4 = 0.25F;
|
||||
+ f4 = 0.5F;
|
||||
+ GL11.glScalef(f4, f4, f4);
|
||||
@@ -36,88 +36,79 @@
|
||||
+ float f9 = ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / f4;
|
||||
+ GL11.glTranslatef(f5, f7, f9);
|
||||
+ }
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks, itemstack.itemID, itemstack.getItemDamage(), entityitem.getEntityBrightness(f1));
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks,
|
||||
+ itemstack.itemID, itemstack.getItemDamage(),
|
||||
+ entityitem.getEntityBrightness(f1));
|
||||
+ GL11.glPopMatrix();
|
||||
+ }
|
||||
+ }
|
||||
+ else if (itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
+ } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
|
||||
{
|
||||
GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
|
||||
- loadTexture("/terrain.png");
|
||||
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
|
||||
loadTexture("/terrain.png");
|
||||
+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]);
|
||||
float f4 = 0.25F;
|
||||
int k = Block.blocksList[itemstack.itemID].getRenderType();
|
||||
if (k == 1 || k == 19 || k == 12 || k == 2)
|
||||
@@ -94,11 +122,11 @@
|
||||
int j = itemstack.getIconIndex();
|
||||
if (itemstack.itemID < 256)
|
||||
int j = Block.blocksList[itemstack.itemID].getRenderType();
|
||||
if(j == 1 || j == 19 || j == 12 || j == 2)
|
||||
@@ -108,9 +138,11 @@
|
||||
if(itemstack.itemID < 256)
|
||||
{
|
||||
- loadTexture("/terrain.png");
|
||||
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
|
||||
loadTexture("/terrain.png");
|
||||
+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]);
|
||||
} else
|
||||
{
|
||||
loadTexture("/gui/items.png");
|
||||
+ ForgeHooksClient.overrideTexture(Item.itemsList[itemstack.itemID]);
|
||||
}
|
||||
else
|
||||
if(field_27004_a)
|
||||
{
|
||||
- loadTexture("/gui/items.png");
|
||||
+ loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]));
|
||||
}
|
||||
if (field_27004_a)
|
||||
{
|
||||
@@ -149,10 +177,39 @@
|
||||
@@ -162,10 +194,37 @@
|
||||
|
||||
public void drawItemIntoGui(FontRenderer fontrenderer, RenderEngine renderengine, int i, int j, int k, int l, int i1)
|
||||
{
|
||||
- if (i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType()))
|
||||
- if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType()))
|
||||
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(i);
|
||||
+ if (customRenderer != null)
|
||||
+ {
|
||||
+ int j1 = i;
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Item.itemsList[i]);
|
||||
+ renderengine.bindTexture(renderengine.getTexture(tex));
|
||||
+ Item item = Item.itemsList[i];
|
||||
+ GL11.glPushMatrix();
|
||||
+ GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel);
|
||||
+ GL11.glScalef(10F, 10F, 10F);
|
||||
+ GL11.glTranslatef(1.0F, 0.5F, 1.0F);
|
||||
+ GL11.glScalef(1.0F, 1.0F, -1F);
|
||||
+ GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F);
|
||||
+ GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
|
||||
+ int l1 = Item.itemsList[i].getColorFromDamage(j, 0);
|
||||
+ float f2 = (float)(l1 >> 16 & 0xff) / 255F;
|
||||
+ float f4 = (float)(l1 >> 8 & 0xff) / 255F;
|
||||
+ float f5 = (float)(l1 & 0xff) / 255F;
|
||||
+ if(field_27004_a)
|
||||
+ {
|
||||
+ GL11.glColor4f(f2, f4, f5, 1.0F);
|
||||
+ }
|
||||
+ GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
|
||||
+ renderBlocks.useInventoryTint = field_27004_a;
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks, i, j, 1.0F);
|
||||
+ renderBlocks.useInventoryTint = true;
|
||||
+ GL11.glPopMatrix();
|
||||
+ }
|
||||
+ else if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType()))
|
||||
+ if (customRenderer != null) {
|
||||
+ int j1 = i;
|
||||
+ renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
|
||||
+ Item item = Item.itemsList[i];
|
||||
+ ForgeHooksClient.overrideTexture (Item.itemsList [i]);
|
||||
+ GL11.glPushMatrix();
|
||||
+ GL11.glTranslatef(l - 2, i1 + 3, -3F);
|
||||
+ GL11.glScalef(10F, 10F, 10F);
|
||||
+ GL11.glTranslatef(1.0F, 0.5F, 1.0F);
|
||||
+ GL11.glScalef(1.0F, 1.0F, -1F);
|
||||
+ GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F);
|
||||
+ GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
|
||||
+ int l1 = Item.itemsList[i].getColorFromDamage(j);
|
||||
+ float f2 = (float)(l1 >> 16 & 0xff) / 255F;
|
||||
+ float f4 = (float)(l1 >> 8 & 0xff) / 255F;
|
||||
+ float f5 = (float)(l1 & 0xff) / 255F;
|
||||
+ if(field_27004_a)
|
||||
+ {
|
||||
+ GL11.glColor4f(f2, f4, f5, 1.0F);
|
||||
+ }
|
||||
+ GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
|
||||
+ renderBlocks.useInventoryTint = field_27004_a;
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks, i, j, 1.0F);
|
||||
+ renderBlocks.useInventoryTint = true;
|
||||
+ GL11.glPopMatrix();
|
||||
+ } else if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType()))
|
||||
{
|
||||
int j1 = i;
|
||||
- renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]);
|
||||
+ renderengine.bindTexture(renderengine.getTexture(tex));
|
||||
renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
|
||||
+ ForgeHooksClient.overrideTexture (Block.blocksList[i]);
|
||||
Block block = Block.blocksList[j1];
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel);
|
||||
@@ -200,11 +257,13 @@
|
||||
GL11.glDisable(2896 /*GL_LIGHTING*/);
|
||||
if (i < 256)
|
||||
@@ -215,9 +274,11 @@
|
||||
if(i < 256)
|
||||
{
|
||||
- renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
|
||||
- }
|
||||
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]);
|
||||
+ renderengine.bindTexture(renderengine.getTexture(tex));
|
||||
+ }
|
||||
else
|
||||
renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
|
||||
+ ForgeHooksClient.overrideTexture (Block.blocksList[i]);
|
||||
} else
|
||||
{
|
||||
- renderengine.bindTexture(renderengine.getTexture("/gui/items.png"));
|
||||
+ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[i]);
|
||||
+ renderengine.bindTexture(renderengine.getTexture(tex));
|
||||
renderengine.bindTexture(renderengine.getTexture("/gui/items.png"));
|
||||
+ ForgeHooksClient.overrideTexture(Item.itemsList[i]);
|
||||
}
|
||||
int l1 = Item.itemsList[i].getColorFromDamage(j, 0);
|
||||
float f = (float)(l1 >> 16 & 0xff) / 255F;
|
||||
int k1 = Item.itemsList[i].getColorFromDamage(j);
|
||||
float f = (float)(k1 >> 16 & 0xff) / 255F;
|
||||
@@ -1,19 +1,19 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/RenderPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/RenderPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -2,6 +2,7 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.IArmorTextureProvider;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
+import net.minecraft.src.forge.IArmorTextureProvider;
|
||||
|
||||
public class RenderPlayer extends RenderLiving
|
||||
{
|
||||
@@ -30,7 +31,14 @@
|
||||
if (item instanceof ItemArmor)
|
||||
@@ -41,7 +42,14 @@
|
||||
if(item instanceof ItemArmor)
|
||||
{
|
||||
ItemArmor itemarmor = (ItemArmor)item;
|
||||
- loadTexture((new StringBuilder()).append("/armor/").append(armorFilenamePrefix[itemarmor.renderIndex]).append("_").append(i != 2 ? 1 : 2).append(".png").toString());
|
||||
+ if (item instanceof IArmorTextureProvider)
|
||||
+ if ( item instanceof IArmorTextureProvider )
|
||||
+ {
|
||||
+ loadTexture( ((IArmorTextureProvider)item).getArmorTextureFile(itemstack) );
|
||||
+ }
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/SlotCrafting.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/SlotCrafting.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,5 +1,7 @@
|
||||
package net.minecraft.src;
|
||||
@@ -3,6 +3,7 @@
|
||||
// Decompiler options: packimports(3) braces deadcode fieldsfirst
|
||||
|
||||
package net.minecraft.src;
|
||||
+import net.minecraft.src.forge.ForgeHooks;
|
||||
+
|
||||
public class SlotCrafting extends Slot
|
||||
{
|
||||
private final IInventory craftMatrix;
|
||||
@@ -61,6 +63,7 @@
|
||||
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -71,6 +72,7 @@
|
||||
thePlayer.addStat(AchievementList.bookcase, 1);
|
||||
}
|
||||
ModLoader.TakenFromCrafting(thePlayer, itemstack, craftMatrix);
|
||||
+ ForgeHooks.onTakenFromCrafting(thePlayer, itemstack, craftMatrix);
|
||||
for (int i = 0; i < craftMatrix.getSizeInventory(); i++)
|
||||
for(int i = 0; i < craftMatrix.getSizeInventory(); i++)
|
||||
{
|
||||
ItemStack itemstack1 = craftMatrix.getStackInSlot(i);
|
||||
@@ -1,14 +1,18 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/Tessellator.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/Tessellator.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,16 +1,14 @@
|
||||
@@ -5,6 +5,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.nio.*;
|
||||
+import java.util.*;
|
||||
import org.lwjgl.opengl.*;
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
@@ -12,13 +13,9 @@
|
||||
|
||||
public class Tessellator
|
||||
{
|
||||
-
|
||||
private static boolean convertQuadsToTriangles = false;
|
||||
private static boolean tryVBO = false;
|
||||
- private ByteBuffer byteBuffer;
|
||||
@@ -19,7 +23,7 @@
|
||||
private int rawBuffer[];
|
||||
private int vertexCount;
|
||||
private double textureU;
|
||||
@@ -24,21 +22,47 @@
|
||||
@@ -32,21 +29,47 @@
|
||||
private int rawBufferIndex;
|
||||
private int addedVertices;
|
||||
private boolean isColorDisabled;
|
||||
@@ -55,11 +59,11 @@
|
||||
+ public static Tessellator instance;
|
||||
+
|
||||
+ static {
|
||||
+ instance = new Tessellator();
|
||||
+ instance.defaultTexture = true;
|
||||
+ instance=new Tessellator();
|
||||
+ instance.defaultTexture=true;
|
||||
+
|
||||
+ nativeBufferSize = 0x200000;
|
||||
+ trivertsInBuffer = (nativeBufferSize / 48) * 6;
|
||||
+ trivertsInBuffer = (nativeBufferSize/48)*6;
|
||||
+ byteBuffer = GLAllocation.createDirectByteBuffer(nativeBufferSize * 4);
|
||||
+ intBuffer = byteBuffer.asIntBuffer();
|
||||
+ floatBuffer = byteBuffer.asFloatBuffer();
|
||||
@@ -79,7 +83,7 @@
|
||||
vertexCount = 0;
|
||||
hasColor = false;
|
||||
hasTexture = false;
|
||||
@@ -48,21 +72,9 @@
|
||||
@@ -56,21 +79,10 @@
|
||||
addedVertices = 0;
|
||||
isColorDisabled = false;
|
||||
isDrawing = false;
|
||||
@@ -93,96 +97,87 @@
|
||||
- shortBuffer = byteBuffer.asShortBuffer();
|
||||
- rawBuffer = new int[i];
|
||||
- useVBO = tryVBO && GLContext.getCapabilities().GL_ARB_vertex_buffer_object;
|
||||
- if (useVBO)
|
||||
- if(useVBO)
|
||||
- {
|
||||
- vertexBuffers = GLAllocation.createDirectIntBuffer(vboCount);
|
||||
- ARBVertexBufferObject.glGenBuffersARB(vertexBuffers);
|
||||
- }
|
||||
+ rawBuffer = null;
|
||||
+ rawBufferSize = 0;
|
||||
+
|
||||
+ rawBuffer=null;
|
||||
+ rawBufferSize=0;
|
||||
}
|
||||
|
||||
public int draw()
|
||||
@@ -72,12 +84,25 @@
|
||||
@@ -80,12 +92,20 @@
|
||||
throw new IllegalStateException("Not tesselating!");
|
||||
}
|
||||
isDrawing = false;
|
||||
- if (vertexCount > 0)
|
||||
+ int offs = 0;
|
||||
+ while (offs < vertexCount)
|
||||
{
|
||||
+ int vtc;
|
||||
+ if (drawMode == 7 && convertQuadsToTriangles)
|
||||
+ {
|
||||
+ vtc = Math.min(vertexCount - offs, trivertsInBuffer);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ vtc = Math.min(vertexCount - offs, nativeBufferSize >> 5);
|
||||
- if(vertexCount > 0)
|
||||
- {
|
||||
+ int offs=0;
|
||||
+ while(offs < vertexCount) {
|
||||
+ int vtc;
|
||||
+ if(drawMode == 7 && convertQuadsToTriangles) {
|
||||
+ vtc=Math.min(vertexCount-offs,trivertsInBuffer);
|
||||
+ } else {
|
||||
+ vtc=Math.min(vertexCount-offs,nativeBufferSize>>5);
|
||||
+ }
|
||||
+
|
||||
intBuffer.clear();
|
||||
- intBuffer.put(rawBuffer, 0, rawBufferIndex);
|
||||
+ intBuffer.put(rawBuffer, offs * 8, vtc * 8);
|
||||
+ intBuffer.put(rawBuffer, offs*8, vtc*8);
|
||||
byteBuffer.position(0);
|
||||
- byteBuffer.limit(rawBufferIndex * 4);
|
||||
+ byteBuffer.limit(vtc * 32);
|
||||
+ offs += vtc;
|
||||
+
|
||||
if (useVBO)
|
||||
+ byteBuffer.limit(vtc*32);
|
||||
+ offs+=vtc;
|
||||
if(useVBO)
|
||||
{
|
||||
vboIndex = (vboIndex + 1) % vboCount;
|
||||
@@ -150,11 +175,11 @@
|
||||
@@ -153,10 +173,10 @@
|
||||
GL11.glEnableClientState(32884 /*GL_VERTEX_ARRAY_EXT*/);
|
||||
if (drawMode == 7 && convertQuadsToTriangles)
|
||||
if(drawMode == 7 && convertQuadsToTriangles)
|
||||
{
|
||||
- GL11.glDrawArrays(4, 0, vertexCount);
|
||||
+ GL11.glDrawArrays(4, 0, vtc);
|
||||
}
|
||||
else
|
||||
+ GL11.glDrawArrays(4, 0, vtc);
|
||||
} else
|
||||
{
|
||||
- GL11.glDrawArrays(drawMode, 0, vertexCount);
|
||||
+ GL11.glDrawArrays(drawMode, 0, vtc);
|
||||
+ GL11.glDrawArrays(drawMode, 0, vtc);
|
||||
}
|
||||
GL11.glDisableClientState(32884 /*GL_VERTEX_ARRAY_EXT*/);
|
||||
if (hasTexture)
|
||||
@@ -176,6 +201,11 @@
|
||||
if(hasTexture)
|
||||
@@ -178,6 +198,10 @@
|
||||
GL11.glDisableClientState(32885 /*GL_NORMAL_ARRAY_EXT*/);
|
||||
}
|
||||
}
|
||||
+ if (rawBufferSize > 0x20000 && rawBufferIndex < (rawBufferSize << 3))
|
||||
+ {
|
||||
+ rawBufferSize = 0;
|
||||
+ rawBuffer = null;
|
||||
+ if (rawBufferSize > 0x20000 && rawBufferIndex < (rawBufferSize<<3)) {
|
||||
+ rawBufferSize=0;
|
||||
+ rawBuffer=null;
|
||||
+ }
|
||||
int i = rawBufferIndex * 4;
|
||||
reset();
|
||||
return i;
|
||||
@@ -299,6 +329,19 @@
|
||||
@@ -299,6 +323,15 @@
|
||||
|
||||
public void addVertex(double d, double d1, double d2)
|
||||
{
|
||||
+ if (rawBufferIndex >= rawBufferSize - 32)
|
||||
+ {
|
||||
+ if (rawBufferSize == 0)
|
||||
+ {
|
||||
+ if (rawBufferIndex >= rawBufferSize-32) {
|
||||
+ if (rawBufferSize == 0) {
|
||||
+ rawBufferSize = 0x10000;
|
||||
+ rawBuffer = new int[rawBufferSize];
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ } else {
|
||||
+ rawBufferSize *= 2;
|
||||
+ rawBuffer = Arrays.copyOf(rawBuffer, rawBufferSize);
|
||||
+ }
|
||||
+ }
|
||||
addedVertices++;
|
||||
if (drawMode == 7 && convertQuadsToTriangles && addedVertices % 4 == 0)
|
||||
if(drawMode == 7 && convertQuadsToTriangles && addedVertices % 4 == 0)
|
||||
{
|
||||
@@ -347,11 +390,6 @@
|
||||
@@ -348,11 +381,6 @@
|
||||
rawBuffer[rawBufferIndex + 2] = Float.floatToRawIntBits((float)(d2 + zOffset));
|
||||
rawBufferIndex += 8;
|
||||
vertexCount++;
|
||||
- if (vertexCount % 4 == 0 && rawBufferIndex >= bufferSize - 32)
|
||||
- if(vertexCount % 4 == 0 && rawBufferIndex >= bufferSize - 32)
|
||||
- {
|
||||
- draw();
|
||||
- isDrawing = true;
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/TileEntity.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/TileEntity.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -63,6 +63,15 @@
|
||||
@@ -72,6 +72,13 @@
|
||||
{
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Determines if this TileEntity requires update calls.
|
||||
+ * @return True if you want updateEntity() to be called, false if not
|
||||
+ /* FORGE: Return false if this TileEntity does not require updateEntity()
|
||||
+ * calls.
|
||||
+ */
|
||||
+ public boolean canUpdate()
|
||||
+ {
|
||||
+ public boolean canUpdate() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/TileEntityBrewingStand.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/TileEntityBrewingStand.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,7 +1,9 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ISidedInventory;
|
||||
+
|
||||
public class TileEntityBrewingStand extends TileEntity
|
||||
- implements IInventory
|
||||
+ implements IInventory, ISidedInventory
|
||||
{
|
||||
private ItemStack brewingItemStacks[];
|
||||
private int brewTime;
|
||||
@@ -273,4 +275,16 @@
|
||||
|
||||
return i;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public int getStartInventorySide(int side)
|
||||
+ {
|
||||
+ return (side == 1 ? 3 : 0);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getSizeInventorySide(int side)
|
||||
+ {
|
||||
+ return (side == 1 ? 1 : 3);
|
||||
+ }
|
||||
}
|
||||
@@ -1,84 +1,86 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,7 +1,9 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
+import net.minecraft.src.forge.ISidedInventory;
|
||||
+
|
||||
|
||||
// Referenced classes of package net.minecraft.src:
|
||||
// TileEntity, IInventory, ItemStack, NBTTagCompound,
|
||||
@@ -12,7 +13,7 @@
|
||||
// EntityPlayer
|
||||
|
||||
public class TileEntityFurnace extends TileEntity
|
||||
- implements IInventory
|
||||
+ implements IInventory, ISidedInventory
|
||||
{
|
||||
|
||||
private ItemStack furnaceItemStacks[];
|
||||
public int furnaceBurnTime;
|
||||
@@ -21,6 +23,20 @@
|
||||
@@ -33,6 +34,16 @@
|
||||
return furnaceItemStacks.length;
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public int getStartInventorySide(int side)
|
||||
+ {
|
||||
+ if (side == 0) return 1;
|
||||
+ if (side == 1) return 0;
|
||||
+ public int getStartInventorySide(int side) {
|
||||
+ if(side==0) return 1;
|
||||
+ if(side==1) return 0;
|
||||
+ return 2;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getSizeInventorySide(int side)
|
||||
+ {
|
||||
+ public int getSizeInventorySide(int side) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
public ItemStack getStackInSlot(int i)
|
||||
{
|
||||
return furnaceItemStacks[i];
|
||||
@@ -192,7 +208,7 @@
|
||||
@@ -201,7 +212,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
- ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex);
|
||||
+ ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0]);
|
||||
if (itemstack == null)
|
||||
if(itemstack == null)
|
||||
{
|
||||
return false;
|
||||
@@ -205,11 +221,8 @@
|
||||
@@ -214,11 +225,8 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
- if (furnaceItemStacks[2].stackSize < getInventoryStackLimit() && furnaceItemStacks[2].stackSize < furnaceItemStacks[2].getMaxStackSize())
|
||||
- if(furnaceItemStacks[2].stackSize < getInventoryStackLimit() && furnaceItemStacks[2].stackSize < furnaceItemStacks[2].getMaxStackSize())
|
||||
- {
|
||||
- return true;
|
||||
- }
|
||||
- return furnaceItemStacks[2].stackSize < itemstack.getMaxStackSize();
|
||||
+ int result = furnaceItemStacks[2].stackSize + itemstack.stackSize;
|
||||
+ return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize());
|
||||
+ int st = furnaceItemStacks[2].stackSize + itemstack.stackSize;
|
||||
+ return (st <= getInventoryStackLimit() && st <= itemstack.getMaxStackSize());
|
||||
}
|
||||
|
||||
public void smeltItem()
|
||||
@@ -218,14 +231,14 @@
|
||||
@@ -227,14 +235,14 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
- ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex);
|
||||
+ ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0]);
|
||||
if (furnaceItemStacks[2] == null)
|
||||
if(furnaceItemStacks[2] == null)
|
||||
{
|
||||
furnaceItemStacks[2] = itemstack.copy();
|
||||
}
|
||||
- else if (furnaceItemStacks[2].itemID == itemstack.itemID)
|
||||
+ else if (furnaceItemStacks[2].equals(itemstack))
|
||||
} else
|
||||
- if(furnaceItemStacks[2].itemID == itemstack.itemID)
|
||||
+ if(furnaceItemStacks[2].isItemEqual(itemstack))
|
||||
{
|
||||
- furnaceItemStacks[2].stackSize++;
|
||||
+ furnaceItemStacks[2].stackSize += itemstack.stackSize;
|
||||
}
|
||||
if (furnaceItemStacks[0].getItem().func_46056_k())
|
||||
if(furnaceItemStacks[0].getItem().hasContainerItem())
|
||||
{
|
||||
@@ -241,7 +254,7 @@
|
||||
@@ -249,7 +257,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- private int getItemBurnTime(ItemStack itemstack)
|
||||
+ public static int getItemBurnTime(ItemStack itemstack)
|
||||
{
|
||||
if (itemstack == null)
|
||||
if(itemstack == null)
|
||||
{
|
||||
@@ -1,27 +1,26 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/TileEntityRendererPiston.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/TileEntityRendererPiston.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -1,6 +1,8 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package net.minecraft.src;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
+import net.minecraft.src.forge.ForgeHooksClient;
|
||||
+
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class TileEntityRendererPiston extends TileEntitySpecialRenderer
|
||||
@@ -31,6 +33,7 @@
|
||||
@@ -40,6 +41,7 @@
|
||||
{
|
||||
GL11.glShadeModel(7424 /*GL_FLAT*/);
|
||||
}
|
||||
+ ForgeHooksClient.beforeBlockRender(block, field_31071_b);
|
||||
+ ForgeHooksClient.beforeBlockRender(block,field_31071_b);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setTranslationD(((float)d - (float)tileentitypiston.xCoord) + tileentitypiston.func_31017_b(f), ((float)d1 - (float)tileentitypiston.yCoord) + tileentitypiston.func_31014_c(f), ((float)d2 - (float)tileentitypiston.zCoord) + tileentitypiston.func_31013_d(f));
|
||||
tessellator.setColorOpaque(1, 1, 1);
|
||||
@@ -52,6 +55,7 @@
|
||||
@@ -60,6 +62,7 @@
|
||||
}
|
||||
tessellator.setTranslationD(0.0D, 0.0D, 0.0D);
|
||||
tessellator.draw();
|
||||
+ ForgeHooksClient.afterBlockRender(block, field_31071_b);
|
||||
+ ForgeHooksClient.afterBlockRender(block,field_31071_b);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/World.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -33,7 +33,7 @@
|
||||
@@ -51,7 +51,7 @@
|
||||
public int lightningFlash;
|
||||
public boolean editingBlocks;
|
||||
private long lockTimestamp;
|
||||
@@ -9,123 +9,112 @@
|
||||
public int difficultySetting;
|
||||
public Random rand;
|
||||
public boolean isNewWorld;
|
||||
@@ -399,7 +399,12 @@
|
||||
@@ -406,7 +406,10 @@
|
||||
|
||||
public boolean isAirBlock(int i, int j, int k)
|
||||
{
|
||||
- return getBlockId(i, j, k) == 0;
|
||||
+ int iBlockID = getBlockId(i, j, k);
|
||||
+ if (iBlockID == 0)
|
||||
+ {
|
||||
+ int iBlockID = getBlockId( i, j, k );
|
||||
+ if ( iBlockID == 0 )
|
||||
+ return true;
|
||||
+ }
|
||||
+ return Block.blocksList[iBlockID].isAirBlock(this, i, j, k);
|
||||
+ return Block.blocksList[iBlockID].isAirBlock(this,i,j,k);
|
||||
}
|
||||
|
||||
public boolean blockExists(int i, int j, int k)
|
||||
@@ -1576,7 +1581,7 @@
|
||||
@@ -1576,7 +1579,7 @@
|
||||
Chunk chunk = getChunkFromChunkCoords(tileentity.xCoord >> 4, tileentity.zCoord >> 4);
|
||||
if (chunk != null)
|
||||
if(chunk != null)
|
||||
{
|
||||
- chunk.removeChunkBlockTileEntity(tileentity.xCoord & 0xf, tileentity.yCoord, tileentity.zCoord & 0xf);
|
||||
+ chunk.cleanChunkBlockTileEntity(tileentity.xCoord & 0xf, tileentity.yCoord, tileentity.zCoord & 0xf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1605,15 +1610,17 @@
|
||||
@@ -1604,16 +1607,16 @@
|
||||
{
|
||||
loadedTileEntityList.add(tileentity1);
|
||||
}
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
if (chunkExists(tileentity1.xCoord >> 4, tileentity1.zCoord >> 4))
|
||||
+ } else {
|
||||
if(chunkExists(tileentity1.xCoord >> 4, tileentity1.zCoord >> 4))
|
||||
{
|
||||
Chunk chunk1 = getChunkFromChunkCoords(tileentity1.xCoord >> 4, tileentity1.zCoord >> 4);
|
||||
if (chunk1 != null)
|
||||
if(chunk1 != null)
|
||||
{
|
||||
- chunk1.setChunkBlockTileEntity(tileentity1.xCoord & 0xf, tileentity1.yCoord, tileentity1.zCoord & 0xf, tileentity1);
|
||||
+ chunk1.cleanChunkBlockTileEntity(tileentity1.xCoord & 0xf, tileentity1.yCoord, tileentity1.zCoord & 0xf);
|
||||
}
|
||||
}
|
||||
- markBlockNeedsUpdate(tileentity1.xCoord, tileentity1.yCoord, tileentity1.zCoord);
|
||||
}
|
||||
}
|
||||
while (true);
|
||||
@@ -1625,14 +1632,14 @@
|
||||
- }
|
||||
+ }
|
||||
} while(true);
|
||||
addedTileEntityList.clear();
|
||||
}
|
||||
@@ -1623,13 +1626,17 @@
|
||||
|
||||
public void addTileEntity(Collection collection)
|
||||
{
|
||||
- if (scanningTileEntities)
|
||||
- if(scanningTileEntities)
|
||||
- {
|
||||
- addedTileEntityList.addAll(collection);
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- loadedTileEntityList.addAll(collection);
|
||||
- }
|
||||
+ List dest = scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ for(Object entity : collection)
|
||||
+ {
|
||||
+ if(((TileEntity)entity).canUpdate())
|
||||
+ {
|
||||
+ dest.add(entity);
|
||||
+ }
|
||||
+ List dest=scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ for(Object ob : collection) {
|
||||
+ TileEntity te = (TileEntity)ob;
|
||||
+ if(te.canUpdate()) dest.add(te);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Used as a bugfix */
|
||||
+ public void addTileEntity(TileEntity te) {
|
||||
+ List dest=scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ if(te.canUpdate()) dest.add(te);
|
||||
}
|
||||
|
||||
public void updateEntity(Entity entity)
|
||||
@@ -1793,7 +1800,14 @@
|
||||
if (j2 == Block.fire.blockID || j2 == Block.lavaMoving.blockID || j2 == Block.lavaStill.blockID)
|
||||
@@ -1789,7 +1796,10 @@
|
||||
if(j2 == Block.fire.blockID || j2 == Block.lavaMoving.blockID || j2 == Block.lavaStill.blockID)
|
||||
{
|
||||
return true;
|
||||
- }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if(j2 > 0 && Block.blocksList[j2].isBlockBurning(this, k1, l1, i2))
|
||||
+ {
|
||||
+ } else {
|
||||
+ if(j2>0 && Block.blocksList[j2].isBlockBurning(this,k1,l1,i2))
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2038,48 +2052,29 @@
|
||||
@@ -2044,46 +2054,22 @@
|
||||
|
||||
public void setBlockTileEntity(int i, int j, int k, TileEntity tileentity)
|
||||
{
|
||||
- if (tileentity != null && !tileentity.isInvalid())
|
||||
- if(tileentity != null && !tileentity.isInvalid())
|
||||
- {
|
||||
- if (scanningTileEntities)
|
||||
- if(scanningTileEntities)
|
||||
- {
|
||||
- tileentity.xCoord = i;
|
||||
- tileentity.yCoord = j;
|
||||
- tileentity.zCoord = k;
|
||||
- addedTileEntityList.add(tileentity);
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- loadedTileEntityList.add(tileentity);
|
||||
- Chunk chunk = getChunkFromChunkCoords(i >> 4, k >> 4);
|
||||
- if (chunk != null)
|
||||
- if(chunk != null)
|
||||
- {
|
||||
- chunk.setChunkBlockTileEntity(i & 0xf, j, k & 0xf, tileentity);
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
+ if (tileentity == null || tileentity.isInvalid())
|
||||
+ {
|
||||
+ if(tileentity==null || tileentity.isInvalid())
|
||||
+ return;
|
||||
+ }
|
||||
+ List dest = scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ if (tileentity.canUpdate())
|
||||
+ {
|
||||
+ dest.add(tileentity);
|
||||
+ }
|
||||
+ List dest=scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ if(tileentity.canUpdate()) dest.add(tileentity);
|
||||
+ Chunk chunk = getChunkFromChunkCoords(i >> 4, k >> 4);
|
||||
+ if (chunk != null)
|
||||
+ {
|
||||
+ if(chunk != null) {
|
||||
+ chunk.setChunkBlockTileEntity(i & 0xf, j, k & 0xf, tileentity);
|
||||
+ }
|
||||
}
|
||||
@@ -133,98 +122,70 @@
|
||||
public void removeBlockTileEntity(int i, int j, int k)
|
||||
{
|
||||
- TileEntity tileentity = getBlockTileEntity(i, j, k);
|
||||
- if (tileentity != null && scanningTileEntities)
|
||||
- if(tileentity != null && scanningTileEntities)
|
||||
- {
|
||||
- tileentity.invalidate();
|
||||
- addedTileEntityList.remove(tileentity);
|
||||
- }
|
||||
- else
|
||||
- } else
|
||||
- {
|
||||
- if (tileentity != null)
|
||||
- if(tileentity != null)
|
||||
- {
|
||||
- addedTileEntityList.remove(tileentity);
|
||||
- loadedTileEntityList.remove(tileentity);
|
||||
- }
|
||||
- Chunk chunk = getChunkFromChunkCoords(i >> 4, k >> 4);
|
||||
- if (chunk != null)
|
||||
- if(chunk != null)
|
||||
- {
|
||||
- chunk.removeChunkBlockTileEntity(i & 0xf, j, k & 0xf);
|
||||
- }
|
||||
- }
|
||||
+ Chunk chunk = getChunkFromChunkCoords(i >> 4, k >> 4);
|
||||
+ if (chunk != null)
|
||||
+ {
|
||||
+ if(chunk != null) {
|
||||
+ chunk.removeChunkBlockTileEntity(i & 0xf, j, k & 0xf);
|
||||
+ }
|
||||
}
|
||||
|
||||
public void markEntityForDespawn(TileEntity tileentity)
|
||||
@@ -2109,7 +2104,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
public void func_35455_a(TileEntity tileentity)
|
||||
@@ -2106,13 +2092,18 @@
|
||||
public boolean isBlockNormalCube(int i, int j, int k)
|
||||
{
|
||||
Block block = Block.blocksList[getBlockId(i, j, k)];
|
||||
- if(block == null)
|
||||
- {
|
||||
- return false;
|
||||
- } else
|
||||
- {
|
||||
- return block.blockMaterial.getIsOpaque() && block.renderAsNormalBlock();
|
||||
+ return block.isBlockNormalCube(this, i, j, k);
|
||||
}
|
||||
- }
|
||||
+ if(block == null) return false;
|
||||
+ return block.isBlockNormalCube(this,i,j,k);
|
||||
+ }
|
||||
+
|
||||
+ /* FORGE: Determine if the given block is considered solid on the
|
||||
+ * specified side. Used by placement logic.
|
||||
+ */
|
||||
+ public boolean isBlockSolidOnSide(int i, int j, int k, int side)
|
||||
+ {
|
||||
+ Block block = Block.blocksList[getBlockId(i, j, k)];
|
||||
+ if(block == null) return false;
|
||||
+ return block.isBlockSolidOnSide(this,i,j,k,side);
|
||||
}
|
||||
|
||||
@@ -2535,7 +2530,7 @@
|
||||
public boolean func_41082_b(int i, int j, int k, boolean flag)
|
||||
@@ -2531,7 +2522,7 @@
|
||||
|
||||
private int computeBlockLightValue(int i, int j, int k, int l, int i1, int j1)
|
||||
{
|
||||
- int k1 = Block.lightValue[i1];
|
||||
+ int k1 = (i1 == 0) ? 0 : Block.blocksList[i1].getLightValue(this, j, k, l);
|
||||
+ int k1 = (i1==0) ? 0 : Block.blocksList[i1].getLightValue(this,j,k,l);
|
||||
int l1 = getSavedLightValue(EnumSkyBlock.Block, j - 1, k, l) - j1;
|
||||
int i2 = getSavedLightValue(EnumSkyBlock.Block, j + 1, k, l) - j1;
|
||||
int j2 = getSavedLightValue(EnumSkyBlock.Block, j, k - 1, l) - j1;
|
||||
@@ -2945,6 +2940,10 @@
|
||||
@@ -2940,6 +2931,7 @@
|
||||
{
|
||||
block = null;
|
||||
}
|
||||
+ if (block != null && block.isBlockReplaceable(this, j, k, l))
|
||||
+ {
|
||||
+ block = null;
|
||||
+ }
|
||||
+ if (block != null && block.isBlockReplaceable(this,j,k,l)) block = null;
|
||||
return i > 0 && block == null && block1.canPlaceBlockOnSide(this, j, k, l, i1);
|
||||
}
|
||||
|
||||
@@ -3493,4 +3492,39 @@
|
||||
{
|
||||
return worldInfo.func_46133_t() != EnumWorldType.FLAT ? 63D : 0.0D;
|
||||
}
|
||||
+
|
||||
+
|
||||
+ /**
|
||||
+ * Adds a single TileEntity to the world.
|
||||
+ * TODO: Eloraam fully describe the bug this fixes.
|
||||
+ * @param entity The TileEntity to be added.
|
||||
+ */
|
||||
+ public void addTileEntity(TileEntity entity)
|
||||
+ {
|
||||
+ List dest = scanningTileEntities ? addedTileEntityList : loadedTileEntityList;
|
||||
+ if(entity.canUpdate())
|
||||
+ {
|
||||
+ dest.add(entity);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Determine if the given block is considered solid on the
|
||||
+ * specified side. Used by placement logic.
|
||||
+ *
|
||||
+ * @param X Block X Position
|
||||
+ * @param Y Block Y Position
|
||||
+ * @param Z Block Z Position
|
||||
+ * @param side The Side in question
|
||||
+ * @return True if the side is solid
|
||||
+ */
|
||||
+ public boolean isBlockSolidOnSide(int X, int Y, int Z, int side)
|
||||
+ {
|
||||
+ Block block = Block.blocksList[getBlockId(X, Y, Z)];
|
||||
+ if(block == null)
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return block.isBlockSolidOnSide(this, X, Y, Z, side);
|
||||
+ }
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
--- ../src_base/minecraft/net/minecraft/src/WorldGenDungeons.java 0000-00-00 00:00:00.000000000 -0000
|
||||
+++ ../src_work/minecraft/net/minecraft/src/WorldGenDungeons.java 0000-00-00 00:00:00.000000000 -0000
|
||||
@@ -3,6 +3,8 @@
|
||||
import java.io.PrintStream;
|
||||
import java.util.Random;
|
||||
|
||||
+import net.minecraft.src.forge.MinecraftForge;
|
||||
+
|
||||
public class WorldGenDungeons extends WorldGenerator
|
||||
{
|
||||
public WorldGenDungeons()
|
||||
@@ -118,11 +120,11 @@
|
||||
int k4 = 0;
|
||||
do
|
||||
{
|
||||
- if (k4 >= 8)
|
||||
+ if (k4 >= MinecraftForge.getDungeonLootTries())
|
||||
{
|
||||
break label0;
|
||||
}
|
||||
- ItemStack itemstack = pickCheckLootItem(random);
|
||||
+ ItemStack itemstack = MinecraftForge.getRandomDungeonLoot(random);
|
||||
if (itemstack != null)
|
||||
{
|
||||
tileentitychest.setInventorySlotContents(random.nextInt(tileentitychest.getSizeInventory()), itemstack);
|
||||
@@ -137,7 +139,7 @@
|
||||
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getBlockTileEntity(i, j, k);
|
||||
if (tileentitymobspawner != null)
|
||||
{
|
||||
- tileentitymobspawner.setMobID(pickMobSpawner(random));
|
||||
+ tileentitymobspawner.setMobID(MinecraftForge.getRandomDungeonMob(random));
|
||||
}
|
||||
else
|
||||
{
|
||||
Loaded 100 of 153 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user