Compare commits

..
172 Commits
Author SHA1 Message Date
Space Toad e554a79351 merged with trunk 2011-12-22 22:38:45 +00:00
LexManos 2c7b827bbd tagged 1.2.3 with reflection fix 2011-12-21 14:59:32 +00:00
LexManos d56f912277 tagged 1.2.3 2011-12-21 13:02:29 +00:00
LexManos 5332a09d17 tagged 1.2.3 2011-12-21 12:57:34 +00:00
Eloraam 82c0731888 Bumping the version number. 2011-12-21 10:22:37 +00:00
Eloraam a0b0faf693 Fixed some strange behavior in snow blocks. Fixed a missing patch checkin. 2011-12-21 10:15:38 +00:00
Eloraam ed3fe86454 A minimalistic hook for rendering world effect overlays or other 3D overlay
data.
2011-12-21 09:57:10 +00:00
Eloraam 5bf8a30ab8 Major rework of the rendering core. Added support for custom render context
handling.
2011-12-21 09:01:45 +00:00
LexManos 663ed58610 Added Item.onDroppedByPlayer hook 2011-12-21 07:44:01 +00:00
Eloraam d1909d30ac Deprecated IUseItemFirst, and made onUseItemFirst work in Creative. 2011-12-21 06:34:57 +00:00
LexManos 5013991fa4 Added server side prototypes for addCreativeItems()s They are unused, but declared for compiling compatibility. 2011-12-21 04:38:59 +00:00
LexManos 1ed1d233c7 Added hooks to BlockFire for setting block flame interaction properties. 2011-12-21 04:30:53 +00:00
LexManos 3fb9b988d9 Replaced dropBlockAsItemWithChance in BlockNetherStalk with getBlockDropped. 2011-12-21 00:44:53 +00:00
Eloraam 10f8c2c426 Fixed a minor crop fortune bug. 2011-12-20 21:39:53 +00:00
LexManos 8d43d859c7 Commit of a hook for adding items into world dungeon generation.
Uses a weighted random selection scheme.
Also a hook for adding custom mobs to the dungeon generation list.
2011-12-20 07:00:43 +00:00
LexManos 106b9dc4c9 Updated mappings 2011-12-20 06:58:29 +00:00
LexManos 8735d92ecd Implemented ISidedInventory for Brewing Stands.
Top is input, 1 slot
All other sides are output, 3 slots.
2011-12-19 06:33:20 +00:00
LexManos 87ea7289cb Added missing native library path to forge_client project.
Added harvest levels/effectiveness for Axes and Shovels.
2011-12-16 10:06:57 +00:00
LexManos 8a08602dc3 Fixed a zLevel bug with custom item renderers. 2011-12-14 10:45:37 +00:00
Space Toad 2995f1c072 bumped version numbers 2011-12-13 19:33:37 +00:00
LexManos 812be37f5f Fixed seeds/wheat not dropping from Crops/TallGrass.
All future Forge code should use proper annotations when Overriding.
2011-12-11 21:55:35 +00:00
LexManos 4928e3b059 Small fix to decrease the number of glBindTexture calls that are immediately overridden. 2011-12-11 11:50:55 +00:00
LexManos 3262b656a3 The install scripts will now only patch the client/server if they are there.
This allows for people to only worry about getting one side setup correctly if they don't care about the other.
2011-12-11 07:37:54 +00:00
LexManos 5fc1ee844d Fixed a infinite recursion loop in spacetoad's commit to Block.java.patch
Added @Deprecated annotations to the 'backwards compatible' functions spacetoad re-added.

Made changes to the install scripts:
-Will overwrite the current MCP mappings and use the ones that ship with forge, this 
    should eliminate all the issues of people not being able to install it because they updated there mcp.cfg
-Will now move fernflower.jar if it is found, so that MCP will not decompile using it.
    Should fix the issues of people trying to use forge with fernflower installed.
-Will call updatemcp/updatenames so that users get the latest mappings for unmapped items.
-Also calls updatemd5s so that the forge API is skipped when spitting out reobfusicated files.

