Compare commits

..
354 Commits
Author SHA1 Message Date
mezz 4e1e8f52e0 Fix log4j configuration 2017-06-07 20:49:14 -07:00
diesieben07 f10f7502c8 Make ASMDataTable more useful: (#2911)
- EnumHolder now has getters for it's data
- enum arrays work now
- nested annotations work now outside of being in arrays
2016-06-22 22:40:27 -04:00
RainWarrior ce481da1d1 Initial support for model visibility system. Implemented it for OBJ, B3D and normal vanilla models; fixed NPE accessing parent state in B3DModel. Fixes #2801. 2016-05-30 01:20:43 +03:00
RainWarrior 4008983a5d Reordered transformations during LayerHeldItem rendering, fixes #2827. 2016-05-29 23:36:07 +03:00
LexManos e65218b525 Fixed new ICrashReportDetail loader working with packaged mods by delaying it until the ModContainer's construct event. Closes #2924 2016-05-29 02:37:37 -07:00
LexManos d3e758fce6 Fixed issue with @ObjectHolder and the new registry system. Closes #2640
Only run static initalizers for classes we need to get the names from values.
2016-05-29 00:06:43 -07:00
LexManos 0bb4d9fb89 Fixed village wells not having their biomes set. Closes #2499 2016-05-28 23:46:00 -07:00
LexManos 3bdbe04261 Fixed TileEntityBeacon not using position-aware getLightOpacity. Closes #2530 and #2910 2016-05-28 23:19:27 -07:00
LexManos 39ac710722 Fixed potential issue with Chunk.getLightOpacity being called before the chunk is added to the world map. Closes #2529 2016-05-28 23:16:12 -07:00
LexManos aef721a248 Fixed FluidUtil.tryEmptyFluidContainerItem not checking if the tank can accept fluids first. Closes #2527 2016-05-28 23:06:42 -07:00
LexManos b5f8da794c Make sure tool-classes for vanilla tools are initialized early. Closes #2909 and #2525 2016-05-28 22:58:39 -07:00
LexManos 906b83dee4 Fix tooltip for survival tab in the creative menu not drawing on any but the first page. Closes #2908 and #2504 2016-05-28 22:56:33 -07:00
LexManos 5d2b8438c9 Fix Thorns enchantment bypassing ISpecialArmor.damageArmor function. Closes #2463 2016-05-28 22:49:54 -07:00
LexManos 2f5f9968e4 Reinitalize statistics information on Mapping changes.
Fixes mismatched stats to item/block ids. And auto registers stats for modded items.
Closes #2454
2016-05-28 22:31:48 -07:00
LexManos 772e7da3a3 Fixed NBTTagString.toString not properly escaping \'s. Closes #2393 2016-05-28 22:30:09 -07:00
LexManos 93be22fc8e Add ServerHangWatchdog to TerminalTransformer whitelist. Closes #2203 2016-05-28 21:19:47 -07:00
LexManos 978861b521 Fix setTileEntity causing the world to remove the new and old tile entities. Closes #2164 2016-05-28 21:03:24 -07:00
LexManos b8996b14bc Fixed EntityRegistry.addSpawn adding duplicate spawn entries. Closes #2112 2016-05-28 20:53:19 -07:00
LexManos 0406267d89 Fix javadocs for BiomeColor events. Closes #2093 2016-05-28 20:15:32 -07:00
LexManos debe0ffdf8 Fire LivingSpawnEvents for MobSpawners. Closes #2079 2016-05-28 20:13:03 -07:00
LexManos 357d2f8d86 Fire PopulateChunkEvent Pre and Post in ChunkProviderFlat. Closes #2050 2016-05-28 19:56:35 -07:00
LexManos c0840da355 Move getArmorModel hook up two lines so that the attributes and animation information is set. Closes #1939 2016-05-28 19:21:57 -07:00
LexManos a5ffda5d66 Close player's inventory to prevent potential dupe issues on some modded items. Closes #1431 2016-05-28 18:20:05 -07:00
LexManos 35978b0d96 More uniformly apply Configuration.caseSensitiveCustomCategories. Closes #1353 2016-05-28 18:04:29 -07:00
LexManos 4824d647f4 Set Enchantment table's harvest level. Closes #1349 2016-05-28 17:55:27 -07:00
LexManos a1a67e7654 Capture interfaces when scanning classes and preload implementations of ICrashReportDetail. 2016-05-28 17:50:42 -07:00
LexManos a97b4c4db7 Fix installer downloading vanilla jar when not needed. And filter some more known libraries. 2016-05-28 17:47:12 -07:00
cpw 4c56961b9e Strip Optional from the class signature as well, since that's loaded by the TypeToken registry code and might cause a crash. 2016-05-28 18:05:24 -04:00
tterrag e00a11be99 Add hook for TE data sync on client (#2893) 2016-05-25 22:19:29 -07:00
The-Fireplace 48cc7582cc Switch new constructor to use floats (#2904) 2016-05-24 19:58:22 -07:00
LexManos df7c7d6dfc Make unit test for EnumHelper more robust and less spammy. Now detects missing accessors as well. 2016-05-24 16:11:12 -07:00
LexManos b65b2991a4 Fix paramters for addArmorMaterial, addOption and addGameType. 2016-05-24 16:10:47 -07:00
LexManos d2989c83a7 Add Unit Test to detect mismatches between EnumHelper and Enum ctor 2016-05-24 16:08:40 -07:00
LexManos 614ba8fa73 Add alternative ItemAxe Constructor 2016-05-24 14:44:35 -07:00
LexManos 1fbadb0ead Fix villagers having farmer skin on vanilla servers. Closes #2894 2016-05-23 17:15:13 -07:00
LexManos 6b8466778e Fire playerDestroyItem event's in some cases where we were not. 2016-05-23 16:35:49 -07:00
LexManos 5415891f11 Fix Container.compouteStackSize not respecting stack version of maxStackSize. Closes #2756 2016-05-23 16:15:00 -07:00
LexManos 8c02a0a4cc Set max enchantment ID to Short.MAX_VALUE. Closes #2799 2016-05-23 16:10:44 -07:00
LexManos 2356f088ee Tipped arrows are now not affected by infinite enchantment but are still effected by creative mode. 2016-05-23 15:53:52 -07:00
LexManos 9df1e4b11e Take capabilities into account when comparing ItemStack NBT's. Closes #2726 2016-05-23 15:30:20 -07:00
tterrag 95bacd7a52 Fix screenshot link paths on Windows (#2886) 2016-05-22 11:11:09 +04:00
cpw f4750ae2bf Tweak build file slightly - allow passing buildNumber using gradle parameters (-PbuildNumber=...) and provide a "resetBuildNumber" function to reset the buildNumber to zero in the ForgeVersion file. Means builds can be reproducible in-IDE. 2016-05-21 09:18:51 -04:00
Steven Blom a4e2d0e304 Add Unit Test to detect mismatches between EnumHelper and Enum ctor 2016-05-20 13:25:04 +09:30
LexManos 7f6f2f0ec1 Update example mod for new mappings. 2016-05-18 18:06:41 -07:00
LexManos 5bd06388c1 Bump version information for 1.9.4. 2016-05-18 17:22:39 -07:00
cpw 68ad1e03cf Fix schizophrenia in version numbers. 2016-05-18 13:10:41 -04:00
LexManos cdc86e9af6 Update mappoings snapshot to 20160518 2016-05-18 05:23:30 -07:00
LexManos b9ac73b0f1 1.9.4 Update.
Major things to note:
Class renames: https://gist.github.com/LexManos/44dd211f90f498ad4015279b103dff86
Tile Entities are now packed in the ChunkData packet.
Forge intends to work around this to better support large moded worlds, but for the time being modders should implement the new function carefully and only send what data they need to!
Minecraft's codebase now has annotations, these are directly from Mojang and should be adheared to!
Added support for package-info.java's containing @Nullable information for all MC code base.
2016-05-18 03:29:10 -07:00
boni 5d5c005aae Fix Bucket rendering and add sound (#2865)
* Adjust generated quads from texture to take texture size into account #2858

*  Fix universal bucket not passing through when rightclicking on a non-block
Add proper sound events when picking up modded fluids #2821

* Have FluidUtil execute properly on both sides and sync as expected. Add default sounds to interacting with tanks

* Save sound for filling/emptying in the fluid
2016-05-16 13:20:31 -07:00
LexManos 87b0f7db99 Lets just simply this. Fixes last commit. 2016-05-14 21:40:31 -07:00
LexManos d5b93bf262 Add modder facing API for Villager Career level trades. Ref: #2854 2016-05-14 20:11:55 -07:00
RainWarrior 5445f96327 Extended Animation State Machine format to allow multiple transitions from one state. 2016-05-13 12:46:34 +03:00
cpw 2e6f4e5b86 Fix up release jsons to clean up extraneous netty references 2016-05-11 11:15:45 -04:00
LexManos 75468e9b0d Make LootPool constructor public again. Closes #2847 2016-05-11 01:25:48 -07:00
LexManos 34d4b0b93f Fix type in LootEntry json name. And rename LootTable.finalize to freeze to avoid overriding Object function. Closes #2846 and #2847 2016-05-10 23:35:02 -07:00
RainWarrior 92800f61d3 Fixed joint animation application correctly. 2016-05-10 10:46:04 +03:00
Shadowfacts 58d26618f6 Add ScreenshotEvent (#2828)
Add ScreenshotEvent
2016-05-09 14:51:30 -07:00
LexManos aaa146c10d New LootTable interaction system and event.
Modders can now modify and reference internal elements of a loot table by name.
Editing can ONLY be done in the event and any external editing will cause a exception to be thrown.
See this gist for more information: https://gist.github.com/LexManos/77c983d67b9ad27010428478b66d50fd
2016-05-09 14:15:59 -07:00
RainWarrior babd54bb87 Fixed joint hierarchy not being used fully in the animation system. 2016-05-09 20:40:53 +03:00
LexManos d30aae862f Fixed issue in ChunkIO that would potentially cause NPEs on chunks. Closes #2837 2016-05-09 02:10:24 -07:00
LexManos a7d5820e99 Fixed map extension recipie. 2016-05-08 16:38:07 -07:00
mezz 363e84b2c5 Fix the rand given to PopulateChunkEvent (#2834) 2016-05-07 11:17:18 -07:00
LexManos 6e46b6e4c1 Fix areas where dimension types are used as dimension IDs. 2016-05-05 12:50:12 -07:00
LexManos 0d13fe245d Add NPE protection to in-hand item rendering. 2016-05-04 22:29:17 -07:00
Matthew Messinger 5f74a75435 Fix url regex (#2815)
Fixed url detection in chat messages. Stops false positives such as `um.....no`
2016-05-04 10:46:33 -07:00
LexManos aa672ea69a Bump version for new RB. 2016-05-03 23:19:51 -07:00
LexManos 42404c531d Slightly better practice because wait can be randomly interupted. 2016-05-03 23:19:40 -07:00
cpw 4248dbc71d Merge in a fix from 1.8.9 for rails 2016-05-03 23:39:32 -04:00
cpw f5781488d9 Merge branch '1.9' 2016-05-03 23:24:43 -04:00
LexManos 3177d55579 Remove usage of AsynchronousExecutor library in favor or a simpler implementation. 2016-05-03 19:54:04 -07:00
LexManos d8249b7886 Add a java version detection and nag system for users on Java 7 or below.
Added detection of mods that rely on Java 8 and a graceful error screen.
The nag screen will be shown once a day. It can be disabled by editing the forge.cfg.
However it is HIGHLY recomended that user update to Java 8.
2016-05-03 18:26:52 -07:00
LexManos 4d27393c91 Fix withers breaking bedrock. Closes #2813 2016-05-03 16:13:17 -07:00
RainWarrior e98cd386e0 Fixed villager profession not being set correctly on the client, and fixed custom village texture rendering. Closes #2766. 2016-05-03 11:39:14 +03:00
RainWarrior 4538062e70 Fixed cooldown overlay sometimes rendering opaque. Closes #2772. 2016-05-03 11:03:30 +03:00
RainWarrior f3fdf4303a Make ChunkRenderDispatcher.countRenderBuilders configurable. Closes #2775. 2016-05-03 10:28:06 +03:00
RainWarrior 330812dfa8 Fixed custom fluid sufraces not rendering from the bottom. Closes #2800. 2016-05-03 09:53:55 +03:00
AlexIIL 980845b61b Fix TextureMap failing when registering a sprite's resource location twice (#2785) 2016-05-03 10:07:49 +04:00
bloodmc 5a20950902 Call markDirty when restoring blocks with TileEntities. (#2809)
This change makes sure the updated tileentity is saved properly within the
chunk.
2016-05-02 15:21:59 -07:00
Vincent Lee 9f28c90365 Add Potion.renderHUDEffect (#2798) 2016-05-02 14:44:14 -07:00
bloodmc d9bdaef468 Only run block physics for TileEntities while capturing block placement. (#2803)
Currently, all blocks placed by players that are not TE's run physics
twice. Blocks that contain a TileEntity are not affected due to a check in
'ForgeHooks.onPlaceItemIntoWorld'.

In order to fix the problem, 'Chunk.setBlockState' will now verify if
blocks are being captured before running onBlockAdded and if so, only run
physics if the block has a tileentity. This check also prevents blocks such
as TNT's from running its physics (explosion) when event is cancelled.
2016-05-02 14:21:37 -07:00
LexManos 26b5059396 Fix sluggish scrolling on GuiScrollList's and fix small rendering issue with scroll bar on certian screen sizes. 2016-05-02 14:13:33 -07:00
boni 8fdd76bae1 Fix SidedInvWrapper accessing wrong slots for setStackInSlot. (#2797)
Fix DoubleChestItemHandler not implementing IItemHandlerModifiable
2016-05-02 12:19:54 -07:00
mezz 9c9107c434 Close #2780 add CMD localization for Mac key bindings (#2792) 2016-04-29 12:04:48 -07:00
cpw 84bfeddc1c Update LICENSE-new.txt
Better words
2016-04-28 15:24:34 -04:00
cpw d9e0a653e0 Update LICENSE-new.txt
Words
2016-04-28 15:23:03 -04:00
cpw c519812ea1 Update LICENSE-new.txt
Clarification on infectivity
2016-04-28 15:22:24 -04:00
cpw e8098133ea Add the new license text. Not yet applicable to forge. 2016-04-28 15:15:50 -04:00
LexManos d090c2834b Fix NPE on shield break. Closes #2786 2016-04-27 18:37:54 -07:00
Vincent Lee 35999f9a20 Boss bar render event (#2701)
Allow control over increment height
2016-04-14 22:34:45 -07:00
iTitus fa21f2b44c Fix forge:default-block transformation. (#2760)
The first-person left-hand rotation was a little bit of.
2016-04-13 22:53:25 +04:00
LexManos 205f5c13c8 Expose a central place to access all of Vanilla and Forge's registries using the new registry API. 2016-04-09 22:33:39 -07:00
mezz c560af69a5 Fix log spam from invalid key modifiers (#2746) 2016-04-09 17:02:03 -07:00
Kina 68cd48287b make WorldSavedData implement NBTSerializable (#2745) 2016-04-09 16:09:06 -07:00
Matthew Prenger 2a3774def3 Don't use import static with net.minecraft classes. Using the latest MCP snapshots this causes an import conflict. (#2742) 2016-04-09 16:03:46 -07:00
mezz a018e14939 Add cancelable event for Potions shifting the gui position (#2667)
Add cancelable event for Potions shifting the gui position
2016-04-08 20:18:17 -07:00
Matti Ruohonen 03584ec411 Fix ForgeChunkManager world unloading check (#2736) 2016-04-07 15:39:55 -07:00
LexManos 2a4067a539 Fix being kicked from server when climbing ladders. 2016-04-07 13:12:10 -07:00
LexManos 8fefac110e Fix potential desync between Forge's Villager profession and vanilla's int based system. 2016-04-07 12:29:00 -07:00
LexManos fbe628d058 Merge pull request #2729 from kashike/feature/bossinfo
Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods
2016-04-06 16:19:18 -07:00
kashike 72edc41a7c Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods
These methods can also be used by the server (see BossInfoServer, it sends packets to the client but the methods are @SideOnly(Side.CLIENT))
2016-04-06 15:57:54 -07:00
RainWarrior db04370830 Made forge fluids use smooth lighting. 2016-04-06 16:13:51 +03:00
LexManos 7973984227 Fixed NPE in dedicated server languages. And fixed logger for main FML event bus. 2016-04-06 02:11:27 -07:00
LexManos 07a2b67b7f Cleanup OBJLoader parse function and fix issues related to JVM differences.
Also fix support for sopme of the spec that was partially respected.
2016-04-06 01:45:43 -07:00
LexManos fb0bdd1276 Enhance some error logging related to OBJLoader issues, and RegistryEntries. 2016-04-06 01:44:08 -07:00
Fry a48fd56fdc Merge pull request #2723 from mezz/pick-fix
Fix some plain keybinds not working when a modifier is active
2016-04-06 10:11:07 +04:00
mezz e68908e9d5 Fix some plain keybinds not working when a modifier is active 2016-04-05 23:01:26 -07:00
LexManos 045e8bf806 Merge pull request #2719 from mezz/pick-fix
Fix #2717 Pick block hotkey not working in inventories
2016-04-05 18:30:39 -07:00
mezz 7587ca7c71 Fix #2717 Pick block hotkey not working in inventories 2016-04-05 18:25:25 -07:00
LexManos b9d18a263c Merge pull request #2718 from nekosune/patch-1
Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9
2016-04-05 17:49:48 -07:00
Katrina Swales 8d50c9e988 Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9 2016-04-06 01:43:23 +01:00
RainWarrior cb7685a3b0 Fixed forge fluid having a collision box. 2016-04-05 18:55:42 +03:00
RainWarrior bf16d0066b Fixed zip being closed too early in the server language loading. 2016-04-05 18:53:19 +03:00
Fry 628613d27f Merge pull request #2709 from iTitus/bucketModel
Fix dynbucket item transformation.
2016-04-05 13:44:44 +04:00
iTitus 63a6a2e50b Fix dynbucket item transformation. 2016-04-05 10:49:51 +02:00
RainWarrior ab2b07f149 Fixed some test mods not being marked as client-only. 2016-04-05 11:46:05 +03:00
RainWarrior d44c9082fa Fixed mod languages not being loaded on the server. 2016-04-05 10:41:42 +03:00
LexManos 25d7b80119 Merge pull request #2708 from Zaggy1024/1.9
Fix PlaySoundEvent replacing a sound with PositionedSound causing an NPE.
2016-04-04 20:55:12 -07:00
Zaggy1024 68023ce40b Fixed using PlaySoundEvent to replace a sound with a PositionedSound causing an NPE due to the Sound field not being set by a call to ISound.createAccessor(SoundHandler). 2016-04-04 22:18:34 -05:00
LexManos 8180bed027 Merge pull request #2707 from mezz/keyBinding19-4
Add modifier support to vanilla keybindings.
2016-04-04 18:06:29 -07:00
LexManos 034efaff3d Merge pull request #2604 from williewillus/pie
New PlayerInteractEvent for 1.9
2016-04-04 18:06:11 -07:00
Vincent Lee e8ea52558b Player Interact Event 2016-04-04 19:58:46 -05:00
mezz 8f49ea7c5f Add modifier support to vanilla keybindings.
Add Orange conflict color for modifier/key conflicts
(like Ctrl and Ctrl-Z conflicting)
Related to #2692
2016-04-04 16:52:16 -07:00
LexManos 8fd0817c81 Merge pull request #2704 from AEnterprise/1.9
onBlockHarvested is no longer called twice
2016-04-04 15:49:49 -07:00
LexManos ce4bb8fe93 Fix improper logic in ItemHandlerHelper.giveItemToPlayer causing some items to not be added. Closes #2705 2016-04-04 15:44:03 -07:00
LexManos 9f1505dd53 Fixed EntityJoinWorldEvent not being fired for some entitites on Server Worlds. Closes #2685 2016-04-04 15:33:45 -07:00
LexManos 6342bfea3e Fix issue caused by setting spawnRadius to 0. Closes #2624 2016-04-04 15:22:17 -07:00
RainWarrior 2ae47c0903 Made both exceptions occuring during item model loading print in the log; closes #2696. 2016-04-04 18:07:06 +03:00
RainWarrior 879b7b5a61 Added the ability to change the printed model error count; Added printing of actual exceptions causing missing variants related to blockstate loading, closes #2689. 2016-04-04 16:02:21 +03:00
AEnterprise dbe9053d50 onBlockHarvested is no longer called twice 2016-04-04 11:37:40 +02:00
LexManos 1e3df55689 Merge pull request #2702 from McJty/1.9
Added DimensionManager.createProviderFor() to WorldClient constructor…
2016-04-03 22:49:11 -07:00
McJty 9c3def9cb0 Added DimensionManager.createProviderFor() to WorldClient constructor similar to what is done
in WorldServer to make sure the correct provider is created client-side too.
2016-04-04 06:26:46 +02:00
LexManos 1811d88266 Merge pull request #2616 from iTitus/updateNotificationIcon
Add update notification icon made by @gigaherz, closes #2582
2016-04-03 18:22:27 -07:00
Fry 132e0d8f93 Merge pull request #2697 from mezz/keyBinding19-3
Fix inability to attack while holding modifier keys
2016-04-04 00:19:52 +04:00
mezz bc2b5ad517 Fix inability to attack while holding modifier keys 2016-04-03 13:15:18 -07:00
Fry df1adb577c Merge pull request #2695 from mezz/keyBinding19-2
Re-Add key binding modifiers and contexts.
2016-04-03 12:50:08 +04:00
mezz 21d39f6558 Re-Add key binding modifiers and contexts. 2016-04-03 01:46:29 -07:00
RainWarrior 9baabf9249 Revert "Add key binding modifiers and contexts.", until it's fixed.
This reverts commit 34c3af7e85.
2016-04-03 11:01:09 +03:00
RainWarrior 77772ac3f5 Changed generic signature of GameRegistry.register methods to work around the type inference bug; updated all example mods to the new block/item registration method. 2016-04-03 10:14:16 +03:00
LexManos fc57d5e6c6 Merge pull request #2693 from Adubbz/1.9
Fixed mismatched registry names and mod ids
2016-04-02 23:04:15 -07:00
LexManos d13449b1b3 Merge pull request #2692 from mezz/keyBinding19
[1.9] Add key binding modifiers and contexts.
2016-04-02 23:02:59 -07:00
LexManos 087a7d8c59 Properly deprecate and link the replacement methods in GameRegistry. Add helper method for registering a block with default ItemBlock because people keep complaining -.- 2016-04-02 22:16:22 -07:00
Adubbz 8374a80283 Fixed mismatch registry names and mod ids 2016-04-03 15:13:25 +10:00
mezz 34c3af7e85 Add key binding modifiers and contexts.
Same as #2674, but for Minecraft 1.9
2016-04-02 21:25:44 -07:00
LexManos 8058c675ab Fixed compile error in registry code with Eclipse. 2016-04-02 12:01:40 -07:00
cpw 404995122a Capture a vanilla freeze - will be used when FML connects to vanilla servers, soon 2016-04-02 14:16:17 -04:00
cpw efcb9ee570 Support ResLocations for IMC 2016-04-02 12:19:36 -04:00
RainWarrior 4c8da35655 Improved UV offset hackery - should fix most visible custom model seams. 2016-04-02 18:49:18 +03:00
cpw c74216bdf2 MinecraftForge-2684 [1.9] New Registry ignores keys 2016-04-02 11:38:03 -04:00
cpw c44ed8fbde MinecraftForge-2683 InvocationTargetException for Forge 1820 for 1.9 2016-04-02 07:50:02 -04:00
cpw e72c224294 Add registries for soundevents, enchantments and potiontypes
MinecraftForge-2576 [1.9] SoundEvents (and Enchantments and PotionTypes) need a FML registry
2016-04-02 00:00:38 -04:00
cpw acf8220414 Reconcile Block.patch 2016-04-01 21:28:28 -04:00
cpw 6e04a6c572 Squashed commit of the following:
commit b3b290aec9d3010a134859da6001ea28a96c2fdc
Merge: c6ce6a0 d803f7d
Author: cpw <[email protected]>
Date:   Fri Mar 25 13:28:04 2016 -0400

    Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework

    Implement proper registry slaves. Should help with rollback related issues.

    Missing patch

commit d803f7db76
Author: LexManos <[email protected]>
Date:   Tue Mar 22 03:36:14 2016 -0700

    Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking.

commit eb5e5b4b42
Author: LexManos <[email protected]>
Date:   Tue Mar 22 02:14:16 2016 -0700

    More cleanup.

commit edbc56b2ff
Author: LexManos <[email protected]>
Date:   Tue Mar 22 02:05:23 2016 -0700

    More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now}

commit e2df8d1be3
Author: LexManos <[email protected]>
Date:   Tue Mar 22 01:29:19 2016 -0700

    Stupid generics....

commit 46d57dc467
Author: LexManos <[email protected]>
Date:   Tue Mar 22 01:00:25 2016 -0700

    Some registry tweaking to provde a non-complicated API modders can use.
2016-04-01 20:56:06 -04:00
Hea3veN b427b26583 Fix remapped blocks being overriden with dummy air blocks. Closes #2491 2016-04-01 20:55:19 -04:00
Fry 7668472c26 Merge pull request #2679 from tterrag1098/render_in_layer_state
Add state param to Block.canRenderInLayer
2016-04-01 11:13:28 +04:00
tterrag1098 5862aaf3a0 Add state param to canRenderInLayer 2016-04-01 03:12:01 -04:00
LexManos 74a0709356 Merge pull request #2678 from shadowfacts/BlockAddInfo-19
Forward ItemBlock#addInformation to Block#addInformation
2016-03-31 19:04:58 -07:00
Shadowfacts b7327e6a35 Forward ItemBlock#addInformation to Block#addInformation 2016-03-31 21:12:17 -04:00
LexManos 42e4d1fa77 Merge pull request #2659 from kashike/feature/immutable-blockpos
Replace Forge's getImmutable method with the vanilla method
2016-03-30 16:20:43 -07:00
LexManos 82f964c00d Merge pull request #2664 from gigaherz/capability-storage
Make access to the Capability IStorage less annoying
2016-03-30 16:00:47 -07:00
LexManos 7a8475df6e Fix landing particles not showing up. Cloes #2661 2016-03-30 15:59:14 -07:00
LexManos 38c57d9038 Make NoteBlockEvent raw constructor protected to allow subclasses. Closes #2153 2016-03-30 15:26:48 -07:00
LexManos 9b9e48b3db Fix bows not animating properly when picking up ammo while using. Closes #2672 2016-03-30 15:21:00 -07:00
LexManos c662810814 Fix shrubs not generating correctly. Closes #2663 2016-03-30 15:20:18 -07:00
LexManos 746c07fc6c Fix EntityPlayer still running old armor logic. Closes #2670 2016-03-30 14:05:27 -07:00
LexManos 1083984c8a Merge pull request #2634 from mezz/null-pick
Fix Block.getPickBlock returning an ItemStack with a null Item
2016-03-30 13:48:02 -07:00
RainWarrior 90758f8c96 Fixed StackOverflow caused by the previous commit, closes #2669. 2016-03-29 15:34:45 +03:00
RainWarrior a073b0e386 Prevent missing model from loading multiple times. 2016-03-29 12:07:26 +03:00
mezz 0f06365e1f Fix Block.getPickBlock returning an ItemStack with a null Item 2016-03-28 16:21:35 -07:00
gigaherz 70e85b5eec Add wrapper methods for IStorage#readNBT/writeNBT. 2016-03-28 18:22:42 +02:00
kashike 45881d1c90 Replace Forge's BlockPos#getImmutable method with the included BlockPos#toImmutable (func_185334_h), while keeping the override in PooledMutableBlockPos to prevent mutable leaks.
Also prevent a mutable blockpos leak in World#setTileEntity
2016-03-27 09:43:56 -07:00
RainWarrior efa7fd4dfe Fixed crosshair always being white, closes #2653. 2016-03-26 09:45:20 +03:00
RainWarrior 6e68aa4106 Enabled diffuse lighting by default in UnpackedBakedQuad.Builder. 2016-03-26 09:41:05 +03:00
RainWarrior 6385d7cc9f Fixed diffuse lighting not being applied if forge lighting pipeline is disabled, closes #2651 2016-03-26 09:29:28 +03:00
LexManos c6ce6a00a2 Merge pull request #2650 from mezz/1.9
Make tooltips layout in the right direction, wrap if there is no room
2016-03-24 20:43:45 -07:00
mezz da2964fbd3 Make tooltips layout in the right direction, wrap if there is no room
Same as #2649, but for Minecraft 1.9
2016-03-24 20:39:08 -07:00
RainWarrior c891d9fe16 Disabled erroring block, fixed DynBucketTest.TestItem model. 2016-03-25 00:49:34 +03:00
LexManos dd201c066e Merge pull request #2645 from diesieben07/populate_event
Fix PopulateChunkEvent.Post not firing.
2016-03-24 14:37:55 -07:00
RainWarrior 75032ebf9c Made some more public fields either private or final. 2016-03-24 22:22:21 +03:00
RainWarrior 756c58d5cb Removed RenderWorldEvent, encapsulated all public event fields. 2016-03-24 22:22:21 +03:00
RainWarrior 08c00662a0 Removed LanguageRegistry and CollectionWrapperFactory. 2016-03-24 22:22:21 +03:00
RainWarrior 1d25d9ff49 Fixed isSideSolid causing infinite loops due to the call to getActualState. 2016-03-24 22:22:21 +03:00
RainWarrior a9d23f5e78 Cleanup: removed IEEP, removed redundant casts, fixed imports, fixed typos. 2016-03-24 22:22:20 +03:00
LexManos 7e4d7077a5 New Builder class in BlockStateContainer. Makes building containers with both listed and unlisted properties cleaner.
Make all methods of BiomeGenBase$BiomeProperties public so that modders can use that class outside subclasses.
2016-03-23 19:10:10 -07:00
Take Weiland bc5313c67b Fix PopulateChunkEvent.Post not firing 2016-03-24 02:24:36 +01:00
LexManos 640670052c Merge pull request #2643 from diesieben07/beetroots
Fix BlockCrops.getDrops not respecting new age methods (for beetroots)
2016-03-23 16:33:03 -07:00
Take Weiland 8a6dafc3bb Fix BlockCrops.getDrops not respecting new age methods (for beetroots) 2016-03-23 19:51:15 +01:00
iTitus ecd6f4c1d2 Add flashing update notification icon made by @gigaherz, closes #2582
It is added to the "Mods" button in the main menu and to out-of-date mods in the mod list (there it replaces the "U").
Also fixes a little typo.
2016-03-23 14:48:29 +01:00
RainWarrior 1d608c6fe4 Register the animation Capability. No idea how it worked before at some point. 2016-03-23 08:20:06 +03:00
RainWarrior 884cc690ea Show meaningful error if ModelLoaderRegistry is used before the missing model is initialized. 2016-03-23 08:20:06 +03:00
LexManos 9edd056f55 Fix typo causing biomes to be generated in wrong chunks. Closes #2632 2016-03-22 18:59:37 -07:00
LexManos 0ce790ca2b Fixed custom entities unique ids. 2016-03-22 15:29:42 -07:00
LexManos 25cd7cc3e1 Update FML Entity Spawn packet for 1.9's location change. Closes #2567 2016-03-22 13:35:45 -07:00
LexManos a596984bfd Merge pull request #2622 from williewillus/dupedropfix2
Actually fix dupe drop
2016-03-22 13:00:28 -07:00
RainWarrior 08663587d4 Added Capability.cast, to allow avoiding unchecked casts in ICapabilityProvider.getCapability 2016-03-22 09:01:00 +03:00
LexManos a4d5760539 Fix swap animations for sure this time. 2016-03-21 20:43:22 -07:00
Vincent Lee b38cfc1769 Actually fix dupe drop 2016-03-21 22:39:48 -05:00
LexManos 3ce53a7ee0 Make OreDictionary.initVanillaEntries() private so that dumb modders will stop calling it. 2016-03-21 19:57:59 -07:00
LexManos d878c866b3 Allow finite fluids to be drained correctly 2016-03-21 19:56:31 -07:00
LexManos 2a1c98048e Merge pull request #2587 from diesieben07/spawn_egg_fix
Fix mod spawn eggs and EntityList.func_188429_b
2016-03-21 19:42:59 -07:00
LexManos ac44fe298a Merge pull request #2592 from matthewprenger/patch-1
Pass exceptions thrown in mod event buses back to FML to handle appropriately
2016-03-21 19:39:09 -07:00
LexManos 81e0f2350d Merge pull request #2593 from williewillus/dupedropfix
[1.9] Fix double dropping of items. Closes #2549
2016-03-21 19:35:58 -07:00
LexManos 5cb4fe33bc Merge pull request #2614 from williewillus/entitycaps
Expose IItemHandler on vanilla entities
2016-03-21 19:27:25 -07:00
LexManos a365582b58 Added support for custom dyes with Banners. Closes #2596 2016-03-21 19:24:12 -07:00
LexManos caf3d01586 Make RenderLivingBase.add/remvoeLayer, Closes #2573 2016-03-21 19:23:30 -07:00
LexManos f14f77d445 Fix pushing players inside blocks. 2016-03-21 18:42:37 -07:00
Vincent Lee dabb17f869 Update according to suggestions 2016-03-21 20:31:33 -05:00
LexManos c7b8020279 Exclude jna from termal tansformer. 2016-03-21 18:20:30 -07:00
LexManos 08a3b654b9 Add ShieldDecoration and Tipped arrows to recipe sorter. Closes #2613 2016-03-21 18:20:15 -07:00
LexManos cc5dea0df6 Fixed Item.shouldCauseReequipAnimation hook. 2016-03-21 17:56:59 -07:00
LexManos 2ca7cff075 Fix Chests not opening correctly with semi-solid blocks on top. 2016-03-21 17:56:59 -07:00
LexManos 1830d6de89 Merge pull request #2618 from Thutmose/patch-1
Allow players sized smaller than 1 block to walk into small spaces
2016-03-21 17:15:26 -07:00
LexManos 6fd9a2c00e Rework DimensionManager for new DimensionType enum, replaces the old provider registry. Also fixed save folder issues with dimensions. Closes #2570 2016-03-21 17:12:34 -07:00
Thutmose ba294d48dc Allow players sized smaller than 1 block to walk into small spaces
Same as #2605 but for 1.9 branch
2016-03-21 18:31:25 -04:00
RainWarrior bebf22c0b0 Added default left hand transforms for forge transform strings. Closes #2615. 2016-03-21 18:55:22 +03:00
RainWarrior 9eb04ce1ef Made VertexBuffer.sortVertexData cleanup pointers after it's done. Closes #2528. 2016-03-21 18:54:25 +03:00
RainWarrior 438145995c Ignore blocks/items with null registry name during model loading. Fixes NPE during resource reloading in worlds with removed blocks/items. 2016-03-21 18:29:45 +03:00
RainWarrior 4e6ad80370 Removed blockCenterToCorner from TRSRTransformation constructor. Closes #2461. 2016-03-21 18:23:27 +03:00
RainWarrior c589a3a299 Implemented slightly more generic version of UVLock, re-enabled it for json models. Closes #2607. 2016-03-21 18:06:35 +03:00
Vincent Lee 30db41be9a Expose IItemHandler on vanilla entities 2016-03-21 09:24:36 -05:00
RainWarrior 4b53f0716b instance -> INSTANCE 2016-03-21 10:48:52 +03:00
RainWarrior 286c8c05b7 Separated model classes to client and common packages. 2016-03-21 10:48:52 +03:00
RainWarrior 5f62404f8a Switched animation system to capabilities, added animated item example, fixed state passing in MultiModel. 2016-03-21 10:48:52 +03:00
LexManos 558348125d Merge pull request #2610 from gigaherz/1.9-enchantment
Fix for enchantment table rolling invalid enchants
2016-03-20 21:53:07 -07:00
LexManos 4c5bc9c613 Merge pull request #2590 from blay09/patch-1
[1.9] Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false
2016-03-20 21:50:20 -07:00
LexManos b00af6828f Merge pull request #2606 from CovertJaguar/1.9
Fix #2601 Minecart infinite acceleration
2016-03-20 21:27:17 -07:00
gigaherz 449bf3a292 Fix a condition that caused the enchantment table to roll invalid enchantments. 2016-03-21 04:18:16 +01:00
CovertJaguar 17589e61bd Fix #2601 Minecart infinite acceleration 2016-03-20 16:33:49 -07:00
Take Weiland 313d7bbc11 Fix EntityList.func_188429_b not supporting mod-entities, fixes spawn eggs, fixes #2581 2016-03-20 15:10:22 +01:00
LexManos 5ad2fc90cb Merge pull request #2589 from diesieben07/player_riding_fix
Fix broken patch in EntityPlayer.updateRidden
2016-03-19 21:23:25 -07:00
LexManos 9e475300f9 Merge pull request #2586 from williewillus/fixcrops
[1.9] Fix BlockCrops looking for wrong AGE property for subclasses. Fix #2555
2016-03-19 21:13:18 -07:00
LexManos d4cb82b019 Merge pull request #2585 from iTitus/patch-1
Fix the EntityPlayer patch
2016-03-19 21:12:23 -07:00
LexManos 3d7a16d32e Merge pull request #2584 from Corosauce/1.9
Fix for patch targetting the wrong field to change for failed pathfinding penalty
2016-03-19 21:10:07 -07:00
cpw 76e93e854a Fix bucket test 2016-03-19 21:36:21 -04:00
cpw ce8a758667 Merge branch 'master' into 1.9 2016-03-19 21:19:19 -04:00
cpw af4b74b079 Ignore classes directory 2016-03-19 21:18:47 -04:00
Vincent Lee c39328993e Fix double dropping of items. Closes #2549 2016-03-19 19:57:11 -05:00
Matthew Prenger ee6c041424 Pass exceptions thrown in mod event buses back to FML to handle apropriately 2016-03-19 19:07:04 -05:00
Blay09 8c38f6c1d3 Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false.
It used to be called for both key-up and key-down states prior to 1.9, so I assume Vanilla's changes to F3 behavior broke the patch.
2016-03-20 00:12:08 +01:00
Take Weiland 590f3f610e Fix broken patch in EntityPlayer.updateRidden 2016-03-20 00:11:03 +01:00
Vincent Lee b1a5339b29 Fix #2555 2016-03-19 17:15:26 -05:00
iTitus d5d0374015 Fix the EntityPlayer patch
In 1.8.9 the call goes to getDisplayNameString() so that any changes from the PlayerEvent.NameFormat event are being take into account.
In this patch the call goes to func_70005_c_() which is the getter for the GameProfile name.
I changed it back.

Sorry if you do not want to accept it because it is a one-liner.
2016-03-19 22:37:59 +01:00
Corosauce 8ea90eb39e Fix for patch targetting the wrong field to change for failed pathfinding penalty 2016-03-19 16:55:19 -04:00
RainWarrior ad03581fbe Fixed sprite not being passed to the quad builder for custom models. 2016-03-19 09:48:46 +03:00
RainWarrior 7795570421 Fixed outline shader rendering, closes #2560. 2016-03-19 08:24:59 +03:00
RainWarrior f37a80b302 Fixed Block.doesSideBlockRendering, closes #2564. 2016-03-19 07:20:25 +03:00
RainWarrior 3f3989f6ac Fixed invalid index calculation in BakedQuadRetextured. 2016-03-18 16:55:21 +03:00
LexManos 093646e6f1 Fix AT lines. 2016-03-18 00:29:57 -07:00
RainWarrior a81dfbc4ef Fixed quads that don't need diffuse lighting getting it anyway. 2016-03-17 14:11:24 +03:00
Fry 2c55969ff3 Merge pull request #2559 from Adubbz/master
BlockColors and ItemColors no longer assume non-Vanilla id constancy. Added a getter for ItemColors.
2016-03-17 08:40:58 +04:00
RainWarrior b8bb8c374c Fixed MultiLayerModel not getting correct submodels; Unified the gui lighting of normal and custom models - diffuse lighting is now done in the pipeline, no need for IColoredBakedQuad anymore. 2016-03-17 07:29:44 +03:00
Adubbz 02e228095e BlockColors and ItemColors no longer assume non-Vanilla id constancy. Added a getter for ItemColors. 2016-03-17 14:27:55 +11:00
LexManos 0b0b5097e5 Fixed NPE when sneak using a item. 2016-03-16 18:25:53 -07:00
LexManos 1d2d9ebc83 Fixed Sand not falling. 2016-03-16 18:25:26 -07:00
LexManos c442cd2909 Fixed onUseStop being called twice {Bows firing twice} 2016-03-16 18:25:14 -07:00
LexManos 1591373bf6 Fix vanilla bug where bows consumed tipped arrows in creative. 2016-03-16 18:24:48 -07:00
LexManos f22ed86ad9 Remove our entity position fixer. Vanilla fixed the bug in 1.9. 2016-03-16 18:24:11 -07:00
RainWarrior 6b926f9a06 Javadocs, small cleanup. 2016-03-16 05:17:33 +03:00
RainWarrior 8b4bce37de Fixed progress reporting for model loading. 2016-03-16 05:00:44 +03:00
RainWarrior 87f4351783 Removed imports in patches. 2016-03-16 04:23:40 +03:00
RainWarrior 4189f63905 Fixed EffectRenderer patch, closes #2547. 2016-03-16 04:23:40 +03:00
RainWarrior 12c051d52b Fixed incorrect culling of mod TESRs. 2016-03-16 04:23:40 +03:00
RainWarrior 78a397bc69 Fixed incorrect rotations for items in the left hand. Closes #2548. 2016-03-16 04:23:28 +03:00
RainWarrior b81a13d010 Fixed model error reporting, fixed model errors in test mods that shouldn't happen, fixed custom texture loading, made more things private/final. 2016-03-16 01:42:23 +03:00
LexManos 2bdb614fda Merge pull request #2544 from Vazkii/patch-1
1.9: Fixed registering armor materials through EnumHelper exploding
2016-03-15 12:41:27 -07:00
Vasco Lavos 05801a74af 1.9: Fixed registering armor materials through EnumHelper exploding
1.9 ArmorMaterial now requires a SoundEvent for the equip sound.
2016-03-15 17:52:58 +00:00
LexManos ae72fa7ceb Fixed breaking of tall grass. It now uses fortune. Expanded grass seed hooks to allow Fortune. Potentially removing in future in favor of LootTables. 2016-03-15 01:17:38 -07:00
LexManos 7b0d8f09e9 Fix digging blocks in survival. 2016-03-14 23:44:10 -07:00
LexManos 28ae283b96 PlayerManager updated. 2016-03-14 22:58:01 -07:00
LexManos 3839d33770 Delete mcp patches. 2016-03-14 21:07:05 -07:00
LexManos 9e74f9e7c0 We are based on 1.9 not 1.8.9 :D 2016-03-13 18:51:31 -07:00
LexManos c27b13c705 Update patches for fixed inner class suffeling in srg files. 2016-03-13 18:32:53 -07:00
RainWarrior 5d352bda6c Big model loader refactoring: simplified a lot of things, broke some error reporting. Still generally works. 2016-03-13 16:16:25 +03:00
RainWarrior a799bbad2d First version of updated of ModelLoader, mostly works. 2016-03-13 12:10:50 +03:00
RainWarrior bda688b9b5 Fixed some errors in forge.exc 2016-03-13 09:59:30 +03:00
RainWarrior 4650ee2789 Updated to latest mappings. Exc is broken, some anonymous classes didn't map to srg names. 2016-03-13 04:40:03 +03:00
cpw 52e877bdd0 Switch to srg patches 2016-03-11 19:59:24 -05:00
RainWarrior 93c1c737e1 Fixed armor rendering 2016-03-11 01:26:04 +03:00
RainWarrior 018c67d969 Fixed incorrect rendering state caused by transparent rendering pass for entities. 2016-03-11 00:57:05 +03:00
RainWarrior 5c9808ada8 Fixed emply hand not rendering in first person. 2016-03-11 00:43:18 +03:00
cpw cdf8a820a6 Capture Biome Registry within FML 2016-03-09 23:01:04 -05:00
RainWarrior 8e9b403fbf Fixed (hopefully) perspective transformations for custom models too. 2016-03-10 04:48:13 +03:00
RainWarrior cf93859095 Fix items rendering too low in first person. 2016-03-10 04:19:54 +03:00
cpw 98f606d4d2 Move the patch into the fml override handler, for less patch 2016-03-09 20:08:24 -05:00
cpw 301d4b9fa0 Fix race condition between server ticks and the netlogin code handshaking for FML 2016-03-09 20:00:10 -05:00
RainWarrior 173cec4149 Fix perspective transformations for left-handed items, disable ModelAnimationDebug until model loading is fixed. 2016-03-10 03:38:58 +03:00
LexManos 873899a62b Fixed position being shifted before being sent to shouldSideBeRendered. 2016-03-09 15:15:52 -08:00
LexManos e4da09df2a Bump version info. Rather important. 2016-03-09 14:52:32 -08:00
LexManos 90b2c86a9f Added bypass functions to Defaulted registry, DO NOT USE THIS MODDERS FORGE INTERNAL ONLY.
And some other fixups for running.
2016-03-09 14:41:13 -08:00
LexManos 7b7156e87f Interaction hooks need to be re-added but compiles {Doesn't run} 2016-03-09 14:11:56 -08:00
cpw 846910b8c8 Fix up PlayerSP for the AT 2016-03-09 01:08:42 -05:00
cpw e8a7e28110 Another AT, for the player 2016-03-09 00:59:28 -05:00
cpw aa24916736 Finish world, chunkloading should work again? 2016-03-09 00:48:32 -05:00
cpw c11732fc40 Potion cleanup. Moar fixes! 2016-03-08 23:49:19 -05:00
cpw 56a0d125bd Remove more chestgenhooks stuff. Clean up some more ATs 2016-03-08 23:39:37 -05:00
cpw 25256c8ddd More fixups, removing chestgenstuff aggressively. Use loot tables. Any missing ones WILL be added by Mojang. 2016-03-08 23:22:54 -05:00
cpw a44d76652b Another compilation fix
More patch tweaks for compilation errors. onItemUseTick takes an entity now, cos skellies use stuff too
2016-03-08 16:36:50 -05:00
cpw fffbc0f078 Some more forge code fixes 2016-03-08 16:23:54 -05:00
RainWarrior befbb45522 Most of ItemInWorldManager reject, various small error fixes. 2016-03-08 23:33:28 +03:00
RainWarrior 4b4146bbed World 2016-03-08 22:43:05 +03:00
LexManos 776eb00ed3 10 more rejects down.
98 errors 6 rejects left.
2016-03-07 23:34:40 -08:00
LexManos 26ca27193c More patch work, client patches. 2016-03-07 21:06:54 -08:00
cpw f0e5baa8e5 Few more compile fixups 2016-03-07 00:23:00 -05:00
cpw ade3bbad14 Command fixups 2016-03-07 00:08:29 -05:00
cpw 020bf5ee98 Remove two patches that aren't needed anymore 2016-03-06 23:46:27 -05:00
cpw 2dcb2187c0 Some client handler cleanup 2016-03-06 23:42:30 -05:00
cpw e49e6a9e09 Fix up import in Potion 2016-03-06 23:20:06 -05:00
cpw 01912a459a Some more FML related fixups 2016-03-06 23:18:36 -05:00
cpw b342bf8481 Some fixups for FML, and use the FML registry for potions 2016-03-06 23:07:25 -05:00
LexManos 2847644368 NetworkDispatcher/FMLProxyPacket 41 more errors cleaned. 2016-03-06 18:45:21 -08:00
LexManos a83fe44d8a Temporary hack to fix MCP mappings for param names we are using that is causing compile errors. 2016-03-06 18:02:44 -08:00
LexManos 09bac53ed6 Fishing is now a loot table no more need for FishingHooks. {LootTables still need to be evaludated if they need extra hooks, but thats later} Goodbye 44 compile errors! 2016-03-06 17:01:52 -08:00
LexManos 206a21d563 Fixed errrors in Fluids package. TODO: Make BlockLiquid implement IFluidBlock and REMOVE FluidContainerRegsitry. Everything *should* be able to use IFluidContainer directly. 2016-03-06 16:54:47 -08:00
RainWarrior ee82341312 Made OBJModel.java compile. 2016-03-06 03:00:08 +03:00
RainWarrior 3e22a2b90d Model UV lock handling from the state to the model, fixed most compile errors in ModelLoader, disabled it (and ModelBakeEvent) until it's functional, fixed some errors in ForgeHooksClient. 2016-03-06 02:51:39 +03:00
RainWarrior 70670d70ea Removed generics from IModel subinterfaces, add ed ModelProcessingHelper instead. 2016-03-06 01:34:04 +03:00
cpw 0f2cead3c8 WorldServer: NOTE - ChestGenHooks has NOT been updated in accordance with plans for removing it
GuiStats
Fixup deletion of egg handling in entity registry?
2016-03-04 22:39:35 -05:00
cpw 3c7bda77e3 ServerPinger
PlayerList
2016-03-04 21:51:53 -05:00
RainWarrior 7735ff7791 ModelBox, PositionTextureVertex, TexturedQuad. Does anyone really use those on the server? 2016-03-05 05:29:55 +03:00
cpw c5e10c8cb8 LanguageManager
NetHandlerPlayClient
2016-03-04 21:26:17 -05:00
RainWarrior cb909eeb59 Fixed B3D loader, fixed some obvious errors in ModelLoader. 2016-03-05 05:02:34 +03:00
RainWarrior ed8a8b415b Fix various errors in text mods. 2016-03-05 04:43:41 +03:00
LexManos 74b2c3dfe6 World Patches work. 2016-03-04 16:40:34 -08:00
LexManos 8a506022d7 More work on misc things. 2016-03-03 02:57:38 -08:00
LexManos f821759c21 Delete reject files i missed 2016-03-02 23:37:05 -08:00
LexManos ec882538c0 Merge pull request #2521 from Adubbz/master
Updated BiomeManager to 1.9
2016-03-02 23:35:36 -08:00
Adubbz c87feabd6e Updated BiomeManager to 1.9 2016-03-03 18:33:26 +11:00
LexManos b096f58a6d Merge pull request #2520 from Adubbz/master
Updated the biome dictionary to support 1.9
2016-03-02 23:24:24 -08:00
LexManos b6bcf7bf4b Enchantments, some world, Biomes, bucks, world/gen/features. 2016-03-02 23:23:40 -08:00
Adubbz 706e894cbb Updated the biome dictionary
Squashed commits:

[4064de6] Updated the biome dictionary
2016-03-03 18:15:30 +11:00
cpw b15667a7e6 DedicatedServer
IntegratedServer
2016-03-02 13:22:04 -05:00
RainWarrior becb0a9e0e Chunk 2016-03-02 20:28:51 +03:00
RainWarrior cff4bf21ae Updated raw types in ExtendedBlockState, fixed some ATs, updated some things that needed updating in model classes. 2016-03-02 20:00:32 +03:00
RainWarrior d44d82e19d removed Item.getModel, functionality is now achieveable via ItemOverrides. 2016-03-02 15:36:32 +03:00
RainWarrior 24b66ff9f3 GuiOverlayDebug, ItemModelMesher, RenderManager, Stitcher fixed + minor fixes in forge gui classes. 2016-03-02 15:32:22 +03:00
RainWarrior 3fd09af1d3 GuiCreateWorld, GuiSlot, GuiUtilRenderComponents, GuiContainerCreative 2016-03-02 15:06:36 +03:00
LexManos 7fadb5aeb8 Small renames before bed. 2016-03-02 01:44:41 -08:00
LexManos 636a89c195 Merge pull request #2514 from CovertJaguar/1.9
Fix broken patches for EntityMinecart
2016-03-02 01:25:01 -08:00
LexManos 8863aab9e5 Items done, <1000 errors whoot! 2016-03-01 23:38:31 -08:00
CovertJaguar 8fe432230d Fix broken patches for EntityMinecart 2016-03-01 23:04:07 -08:00
LexManos ad788880e5 Some entity patches. 2016-03-01 20:42:36 -08:00
RainWarrior 728319cbb5 Fixed most errors in the model stuff, except for ModelLoader and b3d and obj getQuads/handleBlockState methods. 2016-03-01 23:19:38 +03:00
RainWarrior d9b69fda65 FontRenderer 2016-03-01 21:08:51 +03:00
RainWarrior d5c4b1825c tabs -> spaces. 2016-03-01 20:52:36 +03:00
RainWarrior d35c38d261 EntityRenderer, most of RenderGlobal, minor fix to LayerBipedArmor. 2016-03-01 20:52:19 +03:00
RainWarrior 153fb6b30d RendererLivingEntity, RenderEntityItem, RenderItem, RenderManager, LayerArmorBase; Item.getModel + ISmartItemModel are now inside ItemOverrideList; fix class rename in TESR patch. 2016-03-01 20:13:37 +03:00
RainWarrior c9a01a439d A bunch of rendering rejects updated. 2016-03-01 19:22:21 +03:00
RainWarrior c1744f00e0 Updated various block model patches. 2016-03-01 17:59:58 +03:00
LexManos ac7c4d2f6c Some import renames and compile error fixes, killed ~800. 2016-03-01 04:58:03 -08:00
LexManos 1f80eb17df util, tileentity, stats, realms. Potions got an overhaul and out registry will need to be adapted. 2016-03-01 04:07:00 -08:00
LexManos f654157adb net.minecraft.block.* patches 2016-03-01 00:31:58 -08:00
cpw bf7527d3cd First few patches applied 2016-02-29 22:54:48 -05:00
cpw 213abdb561 Add rejects with mcp names for application to main codebase. Let's roll? 2016-02-29 21:45:40 -05:00
cpw d29b9f8752 Add in mcp named patches and use them. Initial 1.9 setup. 2016-02-29 21:37:08 -05:00
cpw 95d1ba5dc5 Don't ignore rejects 2016-02-29 19:43:05 -05:00
803 changed files with 21510 additions and 16451 deletions

No files matched your search

+2 -1
View File
@@ -8,6 +8,7 @@
#idea
/.idea
/classes
*.iml
#gradle
@@ -20,8 +21,8 @@
/buildSrc
#Patch rejects
*.rej
/patches-/
*.patch.rej
# FML changelog
changelog.txt
+483
View File
@@ -0,0 +1,483 @@
Minecraft Forge is licensed under the terms of the LGPL 2.1 found
here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and copied
below.
A note on authorship:
All source artifacts are property of their original author, with
the exclusion of the contents of the patches directory and others
copied from it from time to time. Authorship of the contents of
the patches directory is retained by the Minecraft Forge project.
This is because the patches are partially machine generated
artifacts, and are changed heavily due to the way forge works.
Individual attribution within them is impossible.
Consent:
All contributions to Forge must consent to the release of any
patch content to the Forge project.
A note on infectivity:
The LGPL is chosen specifically so that projects may depend on Forge
features without being infected with its license. That is the
purpose of the LGPL. Mods and others using this code via ordinary
Java mechanics for referencing libraries are specifically not bound
by Forge's license for the Mod code.
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
+41 -27
View File
@@ -11,7 +11,7 @@ buildscript {
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
}
}
@@ -26,11 +26,10 @@ apply plugin: "net.minecraftforge.gradle.patcher"
apply plugin: "net.minecraftforge.gradle.launch4j"
minecraft {
version = "1.8.9"
mappings = 'stable_20'
//mappings = "snapshot_nodoc_20151122"
version = "1.9.4"
mappings = 'snapshot_nodoc_20160518'
workspaceDir = "projects"
versionJson = "jsons/1.8.9-dev.json"
versionJson = "jsons/1.9.4-dev.json"
buildUserdev = true
buildInstaller = true
installerVersion = "1.4"
@@ -52,6 +51,7 @@ minecraft {
genPatchesFrom "clean"
genMcpPatches = false
applyMcpPatches = false
s2sKeepImports = true
with common
}
}
@@ -66,7 +66,7 @@ extractForgeResources { exclude "**/log4j2.xml" }
genGradleProjects { addTestCompileDep "junit:junit:4.12" }
processJson {
releaseJson = "jsons/1.8.9-rel.json"
releaseJson = "jsons/1.9.4-rel.json"
addReplacements([
"@minecraft_version@": project.minecraft.version,
"@version@": project.version,
@@ -89,7 +89,7 @@ task changelog(type: JenkinsChangelog) {
outputs.upToDateWhen { false } // never up to date
serverRoot = "http://ci.jenkins.minecraftforge.net/"
jobName = "minecraftforge"
targetBuild = System.env['BUILD_NUMBER'] ?: 0;
targetBuild = System.env['BUILD_NUMBER'] ?: project.ext.properties.buildNumber ?:0;
authName = "console_script"
authPassword = project.hasProperty('forgeJenkinsPass') ? project.getProperty('forgeJenkinsPass') : "";
output = "build/distributions/${project.name}-${project.version}-changelog.txt"
@@ -171,25 +171,25 @@ task makeMdk(type: Zip) {
from 'gradlew'
from 'gradlew.bat'
into ('gradle') {
from 'gradle'
from 'gradle'
}
into ('eclipse') {
from 'mdk/eclipse'
}
from changelog.output
from ('mdk') {
filter(ReplaceTokens, tokens: [
VERSION: project.version,
MAPPINGS: minecraft.mappings.replace('nodoc_', '')
])
exclude 'eclipse'
rename 'gitignore\\.txt', '.gitignore'
from 'MinecraftForge-Credits.txt'
from 'MinecraftForge-License.txt'
from 'Paulscode IBXM Library License.txt'
from 'Paulscode SoundSystem CodecIBXM License.txt'
from 'CREDITS-fml.txt'
from 'LICENSE-fml.txt'
filter(ReplaceTokens, tokens: [
VERSION: project.version,
MAPPINGS: minecraft.mappings.replace('nodoc_', '')
])
exclude 'eclipse'
rename 'gitignore\\.txt', '.gitignore'
from 'MinecraftForge-Credits.txt'
from 'MinecraftForge-License.txt'
from 'Paulscode IBXM Library License.txt'
from 'Paulscode SoundSystem CodecIBXM License.txt'
from 'CREDITS-fml.txt'
from 'LICENSE-fml.txt'
}
}
tasks.build.dependsOn makeMdk
@@ -218,14 +218,13 @@ artifacts {
task ciWriteBuildNumber << {
def file = file("src/main/java/net/minecraftforge/common/ForgeVersion.java");
def bn = System.getenv("BUILD_NUMBER")?:0;
def bn = System.getenv("BUILD_NUMBER")?:project.ext.properties.buildNumber?:0;
def outfile = "";
def ln = System.getProperty('line.separator')
file.eachLine{ String s ->
if (s.contains("buildVersion") && s.contains("= 0;")) {
if (s.matches("^ public static final int buildVersion = [\\d]+;\$"))
s = " public static final int buildVersion = ${bn};";
}
outfile += (s+ln);
}
file.write(outfile);
@@ -345,10 +344,8 @@ String getVersionFromJava(File file)
}
}
if (System.getenv().containsKey("BUILD_NUMBER"))
{
build = System.getenv("BUILD_NUMBER");
}
build = System.getenv("BUILD_NUMBER") ?: project.ext.properties.buildNumber ?: 0
String branch = null;
if (!System.getenv().containsKey("GIT_BRANCH"))
@@ -370,7 +367,24 @@ String getVersionFromJava(File file)
return out;
}
task resetBuildNumber << {
project.ext.properties.buildNumber = 0;
ciWriteBuildNumber.execute()
}
// re-add old tasks for jenkins compat
// should be remvoed, and the jenkisn fixed when no longer building with FG 1.2
task setupForge { dependsOn 'setup' }
task buildPackages { dependsOn 'build' }
//Temporary hack to fix compile errors caused by mappings shading in Bootstrap
/*
task fixParams << {
logger.lifecycle('Fixing param names!')
def params = new File(extractMcpMappings.destinationDir, 'params.csv')
def text = params.text
text = text.replaceAll('p_180276_1_,biome,', 'p_180276_1_,biomeIn,')
params.write(text)
}
fixParams.dependsOn('extractMcpMappings')
extractMcpMappings.finalizedBy('fixParams')
*/
+95
View File
@@ -0,0 +1,95 @@
{
"id": "@minecraft_version@-@project@@version@",
"time": "@timestamp@",
"releaseTime": "1960-01-01T00:00:00-0700",
"type": "release",
"inheritsFrom": "1.9",
"minecraftArguments": "--version FML_DEV --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker",
"libraries": [
{
"name": "net.minecraft:launchwrapper:1.12"
},
{
"name": "jline:jline:2.13",
"children": ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.google.code.findbugs:jsr305:1.3.9",
"children": ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.ow2.asm:asm-debug-all:5.0.3",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.typesafe.akka:akka-actor_2.11:2.3.3",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.typesafe:config:1.2.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-actors-migration_2.11:1.1.0",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-compiler:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-library:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-reflect:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-swing_2.11:1.0.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-xml_2.11:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "lzma:lzma:0.0.1"
},
{
"name": "java3d:vecmath:1.5.2"
},
{
"name": "net.sf.trove4j:trove4j:3.0.3"
}
],
"mainClass": "net.minecraft.launchwrapper.Launch",
"minimumLauncherVersion": 14,
"assets": "1.8"
}
+139
View File
@@ -0,0 +1,139 @@
{
"install": {
"profileName": "@project@",
"target":"@minecraft_version@-@project@@version@",
"path":"@artifact@",
"version":"@project@ @version@",
"filePath":"@universal_jar@",
"welcome":"Welcome to the simple @project@ installer.",
"minecraft":"@minecraft_version@",
"mirrorList" : "http://files.minecraftforge.net/mirror-brand.list",
"logo":"/big_logo.png"
},
"versionInfo": {
"id": "@minecraft_version@-@project@@version@",
"time": "@timestamp@",
"releaseTime": "1960-01-01T00:00:00-0700",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge",
"mainClass": "net.minecraft.launchwrapper.Launch",
"minimumLauncherVersion": 14,
"inheritsFrom": "1.9",
"libraries": [
{
"name": "@artifact@",
"url": "http://files.minecraftforge.net/maven/"
},
{
"name": "net.minecraft:launchwrapper:1.12",
"serverreq":true
},
{
"name": "org.ow2.asm:asm-all:5.0.3",
"serverreq":true
},
{
"name": "jline:jline:2.13",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "2d9530d0a25daffaffda7c35037b046b627bb171" ],
"serverreq":true,
"clientreq":false
},
{
"name": "com.typesafe.akka:akka-actor_2.11:2.3.3",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "ed62e9fc709ca0f2ff1a3220daa8b70a2870078e", "25a86ccfdb6f6dfe08971f4825d0a01be83a6f2e" ],
"serverreq":true,
"clientreq":true
},
{
"name": "com.typesafe:config:1.2.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "f771f71fdae3df231bcd54d5ca2d57f0bf93f467", "7d7bc36df0989d72f2d5d057309675777acc528b" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-actors-migration_2.11:1.1.0",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f", "8c9aaeeb68487ca519411a14068e1b4d69739207" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-compiler:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "56ea2e6c025e0821f28d73ca271218b8dd04926a", "1444992390544ba3780867a13ff696a89d7d1639" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "87213338cd5a153a7712cb574c0ddd2edfee0386", "0b4c1bf8d48993f138d6e10c0c144e50acfff581" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "1f7371605d4ba42aa26d3443440c0083c587b4e9", "1ea655dda4504ae0a367327e2340cd3beaee6c73" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-library:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "0e11da23da3eabab9f4777b9220e60d44c1aab6a", "1e4df76e835201c6eabd43adca89ab11f225f134" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-parser-combinators_2.11:1.0.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "f05d7345bf5a58924f2837c6c1f4d73a938e1ff0", "a1cbbcbde1dcc614f4253ed1aa0b320bc78d8f1d" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-reflect:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "6580347e61cc7f8e802941e7fde40fa83b8badeb", "91ce0f0be20f4a536321724b4b3bbc6530ddcd88" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-swing_2.11:1.0.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "b1cdd92bd47b1e1837139c1c53020e86bb9112ae", "d77152691dcf5bbdb00529af37aa7d3d887b3e63" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-xml_2.11:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0", "62736b01689d56b6d09a0164b7ef9da2b0b9633d" ],
"serverreq":true,
"clientreq":true
},
{
"name": "lzma:lzma:0.0.1",
"serverreq":true
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6",
"serverreq":true
},
{
"name": "java3d:vecmath:1.5.2",
"clientreq":true,
"serverreq":true
},
{
"name": "net.sf.trove4j:trove4j:3.0.3",
"clientreq":true,
"serverreq":true
}
]
}
}
+92
View File
@@ -0,0 +1,92 @@
{
"id": "@minecraft_version@-@project@@version@",
"time": "@timestamp@",
"releaseTime": "1960-01-01T00:00:00-0700",
"type": "release",
"inheritsFrom": "1.9.4",
"minecraftArguments": "--version FML_DEV --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker",
"libraries": [
{
"name": "net.minecraft:launchwrapper:1.12"
},
{
"name": "jline:jline:2.13",
"children": ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.google.code.findbugs:jsr305:1.3.9",
"children": ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.ow2.asm:asm-debug-all:5.0.3",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.typesafe.akka:akka-actor_2.11:2.3.3",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "com.typesafe:config:1.2.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-actors-migration_2.11:1.1.0",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-compiler:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-library:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang:scala-reflect:2.11.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-swing_2.11:1.0.1",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "org.scala-lang.modules:scala-xml_2.11:1.0.2",
"children" : ["sources"],
"url" : "http://repo.maven.apache.org/maven2"
},
{
"name": "lzma:lzma:0.0.1"
},
{
"name": "java3d:vecmath:1.5.2"
},
{
"name": "net.sf.trove4j:trove4j:3.0.3"
}
]
}
+139
View File
@@ -0,0 +1,139 @@
{
"install": {
"profileName": "@project@",
"target":"@minecraft_version@-@project@@version@",
"path":"@artifact@",
"version":"@project@ @version@",
"filePath":"@universal_jar@",
"welcome":"Welcome to the simple @project@ installer.",
"minecraft":"@minecraft_version@",
"mirrorList" : "http://files.minecraftforge.net/mirror-brand.list",
"logo":"/big_logo.png"
},
"versionInfo": {
"id": "@minecraft_version@-@project@@version@",
"time": "@timestamp@",
"releaseTime": "1960-01-01T00:00:00-0700",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge",
"mainClass": "net.minecraft.launchwrapper.Launch",
"inheritsFrom": "1.9.4",
"jar": "1.9.4",
"libraries": [
{
"name": "@artifact@",
"url": "http://files.minecraftforge.net/maven/"
},
{
"name": "net.minecraft:launchwrapper:1.12",
"serverreq":true
},
{
"name": "org.ow2.asm:asm-all:5.0.3",
"serverreq":true
},
{
"name": "jline:jline:2.13",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "2d9530d0a25daffaffda7c35037b046b627bb171" ],
"serverreq":true,
"clientreq":false
},
{
"name": "com.typesafe.akka:akka-actor_2.11:2.3.3",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "ed62e9fc709ca0f2ff1a3220daa8b70a2870078e", "25a86ccfdb6f6dfe08971f4825d0a01be83a6f2e" ],
"serverreq":true,
"clientreq":true
},
{
"name": "com.typesafe:config:1.2.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "f771f71fdae3df231bcd54d5ca2d57f0bf93f467", "7d7bc36df0989d72f2d5d057309675777acc528b" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-actors-migration_2.11:1.1.0",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f", "8c9aaeeb68487ca519411a14068e1b4d69739207" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-compiler:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "56ea2e6c025e0821f28d73ca271218b8dd04926a", "1444992390544ba3780867a13ff696a89d7d1639" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "87213338cd5a153a7712cb574c0ddd2edfee0386", "0b4c1bf8d48993f138d6e10c0c144e50acfff581" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "1f7371605d4ba42aa26d3443440c0083c587b4e9", "1ea655dda4504ae0a367327e2340cd3beaee6c73" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-library:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "0e11da23da3eabab9f4777b9220e60d44c1aab6a", "1e4df76e835201c6eabd43adca89ab11f225f134" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-parser-combinators_2.11:1.0.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "f05d7345bf5a58924f2837c6c1f4d73a938e1ff0", "a1cbbcbde1dcc614f4253ed1aa0b320bc78d8f1d" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-reflect:2.11.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "6580347e61cc7f8e802941e7fde40fa83b8badeb", "91ce0f0be20f4a536321724b4b3bbc6530ddcd88" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-swing_2.11:1.0.1",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "b1cdd92bd47b1e1837139c1c53020e86bb9112ae", "d77152691dcf5bbdb00529af37aa7d3d887b3e63" ],
"serverreq":true,
"clientreq":true
},
{
"name": "org.scala-lang:scala-xml_2.11:1.0.2",
"url" : "http://files.minecraftforge.net/maven/",
"checksums" : [ "7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0", "62736b01689d56b6d09a0164b7ef9da2b0b9633d" ],
"serverreq":true,
"clientreq":true
},
{
"name": "lzma:lzma:0.0.1",
"serverreq":true
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6",
"serverreq":true
},
{
"name": "java3d:vecmath:1.5.2",
"clientreq":true,
"serverreq":true
},
{
"name": "net.sf.trove4j:trove4j:3.0.3",
"clientreq":true,
"serverreq":true
}
]
}
}
+551
View File
@@ -0,0 +1,551 @@
{
"assetIndex": {
"id": "1.9",
"sha1": "8549e8aca91ee8b8d1620e9e8252d477f16a56d5",
"size": 137552,
"url": "https://launchermeta.mojang.com/mc-staging/assets/1.9/8549e8aca91ee8b8d1620e9e8252d477f16a56d5/1.9.json",
"totalSize": 120896362
},
"assets": "1.9",
"downloads": {
"client": {
"sha1": "4a61c873be90bb1196d68dac7b29870408c56969",
"size": 8736083,
"url": "https://launcher.mojang.com/mc/game/1.9.4/client/4a61c873be90bb1196d68dac7b29870408c56969/client.jar"
},
"server": {
"sha1": "edbb7b1758af33d365bf835eb9d13de005b1e274",
"size": 9399053,
"url": "https://launcher.mojang.com/mc/game/1.9.4/server/edbb7b1758af33d365bf835eb9d13de005b1e274/server.jar"
}
},
"id": "1.9.4",
"libraries": [
{
"name": "com.mojang:netty:1.6",
"downloads": {
"artifact": {
"size": 7877,
"sha1": "4b75825a06139752bd800d9e29c5fd55b8b1b1e4",
"path": "com/mojang/netty/1.6/netty-1.6.jar",
"url": "https://libraries.minecraft.net/com/mojang/netty/1.6/netty-1.6.jar"
}
}
},
{
"name": "oshi-project:oshi-core:1.1",
"downloads": {
"artifact": {
"size": 30973,
"sha1": "9ddf7b048a8d701be231c0f4f95fd986198fd2d8",
"path": "oshi-project/oshi-core/1.1/oshi-core-1.1.jar",
"url": "https://libraries.minecraft.net/oshi-project/oshi-core/1.1/oshi-core-1.1.jar"
}
}
},
{
"name": "net.java.dev.jna:jna:3.4.0",
"downloads": {
"artifact": {
"size": 1008730,
"sha1": "803ff252fedbd395baffd43b37341dc4a150a554",
"path": "net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar",
"url": "https://libraries.minecraft.net/net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar"
}
}
},
{
"name": "net.java.dev.jna:platform:3.4.0",
"downloads": {
"artifact": {
"size": 913436,
"sha1": "e3f70017be8100d3d6923f50b3d2ee17714e9c13",
"path": "net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar",
"url": "https://libraries.minecraft.net/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar"
}
}
},
{
"name": "com.ibm.icu:icu4j-core-mojang:51.2",
"downloads": {
"artifact": {
"size": 1634692,
"sha1": "63d216a9311cca6be337c1e458e587f99d382b84",
"path": "com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar",
"url": "https://libraries.minecraft.net/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar"
}
}
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6",
"downloads": {
"artifact": {
"size": 62477,
"sha1": "306816fb57cf94f108a43c95731b08934dcae15c",
"path": "net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar",
"url": "https://libraries.minecraft.net/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar"
}
}
},
{
"name": "com.paulscode:codecjorbis:20101023",
"downloads": {
"artifact": {
"size": 103871,
"sha1": "c73b5636faf089d9f00e8732a829577de25237ee",
"path": "com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar",
"url": "https://libraries.minecraft.net/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar"
}
}
},
{
"name": "com.paulscode:codecwav:20101023",
"downloads": {
"artifact": {
"size": 5618,
"sha1": "12f031cfe88fef5c1dd36c563c0a3a69bd7261da",
"path": "com/paulscode/codecwav/20101023/codecwav-20101023.jar",
"url": "https://libraries.minecraft.net/com/paulscode/codecwav/20101023/codecwav-20101023.jar"
}
}
},
{
"name": "com.paulscode:libraryjavasound:20101123",
"downloads": {
"artifact": {
"size": 21679,
"sha1": "5c5e304366f75f9eaa2e8cca546a1fb6109348b3",
"path": "com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar",
"url": "https://libraries.minecraft.net/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar"
}
}
},
{
"name": "com.paulscode:librarylwjglopenal:20100824",
"downloads": {
"artifact": {
"size": 18981,
"sha1": "73e80d0794c39665aec3f62eee88ca91676674ef",
"path": "com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar",
"url": "https://libraries.minecraft.net/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar"
}
}
},
{
"name": "com.paulscode:soundsystem:20120107",
"downloads": {
"artifact": {
"size": 65020,
"sha1": "419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6",
"path": "com/paulscode/soundsystem/20120107/soundsystem-20120107.jar",
"url": "https://libraries.minecraft.net/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar"
}
}
},
{
"name": "io.netty:netty-all:4.0.23.Final",
"downloads": {
"artifact": {
"size": 1779991,
"sha1": "0294104aaf1781d6a56a07d561e792c5d0c95f45",
"path": "io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar",
"url": "https://libraries.minecraft.net/io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar"
}
}
},
{
"name": "com.google.guava:guava:17.0",
"downloads": {
"artifact": {
"size": 2243036,
"sha1": "9c6ef172e8de35fd8d4d8783e4821e57cdef7445",
"path": "com/google/guava/guava/17.0/guava-17.0.jar",
"url": "https://libraries.minecraft.net/com/google/guava/guava/17.0/guava-17.0.jar"
}
}
},
{
"name": "org.apache.commons:commons-lang3:3.3.2",
"downloads": {
"artifact": {
"size": 412739,
"sha1": "90a3822c38ec8c996e84c16a3477ef632cbc87a3",
"path": "org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar",
"url": "https://libraries.minecraft.net/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar"
}
}
},
{
"name": "commons-io:commons-io:2.4",
"downloads": {
"artifact": {
"size": 185140,
"sha1": "b1b6ea3b7e4aa4f492509a4952029cd8e48019ad",
"path": "commons-io/commons-io/2.4/commons-io-2.4.jar",
"url": "https://libraries.minecraft.net/commons-io/commons-io/2.4/commons-io-2.4.jar"
}
}
},
{
"name": "commons-codec:commons-codec:1.9",
"downloads": {
"artifact": {
"size": 263965,
"sha1": "9ce04e34240f674bc72680f8b843b1457383161a",
"path": "commons-codec/commons-codec/1.9/commons-codec-1.9.jar",
"url": "https://libraries.minecraft.net/commons-codec/commons-codec/1.9/commons-codec-1.9.jar"
}
}
},
{
"name": "net.java.jinput:jinput:2.0.5",
"downloads": {
"artifact": {
"size": 208338,
"sha1": "39c7796b469a600f72380316f6b1f11db6c2c7c4",
"path": "net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar",
"url": "https://libraries.minecraft.net/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"
}
}
},
{
"name": "net.java.jutils:jutils:1.0.0",
"downloads": {
"artifact": {
"size": 7508,
"sha1": "e12fe1fda814bd348c1579329c86943d2cd3c6a6",
"path": "net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar",
"url": "https://libraries.minecraft.net/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar"
}
}
},
{
"name": "com.google.code.gson:gson:2.2.4",
"downloads": {
"artifact": {
"size": 190432,
"sha1": "a60a5e993c98c864010053cb901b7eab25306568",
"path": "com/google/code/gson/gson/2.2.4/gson-2.2.4.jar",
"url": "https://libraries.minecraft.net/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar"
}
}
},
{
"name": "com.mojang:authlib:1.5.22",
"downloads": {
"artifact": {
"size": 64539,
"sha1": "afaa8f6df976fcb5520e76ef1d5798c9e6b5c0b2",
"path": "com/mojang/authlib/1.5.22/authlib-1.5.22.jar",
"url": "https://libraries.minecraft.net/com/mojang/authlib/1.5.22/authlib-1.5.22.jar"
}
}
},
{
"name": "com.mojang:realms:1.8.19",
"downloads": {
"artifact": {
"size": 1575795,
"sha1": "f7469a9307b962d1097e44713eb1baa087c06e43",
"path": "com/mojang/realms/1.8.19/realms-1.8.19.jar",
"url": "https://libraries.minecraft.net/com/mojang/realms/1.8.19/realms-1.8.19.jar"
}
}
},
{
"name": "org.apache.commons:commons-compress:1.8.1",
"downloads": {
"artifact": {
"size": 365552,
"sha1": "a698750c16740fd5b3871425f4cb3bbaa87f529d",
"path": "org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar",
"url": "https://libraries.minecraft.net/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar"
}
}
},
{
"name": "org.apache.httpcomponents:httpclient:4.3.3",
"downloads": {
"artifact": {
"size": 589512,
"sha1": "18f4247ff4572a074444572cee34647c43e7c9c7",
"path": "org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar",
"url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar"
}
}
},
{
"name": "commons-logging:commons-logging:1.1.3",
"downloads": {
"artifact": {
"size": 62050,
"sha1": "f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f",
"path": "commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar",
"url": "https://libraries.minecraft.net/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"
}
}
},
{
"name": "org.apache.httpcomponents:httpcore:4.3.2",
"downloads": {
"artifact": {
"size": 282269,
"sha1": "31fbbff1ddbf98f3aa7377c94d33b0447c646b6e",
"path": "org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar",
"url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar"
}
}
},
{
"name": "it.unimi.dsi:fastutil:7.0.12_mojang",
"downloads": {
"artifact": {
"size": 522306,
"sha1": "ba787e741efdc425fc5d2ea654b57c15fba27efa",
"path": "it/unimi/dsi/fastutil/7.0.12_mojang/fastutil-7.0.12_mojang.jar",
"url": "https://libraries.minecraft.net/it/unimi/dsi/fastutil/7.0.12_mojang/fastutil-7.0.12_mojang.jar"
}
}
},
{
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9",
"downloads": {
"artifact": {
"size": 108161,
"sha1": "1dd66e68cccd907880229f9e2de1314bd13ff785",
"path": "org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar",
"url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar"
}
}
},
{
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9",
"downloads": {
"artifact": {
"size": 681134,
"sha1": "678861ba1b2e1fccb594bb0ca03114bb05da9695",
"path": "org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar",
"url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar"
}
}
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"artifact": {
"size": 1047168,
"sha1": "697517568c68e78ae0b4544145af031c81082dfe",
"path": "org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar"
}
}
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"artifact": {
"size": 173887,
"sha1": "d51a7c040a721d13efdfbd34f8b257b2df882ad0",
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar"
}
}
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"classifiers": {
"natives-linux": {
"size": 578680,
"sha1": "931074f46c795d2f7b30ed6395df5715cfd7675b",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
},
"natives-osx": {
"size": 426822,
"sha1": "bcab850f8f487c3f4c4dbabde778bb82bd1a40ed",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
},
"natives-windows": {
"size": 613748,
"sha1": "b84d5102b9dbfabfeb5e43c7e2828d98a7fc80e0",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
}
},
"artifact": {
"size": 22,
"sha1": "b04f3ee8f5e43fa3b162981b50bb72fe1acabb33",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
}
}
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"artifact": {
"size": 1045632,
"sha1": "7707204c9ffa5d91662de95f0a224e2f721b22af",
"path": "org/lwjgl/lwjgl/lwjgl/2.9.2-nightly-20140822/lwjgl-2.9.2-nightly-20140822.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl/2.9.2-nightly-20140822/lwjgl-2.9.2-nightly-20140822.jar"
}
}
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"artifact": {
"size": 173887,
"sha1": "f0e612c840a7639c1f77f68d72a28dae2f0c8490",
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar"
}
}
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
],
"downloads": {
"classifiers": {
"natives-linux": {
"size": 578539,
"sha1": "d898a33b5d0a6ef3fed3a4ead506566dce6720a5",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar"
},
"natives-osx": {
"size": 468116,
"sha1": "79f5ce2fea02e77fe47a3c745219167a542121d7",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar"
},
"natives-windows": {
"size": 613680,
"sha1": "78b2a55ce4dc29c6b3ec4df8ca165eba05f9b341",
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar",
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar"
}
}
}
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"downloads": {
"classifiers": {
"natives-linux": {
"size": 10362,
"sha1": "7ff832a6eb9ab6a767f1ade2b548092d0fa64795",
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar",
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar"
},
"natives-osx": {
"size": 12186,
"sha1": "53f9c919f34d2ca9de8c51fc4e1e8282029a9232",
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-osx.jar",
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-osx.jar"
},
"natives-windows": {
"size": 155179,
"sha1": "385ee093e01f587f30ee1c8a2ee7d408fd732e16",
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar",
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar"
}
}
}
}
],
"mainClass": "net.minecraft.client.main.Main",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minimumLauncherVersion": 18,
"releaseTime": "2016-05-10T10:17:16+00:00",
"time": "2016-05-10T14:45:26+00:00",
"type": "release"
}
+218
View File
@@ -0,0 +1,218 @@
{
"id": "1.9",
"time": "2016-02-29T08:50:46-05:00",
"releaseTime": "2016-02-29T08:49:54-05:00",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"libraries": [
{
"name": "oshi-project:oshi-core:1.1"
},
{
"name": "net.java.dev.jna:jna:3.4.0"
},
{
"name": "net.java.dev.jna:platform:3.4.0"
},
{
"name": "com.ibm.icu:icu4j-core-mojang:51.2"
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6"
},
{
"name": "com.paulscode:codecjorbis:20101023"
},
{
"name": "com.paulscode:codecwav:20101023"
},
{
"name": "com.paulscode:libraryjavasound:20101123"
},
{
"name": "com.paulscode:librarylwjglopenal:20100824"
},
{
"name": "com.paulscode:soundsystem:20120107"
},
{
"name": "io.netty:netty-all:4.0.23.Final"
},
{
"name": "com.google.guava:guava:17.0"
},
{
"name": "org.apache.commons:commons-lang3:3.3.2"
},
{
"name": "commons-io:commons-io:2.4"
},
{
"name": "commons-codec:commons-codec:1.9"
},
{
"name": "net.java.jinput:jinput:2.0.5"
},
{
"name": "net.java.jutils:jutils:1.0.0"
},
{
"name": "com.google.code.gson:gson:2.2.4"
},
{
"name": "com.mojang:authlib:1.5.22"
},
{
"name": "com.mojang:realms:1.8.3"
},
{
"name": "org.apache.commons:commons-compress:1.8.1"
},
{
"name": "org.apache.httpcomponents:httpclient:4.3.3"
},
{
"name": "commons-logging:commons-logging:1.1.3"
},
{
"name": "org.apache.httpcomponents:httpcore:4.3.2"
},
{
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9"
},
{
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9"
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
],
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
],
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"extract": {
"exclude": [
"META-INF/"
]
}
}
],
"mainClass": "net.minecraft.client.main.Main",
"minimumLauncherVersion": 18,
"assets": "1.9",
"downloads": {
"client": {
"url": "https://launcher.mojang.com/mc/game/1.9/client/2f67dfe8953299440d1902f9124f0f2c3a2c940f/client.jar",
"sha1": "2f67dfe8953299440d1902f9124f0f2c3a2c940f",
"size": 8697592
},
"server": {
"url": "https://launcher.mojang.com/mc/game/1.9/server/b4d449cf2918e0f3bd8aa18954b916a4d1880f0d/server.jar",
"sha1": "b4d449cf2918e0f3bd8aa18954b916a4d1880f0d",
"size": 8848015
}
},
"assetIndex": {
"totalSize": 119917473,
"id": "1.9",
"known": true,
"url": "https://launchermeta.mojang.com/mc-staging/assets/1.9/cde65b47a43f638653ab1da3848b53f8a7477b16/1.9.json",
"sha1": "cde65b47a43f638653ab1da3848b53f8a7477b16",
"size": 136916
}
}
+1 -1
View File
@@ -9,7 +9,7 @@ buildscript {
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
@@ -14,7 +14,7 @@ public class ExampleMod
@EventHandler
public void init(FMLInitializationEvent event)
{
// some example code
System.out.println("DIRT BLOCK >> "+Blocks.dirt.getUnlocalizedName());
// some example code
System.out.println("DIRT BLOCK >> "+Blocks.DIRT.getUnlocalizedName());
}
}
@@ -1,28 +1,22 @@
--- ../src-base/minecraft/net/minecraft/block/Block.java
+++ ../src-work/minecraft/net/minecraft/block/Block.java
@@ -38,8 +38,9 @@
public class Block
@@ -44,11 +44,12 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-public class Block
+public class Block extends net.minecraftforge.fml.common.registry.IForgeRegistryEntry.Impl<Block>
{
private static final ResourceLocation field_176230_a = new ResourceLocation("air");
- public static final RegistryNamespacedDefaultedByKey<ResourceLocation, Block> field_149771_c = new RegistryNamespacedDefaultedByKey(field_176230_a);
- public static final ObjectIntIdentityMap<IBlockState> field_176229_d = new ObjectIntIdentityMap();
+ public static final RegistryNamespacedDefaultedByKey<ResourceLocation,Block> field_149771_c = net.minecraftforge.fml.common.registry.GameData.getBlockRegistry();
+ public static final RegistryNamespacedDefaultedByKey<ResourceLocation, Block> field_149771_c = net.minecraftforge.fml.common.registry.GameData.getBlockRegistry();
+ @Deprecated //Modders: DO NOT use this! Use GameRegistry
+ public static final ObjectIntIdentityMap<IBlockState> field_176229_d = net.minecraftforge.fml.common.registry.GameData.getBlockStateIDMap();
public static final AxisAlignedBB field_185505_j = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
public static final AxisAlignedBB field_185506_k = null;
private CreativeTabs field_149772_a;
public static final Block.SoundType field_149769_e = new Block.SoundType("stone", 1.0F, 1.0F);
public static final Block.SoundType field_149766_f = new Block.SoundType("wood", 1.0F, 1.0F);
@@ -119,6 +120,9 @@
private IBlockState field_176228_M;
private String field_149770_b;
+ public final net.minecraftforge.fml.common.registry.RegistryDelegate<Block> delegate =
+ ((net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry)field_149771_c).getDelegate(this, Block.class);
+
public static int func_149682_b(Block p_149682_0_)
{
return field_149771_c.func_148757_b(p_149682_0_);
@@ -132,7 +136,8 @@
@@ -84,7 +85,8 @@
public static Block func_149729_e(int p_149729_0_)
{
@@ -32,16 +26,16 @@
}
public static IBlockState func_176220_d(int p_176220_0_)
@@ -303,7 +308,7 @@
@@ -286,7 +288,7 @@
public boolean func_176200_f(World p_176200_1_, BlockPos p_176200_2_)
public boolean func_176200_f(IBlockAccess p_176200_1_, BlockPos p_176200_2_)
{
- return false;
+ return func_149688_o().func_76222_j();
+ return p_176200_1_.func_180495_p(p_176200_2_).func_185904_a().func_76222_j();
}
public Block func_149711_c(float p_149711_1_)
@@ -340,9 +345,10 @@
@@ -324,9 +326,10 @@
return this.field_149789_z;
}
@@ -52,33 +46,33 @@
+ return hasTileEntity(func_176223_P());
}
public final void func_149676_a(float p_149676_1_, float p_149676_2_, float p_149676_3_, float p_149676_4_, float p_149676_5_, float p_149676_6_)
@@ -359,13 +365,13 @@
public int func_176207_c(IBlockAccess p_176207_1_, BlockPos p_176207_2_)
@Deprecated
@@ -370,13 +373,13 @@
@SideOnly(Side.CLIENT)
public int func_185484_c(IBlockState p_185484_1_, IBlockAccess p_185484_2_, BlockPos p_185484_3_)
{
Block block = p_176207_1_.func_180495_p(p_176207_2_).func_177230_c();
- int i = p_176207_1_.func_175626_b(p_176207_2_, block.func_149750_m());
+ int i = p_176207_1_.func_175626_b(p_176207_2_, block.getLightValue(p_176207_1_, p_176207_2_));
- int i = p_185484_2_.func_175626_b(p_185484_3_, p_185484_1_.func_185906_d());
+ int i = p_185484_2_.func_175626_b(p_185484_3_, p_185484_1_.getLightValue(p_185484_2_, p_185484_3_));
if (i == 0 && block instanceof BlockSlab)
if (i == 0 && p_185484_1_.func_177230_c() instanceof BlockSlab)
{
p_176207_2_ = p_176207_2_.func_177977_b();
block = p_176207_1_.func_180495_p(p_176207_2_).func_177230_c();
- return p_176207_1_.func_175626_b(p_176207_2_, block.func_149750_m());
+ return p_176207_1_.func_175626_b(p_176207_2_, block.getLightValue(p_176207_1_, p_176207_2_));
p_185484_3_ = p_185484_3_.func_177977_b();
p_185484_1_ = p_185484_2_.func_180495_p(p_185484_3_);
- return p_185484_2_.func_175626_b(p_185484_3_, p_185484_1_.func_185906_d());
+ return p_185484_2_.func_175626_b(p_185484_3_, p_185484_1_.getLightValue(p_185484_2_, p_185484_3_));
}
else
{
@@ -376,7 +382,7 @@
@SideOnly(Side.CLIENT)
public boolean func_176225_a(IBlockAccess p_176225_1_, BlockPos p_176225_2_, EnumFacing p_176225_3_)
{
- return p_176225_3_ == EnumFacing.DOWN && this.field_149760_C > 0.0D ? true : (p_176225_3_ == EnumFacing.UP && this.field_149756_F < 1.0D ? true : (p_176225_3_ == EnumFacing.NORTH && this.field_149754_D > 0.0D ? true : (p_176225_3_ == EnumFacing.SOUTH && this.field_149757_G < 1.0D ? true : (p_176225_3_ == EnumFacing.WEST && this.field_149759_B > 0.0D ? true : (p_176225_3_ == EnumFacing.EAST && this.field_149755_E < 1.0D ? true : !p_176225_1_.func_180495_p(p_176225_2_).func_177230_c().func_149662_c())))));
+ return p_176225_3_ == EnumFacing.DOWN && this.field_149760_C > 0.0D ? true : (p_176225_3_ == EnumFacing.UP && this.field_149756_F < 1.0D ? true : (p_176225_3_ == EnumFacing.NORTH && this.field_149754_D > 0.0D ? true : (p_176225_3_ == EnumFacing.SOUTH && this.field_149757_G < 1.0D ? true : (p_176225_3_ == EnumFacing.WEST && this.field_149759_B > 0.0D ? true : (p_176225_3_ == EnumFacing.EAST && this.field_149755_E < 1.0D ? true : !p_176225_1_.func_180495_p(p_176225_2_).func_177230_c().doesSideBlockRendering(p_176225_1_, p_176225_2_, p_176225_3_))))));
@@ -440,7 +443,7 @@
}
}
- return !p_176225_2_.func_180495_p(p_176225_3_.func_177972_a(p_176225_4_)).func_185914_p();
+ return !p_176225_2_.func_180495_p(p_176225_3_.func_177972_a(p_176225_4_)).doesSideBlockRendering(p_176225_2_, p_176225_3_.func_177972_a(p_176225_4_), p_176225_4_.func_176734_d());
}
public boolean func_176212_b(IBlockAccess p_176212_1_, BlockPos p_176212_2_, EnumFacing p_176212_3_)
@@ -453,6 +459,10 @@
@Deprecated
@@ -500,6 +503,10 @@
public void func_180663_b(World p_180663_1_, BlockPos p_180663_2_, IBlockState p_180663_3_)
{
@@ -89,17 +83,17 @@
}
public int func_149745_a(Random p_149745_1_)
@@ -467,8 +477,7 @@
public float func_180647_a(EntityPlayer p_180647_1_, World p_180647_2_, BlockPos p_180647_3_)
@@ -516,8 +523,7 @@
@Deprecated
public float func_180647_a(IBlockState p_180647_1_, EntityPlayer p_180647_2_, World p_180647_3_, BlockPos p_180647_4_)
{
- float f = this.func_176195_g(p_180647_2_, p_180647_3_);
- return f < 0.0F ? 0.0F : (!p_180647_1_.func_146099_a(this) ? p_180647_1_.func_180471_a(this) / f / 100.0F : p_180647_1_.func_180471_a(this) / f / 30.0F);
+ return net.minecraftforge.common.ForgeHooks.blockStrength(p_180647_2_.func_180495_p(p_180647_3_), p_180647_1_, p_180647_2_, p_180647_3_);
- float f = p_180647_1_.func_185887_b(p_180647_3_, p_180647_4_);
- return f < 0.0F ? 0.0F : (!p_180647_2_.func_184823_b(p_180647_1_) ? p_180647_2_.func_184813_a(p_180647_1_) / f / 100.0F : p_180647_2_.func_184813_a(p_180647_1_) / f / 30.0F);
+ return net.minecraftforge.common.ForgeHooks.blockStrength(p_180647_1_, p_180647_2_, p_180647_3_, p_180647_4_);
}
public final void func_176226_b(World p_176226_1_, BlockPos p_176226_2_, IBlockState p_176226_3_, int p_176226_4_)
@@ -478,20 +487,16 @@
@@ -527,20 +533,16 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
@@ -125,7 +119,7 @@
}
}
}
@@ -499,8 +504,13 @@
@@ -548,8 +550,13 @@
public static void func_180635_a(World p_180635_0_, BlockPos p_180635_1_, ItemStack p_180635_2_)
{
@@ -140,7 +134,7 @@
float f = 0.5F;
double d0 = (double)(p_180635_0_.field_73012_v.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
double d1 = (double)(p_180635_0_.field_73012_v.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
@@ -687,7 +697,7 @@
@@ -621,7 +628,7 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
@@ -148,15 +142,15 @@
+ return p_176196_1_.func_180495_p(p_176196_2_).func_177230_c().func_176200_f(p_176196_1_, p_176196_2_);
}
public boolean func_180639_a(World p_180639_1_, BlockPos p_180639_2_, IBlockState p_180639_3_, EntityPlayer p_180639_4_, EnumFacing p_180639_5_, float p_180639_6_, float p_180639_7_, float p_180639_8_)
@@ -799,25 +809,35 @@
p_180657_2_.func_71029_a(StatList.field_75934_C[func_149682_b(this)]);
public boolean func_180639_a(World p_180639_1_, BlockPos p_180639_2_, IBlockState p_180639_3_, EntityPlayer p_180639_4_, EnumHand p_180639_5_, @Nullable ItemStack p_180639_6_, EnumFacing p_180639_7_, float p_180639_8_, float p_180639_9_, float p_180639_10_)
@@ -674,25 +681,35 @@
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
p_180657_2_.func_71020_j(0.025F);
- if (this.func_149700_E() && EnchantmentHelper.func_77502_d(p_180657_2_))
+ if (this.canSilkHarvest(p_180657_1_, p_180657_3_, p_180657_1_.func_180495_p(p_180657_3_), p_180657_2_) && EnchantmentHelper.func_77502_d(p_180657_2_))
- if (this.func_149700_E() && EnchantmentHelper.func_77506_a(Enchantments.field_185306_r, p_180657_6_) > 0)
+ if (this.canSilkHarvest(p_180657_1_, p_180657_3_, p_180657_4_, p_180657_2_) && EnchantmentHelper.func_77506_a(Enchantments.field_185306_r, p_180657_6_) > 0)
{
+ java.util.ArrayList<ItemStack> items = new java.util.ArrayList<ItemStack>();
+ java.util.List<ItemStack> items = new java.util.ArrayList<ItemStack>();
ItemStack itemstack = this.func_180643_i(p_180657_4_);
if (itemstack != null)
@@ -165,16 +159,16 @@
+ items.add(itemstack);
}
+
+ net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(items, p_180657_1_, p_180657_3_, p_180657_1_.func_180495_p(p_180657_3_), 0, 1.0f, true, p_180657_2_);
+ for (ItemStack stack : items)
+ net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(items, p_180657_1_, p_180657_3_, p_180657_4_, 0, 1.0f, true, p_180657_2_);
+ for (ItemStack item : items)
+ {
+ func_180635_a(p_180657_1_, p_180657_3_, stack);
+ func_180635_a(p_180657_1_, p_180657_3_, item);
+ }
}
else
{
+ harvesters.set(p_180657_2_);
int i = EnchantmentHelper.func_77517_e(p_180657_2_);
int i = EnchantmentHelper.func_77506_a(Enchantments.field_185308_t, p_180657_6_);
this.func_176226_b(p_180657_1_, p_180657_3_, p_180657_4_, i);
+ harvesters.set(null);
}
@@ -183,12 +177,25 @@
+ @Deprecated //Forge: State sensitive version
protected boolean func_149700_E()
{
- return this.func_149686_d() && !this.field_149758_A;
+ return this.func_149686_d() && !this.hasTileEntity(silk_check_state.get());
- return this.func_176223_P().func_185917_h() && !this.field_149758_A;
+ return this.func_176223_P().func_185917_h() && !this.hasTileEntity(silk_check_state.get());
}
protected ItemStack func_180643_i(IBlockState p_180643_1_)
@@ -1010,6 +1030,1147 @@
@Nullable
@@ -788,9 +805,11 @@
}
@Nullable
+ @Deprecated // Forge: Use more sensitive version below: getPickBlock
public ItemStack func_185473_a(World p_185473_1_, BlockPos p_185473_2_, IBlockState p_185473_3_)
{
- return new ItemStack(Item.func_150898_a(this), 1, this.func_180651_a(p_185473_3_));
+ Item item = Item.func_150898_a(this);
+ return item == null ? null : new ItemStack(item, 1, this.func_180651_a(p_185473_3_));
}
@SideOnly(Side.CLIENT)
@@ -887,6 +906,1141 @@
return "Block{" + field_149771_c.func_177774_c(this) + "}";
}
@@ -200,42 +207,45 @@
+ /**
+ * Get a light value for the block at the specified coordinates, normal ranges are between 0 and 15
+ *
+ * @param state Block state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return The light value
+ */
+ public int getLightValue(IBlockAccess world, BlockPos pos)
+ public int getLightValue(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ Block block = world.func_180495_p(pos).func_177230_c();
+ if (block != this)
+ IBlockState other = world.func_180495_p(pos);
+ if (other.func_177230_c() != this)
+ {
+ return block.getLightValue(world, pos);
+ return other.getLightValue(world, pos);
+ }
+ return func_149750_m();
+ return state.func_185906_d();
+ }
+
+ /**
+ * Checks if a player or entity can use this block to 'climb' like a ladder.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param entity The entity trying to use the ladder, CAN be null.
+ * @return True if the block should act like a ladder
+ */
+ public boolean isLadder(IBlockAccess world, BlockPos pos, EntityLivingBase entity) { return false; }
+ public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity) { return false; }
+
+ /**
+ * Return true if the block is a normal, solid cube. This
+ * determines indirect power state, entity ejection from blocks, and a few
+ * others.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return True if the block is a full cube
+ */
+ public boolean isNormalCube(IBlockAccess world, BlockPos pos)
+ public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return func_149688_o().func_76218_k() && func_149686_d() && !func_149744_f();
+ return state.func_185904_a().func_76218_k() && state.func_185917_h() && !state.func_185897_m();
+ }
+
+ /**
@@ -244,31 +254,35 @@
+ * Faces which are fully opaque should return true, faces with transparency
+ * or faces which do not span the full size of the block should return false.
+ *
+ * @param state The current block state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param side The side to check
+ * @param face The side to check
+ * @return True if the block is opaque on the specified side.
+ */
+ public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing face)
+ public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face)
+ {
+ return func_149662_c();
+ return state.func_185914_p();
+ }
+
+ /**
+ * Checks if the block is a solid face on the given side, used by placement logic.
+ *
+ * @param base_state The base state, getActualState should be called first
+ * @param world The current world
+ * @param pos Block position in world
+ * @param side The side to check
+ * @return True if the block is solid on the specified side.
+ */
+ public boolean isSideSolid(IBlockAccess world, BlockPos pos, EnumFacing side)
+ public boolean isSideSolid(IBlockState base_state, IBlockAccess world, BlockPos pos, EnumFacing side)
+ {
+ IBlockState state = this.func_176221_a(world.func_180495_p(pos), world, pos);
+ if (base_state.func_185896_q() && side == EnumFacing.UP) // Short circuit to vanilla function if its true
+ return true;
+
+ if (this instanceof BlockSlab)
+ {
+ return func_149730_j()
+ IBlockState state = this.func_176221_a(base_state, world, pos);
+ return base_state.func_185913_b()
+ || (state.func_177229_b(BlockSlab.field_176554_a) == BlockSlab.EnumBlockHalf.TOP && side == EnumFacing.UP )
+ || (state.func_177229_b(BlockSlab.field_176554_a) == BlockSlab.EnumBlockHalf.BOTTOM && side == EnumFacing.DOWN);
+ }
@@ -278,6 +292,7 @@
+ }
+ else if (this instanceof BlockStairs)
+ {
+ IBlockState state = this.func_176221_a(base_state, world, pos);
+ boolean flipped = state.func_177229_b(BlockStairs.field_176308_b) == BlockStairs.EnumHalf.TOP;
+ BlockStairs.EnumShape shape = (BlockStairs.EnumShape)state.func_177229_b(BlockStairs.field_176310_M);
+ EnumFacing facing = (EnumFacing)state.func_177229_b(BlockStairs.field_176309_a);
@@ -298,6 +313,7 @@
+ }
+ else if (this instanceof BlockSnow)
+ {
+ IBlockState state = this.func_176221_a(base_state, world, pos);
+ return ((Integer)state.func_177229_b(BlockSnow.field_176315_a)) >= 8;
+ }
+ else if (this instanceof BlockHopper && side == EnumFacing.UP)
@@ -308,7 +324,7 @@
+ {
+ return true;
+ }
+ return isNormalCube(world, pos);
+ return isNormalCube(base_state, world, pos);
+ }
+
+ /**
@@ -330,13 +346,14 @@
+ * useful for creating pure logic-blocks that will be invisible
+ * to the player and otherwise interact as air would.
+ *
+ * @param sata The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return True if the block considered air
+ */
+ public boolean isAir(IBlockAccess world, BlockPos pos)
+ public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return func_149688_o() == Material.field_151579_a;
+ return state.func_185904_a() == Material.field_151579_a;
+ }
+
+ /**
@@ -362,6 +379,7 @@
+ * Note: When used in multiplayer, this is called on both client and
+ * server sides!
+ *
+ * @param state The current state.
+ * @param world The current world
+ * @param player The player damaging the block, may be null
+ * @param pos Block position in world
@@ -369,9 +387,10 @@
+ * Can be useful to delay the destruction of tile entities till after harvestBlock
+ * @return True if the block is actually destroyed.
+ */
+ public boolean removedByPlayer(World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ {
+ return world.func_175698_g(pos);
+ this.func_176208_a(world, pos, state, player);
+ return world.func_180501_a(pos, net.minecraft.init.Blocks.field_150350_a.func_176223_P(), world.field_72995_K ? 11 : 3);
+ }
+
+ /**
@@ -535,23 +554,15 @@
+ * Determines if a specified mob type can spawn on this block, returning false will
+ * prevent any mob from spawning on the block.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param type The Mob Category Type
+ * @return True to allow a mob of the specified category to spawn, false to prevent it.
+ */
+ public boolean canCreatureSpawn(IBlockAccess world, BlockPos pos, net.minecraft.entity.EntityLiving.SpawnPlacementType type)
+ public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, net.minecraft.entity.EntityLiving.SpawnPlacementType type)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ if (this instanceof BlockSlab)
+ {
+ return (func_149730_j() || state.func_177229_b(BlockSlab.field_176554_a) == BlockSlab.EnumBlockHalf.TOP);
+ }
+ else if (this instanceof BlockStairs)
+ {
+ return state.func_177229_b(BlockStairs.field_176308_b) == BlockStairs.EnumHalf.TOP;
+ }
+ return isSideSolid(world, pos, EnumFacing.UP);
+ return isSideSolid(state, world, pos, EnumFacing.UP);
+ }
+
+ /**
@@ -559,12 +570,13 @@
+ * players to sleep in it, though the block has to specifically
+ * perform the sleeping functionality in it's activated event.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param player The player or camera entity, null in some cases.
+ * @return True to treat this as a bed
+ */
+ public boolean isBed(IBlockAccess world, BlockPos pos, Entity player)
+ public boolean isBed(IBlockState state, IBlockAccess world, BlockPos pos, Entity player)
+ {
+ return this == net.minecraft.init.Blocks.field_150324_C;
+ }
@@ -573,12 +585,13 @@
+ * Returns the position that the player is moved to upon
+ * waking up, or respawning at the bed.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param player The player or camera entity, null in some cases.
+ * @return The spawn position
+ */
+ public BlockPos getBedSpawnPosition(IBlockAccess world, BlockPos pos, EntityPlayer player)
+ public BlockPos getBedSpawnPosition(IBlockState state, IBlockAccess world, BlockPos pos, EntityPlayer player)
+ {
+ if (world instanceof World)
+ return BlockBed.func_176468_a((World)world, pos, 0);
@@ -608,13 +621,14 @@
+ * Returns the direction of the block. Same values that
+ * are returned by BlockDirectional
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return Bed direction
+ */
+ public EnumFacing getBedDirection(IBlockAccess world, BlockPos pos)
+ public EnumFacing getBedDirection(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return (EnumFacing)func_176221_a(world.func_180495_p(pos), world, pos).func_177229_b(BlockDirectional.field_176387_N);
+ return (EnumFacing)func_176221_a(state, world, pos).func_177229_b(BlockHorizontal.field_185512_D);
+ }
+
+ /**
@@ -632,19 +646,20 @@
+ /**
+ * Called when a leaf should start its decay process.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ */
+ public void beginLeavesDecay(World world, BlockPos pos){}
+ public void beginLeavesDecay(IBlockState state, World world, BlockPos pos){}
+
+ /**
+ * Determines if this block can prevent leaves connected to it from decaying.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return true if the presence this block can prevent leaves from decaying.
+ */
+ public boolean canSustainLeaves(IBlockAccess world, BlockPos pos)
+ public boolean canSustainLeaves(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return false;
+ }
@@ -652,25 +667,27 @@
+ /**
+ * Determines if this block is considered a leaf block, used to apply the leaf decay and generation system.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return true if this block is considered leaves.
+ */
+ public boolean isLeaves(IBlockAccess world, BlockPos pos)
+ public boolean isLeaves(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return func_149688_o() == Material.field_151584_j;
+ return state.func_185904_a() == Material.field_151584_j;
+ }
+
+ /**
+ * Used during tree growth to determine if newly generated leaves can replace this block.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return true if this block can be replaced by growing leaves.
+ */
+ public boolean canBeReplacedByLeaves(IBlockAccess world, BlockPos pos)
+ public boolean canBeReplacedByLeaves(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return !func_149730_j();
+ return !state.func_185913_b();
+ }
+
+ /**
@@ -687,15 +704,16 @@
+ /**
+ * Determines if the current block is replaceable by Ore veins during world generation.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param target The generic target block the gen is looking for, Standards define stone
+ * for overworld generation, and neatherack for the nether.
+ * @return True to allow this block to be replaced by a ore
+ */
+ public boolean isReplaceableOreGen(World world, BlockPos pos, com.google.common.base.Predicate<IBlockState> target)
+ public boolean isReplaceableOreGen(IBlockState state, IBlockAccess world, BlockPos pos, com.google.common.base.Predicate<IBlockState> target)
+ {
+ return target.apply(world.func_180495_p(pos));
+ return target.apply(state);
+ }
+
+ /**
@@ -731,27 +749,29 @@
+ * Determine if this block can make a redstone connection on the side provided,
+ * Useful to control which sides are inputs and outputs for redstone wires.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param side The side that is trying to make the connection, CAN BE NULL
+ * @return True to make the connection
+ */
+ public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, EnumFacing side)
+ public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side)
+ {
+ return func_149744_f() && side != null;
+ return state.func_185897_m() && side != null;
+ }
+
+ /**
+ * Determines if a torch can be placed on the top surface of this block.
+ * Useful for creating your own block that torches can be on, such as fences.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return True to allow the torch to be placed
+ */
+ public boolean canPlaceTorchOnTop(IBlockAccess world, BlockPos pos)
+ public boolean canPlaceTorchOnTop(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ if (isSideSolid(world, pos, EnumFacing.UP))
+ if (state.isSideSolid(world, pos, EnumFacing.UP))
+ {
+ return true;
+ }
@@ -780,22 +800,9 @@
+ * @param target The full target the player is looking at
+ * @return A ItemStack to add to the player's inventory, Null if nothing should be added.
+ */
+ public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player)
+ public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player)
+ {
+ return getPickBlock(target, world, pos);
+ }
+ @Deprecated
+ public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos)
+ {
+ Item item = func_180665_b(world, pos);
+
+ if (item == null)
+ {
+ return null;
+ }
+
+ Block block = item instanceof ItemBlock && !func_149648_K() ? Block.func_149634_a(item) : this;
+ return new ItemStack(item, 1, block.func_176222_j(world, pos));
+ return func_185473_a(world, pos, state);
+ }
+
+ /**
@@ -821,7 +828,7 @@
+ * @param numberOfParticles that vanilla would have spawned.
+ * @return True to prevent vanilla landing particles form spawning.
+ */
+ public boolean addLandingEffects(net.minecraft.world.WorldServer worldObj, BlockPos blockPosition, IBlockState iblockstate, EntityLivingBase entity, int numberOfParticles )
+ public boolean addLandingEffects(IBlockState state, net.minecraft.world.WorldServer worldObj, BlockPos blockPosition, IBlockState iblockstate, EntityLivingBase entity, int numberOfParticles )
+ {
+ return false;
+ }
@@ -832,13 +839,14 @@
+ * control over the particles. Useful when you have entirely different
+ * texture sheets for different sides/locations in the world.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param target The target the player is looking at {x/y/z/side/sub}
+ * @param effectRenderer A reference to the current effect renderer.
+ * @param manager A reference to the current particle manager.
+ * @return True to prevent vanilla digging particles form spawning.
+ */
+ @SideOnly(Side.CLIENT)
+ public boolean addHitEffects(World worldObj, MovingObjectPosition target, net.minecraft.client.particle.EffectRenderer effectRenderer)
+ public boolean addHitEffects(IBlockState state, World worldObj, RayTraceResult target, net.minecraft.client.particle.ParticleManager manager)
+ {
+ return false;
+ }
@@ -851,11 +859,11 @@
+ *
+ * @param world The current world
+ * @param pos Position to spawn the particle
+ * @param effectRenderer A reference to the current effect renderer.
+ * @param manager A reference to the current particle manager.
+ * @return True to prevent vanilla break particles from spawning.
+ */
+ @SideOnly(Side.CLIENT)
+ public boolean addDestroyEffects(World world, BlockPos pos, net.minecraft.client.particle.EffectRenderer effectRenderer)
+ public boolean addDestroyEffects(World world, BlockPos pos, net.minecraft.client.particle.ParticleManager manager)
+ {
+ return false;
+ }
@@ -871,15 +879,15 @@
+ * Plains check if its grass or dirt
+ * Water check if its still water
+ *
+ * @param state The Current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @param direction The direction relative to the given position the plant wants to be, typically its UP
+ * @param plantable The plant that wants to check
+ * @return True to allow the plant to be planted/stay.
+ */
+ public boolean canSustainPlant(IBlockAccess world, BlockPos pos, EnumFacing direction, net.minecraftforge.common.IPlantable plantable)
+ public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, net.minecraftforge.common.IPlantable plantable)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ IBlockState plant = plantable.getPlant(world, pos.func_177972_a(direction));
+ net.minecraftforge.common.EnumPlantType plantType = plantable.getPlantType(world, pos.func_177972_a(direction));
+
@@ -893,7 +901,7 @@
+ return true;
+ }
+
+ if (plantable instanceof BlockBush && ((BlockBush)plantable).func_149854_a(this))
+ if (plantable instanceof BlockBush && ((BlockBush)plantable).func_185514_i(state))
+ {
+ return true;
+ }
@@ -903,15 +911,15 @@
+ case Desert: return this == net.minecraft.init.Blocks.field_150354_m || this == net.minecraft.init.Blocks.field_150405_ch || this == net.minecraft.init.Blocks.field_150406_ce || this == net.minecraft.init.Blocks.field_150346_d;
+ case Nether: return this == net.minecraft.init.Blocks.field_150425_aM;
+ case Crop: return this == net.minecraft.init.Blocks.field_150458_ak;
+ case Cave: return isSideSolid(world, pos, EnumFacing.UP);
+ case Cave: return state.isSideSolid(world, pos, EnumFacing.UP);
+ case Plains: return this == net.minecraft.init.Blocks.field_150349_c || this == net.minecraft.init.Blocks.field_150346_d || this == net.minecraft.init.Blocks.field_150458_ak;
+ case Water: return func_149688_o() == Material.field_151586_h && ((Integer)state.func_177229_b(BlockLiquid.field_176367_b)) == 0;
+ case Water: return state.func_185904_a() == Material.field_151586_h && state.func_177229_b(BlockLiquid.field_176367_b) == 0;
+ case Beach:
+ boolean isBeach = this == net.minecraft.init.Blocks.field_150349_c || this == net.minecraft.init.Blocks.field_150346_d || this == net.minecraft.init.Blocks.field_150354_m;
+ boolean hasWater = (world.func_180495_p(pos.func_177974_f()).func_177230_c().func_149688_o() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177976_e()).func_177230_c().func_149688_o() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177978_c()).func_177230_c().func_149688_o() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177968_d()).func_177230_c().func_149688_o() == Material.field_151586_h);
+ boolean hasWater = (world.func_180495_p(pos.func_177974_f()).func_185904_a() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177976_e()).func_185904_a() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177978_c()).func_185904_a() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177968_d()).func_185904_a() == Material.field_151586_h);
+ return isBeach && hasWater;
+ }
+
@@ -927,11 +935,12 @@
+ *
+ * Note: This happens DURING the generation, the generation may not be complete when this is called.
+ *
+ * @param state The current state
+ * @param world Current world
+ * @param pos Block position in world
+ * @param source Source plant's position in world
+ */
+ public void onPlantGrow(World world, BlockPos pos, BlockPos source)
+ public void onPlantGrow(IBlockState state, World world, BlockPos pos, BlockPos source)
+ {
+ if (this == net.minecraft.init.Blocks.field_150349_c || this == net.minecraft.init.Blocks.field_150458_ak)
+ {
@@ -966,27 +975,43 @@
+ * Recommended that you have your tile entity call relight after being placed if you
+ * rely on it for light info.
+ *
+ * @param state The Block state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return The amount of light to block, 0 for air, 255 for fully opaque.
+ */
+ public int getLightOpacity(IBlockAccess world, BlockPos pos)
+ public int getLightOpacity(IBlockState state, IBlockAccess world, BlockPos pos)
+ {
+ return func_149717_k();
+ return state.func_185891_c();
+ }
+
+ /**
+ * Determines if this block is can be destroyed by the specified entities normal behavior.
+ *
+ * @param state The current state
+ * @param world The current world
+ * @param pos Block position in world
+ * @return True to allow the ender dragon to destroy this block
+ */
+ public boolean canEntityDestroy(IBlockAccess world, BlockPos pos, Entity entity)
+ public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity)
+ {
+ if (entity instanceof net.minecraft.entity.boss.EntityDragon)
+ {
+ return this != net.minecraft.init.Blocks.field_180401_cv && this != net.minecraft.init.Blocks.field_150343_Z && this != net.minecraft.init.Blocks.field_150377_bs && this != net.minecraft.init.Blocks.field_150357_h && this != net.minecraft.init.Blocks.field_150483_bI;
+ return this != net.minecraft.init.Blocks.field_180401_cv &&
+ this != net.minecraft.init.Blocks.field_150343_Z &&
+ this != net.minecraft.init.Blocks.field_150377_bs &&
+ this != net.minecraft.init.Blocks.field_150357_h &&
+ this != net.minecraft.init.Blocks.field_150384_bq &&
+ this != net.minecraft.init.Blocks.field_150378_br &&
+ this != net.minecraft.init.Blocks.field_150483_bI &&
+ this != net.minecraft.init.Blocks.field_185776_dc &&
+ this != net.minecraft.init.Blocks.field_185777_dd &&
+ this != net.minecraft.init.Blocks.field_150411_aY &&
+ this != net.minecraft.init.Blocks.field_185775_db;
+ }
+ else if (entity instanceof net.minecraft.entity.boss.EntityWither)
+ {
+ return net.minecraft.entity.boss.EntityWither.func_181033_a(this);
+ }
+
+ return true;
@@ -1019,7 +1044,7 @@
+ public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty<?> prop : state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("facing") || prop.func_177701_a().equals("rotation"))
+ {
@@ -1040,10 +1065,11 @@
+ public EnumFacing[] getValidRotations(World world, BlockPos pos)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty<?> prop : state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("facing") && prop.func_177699_b() == EnumFacing.class)
+ {
+ @SuppressWarnings("unchecked")
+ java.util.Collection<EnumFacing> values = ((java.util.Collection<EnumFacing>)prop.func_177700_c());
+ return values.toArray(new EnumFacing[values.size()]);
+ }
@@ -1070,10 +1096,11 @@
+ * @param color The color to change to
+ * @return If the recoloring was successful
+ */
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public boolean recolorBlock(World world, BlockPos pos, EnumFacing side, net.minecraft.item.EnumDyeColor color)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty prop : state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("color") && prop.func_177699_b() == net.minecraft.item.EnumDyeColor.class)
+ {
@@ -1091,12 +1118,13 @@
+ /**
+ * Gathers how much experience this block drops when broken.
+ *
+ * @param state The current state
+ * @param world The world
+ * @param pos Block position
+ * @param fortune
+ * @return Amount of XP from breaking this block.
+ */
+ public int getExpDrop(IBlockAccess world, BlockPos pos, int fortune)
+ public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune)
+ {
+ return 0;
+ }
@@ -1116,9 +1144,9 @@
+ * @param side The INPUT side of the block to be powered - ie the opposite of this block's output side
+ * @return Whether Block#isProvidingWeakPower should be called when determining indirect power
+ */
+ public boolean shouldCheckWeakPower(IBlockAccess world, BlockPos pos, EnumFacing side)
+ public boolean shouldCheckWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side)
+ {
+ return func_149721_r();
+ return state.func_185915_l();
+ }
+
+ /**
@@ -1220,7 +1248,7 @@
+ /**
+ * Called when the entity is inside this block, may be used to determined if the entity can breathing,
+ * display material overlays, or if the entity can swim inside a block.
+ *
+ *
+ * @param world that is being tested.
+ * @param blockpos position thats being tested.
+ * @param iblockstate state at world/blockpos
@@ -1230,15 +1258,15 @@
+ * @param testingHead when true, its testing the entities head for vision, breathing ect... otherwise its testing the body, for swimming and movement adjustment.
+ * @return null for default behavior, true if the entity is within the material, false if it was not.
+ */
+ public Boolean isEntityInsideMaterial(World world, BlockPos blockpos, IBlockState iblockstate, Entity entity, double yToTest, Material materialIn, boolean testingHead)
+ public Boolean isEntityInsideMaterial(IBlockAccess world, BlockPos blockpos, IBlockState iblockstate, Entity entity, double yToTest, Material materialIn, boolean testingHead)
+ {
+ return null;
+ }
+
+
+ /**
+ * Called when boats or fishing hooks are inside the block to check if they are inside
+ * the material requested.
+ *
+ *
+ * @param world world that is being tested.
+ * @param pos block thats being tested.
+ * @param boundingBox box to test, generally the bounds of an entity that are besting tested.
@@ -1252,13 +1280,24 @@
+
+ /**
+ * Queries if this block should render in a given layer.
+ * ISmartBlockModel can use MinecraftForgeClient.getRenderLayer to alter their model based on layer
+ * ISmartBlockModel can use {@link MinecraftForgeClient#getRenderLayer()} to alter their model based on layer.
+ *
+ * @deprecated New method with state sensitivity: {@link #canRenderInLayer(IBlockState, BlockRenderLayer)}
+ */
+ public boolean canRenderInLayer(EnumWorldBlockLayer layer)
+ @Deprecated
+ public boolean canRenderInLayer(BlockRenderLayer layer)
+ {
+ return func_180664_k() == layer;
+ }
+
+ /**
+ * Queries if this block should render in a given layer.
+ * ISmartBlockModel can use {@link MinecraftForgeClient#getRenderLayer()} to alter their model based on layer.
+ */
+ public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer)
+ {
+ return canRenderInLayer(layer);
+ }
+ // For Internal use only to capture droped items inside getDrops
+ protected static ThreadLocal<Boolean> captureDrops = new ThreadLocal<Boolean>()
+ {
@@ -1283,53 +1322,15 @@
+ }
+ }
+
+ private ResourceLocation registryName = null;
+ /**
+ * Sets a unique name for this Block. This should be used for uniquely identify the instance of the Block.
+ * This is the valid replacement for the atrocious 'getUnlocalizedName().substring(6)' stuff that everyone does.
+ * Unlocalized names have NOTHING to do with unique identifiers. As demonstrated by vanilla blocks and items.
+ *
+ * The supplied name will be prefixed with the currently active mod's modId.
+ * If the supplied name already has a prefix that is different, it will be used and a warning will be logged.
+ *
+ * If a name already exists, or this Block is already registered in a registry, then an IllegalStateException is thrown.
+ *
+ * Returns 'this' to allow for chaining.
+ *
+ * @param name Unique registry name
+ * @return This instance
+ * Add information to the blocks tooltip, called from the default implementation of {@link ItemBlock#addInformation(ItemStack, EntityPlayer, List, boolean)}
+ * @param stack The stack the tooltip is being retrieved for
+ * @param player The player retrieving the tooltip
+ * @param tooltip The lines to be displayed on the tooltip
+ * @param advanced If the client has advanced debug tooltips enabled
+ */
+ public final Block setRegistryName(String name)
+ public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
+ {
+ if (getRegistryName() != null)
+ throw new IllegalStateException("Attempted to set registry name on block with exisiting registry name! New: " + name + " Old: " + getRegistryName());
+ int index = name.lastIndexOf(':');
+ String oldPrefix = index == -1 ? "" : name.substring(0, index);
+ name = index == -1 ? name : name.substring(index + 1);
+ net.minecraftforge.fml.common.ModContainer mc = net.minecraftforge.fml.common.Loader.instance().activeModContainer();
+ String prefix = mc == null ? "minecraft" : mc.getModId();
+ if (!oldPrefix.equals(prefix) && oldPrefix.length() > 0)
+ {
+ net.minecraftforge.fml.common.FMLLog.bigWarning("Dangerous alternative prefix %s for name %s, invalid registry invocation/invalid name?", oldPrefix, name);
+ prefix = oldPrefix;
+ }
+ this.registryName = new ResourceLocation(prefix, name);
+ return this;
+ }
+ public final Block setRegistryName(ResourceLocation name){ return setRegistryName(name.toString()); }
+ public final Block setRegistryName(String modID, String name){ return setRegistryName(modID + ":" + name); }
+
+ /**
+ * A unique identifier for this block, if this block is registered in the game registry it will return that name.
+ * Otherwise it will return the name set in setRegistryName().
+ * If neither are valid null is returned.
+ *
+ * @return Unique identifier or null.
+ */
+ public final String getRegistryName()
+ {
+ if (delegate.getResourceName() != null) return delegate.getResourceName().toString();
+ return registryName != null ? registryName.toString() : null;
+ }
+ /* ========================================= FORGE END ======================================*/
+
@@ -1,21 +1,13 @@
--- ../src-base/minecraft/net/minecraft/block/BlockBanner.java
+++ ../src-work/minecraft/net/minecraft/block/BlockBanner.java
@@ -85,22 +85,7 @@
@@ -107,14 +107,7 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
- TileEntity tileentity = p_180653_1_.func_175625_s(p_180653_2_);
- ItemStack itemstack = this.func_185549_e(p_180653_1_, p_180653_2_, p_180653_3_);
-
- if (tileentity instanceof TileEntityBanner)
- if (itemstack != null)
{
- ItemStack itemstack = new ItemStack(Items.field_179564_cE, 1, ((TileEntityBanner)tileentity).func_175115_b());
- NBTTagCompound nbttagcompound = new NBTTagCompound();
- tileentity.func_145841_b(nbttagcompound);
- nbttagcompound.func_82580_o("x");
- nbttagcompound.func_82580_o("y");
- nbttagcompound.func_82580_o("z");
- nbttagcompound.func_82580_o("id");
- itemstack.func_77983_a("BlockEntityTag", nbttagcompound);
- func_180635_a(p_180653_1_, p_180653_2_, itemstack);
- }
- else
@@ -23,7 +15,7 @@
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
}
}
@@ -133,6 +118,28 @@
@@ -141,6 +134,28 @@
}
}
@@ -51,4 +43,4 @@
+
public static class BlockBannerHanging extends BlockBanner
{
public BlockBannerHanging()
protected static final AxisAlignedBB field_185551_d = new AxisAlignedBB(0.0D, 0.0D, 0.875D, 1.0D, 0.78125D, 1.0D);
@@ -1,40 +1,40 @@
--- ../src-base/minecraft/net/minecraft/block/BlockBush.java
+++ ../src-work/minecraft/net/minecraft/block/BlockBush.java
@@ -13,7 +13,7 @@
@@ -15,7 +15,7 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-public class BlockBush extends Block
+public class BlockBush extends Block implements net.minecraftforge.common.IPlantable
{
protected BlockBush()
{
@@ -36,7 +36,7 @@
protected static final AxisAlignedBB field_185515_b = new AxisAlignedBB(0.30000001192092896D, 0.0D, 0.30000001192092896D, 0.699999988079071D, 0.6000000238418579D, 0.699999988079071D);
@@ -38,7 +38,8 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
- return super.func_176196_c(p_176196_1_, p_176196_2_) && this.func_149854_a(p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_177230_c());
+ return super.func_176196_c(p_176196_1_, p_176196_2_) && p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_177230_c().canSustainPlant(p_176196_1_, p_176196_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this);
- return super.func_176196_c(p_176196_1_, p_176196_2_) && this.func_185514_i(p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()));
+ IBlockState soil = p_176196_1_.func_180495_p(p_176196_2_.func_177977_b());
+ return super.func_176196_c(p_176196_1_, p_176196_2_) && soil.func_177230_c().canSustainPlant(soil, p_176196_1_, p_176196_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this);
}
protected boolean func_149854_a(Block p_149854_1_)
@@ -66,7 +66,10 @@
protected boolean func_185514_i(IBlockState p_185514_1_)
@@ -68,6 +69,11 @@
public boolean func_180671_f(World p_180671_1_, BlockPos p_180671_2_, IBlockState p_180671_3_)
{
- return this.func_149854_a(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c());
+ BlockPos down = p_180671_2_.func_177977_b();
+ Block soil = p_180671_1_.func_180495_p(down).func_177230_c();
+ if (p_180671_3_.func_177230_c() != this) return this.func_149854_a(soil); //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check.
+ return soil.canSustainPlant(p_180671_1_, down, net.minecraft.util.EnumFacing.UP, this);
+ if (p_180671_3_.func_177230_c() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check.
+ {
+ IBlockState soil = p_180671_1_.func_180495_p(p_180671_2_.func_177977_b());
+ return soil.func_177230_c().canSustainPlant(soil, p_180671_1_, p_180671_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this);
+ }
return this.func_185514_i(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()));
}
public AxisAlignedBB func_180640_a(World p_180640_1_, BlockPos p_180640_2_, IBlockState p_180640_3_)
@@ -89,4 +92,33 @@
{
return EnumWorldBlockLayer.CUTOUT;
@@ -92,6 +98,35 @@
return false;
}
+
+ @Override
+ public net.minecraftforge.common.EnumPlantType getPlantType(net.minecraft.world.IBlockAccess world, BlockPos pos)
+ {
@@ -63,4 +63,7 @@
+ if (state.func_177230_c() != this) return func_176223_P();
+ return state;
+ }
}
+
@SideOnly(Side.CLIENT)
public BlockRenderLayer func_180664_k()
{
@@ -1,12 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockButton.java
+++ ../src-work/minecraft/net/minecraft/block/BlockButton.java
@@ -74,8 +74,7 @@
@@ -91,7 +91,7 @@
protected static boolean func_181088_a(World p_181088_0_, BlockPos p_181088_1_, EnumFacing p_181088_2_)
{
- BlockPos blockpos = p_181088_1_.func_177972_a(p_181088_2_);
- return p_181088_2_ == EnumFacing.DOWN ? World.func_175683_a(p_181088_0_, blockpos) : p_181088_0_.func_180495_p(blockpos).func_177230_c().func_149721_r();
+ return p_181088_2_ == EnumFacing.DOWN && World.func_175683_a(p_181088_0_, p_181088_1_.func_177977_b()) ? true : p_181088_0_.isSideSolid(p_181088_1_.func_177972_a(p_181088_2_), p_181088_2_.func_176734_d());
BlockPos blockpos = p_181088_1_.func_177972_a(p_181088_2_);
- return p_181088_2_ == EnumFacing.DOWN ? p_181088_0_.func_180495_p(blockpos).func_185896_q() : p_181088_0_.func_180495_p(blockpos).func_185915_l();
+ return p_181088_0_.func_180495_p(blockpos).isSideSolid(p_181088_0_, blockpos, p_181088_2_.func_176734_d());
}
public IBlockState func_180642_a(World p_180642_1_, BlockPos p_180642_2_, EnumFacing p_180642_3_, float p_180642_4_, float p_180642_5_, float p_180642_6_, int p_180642_7_, EntityLivingBase p_180642_8_)
@@ -8,21 +8,22 @@
+public class BlockCactus extends Block implements net.minecraftforge.common.IPlantable
{
public static final PropertyInteger field_176587_a = PropertyInteger.func_177719_a("age", 0, 15);
@@ -109,7 +109,7 @@
protected static final AxisAlignedBB field_185593_b = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.9375D, 0.9375D);
@@ -110,8 +110,8 @@
}
}
Block block = p_176586_1_.func_180495_p(p_176586_2_.func_177977_b()).func_177230_c();
- return block == Blocks.field_150434_aF || block == Blocks.field_150354_m;
+ return block.canSustainPlant(p_176586_1_, p_176586_2_.func_177977_b(), EnumFacing.UP, this);
- Block block = p_176586_1_.func_180495_p(p_176586_2_.func_177977_b()).func_177230_c();
- return block == Blocks.field_150434_aF || block == Blocks.field_150354_m && !p_176586_1_.func_180495_p(p_176586_2_.func_177984_a()).func_185904_a().func_76224_d();
+ IBlockState state = p_176586_1_.func_180495_p(p_176586_2_.func_177977_b());
+ return state.func_177230_c().canSustainPlant(state, p_176586_1_, p_176586_2_, EnumFacing.UP, this) && !p_176586_1_.func_180495_p(p_176586_2_.func_177984_a()).func_185904_a().func_76224_d();
}
public void func_180634_a(World p_180634_1_, BlockPos p_180634_2_, IBlockState p_180634_3_, Entity p_180634_4_)
@@ -137,4 +137,16 @@
{
return new BlockState(this, new IProperty[] {field_176587_a});
@@ -135,6 +135,18 @@
return ((Integer)p_176201_1_.func_177229_b(field_176587_a)).intValue();
}
+
+ @Override
+ public net.minecraftforge.common.EnumPlantType getPlantType(net.minecraft.world.IBlockAccess world, BlockPos pos)
+ {
@@ -34,4 +35,7 @@
+ {
+ return func_176223_P();
+ }
}
+
protected BlockStateContainer func_180661_e()
{
return new BlockStateContainer(this, new IProperty[] {field_176587_a});
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockChest.java
+++ ../src-work/minecraft/net/minecraft/block/BlockChest.java
@@ -527,7 +527,7 @@
@@ -514,7 +514,7 @@
private boolean func_176456_n(World p_176456_1_, BlockPos p_176456_2_)
{
- return p_176456_1_.func_180495_p(p_176456_2_.func_177984_a()).func_177230_c().func_149721_r();
+ return p_176456_1_.isSideSolid(p_176456_2_.func_177984_a(), EnumFacing.DOWN, false);
- return p_176456_1_.func_180495_p(p_176456_2_.func_177984_a()).func_185915_l();
+ return p_176456_1_.func_180495_p(p_176456_2_.func_177984_a()).isSideSolid(p_176456_1_, p_176456_2_.func_177984_a(), EnumFacing.DOWN);
}
private boolean func_176453_o(World p_176453_1_, BlockPos p_176453_2_)
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockCocoa.java
+++ ../src-work/minecraft/net/minecraft/block/BlockCocoa.java
@@ -137,7 +137,14 @@
@@ -131,7 +131,14 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
@@ -16,7 +16,7 @@
int j = 1;
if (i >= 2)
@@ -147,8 +154,9 @@
@@ -141,8 +148,9 @@
for (int k = 0; k < j; ++k)
{
@@ -26,4 +26,4 @@
+ return dropped;
}
@SideOnly(Side.CLIENT)
public ItemStack func_185473_a(World p_185473_1_, BlockPos p_185473_2_, IBlockState p_185473_3_)
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockCrops.java
+++ ../src-work/minecraft/net/minecraft/block/BlockCrops.java
@@ -81,11 +81,11 @@
@@ -117,11 +117,11 @@
float f1 = 0.0F;
IBlockState iblockstate = p_180672_1_.func_180495_p(blockpos.func_177982_a(i, 0, j));
- if (iblockstate.func_177230_c() == Blocks.field_150458_ak)
+ if (iblockstate.func_177230_c().canSustainPlant(p_180672_1_, blockpos.func_177982_a(i, 0, j), net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)p_180672_0_))
+ if (iblockstate.func_177230_c().canSustainPlant(iblockstate, p_180672_1_, blockpos.func_177982_a(i, 0, j), net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)p_180672_0_))
{
f1 = 1.0F;
@@ -14,59 +14,34 @@
{
f1 = 3.0F;
}
@@ -126,7 +126,7 @@
@@ -162,7 +162,8 @@
public boolean func_180671_f(World p_180671_1_, BlockPos p_180671_2_, IBlockState p_180671_3_)
{
- return (p_180671_1_.func_175699_k(p_180671_2_) >= 8 || p_180671_1_.func_175678_i(p_180671_2_)) && this.func_149854_a(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c());
+ return (p_180671_1_.func_175699_k(p_180671_2_) >= 8 || p_180671_1_.func_175678_i(p_180671_2_)) && p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c().canSustainPlant(p_180671_1_, p_180671_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this);
- return (p_180671_1_.func_175699_k(p_180671_2_) >= 8 || p_180671_1_.func_175678_i(p_180671_2_)) && this.func_185514_i(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()));
+ IBlockState soil = p_180671_1_.func_180495_p(p_180671_2_.func_177977_b());
+ return (p_180671_1_.func_175699_k(p_180671_2_) >= 8 || p_180671_1_.func_175678_i(p_180671_2_)) && soil.func_177230_c().canSustainPlant(soil, p_180671_1_, p_180671_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this);
}
protected Item func_149866_i()
@@ -142,24 +142,6 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, 0);
-
- if (!p_180653_1_.field_72995_K)
- {
- int i = ((Integer)p_180653_3_.func_177229_b(field_176488_a)).intValue();
-
- if (i >= 7)
- {
- int j = 3 + p_180653_5_;
-
- for (int k = 0; k < j; ++k)
- {
- if (p_180653_1_.field_73012_v.nextInt(15) <= i)
- {
- func_180635_a(p_180653_1_, p_180653_2_, new ItemStack(this.func_149866_i(), 1, 0));
- }
- }
- }
- }
@@ -175,11 +176,33 @@
return Items.field_151015_O;
}
public Item func_180660_a(IBlockState p_180660_1_, Random p_180660_2_, int p_180660_3_)
@@ -202,4 +184,26 @@
{
return new BlockState(this, new IProperty[] {field_176488_a});
}
+
+ @Override
+ public java.util.List<ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
+ {
+ java.util.List<ItemStack> ret = super.getDrops(world, pos, state, fortune);
+ int age = ((Integer)state.func_177229_b(field_176488_a)).intValue();
+ int age = func_185527_x(state);
+ Random rand = world instanceof World ? ((World)world).field_73012_v : new Random();
+
+ if (age >= 7)
+ if (age >= func_185526_g())
+ {
+ int k = 3 + fortune;
+
+ for (int i = 0; i < 3 + fortune; ++i)
+ {
+ if (rand.nextInt(15) <= age)
+ if (rand.nextInt(2 * func_185526_g()) <= age)
+ {
+ ret.add(new ItemStack(this.func_149866_i(), 1, 0));
+ }
@@ -74,4 +49,13 @@
+ }
+ return ret;
+ }
}
+
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, 0);
- if (!p_180653_1_.field_72995_K)
+ if (false && !p_180653_1_.field_72995_K) // Forge: NOP all this.
{
int i = this.func_185527_x(p_180653_3_);
@@ -1,26 +1,25 @@
--- ../src-base/minecraft/net/minecraft/block/BlockDeadBush.java
+++ ../src-work/minecraft/net/minecraft/block/BlockDeadBush.java
@@ -14,7 +14,7 @@
import net.minecraft.util.BlockPos;
@@ -17,7 +17,7 @@
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
-public class BlockDeadBush extends BlockBush
+public class BlockDeadBush extends BlockBush implements net.minecraftforge.common.IShearable
{
protected BlockDeadBush()
{
@@ -45,14 +45,15 @@
protected static final AxisAlignedBB field_185516_a = new AxisAlignedBB(0.09999999403953552D, 0.0D, 0.09999999403953552D, 0.8999999761581421D, 0.800000011920929D, 0.8999999761581421D);
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
@@ -59,7 +59,7 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- if (!p_180657_1_.field_72995_K && p_180657_2_.func_71045_bC() != null && p_180657_2_.func_71045_bC().func_77973_b() == Items.field_151097_aZ)
- if (!p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ)
+ if (false && !p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ) // Forge: Noop
{
- p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150330_I, 1, 0));
- }
- else
- {
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150330_I, 1, 0));
@@ -69,4 +69,11 @@
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_, p_180657_6_);
}
}
+
@@ -28,6 +27,6 @@
+ @Override
+ public java.util.List<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ return new java.util.ArrayList<ItemStack>(java.util.Arrays.asList(new ItemStack(Blocks.field_150330_I)));
+ return java.util.Arrays.asList(new ItemStack(Blocks.field_150330_I));
+ }
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockDoor.java
+++ ../src-work/minecraft/net/minecraft/block/BlockDoor.java
@@ -154,7 +154,7 @@
@@ -108,7 +108,7 @@
{
if (this.field_149764_J == Material.field_151573_f)
{
@@ -9,12 +9,12 @@
}
else
{
@@ -272,7 +272,7 @@
@@ -221,7 +221,7 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
- return p_176196_2_.func_177956_o() >= 255 ? false : World.func_175683_a(p_176196_1_, p_176196_2_.func_177977_b()) && super.func_176196_c(p_176196_1_, p_176196_2_) && super.func_176196_c(p_176196_1_, p_176196_2_.func_177984_a());
+ return p_176196_2_.func_177956_o() >= p_176196_1_.func_72800_K() - 1 ? false : World.func_175683_a(p_176196_1_, p_176196_2_.func_177977_b()) && super.func_176196_c(p_176196_1_, p_176196_2_) && super.func_176196_c(p_176196_1_, p_176196_2_.func_177984_a());
- return p_176196_2_.func_177956_o() >= 255 ? false : p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_185896_q() && super.func_176196_c(p_176196_1_, p_176196_2_) && super.func_176196_c(p_176196_1_, p_176196_2_.func_177984_a());
+ return p_176196_2_.func_177956_o() >= p_176196_1_.func_72800_K() - 1 ? false : p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).isSideSolid(p_176196_1_, p_176196_2_.func_177977_b(), EnumFacing.UP) && super.func_176196_c(p_176196_1_, p_176196_2_) && super.func_176196_c(p_176196_1_, p_176196_2_.func_177984_a());
}
public int func_149656_h()
public EnumPushReaction func_149656_h(IBlockState p_149656_1_)
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockDoublePlant.java
+++ ../src-work/minecraft/net/minecraft/block/BlockDoublePlant.java
@@ -25,7 +25,7 @@
@@ -26,7 +26,7 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -9,7 +9,7 @@
{
public static final PropertyEnum<BlockDoublePlant.EnumPlantType> field_176493_a = PropertyEnum.<BlockDoublePlant.EnumPlantType>func_177709_a("variant", BlockDoublePlant.EnumPlantType.class);
public static final PropertyEnum<BlockDoublePlant.EnumBlockHalf> field_176492_b = PropertyEnum.<BlockDoublePlant.EnumBlockHalf>func_177709_a("half", BlockDoublePlant.EnumBlockHalf.class);
@@ -90,6 +90,8 @@
@@ -89,6 +89,8 @@
Block block = (Block)(flag ? this : p_176475_1_.func_180495_p(blockpos).func_177230_c());
Block block1 = (Block)(flag ? p_176475_1_.func_180495_p(blockpos1).func_177230_c() : this);
@@ -18,7 +18,7 @@
if (block == this)
{
p_176475_1_.func_180501_a(blockpos, Blocks.field_150350_a.func_176223_P(), 2);
@@ -98,17 +100,13 @@
@@ -97,17 +99,13 @@
if (block1 == this)
{
p_176475_1_.func_180501_a(blockpos1, Blocks.field_150350_a.func_176223_P(), 3);
@@ -37,24 +37,24 @@
if (p_180671_3_.func_177229_b(field_176492_b) == BlockDoublePlant.EnumBlockHalf.UPPER)
{
return p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c() == this;
@@ -158,7 +156,6 @@
@@ -151,7 +149,6 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- if (p_180657_1_.field_72995_K || p_180657_2_.func_71045_bC() == null || p_180657_2_.func_71045_bC().func_77973_b() != Items.field_151097_aZ || p_180657_4_.func_177229_b(field_176492_b) != BlockDoublePlant.EnumBlockHalf.LOWER || !this.func_176489_b(p_180657_1_, p_180657_3_, p_180657_4_, p_180657_2_))
- if (p_180657_1_.field_72995_K || p_180657_6_ == null || p_180657_6_.func_77973_b() != Items.field_151097_aZ || p_180657_4_.func_177229_b(field_176492_b) != BlockDoublePlant.EnumBlockHalf.LOWER || !this.func_176489_b(p_180657_1_, p_180657_3_, p_180657_4_, p_180657_2_))
{
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_, p_180657_6_);
}
@@ -221,8 +218,6 @@
@@ -214,8 +211,6 @@
else
{
p_176489_4_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
p_176489_4_.func_71029_a(StatList.func_188055_a(this));
- int i = (blockdoubleplant$enumplanttype == BlockDoublePlant.EnumPlantType.GRASS ? BlockTallGrass.EnumType.GRASS : BlockTallGrass.EnumType.FERN).func_177044_a();
- func_180635_a(p_176489_1_, p_176489_2_, new ItemStack(Blocks.field_150329_H, 2, i));
return true;
}
}
@@ -293,6 +288,32 @@
@@ -286,6 +281,33 @@
return Block.EnumOffsetType.XZ;
}
@@ -65,6 +65,7 @@
+ EnumPlantType type = (EnumPlantType)state.func_177229_b(field_176493_a);
+ return state.func_177229_b(field_176492_b) == EnumBlockHalf.LOWER && (type == EnumPlantType.FERN || type == EnumPlantType.GRASS);
+ }
+
+ @Override
+ public java.util.List<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
@@ -74,11 +75,11 @@
+ if (type == EnumPlantType.GRASS) ret.add(new ItemStack(Blocks.field_150329_H, 2, BlockTallGrass.EnumType.GRASS.func_177044_a()));
+ return ret;
+ }
+
+ @Override
+ public boolean removedByPlayer(World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ {
+ //Forge: Break both parts on the client to prevent the top part flickering as default type for a few frames.
+ IBlockState state = world.func_180495_p(pos);
+ if (state.func_177230_c() == this && state.func_177229_b(field_176492_b) == EnumBlockHalf.LOWER && world.func_180495_p(pos.func_177984_a()).func_177230_c() == this)
+ world.func_175698_g(pos.func_177984_a());
+ return world.func_175698_g(pos);
@@ -0,0 +1,20 @@
--- ../src-base/minecraft/net/minecraft/block/BlockDragonEgg.java
+++ ../src-work/minecraft/net/minecraft/block/BlockDragonEgg.java
@@ -49,7 +49,7 @@
private void func_180683_d(World p_180683_1_, BlockPos p_180683_2_)
{
- if (BlockFalling.func_185759_i(p_180683_1_.func_180495_p(p_180683_2_.func_177977_b())) && p_180683_2_.func_177956_o() >= 0)
+ if (p_180683_1_.func_175623_d(p_180683_2_.func_177977_b()) && BlockFalling.func_185759_i(p_180683_1_.func_180495_p(p_180683_2_.func_177977_b())) && p_180683_2_.func_177956_o() >= 0)
{
int i = 32;
@@ -62,7 +62,7 @@
p_180683_1_.func_175698_g(p_180683_2_);
BlockPos blockpos;
- for (blockpos = p_180683_2_; BlockFalling.func_185759_i(p_180683_1_.func_180495_p(blockpos)) && blockpos.func_177956_o() > 0; blockpos = blockpos.func_177977_b())
+ for (blockpos = p_180683_2_; p_180683_1_.func_175623_d(blockpos) && BlockFalling.func_185759_i(p_180683_1_.func_180495_p(blockpos)) && blockpos.func_177956_o() > 0; blockpos = blockpos.func_177977_b())
{
;
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockDropper.java
+++ ../src-work/minecraft/net/minecraft/block/BlockDropper.java
@@ -43,7 +43,7 @@
@@ -44,7 +44,7 @@
{
ItemStack itemstack = tileentitydispenser.func_70301_a(i);
@@ -1,10 +1,20 @@
--- ../src-base/minecraft/net/minecraft/block/BlockFalling.java
+++ ../src-work/minecraft/net/minecraft/block/BlockFalling.java
@@ -86,6 +86,7 @@
@@ -44,7 +44,7 @@
public static boolean func_180685_d(World p_180685_0_, BlockPos p_180685_1_)
private void func_176503_e(World p_176503_1_, BlockPos p_176503_2_)
{
+ if (p_180685_0_.func_175623_d(p_180685_1_)) return true;
Block block = p_180685_0_.func_180495_p(p_180685_1_).func_177230_c();
Material material = block.field_149764_J;
return block == Blocks.field_150480_ab || material == Material.field_151579_a || material == Material.field_151586_h || material == Material.field_151587_i;
- if (func_185759_i(p_176503_1_.func_180495_p(p_176503_2_.func_177977_b())) && p_176503_2_.func_177956_o() >= 0)
+ if ((p_176503_1_.func_175623_d(p_176503_2_.func_177977_b()) || func_185759_i(p_176503_1_.func_180495_p(p_176503_2_.func_177977_b()))) && p_176503_2_.func_177956_o() >= 0)
{
int i = 32;
@@ -62,7 +62,7 @@
p_176503_1_.func_175698_g(p_176503_2_);
BlockPos blockpos;
- for (blockpos = p_176503_2_.func_177977_b(); func_185759_i(p_176503_1_.func_180495_p(blockpos)) && blockpos.func_177956_o() > 0; blockpos = blockpos.func_177977_b())
+ for (blockpos = p_176503_2_.func_177977_b(); (p_176503_1_.func_175623_d(blockpos) || func_185759_i(p_176503_1_.func_180495_p(blockpos))) && blockpos.func_177956_o() > 0; blockpos = blockpos.func_177977_b())
{
;
}
@@ -5,7 +5,7 @@
{
Block block = p_176529_1_.func_180495_p(p_176529_2_.func_177984_a()).func_177230_c();
- return block instanceof BlockCrops || block instanceof BlockStem;
+ return block instanceof net.minecraftforge.common.IPlantable && canSustainPlant(p_176529_1_, p_176529_2_, net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)block);
+ return block instanceof net.minecraftforge.common.IPlantable && canSustainPlant(p_176529_1_.func_180495_p(p_176529_2_), p_176529_1_, p_176529_2_, net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable)block);
}
private boolean func_176530_e(World p_176530_1_, BlockPos p_176530_2_)
@@ -1,34 +1,23 @@
--- ../src-base/minecraft/net/minecraft/block/BlockFire.java
+++ ../src-work/minecraft/net/minecraft/block/BlockFire.java
@@ -41,18 +41,24 @@
int j = p_176221_3_.func_177956_o();
int k = p_176221_3_.func_177952_p();
@@ -38,7 +38,15 @@
- if (!World.func_175683_a(p_176221_2_, p_176221_3_.func_177977_b()) && !Blocks.field_150480_ab.func_176535_e(p_176221_2_, p_176221_3_.func_177977_b()))
+ if (!World.func_175683_a(p_176221_2_, p_176221_3_.func_177977_b()) && !Blocks.field_150480_ab.canCatchFire(p_176221_2_, p_176221_3_.func_177977_b(), EnumFacing.UP))
{
boolean flag = (i + j + k & 1) == 1;
boolean flag1 = (i / 2 + j / 2 + k / 2 & 1) == 1;
int l = 0;
public IBlockState func_176221_a(IBlockState p_176221_1_, IBlockAccess p_176221_2_, BlockPos p_176221_3_)
{
- return !p_176221_2_.func_180495_p(p_176221_3_.func_177977_b()).func_185896_q() && !Blocks.field_150480_ab.func_176535_e(p_176221_2_, p_176221_3_.func_177977_b()) ? p_176221_1_.func_177226_a(field_176545_N, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177978_c()))).func_177226_a(field_176546_O, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177974_f()))).func_177226_a(field_176541_P, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177968_d()))).func_177226_a(field_176539_Q, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177976_e()))).func_177226_a(field_176542_R, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177984_a()))) : this.func_176223_P();
+ if (!p_176221_2_.func_180495_p(p_176221_3_.func_177977_b()).isSideSolid(p_176221_2_, p_176221_3_.func_177977_b(), EnumFacing.UP) && !Blocks.field_150480_ab.canCatchFire(p_176221_2_, p_176221_3_.func_177977_b(), EnumFacing.UP))
+ {
+ return p_176221_1_.func_177226_a(field_176545_N, this.canCatchFire(p_176221_2_, p_176221_3_.func_177978_c(), EnumFacing.SOUTH))
+ .func_177226_a(field_176546_O, this.canCatchFire(p_176221_2_, p_176221_3_.func_177974_f(), EnumFacing.WEST))
+ .func_177226_a(field_176541_P, this.canCatchFire(p_176221_2_, p_176221_3_.func_177968_d(), EnumFacing.NORTH))
+ .func_177226_a(field_176539_Q, this.canCatchFire(p_176221_2_, p_176221_3_.func_177976_e(), EnumFacing.EAST))
+ .func_177226_a(field_176542_R, this.canCatchFire(p_176221_2_, p_176221_3_.func_177984_a(), EnumFacing.DOWN));
+ }
+ return this.func_176223_P();
}
- if (this.func_176535_e(p_176221_2_, p_176221_3_.func_177984_a()))
+ if (this.canCatchFire(p_176221_2_, p_176221_3_.func_177984_a(), EnumFacing.DOWN))
{
l = flag ? 1 : 2;
}
- return p_176221_1_.func_177226_a(field_176545_N, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177978_c()))).func_177226_a(field_176546_O, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177974_f()))).func_177226_a(field_176541_P, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177968_d()))).func_177226_a(field_176539_Q, Boolean.valueOf(this.func_176535_e(p_176221_2_, p_176221_3_.func_177976_e()))).func_177226_a(field_176542_R, Integer.valueOf(l)).func_177226_a(field_176540_b, Boolean.valueOf(flag1)).func_177226_a(field_176544_M, Boolean.valueOf(flag));
+ return p_176221_1_.func_177226_a(field_176545_N, Boolean.valueOf(this.canCatchFire(p_176221_2_, p_176221_3_.func_177978_c(), EnumFacing.SOUTH)))
+ .func_177226_a(field_176546_O, Boolean.valueOf(this.canCatchFire(p_176221_2_, p_176221_3_.func_177974_f(), EnumFacing.EAST )))
+ .func_177226_a(field_176541_P, Boolean.valueOf(this.canCatchFire(p_176221_2_, p_176221_3_.func_177968_d(), EnumFacing.NORTH)))
+ .func_177226_a(field_176539_Q, Boolean.valueOf(this.canCatchFire(p_176221_2_, p_176221_3_.func_177976_e(), EnumFacing.EAST )))
+ .func_177226_a(field_176542_R, Integer.valueOf(l))
+ .func_177226_a(field_176540_b, Boolean.valueOf(flag1))
+ .func_177226_a(field_176544_M, Boolean.valueOf(flag));
}
else
{
@@ -108,6 +114,7 @@
protected BlockFire()
@@ -91,6 +99,7 @@
public void func_180686_a(Block p_180686_1_, int p_180686_2_, int p_180686_3_)
{
@@ -36,7 +25,7 @@
this.field_149849_a.put(p_180686_1_, Integer.valueOf(p_180686_2_));
this.field_149848_b.put(p_180686_1_, Integer.valueOf(p_180686_3_));
}
@@ -147,13 +154,8 @@
@@ -131,13 +140,8 @@
}
Block block = p_180650_1_.func_180495_p(p_180650_2_.func_177977_b()).func_177230_c();
@@ -48,10 +37,19 @@
- flag = true;
- }
-
if (!flag && p_180650_1_.func_72896_J() && this.func_176537_d(p_180650_1_, p_180650_2_))
{
p_180650_1_.func_175698_g(p_180650_2_);
@@ -182,7 +184,7 @@
int i = ((Integer)p_180650_3_.func_177229_b(field_176543_a)).intValue();
if (!flag && p_180650_1_.func_72896_J() && this.func_176537_d(p_180650_1_, p_180650_2_) && p_180650_4_.nextFloat() < 0.2F + (float)i * 0.03F)
@@ -158,7 +162,7 @@
{
if (!this.func_176533_e(p_180650_1_, p_180650_2_))
{
- if (!p_180650_1_.func_180495_p(p_180650_2_.func_177977_b()).func_185896_q() || i > 3)
+ if (!p_180650_1_.func_180495_p(p_180650_2_.func_177977_b()).isSideSolid(p_180650_1_, p_180650_2_.func_177977_b(), EnumFacing.UP) || i > 3)
{
p_180650_1_.func_175698_g(p_180650_2_);
}
@@ -166,7 +170,7 @@
return;
}
@@ -60,7 +58,7 @@
{
p_180650_1_.func_175698_g(p_180650_2_);
return;
@@ -197,12 +199,12 @@
@@ -181,12 +185,12 @@
j = -50;
}
@@ -79,7 +77,7 @@
for (int k = -1; k <= 1; ++k)
{
@@ -261,22 +263,30 @@
@@ -245,22 +249,30 @@
return false;
}
@@ -111,7 +109,7 @@
if (p_176536_4_.nextInt(p_176536_3_) < i)
{
IBlockState iblockstate = p_176536_1_.func_180495_p(p_176536_2_);
@@ -308,7 +318,7 @@
@@ -292,7 +304,7 @@
{
for (EnumFacing enumfacing : EnumFacing.values())
{
@@ -120,7 +118,7 @@
{
return true;
}
@@ -329,7 +339,7 @@
@@ -313,7 +325,7 @@
for (EnumFacing enumfacing : EnumFacing.values())
{
@@ -129,7 +127,7 @@
}
return i;
@@ -341,9 +351,10 @@
@@ -325,9 +337,10 @@
return false;
}
@@ -141,57 +139,57 @@
}
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
@@ -382,9 +393,9 @@
p_180655_1_.func_72980_b((double)((float)p_180655_2_.func_177958_n() + 0.5F), (double)((float)p_180655_2_.func_177956_o() + 0.5F), (double)((float)p_180655_2_.func_177952_p() + 0.5F), "fire.fire", 1.0F + p_180655_4_.nextFloat(), p_180655_4_.nextFloat() * 0.7F + 0.3F, false);
@@ -366,9 +379,9 @@
p_180655_2_.func_184134_a((double)((float)p_180655_3_.func_177958_n() + 0.5F), (double)((float)p_180655_3_.func_177956_o() + 0.5F), (double)((float)p_180655_3_.func_177952_p() + 0.5F), SoundEvents.field_187643_bs, SoundCategory.BLOCKS, 1.0F + p_180655_4_.nextFloat(), p_180655_4_.nextFloat() * 0.7F + 0.3F, false);
}
- if (!World.func_175683_a(p_180655_1_, p_180655_2_.func_177977_b()) && !Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177977_b()))
+ if (!World.func_175683_a(p_180655_1_, p_180655_2_.func_177977_b()) && !Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177977_b(), EnumFacing.UP))
- if (!p_180655_2_.func_180495_p(p_180655_3_.func_177977_b()).func_185896_q() && !Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177977_b()))
+ if (!p_180655_2_.func_180495_p(p_180655_3_.func_177977_b()).isSideSolid(p_180655_2_, p_180655_3_.func_177977_b(), EnumFacing.UP) && !Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177977_b(), EnumFacing.UP))
{
- if (Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177976_e()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177976_e(), EnumFacing.EAST))
- if (Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177976_e()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177976_e(), EnumFacing.EAST))
{
for (int j = 0; j < 2; ++j)
{
@@ -395,7 +406,7 @@
@@ -379,7 +392,7 @@
}
}
- if (Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177974_f()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177974_f(), EnumFacing.WEST))
- if (Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177974_f()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177974_f(), EnumFacing.WEST))
{
for (int k = 0; k < 2; ++k)
{
@@ -406,7 +417,7 @@
@@ -390,7 +403,7 @@
}
}
- if (Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177978_c()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177978_c(), EnumFacing.SOUTH))
- if (Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177978_c()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177978_c(), EnumFacing.SOUTH))
{
for (int l = 0; l < 2; ++l)
{
@@ -417,7 +428,7 @@
@@ -401,7 +414,7 @@
}
}
- if (Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177968_d()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177968_d(), EnumFacing.NORTH))
- if (Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177968_d()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177968_d(), EnumFacing.NORTH))
{
for (int i1 = 0; i1 < 2; ++i1)
{
@@ -428,7 +439,7 @@
@@ -412,7 +425,7 @@
}
}
- if (Blocks.field_150480_ab.func_176535_e(p_180655_1_, p_180655_2_.func_177984_a()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_1_, p_180655_2_.func_177984_a(), EnumFacing.DOWN))
- if (Blocks.field_150480_ab.func_176535_e(p_180655_2_, p_180655_3_.func_177984_a()))
+ if (Blocks.field_150480_ab.canCatchFire(p_180655_2_, p_180655_3_.func_177984_a(), EnumFacing.DOWN))
{
for (int j1 = 0; j1 < 2; ++j1)
{
@@ -476,4 +487,19 @@
@@ -460,4 +473,19 @@
{
return new BlockState(this, new IProperty[] {field_176543_a, field_176545_N, field_176546_O, field_176541_P, field_176539_Q, field_176542_R, field_176540_b, field_176544_M});
return new BlockStateContainer(this, new IProperty[] {field_176543_a, field_176545_N, field_176546_O, field_176541_P, field_176539_Q, field_176542_R});
}
+
+ /*================================= Forge Start ======================================*/
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockFlowerPot.java
+++ ../src-work/minecraft/net/minecraft/block/BlockFlowerPot.java
@@ -169,13 +169,6 @@
@@ -149,13 +149,6 @@
public void func_180663_b(World p_180663_1_, BlockPos p_180663_2_, IBlockState p_180663_3_)
{
@@ -14,8 +14,8 @@
super.func_180663_b(p_180663_1_, p_180663_2_, p_180663_3_);
}
@@ -395,6 +388,31 @@
return EnumWorldBlockLayer.CUTOUT;
@@ -377,6 +370,31 @@
return BlockRenderLayer.CUTOUT;
}
+
@@ -30,15 +30,15 @@
+ return ret;
+ }
+ @Override
+ public boolean removedByPlayer(World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
+ {
+ if (willHarvest) return true; //If it will harvest, delay deletion of the block until after getDrops
+ return super.removedByPlayer(world, pos, player, willHarvest);
+ return super.removedByPlayer(state, world, pos, player, willHarvest);
+ }
+ @Override
+ public void func_180657_a(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity te)
+ public void func_180657_a(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity te, ItemStack tool)
+ {
+ super.func_180657_a(world, player, pos, state, te);
+ super.func_180657_a(world, player, pos, state, te, tool);
+ world.func_175698_g(pos);
+ }
+ /*===========================FORGE END==========================================*/
@@ -1,24 +1,24 @@
--- ../src-base/minecraft/net/minecraft/block/BlockGrass.java
+++ ../src-work/minecraft/net/minecraft/block/BlockGrass.java
@@ -58,7 +58,7 @@
@@ -39,7 +39,7 @@
{
if (!p_180650_1_.field_72995_K)
{
- if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_177230_c().func_149717_k() > 2)
+ if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_177230_c().getLightOpacity(p_180650_1_, p_180650_2_.func_177984_a()) > 2)
- if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_185891_c() > 2)
+ if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).getLightOpacity(p_180650_1_, p_180650_2_.func_177984_a()) > 2)
{
p_180650_1_.func_175656_a(p_180650_2_, Blocks.field_150346_d.func_176223_P());
}
@@ -72,7 +72,7 @@
Block block = p_180650_1_.func_180495_p(blockpos.func_177984_a()).func_177230_c();
IBlockState iblockstate = p_180650_1_.func_180495_p(blockpos);
@@ -59,7 +59,7 @@
IBlockState iblockstate = p_180650_1_.func_180495_p(blockpos.func_177984_a());
IBlockState iblockstate1 = p_180650_1_.func_180495_p(blockpos);
- if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && block.func_149717_k() <= 2)
+ if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && block.getLightOpacity(p_180650_1_, blockpos.func_177984_a()) <= 2)
- if (iblockstate1.func_177230_c() == Blocks.field_150346_d && iblockstate1.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && iblockstate.func_185891_c() <= 2)
+ if (iblockstate1.func_177230_c() == Blocks.field_150346_d && iblockstate1.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && iblockstate.getLightOpacity(p_180650_1_, p_180650_2_.func_177984_a()) <= 2)
{
p_180650_1_.func_175656_a(blockpos, Blocks.field_150349_c.func_176223_P());
}
@@ -110,7 +110,7 @@
@@ -98,7 +98,7 @@
{
if (j >= i / 16)
{
@@ -1,13 +1,13 @@
--- ../src-base/minecraft/net/minecraft/block/BlockHugeMushroom.java
+++ ../src-work/minecraft/net/minecraft/block/BlockHugeMushroom.java
@@ -79,6 +79,20 @@
return new BlockState(this, new IProperty[] {field_176380_a});
@@ -223,6 +223,20 @@
return new BlockStateContainer(this, new IProperty[] {field_176380_a});
}
+ public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty prop : (java.util.Set<IProperty<?>>)state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("variant"))
+ {
@@ -1,35 +1,34 @@
--- ../src-base/minecraft/net/minecraft/block/BlockIce.java
+++ ../src-work/minecraft/net/minecraft/block/BlockIce.java
@@ -38,14 +38,17 @@
p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
@@ -41,14 +41,19 @@
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
p_180657_2_.func_71020_j(0.025F);
- if (this.func_149700_E() && EnchantmentHelper.func_77502_d(p_180657_2_))
+ if (this.canSilkHarvest(p_180657_1_, p_180657_3_, p_180657_1_.func_180495_p(p_180657_3_), p_180657_2_) && EnchantmentHelper.func_77502_d(p_180657_2_))
- if (this.func_149700_E() && EnchantmentHelper.func_77506_a(Enchantments.field_185306_r, p_180657_6_) > 0)
+ if (this.canSilkHarvest(p_180657_1_, p_180657_3_, p_180657_4_, p_180657_2_) && EnchantmentHelper.func_77506_a(Enchantments.field_185306_r, p_180657_6_) > 0)
{
+ java.util.List<ItemStack> items = new java.util.ArrayList<ItemStack>();
ItemStack itemstack = this.func_180643_i(p_180657_4_);
- if (itemstack != null)
- {
if (itemstack != null)
{
- func_180635_a(p_180657_1_, p_180657_3_, itemstack);
- }
+ if (itemstack != null) items.add(itemstack);
+
+ net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(items, p_180657_1_, p_180657_3_, p_180657_1_.func_180495_p(p_180657_3_), 0, 1.0f, true, p_180657_2_);
+ items.add(itemstack);
}
+
+ net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(items, p_180657_1_, p_180657_3_, p_180657_4_, 0, 1.0f, true, p_180657_2_);
+ for (ItemStack is : items)
+ func_180635_a(p_180657_1_, p_180657_3_, is);
}
else
{
@@ -56,7 +59,9 @@
@@ -59,7 +64,9 @@
}
int i = EnchantmentHelper.func_77517_e(p_180657_2_);
int i = EnchantmentHelper.func_77506_a(Enchantments.field_185308_t, p_180657_6_);
+ harvesters.set(p_180657_2_);
this.func_176226_b(p_180657_1_, p_180657_3_, p_180657_4_, i);
+ harvesters.set(null);
Material material = p_180657_1_.func_180495_p(p_180657_3_.func_177977_b()).func_177230_c().func_149688_o();
Material material = p_180657_1_.func_180495_p(p_180657_3_.func_177977_b()).func_185904_a();
if (material.func_76230_c() || material.func_76224_d())
@@ -1,30 +1,30 @@
--- ../src-base/minecraft/net/minecraft/block/BlockLadder.java
+++ ../src-work/minecraft/net/minecraft/block/BlockLadder.java
@@ -78,7 +78,10 @@
@@ -61,7 +61,10 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
- return p_176196_1_.func_180495_p(p_176196_2_.func_177976_e()).func_177230_c().func_149721_r() ? true : (p_176196_1_.func_180495_p(p_176196_2_.func_177974_f()).func_177230_c().func_149721_r() ? true : (p_176196_1_.func_180495_p(p_176196_2_.func_177978_c()).func_177230_c().func_149721_r() ? true : p_176196_1_.func_180495_p(p_176196_2_.func_177968_d()).func_177230_c().func_149721_r()));
+ return p_176196_1_.isSideSolid(p_176196_2_.func_177976_e(), EnumFacing.EAST, true) ||
+ p_176196_1_.isSideSolid(p_176196_2_.func_177974_f(), EnumFacing.WEST, true) ||
+ p_176196_1_.isSideSolid(p_176196_2_.func_177978_c(), EnumFacing.SOUTH, true) ||
+ p_176196_1_.isSideSolid(p_176196_2_.func_177968_d(), EnumFacing.NORTH, true);
- return p_176196_1_.func_180495_p(p_176196_2_.func_177976_e()).func_185915_l() ? true : (p_176196_1_.func_180495_p(p_176196_2_.func_177974_f()).func_185915_l() ? true : (p_176196_1_.func_180495_p(p_176196_2_.func_177978_c()).func_185915_l() ? true : p_176196_1_.func_180495_p(p_176196_2_.func_177968_d()).func_185915_l()));
+ return p_176196_1_.func_180495_p(p_176196_2_.func_177976_e()).isSideSolid(p_176196_1_, p_176196_2_.func_177976_e(), EnumFacing.EAST) ||
+ p_176196_1_.func_180495_p(p_176196_2_.func_177974_f()).isSideSolid(p_176196_1_, p_176196_2_.func_177974_f(), EnumFacing.WEST) ||
+ p_176196_1_.func_180495_p(p_176196_2_.func_177978_c()).isSideSolid(p_176196_1_, p_176196_2_.func_177978_c(), EnumFacing.SOUTH) ||
+ p_176196_1_.func_180495_p(p_176196_2_.func_177968_d()).isSideSolid(p_176196_1_, p_176196_2_.func_177968_d(), EnumFacing.NORTH);
}
public IBlockState func_180642_a(World p_180642_1_, BlockPos p_180642_2_, EnumFacing p_180642_3_, float p_180642_4_, float p_180642_5_, float p_180642_6_, int p_180642_7_, EntityLivingBase p_180642_8_)
@@ -116,7 +119,7 @@
@@ -99,7 +102,7 @@
protected boolean func_176381_b(World p_176381_1_, BlockPos p_176381_2_, EnumFacing p_176381_3_)
{
- return p_176381_1_.func_180495_p(p_176381_2_.func_177972_a(p_176381_3_.func_176734_d())).func_177230_c().func_149721_r();
+ return p_176381_1_.isSideSolid(p_176381_2_.func_177972_a(p_176381_3_.func_176734_d()), p_176381_3_, true);
- return p_176381_1_.func_180495_p(p_176381_2_.func_177972_a(p_176381_3_.func_176734_d())).func_185915_l();
+ return p_176381_1_.func_180495_p(p_176381_2_.func_177972_a(p_176381_3_.func_176734_d())).isSideSolid(p_176381_1_, p_176381_2_.func_177972_a(p_176381_3_.func_176734_d()), p_176381_3_);
}
public IBlockState func_176203_a(int p_176203_1_)
@@ -146,4 +149,6 @@
@@ -139,4 +142,6 @@
{
return new BlockState(this, new IProperty[] {field_176382_a});
return new BlockStateContainer(this, new IProperty[] {field_176382_a});
}
+
+ @Override public boolean isLadder(IBlockAccess world, BlockPos pos, EntityLivingBase entity) { return true; }
+ @Override public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity) { return true; }
}
@@ -4,36 +4,36 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-public abstract class BlockLeaves extends BlockLeavesBase
+public abstract class BlockLeaves extends BlockLeavesBase implements net.minecraftforge.common.IShearable
-public abstract class BlockLeaves extends Block
+public abstract class BlockLeaves extends Block implements net.minecraftforge.common.IShearable
{
public static final PropertyBool field_176237_a = PropertyBool.func_177716_a("decayable");
public static final PropertyBool field_176236_b = PropertyBool.func_177716_a("check_decay");
@@ -75,9 +75,9 @@
@@ -54,9 +54,9 @@
BlockPos blockpos = p_180663_2_.func_177982_a(j1, k1, l1);
IBlockState iblockstate = p_180663_1_.func_180495_p(blockpos);
- if (iblockstate.func_177230_c().func_149688_o() == Material.field_151584_j && !((Boolean)iblockstate.func_177229_b(field_176236_b)).booleanValue())
+ if (iblockstate.func_177230_c().isLeaves(p_180663_1_, blockpos))
- if (iblockstate.func_185904_a() == Material.field_151584_j && !((Boolean)iblockstate.func_177229_b(field_176236_b)).booleanValue())
+ if (iblockstate.func_177230_c().isLeaves(iblockstate, p_180663_1_, blockpos))
{
- p_180663_1_.func_180501_a(blockpos, iblockstate.func_177226_a(field_176236_b, Boolean.valueOf(true)), 4);
+ iblockstate.func_177230_c().beginLeavesDecay(p_180663_1_, blockpos);
+ iblockstate.func_177230_c().beginLeavesDecay(iblockstate, p_180663_1_, blockpos);
}
}
}
@@ -117,9 +117,9 @@
{
Block block = p_180650_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)).func_177230_c();
@@ -97,9 +97,9 @@
IBlockState iblockstate = p_180650_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2));
Block block = iblockstate.func_177230_c();
- if (block != Blocks.field_150364_r && block != Blocks.field_150363_s)
+ if (!block.canSustainLeaves(p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
+ if (!block.canSustainLeaves(iblockstate, p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
{
- if (block.func_149688_o() == Material.field_151584_j)
+ if (block.isLeaves(p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
- if (iblockstate.func_185904_a() == Material.field_151584_j)
+ if (block.isLeaves(iblockstate, p_180650_1_, blockpos$mutableblockpos.func_181079_c(k + i2, l + j2, i1 + k2)))
{
this.field_150128_a[(i2 + l1) * k1 + (j2 + l1) * j1 + k2 + l1] = -2;
}
@@ -226,40 +226,7 @@
@@ -207,40 +207,7 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
@@ -75,18 +75,16 @@
}
protected void func_176234_a(World p_176234_1_, BlockPos p_176234_2_, IBlockState p_176234_3_, int p_176234_4_)
@@ -296,4 +263,48 @@
}
@@ -276,6 +243,49 @@
public abstract BlockPlanks.EnumType func_176233_b(int p_176233_1_);
+
+ @Override public boolean isShearable(ItemStack item, IBlockAccess world, BlockPos pos){ return true; }
+ @Override public boolean isLeaves(IBlockAccess world, BlockPos pos){ return true; }
+ @Override public boolean isLeaves(IBlockState state, IBlockAccess world, BlockPos pos){ return true; }
+
+ @Override
+ public void beginLeavesDecay(World world, BlockPos pos)
+ public void beginLeavesDecay(IBlockState state, World world, BlockPos pos)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ if (!(Boolean)state.func_177229_b(field_176236_b))
+ {
+ world.func_180501_a(pos, state.func_177226_a(field_176236_b, true), 4);
@@ -123,4 +121,7 @@
+ return ret;
+ }
+
}
+
@SideOnly(Side.CLIENT)
public boolean func_176225_a(IBlockState p_176225_1_, IBlockAccess p_176225_2_, BlockPos p_176225_3_, EnumFacing p_176225_4_)
{
@@ -1,7 +1,7 @@
--- ../src-base/minecraft/net/minecraft/block/BlockLever.java
+++ ../src-work/minecraft/net/minecraft/block/BlockLever.java
@@ -237,6 +237,12 @@
return new BlockState(this, new IProperty[] {field_176360_a, field_176359_b});
@@ -297,6 +297,12 @@
return new BlockStateContainer(this, new IProperty[] {field_176360_a, field_176359_b});
}
+
@@ -1,22 +1,22 @@
--- ../src-base/minecraft/net/minecraft/block/BlockLog.java
+++ ../src-work/minecraft/net/minecraft/block/BlockLog.java
@@ -33,9 +33,9 @@
@@ -34,9 +34,9 @@
{
IBlockState iblockstate = p_180663_1_.func_180495_p(blockpos);
- if (iblockstate.func_177230_c().func_149688_o() == Material.field_151584_j && !((Boolean)iblockstate.func_177229_b(BlockLeaves.field_176236_b)).booleanValue())
+ if (iblockstate.func_177230_c().isLeaves(p_180663_1_, blockpos))
- if (iblockstate.func_185904_a() == Material.field_151584_j && !((Boolean)iblockstate.func_177229_b(BlockLeaves.field_176236_b)).booleanValue())
+ if (iblockstate.func_177230_c().isLeaves(iblockstate, p_180663_1_, blockpos))
{
- p_180663_1_.func_180501_a(blockpos, iblockstate.func_177226_a(BlockLeaves.field_176236_b, Boolean.valueOf(true)), 4);
+ iblockstate.func_177230_c().beginLeavesDecay(p_180663_1_, blockpos);
+ iblockstate.func_177230_c().beginLeavesDecay(iblockstate, p_180663_1_, blockpos);
}
}
}
@@ -46,6 +46,9 @@
return super.func_180642_a(p_180642_1_, p_180642_2_, p_180642_3_, p_180642_4_, p_180642_5_, p_180642_6_, p_180642_7_, p_180642_8_).func_177226_a(field_176299_a, BlockLog.EnumAxis.func_176870_a(p_180642_3_.func_176740_k()));
@@ -69,6 +69,9 @@
}
}
+ @Override public boolean canSustainLeaves(net.minecraft.world.IBlockAccess world, BlockPos pos){ return true; }
+ @Override public boolean canSustainLeaves(IBlockState state, net.minecraft.world.IBlockAccess world, BlockPos pos){ return true; }
+ @Override public boolean isWood(net.minecraft.world.IBlockAccess world, BlockPos pos){ return true; }
+
public static enum EnumAxis implements IStringSerializable
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockMobSpawner.java
+++ ../src-work/minecraft/net/minecraft/block/BlockMobSpawner.java
@@ -37,10 +37,14 @@
@@ -41,10 +41,14 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
@@ -9,11 +9,11 @@
}
+ @Override
+ public int getExpDrop(net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ public int getExpDrop(IBlockState state, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ return 15 + RANDOM.nextInt(15) + RANDOM.nextInt(15);
+ }
+
public boolean func_149662_c()
public boolean func_149662_c(IBlockState p_149662_1_)
{
return false;
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockMushroom.java
+++ ../src-work/minecraft/net/minecraft/block/BlockMushroom.java
@@ -71,7 +71,7 @@
@@ -78,7 +78,7 @@
if (p_180671_2_.func_177956_o() >= 0 && p_180671_2_.func_177956_o() < 256)
{
IBlockState iblockstate = p_180671_1_.func_180495_p(p_180671_2_.func_177977_b());
- return iblockstate.func_177230_c() == Blocks.field_150391_bh ? true : (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.PODZOL ? true : p_180671_1_.func_175699_k(p_180671_2_) < 13 && this.func_149854_a(iblockstate.func_177230_c()));
+ return iblockstate.func_177230_c() == Blocks.field_150391_bh ? true : (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.PODZOL ? true : p_180671_1_.func_175699_k(p_180671_2_) < 13 && iblockstate.func_177230_c().canSustainPlant(p_180671_1_, p_180671_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this));
- return iblockstate.func_177230_c() == Blocks.field_150391_bh ? true : (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.PODZOL ? true : p_180671_1_.func_175699_k(p_180671_2_) < 13 && this.func_185514_i(iblockstate));
+ return iblockstate.func_177230_c() == Blocks.field_150391_bh ? true : (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.PODZOL ? true : p_180671_1_.func_175699_k(p_180671_2_) < 13 && iblockstate.func_177230_c().canSustainPlant(iblockstate, p_180671_1_, p_180671_2_.func_177977_b(), net.minecraft.util.EnumFacing.UP, this));
}
else
{
@@ -1,20 +1,20 @@
--- ../src-base/minecraft/net/minecraft/block/BlockMycelium.java
+++ ../src-work/minecraft/net/minecraft/block/BlockMycelium.java
@@ -39,7 +39,7 @@
@@ -40,7 +40,7 @@
{
if (!p_180650_1_.field_72995_K)
{
- if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_177230_c().func_149717_k() > 2)
+ if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_177230_c().getLightOpacity(p_180650_1_, p_180650_2_.func_177984_a()) > 2)
- if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).func_185891_c() > 2)
+ if (p_180650_1_.func_175671_l(p_180650_2_.func_177984_a()) < 4 && p_180650_1_.func_180495_p(p_180650_2_.func_177984_a()).getLightOpacity(p_180650_1_, p_180650_2_.func_177984_a()) > 2)
{
p_180650_1_.func_175656_a(p_180650_2_, Blocks.field_150346_d.func_176223_P().func_177226_a(BlockDirt.field_176386_a, BlockDirt.DirtType.DIRT));
}
@@ -53,7 +53,7 @@
@@ -54,7 +54,7 @@
IBlockState iblockstate = p_180650_1_.func_180495_p(blockpos);
Block block = p_180650_1_.func_180495_p(blockpos.func_177984_a()).func_177230_c();
IBlockState iblockstate1 = p_180650_1_.func_180495_p(blockpos.func_177984_a());
- if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && block.func_149717_k() <= 2)
+ if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && block.getLightOpacity(p_180650_1_, blockpos.func_177984_a()) <= 2)
- if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && iblockstate1.func_185891_c() <= 2)
+ if (iblockstate.func_177230_c() == Blocks.field_150346_d && iblockstate.func_177229_b(BlockDirt.field_176386_a) == BlockDirt.DirtType.DIRT && p_180650_1_.func_175671_l(blockpos.func_177984_a()) >= 4 && iblockstate1.getLightOpacity(p_180650_1_, blockpos.func_177984_a()) <= 2)
{
p_180650_1_.func_175656_a(blockpos, this.func_176223_P());
}
@@ -1,15 +1,15 @@
--- ../src-base/minecraft/net/minecraft/block/BlockNetherWart.java
+++ ../src-work/minecraft/net/minecraft/block/BlockNetherWart.java
@@ -38,7 +38,7 @@
@@ -43,7 +43,7 @@
public boolean func_180671_f(World p_180671_1_, BlockPos p_180671_2_, IBlockState p_180671_3_)
{
- return this.func_149854_a(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c());
- return this.func_185514_i(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()));
+ return super.func_180671_f(p_180671_1_, p_180671_2_, p_180671_3_);
}
public void func_180650_b(World p_180650_1_, BlockPos p_180650_2_, IBlockState p_180650_3_, Random p_180650_4_)
@@ -54,9 +54,11 @@
@@ -59,9 +59,11 @@
super.func_180650_b(p_180650_1_, p_180650_2_, p_180650_3_, p_180650_4_);
}
@@ -22,11 +22,10 @@
{
int i = 1;
@@ -107,4 +109,24 @@
{
return new BlockState(this, new IProperty[] {field_176486_a});
@@ -108,6 +110,26 @@
return ((Integer)p_176201_1_.func_177229_b(field_176486_a)).intValue();
}
+
+ @Override
+ public java.util.List<ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
+ {
@@ -46,4 +45,7 @@
+
+ return ret;
+ }
}
+
protected BlockStateContainer func_180661_e()
{
return new BlockStateContainer(this, new IProperty[] {field_176486_a});
@@ -1,24 +1,22 @@
--- ../src-base/minecraft/net/minecraft/block/BlockNewLeaf.java
+++ ../src-work/minecraft/net/minecraft/block/BlockNewLeaf.java
@@ -99,14 +99,15 @@
@@ -99,7 +99,7 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- if (!p_180657_1_.field_72995_K && p_180657_2_.func_71045_bC() != null && p_180657_2_.func_71045_bC().func_77973_b() == Items.field_151097_aZ)
- if (!p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ)
+ if (false && !p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ) //Forge: Noop this
{
- p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Item.func_150898_a(this), 1, ((BlockPlanks.EnumType)p_180657_4_.func_177229_b(field_176240_P)).func_176839_a() - 4));
- }
- else
- {
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Item.func_150898_a(this), 1, ((BlockPlanks.EnumType)p_180657_4_.func_177229_b(field_176240_P)).func_176839_a() - 4));
@@ -109,4 +109,10 @@
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_, p_180657_6_);
}
}
+
+ @Override
+ public List<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ return new java.util.ArrayList(java.util.Arrays.asList(new ItemStack(this, 1, ((BlockPlanks.EnumType)state.func_177229_b(field_176240_P)).func_176839_a() - 4)));
+ return java.util.Arrays.asList(new ItemStack(this, 1, world.func_180495_p(pos).func_177229_b(field_176240_P).func_176839_a() - 4));
+ }
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockNote.java
+++ ../src-work/minecraft/net/minecraft/block/BlockNote.java
@@ -58,7 +58,9 @@
@@ -65,7 +65,9 @@
if (tileentity instanceof TileEntityNote)
{
TileEntityNote tileentitynote = (TileEntityNote)tileentity;
@@ -8,16 +8,16 @@
tileentitynote.func_145877_a();
+ if (old == tileentitynote.field_145879_a) return false;
tileentitynote.func_175108_a(p_180639_1_, p_180639_2_);
p_180639_4_.func_71029_a(StatList.field_181735_S);
p_180639_4_.func_71029_a(StatList.field_188087_U);
}
@@ -98,6 +100,10 @@
@@ -105,6 +107,10 @@
public boolean func_180648_a(World p_180648_1_, BlockPos p_180648_2_, IBlockState p_180648_3_, int p_180648_4_, int p_180648_5_)
public boolean func_189539_a(IBlockState p_189539_1_, World p_189539_2_, BlockPos p_189539_3_, int p_189539_4_, int p_189539_5_)
{
+ net.minecraftforge.event.world.NoteBlockEvent.Play e = new net.minecraftforge.event.world.NoteBlockEvent.Play(p_180648_1_, p_180648_2_, p_180648_3_, p_180648_5_, p_180648_4_);
+ net.minecraftforge.event.world.NoteBlockEvent.Play e = new net.minecraftforge.event.world.NoteBlockEvent.Play(p_189539_2_, p_189539_3_, p_189539_1_, p_189539_5_, p_189539_4_);
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(e)) return false;
+ p_180648_4_ = e.instrument.ordinal();
+ p_180648_5_ = e.getVanillaNoteId();
float f = (float)Math.pow(2.0D, (double)(p_180648_5_ - 12) / 12.0D);
p_180648_1_.func_72908_a((double)p_180648_2_.func_177958_n() + 0.5D, (double)p_180648_2_.func_177956_o() + 0.5D, (double)p_180648_2_.func_177952_p() + 0.5D, "note." + this.func_176433_b(p_180648_4_), 3.0F, f);
p_180648_1_.func_175688_a(EnumParticleTypes.NOTE, (double)p_180648_2_.func_177958_n() + 0.5D, (double)p_180648_2_.func_177956_o() + 1.2D, (double)p_180648_2_.func_177952_p() + 0.5D, (double)p_180648_5_ / 24.0D, 0.0D, 0.0D, new int[0]);
+ p_189539_4_ = e.getInstrument().ordinal();
+ p_189539_5_ = e.getVanillaNoteId();
float f = (float)Math.pow(2.0D, (double)(p_189539_5_ - 12) / 12.0D);
p_189539_2_.func_184133_a((EntityPlayer)null, p_189539_3_, this.func_185576_e(p_189539_4_), SoundCategory.BLOCKS, 3.0F, f);
p_189539_2_.func_175688_a(EnumParticleTypes.NOTE, (double)p_189539_3_.func_177958_n() + 0.5D, (double)p_189539_3_.func_177956_o() + 1.2D, (double)p_189539_3_.func_177952_p() + 0.5D, (double)p_189539_5_ / 24.0D, 0.0D, 0.0D, new int[0]);
@@ -1,21 +1,20 @@
--- ../src-base/minecraft/net/minecraft/block/BlockOldLeaf.java
+++ ../src-work/minecraft/net/minecraft/block/BlockOldLeaf.java
@@ -142,11 +142,17 @@
if (!p_180657_1_.field_72995_K && p_180657_2_.func_71045_bC() != null && p_180657_2_.func_71045_bC().func_77973_b() == Items.field_151097_aZ)
@@ -104,11 +104,16 @@
if (!p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ)
{
p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Item.func_150898_a(this), 1, ((BlockPlanks.EnumType)p_180657_4_.func_177229_b(field_176239_P)).func_176839_a()));
}
else
{
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_, p_180657_6_);
}
}
+
+ @Override
+ public List<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune)
+ public List<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ return new java.util.ArrayList(java.util.Arrays.asList(new ItemStack(this, 1, ((BlockPlanks.EnumType)state.func_177229_b(field_176239_P)).func_176839_a())));
+ return java.util.Arrays.asList(new ItemStack(this, 1, world.func_180495_p(pos).func_177229_b(field_176239_P).func_176839_a()));
+ }
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockOre.java
+++ ../src-work/minecraft/net/minecraft/block/BlockOre.java
@@ -58,34 +58,40 @@
@@ -61,34 +61,39 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
@@ -8,9 +8,8 @@
- if (this.func_180660_a(p_180653_3_, p_180653_1_.field_73012_v, p_180653_5_) != Item.func_150898_a(this))
+ }
+ @Override
+ public int getExpDrop(net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ public int getExpDrop(IBlockState state, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ Random rand = world instanceof World ? ((World)world).field_73012_v : new Random();
+ if (this.func_180660_a(state, rand, fortune) != Item.func_150898_a(this))
{
@@ -48,4 +47,4 @@
+ return 0;
}
public int func_176222_j(World p_176222_1_, BlockPos p_176222_2_)
public ItemStack func_185473_a(World p_185473_1_, BlockPos p_185473_2_, IBlockState p_185473_3_)
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockPane.java
+++ ../src-work/minecraft/net/minecraft/block/BlockPane.java
@@ -38,7 +38,10 @@
@@ -106,7 +106,10 @@
public IBlockState func_176221_a(IBlockState p_176221_1_, IBlockAccess p_176221_2_, BlockPos p_176221_3_)
{
@@ -11,31 +11,16 @@
+ .func_177226_a(field_176242_M, canPaneConnectTo(p_176221_2_, p_176221_3_, EnumFacing.EAST));
}
public Item func_180660_a(IBlockState p_180660_1_, Random p_180660_2_, int p_180660_3_)
@@ -64,10 +67,10 @@
public void func_180638_a(World p_180638_1_, BlockPos p_180638_2_, IBlockState p_180638_3_, AxisAlignedBB p_180638_4_, List<AxisAlignedBB> p_180638_5_, Entity p_180638_6_)
@Nullable
@@ -184,4 +187,11 @@
{
- boolean flag = this.func_150098_a(p_180638_1_.func_180495_p(p_180638_2_.func_177978_c()).func_177230_c());
- boolean flag1 = this.func_150098_a(p_180638_1_.func_180495_p(p_180638_2_.func_177968_d()).func_177230_c());
- boolean flag2 = this.func_150098_a(p_180638_1_.func_180495_p(p_180638_2_.func_177976_e()).func_177230_c());
- boolean flag3 = this.func_150098_a(p_180638_1_.func_180495_p(p_180638_2_.func_177974_f()).func_177230_c());
+ boolean flag = this.canPaneConnectTo(p_180638_1_, p_180638_2_, EnumFacing.NORTH);
+ boolean flag1 = this.canPaneConnectTo(p_180638_1_, p_180638_2_, EnumFacing.SOUTH);
+ boolean flag2 = this.canPaneConnectTo(p_180638_1_, p_180638_2_, EnumFacing.WEST);
+ boolean flag3 = this.canPaneConnectTo(p_180638_1_, p_180638_2_, EnumFacing.EAST);
if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1))
{
@@ -186,4 +189,11 @@
{
return new BlockState(this, new IProperty[] {field_176241_b, field_176242_M, field_176244_O, field_176243_N});
return new BlockStateContainer(this, new IProperty[] {field_176241_b, field_176242_M, field_176244_O, field_176243_N});
}
+
+ public boolean canPaneConnectTo(IBlockAccess world, BlockPos pos, EnumFacing dir)
+ {
+ BlockPos off = pos.func_177972_a(dir);
+ Block block = world.func_180495_p(off).func_177230_c();
+ return func_150098_a(block) || block.isSideSolid(world, off, dir.func_176734_d());
+ IBlockState state = world.func_180495_p(off);
+ return func_150098_a(state.func_177230_c()) || state.isSideSolid(world, off, dir.func_176734_d());
+ }
}
@@ -1,31 +1,31 @@
--- ../src-base/minecraft/net/minecraft/block/BlockPistonBase.java
+++ ../src-work/minecraft/net/minecraft/block/BlockPistonBase.java
@@ -189,7 +189,7 @@
@@ -236,7 +236,7 @@
}
}
- if (!flag1 && block.func_149688_o() != Material.field_151579_a && func_180696_a(block, p_180648_1_, blockpos, enumfacing.func_176734_d(), false) && (block.func_149656_h() == 0 || block == Blocks.field_150331_J || block == Blocks.field_150320_F))
+ if (!flag1 && !block.isAir(p_180648_1_, blockpos) && func_180696_a(block, p_180648_1_, blockpos, enumfacing.func_176734_d(), false) && (block.func_149656_h() == 0 || block == Blocks.field_150331_J || block == Blocks.field_150320_F))
- if (!flag1 && iblockstate.func_185904_a() != Material.field_151579_a && func_185646_a(iblockstate, p_189539_2_, blockpos, enumfacing.func_176734_d(), false) && (iblockstate.func_185905_o() == EnumPushReaction.NORMAL || block == Blocks.field_150331_J || block == Blocks.field_150320_F))
+ if (!flag1 && !iblockstate.func_177230_c().isAir(iblockstate, p_189539_2_, p_189539_3_) && func_185646_a(iblockstate, p_189539_2_, blockpos, enumfacing.func_176734_d(), false) && (iblockstate.func_185905_o() == EnumPushReaction.NORMAL || block == Blocks.field_150331_J || block == Blocks.field_150320_F))
{
this.func_176319_a(p_180648_1_, p_180648_2_, enumfacing, false);
this.func_176319_a(p_189539_2_, p_189539_3_, enumfacing, false);
}
@@ -333,7 +333,7 @@
@@ -322,7 +322,7 @@
return false;
}
- return !(p_180696_0_ instanceof ITileEntityProvider);
+ return !(p_180696_0_.hasTileEntity(p_180696_1_.func_180495_p(p_180696_2_)));
- return !block.func_149716_u();
+ return !block.hasTileEntity(p_185646_0_);
}
else
{
@@ -371,7 +371,9 @@
@@ -368,7 +368,9 @@
{
BlockPos blockpos = (BlockPos)list1.get(j);
Block block = p_176319_1_.func_180495_p(blockpos).func_177230_c();
- block.func_176226_b(p_176319_1_, blockpos, p_176319_1_.func_180495_p(blockpos), 0);
+ //With our change to how snowballs are dropped this needs to disallow to mimic vanilla behavior.
+ float chance = block instanceof BlockSnow ? -1.0f : 1.0f;
+ block.func_180653_a(p_176319_1_, blockpos, p_176319_1_.func_180495_p(blockpos), chance, 0);
p_176319_1_.func_175698_g(blockpos);
--i;
ablock[i] = block;
BlockPos blockpos1 = (BlockPos)list2.get(j);
IBlockState iblockstate = p_176319_1_.func_180495_p(blockpos1);
- iblockstate.func_177230_c().func_176226_b(p_176319_1_, blockpos1, iblockstate, 0);
+ // Forge: With our change to how snowballs are dropped this needs to disallow to mimic vanilla behavior.
+ float chance = iblockstate.func_177230_c() instanceof BlockSnow ? -1.0f : 1.0f;
+ iblockstate.func_177230_c().func_180653_a(p_176319_1_, blockpos1, iblockstate, chance, 0);
p_176319_1_.func_175698_g(blockpos1);
--k;
aiblockstate[k] = iblockstate;
@@ -1,32 +1,31 @@
--- ../src-base/minecraft/net/minecraft/block/BlockPistonMoving.java
+++ ../src-work/minecraft/net/minecraft/block/BlockPistonMoving.java
@@ -109,16 +109,7 @@
@@ -112,7 +112,7 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
- if (!p_180653_1_.field_72995_K)
- {
- TileEntityPiston tileentitypiston = this.func_176422_e(p_180653_1_, p_180653_2_);
-
- if (tileentitypiston != null)
- {
- IBlockState iblockstate = tileentitypiston.func_174927_b();
- iblockstate.func_177230_c().func_176226_b(p_180653_1_, p_180653_2_, iblockstate, 0);
- }
- }
+ if (false && !p_180653_1_.field_72995_K) // Forge: Noop this out
{
TileEntityPiston tileentitypiston = this.func_185589_c(p_180653_1_, p_180653_2_);
@@ -122,6 +122,7 @@
iblockstate.func_177230_c().func_176226_b(p_180653_1_, p_180653_2_, iblockstate, 0);
}
}
+ super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
}
public MovingObjectPosition func_180636_a(World p_180636_1_, BlockPos p_180636_2_, Vec3 p_180636_3_, Vec3 p_180636_4_)
@@ -282,4 +273,16 @@
public RayTraceResult func_180636_a(IBlockState p_180636_1_, World p_180636_2_, BlockPos p_180636_3_, Vec3d p_180636_4_, Vec3d p_180636_5_)
@@ -195,4 +196,16 @@
{
return new BlockState(this, new IProperty[] {field_176426_a, field_176425_b});
return new BlockStateContainer(this, new IProperty[] {field_176426_a, field_176425_b});
}
+
+ @Override
+ public java.util.List<net.minecraft.item.ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
+ {
+ TileEntityPiston tileentitypiston = this.func_176422_e(world, pos);
+ TileEntityPiston tileentitypiston = this.func_185589_c(world, pos);
+ if (tileentitypiston != null)
+ {
+ IBlockState pushed = tileentitypiston.func_174927_b();
@@ -1,24 +1,24 @@
--- ../src-base/minecraft/net/minecraft/block/BlockPotato.java
+++ ../src-work/minecraft/net/minecraft/block/BlockPotato.java
@@ -22,13 +22,14 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
@@ -27,7 +27,7 @@
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
-
- if (!p_180653_1_.field_72995_K)
- {
- if (((Integer)p_180653_3_.func_177229_b(field_176488_a)).intValue() >= 7 && p_180653_1_.field_73012_v.nextInt(50) == 0)
- {
- func_180635_a(p_180653_1_, p_180653_2_, new ItemStack(Items.field_151170_bI));
- }
- }
+ if (false && !p_180653_1_.field_72995_K) //Forge: Moved to getDrops
{
if (this.func_185525_y(p_180653_3_) && p_180653_1_.field_73012_v.nextInt(50) == 0)
{
@@ -40,4 +40,13 @@
{
return field_185534_a[((Integer)p_185496_1_.func_177229_b(this.func_185524_e())).intValue()];
}
+
+ @Override
+ public java.util.List<net.minecraft.item.ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
+ public java.util.List<ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
+ {
+ java.util.List<ItemStack> ret = super.getDrops(world, pos, state, fortune);
+ java.util.Random rand = world instanceof World ? ((World)world).field_73012_v : new java.util.Random();
+ if (((Integer)state.func_177229_b(field_176488_a)) >= 7 && rand.nextInt(50) == 0)
+ if (this.func_185525_y(state) && RANDOM.nextInt(50) == 0)
+ ret.add(new ItemStack(Items.field_151170_bI));
+ return ret;
+ }
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockPumpkin.java
+++ ../src-work/minecraft/net/minecraft/block/BlockPumpkin.java
@@ -115,7 +115,7 @@
@@ -118,7 +118,7 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
- return p_176196_1_.func_180495_p(p_176196_2_).func_177230_c().field_149764_J.func_76222_j() && World.func_175683_a(p_176196_1_, p_176196_2_.func_177977_b());
+ return p_176196_1_.func_180495_p(p_176196_2_).func_177230_c().func_176200_f(p_176196_1_, p_176196_2_) && World.func_175683_a(p_176196_1_, p_176196_2_.func_177977_b());
- return p_176196_1_.func_180495_p(p_176196_2_).func_177230_c().field_149764_J.func_76222_j() && p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_185896_q();
+ return p_176196_1_.func_180495_p(p_176196_2_).func_177230_c().func_176200_f(p_176196_1_, p_176196_2_) && p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).isSideSolid(p_176196_1_, p_176196_2_, EnumFacing.UP);
}
public IBlockState func_180642_a(World p_180642_1_, BlockPos p_180642_2_, EnumFacing p_180642_3_, float p_180642_4_, float p_180642_5_, float p_180642_6_, int p_180642_7_, EntityLivingBase p_180642_8_)
public IBlockState func_185499_a(IBlockState p_185499_1_, Rotation p_185499_2_)
@@ -1,13 +1,13 @@
--- ../src-base/minecraft/net/minecraft/block/BlockQuartz.java
+++ ../src-work/minecraft/net/minecraft/block/BlockQuartz.java
@@ -90,6 +90,26 @@
return new BlockState(this, new IProperty[] {field_176335_a});
@@ -113,6 +113,26 @@
return new BlockStateContainer(this, new IProperty[] {field_176335_a});
}
+ public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty prop : state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("variant") && prop.func_177699_b() == EnumType.class)
+ {
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRailBase.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRailBase.java
@@ -31,7 +31,7 @@
@@ -33,7 +33,7 @@
public static boolean func_176563_d(IBlockState p_176563_0_)
{
Block block = p_176563_0_.func_177230_c();
@@ -9,7 +9,46 @@
}
protected BlockRailBase(boolean p_i45389_1_)
@@ -175,6 +175,98 @@
@@ -67,7 +67,7 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
- return p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_185896_q();
+ return p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).isSideSolid(p_176196_1_, p_176196_2_, EnumFacing.UP);
}
public void func_176213_c(World p_176213_1_, BlockPos p_176213_2_, IBlockState p_176213_3_)
@@ -90,24 +90,24 @@
BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = (BlockRailBase.EnumRailDirection)p_189540_1_.func_177229_b(this.func_176560_l());
boolean flag = false;
- if (!p_189540_2_.func_180495_p(p_189540_3_.func_177977_b()).func_185896_q())
+ if (!p_189540_2_.func_180495_p(p_189540_3_.func_177977_b()).isSideSolid(p_189540_2_, p_189540_3_.func_177977_b(), EnumFacing.UP))
{
flag = true;
}
- if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_EAST && !p_189540_2_.func_180495_p(p_189540_3_.func_177974_f()).func_185896_q())
+ if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_EAST && !p_189540_2_.func_180495_p(p_189540_3_.func_177974_f()).isSideSolid(p_189540_2_, p_189540_3_.func_177974_f(), EnumFacing.UP))
{
flag = true;
}
- else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_WEST && !p_189540_2_.func_180495_p(p_189540_3_.func_177976_e()).func_185896_q())
+ else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_WEST && !p_189540_2_.func_180495_p(p_189540_3_.func_177976_e()).isSideSolid(p_189540_2_, p_189540_3_.func_177976_e(), EnumFacing.UP))
{
flag = true;
}
- else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_NORTH && !p_189540_2_.func_180495_p(p_189540_3_.func_177978_c()).func_185896_q())
+ else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_NORTH && !p_189540_2_.func_180495_p(p_189540_3_.func_177978_c()).isSideSolid(p_189540_2_, p_189540_3_.func_177978_c(), EnumFacing.UP))
{
flag = true;
}
- else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_SOUTH && !p_189540_2_.func_180495_p(p_189540_3_.func_177968_d()).func_185896_q())
+ else if (blockrailbase$enumraildirection == BlockRailBase.EnumRailDirection.ASCENDING_SOUTH && !p_189540_2_.func_180495_p(p_189540_3_.func_177968_d()).isSideSolid(p_189540_2_, p_189540_3_.func_177968_d(), EnumFacing.UP))
{
flag = true;
}
@@ -162,6 +162,98 @@
public abstract IProperty<BlockRailBase.EnumRailDirection> func_176560_l();
@@ -92,7 +131,7 @@
+ public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ for (IProperty prop : (java.util.Set<IProperty>)state.func_177228_b().keySet())
+ for (IProperty prop : state.func_177228_b().keySet())
+ {
+ if (prop.func_177701_a().equals("shape"))
+ {
@@ -108,7 +147,7 @@
public static enum EnumRailDirection implements IStringSerializable
{
NORTH_SOUTH(0, "north_south"),
@@ -245,6 +337,7 @@
@@ -232,6 +324,7 @@
private IBlockState field_180366_e;
private final boolean field_150656_f;
private final List<BlockPos> field_150657_g = Lists.<BlockPos>newArrayList();
@@ -116,19 +155,19 @@
public Rail(World p_i45739_2_, BlockPos p_i45739_3_, IBlockState p_i45739_4_)
{
@@ -252,8 +345,9 @@
@@ -239,8 +332,9 @@
this.field_180367_c = p_i45739_3_;
this.field_180366_e = p_i45739_4_;
this.field_180365_d = (BlockRailBase)p_i45739_4_.func_177230_c();
- BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = (BlockRailBase.EnumRailDirection)p_i45739_4_.func_177229_b(BlockRailBase.this.func_176560_l());
- BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = (BlockRailBase.EnumRailDirection)p_i45739_4_.func_177229_b(this.field_180365_d.func_176560_l());
- this.field_150656_f = this.field_180365_d.field_150053_a;
+ BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = field_180365_d.getRailDirection(p_i45739_2_, p_i45739_3_, p_i45739_4_, null);
+ this.field_150656_f = !this.field_180365_d.isFlexibleRail(p_i45739_2_, p_i45739_3_);
+ canMakeSlopes = this.field_180365_d.canMakeSlopes(p_i45739_2_, p_i45739_3_);
+ this.canMakeSlopes = this.field_180365_d.canMakeSlopes(p_i45739_2_, p_i45739_3_);
this.func_180360_a(blockrailbase$enumraildirection);
}
@@ -439,7 +533,7 @@
@@ -432,7 +526,7 @@
}
}
@@ -137,7 +176,7 @@
{
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos.func_177984_a()))
{
@@ -452,7 +546,7 @@
@@ -445,7 +539,7 @@
}
}
@@ -146,7 +185,7 @@
{
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos3.func_177984_a()))
{
@@ -595,7 +689,7 @@
@@ -588,7 +682,7 @@
}
}
@@ -155,7 +194,7 @@
{
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos.func_177984_a()))
{
@@ -608,7 +702,7 @@
@@ -601,7 +695,7 @@
}
}
@@ -1,7 +1,7 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneComparator.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneComparator.java
@@ -295,6 +295,21 @@
return this.func_176223_P().func_177226_a(field_176387_N, p_180642_8_.func_174811_aO().func_176734_d()).func_177226_a(field_176464_a, Boolean.valueOf(false)).func_177226_a(field_176463_b, BlockRedstoneComparator.Mode.COMPARE);
@@ -313,6 +313,21 @@
return this.func_176223_P().func_177226_a(field_185512_D, p_180642_8_.func_174811_aO().func_176734_d()).func_177226_a(field_176464_a, Boolean.valueOf(false)).func_177226_a(field_176463_b, BlockRedstoneComparator.Mode.COMPARE);
}
+ @Override
@@ -9,7 +9,7 @@
+ {
+ if (pos.func_177956_o() == neighbor.func_177956_o() && world instanceof World)
+ {
+ func_176204_a((World)world, pos, world.func_180495_p(pos), world.func_180495_p(neighbor).func_177230_c());
+ func_189540_a(world.func_180495_p(pos), (World)world, pos, world.func_180495_p(neighbor).func_177230_c());
+ }
+ }
+
@@ -1,8 +1,8 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneDiode.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneDiode.java
@@ -198,6 +198,8 @@
@@ -204,6 +204,8 @@
{
EnumFacing enumfacing = (EnumFacing)p_176400_3_.func_177229_b(field_176387_N);
EnumFacing enumfacing = (EnumFacing)p_176400_3_.func_177229_b(field_185512_D);
BlockPos blockpos = p_176400_2_.func_177972_a(enumfacing.func_176734_d());
+ if(net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(p_176400_1_, p_176400_2_, p_176400_1_.func_180495_p(p_176400_2_), java.util.EnumSet.of(enumfacing.func_176734_d())).isCanceled())
+ return;
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneOre.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneOre.java
@@ -91,12 +91,16 @@
@@ -94,12 +94,16 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
@@ -8,9 +8,9 @@
- if (this.func_180660_a(p_180653_3_, p_180653_1_.field_73012_v, p_180653_5_) != Item.func_150898_a(this))
+ @Override
+ public int getExpDrop(net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ public int getExpDrop(IBlockState state, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
+ {
+ if (this.func_180660_a(world.func_180495_p(pos), RANDOM, fortune) != Item.func_150898_a(this))
+ if (this.func_180660_a(state, RANDOM, fortune) != Item.func_150898_a(this))
{
- int i = 1 + p_180653_1_.field_73012_v.nextInt(5);
- this.func_180637_b(p_180653_1_, p_180653_2_, i);
@@ -1,59 +1,55 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneWire.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneWire.java
@@ -58,10 +58,10 @@
@@ -98,15 +98,15 @@
BlockPos blockpos = p_176341_2_.func_177972_a(p_176341_3_);
Block block = p_176341_1_.func_180495_p(p_176341_2_.func_177972_a(p_176341_3_)).func_177230_c();
IBlockState iblockstate = p_176341_1_.func_180495_p(p_176341_2_.func_177972_a(p_176341_3_));
- if (!func_176343_a(p_176341_1_.func_180495_p(blockpos), p_176341_3_) && (block.func_149637_q() || !func_176346_d(p_176341_1_.func_180495_p(blockpos.func_177977_b()))))
+ if (!canRestoneConnect(p_176341_1_, blockpos, p_176341_3_) && (block.func_149637_q() || !canRestoneConnect(p_176341_1_, blockpos.func_177977_b(), null)))
- if (!func_176343_a(p_176341_1_.func_180495_p(blockpos), p_176341_3_) && (iblockstate.func_185915_l() || !func_176346_d(p_176341_1_.func_180495_p(blockpos.func_177977_b()))))
+ if (!canConnectTo(p_176341_1_.func_180495_p(blockpos), p_176341_3_, p_176341_1_, blockpos) && (iblockstate.func_185915_l() || !func_176340_e(p_176341_1_, blockpos.func_177977_b())))
{
Block block1 = p_176341_1_.func_180495_p(p_176341_2_.func_177984_a()).func_177230_c();
- return !block1.func_149637_q() && block.func_149637_q() && func_176346_d(p_176341_1_.func_180495_p(blockpos.func_177984_a())) ? BlockRedstoneWire.EnumAttachPosition.UP : BlockRedstoneWire.EnumAttachPosition.NONE;
+ return !block1.func_149637_q() && block.func_149637_q() && canRestoneConnect(p_176341_1_, blockpos.func_177984_a(), null) ? BlockRedstoneWire.EnumAttachPosition.UP : BlockRedstoneWire.EnumAttachPosition.NONE;
}
else
{
@@ -359,35 +359,24 @@
Block block = iblockstate.func_177230_c();
boolean flag = block.func_149721_r();
boolean flag1 = p_176339_1_.func_180495_p(p_176339_2_.func_177984_a()).func_177230_c().func_149721_r();
- return !flag1 && flag && func_176340_e(p_176339_1_, blockpos.func_177984_a()) ? true : (func_176343_a(iblockstate, p_176339_3_) ? true : (block == Blocks.field_150416_aS && iblockstate.func_177229_b(BlockRedstoneDiode.field_176387_N) == p_176339_3_ ? true : !flag && func_176340_e(p_176339_1_, blockpos.func_177977_b())));
+ return !flag1 && flag && canRestoneConnect(p_176339_1_, blockpos.func_177984_a(), null) ? true : (canRestoneConnect(p_176339_1_, blockpos, p_176339_3_) ? true : (block == Blocks.field_150416_aS && iblockstate.func_177229_b(BlockRedstoneDiode.field_176387_N) == p_176339_3_ ? true : !flag && canRestoneConnect(p_176339_1_, blockpos.func_177977_b(), null)));
IBlockState iblockstate1 = p_176341_1_.func_180495_p(p_176341_2_.func_177984_a());
if (!iblockstate1.func_185915_l())
{
- boolean flag = p_176341_1_.func_180495_p(blockpos).func_185896_q() || p_176341_1_.func_180495_p(blockpos).func_177230_c() == Blocks.field_150426_aN;
+ boolean flag = p_176341_1_.func_180495_p(blockpos).isSideSolid(p_176341_1_, blockpos, EnumFacing.UP) || p_176341_1_.func_180495_p(blockpos).func_177230_c() == Blocks.field_150426_aN;
- if (flag && func_176346_d(p_176341_1_.func_180495_p(blockpos.func_177984_a())))
+ if (flag && func_176340_e(p_176341_1_, blockpos.func_177984_a()))
{
if (iblockstate.func_185898_k())
{
@@ -409,21 +409,16 @@
IBlockState iblockstate = p_176339_1_.func_180495_p(blockpos);
boolean flag = iblockstate.func_185915_l();
boolean flag1 = p_176339_1_.func_180495_p(p_176339_2_.func_177984_a()).func_185915_l();
- return !flag1 && flag && func_176340_e(p_176339_1_, blockpos.func_177984_a()) ? true : (func_176343_a(iblockstate, p_176339_3_) ? true : (iblockstate.func_177230_c() == Blocks.field_150416_aS && iblockstate.func_177229_b(BlockRedstoneDiode.field_185512_D) == p_176339_3_ ? true : !flag && func_176340_e(p_176339_1_, blockpos.func_177977_b())));
+ return !flag1 && flag && func_176340_e(p_176339_1_, blockpos.func_177984_a()) ? true : (canConnectTo(iblockstate, p_176339_3_, p_176339_1_, p_176339_2_) ? true : (iblockstate.func_177230_c() == Blocks.field_150416_aS && iblockstate.func_177229_b(BlockRedstoneDiode.field_185512_D) == p_176339_3_ ? true : !flag && func_176340_e(p_176339_1_, blockpos.func_177977_b())));
}
- protected static boolean func_176340_e(IBlockAccess p_176340_0_, BlockPos p_176340_1_)
+ protected static boolean canRestoneConnect(IBlockAccess world, BlockPos pos, EnumFacing side)
protected static boolean func_176340_e(IBlockAccess p_176340_0_, BlockPos p_176340_1_)
{
- return func_176346_d(p_176340_0_.func_180495_p(p_176340_1_));
- }
-
+ return canConnectTo(p_176340_0_.func_180495_p(p_176340_1_), null, p_176340_0_, p_176340_1_);
}
- protected static boolean func_176346_d(IBlockState p_176346_0_)
- {
+ protected static boolean canConnectTo(IBlockState p_176343_0_, @Nullable EnumFacing p_176343_1_, IBlockAccess world, BlockPos pos )
{
- return func_176343_a(p_176346_0_, (EnumFacing)null);
- }
-
- protected static boolean func_176343_a(IBlockState p_176343_0_, EnumFacing p_176343_1_)
- protected static boolean func_176343_a(IBlockState p_176343_0_, @Nullable EnumFacing p_176343_1_)
- {
- Block block = p_176343_0_.func_177230_c();
-
- if (block == Blocks.field_150488_af)
+ IBlockState state = world.func_180495_p(pos);
+ if (state.func_177230_c() == Blocks.field_150488_af)
{
return true;
}
- else if (Blocks.field_150413_aR.func_149907_e(block))
+ else if (Blocks.field_150413_aR.func_149907_e(state.func_177230_c()))
{
- EnumFacing enumfacing = (EnumFacing)p_176343_0_.func_177229_b(BlockRedstoneRepeater.field_176387_N);
- return enumfacing == p_176343_1_ || enumfacing.func_176734_d() == p_176343_1_;
+ EnumFacing direction = (EnumFacing)state.func_177229_b(BlockRedstoneRepeater.field_176387_N);
+ return direction == side || direction.func_176734_d() == side;
Block block = p_176343_0_.func_177230_c();
if (block == Blocks.field_150488_af)
@@ -437,7 +432,7 @@
}
else
{
- return block.func_149744_f() && p_176343_1_ != null;
+ return state.func_177230_c().canConnectRedstone(world, pos, side);
- return p_176343_0_.func_185897_m() && p_176343_1_ != null;
+ return p_176343_0_.func_177230_c().canConnectRedstone(p_176343_0_, world, pos, p_176343_1_);
}
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockReed.java
+++ ../src-work/minecraft/net/minecraft/block/BlockReed.java
@@ -18,7 +18,7 @@
@@ -20,7 +20,7 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -8,20 +8,22 @@
+public class BlockReed extends Block implements net.minecraftforge.common.IPlantable
{
public static final PropertyInteger field_176355_a = PropertyInteger.func_177719_a("age", 0, 15);
protected static final AxisAlignedBB field_185701_b = new AxisAlignedBB(0.125D, 0.0D, 0.125D, 0.875D, 1.0D, 0.875D);
@@ -70,7 +70,9 @@
@@ -65,6 +65,7 @@
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
Block block = p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_177230_c();
+ if (block.canSustainPlant(p_176196_1_, p_176196_2_.func_177977_b(), EnumFacing.UP, this)) return true;
- Block block = p_176196_1_.func_180495_p(p_176196_2_.func_177977_b()).func_177230_c();
+ IBlockState state = p_176196_1_.func_180495_p(p_176196_2_.func_177977_b());
+ Block block = state.func_177230_c();
+ if (block.canSustainPlant(state, p_176196_1_, p_176196_2_.func_177977_b(), EnumFacing.UP, this)) return true;
if (block == this)
{
@@ -164,4 +165,15 @@
{
return new BlockState(this, new IProperty[] {field_176355_a});
@@ -165,6 +167,17 @@
return ((Integer)p_176201_1_.func_177229_b(field_176355_a)).intValue();
}
+
+ @Override
+ public net.minecraftforge.common.EnumPlantType getPlantType(IBlockAccess world, BlockPos pos)
+ {
@@ -32,4 +34,7 @@
+ {
+ return this.func_176223_P();
+ }
}
+
protected BlockStateContainer func_180661_e()
{
return new BlockStateContainer(this, new IProperty[] {field_176355_a});
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockRotatedPillar.java
+++ ../src-work/minecraft/net/minecraft/block/BlockRotatedPillar.java
@@ -18,4 +18,18 @@
{
@@ -28,6 +28,21 @@
super(p_i46385_1_, p_i46385_2_);
}
+
+ public boolean rotateBlock(net.minecraft.world.World world, net.minecraft.util.BlockPos pos, EnumFacing axis)
+ @Override
+ public boolean rotateBlock(net.minecraft.world.World world, BlockPos pos, EnumFacing axis)
+ {
+ net.minecraft.block.state.IBlockState state = world.func_180495_p(pos);
+ for (net.minecraft.block.properties.IProperty<?> prop : state.func_177228_b().keySet())
@@ -18,4 +18,7 @@
+ }
+ return false;
+ }
}
+
public IBlockState func_185499_a(IBlockState p_185499_1_, Rotation p_185499_2_)
{
switch (p_185499_2_)
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockSapling.java
+++ ../src-work/minecraft/net/minecraft/block/BlockSapling.java
@@ -71,6 +71,7 @@
@@ -77,6 +77,7 @@
public void func_176476_e(World p_176476_1_, BlockPos p_176476_2_, IBlockState p_176476_3_, Random p_176476_4_)
{
@@ -1,7 +1,7 @@
--- ../src-base/minecraft/net/minecraft/block/BlockSkull.java
+++ ../src-work/minecraft/net/minecraft/block/BlockSkull.java
@@ -121,10 +121,6 @@
return tileentity instanceof TileEntitySkull ? ((TileEntitySkull)tileentity).func_145904_a() : super.func_176222_j(p_176222_1_, p_176222_2_);
@@ -117,10 +117,6 @@
return new ItemStack(Items.field_151144_bL, 1, i);
}
- public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
@@ -11,7 +11,7 @@
public void func_176208_a(World p_176208_1_, BlockPos p_176208_2_, IBlockState p_176208_3_, EntityPlayer p_176208_4_)
{
if (p_176208_4_.field_71075_bZ.field_75098_d)
@@ -132,13 +128,18 @@
@@ -128,13 +124,18 @@
p_176208_3_ = p_176208_3_.func_177226_a(field_176417_b, Boolean.valueOf(true));
p_176208_1_.func_180501_a(p_176208_2_, p_176208_3_, 4);
}
@@ -31,16 +31,16 @@
{
if (!((Boolean)p_180663_3_.func_177229_b(field_176417_b)).booleanValue())
{
@@ -147,7 +148,7 @@
@@ -143,7 +144,7 @@
if (tileentity instanceof TileEntitySkull)
{
TileEntitySkull tileentityskull = (TileEntitySkull)tileentity;
- ItemStack itemstack = new ItemStack(Items.field_151144_bL, 1, this.func_176222_j(p_180663_1_, p_180663_2_));
- ItemStack itemstack = this.func_185473_a(p_180663_1_, p_180663_2_, p_180663_3_);
+ ItemStack itemstack = new ItemStack(Items.field_151144_bL, 1, tileentityskull.func_145904_a());
if (tileentityskull.func_145904_a() == 3 && tileentityskull.func_152108_a() != null)
{
@@ -157,12 +158,11 @@
@@ -153,12 +154,11 @@
itemstack.func_77978_p().func_74782_a("SkullOwner", nbttagcompound);
}
@@ -54,4 +54,4 @@
+ return ret;
}
public Item func_180660_a(IBlockState p_180660_1_, Random p_180660_2_, int p_180660_3_)
@Nullable
@@ -1,38 +1,35 @@
--- ../src-base/minecraft/net/minecraft/block/BlockSlab.java
+++ ../src-work/minecraft/net/minecraft/block/BlockSlab.java
@@ -91,6 +91,17 @@
@@ -50,6 +50,16 @@
return this.func_176552_j();
}
+ @Override
+ public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing face)
+ {
+ if ( func_149662_c() )
+ public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face)
+ {
+ if ( state.func_185914_p() )
+ return true;
+
+ // face is on the block being rendered, not this block.
+ EnumBlockHalf side = world.func_180495_p(pos).func_177229_b(field_176554_a);
+ return (side == EnumBlockHalf.TOP && face == EnumFacing.DOWN) || (side == EnumBlockHalf.BOTTOM && face == EnumFacing.UP);
+
+ EnumBlockHalf side = state.func_177229_b(field_176554_a);
+ return (side == EnumBlockHalf.TOP && face == EnumFacing.UP) || (side == EnumBlockHalf.BOTTOM && face == EnumFacing.DOWN);
+ }
+
public IBlockState func_180642_a(World p_180642_1_, BlockPos p_180642_2_, EnumFacing p_180642_3_, float p_180642_4_, float p_180642_5_, float p_180642_6_, int p_180642_7_, EntityLivingBase p_180642_8_)
{
IBlockState iblockstate = super.func_180642_a(p_180642_1_, p_180642_2_, p_180642_3_, p_180642_4_, p_180642_5_, p_180642_6_, p_180642_7_, p_180642_8_).func_177226_a(field_176554_a, BlockSlab.EnumBlockHalf.BOTTOM);
@@ -118,15 +129,8 @@
@@ -77,13 +87,14 @@
{
return false;
}
- else
- {
- BlockPos blockpos = p_176225_2_.func_177972_a(p_176225_3_.func_176734_d());
- IBlockState iblockstate = p_176225_1_.func_180495_p(p_176225_2_);
- IBlockState iblockstate1 = p_176225_1_.func_180495_p(blockpos);
- boolean flag = func_150003_a(iblockstate.func_177230_c()) && iblockstate.func_177229_b(field_176554_a) == BlockSlab.EnumBlockHalf.TOP;
- boolean flag1 = func_150003_a(iblockstate1.func_177230_c()) && iblockstate1.func_177229_b(field_176554_a) == BlockSlab.EnumBlockHalf.TOP;
- return flag1 ? (p_176225_3_ == EnumFacing.DOWN ? true : (p_176225_3_ == EnumFacing.UP && super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_) ? true : !func_150003_a(iblockstate.func_177230_c()) || !flag)) : (p_176225_3_ == EnumFacing.UP ? true : (p_176225_3_ == EnumFacing.DOWN && super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_) ? true : !func_150003_a(iblockstate.func_177230_c()) || flag));
- }
+ // additional logic breaks doesSideBlockRendering and is no longer useful.
+ return super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_);
+ else if (false) // Forge: Additional logic breaks doesSideBlockRendering and is no longer useful.
{
IBlockState iblockstate = p_176225_2_.func_180495_p(p_176225_3_.func_177972_a(p_176225_4_));
boolean flag = func_185675_i(iblockstate) && iblockstate.func_177229_b(field_176554_a) == BlockSlab.EnumBlockHalf.TOP;
boolean flag1 = func_185675_i(p_176225_1_) && p_176225_1_.func_177229_b(field_176554_a) == BlockSlab.EnumBlockHalf.TOP;
return flag1 ? (p_176225_4_ == EnumFacing.DOWN ? true : (p_176225_4_ == EnumFacing.UP && super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_, p_176225_4_) ? true : !func_185675_i(iblockstate) || !flag)) : (p_176225_4_ == EnumFacing.UP ? true : (p_176225_4_ == EnumFacing.DOWN && super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_, p_176225_4_) ? true : !func_185675_i(iblockstate) || flag));
}
+ return super.func_176225_a(p_176225_1_, p_176225_2_, p_176225_3_, p_176225_4_);
}
@SideOnly(Side.CLIENT)
@@ -1,15 +1,15 @@
--- ../src-base/minecraft/net/minecraft/block/BlockSnow.java
+++ ../src-work/minecraft/net/minecraft/block/BlockSnow.java
@@ -79,7 +79,7 @@
@@ -75,7 +75,7 @@
{
IBlockState iblockstate = p_176196_1_.func_180495_p(p_176196_2_.func_177977_b());
Block block = iblockstate.func_177230_c();
- return block != Blocks.field_150432_aD && block != Blocks.field_150403_cj ? (block.func_149688_o() == Material.field_151584_j ? true : (block == this && ((Integer)iblockstate.func_177229_b(field_176315_a)).intValue() >= 7 ? true : block.func_149662_c() && block.field_149764_J.func_76230_c())) : false;
+ return block != Blocks.field_150432_aD && block != Blocks.field_150403_cj ? (block.isLeaves(p_176196_1_, p_176196_2_.func_177977_b()) ? true : (block == this && ((Integer)iblockstate.func_177229_b(field_176315_a)).intValue() >= 7 ? true : block.func_149662_c() && block.field_149764_J.func_76230_c())) : false;
- return block != Blocks.field_150432_aD && block != Blocks.field_150403_cj ? (iblockstate.func_185904_a() == Material.field_151584_j ? true : (block == this && ((Integer)iblockstate.func_177229_b(field_176315_a)).intValue() >= 7 ? true : iblockstate.func_185914_p() && iblockstate.func_185904_a().func_76230_c())) : false;
+ return block != Blocks.field_150432_aD && block != Blocks.field_150403_cj ? (iblockstate.func_177230_c().isLeaves(iblockstate, p_176196_1_, p_176196_2_.func_177977_b()) ? true : (block == this && ((Integer)iblockstate.func_177229_b(field_176315_a)).intValue() >= 7 ? true : iblockstate.func_185914_p() && iblockstate.func_185904_a().func_76230_c())) : false;
}
public void func_176204_a(World p_176204_1_, BlockPos p_176204_2_, IBlockState p_176204_3_, Block p_176204_4_)
@@ -91,7 +91,6 @@
public void func_189540_a(IBlockState p_189540_1_, World p_189540_2_, BlockPos p_189540_3_, Block p_189540_4_)
@@ -87,7 +87,6 @@
{
if (!this.func_176196_c(p_176314_1_, p_176314_2_))
{
@@ -17,18 +17,18 @@
p_176314_1_.func_175698_g(p_176314_2_);
return false;
}
@@ -103,9 +102,8 @@
@@ -99,9 +98,8 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Items.field_151126_ay, ((Integer)p_180657_4_.func_177229_b(field_176315_a)).intValue() + 1, 0));
+ super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
+ super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_, p_180657_6_);
p_180657_1_.func_175698_g(p_180657_3_);
- p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
- p_180657_2_.func_71029_a(StatList.func_188055_a(this));
}
public Item func_180660_a(IBlockState p_180660_1_, Random p_180660_2_, int p_180660_3_)
@@ -115,14 +113,13 @@
@Nullable
@@ -112,14 +110,13 @@
public int func_149745_a(Random p_149745_1_)
{
@@ -44,10 +44,12 @@
p_180650_1_.func_175698_g(p_180650_2_);
}
}
@@ -152,4 +149,6 @@
{
return new BlockState(this, new IProperty[] {field_176315_a});
@@ -153,6 +150,8 @@
return ((Integer)p_176201_1_.func_177229_b(field_176315_a)).intValue() - 1;
}
+
+ @Override public int quantityDropped(IBlockState state, int fortune, Random random){ return ((Integer)state.func_177229_b(field_176315_a)) + 1; }
}
+
protected BlockStateContainer func_180661_e()
{
return new BlockStateContainer(this, new IProperty[] {field_176315_a});
@@ -1,22 +1,20 @@
--- ../src-base/minecraft/net/minecraft/block/BlockStairs.java
+++ ../src-work/minecraft/net/minecraft/block/BlockStairs.java
@@ -68,6 +68,19 @@
return false;
@@ -445,6 +445,17 @@
return new BlockStateContainer(this, new IProperty[] {field_176309_a, field_176308_b, field_176310_M});
}
+ @Override
+ public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing face)
+ {
+ if ( func_149662_c() )
+ public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face)
+ {
+ if ( state.func_185914_p() )
+ return true;
+
+ // face is on the block being rendered, not this block.
+ IBlockState iblockstate = world.func_180495_p(pos);
+ EnumHalf half = iblockstate.func_177229_b(field_176308_b);
+ EnumFacing side = iblockstate.func_177229_b(field_176309_a);
+ return side == face.func_176734_d() || (half == EnumHalf.TOP && face == EnumFacing.DOWN) || (half == EnumHalf.BOTTOM && face == EnumFacing.UP);
+
+ EnumHalf half = state.func_177229_b(field_176308_b);
+ EnumFacing side = state.func_177229_b(field_176309_a);
+ return side == face || (half == EnumHalf.TOP && face == EnumFacing.UP) || (half == EnumHalf.BOTTOM && face == EnumFacing.DOWN);
+ }
+
public boolean func_149686_d()
public static enum EnumHalf implements IStringSerializable
{
return false;
TOP("top"),
@@ -0,0 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/BlockStaticLiquid.java
+++ ../src-work/minecraft/net/minecraft/block/BlockStaticLiquid.java
@@ -52,7 +52,7 @@
{
blockpos = blockpos.func_177982_a(p_180650_4_.nextInt(3) - 1, 1, p_180650_4_.nextInt(3) - 1);
- if (blockpos.func_177956_o() >= 0 && blockpos.func_177956_o() < 256 && !p_180650_1_.func_175667_e(blockpos))
+ if (blockpos.func_177956_o() >= 0 && blockpos.func_177956_o() < p_180650_1_.func_72800_K() && !p_180650_1_.func_175667_e(blockpos))
{
return;
}
@@ -1,15 +1,19 @@
--- ../src-base/minecraft/net/minecraft/block/BlockStem.java
+++ ../src-work/minecraft/net/minecraft/block/BlockStem.java
@@ -94,7 +94,7 @@
@@ -90,9 +90,10 @@
}
p_180650_2_ = p_180650_2_.func_177972_a(EnumFacing.Plane.HORIZONTAL.func_179518_a(p_180650_4_));
Block block = p_180650_1_.func_180495_p(p_180650_2_.func_177977_b()).func_177230_c();
- Block block = p_180650_1_.func_180495_p(p_180650_2_.func_177977_b()).func_177230_c();
+ IBlockState soil = p_180650_1_.func_180495_p(p_180650_2_.func_177977_b());
+ Block block = soil.func_177230_c();
- if (p_180650_1_.func_180495_p(p_180650_2_).func_177230_c().field_149764_J == Material.field_151579_a && (block == Blocks.field_150458_ak || block == Blocks.field_150346_d || block == Blocks.field_150349_c))
+ if (p_180650_1_.func_175623_d(p_180650_2_) && (block.canSustainPlant(p_180650_1_, p_180650_2_.func_177977_b(), EnumFacing.UP, this) || block == Blocks.field_150346_d || block == Blocks.field_150349_c))
+ if (p_180650_1_.func_175623_d(p_180650_2_) && (block.canSustainPlant(soil, p_180650_1_, p_180650_2_.func_177977_b(), EnumFacing.UP, this) || block == Blocks.field_150346_d || block == Blocks.field_150349_c))
{
p_180650_1_.func_175656_a(p_180650_2_, this.field_149877_a.func_176223_P());
}
@@ -148,24 +148,29 @@
@@ -110,24 +111,29 @@
public void func_180653_a(World p_180653_1_, BlockPos p_180653_2_, IBlockState p_180653_3_, float p_180653_4_, int p_180653_5_)
{
super.func_180653_a(p_180653_1_, p_180653_2_, p_180653_3_, p_180653_4_, p_180653_5_);
@@ -42,4 +46,4 @@
+ return ret;
}
protected Item func_176481_j()
@Nullable
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockTallGrass.java
+++ ../src-work/minecraft/net/minecraft/block/BlockTallGrass.java
@@ -23,7 +23,7 @@
@@ -24,7 +24,7 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -8,18 +8,18 @@
+public class BlockTallGrass extends BlockBush implements IGrowable, net.minecraftforge.common.IShearable
{
public static final PropertyEnum<BlockTallGrass.EnumType> field_176497_a = PropertyEnum.<BlockTallGrass.EnumType>func_177709_a("type", BlockTallGrass.EnumType.class);
@@ -43,7 +43,7 @@
protected static final AxisAlignedBB field_185522_c = new AxisAlignedBB(0.09999999403953552D, 0.0D, 0.09999999403953552D, 0.8999999761581421D, 0.800000011920929D, 0.8999999761581421D);
@@ -42,7 +42,7 @@
public boolean func_180671_f(World p_180671_1_, BlockPos p_180671_2_, IBlockState p_180671_3_)
{
- return this.func_149854_a(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()).func_177230_c());
- return this.func_185514_i(p_180671_1_.func_180495_p(p_180671_2_.func_177977_b()));
+ return super.func_180671_f(p_180671_1_, p_180671_2_, p_180671_3_);
}
public boolean func_176200_f(World p_176200_1_, BlockPos p_176200_2_)
public boolean func_176200_f(IBlockAccess p_176200_1_, BlockPos p_176200_2_)
@@ -53,7 +53,7 @@
@Nullable
public Item func_180660_a(IBlockState p_180660_1_, Random p_180660_2_, int p_180660_3_)
{
- return p_180660_2_.nextInt(8) == 0 ? Items.field_151014_N : null;
@@ -27,21 +27,16 @@
}
public int func_149679_a(int p_149679_1_, Random p_149679_2_)
@@ -63,13 +63,7 @@
@@ -63,7 +63,7 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- if (!p_180657_1_.field_72995_K && p_180657_2_.func_71045_bC() != null && p_180657_2_.func_71045_bC().func_77973_b() == Items.field_151097_aZ)
- if (!p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ)
+ if (false && !p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ) // Forge: Noop Taken care of by IShearable
{
- p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150329_H, 1, ((BlockTallGrass.EnumType)p_180657_4_.func_177229_b(field_176497_a)).func_177044_a()));
- }
- else
- {
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
}
}
@@ -204,4 +198,22 @@
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150329_H, 1, ((BlockTallGrass.EnumType)p_180657_4_.func_177229_b(field_176497_a)).func_177044_a()));
@@ -183,4 +183,22 @@
}
}
}
@@ -59,7 +54,7 @@
+ {
+ List<ItemStack> ret = new java.util.ArrayList<ItemStack>();
+ if (RANDOM.nextInt(8) != 0) return ret;
+ ItemStack seed = net.minecraftforge.common.ForgeHooks.getGrassSeed(RANDOM);
+ ItemStack seed = net.minecraftforge.common.ForgeHooks.getGrassSeed(RANDOM, fortune);
+ if (seed != null) ret.add(seed);
+ return ret;
+ }
@@ -1,15 +1,24 @@
--- ../src-base/minecraft/net/minecraft/block/BlockTorch.java
+++ ../src-work/minecraft/net/minecraft/block/BlockTorch.java
@@ -63,7 +63,7 @@
@@ -81,14 +81,14 @@
private boolean func_176594_d(World p_176594_1_, BlockPos p_176594_2_)
{
- if (p_176594_1_.func_180495_p(p_176594_2_).func_185896_q())
+ IBlockState state = p_176594_1_.func_180495_p(p_176594_2_);
+ if (state.isSideSolid(p_176594_1_, p_176594_2_, EnumFacing.UP))
{
return true;
}
else
{
Block block = p_176594_1_.func_180495_p(p_176594_2_).func_177230_c();
- Block block = p_176594_1_.func_180495_p(p_176594_2_).func_177230_c();
- return block instanceof BlockFence || block == Blocks.field_150359_w || block == Blocks.field_150463_bK || block == Blocks.field_150399_cn;
+ return block.canPlaceTorchOnTop(p_176594_1_, p_176594_2_);
+ return state.func_177230_c().canPlaceTorchOnTop(state, p_176594_1_, p_176594_2_);
}
}
@@ -84,7 +84,7 @@
@@ -109,7 +109,7 @@
{
BlockPos blockpos = p_176595_2_.func_177972_a(p_176595_3_.func_176734_d());
boolean flag = p_176595_3_.func_176740_k().func_176722_c();
@@ -18,7 +27,7 @@
}
public IBlockState func_180642_a(World p_180642_1_, BlockPos p_180642_2_, EnumFacing p_180642_3_, float p_180642_4_, float p_180642_5_, float p_180642_6_, int p_180642_7_, EntityLivingBase p_180642_8_)
@@ -97,7 +97,7 @@
@@ -122,7 +122,7 @@
{
for (EnumFacing enumfacing : EnumFacing.Plane.HORIZONTAL)
{
@@ -27,7 +36,7 @@
{
return this.func_176223_P().func_177226_a(field_176596_a, enumfacing);
}
@@ -130,7 +130,7 @@
@@ -155,7 +155,7 @@
EnumFacing enumfacing1 = enumfacing.func_176734_d();
boolean flag = false;
@@ -1,43 +1,21 @@
--- ../src-base/minecraft/net/minecraft/block/BlockTrapDoor.java
+++ ../src-work/minecraft/net/minecraft/block/BlockTrapDoor.java
@@ -25,6 +25,8 @@
public class BlockTrapDoor extends Block
{
+ /** Set this to allow trapdoors to remain free-floating */
+ public static boolean disableValidation = false;
public static final PropertyDirection field_176284_a = PropertyDirection.func_177712_a("facing", EnumFacing.Plane.HORIZONTAL);
public static final PropertyBool field_176283_b = PropertyBool.func_177716_a("open");
public static final PropertyEnum<BlockTrapDoor.DoorHalf> field_176285_M = PropertyEnum.<BlockTrapDoor.DoorHalf>func_177709_a("half", BlockTrapDoor.DoorHalf.class);
@@ -140,9 +142,10 @@
{
if (!p_176204_1_.field_72995_K)
{
+ EnumFacing direction = (EnumFacing)p_176204_3_.func_177229_b(field_176284_a);
BlockPos blockpos = p_176204_2_.func_177972_a(((EnumFacing)p_176204_3_.func_177229_b(field_176284_a)).func_176734_d());
- if (!func_150119_a(p_176204_1_.func_180495_p(blockpos).func_177230_c()))
+ if (!(func_150119_a(p_176204_1_.func_180495_p(blockpos).func_177230_c()) || p_176204_1_.isSideSolid(blockpos, direction, true)))
{
p_176204_1_.func_175698_g(p_176204_2_);
this.func_176226_b(p_176204_1_, p_176204_2_, p_176204_3_, 0);
@@ -186,7 +189,10 @@
public boolean func_176198_a(World p_176198_1_, BlockPos p_176198_2_, EnumFacing p_176198_3_)
{
- return !p_176198_3_.func_176740_k().func_176720_b() && func_150119_a(p_176198_1_.func_180495_p(p_176198_2_.func_177972_a(p_176198_3_.func_176734_d())).func_177230_c());
+ if (disableValidation) return true;
+ EnumFacing dir = p_176198_3_.func_176734_d();
+ p_176198_2_ = p_176198_2_.func_177972_a(dir);
+ return !p_176198_3_.func_176740_k().func_176720_b() && (func_150119_a(p_176198_1_.func_180495_p(p_176198_2_).func_177230_c()) || p_176198_1_.isSideSolid(p_176198_2_, p_176198_3_, true));
@@ -242,6 +242,18 @@
return new BlockStateContainer(this, new IProperty[] {field_176284_a, field_176283_b, field_176285_M});
}
protected static EnumFacing func_176281_b(int p_176281_0_)
@@ -223,6 +229,7 @@
private static boolean func_150119_a(Block p_150119_0_)
+ @Override
+ public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity)
+ {
+ if (state.func_177229_b(field_176283_b))
+ {
+ IBlockState down = world.func_180495_p(pos.func_177977_b());
+ if (down.func_177230_c() == net.minecraft.init.Blocks.field_150468_ap)
+ return down.func_177229_b(BlockLadder.field_176382_a) == state.func_177229_b(field_176284_a);
+ }
+ return false;
+ }
+
public static enum DoorHalf implements IStringSerializable
{
+ if (disableValidation) return true;
return p_150119_0_.field_149764_J.func_76218_k() && p_150119_0_.func_149686_d() || p_150119_0_ == Blocks.field_150426_aN || p_150119_0_ instanceof BlockSlab || p_150119_0_ instanceof BlockStairs;
}
TOP("top"),
@@ -1,28 +1,28 @@
--- ../src-base/minecraft/net/minecraft/block/BlockTripWireHook.java
+++ ../src-work/minecraft/net/minecraft/block/BlockTripWireHook.java
@@ -58,14 +58,14 @@
@@ -79,14 +79,14 @@
public boolean func_176198_a(World p_176198_1_, BlockPos p_176198_2_, EnumFacing p_176198_3_)
{
- return p_176198_3_.func_176740_k().func_176722_c() && p_176198_1_.func_180495_p(p_176198_2_.func_177972_a(p_176198_3_.func_176734_d())).func_177230_c().func_149721_r();
+ return p_176198_3_.func_176740_k().func_176722_c() && p_176198_1_.isSideSolid(p_176198_2_.func_177972_a(p_176198_3_.func_176734_d()), p_176198_3_, true);
- return p_176198_3_.func_176740_k().func_176722_c() && p_176198_1_.func_180495_p(p_176198_2_.func_177972_a(p_176198_3_.func_176734_d())).func_185915_l();
+ return p_176198_3_.func_176740_k().func_176722_c() && p_176198_1_.func_180495_p(p_176198_2_.func_177972_a(p_176198_3_.func_176734_d())).isSideSolid(p_176198_1_, p_176198_2_.func_177972_a(p_176198_3_.func_176734_d()), p_176198_3_);
}
public boolean func_176196_c(World p_176196_1_, BlockPos p_176196_2_)
{
for (EnumFacing enumfacing : EnumFacing.Plane.HORIZONTAL)
{
- if (p_176196_1_.func_180495_p(p_176196_2_.func_177972_a(enumfacing)).func_177230_c().func_149721_r())
+ if (p_176196_1_.isSideSolid(p_176196_2_.func_177972_a(enumfacing), enumfacing.func_176734_d(), true))
- if (p_176196_1_.func_180495_p(p_176196_2_.func_177972_a(enumfacing)).func_185915_l())
+ if (p_176196_1_.func_180495_p(p_176196_2_.func_177972_a(enumfacing)).isSideSolid(p_176196_1_, p_176196_2_.func_177972_a(enumfacing), enumfacing.func_176734_d()))
{
return true;
}
@@ -99,7 +99,7 @@
@@ -120,7 +120,7 @@
{
EnumFacing enumfacing = (EnumFacing)p_176204_3_.func_177229_b(field_176264_a);
EnumFacing enumfacing = (EnumFacing)p_189540_1_.func_177229_b(field_176264_a);
- if (!p_176204_1_.func_180495_p(p_176204_2_.func_177972_a(enumfacing.func_176734_d())).func_177230_c().func_149721_r())
+ if (!p_176204_1_.isSideSolid(p_176204_2_.func_177972_a(enumfacing.func_176734_d()), enumfacing, true))
- if (!p_189540_2_.func_180495_p(p_189540_3_.func_177972_a(enumfacing.func_176734_d())).func_185915_l())
+ if (!p_189540_2_.func_180495_p(p_189540_3_.func_177972_a(enumfacing.func_176734_d())).isSideSolid(p_189540_2_, p_189540_3_.func_177972_a(enumfacing.func_176734_d()), enumfacing))
{
this.func_176226_b(p_176204_1_, p_176204_2_, p_176204_3_, 0);
p_176204_1_.func_175698_g(p_176204_2_);
this.func_176226_b(p_189540_2_, p_189540_3_, p_189540_1_, 0);
p_189540_2_.func_175698_g(p_189540_3_);
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/block/BlockVine.java
+++ ../src-work/minecraft/net/minecraft/block/BlockVine.java
@@ -25,7 +25,7 @@
@@ -27,7 +27,7 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -9,26 +9,21 @@
{
public static final PropertyBool field_176277_a = PropertyBool.func_177716_a("up");
public static final PropertyBool field_176273_b = PropertyBool.func_177716_a("north");
@@ -387,13 +387,7 @@
@@ -345,7 +345,7 @@
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, TileEntity p_180657_5_)
public void func_180657_a(World p_180657_1_, EntityPlayer p_180657_2_, BlockPos p_180657_3_, IBlockState p_180657_4_, @Nullable TileEntity p_180657_5_, @Nullable ItemStack p_180657_6_)
{
- if (!p_180657_1_.field_72995_K && p_180657_2_.func_71045_bC() != null && p_180657_2_.func_71045_bC().func_77973_b() == Items.field_151097_aZ)
- if (!p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ)
+ if (false && !p_180657_1_.field_72995_K && p_180657_6_ != null && p_180657_6_.func_77973_b() == Items.field_151097_aZ) // Forge: Noop, Covered by IShearable
{
- p_180657_2_.func_71029_a(StatList.field_75934_C[Block.func_149682_b(this)]);
- func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150395_bd, 1, 0));
- }
- else
- {
super.func_180657_a(p_180657_1_, p_180657_2_, p_180657_3_, p_180657_4_, p_180657_5_);
}
}
@@ -474,4 +468,14 @@
p_180657_2_.func_71029_a(StatList.func_188055_a(this));
func_180635_a(p_180657_1_, p_180657_3_, new ItemStack(Blocks.field_150395_bd, 1, 0));
@@ -460,4 +460,14 @@
return i;
}
+ /*************************FORGE START***********************************/
+ @Override public boolean isLadder(IBlockAccess world, BlockPos pos, EntityLivingBase entity){ return true; }
+ @Override public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity){ return true; }
+ @Override public boolean isShearable(ItemStack item, IBlockAccess world, BlockPos pos){ return true; }
+ @Override
+ public java.util.List<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune)
@@ -1,29 +1,29 @@
--- ../src-base/minecraft/net/minecraft/block/state/BlockPistonStructureHelper.java
+++ ../src-work/minecraft/net/minecraft/block/state/BlockPistonStructureHelper.java
@@ -78,7 +78,7 @@
{
Block block = this.field_177261_a.func_180495_p(p_177251_1_).func_177230_c();
@@ -80,7 +80,7 @@
IBlockState iblockstate = this.field_177261_a.func_180495_p(p_177251_1_);
Block block = iblockstate.func_177230_c();
- if (block.func_149688_o() == Material.field_151579_a)
+ if (block.isAir(field_177261_a, p_177251_1_))
- if (iblockstate.func_185904_a() == Material.field_151579_a)
+ if (iblockstate.func_177230_c().isAir(iblockstate, this.field_177261_a, p_177251_1_))
{
return true;
}
@@ -109,7 +109,7 @@
BlockPos blockpos = p_177251_1_.func_177967_a(this.field_177257_d.func_176734_d(), i);
block = this.field_177261_a.func_180495_p(blockpos).func_177230_c();
@@ -112,7 +112,7 @@
iblockstate = this.field_177261_a.func_180495_p(blockpos);
block = iblockstate.func_177230_c();
- if (block.func_149688_o() == Material.field_151579_a || !BlockPistonBase.func_180696_a(block, this.field_177261_a, blockpos, this.field_177257_d, false) || blockpos.equals(this.field_177259_b))
+ if (block.isAir(field_177261_a, blockpos)|| !BlockPistonBase.func_180696_a(block, this.field_177261_a, blockpos, this.field_177257_d, false) || blockpos.equals(this.field_177259_b))
- if (iblockstate.func_185904_a() == Material.field_151579_a || !BlockPistonBase.func_185646_a(iblockstate, this.field_177261_a, blockpos, this.field_177257_d, false) || blockpos.equals(this.field_177259_b))
+ if (iblockstate.func_177230_c().isAir(iblockstate, this.field_177261_a, blockpos) || !BlockPistonBase.func_185646_a(iblockstate, this.field_177261_a, blockpos, this.field_177257_d, false) || blockpos.equals(this.field_177259_b))
{
break;
}
@@ -156,7 +156,7 @@
@@ -159,7 +159,7 @@
block = this.field_177261_a.func_180495_p(blockpos1).func_177230_c();
iblockstate = this.field_177261_a.func_180495_p(blockpos1);
- if (block.func_149688_o() == Material.field_151579_a)
+ if (block.isAir(field_177261_a, blockpos1))
- if (iblockstate.func_185904_a() == Material.field_151579_a)
+ if (iblockstate.func_177230_c().isAir(iblockstate, this.field_177261_a, blockpos1))
{
return true;
}
@@ -1,53 +0,0 @@
--- ../src-base/minecraft/net/minecraft/block/state/BlockState.java
+++ ../src-work/minecraft/net/minecraft/block/state/BlockState.java
@@ -38,6 +38,16 @@
public BlockState(Block p_i45663_1_, IProperty... p_i45663_2_)
{
+ this(p_i45663_1_, p_i45663_2_, null);
+ }
+
+ protected StateImplementation createState(Block block, ImmutableMap<IProperty, Comparable> properties, ImmutableMap<net.minecraftforge.common.property.IUnlistedProperty<?>, com.google.common.base.Optional<?>> unlistedProperties)
+ {
+ return new StateImplementation(block, properties);
+ }
+
+ protected BlockState(Block p_i45663_1_, IProperty[] p_i45663_2_, ImmutableMap<net.minecraftforge.common.property.IUnlistedProperty<?>, com.google.common.base.Optional<?>> unlistedProperties)
+ {
this.field_177627_c = p_i45663_1_;
Arrays.sort(p_i45663_2_, new Comparator<IProperty>()
{
@@ -53,7 +63,7 @@
for (List<Comparable> list1 : Cartesian.func_179321_a(this.func_177620_e()))
{
Map<IProperty, Comparable> map1 = MapPopulator.<IProperty, Comparable>func_179400_b(this.field_177624_d, list1);
- BlockState.StateImplementation blockstate$stateimplementation = new BlockState.StateImplementation(p_i45663_1_, ImmutableMap.copyOf(map1));
+ BlockState.StateImplementation blockstate$stateimplementation = createState(p_i45663_1_, ImmutableMap.copyOf(map1), unlistedProperties);
map.put(map1, blockstate$stateimplementation);
list.add(blockstate$stateimplementation);
}
@@ -132,6 +142,13 @@
}
}
+ protected StateImplementation(Block blockIn, ImmutableMap<IProperty, Comparable> propertiesIn, ImmutableTable<IProperty, Comparable, IBlockState> propertyValueTable)
+ {
+ this.field_177239_a = blockIn;
+ this.field_177237_b = propertiesIn;
+ this.field_177238_c = propertyValueTable;
+ }
+
public <T extends Comparable<T>, V extends T> IBlockState func_177226_a(IProperty<T> p_177226_1_, V p_177226_2_)
{
if (!this.field_177237_b.containsKey(p_177226_1_))
@@ -199,5 +216,10 @@
map.put(p_177236_1_, p_177236_2_);
return map;
}
+
+ public ImmutableTable<IProperty, Comparable, IBlockState> getPropertyValueTable()
+ {
+ return field_177238_c;
+ }
}
}
@@ -1,11 +1,11 @@
--- ../src-base/minecraft/net/minecraft/block/state/BlockStateBase.java
+++ ../src-work/minecraft/net/minecraft/block/state/BlockStateBase.java
@@ -67,4 +67,9 @@
@@ -73,4 +73,9 @@
return stringbuilder.toString();
}
+
+ public com.google.common.collect.ImmutableTable<IProperty, Comparable, IBlockState> getPropertyValueTable()
+
+ public com.google.common.collect.ImmutableTable<IProperty<?>, Comparable<?>, IBlockState> getPropertyValueTable()
+ {
+ return null;
+ }
@@ -0,0 +1,138 @@
--- ../src-base/minecraft/net/minecraft/block/state/BlockStateContainer.java
+++ ../src-work/minecraft/net/minecraft/block/state/BlockStateContainer.java
@@ -57,12 +57,22 @@
public BlockStateContainer(Block p_i45663_1_, IProperty<?>... p_i45663_2_)
{
- this.field_177627_c = p_i45663_1_;
+ this(p_i45663_1_, p_i45663_2_, null);
+ }
+
+ protected StateImplementation createState(Block block, ImmutableMap<IProperty<?>, Comparable<?>> properties, ImmutableMap<net.minecraftforge.common.property.IUnlistedProperty<?>, com.google.common.base.Optional<?>> unlistedProperties)
+ {
+ return new StateImplementation(block, properties);
+ }
+
+ protected BlockStateContainer(Block blockIn, IProperty<?>[] properties, ImmutableMap<net.minecraftforge.common.property.IUnlistedProperty<?>, com.google.common.base.Optional<?>> unlistedProperties)
+ {
+ this.field_177627_c = blockIn;
Map < String, IProperty<? >> map = Maps. < String, IProperty<? >> newHashMap();
- for (IProperty<?> iproperty : p_i45663_2_)
+ for (IProperty<?> iproperty : properties)
{
- func_185919_a(p_i45663_1_, iproperty);
+ func_185919_a(blockIn, iproperty);
map.put(iproperty.func_177701_a(), iproperty);
}
@@ -73,7 +83,7 @@
for (List < Comparable<? >> list : Cartesian.func_179321_a(this.func_177620_e()))
{
Map < IProperty<?>, Comparable<? >> map1 = MapPopulator. < IProperty<?>, Comparable<? >> func_179400_b(this.field_177624_d.values(), list);
- BlockStateContainer.StateImplementation blockstatecontainer$stateimplementation = new BlockStateContainer.StateImplementation(p_i45663_1_, ImmutableMap.copyOf(map1));
+ BlockStateContainer.StateImplementation blockstatecontainer$stateimplementation = createState(blockIn, ImmutableMap.copyOf(map1), unlistedProperties);
map2.put(map1, blockstatecontainer$stateimplementation);
list1.add(blockstatecontainer$stateimplementation);
}
@@ -166,6 +176,13 @@
this.field_177237_b = p_i45660_2_;
}
+ protected StateImplementation(Block blockIn, ImmutableMap<IProperty<?>, Comparable<?>> propertiesIn, ImmutableTable<IProperty<?>, Comparable<?>, IBlockState> propertyValueTable)
+ {
+ this.field_177239_a = blockIn;
+ this.field_177237_b = propertiesIn;
+ this.field_177238_c = propertyValueTable;
+ }
+
public Collection < IProperty<? >> func_177227_a()
{
return Collections. < IProperty<? >> unmodifiableCollection(this.field_177237_b.keySet());
@@ -441,5 +458,86 @@
{
this.field_177239_a.func_189540_a(this, p_189546_1_, p_189546_2_, p_189546_3_);
}
+
+ //Forge Start
+ public ImmutableTable<IProperty<?>, Comparable<?>, IBlockState> getPropertyValueTable()
+ {
+ return field_177238_c;
+ }
+
+ @Override
+ public int getLightOpacity(IBlockAccess world, BlockPos pos)
+ {
+ return this.field_177239_a.getLightOpacity(this, world, pos);
+ }
+
+ @Override
+ public int getLightValue(IBlockAccess world, BlockPos pos)
+ {
+ return this.field_177239_a.getLightValue(this, world, pos);
+ }
+
+ public boolean isSideSolid(IBlockAccess world, BlockPos pos, EnumFacing side)
+ {
+ return this.field_177239_a.isSideSolid(this, world, pos, side);
+ }
+
+ @Override
+ public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing side)
+ {
+ return this.field_177239_a.doesSideBlockRendering(this, world, pos, side);
+ }
}
+
+ /**
+ * Forge added class to make building things easier.
+ * Will return an instance of BlockStateContainer appropriate for
+ * the list of properties passed in.
+ *
+ * Example usage:
+ *
+ * protected BlockStateContainer createBlockState()
+ * {
+ * return (new BlockStateContainer.Builder(this)).add(FACING).add(SOME_UNLISTED).build();
+ * }
+ *
+ */
+ public static class Builder
+ {
+ private final Block block;
+ private final List<IProperty<?>> listed = Lists.newArrayList();
+ private final List<net.minecraftforge.common.property.IUnlistedProperty<?>> unlisted = Lists.newArrayList();
+
+ public Builder(Block block)
+ {
+ this.block = block;
+ }
+
+ public Builder add(IProperty<?>... props)
+ {
+ for (IProperty<?> prop : props)
+ this.listed.add(prop);
+ return this;
+ }
+
+ public Builder add(net.minecraftforge.common.property.IUnlistedProperty<?>... props)
+ {
+ for (net.minecraftforge.common.property.IUnlistedProperty<?> prop : props)
+ this.unlisted.add(prop);
+ return this;
+ }
+
+ public BlockStateContainer build()
+ {
+ IProperty<?>[] listed = new IProperty[this.listed.size()];
+ listed = this.listed.toArray(listed);
+ if (this.unlisted.size() == 0)
+ return new BlockStateContainer(this.block, listed);
+
+ net.minecraftforge.common.property.IUnlistedProperty<?>[] unlisted = new net.minecraftforge.common.property.IUnlistedProperty[this.unlisted.size()];
+ unlisted = this.unlisted.toArray(unlisted);
+
+ return new net.minecraftforge.common.property.ExtendedBlockState(this.block, listed, unlisted);
+ }
+ }
}
@@ -0,0 +1,27 @@
--- ../src-base/minecraft/net/minecraft/block/state/IBlockProperties.java
+++ ../src-work/minecraft/net/minecraft/block/state/IBlockProperties.java
@@ -26,9 +26,13 @@
boolean func_185913_b();
+ @Deprecated //Forge location aware version below
int func_185891_c();
+ int getLightOpacity(IBlockAccess world, BlockPos pos);
+ @Deprecated //Forge location aware version below
int func_185906_d();
+ int getLightValue(IBlockAccess world, BlockPos pos);
@SideOnly(Side.CLIENT)
boolean func_185895_e();
@@ -90,5 +94,10 @@
RayTraceResult func_185910_a(World p_185910_1_, BlockPos p_185910_2_, Vec3d p_185910_3_, Vec3d p_185910_4_);
+ @Deprecated // Forge: Use isSideSolid(IBlockAccess, BlockPos, EnumFacing.UP) instead
boolean func_185896_q();
+
+ //Forge added functions
+ boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing side);
+ boolean isSideSolid(IBlockAccess world, BlockPos pos, EnumFacing side);
}
@@ -9,10 +9,10 @@
+ if (!net.minecraftforge.fml.client.FMLClientHandler.instance().handleLoadingScreen(scaledresolution)) //FML Don't render while FML's pre-screen is rendering
+ {
Tessellator tessellator = Tessellator.func_178181_a();
WorldRenderer worldrenderer = tessellator.func_178180_c();
VertexBuffer vertexbuffer = tessellator.func_178180_c();
this.field_73725_b.func_110434_K().func_110577_a(Gui.field_110325_k);
@@ -174,6 +178,12 @@
GlStateManager.func_179120_a(770, 771, 1, 0);
GlStateManager.func_187428_a(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
this.field_73725_b.field_71466_p.func_175063_a(this.field_73726_c, (float)((k - this.field_73725_b.field_71466_p.func_78256_a(this.field_73726_c)) / 2), (float)(l / 2 - 4 - 16), 16777215);
this.field_73725_b.field_71466_p.func_175063_a(this.field_73727_a, (float)((k - this.field_73725_b.field_71466_p.func_78256_a(this.field_73727_a)) / 2), (float)(l / 2 - 4 + 8), 16777215);
+ }
@@ -1,14 +1,14 @@
--- ../src-base/minecraft/net/minecraft/client/Minecraft.java
+++ ../src-work/minecraft/net/minecraft/client/Minecraft.java
@@ -301,7 +301,6 @@
this.field_152355_az = (new YggdrasilAuthenticationService(p_i45547_1_.field_178745_a.field_178751_c, UUID.randomUUID().toString())).createMinecraftSessionService();
@@ -321,7 +321,6 @@
this.field_152355_az = (new YggdrasilAuthenticationService(this.field_110453_aa, UUID.randomUUID().toString())).createMinecraftSessionService();
this.field_71449_j = p_i45547_1_.field_178745_a.field_178752_a;
field_147123_G.info("Setting user: " + this.field_71449_j.func_111285_a());
- field_147123_G.info("(Session ID is " + this.field_71449_j.func_111286_b() + ")");
- field_147123_G.debug("(Session ID is " + this.field_71449_j.func_111286_b() + ")");
this.field_71459_aj = p_i45547_1_.field_178741_d.field_178756_a;
this.field_71443_c = p_i45547_1_.field_178743_b.field_178764_a > 0 ? p_i45547_1_.field_178743_b.field_178764_a : 1;
this.field_71440_d = p_i45547_1_.field_178743_b.field_178762_b > 0 ? p_i45547_1_.field_178743_b.field_178762_b : 1;
@@ -415,10 +414,10 @@
@@ -435,10 +434,10 @@
this.field_110451_am = new SimpleReloadableResourceManager(this.field_110452_an);
this.field_135017_as = new LanguageManager(this.field_110452_an, this.field_71474_y.field_74363_ab);
this.field_110451_am.func_110542_a(this.field_135017_as);
@@ -18,10 +18,19 @@
this.field_110451_am.func_110542_a(this.field_71446_o);
- this.func_180510_a(this.field_71446_o);
+ net.minecraftforge.fml.client.SplashProgress.drawVanillaScreen(this.field_71446_o);
this.func_175595_al();
this.field_152350_aA = new SkinManager(this.field_71446_o, new File(this.field_110446_Y, "skins"), this.field_152355_az);
this.field_71469_aa = new AnvilSaveConverter(new File(this.field_71412_D, "saves"));
@@ -453,6 +452,8 @@
this.field_71469_aa = new AnvilSaveConverter(new File(this.field_71412_D, "saves"), this.field_184131_U);
this.field_147127_av = new SoundHandler(this.field_110451_am, this.field_71474_y);
@@ -463,7 +462,7 @@
{
try
{
- return String.format(p_74535_1_, new Object[] {GameSettings.func_74298_c(Minecraft.this.field_71474_y.field_151445_Q.func_151463_i())});
+ return String.format(p_74535_1_, new Object[] {Minecraft.this.field_71474_y.field_151445_Q.getDisplayName()});
}
catch (Exception exception)
{
@@ -472,6 +471,8 @@
}
});
this.field_71417_B = new MouseHelper();
@@ -30,13 +39,13 @@
this.func_71361_d("Pre startup");
GlStateManager.func_179098_w();
GlStateManager.func_179103_j(7425);
@@ -466,17 +467,21 @@
@@ -485,19 +486,23 @@
GlStateManager.func_179096_D();
GlStateManager.func_179128_n(5888);
this.func_71361_d("Startup");
- this.field_147128_au = new TextureMap("textures");
+ bar.step("Loading Texture Map");
+ this.field_147128_au = new TextureMap("textures",true);
+ this.field_147128_au = new TextureMap("textures", true);
this.field_147128_au.func_147633_a(this.field_71474_y.field_151442_I);
this.field_71446_o.func_110580_a(TextureMap.field_110575_b, this.field_147128_au);
this.field_71446_o.func_110577_a(TextureMap.field_110575_b);
@@ -44,19 +53,21 @@
+ bar.step("Loading Model Manager");
this.field_175617_aL = new ModelManager(this.field_147128_au);
this.field_110451_am.func_110542_a(this.field_175617_aL);
this.field_184127_aH = BlockColors.func_186723_a();
this.field_184128_aI = ItemColors.func_186729_a(this.field_184127_aH);
+ bar.step("Loading Item Renderer");
this.field_175621_X = new RenderItem(this.field_71446_o, this.field_175617_aL);
this.field_175621_X = new RenderItem(this.field_71446_o, this.field_175617_aL, this.field_184128_aI);
this.field_175616_W = new RenderManager(this.field_71446_o, this.field_175621_X);
this.field_175620_Y = new ItemRenderer(this);
this.field_110451_am.func_110542_a(this.field_175621_X);
+ bar.step("Loading Entity Renderer");
this.field_71460_t = new EntityRenderer(this, this.field_110451_am);
this.field_110451_am.func_110542_a(this.field_71460_t);
this.field_175618_aM = new BlockRendererDispatcher(this.field_175617_aL.func_174954_c(), this.field_71474_y);
@@ -486,22 +491,25 @@
this.field_175618_aM = new BlockRendererDispatcher(this.field_175617_aL.func_174954_c(), this.field_184127_aH);
@@ -507,23 +512,26 @@
this.field_71458_u = new GuiAchievement(this);
GlStateManager.func_179083_b(0, 0, this.field_71443_c, this.field_71440_d);
this.field_71452_i = new EffectRenderer(this.field_71441_e, this.field_71446_o);
this.field_71452_i = new ParticleManager(this.field_71441_e, this.field_71446_o);
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().finishMinecraftLoading();
this.func_71361_d("Post startup");
@@ -77,12 +88,13 @@
+ net.minecraftforge.fml.client.SplashProgress.clearVanillaResources(field_71446_o, field_152354_ay);
this.field_152354_ay = null;
this.field_71461_s = new LoadingScreenRenderer(this);
this.field_184132_p = new DebugRenderer(this);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().onInitializationComplete();
if (this.field_71474_y.field_74353_u && !this.field_71431_Q)
{
this.func_71352_k();
@@ -681,21 +689,23 @@
@@ -695,21 +703,23 @@
File file2 = new File(file1, "crash-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + "-client.txt");
Bootstrap.func_179870_a(p_71377_1_.func_71502_e());
@@ -109,9 +121,9 @@
}
public boolean func_152349_b()
@@ -883,11 +893,6 @@
@@ -902,11 +912,6 @@
public void func_147108_a(GuiScreen p_147108_1_)
public void func_147108_a(@Nullable GuiScreen p_147108_1_)
{
- if (this.field_71462_r != null)
- {
@@ -121,8 +133,8 @@
if (p_147108_1_ == null && this.field_71441_e == null)
{
p_147108_1_ = new GuiMainMenu();
@@ -897,6 +902,17 @@
p_147108_1_ = new GuiGameOver();
@@ -916,6 +921,17 @@
p_147108_1_ = new GuiGameOver((ITextComponent)null);
}
+ GuiScreen old = this.field_71462_r;
@@ -130,16 +142,16 @@
+
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return;
+
+ p_147108_1_ = event.gui;
+ p_147108_1_ = event.getGui();
+ if (old != null && p_147108_1_ != old)
+ {
+ old.func_146281_b();
+ }
+
if (p_147108_1_ instanceof GuiMainMenu)
if (p_147108_1_ instanceof GuiMainMenu || p_147108_1_ instanceof GuiMultiplayer)
{
this.field_71474_y.field_74330_P = false;
@@ -1030,9 +1046,11 @@
@@ -1054,9 +1070,11 @@
if (!this.field_71454_w)
{
@@ -151,47 +163,46 @@
}
this.field_71424_I.func_76319_b();
@@ -1377,7 +1395,7 @@
@@ -1396,9 +1414,9 @@
{
BlockPos blockpos = this.field_71476_x.func_178782_a();
if (this.field_71441_e.func_180495_p(blockpos).func_177230_c().func_149688_o() != Material.field_151579_a && this.field_71442_b.func_180512_c(blockpos, this.field_71476_x.field_178784_b))
- if (this.field_71441_e.func_180495_p(blockpos).func_185904_a() != Material.field_151579_a && this.field_71442_b.func_180512_c(blockpos, this.field_71476_x.field_178784_b))
+ if (!this.field_71441_e.func_175623_d(blockpos) && this.field_71442_b.func_180512_c(blockpos, this.field_71476_x.field_178784_b))
{
- this.field_71452_i.func_180532_a(blockpos, this.field_71476_x.field_178784_b);
+ this.field_71452_i.addBlockHitEffects(blockpos, this.field_71476_x);
this.field_71439_g.func_71038_i();
this.field_71439_g.func_184609_a(EnumHand.MAIN_HAND);
}
}
@@ -1463,15 +1481,19 @@
@@ -1432,7 +1450,7 @@
case BLOCK:
BlockPos blockpos = this.field_71476_x.func_178782_a();
- if (this.field_71441_e.func_180495_p(blockpos).func_177230_c().func_149688_o() != Material.field_151579_a)
- if (this.field_71441_e.func_180495_p(blockpos).func_185904_a() != Material.field_151579_a)
+ if (!this.field_71441_e.func_175623_d(blockpos))
{
int i = itemstack != null ? itemstack.field_77994_a : 0;
this.field_71442_b.func_180511_b(blockpos, this.field_71476_x.field_178784_b);
break;
@@ -1476,7 +1494,7 @@
switch (this.field_71476_x.field_72313_a)
{
case ENTITY:
-
+ if(!net.minecraftforge.common.ForgeHooks.onInteractEntityAt(field_71439_g, field_71476_x.field_72308_g, field_71476_x, field_71439_g.func_184586_b(enumhand), enumhand))
if (this.field_71442_b.func_187102_a(this.field_71439_g, this.field_71476_x.field_72308_g, this.field_71476_x, this.field_71439_g.func_184586_b(enumhand), enumhand) == EnumActionResult.SUCCESS)
{
return;
@@ -1519,7 +1537,7 @@
}
+
+ boolean result = !net.minecraftforge.event.ForgeEventFactory.onPlayerInteract(field_71439_g, net.minecraftforge.event.entity.player.PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK, this.field_71441_e, blockpos, this.field_71476_x.field_178784_b, this.field_71476_x.field_72307_f).isCanceled();
+ if (result) { //Forge: Kept separate to simplify patch
if (this.field_71442_b.func_178890_a(this.field_71439_g, this.field_71441_e, itemstack, blockpos, this.field_71476_x.field_178784_b, this.field_71476_x.field_72307_f))
{
flag = false;
this.field_71439_g.func_71038_i();
}
+ }
if (itemstack == null)
{
@@ -1494,7 +1516,8 @@
{
ItemStack itemstack1 = this.field_71439_g.field_71071_by.func_70448_g();
- if (itemstack1 != null && this.field_71442_b.func_78769_a(this.field_71439_g, this.field_71441_e, itemstack1))
+ boolean result = !net.minecraftforge.event.ForgeEventFactory.onPlayerInteract(field_71439_g, net.minecraftforge.event.entity.player.PlayerInteractEvent.Action.RIGHT_CLICK_AIR, field_71441_e, null, null, null).isCanceled();
+ if (result && itemstack1 != null && this.field_71442_b.func_78769_a(this.field_71439_g, this.field_71441_e, itemstack1))
{
this.field_71460_t.field_78516_c.func_78445_c();
}
@@ -1598,6 +1621,8 @@
ItemStack itemstack1 = this.field_71439_g.func_184586_b(enumhand);
-
+ if (itemstack1 == null) net.minecraftforge.common.ForgeHooks.onEmptyClick(this.field_71439_g, enumhand);
if (itemstack1 != null && this.field_71442_b.func_187101_a(this.field_71439_g, this.field_71441_e, itemstack1, enumhand) == EnumActionResult.SUCCESS)
{
this.field_71460_t.field_78516_c.func_187460_a(enumhand);
@@ -1626,6 +1644,8 @@
--this.field_71467_ac;
}
@@ -200,48 +211,48 @@
this.field_71424_I.func_76320_a("gui");
if (!this.field_71445_n)
@@ -1690,6 +1715,8 @@
while (Mouse.next())
{
+ if (net.minecraftforge.client.ForgeHooksClient.postMouseEvent()) continue;
+
int i = Mouse.getEventButton();
KeyBinding.func_74510_a(i - 100, Mouse.getEventButtonState());
@@ -1745,6 +1772,7 @@
this.field_71462_r.func_146274_d();
}
@@ -1737,6 +1757,7 @@
this.field_71457_ai = 0;
this.field_71441_e.func_72897_h(this.field_71439_g);
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireMouseInput();
}
if (this.field_71429_W > 0)
@@ -1923,6 +1951,7 @@
}
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireKeyInput();
}
for (int l = 0; l < 9; ++l)
@@ -2119,12 +2148,15 @@
this.field_71424_I.func_76318_c("gameRenderer");
@@ -1824,6 +1845,7 @@
this.field_71453_ak.func_74428_b();
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostClientTick();
+
this.field_71424_I.func_76319_b();
this.field_71423_H = func_71386_F();
}
@@ -1930,6 +1952,7 @@
}
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireKeyInput();
}
public void func_71371_a(String p_71371_1_, String p_71371_2_, WorldSettings p_71371_3_)
this.func_184117_aA();
@@ -2169,6 +2192,8 @@
{
while (Mouse.next())
{
+ if (net.minecraftforge.client.ForgeHooksClient.postMouseEvent()) continue;
+
int i = Mouse.getEventButton();
KeyBinding.func_74510_a(i - 100, Mouse.getEventButtonState());
@@ -2234,6 +2259,7 @@
public void func_71371_a(String p_71371_1_, String p_71371_2_, @Nullable WorldSettings p_71371_3_)
{
+ net.minecraftforge.fml.client.FMLClientHandler.instance().startIntegratedServer(p_71371_1_, p_71371_2_, p_71371_3_);
this.func_71403_a((WorldClient)null);
System.gc();
ISaveHandler isavehandler = this.field_71469_aa.func_75804_a(p_71371_1_, false);
@@ -2160,6 +2192,12 @@
@@ -2276,6 +2302,12 @@
while (!this.field_71437_Z.func_71200_ad())
{
@@ -254,36 +265,36 @@
String s = this.field_71437_Z.func_71195_b_();
if (s != null)
@@ -2185,8 +2223,14 @@
@@ -2301,8 +2333,14 @@
SocketAddress socketaddress = this.field_71437_Z.func_147137_ag().func_151270_a();
NetworkManager networkmanager = NetworkManager.func_150722_a(socketaddress);
networkmanager.func_150719_a(new NetHandlerLoginClient(networkmanager, this, (GuiScreen)null));
- networkmanager.func_179290_a(new C00Handshake(47, socketaddress.toString(), 0, EnumConnectionState.LOGIN));
- networkmanager.func_179290_a(new C00PacketLoginStart(this.func_110432_I().func_148256_e()));
+ networkmanager.func_179290_a(new C00Handshake(47, socketaddress.toString(), 0, EnumConnectionState.LOGIN, true));
- networkmanager.func_179290_a(new C00Handshake(110, socketaddress.toString(), 0, EnumConnectionState.LOGIN));
- networkmanager.func_179290_a(new CPacketLoginStart(this.func_110432_I().func_148256_e()));
+ networkmanager.func_179290_a(new C00Handshake(110, socketaddress.toString(), 0, EnumConnectionState.LOGIN, true));
+ com.mojang.authlib.GameProfile gameProfile = this.func_110432_I().func_148256_e();
+ if (!this.func_110432_I().hasCachedProperties())
+ {
+ gameProfile = field_152355_az.fillProfileProperties(gameProfile, true); //Forge: Fill profile properties upon game load. Fixes MC-52974.
+ this.func_110432_I().setProperties(gameProfile.getProperties());
+ }
+ networkmanager.func_179290_a(new C00PacketLoginStart(gameProfile));
+ networkmanager.func_179290_a(new CPacketLoginStart(gameProfile));
this.field_71453_ak = networkmanager;
}
@@ -2197,6 +2241,8 @@
@@ -2313,6 +2351,8 @@
public void func_71353_a(WorldClient p_71353_1_, String p_71353_2_)
public void func_71353_a(@Nullable WorldClient p_71353_1_, String p_71353_2_)
{
+ if (field_71441_e != null) net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.WorldEvent.Unload(field_71441_e));
+
if (p_71353_1_ == null)
{
NetHandlerPlayClient nethandlerplayclient = this.func_147114_u();
@@ -2210,6 +2256,18 @@
@@ -2325,6 +2365,18 @@
if (this.field_71437_Z != null && this.field_71437_Z.func_175578_N())
{
this.field_71437_Z.func_71263_m();
this.field_71437_Z.func_175592_a();
+ if (field_71461_s != null)
+ {
+ this.field_71461_s.func_73719_c(I18n.func_135052_a("forge.client.shutdown.internal"));
@@ -299,7 +310,7 @@
}
this.field_71437_Z = null;
@@ -2232,6 +2290,7 @@
@@ -2348,6 +2400,7 @@
this.field_71456_v.func_181029_i();
this.func_71351_a((ServerData)null);
this.field_71455_al = false;
@@ -307,77 +318,72 @@
}
this.field_147127_av.func_147690_c();
@@ -2336,126 +2395,10 @@
if (this.field_71476_x != null)
@@ -2464,159 +2517,8 @@
{
if (this.field_71476_x != null && this.field_71476_x.field_72313_a != RayTraceResult.Type.MISS)
{
boolean flag = this.field_71439_g.field_71075_bZ.field_75098_d;
- int i = 0;
- boolean flag1 = false;
- boolean flag = this.field_71439_g.field_71075_bZ.field_75098_d;
- TileEntity tileentity = null;
- Item item;
- ItemStack itemstack;
-
- if (this.field_71476_x.field_72313_a == MovingObjectPosition.MovingObjectType.BLOCK)
- if (this.field_71476_x.field_72313_a == RayTraceResult.Type.BLOCK)
- {
- BlockPos blockpos = this.field_71476_x.func_178782_a();
- Block block = this.field_71441_e.func_180495_p(blockpos).func_177230_c();
- IBlockState iblockstate = this.field_71441_e.func_180495_p(blockpos);
- Block block = iblockstate.func_177230_c();
-
- if (block.func_149688_o() == Material.field_151579_a)
- if (iblockstate.func_185904_a() == Material.field_151579_a)
- {
- return;
- }
-
- item = block.func_180665_b(this.field_71441_e, blockpos);
- itemstack = block.func_185473_a(this.field_71441_e, blockpos, iblockstate);
-
- if (item == null)
- if (itemstack == null)
- {
- return;
- }
-
- if (flag && GuiScreen.func_146271_m())
- if (flag && GuiScreen.func_146271_m() && block.func_149716_u())
- {
- tileentity = this.field_71441_e.func_175625_s(blockpos);
- }
-
- Block block1 = item instanceof ItemBlock && !block.func_149648_K() ? Block.func_149634_a(item) : block;
- i = block1.func_176222_j(this.field_71441_e, blockpos);
- flag1 = item.func_77614_k();
- }
- else
- {
- if (this.field_71476_x.field_72313_a != MovingObjectPosition.MovingObjectType.ENTITY || this.field_71476_x.field_72308_g == null || !flag)
- if (this.field_71476_x.field_72313_a != RayTraceResult.Type.ENTITY || this.field_71476_x.field_72308_g == null || !flag)
- {
- return;
- }
-
- if (this.field_71476_x.field_72308_g instanceof EntityPainting)
- {
- item = Items.field_151159_an;
- itemstack = new ItemStack(Items.field_151159_an);
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityLeashKnot)
- {
- item = Items.field_151058_ca;
- itemstack = new ItemStack(Items.field_151058_ca);
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityItemFrame)
- {
- EntityItemFrame entityitemframe = (EntityItemFrame)this.field_71476_x.field_72308_g;
- ItemStack itemstack = entityitemframe.func_82335_i();
- ItemStack itemstack1 = entityitemframe.func_82335_i();
-
- if (itemstack == null)
- if (itemstack1 == null)
- {
- item = Items.field_151160_bD;
- itemstack = new ItemStack(Items.field_151160_bD);
- }
- else
- {
- item = itemstack.func_77973_b();
- i = itemstack.func_77960_j();
- flag1 = true;
- itemstack = ItemStack.func_77944_b(itemstack1);
- }
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityMinecart)
- {
- EntityMinecart entityminecart = (EntityMinecart)this.field_71476_x.field_72308_g;
- Item item;
-
- switch (entityminecart.func_180456_s())
- switch (entityminecart.func_184264_v())
- {
- case FURNACE:
- item = Items.field_151109_aJ;
@@ -397,53 +403,91 @@
- default:
- item = Items.field_151143_au;
- }
-
- itemstack = new ItemStack(item);
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityBoat)
- {
- item = Items.field_151124_az;
- itemstack = new ItemStack(((EntityBoat)this.field_71476_x.field_72308_g).func_184455_j());
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityArmorStand)
- {
- item = Items.field_179565_cj;
- itemstack = new ItemStack(Items.field_179565_cj);
- }
- else if (this.field_71476_x.field_72308_g instanceof EntityEnderCrystal)
- {
- itemstack = new ItemStack(Items.field_185158_cP);
- }
- else
- {
- item = Items.field_151063_bx;
- i = EntityList.func_75619_a(this.field_71476_x.field_72308_g);
- flag1 = true;
- String s = EntityList.func_75621_b(this.field_71476_x.field_72308_g);
-
- if (!EntityList.field_75627_a.containsKey(Integer.valueOf(i)))
- if (!EntityList.field_75627_a.containsKey(s))
- {
- return;
- }
-
- itemstack = new ItemStack(Items.field_151063_bx);
- ItemMonsterPlacer.func_185078_a(itemstack, s);
- }
- }
-
InventoryPlayer inventoryplayer = this.field_71439_g.field_71071_by;
- if (tileentity == null)
- if (itemstack.func_77973_b() == null)
- {
- inventoryplayer.func_146030_a(item, i, flag1, flag);
- String s1 = "";
-
- if (this.field_71476_x.field_72313_a == RayTraceResult.Type.BLOCK)
- {
- s1 = ((ResourceLocation)Block.field_149771_c.func_177774_c(this.field_71441_e.func_180495_p(this.field_71476_x.func_178782_a()).func_177230_c())).toString();
- }
- else if (this.field_71476_x.field_72313_a == RayTraceResult.Type.ENTITY)
- {
- s1 = EntityList.func_75621_b(this.field_71476_x.field_72308_g);
- }
-
- field_147123_G.warn("Picking on: [{}] {} gave null item", new Object[] {this.field_71476_x.field_72313_a, s1});
- }
- else
- {
- ItemStack itemstack1 = this.func_181036_a(item, i, tileentity);
- inventoryplayer.func_70299_a(inventoryplayer.field_70461_c, itemstack1);
- }
- InventoryPlayer inventoryplayer = this.field_71439_g.field_71071_by;
-
+ if (!net.minecraftforge.common.ForgeHooks.onPickBlock(this.field_71476_x, this.field_71439_g, this.field_71441_e)) return;
- if (tileentity != null)
- {
- this.func_184119_a(itemstack, tileentity);
- }
-
- int i = inventoryplayer.func_184429_b(itemstack);
-
- if (flag)
- {
- inventoryplayer.func_184434_a(itemstack);
- this.field_71442_b.func_78761_a(this.field_71439_g.func_184586_b(EnumHand.MAIN_HAND), 36 + inventoryplayer.field_70461_c);
- }
- else if (i != -1)
- {
- if (InventoryPlayer.func_184435_e(i))
- {
- inventoryplayer.field_70461_c = i;
- }
- else
- {
- this.field_71442_b.func_187100_a(i);
- }
- }
- }
+ net.minecraftforge.common.ForgeHooks.onPickBlock(this.field_71476_x, this.field_71439_g, this.field_71441_e);
+ // We delete this code wholly instead of commenting it out, to make sure we detect changes in it between MC versions
if (flag)
{
int j = this.field_71439_g.field_71069_bz.field_75151_b.size() - 9 + inventoryplayer.field_70461_c;
@@ -2756,18 +2699,8 @@
}
}
@@ -2912,18 +2814,8 @@
public static int func_71369_N()
{
- for (int i = 16384; i > 0; i >>= 1)
- {
- GL11.glTexImage2D(GL11.GL_PROXY_TEXTURE_2D, 0, GL11.GL_RGBA, i, i, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)((ByteBuffer)null));
- int j = GL11.glGetTexLevelParameteri(GL11.GL_PROXY_TEXTURE_2D, 0, GL11.GL_TEXTURE_WIDTH);
- GlStateManager.func_187419_a(32868, 0, 6408, i, i, 0, 6408, 5121, (IntBuffer)null);
- int j = GlStateManager.func_187411_c(32868, 0, 4096);
-
- if (j != 0)
- {
@@ -457,15 +501,33 @@
}
public boolean func_70002_Q()
@@ -2924,9 +2857,9 @@
{
this.func_147108_a(new GuiYesNo(new GuiYesNoCallback()
{
- public void func_73878_a(boolean p_73878_1_, int p_73878_2_)
+ public void func_73878_a(boolean result, int id)
{
- if (p_73878_1_)
+ if (result)
{
Minecraft.this.func_152346_Z().func_152930_t();
}
@@ -3060,15 +2952,16 @@
{
if (Keyboard.getEventKeyState())
{
- if (i == this.field_71474_y.field_152395_am.func_151463_i())
+ if (this.field_71474_y.field_152395_am.isActiveAndMatches(i))
{
this.func_71352_k();
}
- else if (i == this.field_71474_y.field_151447_Z.func_151463_i())
+ else if (this.field_71474_y.field_151447_Z.isActiveAndMatches(i))
{
this.field_71456_v.func_146158_b().func_146227_a(ScreenShotHelper.func_148260_a(this.field_71412_D, this.field_71443_c, this.field_71440_d, this.field_147124_at));
}
}
+ else if (this.field_71462_r instanceof GuiControls) ((GuiControls)this.field_71462_r).field_146491_f = null;
}
}
}
@@ -3195,4 +3088,10 @@
{
return this.field_184127_aH;
}
+
+ // FORGE
+ public ItemColors getItemColors()
+ {
+ return this.field_184128_aI;
+ }
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/audio/SoundManager.java
+++ ../src-work/minecraft/net/minecraft/client/audio/SoundManager.java
@@ -69,6 +69,7 @@
@@ -76,6 +76,7 @@
{
SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
@@ -8,34 +8,34 @@
}
catch (SoundSystemException soundsystemexception)
{
@@ -80,6 +81,7 @@
{
@@ -100,6 +101,7 @@
this.func_148613_b();
this.func_148608_i();
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.sound.SoundLoadEvent(this));
}
private synchronized void func_148608_i()
@@ -316,6 +318,9 @@
}
else
{
+ p_148611_1_ = net.minecraftforge.client.ForgeHooksClient.playSound(this, p_148611_1_);
+ if (p_148611_1_ == null) return;
@@ -338,6 +340,9 @@
{
if (this.field_148617_f)
{
+ p_148611_1_ = net.minecraftforge.client.ForgeHooksClient.playSound(this, p_148611_1_);
+ if (p_148611_1_ == null) return;
+
SoundEventAccessorComposite soundeventaccessorcomposite = this.field_148622_c.func_147680_a(p_148611_1_.func_147650_b());
SoundEventAccessor soundeventaccessor = p_148611_1_.func_184366_a(this.field_148622_c);
ResourceLocation resourcelocation = p_148611_1_.func_147650_b();
if (soundeventaccessorcomposite == null)
@@ -357,10 +362,12 @@
if (soundpoolentry.func_148648_d())
@@ -400,10 +405,12 @@
if (sound.func_188723_h())
{
this.field_148620_e.newStreamingSource(false, s, func_148612_a(resourcelocation), resourcelocation.toString(), flag, p_148611_1_.func_147649_g(), p_148611_1_.func_147654_h(), p_148611_1_.func_147651_i(), p_148611_1_.func_147656_j().func_148586_a(), f1);
this.field_148620_e.newStreamingSource(false, s, func_148612_a(resourcelocation1), resourcelocation1.toString(), flag, p_148611_1_.func_147649_g(), p_148611_1_.func_147654_h(), p_148611_1_.func_147651_i(), p_148611_1_.func_147656_j().func_148586_a(), f);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.sound.PlayStreamingSourceEvent(this, p_148611_1_, s));
}
else
{
this.field_148620_e.newSource(false, s, func_148612_a(resourcelocation), resourcelocation.toString(), flag, p_148611_1_.func_147649_g(), p_148611_1_.func_147654_h(), p_148611_1_.func_147651_i(), p_148611_1_.func_147656_j().func_148586_a(), f1);
this.field_148620_e.newSource(false, s, func_148612_a(resourcelocation1), resourcelocation1.toString(), flag, p_148611_1_.func_147649_g(), p_148611_1_.func_147654_h(), p_148611_1_.func_147651_i(), p_148611_1_.func_147656_j().func_148586_a(), f);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.sound.PlaySoundSourceEvent(this, p_148611_1_, s));
}
field_148621_b.debug(field_148623_a, "Playing sound {} for event {} as channel {}", new Object[] {soundpoolentry.func_148652_a(), soundeventaccessorcomposite.func_148729_c(), s});
field_148621_b.debug(field_148623_a, "Playing sound {} for event {} as channel {}", new Object[] {sound.func_188719_a(), resourcelocation1, s});
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/entity/AbstractClientPlayer.java
+++ ../src-work/minecraft/net/minecraft/client/entity/AbstractClientPlayer.java
@@ -128,6 +128,6 @@
@@ -152,6 +152,6 @@
f *= 1.0F - f1 * 0.15F;
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/entity/EntityPlayerSP.java
+++ ../src-work/minecraft/net/minecraft/client/entity/EntityPlayerSP.java
@@ -345,6 +345,15 @@
@@ -404,6 +404,15 @@
this.field_71159_c.field_71456_v.func_146158_b().func_146227_a(p_146105_1_);
}
@@ -16,7 +16,7 @@
protected boolean func_145771_j(double p_145771_1_, double p_145771_3_, double p_145771_5_)
{
if (this.field_70145_X)
@@ -357,30 +366,34 @@
@@ -416,30 +425,34 @@
double d0 = p_145771_1_ - (double)blockpos.func_177958_n();
double d1 = p_145771_5_ - (double)blockpos.func_177952_p();
@@ -56,25 +56,27 @@
{
d2 = 1.0D - d1;
i = 5;
@@ -415,7 +428,7 @@
@@ -474,7 +487,7 @@
private boolean func_175162_d(BlockPos p_175162_1_)
{
- return !this.field_70170_p.func_180495_p(p_175162_1_).func_177230_c().func_149721_r() && !this.field_70170_p.func_180495_p(p_175162_1_.func_177984_a()).func_177230_c().func_149721_r();
+ return !this.field_70170_p.func_180495_p(p_175162_1_).func_177230_c().func_149721_r();
- return !this.field_70170_p.func_180495_p(p_175162_1_).func_185915_l() && !this.field_70170_p.func_180495_p(p_175162_1_.func_177984_a()).func_185915_l();
+ return !this.field_70170_p.func_180495_p(p_175162_1_).func_185915_l();
}
public void func_70031_b(boolean p_70031_1_)
@@ -448,6 +461,12 @@
@@ -519,7 +532,13 @@
public void func_85030_a(String p_85030_1_, float p_85030_2_, float p_85030_3_)
public void func_184185_a(SoundEvent p_184185_1_, float p_184185_2_, float p_184185_3_)
{
+ net.minecraftforge.event.entity.PlaySoundAtEntityEvent event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, p_85030_1_, p_85030_2_, p_85030_3_);
+ if (event.isCanceled() || event.name == null) return;
+ p_85030_1_ = event.name;
+ p_85030_2_ = event.newVolume;
+ p_85030_3_ = event.newPitch;
- this.field_70170_p.func_184134_a(this.field_70165_t, this.field_70163_u, this.field_70161_v, p_184185_1_, this.func_184176_by(), p_184185_2_, p_184185_3_, false);
+ net.minecraftforge.event.entity.PlaySoundAtEntityEvent event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, p_184185_1_, this.func_184176_by(), p_184185_2_, p_184185_3_);
+ if (event.isCanceled() || event.getSound() == null) return;
+ p_184185_1_ = event.getSound();
+ p_184185_2_ = event.getVolume();
+ p_184185_3_ = event.getPitch();
+
this.field_70170_p.func_72980_b(this.field_70165_t, this.field_70163_u, this.field_70161_v, p_85030_1_, p_85030_2_, p_85030_3_, false);
+ this.field_70170_p.func_184134_a(this.field_70165_t, this.field_70163_u, this.field_70161_v, p_184185_1_, event.getCategory(), p_184185_2_, p_184185_3_, false);
}
public boolean func_70613_aW()
@@ -17,25 +17,25 @@
}
private void func_111272_d()
@@ -105,7 +106,7 @@
@@ -106,7 +107,7 @@
try
{
- bufferedimage = TextureUtil.func_177053_a(Minecraft.func_71410_x().func_110442_L().func_110536_a(this.field_111273_g).func_110527_b());
+ bufferedimage = TextureUtil.func_177053_a(getResourceInputStream(this.field_111273_g));
- iresource = Minecraft.func_71410_x().func_110442_L().func_110536_a(this.field_111273_g);
+ iresource = getResource(this.field_111273_g);
bufferedimage = TextureUtil.func_177053_a(iresource.func_110527_b());
}
catch (IOException ioexception)
{
@@ -165,7 +166,7 @@
@@ -171,7 +172,7 @@
try
{
- inputstream = Minecraft.func_71410_x().func_110442_L().func_110536_a(new ResourceLocation("font/glyph_sizes.bin")).func_110527_b();
+ inputstream = getResourceInputStream(new ResourceLocation("font/glyph_sizes.bin"));
inputstream.read(this.field_78287_e);
- iresource = Minecraft.func_71410_x().func_110442_L().func_110536_a(new ResourceLocation("font/glyph_sizes.bin"));
+ iresource = getResource(new ResourceLocation("font/glyph_sizes.bin"));
iresource.func_110527_b().read(this.field_78287_e);
}
catch (IOException ioexception)
@@ -196,7 +197,7 @@
@@ -202,7 +203,7 @@
int i = p_78266_1_ % 16 * 8;
int j = p_78266_1_ / 16 * 8;
int k = p_78266_2_ ? 1 : 0;
@@ -43,8 +43,8 @@
+ bindTexture(this.field_111273_g);
int l = this.field_78286_d[p_78266_1_];
float f = (float)l - 0.01F;
GL11.glBegin(GL11.GL_TRIANGLE_STRIP);
@@ -224,7 +225,7 @@
GlStateManager.func_187447_r(5);
@@ -230,7 +231,7 @@
private void func_78257_a(int p_78257_1_)
{
@@ -53,7 +53,7 @@
}
protected float func_78277_a(char p_78277_1_, boolean p_78277_2_)
@@ -271,7 +272,7 @@
@@ -279,7 +280,7 @@
public int func_175065_a(String p_175065_1_, float p_175065_2_, float p_175065_3_, int p_175065_4_, boolean p_175065_5_)
{
@@ -62,7 +62,7 @@
this.func_78265_b();
int i;
@@ -341,7 +342,7 @@
@@ -349,7 +350,7 @@
int j1 = this.field_78285_g[i1];
this.field_78304_r = j1;
@@ -71,7 +71,7 @@
}
else if (i1 == 16)
{
@@ -370,7 +371,7 @@
@@ -378,7 +379,7 @@
this.field_78299_w = false;
this.field_78300_v = false;
this.field_78301_u = false;
@@ -80,7 +80,7 @@
}
++i;
@@ -398,7 +399,7 @@
@@ -406,7 +407,7 @@
c0 = c1;
}
@@ -89,7 +89,7 @@
boolean flag = (c0 == 0 || j == -1 || this.field_78293_l) && p_78255_2_;
if (flag)
@@ -436,7 +437,16 @@
@@ -444,7 +445,16 @@
++f;
}
@@ -106,7 +106,7 @@
if (this.field_78299_w)
{
Tessellator tessellator = Tessellator.func_178181_a();
@@ -509,7 +519,7 @@
@@ -517,7 +527,7 @@
this.field_78292_o = (float)(p_180455_4_ >> 8 & 255) / 255.0F;
this.field_78306_p = (float)(p_180455_4_ & 255) / 255.0F;
this.field_78305_q = (float)(p_180455_4_ >> 24 & 255) / 255.0F;
@@ -115,19 +115,7 @@
this.field_78295_j = p_180455_2_;
this.field_78296_k = p_180455_3_;
this.func_78255_a(p_180455_1_, p_180455_5_);
@@ -588,11 +598,6 @@
int j = this.field_78287_e[p_78263_1_] >>> 4;
int k = this.field_78287_e[p_78263_1_] & 15;
- if (k > 7)
- {
- k = 15;
- j = 0;
- }
++k;
return (k - j) / 2 + 1;
@@ -846,6 +851,26 @@
@@ -848,6 +858,26 @@
return this.field_78294_m;
}
@@ -146,11 +134,11 @@
+ field_78298_i.func_110577_a(location);
+ }
+
+ protected InputStream getResourceInputStream(ResourceLocation location) throws IOException
+ protected IResource getResource(ResourceLocation location) throws IOException
+ {
+ return Minecraft.func_71410_x().func_110442_L().func_110536_a(location).func_110527_b();
+ return Minecraft.func_71410_x().func_110442_L().func_110536_a(location);
+ }
+
public int func_175064_b(char p_175064_1_)
{
return this.field_78285_g["0123456789abcdef".indexOf(p_175064_1_)];
int i = "0123456789abcdef".indexOf(p_175064_1_);
@@ -0,0 +1,22 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiBossOverlay.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiBossOverlay.java
@@ -35,13 +35,18 @@
for (BossInfoLerping bossinfolerping : this.field_184060_g.values())
{
int k = i / 2 - 91;
+ net.minecraftforge.client.event.RenderGameOverlayEvent.BossInfo event =
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPre(scaledresolution, bossinfolerping, k, j, 10 + this.field_184059_f.field_71466_p.field_78288_b);
+ if (!event.isCanceled()) {
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
this.field_184059_f.func_110434_K().func_110577_a(field_184058_a);
this.func_184052_a(k, j, bossinfolerping);
String s = bossinfolerping.func_186744_e().func_150254_d();
this.field_184059_f.field_71466_p.func_175063_a(s, (float)(i / 2 - this.field_184059_f.field_71466_p.func_78256_a(s) / 2), (float)(j - 9), 16777215);
- j += 10 + this.field_184059_f.field_71466_p.field_78288_b;
+ }
+ j += event.getIncrement();
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPost(scaledresolution);
if (j >= scaledresolution.func_78328_b() / 3)
{
break;
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiButton.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiButton.java
@@ -21,6 +21,7 @@
@@ -22,6 +22,7 @@
public boolean field_146124_l;
public boolean field_146125_m;
protected boolean field_146123_n;
@@ -8,7 +8,7 @@
public GuiButton(int p_i1020_1_, int p_i1020_2_, int p_i1020_3_, String p_i1020_4_)
{
@@ -74,6 +75,11 @@
@@ -75,6 +76,11 @@
this.func_146119_b(p_146112_1_, p_146112_2_, p_146112_3_);
int j = 14737632;
@@ -1,39 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiChat.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiChat.java
@@ -215,13 +215,14 @@
this.field_146297_k.field_71456_v.func_146158_b().func_146234_a(new ChatComponentText(stringbuilder.toString()), 1);
}
- this.field_146415_a.func_146191_b((String)this.field_146412_t.get(this.field_146413_s++));
+ this.field_146415_a.func_146191_b(net.minecraft.util.EnumChatFormatting.func_110646_a((String)this.field_146412_t.get(this.field_146413_s++)));
}
private void func_146405_a(String p_146405_1_, String p_146405_2_)
{
if (p_146405_1_.length() >= 1)
{
+ net.minecraftforge.client.ClientCommandHandler.instance.autoComplete(p_146405_1_, p_146405_2_);
BlockPos blockpos = null;
if (this.field_146297_k.field_71476_x != null && this.field_146297_k.field_71476_x.field_72313_a == MovingObjectPosition.MovingObjectType.BLOCK)
@@ -281,6 +282,12 @@
this.field_146417_i = false;
this.field_146412_t.clear();
+ String[] complete = net.minecraftforge.client.ClientCommandHandler.instance.latestAutoComplete;
+ if (complete != null)
+ {
+ p_146406_1_ = com.google.common.collect.ObjectArrays.concat(complete, p_146406_1_, String.class);
+ }
+
for (String s : p_146406_1_)
{
if (s.length() > 0)
@@ -291,6 +298,7 @@
String s1 = this.field_146415_a.func_146179_b().substring(this.field_146415_a.func_146197_a(-1, this.field_146415_a.func_146198_h(), false));
String s2 = StringUtils.getCommonPrefix(p_146406_1_);
+ s2 = net.minecraft.util.EnumChatFormatting.func_110646_a(s2);
if (s2.length() > 0 && !s1.equalsIgnoreCase(s2))
{
@@ -0,0 +1,50 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiControls.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiControls.java
@@ -65,7 +65,7 @@
{
for (KeyBinding keybinding : this.field_146297_k.field_71474_y.field_74324_K)
{
- keybinding.func_151462_b(keybinding.func_151469_h());
+ keybinding.setToDefault();
}
KeyBinding.func_74508_b();
@@ -81,6 +81,7 @@
{
if (this.field_146491_f != null)
{
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), -100 + p_73864_3_);
this.field_146497_i.func_151440_a(this.field_146491_f, -100 + p_73864_3_);
this.field_146491_f = null;
KeyBinding.func_74508_b();
@@ -105,17 +106,21 @@
{
if (p_73869_2_ == 1)
{
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, 0);
this.field_146497_i.func_151440_a(this.field_146491_f, 0);
}
else if (p_73869_2_ != 0)
{
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), p_73869_2_);
this.field_146497_i.func_151440_a(this.field_146491_f, p_73869_2_);
}
else if (p_73869_1_ > 0)
{
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), p_73869_1_ + 256);
this.field_146497_i.func_151440_a(this.field_146491_f, p_73869_1_ + 256);
}
+ if (!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(p_73869_2_))
this.field_146491_f = null;
this.field_152177_g = Minecraft.func_71386_F();
KeyBinding.func_74508_b();
@@ -135,7 +140,7 @@
for (KeyBinding keybinding : this.field_146497_i.field_74324_K)
{
- if (keybinding.func_151463_i() != keybinding.func_151469_h())
+ if (!keybinding.isSetToDefaultValue())
{
flag = false;
break;
@@ -6,10 +6,10 @@
+ WorldType.field_77139_a[this.field_146331_K].onGUICreateWorldPress();
+
WorldSettings.GameType worldsettings$gametype = WorldSettings.GameType.func_77142_a(this.field_146342_r);
WorldSettings worldsettings = new WorldSettings(i, worldsettings$gametype, this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
WorldSettings worldsettings = new WorldSettings(i, WorldSettings.GameType.func_77142_a(this.field_146342_r), this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
worldsettings.func_82750_a(this.field_146334_a);
@@ -312,14 +314,7 @@
@@ -311,14 +313,7 @@
}
else if (p_146284_1_.field_146127_k == 8)
{
@@ -25,7 +25,7 @@
}
}
}
@@ -371,7 +366,7 @@
@@ -370,7 +365,7 @@
this.field_146326_C.field_146125_m = this.field_146344_y;
this.field_146320_D.field_146125_m = this.field_146344_y;
this.field_146321_E.field_146125_m = this.field_146344_y;
@@ -0,0 +1,35 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiIngame.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiIngame.java
@@ -361,7 +361,8 @@
BlockPos blockpos = raytraceresult.func_178782_a();
- if (!this.field_73839_d.field_71441_e.func_180495_p(blockpos).func_177230_c().func_149716_u() || !(this.field_73839_d.field_71441_e.func_175625_s(blockpos) instanceof IInventory))
+ net.minecraft.block.state.IBlockState state = this.field_73839_d.field_71441_e.func_180495_p(blockpos);
+ if (!state.func_177230_c().hasTileEntity(state) || !(this.field_73839_d.field_71441_e.func_175625_s(blockpos) instanceof IInventory))
{
return;
}
@@ -419,7 +420,10 @@
{
Potion potion = potioneffect.func_188419_a();
- if (potion.func_76400_d() && potioneffect.func_188418_e())
+ if (!potion.shouldRenderHUD(potioneffect)) continue;
+ // Rebind in case previous renderHUDEffect changed texture
+ this.field_73839_d.func_110434_K().func_110577_a(GuiContainer.field_147001_a);
+ if (potioneffect.func_188418_e())
{
int k = p_184048_1_.func_78326_a();
int l = 1;
@@ -456,7 +460,10 @@
}
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, f);
+ // FORGE - Move status icon check down from above so renderHUDEffect will still be called without a status icon
+ if (potion.func_76400_d())
this.func_73729_b(k + 3, l + 3, i1 % 8 * 18, 198 + i1 / 8 * 18, 18, 18);
+ potion.renderHUDEffect(k, l, potioneffect, field_73839_d, f);
}
}
}
@@ -0,0 +1,67 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiKeyBindingList.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiKeyBindingList.java
@@ -62,7 +62,7 @@
protected int func_148137_d()
{
- return super.func_148137_d() + 15;
+ return super.func_148137_d() + 35;
}
public int func_148139_c()
@@ -113,7 +113,7 @@
{
this.field_148282_b = p_i45029_2_;
this.field_148283_c = I18n.func_135052_a(p_i45029_2_.func_151464_g(), new Object[0]);
- this.field_148280_d = new GuiButton(0, 0, 0, 75, 20, I18n.func_135052_a(p_i45029_2_.func_151464_g(), new Object[0]));
+ this.field_148280_d = new GuiButton(0, 0, 0, 95, 20, I18n.func_135052_a(p_i45029_2_.func_151464_g(), new Object[0]));
this.field_148281_e = new GuiButton(0, 0, 0, 50, 20, I18n.func_135052_a("controls.reset", new Object[0]));
}
@@ -121,23 +121,24 @@
{
boolean flag = GuiKeyBindingList.this.field_148191_k.field_146491_f == this.field_148282_b;
GuiKeyBindingList.this.field_148189_l.field_71466_p.func_78276_b(this.field_148283_c, p_180790_2_ + 90 - GuiKeyBindingList.this.field_148188_n, p_180790_3_ + p_180790_5_ / 2 - GuiKeyBindingList.this.field_148189_l.field_71466_p.field_78288_b / 2, 16777215);
- this.field_148281_e.field_146128_h = p_180790_2_ + 190;
+ this.field_148281_e.field_146128_h = p_180790_2_ + 210;
this.field_148281_e.field_146129_i = p_180790_3_;
- this.field_148281_e.field_146124_l = this.field_148282_b.func_151463_i() != this.field_148282_b.func_151469_h();
+ this.field_148281_e.field_146124_l = !this.field_148282_b.isSetToDefaultValue();
this.field_148281_e.func_146112_a(GuiKeyBindingList.this.field_148189_l, p_180790_6_, p_180790_7_);
this.field_148280_d.field_146128_h = p_180790_2_ + 105;
this.field_148280_d.field_146129_i = p_180790_3_;
- this.field_148280_d.field_146126_j = GameSettings.func_74298_c(this.field_148282_b.func_151463_i());
+ this.field_148280_d.field_146126_j = this.field_148282_b.getDisplayName();
boolean flag1 = false;
+ boolean keyCodeModifierConflict = true; // less severe form of conflict, like SHIFT conflicting with SHIFT+G
if (this.field_148282_b.func_151463_i() != 0)
{
for (KeyBinding keybinding : GuiKeyBindingList.this.field_148189_l.field_71474_y.field_74324_K)
{
- if (keybinding != this.field_148282_b && keybinding.func_151463_i() == this.field_148282_b.func_151463_i())
+ if (keybinding != this.field_148282_b && keybinding.conflicts(this.field_148282_b))
{
flag1 = true;
- break;
+ keyCodeModifierConflict &= keybinding.hasKeyCodeModifierConflict(this.field_148282_b);
}
}
}
@@ -148,7 +149,7 @@
}
else if (flag1)
{
- this.field_148280_d.field_146126_j = TextFormatting.RED + this.field_148280_d.field_146126_j;
+ this.field_148280_d.field_146126_j = (keyCodeModifierConflict ? TextFormatting.GOLD : TextFormatting.RED) + this.field_148280_d.field_146126_j;
}
this.field_148280_d.func_146112_a(GuiKeyBindingList.this.field_148189_l, p_180790_6_, p_180790_7_);
@@ -163,6 +164,7 @@
}
else if (this.field_148281_e.func_146116_c(GuiKeyBindingList.this.field_148189_l, p_148278_2_, p_148278_3_))
{
+ this.field_148282_b.setToDefault();
GuiKeyBindingList.this.field_148189_l.field_71474_y.func_151440_a(this.field_148282_b, this.field_148282_b.func_151469_h());
KeyBinding.func_74508_b();
return true;
@@ -0,0 +1,11 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiListWorldSelectionEntry.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiListWorldSelectionEntry.java
@@ -242,7 +242,7 @@
if (this.field_186784_e.func_71359_d().func_90033_f(this.field_186786_g.func_75786_a()))
{
- this.field_186784_e.func_71371_a(this.field_186786_g.func_75786_a(), this.field_186786_g.func_75788_b(), (WorldSettings)null);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().tryLoadExistingWorld(field_186785_f, this.field_186786_g);
}
}
@@ -1,16 +1,32 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiMainMenu.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiMainMenu.java
@@ -223,7 +223,8 @@
@@ -67,6 +67,8 @@
private GuiButton field_175372_K;
private boolean field_183502_L;
private GuiScreen field_183503_M;
+ private GuiButton modButton;
+ private net.minecraftforge.client.gui.NotificationModUpdateScreen modUpdateNotification;
public GuiMainMenu()
{
@@ -210,13 +212,15 @@
this.field_183503_M.func_183500_a(this.field_146294_l, this.field_146295_m);
this.field_183503_M.func_73866_w_();
}
+ modUpdateNotification = net.minecraftforge.client.gui.NotificationModUpdateScreen.init(this, modButton);
}
private void func_73969_a(int p_73969_1_, int p_73969_2_)
{
this.field_146292_n.add(new GuiButton(1, this.field_146294_l / 2 - 100, p_73969_1_, I18n.func_135052_a("menu.singleplayer", new Object[0])));
this.field_146292_n.add(new GuiButton(2, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.func_135052_a("menu.multiplayer", new Object[0])));
- this.field_146292_n.add(this.field_175372_K = new GuiButton(14, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.func_135052_a("menu.online", new Object[0])));
+ this.field_146292_n.add(this.field_175372_K = new GuiButton(14, this.field_146294_l / 2 + 2, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.func_135052_a("menu.online", new Object[0]).replace("Minecraft", "").trim()));
+ this.field_146292_n.add(new GuiButton(6, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.func_135052_a("fml.menu.mods")));
+ this.field_146292_n.add(modButton = new GuiButton(6, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.func_135052_a("fml.menu.mods")));
}
private void func_73972_b(int p_73972_1_, int p_73972_2_)
@@ -271,6 +272,11 @@
@@ -264,6 +268,11 @@
this.field_146297_k.func_71400_g();
}
@@ -22,8 +38,17 @@
if (p_146284_1_.field_146127_k == 11)
{
this.field_146297_k.func_71371_a("Demo_World", "Demo_World", DemoWorldServer.field_73071_a);
@@ -516,7 +522,16 @@
s = s + " Demo";
@@ -493,6 +502,8 @@
this.func_73729_b(j + 155, k + 0, 0, 45, 155, 44);
}
+ this.field_73975_c = net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, this.field_146289_q, this.field_146294_l, this.field_146295_m, this.field_73975_c);
+
GlStateManager.func_179094_E();
GlStateManager.func_179109_b((float)(this.field_146294_l / 2 + 90), 70.0F, 0.0F);
GlStateManager.func_179114_b(-20.0F, 0.0F, 0.0F, 1.0F);
@@ -512,7 +523,15 @@
s = s + ("release".equalsIgnoreCase(this.field_146297_k.func_184123_d()) ? "" : "/" + this.field_146297_k.func_184123_d());
}
- this.func_73731_b(this.field_146289_q, s, 2, this.field_146295_m - 10, -1);
@@ -36,7 +61,23 @@
+ this.func_73731_b(this.field_146289_q, brd, 2, this.field_146295_m - ( 10 + brdline * (this.field_146289_q.field_78288_b + 1)), 16777215);
+ }
+ }
+ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, this.field_146289_q, this.field_146294_l, this.field_146295_m);
String s1 = "Copyright Mojang AB. Do not distribute!";
this.func_73731_b(this.field_146289_q, s1, this.field_146294_l - this.field_146289_q.func_78256_a(s1) - 2, this.field_146295_m - 10, -1);
@@ -529,6 +548,7 @@
{
this.field_183503_M.func_73863_a(p_73863_1_, p_73863_2_, p_73863_3_);
}
+ modUpdateNotification.func_73863_a(p_73863_1_, p_73863_2_, p_73863_3_);
}
protected void func_73864_a(int p_73864_1_, int p_73864_2_, int p_73864_3_) throws IOException
@@ -549,6 +569,8 @@
{
this.field_183503_M.func_73864_a(p_73864_1_, p_73864_2_, p_73864_3_);
}
+
+ net.minecraftforge.client.ForgeHooksClient.mainMenuMouseClick(p_73864_1_, p_73864_2_, p_73864_3_, this.field_146289_q, this.field_146294_l);
}
public void func_146281_b()
@@ -1,8 +1,8 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
@@ -176,6 +176,9 @@
@@ -193,6 +193,9 @@
long l = j - k;
List<String> list = Lists.newArrayList(new String[] {String.format("Java: %s %dbit", new Object[]{System.getProperty("java.version"), Integer.valueOf(this.field_175242_a.func_147111_S() ? 64 : 32)}), String.format("Mem: % 2d%% %03d/%03dMB", new Object[]{Long.valueOf(l * 100L / i), Long.valueOf(func_175240_a(l)), Long.valueOf(func_175240_a(i))}), String.format("Allocated: % 2d%% %03dMB", new Object[]{Long.valueOf(j * 100L / i), Long.valueOf(func_175240_a(j))}), "", String.format("CPU: %s", new Object[]{OpenGlHelper.func_183029_j()}), "", String.format("Display: %dx%d (%s)", new Object[]{Integer.valueOf(Display.getWidth()), Integer.valueOf(Display.getHeight()), GL11.glGetString(GL11.GL_VENDOR)}), GL11.glGetString(GL11.GL_RENDERER), GL11.glGetString(GL11.GL_VERSION)});
List<String> list = Lists.newArrayList(new String[] {String.format("Java: %s %dbit", new Object[]{System.getProperty("java.version"), Integer.valueOf(this.field_175242_a.func_147111_S() ? 64 : 32)}), String.format("Mem: % 2d%% %03d/%03dMB", new Object[]{Long.valueOf(l * 100L / i), Long.valueOf(func_175240_a(l)), Long.valueOf(func_175240_a(i))}), String.format("Allocated: % 2d%% %03dMB", new Object[]{Long.valueOf(j * 100L / i), Long.valueOf(func_175240_a(j))}), "", String.format("CPU: %s", new Object[]{OpenGlHelper.func_183029_j()}), "", String.format("Display: %dx%d (%s)", new Object[]{Integer.valueOf(Display.getWidth()), Integer.valueOf(Display.getHeight()), GlStateManager.func_187416_u(7936)}), GlStateManager.func_187416_u(7937), GlStateManager.func_187416_u(7938)});
+ list.add("");
+ list.addAll(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(false));
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiScreen.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiScreen.java
@@ -143,7 +143,8 @@
@@ -141,7 +141,8 @@
}
}
@@ -10,7 +10,7 @@
}
protected void func_146279_a(String p_146279_1_, int p_146279_2_, int p_146279_3_)
@@ -153,7 +154,13 @@
@@ -151,7 +152,13 @@
protected void func_146283_a(List<String> p_146283_1_, int p_146283_2_, int p_146283_3_)
{
@@ -25,7 +25,7 @@
{
GlStateManager.func_179101_C();
RenderHelper.func_74518_a();
@@ -436,6 +443,7 @@
@@ -421,6 +428,7 @@
{
this.field_146297_k.field_71456_v.func_146158_b().func_146239_a(p_175281_1_);
}
@@ -33,23 +33,23 @@
this.field_146297_k.field_71439_g.func_71165_d(p_175281_1_);
}
@@ -450,9 +458,15 @@
@@ -435,9 +443,15 @@
if (guibutton.func_146116_c(this.field_146297_k, p_73864_1_, p_73864_2_))
{
+ net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent.Pre event = new net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent.Pre(this, guibutton, this.field_146292_n);
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event))
+ break;
+ guibutton = event.button;
+ guibutton = event.getButton();
this.field_146290_a = guibutton;
guibutton.func_146113_a(this.field_146297_k.func_147118_V());
this.func_146284_a(guibutton);
+ if (this.equals(this.field_146297_k.field_71462_r))
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent.Post(this, event.button, this.field_146292_n));
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent.Post(this, event.getButton(), this.field_146292_n));
}
}
}
@@ -482,8 +496,12 @@
@@ -467,8 +481,12 @@
this.field_146289_q = p_146280_1_.field_71466_p;
this.field_146294_l = p_146280_2_;
this.field_146295_m = p_146280_3_;
@@ -62,7 +62,7 @@
}
public void func_183500_a(int p_183500_1_, int p_183500_2_)
@@ -502,7 +520,9 @@
@@ -487,7 +505,9 @@
{
while (Mouse.next())
{
@@ -72,7 +72,7 @@
}
}
@@ -510,7 +530,9 @@
@@ -495,7 +515,9 @@
{
while (Keyboard.next())
{
@@ -82,7 +82,7 @@
}
}
}
@@ -570,6 +592,7 @@
@@ -557,6 +579,7 @@
public void func_146276_q_()
{
this.func_146270_b(0);
@@ -0,0 +1,16 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiScreenDemo.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiScreenDemo.java
@@ -73,10 +73,10 @@
this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.title", new Object[0]), i, j, 2039583);
j = j + 12;
GameSettings gamesettings = this.field_146297_k.field_71474_y;
- this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.movementShort", new Object[] {GameSettings.func_74298_c(gamesettings.field_74351_w.func_151463_i()), GameSettings.func_74298_c(gamesettings.field_74370_x.func_151463_i()), GameSettings.func_74298_c(gamesettings.field_74368_y.func_151463_i()), GameSettings.func_74298_c(gamesettings.field_74366_z.func_151463_i())}), i, j, 5197647);
+ this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.movementShort", new Object[] {gamesettings.field_74351_w.getDisplayName(), gamesettings.field_74370_x.getDisplayName(), gamesettings.field_74368_y.getDisplayName(), gamesettings.field_74366_z.getDisplayName()}), i, j, 5197647);
this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.movementMouse", new Object[0]), i, j + 12, 5197647);
- this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.jump", new Object[] {GameSettings.func_74298_c(gamesettings.field_74314_A.func_151463_i())}), i, j + 24, 5197647);
- this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.inventory", new Object[] {GameSettings.func_74298_c(gamesettings.field_151445_Q.func_151463_i())}), i, j + 36, 5197647);
+ this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.jump", new Object[] {gamesettings.field_74314_A.getDisplayName()}), i, j + 24, 5197647);
+ this.field_146289_q.func_78276_b(I18n.func_135052_a("demo.help.inventory", new Object[] {gamesettings.field_151445_Q.getDisplayName()}), i, j + 36, 5197647);
this.field_146289_q.func_78279_b(I18n.func_135052_a("demo.help.fullWrapped", new Object[0]), i, j + 68, 218, 2039583);
super.func_73863_a(p_73863_1_, p_73863_2_, p_73863_3_);
}
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
@@ -186,7 +186,7 @@
if (this.field_146297_k.func_71359_d().func_90033_f(s))
{
- this.field_146297_k.func_71371_a(s, s1, (WorldSettings)null);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().tryLoadExistingWorld(this, s, s1);
}
}
}
@@ -3,15 +3,15 @@
@@ -181,15 +181,8 @@
GlStateManager.func_179106_n();
Tessellator tessellator = Tessellator.func_178181_a();
WorldRenderer worldrenderer = tessellator.func_178180_c();
VertexBuffer vertexbuffer = tessellator.func_178180_c();
- this.field_148161_k.func_110434_K().func_110577_a(Gui.field_110325_k);
- GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
- float f = 32.0F;
- worldrenderer.func_181668_a(7, DefaultVertexFormats.field_181709_i);
- worldrenderer.func_181662_b((double)this.field_148152_e, (double)this.field_148154_c, 0.0D).func_181673_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- worldrenderer.func_181662_b((double)this.field_148151_d, (double)this.field_148154_c, 0.0D).func_181673_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- worldrenderer.func_181662_b((double)this.field_148151_d, (double)this.field_148153_b, 0.0D).func_181673_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- worldrenderer.func_181662_b((double)this.field_148152_e, (double)this.field_148153_b, 0.0D).func_181673_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- vertexbuffer.func_181668_a(7, DefaultVertexFormats.field_181709_i);
- vertexbuffer.func_181662_b((double)this.field_148152_e, (double)this.field_148154_c, 0.0D).func_187315_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- vertexbuffer.func_181662_b((double)this.field_148151_d, (double)this.field_148154_c, 0.0D).func_187315_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- vertexbuffer.func_181662_b((double)this.field_148151_d, (double)this.field_148153_b, 0.0D).func_187315_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- vertexbuffer.func_181662_b((double)this.field_148152_e, (double)this.field_148153_b, 0.0D).func_187315_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
- tessellator.func_78381_a();
+ // Forge: background rendering moved into separate method.
+ this.drawContainerBackground(tessellator);
@@ -25,15 +25,15 @@
+
+ protected void drawContainerBackground(Tessellator tessellator)
+ {
+ WorldRenderer worldrenderer = tessellator.func_178180_c();
+ VertexBuffer buffer = tessellator.func_178180_c();
+ this.field_148161_k.func_110434_K().func_110577_a(Gui.field_110325_k);
+ GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
+ float f = 32.0F;
+ worldrenderer.func_181668_a(7, DefaultVertexFormats.field_181709_i);
+ worldrenderer.func_181662_b((double)this.field_148152_e, (double)this.field_148154_c, 0.0D).func_181673_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ worldrenderer.func_181662_b((double)this.field_148151_d, (double)this.field_148154_c, 0.0D).func_181673_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ worldrenderer.func_181662_b((double)this.field_148151_d, (double)this.field_148153_b, 0.0D).func_181673_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ worldrenderer.func_181662_b((double)this.field_148152_e, (double)this.field_148153_b, 0.0D).func_181673_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181668_a(7, DefaultVertexFormats.field_181709_i);
+ buffer.func_181662_b((double)this.field_148152_e, (double)this.field_148154_c, 0.0D).func_187315_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.field_148151_d, (double)this.field_148154_c, 0.0D).func_187315_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148154_c + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.field_148151_d, (double)this.field_148153_b, 0.0D).func_187315_a((double)((float)this.field_148151_d / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.field_148152_e, (double)this.field_148153_b, 0.0D).func_187315_a((double)((float)this.field_148152_e / f), (double)((float)(this.field_148153_b + (int)this.field_148169_q) / f)).func_181669_b(32, 32, 32, 255).func_181675_d();
+ tessellator.func_78381_a();
+ }
}
@@ -0,0 +1,11 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiSpectator.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiSpectator.java
@@ -109,7 +109,7 @@
GlStateManager.func_179131_c(f, f, f, p_175266_4_);
p_175266_5_.func_178663_a(f, i);
GlStateManager.func_179121_F();
- String s = String.valueOf((Object)GameSettings.func_74298_c(this.field_175268_g.field_71474_y.field_151456_ac[p_175266_1_].func_151463_i()));
+ String s = String.valueOf(this.field_175268_g.field_71474_y.field_151456_ac[p_175266_1_].getDisplayName());
if (i > 3 && p_175266_5_.func_178662_A_())
{
@@ -5,6 +5,6 @@
}
+ s3 = FontRenderer.func_78282_e(s2) + s3; //Forge: Fix chat formatting not surviving line wrapping.
ChatComponentText chatcomponenttext2 = new ChatComponentText(s3);
chatcomponenttext2.func_150255_a(ichatcomponent1.func_150256_b().func_150232_l());
list1.add(j + 1, chatcomponenttext2);
TextComponentString textcomponentstring2 = new TextComponentString(s3);
textcomponentstring2.func_150255_a(itextcomponent1.func_150256_b().func_150232_l());
list1.add(j + 1, textcomponentstring2);
@@ -1,7 +1,7 @@
--- ../src-base/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
+++ ../src-work/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
@@ -82,7 +82,7 @@
boolean flag1 = this.field_148301_e.field_82821_f < 47;
boolean flag1 = this.field_148301_e.field_82821_f < 110;
boolean flag2 = flag || flag1;
this.field_148300_d.field_71466_p.func_78276_b(this.field_148301_e.field_78847_a, p_180790_2_ + 32 + 3, p_180790_3_ + 1, 16777215);
- List<String> list = this.field_148300_d.field_71466_p.func_78271_c(this.field_148301_e.field_78843_d, p_180790_4_ - 32 - 2);
@@ -1,22 +1,22 @@
--- ../src-base/minecraft/net/minecraft/client/gui/achievement/GuiAchievements.java
+++ ../src-work/minecraft/net/minecraft/client/gui/achievement/GuiAchievements.java
@@ -49,6 +49,10 @@
private StatFileWriter field_146556_E;
private StatisticsManager field_146556_E;
private boolean field_146558_F = true;
+ private int currentPage = -1;
+ private GuiButton button;
+ private java.util.LinkedList<Achievement> minecraftAchievements = new java.util.LinkedList<Achievement>();
+
public GuiAchievements(GuiScreen p_i45026_1_, StatFileWriter p_i45026_2_)
public GuiAchievements(GuiScreen p_i45026_1_, StatisticsManager p_i45026_2_)
{
this.field_146562_a = p_i45026_1_;
@@ -57,6 +61,14 @@
int j = 141;
this.field_146569_s = this.field_146567_u = this.field_146565_w = (double)(AchievementList.field_76004_f.field_75993_a * 24 - i / 2 - 12);
this.field_146568_t = this.field_146566_v = this.field_146573_x = (double)(AchievementList.field_76004_f.field_75991_b * 24 - j / 2);
this.field_146569_s = this.field_146567_u = this.field_146565_w = (double)(AchievementList.field_187982_f.field_75993_a * 24 - i / 2 - 12);
this.field_146568_t = this.field_146566_v = this.field_146573_x = (double)(AchievementList.field_187982_f.field_75991_b * 24 - j / 2);
+ minecraftAchievements.clear();
+ for (Achievement achievement : AchievementList.field_76007_e)
+ for (Achievement achievement : AchievementList.field_187981_e)
+ {
+ if (!net.minecraftforge.common.AchievementPage.isAchievementInPages(achievement))
+ {
@@ -27,14 +27,14 @@
public void func_73866_w_()
@@ -64,6 +76,7 @@
this.field_146297_k.func_147114_u().func_147297_a(new C16PacketClientStatus(C16PacketClientStatus.EnumState.REQUEST_STATS));
this.field_146297_k.func_147114_u().func_147297_a(new CPacketClientStatus(CPacketClientStatus.State.REQUEST_STATS));
this.field_146292_n.clear();
this.field_146292_n.add(new GuiOptionButton(1, this.field_146294_l / 2 + 24, this.field_146295_m / 2 + 74, 80, 20, I18n.func_135052_a("gui.done", new Object[0])));
+ this.field_146292_n.add(button = new GuiButton(2, (field_146294_l - field_146555_f) / 2 + 24, field_146295_m / 2 + 74, 125, 20, net.minecraftforge.common.AchievementPage.getTitle(currentPage)));
}
protected void func_146284_a(GuiButton p_146284_1_) throws IOException
@@ -74,6 +87,16 @@
@@ -74,12 +87,22 @@
{
this.field_146297_k.func_147108_a(this.field_146562_a);
}
@@ -51,6 +51,13 @@
}
}
protected void func_73869_a(char p_73869_1_, int p_73869_2_) throws IOException
{
- if (p_73869_2_ == this.field_146297_k.field_71474_y.field_151445_Q.func_151463_i())
+ if (this.field_146297_k.field_71474_y.field_151445_Q.isActiveAndMatches(p_73869_2_))
{
this.field_146297_k.func_147108_a((GuiScreen)null);
this.field_146297_k.func_71381_h();
@@ -257,7 +280,9 @@
GlStateManager.func_179143_c(518);
GlStateManager.func_179094_E();
@@ -66,12 +73,11 @@
GlStateManager.func_179143_c(515);
this.field_146297_k.func_110434_K().func_110577_a(field_146561_C);
- for (int j5 = 0; j5 < AchievementList.field_76007_e.size(); ++j5)
- for (int j5 = 0; j5 < AchievementList.field_187981_e.size(); ++j5)
+ java.util.List<Achievement> achievementList = (currentPage == -1 ? minecraftAchievements : net.minecraftforge.common.AchievementPage.getAchievementPage(currentPage).getAchievements());
+ for (int j5 = 0; j5 < achievementList.size(); ++j5)
{
- Achievement achievement1 = (Achievement)AchievementList.field_76007_e.get(j5);
+ Achievement achievement1 = achievementList.get(j5);
Achievement achievement1 = (Achievement)AchievementList.field_187981_e.get(j5);
- if (achievement1.field_75992_c != null)
+ if (achievement1.field_75992_c != null && achievementList.contains(achievement1.field_75992_c))
@@ -82,10 +88,10 @@
GlStateManager.func_179091_B();
GlStateManager.func_179142_g();
- for (int i6 = 0; i6 < AchievementList.field_76007_e.size(); ++i6)
- for (int i6 = 0; i6 < AchievementList.field_187981_e.size(); ++i6)
+ for (int i6 = 0; i6 < achievementList.size(); ++i6)
{
- Achievement achievement2 = (Achievement)AchievementList.field_76007_e.get(i6);
- Achievement achievement2 = (Achievement)AchievementList.field_187981_e.get(i6);
+ Achievement achievement2 = achievementList.get(i6);
int l6 = achievement2.field_75993_a * 24 - i;
int j7 = achievement2.field_75991_b * 24 - j;
@@ -114,4 +120,4 @@
+ GlStateManager.func_179140_f(); //Forge: Make sure Lighting is disabled. Fixes MC-33065
GlStateManager.func_179089_o();
this.field_146296_j.func_180450_b(achievement2.field_75990_d, l6 + 3, j7 + 3);
GlStateManager.func_179112_b(770, 771);
GlStateManager.func_187401_a(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
@@ -1,69 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/achievement/GuiStats.java
+++ ../src-work/minecraft/net/minecraft/client/gui/achievement/GuiStats.java
@@ -5,6 +5,8 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+
+import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.GuiButton;
@@ -443,17 +445,18 @@
for (StatCrafting statcrafting : StatList.field_75939_e)
{
boolean flag = false;
- int i = Item.func_150891_b(statcrafting.func_150959_a());
+ int i = Block.func_149682_b(Block.func_149634_a(statcrafting.func_150959_a()));
+ int itemId = Item.func_150891_b(statcrafting.func_150959_a());
if (GuiStats.this.field_146546_t.func_77444_a(statcrafting) > 0)
{
flag = true;
}
- else if (StatList.field_75929_E[i] != null && GuiStats.this.field_146546_t.func_77444_a(StatList.field_75929_E[i]) > 0)
+ else if (StatList.field_75929_E[itemId] != null && GuiStats.this.field_146546_t.func_77444_a(StatList.field_75929_E[itemId]) > 0)
{
flag = true;
}
- else if (StatList.field_75928_D[i] != null && GuiStats.this.field_146546_t.func_77444_a(StatList.field_75928_D[i]) > 0)
+ else if (StatList.field_75928_D[itemId] != null && GuiStats.this.field_146546_t.func_77444_a(StatList.field_75928_D[itemId]) > 0)
{
flag = true;
}
@@ -468,8 +471,15 @@
{
public int compare(StatCrafting p_compare_1_, StatCrafting p_compare_2_)
{
- int j = Item.func_150891_b(p_compare_1_.func_150959_a());
- int k = Item.func_150891_b(p_compare_2_.func_150959_a());
+ int j;
+ int k;
+ if (StatsBlock.this.field_148217_o == 2) {
+ j = Block.func_149682_b(Block.func_149634_a(p_compare_1_.func_150959_a()));
+ k = Block.func_149682_b(Block.func_149634_a(p_compare_2_.func_150959_a()));
+ } else {
+ j = Item.func_150891_b(p_compare_1_.func_150959_a());
+ k = Item.func_150891_b(p_compare_2_.func_150959_a());
+ }
StatBase statbase = null;
StatBase statbase1 = null;
@@ -748,7 +758,7 @@
super(p_i45510_2_, GuiStats.this.field_146294_l, GuiStats.this.field_146295_m, 32, GuiStats.this.field_146295_m - 64, GuiStats.this.field_146289_q.field_78288_b * 4);
this.func_148130_a(false);
- for (EntityList.EntityEggInfo entitylist$entityegginfo : EntityList.field_75627_a.values())
+ for (EntityList.EntityEggInfo entitylist$entityegginfo : com.google.common.collect.Iterables.concat(EntityList.field_75627_a.values(), net.minecraftforge.fml.common.registry.EntityRegistry.getEggs().values()))
{
if (GuiStats.this.field_146546_t.func_77444_a(entitylist$entityegginfo.field_151512_d) > 0 || GuiStats.this.field_146546_t.func_77444_a(entitylist$entityegginfo.field_151513_e) > 0)
{
@@ -784,7 +794,7 @@
protected void func_180791_a(int p_180791_1_, int p_180791_2_, int p_180791_3_, int p_180791_4_, int p_180791_5_, int p_180791_6_)
{
EntityList.EntityEggInfo entitylist$entityegginfo = (EntityList.EntityEggInfo)this.field_148222_l.get(p_180791_1_);
- String s = I18n.func_135052_a("entity." + EntityList.func_75617_a(entitylist$entityegginfo.field_75613_a) + ".name", new Object[0]);
+ String s = I18n.func_135052_a("entity." + entitylist$entityegginfo.name + ".name", new Object[0]);
int i = GuiStats.this.field_146546_t.func_77444_a(entitylist$entityegginfo.field_151512_d);
int j = GuiStats.this.field_146546_t.func_77444_a(entitylist$entityegginfo.field_151513_e);
String s1 = I18n.func_135052_a("stat.entityKills", new Object[] {Integer.valueOf(i), s});
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/gui/inventory/GuiContainer.java
+++ ../src-work/minecraft/net/minecraft/client/gui/inventory/GuiContainer.java
@@ -175,8 +175,11 @@
@@ -176,8 +176,11 @@
GlStateManager.func_179109_b(0.0F, 0.0F, 32.0F);
this.field_73735_i = 200.0F;
this.field_146296_j.field_77023_b = 200.0F;
@@ -13,9 +13,9 @@
this.field_73735_i = 0.0F;
this.field_146296_j.field_77023_b = 0.0F;
}
@@ -239,13 +242,12 @@
@@ -240,13 +243,12 @@
if (itemstack == null)
if (itemstack == null && p_146977_1_.func_111238_b())
{
- String s1 = p_146977_1_.func_178171_c();
+ TextureAtlasSprite textureatlassprite = p_146977_1_.getBackgroundSprite();
@@ -30,7 +30,16 @@
this.func_175175_a(i, j, textureatlassprite, 16, 16);
GlStateManager.func_179145_e();
flag1 = true;
@@ -326,6 +328,7 @@
@@ -316,7 +318,7 @@
protected void func_73864_a(int p_73864_1_, int p_73864_2_, int p_73864_3_) throws IOException
{
super.func_73864_a(p_73864_1_, p_73864_2_, p_73864_3_);
- boolean flag = p_73864_3_ == this.field_146297_k.field_71474_y.field_74322_I.func_151463_i() + 100;
+ boolean flag = this.field_146297_k.field_71474_y.field_74322_I.isActiveAndMatches(p_73864_3_ - 100);
Slot slot = this.func_146975_c(p_73864_1_, p_73864_2_);
long i = Minecraft.func_71386_F();
this.field_146993_M = this.field_146998_K == slot && i - this.field_146997_J < 250L && this.field_146992_L == p_73864_3_;
@@ -327,6 +329,7 @@
int j = this.field_147003_i;
int k = this.field_147009_r;
boolean flag1 = p_73864_1_ < j || p_73864_2_ < k || p_73864_1_ >= j + this.field_146999_f || p_73864_2_ >= k + this.field_147000_g;
@@ -38,7 +47,25 @@
int l = -1;
if (slot != null)
@@ -463,10 +466,12 @@
@@ -364,7 +367,7 @@
{
if (this.field_146297_k.field_71439_g.field_71071_by.func_70445_o() == null)
{
- if (p_73864_3_ == this.field_146297_k.field_71474_y.field_74322_I.func_151463_i() + 100)
+ if (this.field_146297_k.field_71474_y.field_74322_I.isActiveAndMatches(p_73864_3_ - 100))
{
this.func_184098_a(slot, l, p_73864_3_, ClickType.CLONE);
}
@@ -402,7 +405,7 @@
{
this.field_146987_F = 1;
}
- else if (p_73864_3_ == this.field_146297_k.field_71474_y.field_74322_I.func_151463_i() + 100)
+ else if (this.field_146297_k.field_71474_y.field_74322_I.isActiveAndMatches(p_73864_3_ - 100))
{
this.field_146987_F = 2;
}
@@ -464,10 +467,12 @@
protected void func_146286_b(int p_146286_1_, int p_146286_2_, int p_146286_3_)
{
@@ -51,7 +78,48 @@
int k = -1;
if (slot != null)
@@ -685,4 +690,16 @@
@@ -575,7 +580,7 @@
}
else if (this.field_146297_k.field_71439_g.field_71071_by.func_70445_o() != null)
{
- if (p_146286_3_ == this.field_146297_k.field_71474_y.field_74322_I.func_151463_i() + 100)
+ if (this.field_146297_k.field_71474_y.field_74322_I.isActiveAndMatches(p_146286_3_ - 100))
{
this.func_184098_a(slot, k, p_146286_3_, ClickType.CLONE);
}
@@ -627,7 +632,7 @@
protected void func_73869_a(char p_73869_1_, int p_73869_2_) throws IOException
{
- if (p_73869_2_ == 1 || p_73869_2_ == this.field_146297_k.field_71474_y.field_151445_Q.func_151463_i())
+ if (p_73869_2_ == 1 || this.field_146297_k.field_71474_y.field_151445_Q.isActiveAndMatches(p_73869_2_))
{
this.field_146297_k.field_71439_g.func_71053_j();
}
@@ -636,11 +641,11 @@
if (this.field_147006_u != null && this.field_147006_u.func_75216_d())
{
- if (p_73869_2_ == this.field_146297_k.field_71474_y.field_74322_I.func_151463_i())
+ if (this.field_146297_k.field_71474_y.field_74322_I.isActiveAndMatches(p_73869_2_))
{
this.func_184098_a(this.field_147006_u, this.field_147006_u.field_75222_d, 0, ClickType.CLONE);
}
- else if (p_73869_2_ == this.field_146297_k.field_71474_y.field_74316_C.func_151463_i())
+ else if (this.field_146297_k.field_71474_y.field_74316_C.isActiveAndMatches(p_73869_2_))
{
this.func_184098_a(this.field_147006_u, this.field_147006_u.field_75222_d, func_146271_m() ? 1 : 0, ClickType.THROW);
}
@@ -653,7 +658,7 @@
{
for (int i = 0; i < 9; ++i)
{
- if (p_146983_1_ == this.field_146297_k.field_71474_y.field_151456_ac[i].func_151463_i())
+ if (this.field_146297_k.field_71474_y.field_151456_ac[i].isActiveAndMatches(p_146983_1_))
{
this.func_184098_a(this.field_147006_u, this.field_147006_u.field_75222_d, i, ClickType.SWAP);
return true;
@@ -686,4 +691,16 @@
this.field_146297_k.field_71439_g.func_71053_j();
}
}
@@ -1,6 +1,6 @@
--- ../src-base/minecraft/net/minecraft/client/gui/inventory/GuiContainerCreative.java
+++ ../src-work/minecraft/net/minecraft/client/gui/inventory/GuiContainerCreative.java
@@ -48,6 +48,8 @@
@@ -50,6 +50,8 @@
private Slot field_147064_C;
private boolean field_147057_D;
private CreativeCrafting field_147059_E;
@@ -9,15 +9,6 @@
public GuiContainerCreative(EntityPlayer p_i1088_1_)
{
@@ -175,7 +177,7 @@
return;
}
- if (itemstack1 != null && itemstack2 != null && itemstack1.func_77969_a(itemstack2))
+ if (itemstack1 != null && itemstack2 != null && itemstack1.func_77969_a(itemstack2) && ItemStack.func_77970_a(itemstack1, itemstack2)) //Forge: Bugfix, Compare NBT data, allow for deletion of enchanted books, MC-12770
{
if (p_146984_3_ == 0)
{
@@ -259,6 +261,13 @@
this.func_147050_b(CreativeTabs.field_78032_a[i]);
this.field_147059_E = new CreativeCrafting(this.field_146297_k);
@@ -67,7 +58,7 @@
+ private void updateFilteredItems(GuiContainerCreative.ContainerCreative guicontainercreative$containercreative)
+ {
+ if (CreativeTabs.field_78032_a[field_147058_w] == CreativeTabs.field_78027_g) // FORGE: Only add enchanted books to the regular search
for (Enchantment enchantment : Enchantment.field_77331_b)
for (Enchantment enchantment : Enchantment.field_185264_b)
{
if (enchantment != null && enchantment.field_77351_y != null)
@@ -333,7 +356,6 @@
@@ -110,7 +101,7 @@
int i = field_147058_w;
field_147058_w = p_147050_1_.func_78021_a();
GuiContainerCreative.ContainerCreative guicontainercreative$containercreative = (GuiContainerCreative.ContainerCreative)this.field_147002_h;
@@ -483,12 +507,14 @@
@@ -488,12 +512,14 @@
if (this.field_147062_A != null)
{
@@ -126,7 +117,7 @@
this.func_147053_i();
}
else
@@ -558,20 +584,43 @@
@@ -563,20 +589,43 @@
}
super.func_73863_a(p_73863_1_, p_73863_2_, p_73863_3_);
@@ -146,7 +137,7 @@
}
}
+ if (!rendered && func_147052_b(CreativeTabs.field_78027_g, p_73863_1_, p_73863_2_))
+ if (!rendered && !func_147052_b(CreativeTabs.field_78027_g, p_73863_1_, p_73863_2_))
+ {
+ func_147052_b(CreativeTabs.field_78036_m, p_73863_1_, p_73863_2_);
+ }
@@ -171,7 +162,7 @@
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.func_179140_f();
}
@@ -633,16 +682,35 @@
@@ -638,16 +687,35 @@
RenderHelper.func_74520_c();
CreativeTabs creativetabs = CreativeTabs.field_78032_a[field_147058_w];
@@ -208,7 +199,7 @@
this.field_146297_k.func_110434_K().func_110577_a(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + creativetabs.func_78015_f()));
this.func_73729_b(this.field_147003_i, this.field_147009_r, 0, 0, this.field_146999_f, this.field_147000_g);
this.field_147062_A.func_146194_f();
@@ -657,6 +725,14 @@
@@ -662,6 +730,14 @@
this.func_73729_b(i, j + (int)((float)(k - j - 17) * this.field_147067_x), 232 + (this.func_147055_p() ? 0 : 12), 0, 12, 15);
}
@@ -223,7 +214,7 @@
this.func_147051_a(creativetabs);
if (creativetabs == CreativeTabs.field_78036_m)
@@ -667,6 +743,14 @@
@@ -672,6 +748,14 @@
protected boolean func_147049_a(CreativeTabs p_147049_1_, int p_147049_2_, int p_147049_3_)
{
@@ -238,7 +229,7 @@
int i = p_147049_1_.func_78020_k();
int j = 28 * i;
int k = 0;
@@ -763,6 +847,8 @@
@@ -768,6 +852,8 @@
}
GlStateManager.func_179140_f();
@@ -247,7 +238,7 @@
this.func_73729_b(l, i1, j, k, 28, j1);
this.field_73735_i = 100.0F;
this.field_146296_j.field_77023_b = 100.0F;
@@ -789,6 +875,15 @@
@@ -794,6 +880,15 @@
{
this.field_146297_k.func_147108_a(new GuiStats(this, this.field_146297_k.field_71439_g.func_146107_m()));
}
Loaded 100 of 803 files, more files were not shown because too many files have changed in this diff. Show more