Update the readme to be more accurate.
Added my name to the credits :P
Updated the update_patches/package scripts to account for grabbing the conf folder.
Added GnuWin32's grep
2011-12-11 07:04:21 +00:00
Space Toad 1be3e18a9d bumped version number 2011-12-10 11:07:51 +00:00
Space Toad e511ba7db8 further backward compatibility fixes 2011-12-10 11:05:49 +00:00
LexManos e08cec3bc0 Added my EnumHelper classes, this allows for dynamic creation of Enum values at runtime.
See My post for a example:
http://www.minecraftforum.net/topic/514000-api-minecraft-forge/page__view__findpost__p__10948540
2011-12-09 07:58:32 +00:00
LexManos d6a5cf2828 Missed some mappings 2011-12-09 06:51:31 +00:00
LexManos 03c5d8aeb4 For for updated mappings. 2011-12-09 04:40:32 +00:00
Space Toad 3c3654b576 added server side of the previous commit 2011-12-08 07:51:17 +00:00
Space Toad fb30b67adb fixed backwards compatibility 2011-12-07 21:30:48 +00:00
LexManos d08641aae5 Fixed fortune enchant.
This breaks forge's quantityDropped signature, be careful when updating mods.
2011-12-06 07:41:59 +00:00
LexManos 99542f5ef5 Cleaned up a few things related to MLProp
Deleted unmaintained fernflower patch.
2011-12-05 08:30:07 +00:00
Eloraam 5decee87d6 Added a hoe handler for advanced farming. 2011-12-02 04:32:10 +00:00
Eloraam 590072e636 Added new tool harvest intercept hook. Removed mlprop.patch. 2011-12-02 04:08:15 +00:00
LexManos fb1cd9be88 Moved dye creative adds to the ItemDye class. 2011-12-02 03:57:11 +00:00
LexManos 576ff2fadb Creative Container population hook. 2011-12-02 03:37:48 +00:00
Eloraam 9e28c51d23 Fixed missing CraftingManager patches for the repair disable hook.
Fixed smp mlprop.
2011-12-02 02:26:15 +00:00
LexManos 6d5dffa458 Added MLprop.java that ST forgot when he merged.
Fixed EntityPlayer.getPlayerStrVsBlock metadata function for 1.0.0 changes in Enchantments/Potions.
2011-12-01 07:29:06 +00:00
Space Toad 30b1f4c2ed bumped version number 2011-11-30 19:02:10 +00:00
Space Toad 0e221f098c merged with pre-1.9p5 branch, for 1.0.0 release 2011-11-30 19:00:43 +00:00
Space Toad e835fd2a46 fixed mapping 2011-11-15 18:46:42 +00:00
Eloraam 55f599e2b3 New block destruction hook. Deprecated IOverrideReplace. 2011-10-31 20:07:31 +00:00
Eloraam 68c3a5675f Updated MCP mapping, backed out a useless patch. 2011-10-31 19:24:45 +00:00
Eloraam a31f983e6a Added some IC2 items. 2011-10-27 02:05:43 +00:00
Eloraam a2fac655b4 Changed a field permission for MFR. 2011-10-26 04:42:37 +00:00
Eloraam 670180a0b6 Small TileEntity fix. 2011-10-25 19:28:47 +00:00
Eloraam 54da114945 Added a few more known ingots. 2011-10-25 17:15:12 +00:00
Eloraam ebd92e094d Bugfix for numeric range of mob and window IDs. 2011-10-22 11:53:00 +00:00
Eloraam 7f67f1f13a Fixed TileEntity caching. 2011-10-21 21:00:44 +00:00
Eloraam b719f6142c Patch for a small activation glitch in doors. 2011-10-19 02:45:51 +00:00
Eloraam 18795572fe MCP update.
Fixed a problem with TileEntity sending.
2011-10-19 02:00:50 +00:00
Eloraam fba7f7d1ab Rolled in a critical MLMP fix, because MLMP is virtually unmaintained. 2011-10-18 19:11:57 +00:00
Eloraam 1c253966c8 Added ore dictionary. 2011-10-18 18:56:10 +00:00
Eloraam effbaa0c74 Fix for new MCP mappings.
Fixed the distribution of flowers with bonemeal.
Fixed accidentally making obsidian easy to mine.
2011-10-13 07:10:43 +00:00
LexManos 321c8196e7 Fixed line endings in install.sh 2011-10-11 22:38:39 +00:00
LexManos 024ebad54a Updated the package.sh script to include the patches, the new install.sh, and modLoaderMP/mlprop.patch 2011-10-11 22:23:39 +00:00
LexManos d58587a016 Changed the windows setup to use del instead of remove.
Both update patches scripts no longer remove svn entries.
Added the forge_client\bin and forge_server\bin folders to the svn ignore.
2011-10-10 23:47:30 +00:00
Space Toad 249d607397 bumbed forge minor version 2011-10-10 19:21:41 +00:00
Space Toad 5a3585adaa reactivated special armor code 2011-10-10 19:16:11 +00:00
LexManos 8fb9ad4687 Made the windows setup script a bit more robust, also made both scripts filter out non-patch files. {Issue with svn files} 2011-10-10 00:09:48 +00:00
LexManos 6715ccd14a Fixed a bug in forge_client project that had a hard link to E:/MCP/jars/bin/paul.jar now points to MCP/jars/bin/minecraft.jar {has the same paulsound libraries}
Major refactoring of the patches, now each modified file gets its own patch file.
Rewrote all the scripts to use new multi-patch system.
Added linux install.sh using new system.
Added some required libraries from GNUWin32 for the windows side of the new setup.bat/update_patches.bat http://gnuwin32.sourceforge.net/
2011-10-09 04:21:29 +00:00
Eloraam cf456f9f3d Changed a field permission. 2011-10-05 22:54:20 +00:00
Eloraam a19394d48a Fixed another TileEntity bug. 2011-10-04 21:46:00 +00:00
Space Toad e233005138 ISidedInventory is now explicitely an inventory 2011-10-02 19:14:20 +00:00
Eloraam f579b2db69 Fixed the MCP mappings. 2011-10-02 18:42:15 +00:00
Eloraam fe62372429 - Added an ItemStack parameter to IArmorTextureProvider
- Added ISidedInventory
- Added IBonemealHandler
- Added hooks in grow-on-grass and in break tall grass.
- Fixed furnace output of multiple items.
- Added getBlockDropped().
- Bumped version number to 1.1.1.
2011-10-02 08:55:31 +00:00
Eloraam 12853df285 Hopefully fixed the major TileEntity bugs. 2011-09-30 12:32:27 +00:00
Eloraam 9034062c8c Fixed TileEntities, bumped version number. 2011-09-28 23:35:31 +00:00
Eloraam 2a950f3e80 Fixed digging particles. 2011-09-26 19:37:28 +00:00
Eloraam fb0ccd3618 Added a fix for onItemUse regression. 2011-09-22 10:12:05 +00:00
Eloraam a6214f2d45 More MCP mapping fixes. 2011-09-22 03:01:10 +00:00
Eloraam 3135a0650a Undid that. Whoops. 2011-09-22 02:49:33 +00:00
Eloraam d2c6244ca8 Code to remove a single block effectiveness. 2011-09-22 02:45:47 +00:00
Eloraam 74e7431ab6 Metadata-sensitive quantity dropped. 2011-09-21 08:08:58 +00:00
Eloraam 086b155e6b Fixed up a few bugs in the tool path. 2011-09-21 07:14:53 +00:00
Eloraam f82ee17e48 Fixed another bug in the furnace patch. Works now. 2011-09-21 01:05:44 +00:00
Eloraam ae02a73c67 Small bugfix for furnace patch. 2011-09-21 00:59:37 +00:00
Eloraam 561e3c773f Metadata-sensitive smelting patch. 2011-09-21 00:55:09 +00:00
Eloraam 4127a60d3f Fixes for MCP updates. 2011-09-19 20:40:07 +00:00
Eloraam e7c2b0506f Fixed the 1.8.1 version for MLMP support. 2011-09-19 20:30:34 +00:00
Eloraam 65e1544168 A bunch of little patches to make it actually build for 1.8.1. 2011-09-19 01:44:40 +00:00
Eloraam e9ae3a0a82 First attempt at a 1.8.1 version. May not work. 2011-09-19 01:30:41 +00:00
Eloraam b4fa5f58db Unrolled a mistaken fix. 2011-09-11 04:46:16 +00:00
Eloraam eda99a16fb Another try for osx. 2011-09-11 04:05:39 +00:00
Eloraam 721b3015db A small fix to hopefully make the script work on a mac. 2011-09-11 03:49:01 +00:00
Eloraam 297b35a136 Redesigned TileEntity handling. 2011-09-08 21:33:03 +00:00
Space Toad 29a712e0f9 fixed SMP bug related to BuildCraft issue #226 2011-09-07 19:57:53 +00:00
Eloraam 81802108ca A few small patches to fix obscure piston rendering bugs. 2011-09-07 15:14:01 +00:00
Eloraam 0908fdfe5c Optifine compatibility patch. 2011-09-07 14:58:08 +00:00
Space Toad fb070104a2 updated to latest MCP, and added custom item rendering facilities 2011-09-03 11:46:59 +00:00
Eloraam e85d4af5da Improved trapdoor hook. 2011-09-01 08:01:47 +00:00
Eloraam 54bb9a6efb New lighting hook. 2011-08-30 10:32:14 +00:00
Eloraam ca979fe391 Fixed new MCP mappings. 2011-08-30 06:18:32 +00:00
Space Toad f59a0f61aa bumped forge version # to 1.0.6 2011-08-28 12:54:47 +00:00
Space Toad 2a1342dc75 added ArmorProperties constructors, remove deprecated subprograms (supposedly not used by anyone) 2011-08-28 12:33:16 +00:00
Space Toad f264295d12 fixed headers, implemented new armor computation for IC2 2011-08-27 11:42:48 +00:00
Eloraam fb4bbaa85b Fixed the permissions on a couple fields in ItemTool. 2011-08-27 05:49:09 +00:00
Space Toad c25a08e946 temporary reverted to r61 2011-08-27 01:12:20 +00:00
Space Toad a6a1bcf402 updated credits 2011-08-25 19:47:34 +00:00
Eloraam 0ae9be4710 Patched the installer again. 2011-08-25 17:15:02 +00:00
Eloraam 4f7c0b73f8 Fixed a typo. 2011-08-25 07:19:49 +00:00
Eloraam 87a9cc96cb Small RedPower-specific patch. 2011-08-25 07:17:10 +00:00
Eloraam 07dd048d50 Added armor texture hook. 2011-08-25 00:23:31 +00:00
Eloraam 47bf6357c3 New install script for Windows. 2011-08-24 04:18:57 +00:00
Eloraam 705fc5b26c Fixed the version number. 2011-08-21 07:50:09 +00:00
Eloraam 7b35ba5be4 Changed some field permissions. 2011-08-20 22:23:29 +00:00
Eloraam 1a04139657 Handler for custom block highlight. 2011-08-20 10:35:14 +00:00
Eloraam 6cfbc34940 Version control logic, improved the destroy handling hook. 2011-08-20 08:59:05 +00:00
Eloraam 8fcc2a1f9f Improved BTW compatibility.
Finished the placement hook changes.
Added a sleep handler.
Added a current item destroyed handler.
2011-08-18 00:14:09 +00:00
Eloraam d3323f547c Checking in the new crafting hook. 2011-08-17 16:05:38 +00:00
Eloraam ad3d08f0ee Added a little support for two-pass rendering. 2011-08-17 10:23:10 +00:00
Eloraam f7a3157174 Forgot the forge hooks. 2011-08-13 18:26:31 +00:00
Eloraam 7de8218e4a Updates:
- Added warning message for non-preloaded textures.
- Documentation
- Ladder fix for SMP.
- Obsoleted IBlockSecondaryProperties
- Added hooks for place-by-side.
- Fixed texture 3 and piston texture bug.
- Added new tool system.
2011-08-12 23:53:30 +00:00
FlowerChild 0aeb6f1eab Added patches for decompiled by fernflower source. Client only, and not tested enough. Using is currently not recommended. 2011-08-12 13:52:53 +00:00
Eloraam 08beffb945 Uploaded new install file. 2011-08-12 04:17:33 +00:00
Eloraam ff6a314cf8 Fixed for the new version of MCP. 2011-08-11 21:10:52 +00:00
Eloraam 5a9c5b4b67 Uploaded install fix. 2011-08-08 19:50:09 +00:00
Eloraam 0d6fbf063b The ladder hook. 2011-08-08 16:55:50 +00:00
Eloraam b9a56c48b1 Fixed a typo in isBoundingBoxBurning. 2011-08-07 21:37:05 +00:00
Space Toad b9d42053b2 updated list of contributers 2011-08-06 21:54:56 +00:00
Space Toad 00cd110fae updated release and package script to take into account credit file 2011-08-06 21:23:38 +00:00
Space Toad 36ed659b17 renamed file 2011-08-06 21:18:31 +00:00
Space Toad be3b4cc3bc initial revision of the credit file, to be completed 2011-08-06 21:16:53 +00:00
Eloraam da26ee2422 Added a comment. 2011-08-06 18:29:58 +00:00
Eloraam 92d0d6f4e1 Added a small patch to MovingObjectPosition. 2011-08-06 18:22:24 +00:00
Eloraam 44992f9b69 Not really a change. 2011-08-05 14:58:18 +00:00
Eloraam c9bcb73636 Added a texture preloader to avoid render glitches on the first render. 2011-08-05 11:58:14 +00:00
Eloraam cd865a256b New multiple-tessellator texture renderer. 2011-08-05 11:07:03 +00:00
Eloraam 01c34eb0be New install script for Linux users. 2011-08-05 00:32:56 +00:00
Space Toad c9c2bbef1d improved installation and setup scripts 2011-08-04 06:10:38 +00:00
Eloraam 606e0d8e80 Added secondary block properties patch. 2011-08-03 05:15:31 +00:00
Eloraam bedcc2fc64 Fixed a little path bug. 2011-08-02 05:18:52 +00:00
Eloraam c7db47d528 Improved the setup scripts. 2011-08-02 03:54:59 +00:00
Eloraam f50d35ce3f Fixed bugs in the pickaxe code. 2011-08-01 02:06:00 +00:00
Eloraam 112adbef8f Improved some documentation. 2011-07-31 18:52:19 +00:00
Space Toad 0d917cfdcc removed inner classes, remove redundant biome control 2011-07-31 12:01:23 +00:00
Space Toad 8f03e6cd24 fixed files for release 2011-07-30 21:25:39 +00:00
Space Toad e507f90276 additional comments 2011-07-30 21:10:42 +00:00
Space Toad dae71d0b7a added comments 2011-07-30 21:01:03 +00:00
Space Toad 5b2be7903c fixed exceptions in minecraft code 2011-07-30 19:05:28 +00:00
Space Toad 6389b16609 fixed previous checkin 2011-07-30 16:13:31 +00:00
Space Toad 902f8918a3 added sources packaging 2011-07-30 16:13:14 +00:00
Space Toad 73d19ef0a3 add custom armor, for #13 2011-07-30 07:13:10 +00:00
Space Toad 80ab9a98bb first batch of documentation + minor reformatings 2011-07-30 06:42:15 +00:00
Eloraam 7837e4d3a1 Added explosion resistance hook. 2011-07-29 22:00:08 +00:00
Space Toad 423490e1c8 fixed addPixaxeBlockEffectiveAgainst 2011-07-29 21:25:22 +00:00
Eloraam deae2de0eb Added the four new hooks from RedPower, and the TileEntity bugfix. 2011-07-29 21:15:21 +00:00
Space Toad 821cc3ec54 added missing copyright header 2011-07-29 20:59:01 +00:00
Space Toad 9cb5f47805 added missing file 2011-07-29 20:58:31 +00:00
Space Toad c51848db5b added mineable block configuration, for #6 2011-07-29 17:55:34 +00:00
Space Toad 20c30d541c added missing graphical features, added configuration management, for #5 2011-07-20 19:58:59 +00:00
Space Toad d9e4d13d69 improved previous patch, extracted internal class 2011-07-19 18:41:51 +00:00
Space Toad 1822dfd896 fixed compilation errors 2011-07-19 18:19:45 +00:00
Space Toad 8df7df145b fixed setup file 2011-07-19 17:58:23 +00:00
FlowerChild f89a1210df Removed MCForgeEffectRenderer, patched MC EffectRenderer 2011-07-19 11:24:36 +00:00
Space Toad 50c30fce23 removed OBE file 2011-07-18 06:18:14 +00:00
Space Toad ad56d1c879 fixed setup script for windows and patch 2011-07-17 12:16:26 +00:00
Space Toad 65aa6d6b43 fixed packaging script 2011-07-16 22:39:55 +00:00
Space Toad 6aa32def11 fixed patch script and added release scripts 2011-07-16 22:32:57 +00:00
FlowerChild 7be20d9c4d Added OnGameStart hook, added custom effect render to fulfill infinite sprite support. Render needs to be changed a little to cover items also, though. 2011-07-16 16:37:37 +00:00
Space Toad 3cf1792bec added headers 2011-07-15 23:13:09 +00:00
Space Toad d1a79c2a66 added support for infinite sprites, for #4 2011-07-15 23:04:10 +00:00
Space Toad 5b06661835 implement infinite terrain sprites, for #3 2011-07-15 22:40:53 +00:00
Space Toad a7e950e7c2 fixed style, added biome population support, for #2 2011-07-15 21:17:33 +00:00
Space Toad 341cfc0cf7 initial revision of the license 2011-07-15 18:26:33 +00:00
Space Toad ba6aa3368d fixed previous checkin 2011-07-14 11:19:22 +00:00
Space Toad 81e5a85a36 added basic build script for windows 2011-07-14 11:18:25 +00:00
Space Toad 050d0ac294 added missing patch step 2011-07-14 11:15:07 +00:00
Space Toad c0c4830ed4 made initial setup, implemented custom bucket, for #1 2011-07-14 11:10:21 +00:00
Space Toad 9eed4e19f2 added main project directories 2011-07-12 21:03:55 +00:00
Space Toad e8c2895042 added main source directory 2011-07-12 21:02:53 +00:00
150 changed files with 15819 additions and 20593 deletions

No files matched your search

+5 -9
View File
@@ -1,15 +1,11 @@
@cd ..
cd ..
@rmdir /S /Q src
@mkdir src
rmdir /S /Q src
mkdir src
xcopy /Y /E src_work\* src\
xcopy /Y /E forge\forge_client\src\net\* src\minecraft\net
xcopy /Y /E forge\forge_common\net\* src\minecraft\net
xcopy /Y /E forge\forge_common\net\* src\minecraft_server\net
@cd forge
@cmd /C inject_version.bat ../src/minecraft/net/minecraft/src/forge/ForgeHooks.java
@cmd /C inject_version.bat ../src/minecraft_server/net/minecraft/src/forge/ForgeHooks.java
@cd ..
@echo | call recompile.bat
cmd /C recompile.bat
-5
View File
@@ -10,11 +10,6 @@ cp -a forge/forge_client/src/net/* src_forge/minecraft/net/
cp -a forge/forge_common/net/* src_forge/minecraft/net/
cp -a forge/forge_common/net/* src_forge/minecraft_server/net/
cd forge
./inject_version.sh ../src_forge/minecraft/net/minecraft/src/forge/ForgeHooks.java
./inject_version.sh ../src_forge/minecraft_server/net/minecraft/src/forge/ForgeHooks.java
cd ..
cp -a src_forge src
./recompile.sh
+1574 -1632
View File
File diff suppressed because it is too large. Load diff
-3
View File
@@ -213,8 +213,6 @@ net/minecraft/src/Packet8UpdateHealth.func_322_a(Ljava/io/DataOutputStream;)V=ja
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
@@ -228,4 +226,3 @@ net/minecraft/src/ThreadDownloadResources.func_1212_a(Ljava/net/URL;Ljava/io/Fil
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
+5906 -6132
View File
File diff suppressed because it is too large. Load diff
+35 -37
View File
@@ -9,9 +9,6 @@ DirConf = conf
DirRuntime = runtime
DirLib = lib
DirFFOut = temp/ffout
DirBinOut = temp/bin
DirModSrc = modsrc
DirEclipse = eclipse
[CSV]
Classes = %(DirConf)s/classes.csv
@@ -26,8 +23,8 @@ Server = %(DirTemp)s/server_rg.srg
DirNatives = %(DirJars)s/bin/natives
Client = %(DirJars)s/bin/minecraft.jar
Server = %(DirJars)s/minecraft_server.jar
MD5Client = e92302d2acdba7c97e0d8df1e10d2006
MD5Server = b0f4fb91f9723104adf35944bbf3d3cf
MD5Client = 3820d222b95d0b8c520d9596a756a6e6
MD5Server = 934b6010999daa1f1b1ccdf4cb77e052
[RETROGUARD]
Location = %(DirRuntime)s/bin/retroguard.jar
@@ -53,6 +50,8 @@ XClientLog = %(DirLogs)s/client_exc.log
XServerLog = %(DirLogs)s/server_exc.log
[DECOMPILE]
FFClientConf = -rbr=0 -dgs=1 -asc=1
FFServerConf = -rbr=0 -dgs=1 -asc=1
FFClientOut = %(DirFFOut)s/client
FFServerOut = %(DirFFOut)s/server
FFClientSrc = %(DirFFOut)s/minecraft_exc.jar
@@ -60,12 +59,15 @@ FFServerSrc = %(DirFFOut)s/minecraft_server_exc.jar
FFSource = net
[OUTPUT]
BinClient = %(DirBinOut)s/minecraft
BinServer = %(DirBinOut)s/minecraft_server
BinOut = %(DirTemp)s/bin
BinClient = %(DirTemp)s/bin/minecraft
BinServer = %(DirTemp)s/bin/minecraft_server
SrcClient = %(DirSrc)s/minecraft
SrcServer = %(DirSrc)s/minecraft_server
TestClient = net/minecraft/client/Minecraft
TestServer = net/minecraft/server/MinecraftServer
[PACKAGES]
PkgClient = net/minecraft/src,net/minecraft/client
PkgServer = net/minecraft/src,net/minecraft/server
[PATCHES]
PatchClient = %(DirConf)s/patches/minecraft.patch
@@ -73,8 +75,6 @@ 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
@@ -84,6 +84,8 @@ ClassPathServer = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/minecraft_server.jar
ClientFixes = %(DirConf)s/patches
[REOBF]
SAFFXClient = %(DirTemp)s/minecraft.saffx
SAFFXServer = %(DirTemp)s/minecraft_server.saffx
MD5Client = %(DirTemp)s/client.md5
MD5Server = %(DirTemp)s/server.md5
MD5PreReobfClient = %(DirTemp)s/client_reobf.md5
@@ -96,46 +98,42 @@ 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
FixSound = minecraft/me.class
FixStart = minecraft/Start.class
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
OutSRCClient = modsrc/client
OutSRCServer = modsrc/server
OutSRC = modsrc
[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
Patcher = %(DirRuntime)s/bin/applydiff.exe
JadRetro = %(DirRuntime)s/bin/jadretro.jar
Fernflower = %(DirRuntime)s/bin/fernflower.jar
Jadwin = %(DirRuntime)s/bin/jad.exe
Jadlinux = %(DirRuntime)s/bin/jad.exe
Jadosx = %(DirRuntime)s/bin/jad-osx
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}
CmdRG = %s -cp {classpath} RetroGuard -searge {conffile}
CmdRGReobf = %s -cp {classpath} RetroGuard -notch {conffile}
CmdJadretro = %s -jar {jarjr} {targetdir}
CmdRecompClt = %s -g -source 1.6 -target 1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs} {fixes}/*.java
CmdRecompSrv = %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
CmdJadwin = .\{binjad} -b -d {outdir} -dead -o -r -s .java -stat -v -ff {classes}
CmdJadlinux = wine {binjad} -b -d {outdir} -dead -o -r -s .java -stat -v -ff "{classes}"
CmdJadosx = {binjad} -b -d {outdir} -dead -o -r -s .java -stat -v -ff {classes}
CmdPatchwin = .\%(Patcher)s --binary -p1 -u -i ..\..\{patchfile} -d {srcdir}
CmdPatchlinux = patch --binary -p1 -u -i ../../{patchfile} -d {srcdir}
CmdPatchosx = patch --binary -p1 -u -i ../../{patchfile} -d {srcdir}
CmdFernflower = %s -jar {jarff} {conf} {jarin} {jarout}
CmdExceptor = %s -jar {jarexc} {input} {output} {conf} {log}
+4796 -4960
View File
File diff suppressed because it is too large. Load diff
@@ -1,6 +1,6 @@
// this is needed for the sound engine to work with deobfuscated sourcecode without crashing
public class ga
public class me
{
public static int c(double d)
{
File diff suppressed because it is too large. Load diff
+13 -13
View File
@@ -1,7 +1,7 @@
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 @@
--- minecraft\net\minecraft\client\Minecraft.java Tue Nov 22 23:21:44 2011
+++ minecraft_patched\net\minecraft\client\Minecraft.java Wed Nov 23 00:09:14 2011
@@ -1600,11 +1600,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()) {
@@ -16,8 +16,8 @@ diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net
}
}
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
--- minecraft\net\minecraft\src\CodecMus.java Tue Nov 22 23:21:36 2011
+++ minecraft_patched\net\minecraft\src\CodecMus.java Wed Nov 23 00:09:14 2011
@@ -1,5 +1,6 @@
package net.minecraft.src;
@@ -39,8 +39,8 @@ diff -r -U 3 minecraft\net\minecraft\src\CodecMus.java minecraft_patched\net\min
}
}
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
--- minecraft\net\minecraft\src\ItemMap.java Tue Nov 22 23:21:24 2011
+++ minecraft_patched\net\minecraft\src\ItemMap.java Wed Nov 23 00:09:14 2011
@@ -19,7 +19,6 @@
}
@@ -58,8 +58,8 @@ diff -r -U 3 minecraft\net\minecraft\src\ItemMap.java minecraft_patched\net\mine
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
--- minecraft\net\minecraft\src\MusInputStream.java Tue Nov 22 23:21:24 2011
+++ minecraft_patched\net\minecraft\src\MusInputStream.java Wed Nov 23 00:09:14 2011
@@ -1,5 +1,6 @@
package net.minecraft.src;
@@ -82,8 +82,8 @@ diff -r -U 3 minecraft\net\minecraft\src\MusInputStream.java minecraft_patched\n
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
--- minecraft\net\minecraft\src\RenderGlobal.java Tue Nov 22 23:21:20 2011
+++ minecraft_patched\net\minecraft\src\RenderGlobal.java Wed Nov 23 00:10:20 2011
@@ -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;
@@ -94,8 +94,8 @@ diff -r -U 3 minecraft\net\minecraft\src\RenderGlobal.java minecraft_patched\net
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
--- minecraft\net\minecraft\src\ThreadedFileIOBase.java Tue Nov 22 23:21:30 2011
+++ minecraft_patched\net\minecraft\src\ThreadedFileIOBase.java Wed Nov 23 00:09:14 2011
@@ -21,7 +21,9 @@
}
-54
View File
@@ -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
+4 -4
View File
@@ -1,6 +1,6 @@
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
--- minecraft_server\net\minecraft\src\ItemMap.java Tue Nov 22 23:21:56 2011
+++ minecraft_server_patched\net\minecraft\src\ItemMap.java Wed Nov 23 00:09:45 2011
@@ -22,7 +22,6 @@
}
@@ -11,8 +11,8 @@ diff -r -U 3 minecraft_server\net\minecraft\src\ItemMap.java minecraft_server_pa
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
--- minecraft_server\net\minecraft\src\ThreadedFileIOBase.java Tue Nov 22 23:22:10 2011
+++ minecraft_server_patched\net\minecraft\src\ThreadedFileIOBase.java Wed Nov 23 00:09:45 2011
@@ -21,7 +21,9 @@
}
@@ -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;
}
-3
View File
@@ -182,8 +182,6 @@ net/minecraft/src/Packet8UpdateHealth.func_68_a(Ljava/io/DataOutputStream;)V=jav
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
@@ -202,4 +200,3 @@ 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
+3 -3
View File
@@ -1,4 +1,4 @@
[VERSION]
MCPVersion = 5.6
ClientVersion = 1.1
ServerVersion = 1.1
MCPVersion = 5.0
ClientVersion = 1.0.0
ServerVersion = 1.0.1
@@ -106,7 +106,6 @@ public class ForgeHooksClient {
Tessellator.instance=t;
}
static IRenderContextHandler unbindContext=null;
protected static void bindTexture(String name, int sub) {
Integer n;
n=textures.get(name);
@@ -116,20 +115,12 @@ public class ForgeHooksClient {
textures.put(name,n);
}
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 +133,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
@@ -1,123 +0,0 @@
package net.minecraft.src.forge;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.src.GameSettings;
import net.minecraft.src.GuiControls;
import net.minecraft.src.GuiSlot;
import net.minecraft.src.KeyBinding;
import net.minecraft.src.Tessellator;
public class GuiControlsScrollPanel extends GuiSlot
{
private GuiControls controls;
private GameSettings options;
private Minecraft mc;
private String[] message;
private int mouseX;
private int mouseY;
private int selected = -1;
public GuiControlsScrollPanel(GuiControls controls, GameSettings options, Minecraft mc)
{
super(mc, controls.width, controls.height, 16, (controls.height - 32) + 4, 25);
this.controls = controls;
this.options = options;
this.mc = mc;
}
@Override
protected int getSize() {
return options.keyBindings.length;
}
@Override
protected void elementClicked(int i, boolean flag)
{
if (!flag)
{
if (selected == -1)
{
selected = i;
}
else
{
options.setKeyBinding(selected, -100);
selected = -1;
KeyBinding.resetKeyBindingArrayAndHash();
}
}
}
@Override
protected boolean isSelected(int i)
{
return false;
}
@Override
protected void drawBackground() {}
@Override
public void drawScreen(int mX, int mY, float f)
{
mouseX = mX;
mouseY = mY;
if (selected != -1 && !Mouse.isButtonDown(0) && Mouse.getDWheel() == 0)
{
if (Mouse.next() && Mouse.getEventButtonState())
{
System.out.println(Mouse.getEventButton());
options.setKeyBinding(selected, -100 + Mouse.getEventButton());
selected = -1;
KeyBinding.resetKeyBindingArrayAndHash();
}
}
super.drawScreen(mX, mY, f);
}
@Override
protected void drawSlot(int index, int xPosition, int yPosition, int l, Tessellator tessellator)
{
int width = 70;
int height = 20;
xPosition -= 20;
boolean flag = mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height;
int k = (flag ? 2 : 1);
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/gui.png"));
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
controls.drawTexturedModalRect(xPosition, yPosition, 0, 46 + k * 20, width / 2, height);
controls.drawTexturedModalRect(xPosition + width / 2, yPosition, 200 - width / 2, 46 + k * 20, width / 2, height);
controls.drawString(mc.fontRenderer, options.getKeyBindingDescription(index), xPosition + width + 4, yPosition + 6, 0xFFFFFFFF);
boolean conflict = false;
for (int x = 0; x < options.keyBindings.length; x++)
{
if (x != index && options.keyBindings[x].keyCode == options.keyBindings[index].keyCode)
{
conflict = true;
break;
}
}
String str = (conflict ? "\247c" : "") + options.getOptionDisplayString(index);
str = (index == selected ? "\247f> \247e??? \247f<" : str);
controls.drawCenteredString(mc.fontRenderer, str, xPosition + (width / 2), yPosition + (height - 8) / 2, 0xFFFFFFFF);
}
public boolean keyTyped(char c, int i)
{
if (selected != -1)
{
options.setKeyBinding(selected, i);
selected = -1;
KeyBinding.resetKeyBindingArrayAndHash();
return false;
}
return true;
}
}
@@ -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
// ------------------------------------------------------------
@@ -300,13 +267,11 @@ public class ForgeHooks {
}
public static final int majorVersion=0;
public static final int minorVersion=0;
public static final int revisionVersion=0;
public static final int buildVersion=0;
public static final int majorVersion=1;
public static final int minorVersion=2;
public static final int revisionVersion=3;
static {
System.out.printf("MinecraftForge v%d.%d.%d.%d Initialized\n", majorVersion, minorVersion, revisionVersion, buildVersion);
ModLoader.getLogger().info(String.format("MinecraftForge v%d.%d.%d.%d Initialized\n", majorVersion, minorVersion, revisionVersion, buildVersion));
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);
}
@@ -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.
@@ -569,6 +559,7 @@ public class MinecraftForge {
return rarity;
}
/**
* Gets a random item stack to place in a dungeon chest during world generation
@@ -595,165 +586,6 @@ public class MinecraftForge {
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 = null;
for (ItemStack key : minecartForItem.keySet())
{
if (key.isItemEqual(item))
{
k = minecartForItem.get(k);
break;
}
}
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 = null;
for (ItemStack key : minecartForItem.keySet())
{
if (key.isItemEqual(item))
{
k = minecartForItem.get(k);
break;
}
}
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
{
@@ -773,10 +605,6 @@ public class MinecraftForge {
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));
}
}
-20
View File
@@ -1,20 +0,0 @@
@echo off
setlocal enableextensions enabledelayedexpansion
FOR /F "tokens=1-4" %%A IN (version.txt) DO (
set major=%%A
set minor=%%B
set revision=%%C
set build=%%D
)
set file=%*
echo Injecting Revision !major!.!minor!.!revision!.!build! %file%
set PATH=.\bin;%PATH%
sed s/majorVersion=0/majorVersion=!major!/ <!file! | ^
sed s/minorVersion=0/minorVersion=!minor!/ | ^
sed s/revisionVersion=0/revisionVersion=!revision!/ | ^
sed s/buildVersion=0/buildVersion=!build!/ | ^
tr -d '\r' >!file!.tmp
mv "!file!.tmp" "!file!"
-14
View File
@@ -1,14 +0,0 @@
#!/bin/bash
target=$1
read major minor rev build <version.txt
echo Injecting Revision $major.$minor.$rev.$build $target
sed s/majorVersion=0/majorVersion=$major/ <$target | \
sed s/minorVersion=0/minorVersion=$minor/ | \
sed s/revisionVersion=0/revisionVersion=$rev/ | \
sed s/buildVersion=0/buildVersion=$build/ | \
tr -d '\r' > $target.tmp
mv $target.tmp $target
+4 -7
View File
@@ -3,16 +3,14 @@ echo off
echo MinecraftForge Windows Setup Program
echo:
@set PATH=%PATH%;%SystemDir%\system32;%SystemRoot%\System32
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
echo | call cleanup.bat
echo | call decompile.bat
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
@@ -51,7 +49,6 @@ popd >nul
xcopy /Y /E forge\src\* src
rem Removed until MCP's Update Names is fixed
rem cmd /C updatemcp.bat
rem cmd /C updatenames.bat
cmd /C updatemcp.bat
cmd /C updatenames.bat
cmd /C updatemd5.bat
+3 -3
View File
@@ -53,7 +53,7 @@ popd > /dev/null
cp -r forge/src/* src
# Removed until MCP's UpdateNames Is fixed
#./updatemcp.sh
#./updatenames.sh
./updatemcp.sh
./updatenames.sh
./updatemd5.sh
+22 -6
View File
@@ -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
+6 -12
View File
@@ -1,11 +1,10 @@
read major minor revision build <version.txt
version=$major.$minor.$revision.$build
version=$1
build_dir=`pwd`
dir=`pwd`/../forge-$version
function remove_svn () {
(
cd "$1"
cd $1
if [ -d .svn ]; then
rm -rf .svn
@@ -25,7 +24,7 @@ function package_all () {
cp $build_dir/minecraftforge_credits.txt .
zip -r "$dir/minecraftforge$qual-$version.zip" \
zip -r $dir/minecraftforge$qual-$version.zip \
minecraftforge_credits.txt \
*.class \
forge
@@ -35,8 +34,8 @@ cd ../reobf
remove_svn .
rm -rf "$dir"
mkdir "$dir"
rm -rf $dir
mkdir $dir
cd minecraft
package_all "-client"
@@ -72,11 +71,6 @@ cp ../install/README.txt .
cp ../minecraftforge_credits.txt .
cp -r ../doc .
cd ..
sh inject_version.sh forge/src/minecraft/net/minecraft/src/forge/ForgeHooks.java
sh inject_version.sh forge/src/minecraft_server/net/minecraft/src/forge/ForgeHooks.java
cd forge
cd src
remove_svn .
cd ../patches
@@ -87,5 +81,5 @@ cd ..
cd ..
zip -r "$dir/minecraftforge-src-$version.zip" forge
zip -r $dir/minecraftforge-src-$version.zip forge
rm -rf forge
@@ -1,89 +1,137 @@
--- ../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,70 @@
{
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.
+ *
+ * This is deprecated in MC 1.0+ versions because of the new Enchantment
+ * system requiring a new argument. Will be removed unless a valid reason
+ * for it to remain is brought to light.
+ *
+ * Implementing this in your mod will not do anything!
+ */
+ @Deprecated
+ 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.
+ *
+ * This is deprecated in MC 1.0+ versions because of the new Enchantment
+ * system requiring a new argument. Will be removed unless a valid reason
+ * for it to remain is brought to light.
+ *
+ * Implementing this in your mod will not do anything!
+ */
+ @Deprecated
+ public ArrayList<ItemStack> getBlockDropped(World world,
+ int i, int j, int k, int md) {
+ return getBlockDropped (world, i, j, k, md, 0);
}
public final void dropBlockAsItem(World world, int i, int j, int k, int l, int i1)
@@ -437,18 +433,15 @@
@@ -470,18 +518,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 +848,200 @@
return iblockaccess.isBlockNormalCube(i, j, k) ? 0.2F : 1.0F;
}
+ /* FORGE: Allow a block to set illumination on a coordinate basis.
@@ -95,8 +143,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
@@ -273,85 +321,12 @@
+ * @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)
+ protected static void setBurnRate(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,36 +1,36 @@
--- ../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,22 @@
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.isRemote)
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ if (meta == 7)
- if(world.multiplayerWorld)
+ @Override
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int md, int fortune) {
+ ArrayList<ItemStack> tr = new ArrayList<ItemStack>();
+ if (md == 7)
{
- return;
+ ret.add(new ItemStack(Item.wheat));
+ tr.add(new ItemStack(Item.wheat));
}
- int j1 = 3 + i1;
- for (int k1 = 0; k1 < j1; k1++)
+
+ for (int n = 0; n < 3 + fortune; n++)
- 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)
- if(world.rand.nextInt(15) <= l)
+ if (world.rand.nextInt(15) <= md)
{
- float f1 = 0.7F;
- float f2 = world.rand.nextFloat() * f1 + (1.0F - f1) * 0.5F;
@@ -39,10 +39,11 @@
- 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));
+ tr.add(new ItemStack(Item.seeds));
}
}
+ return ret;
-
+ 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,6 +1,15 @@
--- ../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 @@
@@ -14,14 +14,14 @@
public class BlockFire extends Block
{
- private int chanceToEncourageFire[];
- private int abilityToCatchFire[];
-
+ private int chanceToEncourageFire[];
+ private int abilityToCatchFire[];
+
protected BlockFire(int i, int j)
{
super(i, j, Material.fire);
@@ -11,44 +20,47 @@
setTickOnLoad(true);
}
@@ -28,11 +28,10 @@
setBurnRate(Block.cloth.blockID, 30, 60);
@@ -39,12 +39,6 @@
setBurnRate(Block.vine.blockID, 15, 100);
}
-
+
private void setBurnRate(int i, int j, int k)
{
- 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,7 +66,9 @@
{
return null;
@@ -77,11 +71,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;
+ Block base = Block.blocksList[world.getBlockId(i, j - 1, k)];
- 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 ((world.worldProvider instanceof WorldProviderEnd) && world.getBlockId(i, j - 1, k) == Block.bedrock.blockID)
+
if(!canPlaceBlockAt(world, i, j, k))
{
flag = true;
@@ -89,23 +90,23 @@
world.setBlockWithNotify(i, j, k, 0);
@@ -99,23 +91,23 @@
world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
if (!flag && !canNeighborBurn(world, i, j, k))
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)
- if(!world.isBlockNormalCube(i, j - 1, k) || l > 3)
+ if(!world.isBlockSolidOnSide(i, j - 1, k, 0) || 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)
- if(!flag && !canBlockCatchFire(world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0)
+ if(!flag && !canBlockCatchFire(world, i, j - 1, k, 0) && l == 15 && random.nextInt(4) == 0)
{
world.setBlockWithNotify(i, j, k, 0);
return;
@@ -61,65 +73,56 @@
- 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 - 1, k, 250, random, l, 0);
+ tryToCatchBlockOnFire(world, i, j + 1, k, 250, random, l, 1);
+ 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 i1 = i - 1; i1 <= i + 1; i1++)
{
for (int j1 = k - 1; j1 <= k + 1; j1++)
@@ -142,9 +143,24 @@
}
for(int j1 = k - 1; j1 <= k + 1; j1++)
@@ -155,9 +147,14 @@
}
+ /**
+ * Deprecated for a side-sensitive version
+ */
+ @Deprecated
private void tryToCatchBlockOnFire(World world, int i, int j, int k, int l, Random random, int i1)
- private void tryToCatchBlockOnFire(World world, int i, int j, int k, int l, Random random, int i1)
+ private void tryToCatchBlockOnFire(World world, int i, int j, int k, int l, Random random, int i1, int face)
{
- 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)
+ Block block = Block.blocksList[world.getBlockId(i, j, k)];
+ int j1 = 0;
+ 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 +186,27 @@
@@ -182,27 +179,27 @@
private boolean canNeighborBurn(World world, int i, int j, int k)
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))
- 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))
- 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))
- if(canBlockCatchFire(world, i, j - 1, k))
+ if(canBlockCatchFire(world, i, j - 1, k, 0))
{
return true;
}
- if (canBlockCatchFire(world, i, j + 1, k))
+ if (canBlockCatchFire(world, i, j + 1, k, 0))
- if(canBlockCatchFire(world, i, j + 1, k))
+ if(canBlockCatchFire(world, i, j + 1, k, 1))
{
return true;
}
- if (canBlockCatchFire(world, i, j, k - 1))
+ if (canBlockCatchFire(world, i, j, k - 1, 3))
- if(canBlockCatchFire(world, i, j, k - 1))
+ if(canBlockCatchFire(world, i, j, k - 1, 3))
{
return true;
}
@@ -128,9 +131,9 @@
}
private int getChanceOfNeighborsEncouragingFire(World world, int i, int j, int k)
@@ -202,12 +218,12 @@
}
else
@@ -213,12 +210,12 @@
return 0;
} else
{
- l = getChanceToEncourageFire(world, i + 1, j, k, l);
- l = getChanceToEncourageFire(world, i - 1, j, k, l);
@@ -138,133 +141,28 @@
- 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 + 1, j, k, l, 5);
+ l = getChanceToEncourageFire(world, i - 1, j, k, l, 4);
+ l = getChanceToEncourageFire(world, i, j - 1, k, l, 0);
+ l = getChanceToEncourageFire(world, i, j + 1, k, l, 1);
+ l = getChanceToEncourageFire(world, i, j, k - 1, l, 3);
+ l = getChanceToEncourageFire(world, i, j, k + 1, l, 2);
return l;
}
}
@@ -217,32 +233,32 @@
@@ -228,14 +225,25 @@
return false;
}
+ /**
+ * Deprecated for a side-sensitive version
+ */
+ @Deprecated
public boolean canBlockCatchFire(IBlockAccess iblockaccess, int i, int j, int k)
{
- 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)
- public int getChanceToEncourageFire(World world, int i, int j, int k, int l)
+ public boolean canBlockCatchFire(IBlockAccess world, int i, int j, int k, int face)
{
- 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) || canNeighborBurn(world, i, j, k);
+ return world.isBlockSolidOnSide(i, j - 1, k, 1) || canNeighborBurn(world, i, j, k);
}
public void onNeighborBlockChange(World world, int i, int j, int k, int l)
{
- if (!world.isBlockNormalCube(i, j - 1, k) && !canNeighborBurn(world, i, j, k))
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && !canNeighborBurn(world, i, j, k))
{
world.setBlockWithNotify(i, j, k, 0);
return;
@@ -259,7 +275,7 @@
{
return;
}
- if (!world.isBlockNormalCube(i, j - 1, k) && !canNeighborBurn(world, i, j, k))
+ if (!world.isBlockSolidOnSide(i, j - 1, k, 1) && !canNeighborBurn(world, i, j, k))
{
world.setBlockWithNotify(i, j, k, 0);
return;
@@ -277,7 +293,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, 1))
{
for (int l = 0; l < 3; l++)
{
@@ -289,7 +305,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 +315,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 +325,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 +335,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 +345,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 +357,39 @@
}
}
}
+
+ /**
+ * 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)
+ {
@@ -273,9 +171,6 @@
+ return false;
+ }
+
+ /**
+ * Forge: Side sensitive version
+ */
+ public int getChanceToEncourageFire(World world, int i, int j, int k, int l, int face)
+ {
+ int i1 = 0;
@@ -284,14 +179,84 @@
+ {
+ i1 = block.getFireSpreadSpeed(world, i, j, k, world.getBlockMetadata(i, j, k), face);
+ }
+
+ if (i1 > l)
+ {
+ return i1;
+ }
+ else
+ {
+ return l;
+ }
+ }
}
if(i1 > l)
{
return i1;
@@ -247,12 +255,12 @@
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, 0) || 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, 0) && !func_263_h(world, i, j, k))
{
world.setBlockWithNotify(i, j, k, 0);
return;
@@ -268,7 +276,7 @@
{
return;
}
- if(!world.isBlockNormalCube(i, j - 1, k) && !func_263_h(world, i, j, k))
+ if(!world.isBlockSolidOnSide(i, j - 1, k, 0) && !func_263_h(world, i, j, k))
{
world.setBlockWithNotify(i, j, k, 0);
return;
@@ -285,7 +293,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, 0) || Block.fire.canBlockCatchFire(world, i, j - 1, k, 0))
{
for(int l = 0; l < 3; l++)
{
@@ -297,7 +305,7 @@
} else
{
- if(Block.fire.canBlockCatchFire(world, i - 1, j, k))
+ if(Block.fire.canBlockCatchFire(world, i - 1, j, k, 4))
{
for(int i1 = 0; i1 < 2; i1++)
{
@@ -308,7 +316,7 @@
}
}
- if(Block.fire.canBlockCatchFire(world, i + 1, j, k))
+ if(Block.fire.canBlockCatchFire(world, i + 1, j, k, 5))
{
for(int j1 = 0; j1 < 2; j1++)
{
@@ -319,7 +327,7 @@
}
}
- 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++)
{
@@ -330,7 +338,7 @@
}
}
- 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++)
{
@@ -341,7 +349,7 @@
}
}
- if(Block.fire.canBlockCatchFire(world, i, j + 1, k))
+ if(Block.fire.canBlockCatchFire(world, i, j + 1, k, 1))
{
for(int i2 = 0; i2 < 2; i2++)
{
@@ -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,43 +1,56 @@
--- ../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 @@
@@ -4,6 +4,7 @@
package net.minecraft.src;
+import java.util.ArrayList;
import java.util.Random;
public class BlockNetherStalk extends BlockFlower
@@ -57,25 +58,24 @@
// Referenced classes of package net.minecraft.src:
@@ -65,26 +66,26 @@
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)
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int md, int fortune)
{
- if (world.isRemote)
- 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)
{
- int j1 = 1;
- if(l >= 3)
- {
- j1 = 2 + world.rand.nextInt(3);
- if(i1 > 0)
- {
- j1 += world.rand.nextInt(i1 + 1);
+ j1 += world.rand.nextInt(fortune + 1);
}
}
for (int k1 = 0; k1 < j1; k1++)
{
- }
- }
- 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;
- }
-
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+
+ int count = 1;
+ if (md >= 3)
+ {
+ count = 2 + world.rand.nextInt(3);
+ if (fortune > 0)
+ {
+ count += world.rand.nextInt(fortune + 1);
+ }
+ }
+ for (int n = 0; n < count; n++)
+ {
+ 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,14 +1,6 @@
--- ../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
@@ -63,7 +63,6 @@
{
if (!canPlaceBlockAt(world, i, j, k))
{
- dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
world.setBlockWithNotify(i, j, k, 0);
return false;
}
@@ -75,15 +74,7 @@
@@ -82,15 +82,8 @@
public void harvestBlock(World world, EntityPlayer entityplayer, int i, int j, int k, int l)
{
@@ -21,11 +13,12 @@
- entityitem.delayBeforeCanPickup = 10;
- world.spawnEntityInWorld(entityitem);
- world.setBlockWithNotify(i, j, k, 0);
+ dropBlockAsItem(world, i, j, k, l, 0);
+
+ dropBlockAsItem(world,i,j,k,l,0);
entityplayer.addStat(StatList.mineBlockStatArray[blockID], 1);
}
@@ -94,14 +85,13 @@
@@ -101,7 +94,7 @@
public int quantityDropped(Random random)
{
@@ -34,10 +27,3 @@
}
public void updateTick(World world, int i, int j, int k, Random random)
{
if (world.getSavedLightValue(EnumSkyBlock.Block, i, j, k) > 11)
{
- dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
world.setBlockWithNotify(i, j, k, 0);
}
}
@@ -1,53 +1,45 @@
--- ../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,24 @@
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.isRemote && entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().itemID == Item.shears.shiftedIndex)
+
+ @Override
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int md, int fortune)
+ {
+ 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)
{
- if (world.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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.isBlockNormalCubeDefault(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,53 +1,51 @@
--- ../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 (!isValidSupportBlock(world.getBlockId(j1, j, k1)))
+ if (!(isValidSupportBlock(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--;
}
- return isValidSupportBlock(world.getBlockId(i, j, k));
+ return isValidSupportBlock(world.getBlockId(i, j, k)) || world.isBlockSolidOnSide(i, j, k, l);
- return func_41052_f(world.getBlockId(i, j, k));
+ return func_41052_f(world.getBlockId(i, j, k)) || world.isBlockSolidOnSide(i, j, k, l);
}
public static boolean isTrapdoorOpen(int i)
@@ -215,6 +222,11 @@
@@ -226,6 +230,10 @@
private static boolean isValidSupportBlock(int i)
private static boolean func_41052_f(int i)
{
+ if (disableValidation)
+ if (disableValidation)
+ {
+ return true;
+ }
+
if (i <= 0)
if(i <= 0)
{
return false;
@@ -1,200 +1,169 @@
--- ../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,15 +399,7 @@
tileentity.updateContainingBlockInfo();
}
}
}
- 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();
- }
- }
+ }
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.isRemote)
+ if (!worldObj.multiplayerWorld)
+ {
+ Block.blocksList[k1].onBlockRemoval(worldObj, l1, j, i2);
+ }
+ 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)
{
if(tileentity != null)
@@ -466,14 +463,6 @@
tileentity.updateContainingBlockInfo();
+ tileentity.blockMetadata = meta;
}
}
}
- 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();
- }
- }
}
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.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,29 @@
}
- TileEntity tileentity;
- for (Iterator iterator = chunkTileEntityMap.values().iterator(); iterator.hasNext(); tileentity.updateContainingBlockInfo())
- for(Iterator iterator = chunkTileEntityMap.values().iterator(); iterator.hasNext(); tileentity.updateContainingBlockInfo())
- {
- tileentity = (TileEntity)iterator.next();
+ List<TileEntity> invalidList=new ArrayList();
+ iterator = chunkTileEntityMap.values().iterator();
+ while(iterator.hasNext())
{
- tileentity = (TileEntity)iterator.next();
+ {
+ 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 +173,12 @@
+
+ invalidList.add(te);
+ }
+ }
+
}
+ 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,28 +1,33 @@
--- ../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
@@ -65,17 +65,20 @@
@@ -74,20 +74,23 @@
}
itemList.add(new ItemStack(ablock[l1], 1, k2));
}
- for (int i2 = 256; i2 < Item.itemsList.length; i2++)
+ for(int x = 0; x < Block.blocksList.length; x++)
{
- if (Item.itemsList[i2] != null && Item.itemsList[i2].shiftedIndex != Item.potion.shiftedIndex && Item.itemsList[i2].shiftedIndex != Item.monsterPlacer.shiftedIndex)
+
+ for(int x = 0; x < 256; x++)
+ {
+ if (Block.blocksList[x] != null)
+ {
+ Block.blocksList[x].addCreativeItems((ArrayList)itemList);
+ }
+ }
for(int i2 = 256; i2 < Item.itemsList.length; i2++)
{
- if(Item.itemsList[i2] != null && Item.itemsList[i2].shiftedIndex != Item.potion.shiftedIndex)
+ if(Item.itemsList[i2] != null)
{
- itemList.add(new ItemStack(Item.itemsList[i2]));
+ Block.blocksList[x].addCreativeItems((ArrayList)itemList);
+ Item.itemsList[i2].addCreativeItems((ArrayList)itemList);
}
}
- for (int j2 = 1; j2 < 16; j2++)
+ for (int i2 = Block.blocksList.length; i2 < Item.itemsList.length; i2++)
{
- for(int j2 = 1; j2 < 16; j2++)
- {
- itemList.add(new ItemStack(Item.dyePowder.shiftedIndex, 1, j2));
+ if (Item.itemsList[i2] != null)
+ {
+ Item.itemsList[i2].addCreativeItems((ArrayList)itemList);
+ }
}
Integer integer;
- }
-
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 ignoreFrustrumCheck;
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,939 +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,35 @@
}
}
};
- private int turnProgress;
- 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 turnProgress;
+ 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 +119,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 +148,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,
@@ -161,49 +207,8 @@
riddenByEntity.mountEntity(this);
}
setEntityDead();
- dropItemWithOffset(Item.minecartEmpty.shiftedIndex, 1, 0.0F);
- if (minecartType == 1)
- {
- EntityMinecart entityminecart = this;
- label0:
- for (int j = 0; j < entityminecart.getSizeInventory(); j++)
- {
- ItemStack itemstack = entityminecart.getStackInSlot(j);
- if (itemstack == null)
- {
- continue;
- }
- float f = rand.nextFloat() * 0.8F + 0.1F;
- float f1 = rand.nextFloat() * 0.8F + 0.1F;
- float f2 = rand.nextFloat() * 0.8F + 0.1F;
- do
- {
- if (itemstack.stackSize <= 0)
- {
- continue label0;
- }
- int k = rand.nextInt(21) + 10;
- if (k > itemstack.stackSize)
- {
- k = itemstack.stackSize;
- }
- itemstack.stackSize -= k;
- EntityItem entityitem = new EntityItem(worldObj, posX + (double)f, posY + (double)f1, posZ + (double)f2, new ItemStack(itemstack.itemID, k, itemstack.getItemDamage()));
- float f3 = 0.05F;
- entityitem.motionX = (float)rand.nextGaussian() * f3;
- entityitem.motionY = (float)rand.nextGaussian() * f3 + 0.2F;
- entityitem.motionZ = (float)rand.nextGaussian() * f3;
- worldObj.spawnEntityInWorld(entityitem);
- }
- while (true);
- }
-
- dropItemWithOffset(Block.chest.blockID, 1, 0.0F);
- }
- else if (minecartType == 2)
- {
- dropItemWithOffset(Block.stoneOvenIdle.blockID, 1, 0.0F);
- }
+
+ dropCartAsItem();
}
return true;
}
@@ -268,7 +273,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 +314,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 +359,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 +402,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 +413,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 +436,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 +478,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 +500,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 +533,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 +549,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 +591,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 +647,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 +674,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 +703,12 @@
public void applyEntityCollision(Entity entity)
{
+ ForgeHooks.onMinecartEntityCollision(this, entity);
+ if (getCollisionHandler() != null)
+ {
+ getCollisionHandler().onEntityCollision(this, entity);
+ return;
+ }
if (worldObj.isRemote)
{
return;
@@ -803,7 +717,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 +755,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 +763,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 +793,7 @@
public int getSizeInventory()
{
- return 27;
+ return (minecartType == 1 && getClass() == EntityMinecart.class ? 27 : 0);
}
public ItemStack getStackInSlot(int i)
@@ -935,7 +849,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 +864,14 @@
entityplayer.mountEntity(this);
}
}
- else if (minecartType == 1)
+ else if (getSizeInventory() > 0)
{
if (!worldObj.isRemote)
{
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 +918,7 @@
return entityplayer.getDistanceSqToEntity(this) <= 64D;
}
- protected boolean isMinecartPowered()
+ public boolean isMinecartPowered()
{
return (dataWatcher.getWatchableObjectByte(16) & 1) != 0;
}
@@ -1054,4 +972,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,25 +1,17 @@
--- ../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.*;
// Referenced classes of package net.minecraft.src:
@@ -502,7 +506,16 @@
public void dropCurrentItem()
{
@@ -37,17 +29,16 @@
}
public void dropPlayerItem(ItemStack itemstack)
@@ -537,6 +551,9 @@
@@ -548,6 +561,8 @@
worldObj.spawnEntityInWorld(entityitem);
}
+ /* FORGE: This isnt called anymore
+ */
+ @Deprecated
public float getCurrentPlayerStrVsBlock(Block block)
{
float f = inventory.getStrVsBlock(block);
@@ -565,6 +582,45 @@
@@ -576,6 +591,45 @@
return f1;
}
@@ -93,52 +84,50 @@
public boolean canHarvestBlock(Block block)
{
return inventory.canHarvestBlock(block);
@@ -768,7 +824,25 @@
{
i = 1 + i >> 1;
}
- i = applyArmorCalculations(damagesource, i);
+
+ boolean doRegularComputation = true;
@@ -774,6 +828,25 @@
protected void damageEntity(DamageSource damagesource, int i)
{
+ boolean doRegularComputation = true;
+ int initialDamage = i;
+
+ for (ItemStack stack : inventory.armorInventory)
+ {
+ if (stack != null && stack.getItem() instanceof ISpecialArmor)
+ {
+ ISpecialArmor armor = (ISpecialArmor)stack.getItem();
+ 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)
+ {
+ i = applyArmorCalculations(damagesource, i);
+ if (!doRegularComputation) {
+ super.damageEntity(damagesource, i);
+ return;
+ }
i = applyPotionDamageCalculations(damagesource, i);
addExhaustion(damagesource.getHungerDamage());
health -= i;
@@ -815,7 +889,9 @@
+
if(!damagesource.isUnblockable() && func_35162_ad())
{
i = 1 + i >> 1;
@@ -825,7 +898,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 +1023,11 @@
@@ -957,6 +1032,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.isRemote)
+ 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,45 @@
--- ../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 @@
@@ -988,6 +993,8 @@
setupFog(1, f);
GL11.glPopMatrix();
}
+ Profiler.endStartSection("fhooks");
+ ForgeHooksClient.onRenderWorldLast(renderglobal,f);
+ Profiler.endStartSection("fhooks");
+ ForgeHooksClient.onRenderWorldLast(renderglobal,f);
Profiler.endStartSection("hand");
if (cameraZoom == 1.0D)
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,122 +0,0 @@
--- ../src_base/minecraft/net/minecraft/src/GuiControls.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/GuiControls.java 0000-00-00 00:00:00.000000000 -0000
@@ -2,6 +2,7 @@
import java.util.List;
import net.minecraft.client.Minecraft;
+import net.minecraft.src.forge.GuiControlsScrollPanel;
public class GuiControls extends GuiScreen
{
@@ -9,6 +10,7 @@
protected String screenTitle;
private GameSettings options;
private int buttonId;
+ private GuiControlsScrollPanel scrollPane;
public GuiControls(GuiScreen guiscreen, GameSettings gamesettings)
{
@@ -25,60 +27,30 @@
public void initGui()
{
+ scrollPane = new GuiControlsScrollPanel(this, options, mc);
StringTranslate stringtranslate = StringTranslate.getInstance();
int i = func_20080_j();
- for (int j = 0; j < options.keyBindings.length; j++)
- {
- controlList.add(new GuiSmallButton(j, i + (j % 2) * 160, height / 6 + 24 * (j >> 1), 70, 20, options.getOptionDisplayString(j)));
- }
-
- controlList.add(new GuiButton(200, width / 2 - 100, height / 6 + 168, stringtranslate.translateKey("gui.done")));
+ controlList.add(new GuiButton(200, width / 2 - 100, height - 28, stringtranslate.translateKey("gui.done")));
+ scrollPane.registerScrollButtons(controlList, 7, 8);
screenTitle = stringtranslate.translateKey("controls.title");
}
protected void actionPerformed(GuiButton guibutton)
{
- for (int i = 0; i < options.keyBindings.length; i++)
- {
- ((GuiButton)controlList.get(i)).displayString = options.getOptionDisplayString(i);
- }
-
if (guibutton.id == 200)
{
mc.displayGuiScreen(parentScreen);
}
- else
- {
- buttonId = guibutton.id;
- guibutton.displayString = (new StringBuilder()).append("> ").append(options.getOptionDisplayString(guibutton.id)).append(" <").toString();
- }
}
protected void mouseClicked(int i, int j, int k)
{
- if (buttonId >= 0)
- {
- options.setKeyBinding(buttonId, -100 + k);
- ((GuiButton)controlList.get(buttonId)).displayString = options.getOptionDisplayString(buttonId);
- buttonId = -1;
- KeyBinding.resetKeyBindingArrayAndHash();
- }
- else
- {
- super.mouseClicked(i, j, k);
- }
+ super.mouseClicked(i, j, k);
}
protected void keyTyped(char c, int i)
{
- if (buttonId >= 0)
- {
- options.setKeyBinding(buttonId, i);
- ((GuiButton)controlList.get(buttonId)).displayString = options.getOptionDisplayString(buttonId);
- buttonId = -1;
- KeyBinding.resetKeyBindingArrayAndHash();
- }
- else
+ if (scrollPane.keyTyped(c, i))
{
super.keyTyped(c, i);
}
@@ -87,35 +59,8 @@
public void drawScreen(int i, int j, float f)
{
drawDefaultBackground();
- drawCenteredString(fontRenderer, screenTitle, width / 2, 20, 0xffffff);
- int k = func_20080_j();
- for (int l = 0; l < options.keyBindings.length; l++)
- {
- boolean flag = false;
- for (int i1 = 0; i1 < options.keyBindings.length; i1++)
- {
- if (i1 != l && options.keyBindings[l].keyCode == options.keyBindings[i1].keyCode)
- {
- flag = true;
- }
- }
-
- int j1 = l;
- if (buttonId == l)
- {
- ((GuiButton)controlList.get(j1)).displayString = "\247f> \247e??? \247f<";
- }
- else if (flag)
- {
- ((GuiButton)controlList.get(j1)).displayString = (new StringBuilder()).append("\247c").append(options.getOptionDisplayString(j1)).toString();
- }
- else
- {
- ((GuiButton)controlList.get(j1)).displayString = options.getOptionDisplayString(j1);
- }
- drawString(fontRenderer, options.getKeyBindingDescription(l), k + (l % 2) * 160 + 70 + 6, height / 6 + 24 * (l >> 1) + 7, -1);
- }
-
+ scrollPane.drawScreen(i, j, f);
+ drawCenteredString(fontRenderer, screenTitle, width / 2, 4, 0xffffff);
super.drawScreen(i, j, f);
}
}
@@ -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,40 +8,87 @@
import java.util.List;
import java.util.Random;
@@ -157,6 +158,9 @@
private String potionEffect;
@@ -177,6 +178,9 @@
private String potionModifier;
private String itemName;
+ // FORGE: To disable repair recipes.
+ protected boolean canRepair = true;
+ protected boolean canRepair=true;
+
protected Item(int i)
{
maxStackSize = 64;
@@ -449,7 +453,7 @@
float f7 = f4 * f5;
float f8 = f6;
float f9 = f3 * f5;
- double d3 = 5D;
+ double d3 = ModLoader.getMinecraftInstance().playerController.getBlockReachDistance();
Vec3D vec3d1 = vec3d.addVector((double)f7 * d3, (double)f8 * d3, (double)f9 * d3);
MovingObjectPosition movingobjectposition = world.rayTraceBlocks_do_do(vec3d, vec3d1, flag, !flag);
return movingobjectposition;
@@ -469,6 +473,109 @@
@@ -221,6 +225,14 @@
return getIconFromDamage(itemstack.getItemDamage());
}
+ /* FORGE: This is called when the item is used, before the block is
+ * activated. Return true to prevent any further processing.
+ */
+ public boolean onItemUseFirst(ItemStack ist, EntityPlayer player,
+ World world, int i, int j, int k, int l) {
+ return false;
+ }
+
public boolean onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, int i, int j, int k, int l)
{
return getIconFromDamage(i);
return false;
@@ -231,6 +243,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 itemstack;
@@ -278,6 +297,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 +515,32 @@
{
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.monsterPlacer.shiftedIndex)
+ if (this.shiftedIndex != Item.potion.shiftedIndex)
+ {
+ itemList.add(new ItemStack(this, 1));
+ }
@@ -59,81 +106,7 @@
+ 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,64 @@
--- ../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,23 @@
public boolean onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, int i, int j, int k, int l)
{
- if(!entityplayer.canPlayerEdit(i, j, k))
+ if(entityplayer != null && !entityplayer.canPlayerEdit(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.isRemote)
+ if (!world.multiplayerWorld)
+ {
+ itemstack.stackSize--;
+ }
+ return true;
+ }
+
if (i1 == Block.sapling.blockID)
if(i1 == Block.sapling.blockID)
{
if (!world.isRemote)
@@ -109,14 +122,7 @@
if(!world.multiplayerWorld)
@@ -118,13 +130,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 +153,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 +66,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,36 +10,32 @@
+
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)
+ {
+
+ if (customRenderer != null) {
+ String tex = ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem());
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
+ 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));
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
} else
{
- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png"));
+ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]);
@@ -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)
@@ -0,0 +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
@@ -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);
+ }
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,11 +0,0 @@
--- ../src_base/minecraft/net/minecraft/src/Packet250CustomPayload.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/Packet250CustomPayload.java 0000-00-00 00:00:00.000000000 -0000
@@ -20,7 +20,7 @@
if (length > 0 && length < 32767)
{
data = new byte[length];
- datainputstream.read(data);
+ datainputstream.readFully(data);
}
}
@@ -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 +1,15 @@
--- ../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 @@
@@ -58,6 +58,12 @@
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;
+ }
+ if (itemstack != null) {
+ Item it=itemstack.getItem();
+ if (it.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))
{
@@ -1,14 +1,15 @@
--- ../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,8 @@
package net.minecraft.src;
import net.minecraft.client.Minecraft;
+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 +70,19 @@
public boolean onPlayerDestroyBlock(int i, int j, int k, int l)
{
@@ -18,7 +19,7 @@
+ return false;
+ }
+
if (creativeMode)
if(creativeMode)
{
return super.onPlayerDestroyBlock(i, j, k, l);
}
@@ -26,58 +27,51 @@
boolean flag = super.onPlayerDestroyBlock(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 +111,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 @@
} else
@@ -149,7 +157,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)
if(stepSoundTickCounter % 4F == 0.0F && block != null)
{
mc.sndManager.playSound(block.stepSound.getStepSound(), (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 @@
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);
@@ -216,6 +224,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) {
+ Item it=itemstack.getItem();
+ if (it.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 +250,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,14 +1,14 @@
--- ../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,7 @@
// Decompiler options: packimports(3) braces deadcode fieldsfirst
import net.minecraft.client.Minecraft;
package net.minecraft.src;
+import net.minecraft.src.forge.ForgeHooks;
public class PlayerControllerSP extends PlayerController
{
@@ -36,11 +37,16 @@
import net.minecraft.client.Minecraft;
@@ -46,11 +47,17 @@
public boolean onPlayerDestroyBlock(int i, int j, int k, int l)
{
@@ -23,58 +23,52 @@
boolean flag = super.onPlayerDestroyBlock(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)
if(itemstack != null)
{
itemstack.onDestroyBlock(i1, i, j, k, mc.thePlayer);
@@ -69,7 +75,7 @@
@@ -79,7 +86,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);
}
@@ -100,7 +106,7 @@
@@ -110,7 +117,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)
if(blockDestroySoundCounter % 4F == 0.0F && block != null)
{
mc.sndManager.playSound(block.stepSound.getStepSound(), (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 @@
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);
@@ -173,6 +180,12 @@
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;
+ }
+ if (itemstack != null) {
+ Item it=itemstack.getItem();
+ if (it.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 +196,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,128 @@
--- ../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 @@
@@ -1332,7 +1332,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))
- 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, 0))
{
float f1 = 0.2F;
float f2 = 0.0625F;
@@ -1340,7 +1340,7 @@
@@ -1349,7 +1349,7 @@
d1 = d;
d = d4;
}
- if (Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k))
+ if (Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k, 5))
- if(Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k))
+ if(Block.fire.canBlockCatchFire(blockAccess, i - 1, j, k, 4))
{
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 @@
@@ -1360,7 +1360,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))
- if(Block.fire.canBlockCatchFire(blockAccess, i + 1, j, k))
+ if(Block.fire.canBlockCatchFire(blockAccess, i + 1, j, k, 5))
{
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 @@
@@ -1371,7 +1371,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))
- 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 @@
@@ -1382,7 +1382,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))
- 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 @@
@@ -1393,7 +1393,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))
- if(Block.fire.canBlockCatchFire(blockAccess, i, j + 1, k))
+ if(Block.fire.canBlockCatchFire(blockAccess, i, j + 1, k, 1))
{
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,26 +1,25 @@
--- ../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,34 @@
}
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()));
+ float f4 = 0.25F;
@@ -36,66 +35,64 @@
+ 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]));
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)
@@ -107,10 +135,10 @@
int i = itemstack.getIconIndex();
if(itemstack.itemID < 256)
{
- loadTexture("/terrain.png");
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
}
else
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
} else
{
- loadTexture("/gui/items.png");
+ loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]));
+ loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]));
}
if (field_27004_a)
if(field_27004_a)
{
@@ -149,10 +177,39 @@
@@ -162,10 +190,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;
+ 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);
+ 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"));
@@ -104,20 +101,18 @@
Block block = Block.blocksList[j1];
GL11.glPushMatrix();
GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel);
@@ -200,11 +257,13 @@
@@ -214,10 +269,12 @@
GL11.glDisable(2896 /*GL_LIGHTING*/);
if (i < 256)
if(i < 256)
{
- renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
- }
+ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]);
+ renderengine.bindTexture(renderengine.getTexture(tex));
+ }
else
} else
{
- renderengine.bindTexture(renderengine.getTexture("/gui/items.png"));
+ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[i]);
+ renderengine.bindTexture(renderengine.getTexture(tex));
}
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 +1,35 @@
--- ../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 @@
@@ -4,6 +4,8 @@
package net.minecraft.src;
+import net.minecraft.src.forge.ISidedInventory;
+
// Referenced classes of package net.minecraft.src:
// TileEntity, IInventory, ItemStack, World,
@@ -11,7 +13,7 @@
// NBTTagList, EntityPlayer
public class TileEntityBrewingStand extends TileEntity
- implements IInventory
+ implements IInventory, ISidedInventory
{
private ItemStack brewingItemStacks[];
private int brewTime;
@@ -273,4 +275,16 @@
@@ -280,4 +282,14 @@
return i;
}
+
+ @Override
+ public int getStartInventorySide(int side)
+ {
+ public int getStartInventorySide(int side) {
+ return (side == 1 ? 3 : 0);
+ }
+
+ @Override
+ public int getSizeInventorySide(int side)
+ {
+ 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].isItemEqual(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 markTileEntityForDespawn(TileEntity tileentity)
@@ -2109,7 +2104,7 @@
}
else
{
public void markEntityForDespawn(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.getTerrainType() != 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 +1,34 @@
--- ../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 @@
@@ -7,6 +7,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 @@
// Referenced classes of package net.minecraft.src:
// WorldGenerator, World, Material, Block,
// TileEntityChest, TileEntityMobSpawner, ItemStack, Item
@@ -129,11 +131,11 @@
int k4 = 0;
do
{
- if (k4 >= 8)
+ if (k4 >= MinecraftForge.getDungeonLootTries())
- if(k4 >= 8)
+ if(k4 >= MinecraftForge.getDungeonLootTries())
{
break label0;
}
- ItemStack itemstack = pickCheckLootItem(random);
+ ItemStack itemstack = MinecraftForge.getRandomDungeonLoot(random);
if (itemstack != null)
if(itemstack != null)
{
tileentitychest.setInventorySlotContents(random.nextInt(tileentitychest.getSizeInventory()), itemstack);
@@ -137,7 +139,7 @@
@@ -148,7 +150,7 @@
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getBlockTileEntity(i, j, k);
if (tileentitymobspawner != null)
if(tileentitymobspawner != null)
{
- tileentitymobspawner.setMobID(pickMobSpawner(random));
+ tileentitymobspawner.setMobID(MinecraftForge.getRandomDungeonMob(random));
}
else
+ tileentitymobspawner.setMobID(MinecraftForge.getRandomDungeonMob(random));
} else
{
System.err.println((new StringBuilder()).append("Failed to fetch mob spawner entity at (").append(i).append(", ").append(j).append(", ").append(k).append(")").toString());
@@ -1,23 +1,23 @@
--- ../src_base/minecraft/net/minecraft/src/WorldRenderer.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/WorldRenderer.java 0000-00-00 00:00:00.000000000 -0000
@@ -1,13 +1,15 @@
@@ -4,6 +4,8 @@
package net.minecraft.src;
import java.util.*;
+
+import net.minecraft.src.forge.ForgeHooksClient;
+
import java.util.*;
import org.lwjgl.opengl.GL11;
public class WorldRenderer
{
@@ -18,7 +20,6 @@
public World worldObj;
private int glRenderList;
- private static Tessellator tessellator;
public static int chunksUpdated = 0;
public int posX;
public int posY;
@@ -150,10 +152,11 @@
@@ -160,8 +161,9 @@
GL11.glTranslatef((float)(-sizeDepth) / 2.0F, (float)(-sizeHeight) / 2.0F, (float)(-sizeDepth) / 2.0F);
GL11.glScalef(f, f, f);
GL11.glTranslatef((float)sizeDepth / 2.0F, (float)sizeHeight / 2.0F, (float)sizeDepth / 2.0F);
@@ -27,53 +27,50 @@
+ Tessellator.instance.startDrawingQuads();
+ Tessellator.instance.setTranslationD(-posX, -posY, -posZ);
}
- if (i2 == 0 && Block.isBlockContainer[i3])
+ if (i2 == 0 && Block.blocksList[i3] != null && Block.blocksList[i3].hasTileEntity(chunkcache.getBlockMetadata(l2, j2, k2)))
if(i2 == 0 && Block.isBlockContainer[i3])
{
TileEntity tileentity = chunkcache.getBlockTileEntity(l2, j2, k2);
if (TileEntityRenderer.instance.hasSpecialRenderer(tileentity))
@@ -167,25 +170,29 @@
@@ -177,15 +179,13 @@
{
flag1 = true;
}
- if (j3 != i2)
+ if (j3 > i2)
{
flag = true;
- if(j3 != i2)
- {
- flag = true;
- continue;
}
- if (j3 == i2)
+ if(!ForgeHooksClient.canRenderInPass(block, i2))
{
- }
- if(j3 == i2)
- {
- flag1 |= renderblocks.renderBlockByRenderType(block, l2, j2, k2);
- }
+ if (j3 > i2) flag = true;
+ if(!ForgeHooksClient.canRenderInPass(block,i2))
+ continue;
}
+
+ ForgeHooksClient.beforeBlockRender(block, renderblocks);
+ flag1 |= renderblocks.renderBlockByRenderType(block, l2, j2, k2);
+ ForgeHooksClient.afterBlockRender(block, renderblocks);
+
+ ForgeHooksClient.beforeBlockRender(block, renderblocks);
+ flag1 |= renderblocks.renderBlockByRenderType(block, l2, j2, k2);
+ ForgeHooksClient.afterBlockRender(block, renderblocks);
}
}
}
if (flag2)
}
@@ -194,10 +194,11 @@
if(flag2)
{
- bytesDrawn += tessellator.draw();
+ ForgeHooksClient.afterRenderPass(i2);
+ ForgeHooksClient.afterRenderPass(i2);
+ bytesDrawn += Tessellator.instance.draw();
GL11.glPopMatrix();
GL11.glEndList();
- tessellator.setTranslationD(0.0D, 0.0D, 0.0D);
+ Tessellator.instance.setTranslationD(0.0D, 0.0D, 0.0D);
}
else
} else
{
@@ -279,9 +286,4 @@
{
flag1 = false;
@@ -288,8 +289,4 @@
needsUpdate = true;
}
-
- static
- static
- {
- tessellator = Tessellator.instance;
- }
@@ -1,126 +1,163 @@
--- ../src_base/minecraft_server/net/minecraft/src/Block.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/net/minecraft/src/Block.java 0000-00-00 00:00:00.000000000 -0000
@@ -3,6 +3,8 @@
@@ -3,6 +3,7 @@
// 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 Block
{
public static final StepSound soundPowderFootstep;
@@ -344,6 +346,12 @@
{
@@ -384,26 +385,71 @@
return 1;
}
+ /**
+ * Deprecated in favor of a metadata sensitive version
+ * @param entityplayer Entity attacking the block
+ * @return
+ /* FORGE: Metadata-sensitive version.
+ */
+ public int quantityDropped(int meta, int fortune, Random random)
+ {
+ return func_40162_a(fortune, random);
+ }
+
+ /* FORGE: Metadata-sensitive version.
+ *
+ * This is deprecated in MC 1.0+ versions because of the new Enchantment
+ * system requiring a new argument. Will be removed unless a valid reason
+ * for it to remain is brought to light.
+ *
+ * Implementing this in your mod will not do anything!
+ */
+ @Deprecated
public int quantityDropped(Random random)
+ public int quantityDropped(int meta, Random random)
+ {
+ return quantityDropped(meta, 0, random);
+ }
+
public int idDropped(int i, Random random, int j)
{
return 1;
@@ -356,18 +364,7 @@
return blockID;
}
-
+
+ /* FORGE: This function isnt called by Minecraft anymore. Use
+ * blockStrength(EntityPlayer,int) instead.
+ */
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);
}
-
+
+ /* 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.
+ *
+ * This is deprecated in MC 1.0+ versions because of the new Enchantment
+ * system requiring a new argument. Will be removed unless a valid reason
+ * for it to remain is brought to light.
+ *
+ * Implementing this in your mod will not do anything!
+ */
+ @Deprecated
+ public ArrayList<ItemStack> getBlockDropped(World world,
+ int i, int j, int k, int md) {
+ return getBlockDropped (world, i, j, k, md, 0);
+ }
+
public final void dropBlockAsItem(World world, int i, int j, int k, int l, int i1)
@@ -381,18 +378,14 @@
{
dropBlockAsItemWithChance(world, i, j, k, l, 1.0F, i1);
@@ -415,18 +461,14 @@
{
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)
- int j1 = func_40162_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)
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);
}
}
@@ -620,7 +613,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)
@@ -699,6 +692,278 @@
{
}
@@ -725,6 +767,197 @@
return blockMaterial.getMaterialMobility();
}
+ /* FORGE: Allow a block to set illumination on a coordinate basis.
+ */
+ public int getLightValue(IBlockAccess iba, int i, int j, int k)
+ {
+ public int getLightValue(IBlockAccess iba, int i, int j, int k) {
+ return lightValue[blockID];
+ }
+
+ /* 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
+ * determines indirect power state, entity ejection from blocks, and a few
+ * others.
+ */
+ public boolean isBlockNormalCube(World world, int i, int j, int k)
+ {
+ public boolean isBlockNormalCube(World world, int i, int j, int k) {
+ return blockMaterial.getIsOpaque() && renderAsNormalBlock();
+ }
+
+ /* FORGE: Return true if the block is solid on the given side. This
+ * is used by placement logic. */
+ public boolean isBlockSolidOnSide(World world, int i, int j, int k, int side)
+ {
+ return isBlockNormalCube(world, i, j, k);
+ public boolean isBlockSolidOnSide( World world, int i, int j, int k,
+ int side ) {
+ return isBlockNormalCube(world,i,j,k);
+ }
+
+ /* FORGE: Return true if the player can place a new block in the block
+ * occupied by this one, like water, lava, fire, etc.
+ */
+ public boolean isBlockReplaceable(World world, int i, int j, int k)
+ {
+ public boolean isBlockReplaceable( World world, int i, int j, int k ) {
+ return false;
+ }
+
+ /* FORGE: Return true if this block should set fire and deal fire damage
+ * to entities coming into contact with it, false otherwise.
+ */
+ public boolean isBlockBurning(World world, int i, int j, int k)
+ {
+ public boolean isBlockBurning( World world, int i, int j, int k ) {
+ return false;
+ }
+
@@ -129,32 +166,30 @@
+ * useful for creating pure logic-blocks that will be invisible
+ * to the player and otherwise interact as air would.
+ */
+ public boolean isAirBlock(World world, int i, int j, int k)
+ {
+ public boolean isAirBlock( World world, int i, int j, int k ) {
+ return false;
+ }
+
+ /* FORGE: Return the block hardness with metadata md.
+ */
+ public float getHardness(int md)
+ {
+ public float getHardness(int md) {
+ return blockHardness;
+ }
+
+ /* FORGE: Return the block strength of the block at i,j,k against the
+ * player.
+ */
+ public float blockStrength(World world, EntityPlayer player, int i, int j, int k)
+ {
+ return blockStrength(player, world.getBlockMetadata(i, j, k));
+ public float blockStrength(World world, EntityPlayer player,
+ int i, int j, int k) {
+ int md=world.getBlockMetadata(i,j,k);
+ return blockStrength(player,md);
+ }
+
+ /* FORGE: Return the block strength of a prototypical block with metadata
+ * md against the player.
+ */
+ public float blockStrength(EntityPlayer player, int md)
+ {
+ return ForgeHooks.blockStrength(this, player, md);
+ public float blockStrength(EntityPlayer player, int md) {
+ return ForgeHooks.blockStrength(this,player,md);
+ }
+
+ /* FORGE: Return true if the player can harvest a prototypical block with
@@ -172,8 +207,8 @@
+ * Note: When used in multiplayer, this is called on both client and
+ * server sides!
+ */
+ public boolean removeBlockByPlayer(World world, EntityPlayer player, int i, int j, int k)
+ {
+ public boolean removeBlockByPlayer(World world, EntityPlayer player,
+ int i, int j, int k) {
+ return world.setBlockWithNotify(i, j, k, 0);
+ }
+
@@ -232,7 +267,7 @@
+ * @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)
+ public int chanceToEncourageFire(World world, int x, int y, int z, int metadata, int face)
+ {
+ return blockFireSpreadSpeed[blockID];
+ }
@@ -269,85 +304,11 @@
+ * @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)
+ protected static void setBurnRate(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_server/net/minecraft/src/BlockButton.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/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_server/net/minecraft/src/BlockChest.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/net/minecraft/src/BlockChest.java 0000-00-00 00:00:00.000000000 -0000
@@ -334,23 +334,23 @@
@@ -339,23 +339,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_server/net/minecraft/src/BlockContainer.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/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,7 +9,7 @@
}
public void onBlockRemoval(World world, int i, int j, int k)
@@ -27,7 +27,7 @@
@@ -36,7 +36,7 @@
}
public abstract TileEntity getBlockEntity();
@@ -18,7 +18,7 @@
public void powerBlock(World world, int i, int j, int k, int l, int i1)
{
super.powerBlock(world, i, j, k, l, i1);
@@ -37,4 +37,14 @@
@@ -46,4 +46,14 @@
tileentity.onTileEntityPowered(l, i1);
}
}
@@ -1,36 +1,38 @@
--- ../src_base/minecraft_server/net/minecraft/src/BlockCrops.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/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,23 @@
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)
+ public ArrayList<ItemStack> getBlockDropped(World world, int i, int j, int k, int md, int fortune)
{
- super.dropBlockAsItemWithChance(world, i, j, k, l, f, 0);
- if (world.isRemote)
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ if (meta == 7)
- if(world.singleplayerWorld)
+ ArrayList<ItemStack> tr = new ArrayList<ItemStack>();
+ if (md == 7)
+ {
+ tr.add(new ItemStack(Item.wheat));
+ }
+
+ for(int n = 0; n < 3+fortune; n++)
{
- return;
+ ret.add(new ItemStack(Item.wheat));
}
- }
- 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)
+ if (world.rand.nextInt(15) <= md)
{
- float f1 = 0.7F;
- float f2 = world.rand.nextFloat() * f1 + (1.0F - f1) * 0.5F;
@@ -39,10 +41,11 @@
- 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));
+ tr.add(new ItemStack(Item.seeds));
}
}
+ return ret;
-
+ return tr;
}
public int idDropped(int i, Random random, int j)
@@ -1,29 +1,29 @@
--- ../src_base/minecraft_server/net/minecraft/src/BlockDoor.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/net/minecraft/src/BlockDoor.java 0000-00-00 00:00:00.000000000 -0000
@@ -95,7 +95,7 @@
@@ -105,7 +105,7 @@
{
if (blockMaterial == Material.iron)
if(blockMaterial == Material.iron)
{
- return true;
+ return false;
}
int l = world.getBlockMetadata(i, j, k);
if ((l & 8) != 0)
@@ -163,7 +163,7 @@
if((l & 8) != 0)
@@ -172,7 +172,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;
@@ -232,7 +232,7 @@
}
else
@@ -235,7 +235,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);
}
}
Loaded 100 of 150 files, more files were not shown because too many files have changed in this diff. Show more