Compare commits

...
940 Commits
Author SHA1 Message Date
ljfa 3fb47104fa Fix forge:default-tool transformation (#2795) 2016-06-03 15:03:07 -07: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
LexManos ba80ead005 Merge pull request #2539 from bonii-xx/bugfix
Fix CombinedInvWrapper accessing incorrect slots
2016-03-12 16:33:06 -08:00
Bernhard Bonigl bcab92daf6 Fix CombinedInvWrapper accessing incorrect slots
Closes #2533
2016-03-12 22:17:57 +01: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
LexManos 250a77b359 Merge pull request #2476 from Abastro/fovfixes
Added Event: EntityViewRenderEvent#FOVModifier
2016-02-29 13:20:46 -08:00
LexManos 0e35c3125a Merge pull request #2500 from me4502/master
Added local click position to PlayerInteractEvent. Fixes #2482
2016-02-27 01:21:25 -08:00
Matthew Miller (Me4502) f1ad05dd8e Added local click position to PlayerInteractEvent. 2016-02-27 11:27:21 +10:00
Abastro c4ca8270b9 Added EntityViewRenderEvent#FOVModifier
Enables mods to modify raw FOV directly.
Avoids modifier limit from FOVUpdateEvent.
Aware of blocks which are needed for fov change related with materials.
2016-02-27 09:25:19 +09:00
LexManos ecfb9accaa Fixed dummy blocks not being removed from registry on dedicated server correctly. Closes #2487
Also added some more debug logs!
2016-02-24 16:56:20 -08:00
LexManos 0dd796fb16 Merge pull request #2497 from bonii-xx/universal_bucket
Fix WordServer.canCreatureTypeSpawnHere not using Forge Events.
2016-02-23 01:04:09 -08:00
Bernhard Bonigl 17e960c158 Fix WordServer.canCreatureTypeSpawnHere not using Forge Events.
Followup of #2496
2016-02-23 09:53:26 +01:00
LexManos 76f867561d Merge pull request #2495 from elix-x/master
Increased actual maximum fuel burn time
2016-02-22 11:31:39 -08:00
LexManos b009546a94 Merge pull request #2496 from bonii-xx/universal_bucket
Fix WorldEvent.PotentialSpawns Event passing the list instance of the…
2016-02-22 11:16:55 -08:00
Bernhard Bonigl de1c270644 Fix WorldEvent.PotentialSpawns Event passing the list instance of the ChunkProvider to users 2016-02-22 18:45:31 +01:00
elix-x 0ddd897446 Increased actual maximum fuel burn time
Increased actual maximum fuel burn time from 32767 to 2147483647.
Backwards compatible.
2016-02-22 18:16:45 +01:00
RainWarrior e495b7599c ModelLoader: added verbose error logging showing items/blockstates associated with model locations; removed redundant cast leftover from ungenerified code; fixed up a couple of warnings. 2016-02-22 03:53:26 +03:00
cpw 3e4107a222 Fix race condition when using indexed codec in a LAN server. Fixes spurious crash when LAN server is running. 2016-02-20 16:04:31 -05:00
cpw c88bc769ef Log when it's likely the indexedcodec is gonna fail, because of LAN server derps likely. Try and give some context for debuggers. 2016-02-19 23:18:46 -05:00
Fry 34382745ab Merge pull request #2488 from bonii-xx/universal_bucket
Fix universal bucket logging an exception
2016-02-19 13:27:59 +03:00
Bernhard Bonigl 9b128aaed2 Fix universal bucket logging an exception 2016-02-19 11:17:23 +01:00
LexManos fe340a213f Merge pull request #2485 from AlgorithmX2/world_getLightOpacity
Test getLightOpacity(world,pos) in World as well as the chunk.
2016-02-18 19:11:55 -08:00
AlgorithmX2 9eb22c3154 Test getLightOpacity(world,pos) in World as well as the chunk. 2016-02-18 20:43:24 -06:00
LexManos ad69f0f447 Merge pull request #2443 from AlgorithmX2/cap_pickup_entityitem
Preserve ItemStack Caps when picking Items up.
2016-02-18 14:10:32 -08:00
AlgorithmX2 e6b3c7ba64 Preserve ItemStack Caps when picking Items up. 2016-02-18 16:08:23 -06:00
LexManos c0915526ff Merge pull request #2429 from AlgorithmX2/in_material_hooks
In Material Hooks - For Swimming, Overlays, Boats, and Fishing.
2016-02-18 13:40:41 -08:00
AlgorithmX2 3c4a2b0f42 In material Liquid Hooks. 2016-02-18 14:41:15 -06:00
LexManos 1b3699d90b Merge pull request #2481 from diesieben07/potion-draw-fix
Fix Potion.shouldRenderInvText
2016-02-17 17:50:18 -06:00
Take Weiland 50f77a71ae Fix Potion.shouldRenderInvText 2016-02-18 00:37:57 +01:00
LexManos 6f9e63e3ee Merge pull request #2478 from AlgorithmX2/pre_getLightOpacity
Fix bug with getLightOpacity based on TileEntities,
2016-02-17 14:16:50 -06:00
AlgorithmX2 5c229dd6c7 Fix bug with getLightOpacity based on TileEntities,
Capture getLightOpacity prior to removing the tile entity.
2016-02-17 14:14:18 -06:00
LexManos f77d50b48c Fix loading of world ID maps for worlds without dummy data. Closes #2477 2016-02-17 12:06:57 -08:00
LexManos 13a25ee0ba Merge pull request #2474 from bonii-xx/universal_bucket
Fix customized bucket names not getting translated correctly
2016-02-17 13:31:12 -06:00
RainWarrior e8915b6a55 Added default levels for fluid extended properties in fluid model. 2016-02-16 14:13:19 +03:00
Bernhard Bonigl eb879b3020 Fix customized bucket names not getting translated correctly 2016-02-16 09:39:33 +01:00
LexManos 6b51665c42 Merge pull request #2333 from bonii-xx/universal_bucket
Add an universal bucket.
2016-02-15 17:56:05 -06:00
Bernhard Bonigl 1055206ba8 Add universal bucket 2016-02-16 00:49:01 +01:00
LexManos 74fe690227 Fix chat formatting not surviving line wraps in chat messages. 2016-02-15 14:30:24 -08:00
Fry 9760b3b52f Merge pull request #2470 from diesieben07/shader-fix
Fix the entity shader hook
2016-02-14 17:51:55 +03:00
Take Weiland b875274c4f Fix the entity shader hook 2016-02-14 15:25:11 +01:00
Fry 4d33fe6b26 Merge pull request #2467 from iLexiconn/master
Added hook to add entity spectator shader
2016-02-14 12:26:47 +03:00
LexManos 94f99faf87 Merge pull request #2468 from nallar/master
Workaround JDK-8087309: Constant folding "static final boolean" is incomplete
2016-02-13 15:23:24 -06:00
Ross Allan ccf5da2113 Workaround JDK-8087309: Constant folding "static final boolean" in boolean expressions is incomplete 2016-02-13 14:43:37 +00:00
iLexiconn 776f5b91d5 Added hook to add entity spectator shader 2016-02-13 00:09:04 +01:00
LexManos 06130912c5 Protect BlockSnapshot and Chunk.getTileEntity from mutible BlockPos instances. Closes #2438 2016-02-11 16:48:32 -08:00
LexManos 70fe18c163 Fixed Block.onNeighborChange not being called for all axises. Closes #2428 2016-02-11 16:29:07 -08:00
LexManos f4b0506515 Add missing classes to CrashReport preloading. Closes #2421 2016-02-11 16:28:25 -08:00
LexManos fa6610b3c8 Fixed invalid item being passed to gatherCapabilities when itemstacks changed item. Closes #2445 2016-02-11 16:27:38 -08:00
LexManos bd6af1e49a Fixed implementation of RenderEntityItem.shouldSpreadItems. Closes #2448 2016-02-11 16:26:48 -08:00
LexManos 53301e1aeb Fixed vanilla bug where network clients would see incorrect break progress on blocks. Closes #2462 2016-02-11 16:26:12 -08:00
LexManos a607a48719 Fixed Block/Item.setRegistryName printing a incorrect warning when used. Closes #2398 2016-02-11 16:25:25 -08:00
LexManos a9ea634141 Fixed Entity.shouldRiderSit modifying game logic and not just rendering. Closes #2402 2016-02-11 16:24:38 -08:00
LexManos 124799d633 Fixed invalid parameters being sent to LivingSpawnEvent.CheckSpawn. Closes #2453 2016-02-11 16:23:49 -08:00
LexManos 9070ab56e3 Potential fix for NPE when using an item to open a slotless inventory. Closes #1354 2016-02-10 11:25:41 -08:00
RainWarrior ed9517a8b4 Fix custom model loader reload hook not firing during registration. 2016-02-10 10:20:13 +03:00
RainWarrior a9a022f45e Fix incorrectly updated patch to ChunkCache. Related to #2451. 2016-02-10 10:11:53 +03:00
RainWarrior 7e7b855ddf Fix multiple registrations of reloading hooks in custom model loaders. 2016-02-09 16:09:55 +03:00
LexManos 2c6af18a81 Remove Mojang logger spam in EntityItem. 2016-02-07 15:45:06 -08:00
LexManos 32a2bd1dea Fix jar signer not applying to universal packed in the installer. 2016-02-07 15:44:46 -08:00
RainWarrior 12c924751a Fix TRSRTransformation.toItemTransform. Closes #2425. 2016-02-07 17:49:06 +03:00
Fry 4ae2a1fa35 Merge pull request #2437 from pau101/master
Fix #2321
2016-02-07 15:16:22 +03:00
pau101 cb70f1378c Fix #2321 2016-02-04 22:58:21 -08:00
LexManos 8af1624f9e Merge pull request #2423 from Mumfrey/fix/jdt
Fix ASM SignatureReader choking on invalid lambda local var signatures emitted by JDT
2016-02-04 12:34:04 -06:00
RainWarrior 085b28ba35 Revert binary-incompatible changes in models. 2016-02-04 13:34:40 +03:00
RainWarrior e611162de5 Fix droppers not dropping. 2016-02-03 19:11:33 +03:00
RainWarrior bfa17d2f0d One day I will learn to include all required classes in the commit. 2016-02-02 12:42:41 +03:00
RainWarrior 3bdc75ad49 Added "gui3d" and "smooth_lighting" options to the forge blockstate. Implemented them for vanilla and B3D models. Added generic types to IModel subinterfaces, to simplify chaining. 2016-02-02 12:23:26 +03:00
LexManos 7103862bf9 Merge pull request #2434 from matthewprenger/logcommandexceptions
Log unknown exceptions in commands. Resolves #2433
2016-02-01 18:36:39 -06:00
Matthew Prenger 76f659c02e Log unknown exceptions in commands. Resolves #2433 2016-02-01 18:25:40 -06:00
Mumfrey 63798d6a8f Fix ASM SignatureReader choking on lambda signatures generated by JDT 2016-01-29 00:19:59 +00:00
RainWarrior 741fdd0a85 Fixed incorrect patch to GenLayer, causing large vanilla biomes to not work properly. 2016-01-28 08:00:27 +03:00
RainWarrior 7b7d18f676 Provide original armor model in the custom armor model hook. 2016-01-28 07:43:55 +03:00
RainWarrior be6c2bd588 Fixed small bug in item extraction code. 2016-01-27 13:29:07 +03:00
RainWarrior a0bf0155ac Fix NoSuchElementException in ModelBlockAnimation caused by empty event list. 2016-01-26 01:22:21 +03:00
LexManos e45d111685 Bump version in prep for new Recomended Build. 2016-01-25 11:32:41 -08:00
LexManos b71b963301 Loosen TileEntity's default hasCapability implementation. Modders should specifically opt in. 2016-01-25 11:27:08 -08:00
LexManos 7a0a801740 Merge pull request #2336 from VikeStep/master
[1.8.9] Add EntityTravelToDimensionEvent
2016-01-25 11:07:19 -08:00
RainWarrior 960717eb0c Fixed minor race condition between mouse clicks and TESR in the animation example. 2016-01-25 17:39:43 +03:00
VikeStep 026d179c0d Add EntityTravelToDimensionEvent
Resolve Merge Conflict

Move event call inside conditional
2016-01-25 17:57:52 +10:00
RainWarrior e929199758 Sometimes I forget how much trivial things are missing from Java 6. 2016-01-24 10:10:21 +03:00
Fry e9be24700e Merge pull request #2331 from RainWarrior/model-animation
Model animation system
2016-01-24 10:01:58 +03:00
RainWarrior 0710bdf3f5 Model animation system.
Main things of interest:
  * IAnimationStateMachine - state machine for animations; can load
    from json.
  * AnimationTESR - automatic TESR for animated models.
  * AnimationModelBase - same for entities.
  * ITimeValue - time-varying value, used to control animation
    parameters from code.

  * TESRs can now be batched - look at TESR.renderTileEntityFast +
    TE.hasFastRenderer.
  * RegionRenderCache is not accessible to TESRs and other client-side
    logic - MinecraftForgeClient.getRegionRenderCache.
2016-01-24 09:59:38 +03:00
LexManos 01919e4eed Fix J6 compile error in IItemHandler PR. 2016-01-23 22:52:32 -08:00
LexManos 5257739d06 Merge pull request #2401 from ShetiPhian/Fix-isBeaconBase-BlockPos
Fixed: the BlockPos passed to isBeaconBase
2016-01-23 22:07:31 -08:00
LexManos e9a86f27fb Merge pull request #2385 from rwtema/master
Add IItemHandler capability
2016-01-23 22:06:29 -08:00
rwtema a1e41f5464 Add IItemHandler capability
Add the actual patches that I forgot.

Add simple implementations of IStorage and the factory methods.

Add ItemStackHandler. A simple IItemHandler implementaton.

return nulls, not throw nulls.

Move the vanilla wrappers to a separate class for now.

Minor clean ups of VanillaWrapper code.

Inline static methods.

Add comments.

Minor cleanup of code.

Remove redundant size field and add a validate slot index method.

Minor formatting issues.

Break early If stacksize to insert is 0.

Remove setByte() methods.

Throw exception if IItemHandler can't be modifyed in NBT loading.

Replace event handler with patches

Add capability to mine cart inventory entities.

Change formatting and registration of capability.

Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them.

Reduce patch sizes

Lazy initialization of the item handler for vanilla tiles.

Minor formatting changes.

Create a single vanilla chest item handler that will merge with adjacent chests when detected. Added hooks to reset the cached adjacent value when a block update is detected and when a chunk loads.

Revert "Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them."

This reverts commit 306d4a37fd0e8c8a0754411c013b750dfe8e2c87.

Fix furnace derp

Replace double chest code with a simpler method.

Vanilla wrappers implement IItemHandlerModifiable (since they are modifiable)

Minor code cleanups

Add an onContentsChanged() and onLoad() callback methods.to the default implementation.

Add slot as a parameter in the callback method.

Change IItemHandlerModifiable.setStackInSlot() to void, and added a note about not being intended for cross-mod use.

Improve ItemStackHandler handling of errored NBT.

Make the stacks array protected.

Fix a lot of derps in SlotItemHandler.

Fix derp in ItemStackHandler

Clarify comments on IItemHandler

ItemStackHandler no longer caches the stack array in local variable.

Clean up the Chests code to make intentions clearer

Vanilla hoppers have their cooldown activated when an item is inserted. Made this behavior part of an item handler (rather than the insertion code)

Fix mistake in ItemStackHandler

More documentation of potential edge cases in getStackInSlot()

Make limit checking more resiliant.
2016-01-24 05:20:58 +00:00
Timothy Tomkins 3b9741613c Fixed: BlockPos passed to isBeaconBase 2016-01-22 09:25:55 -05:00
LexManos d480ae5380 Merge pull request #2378 from blay09/bugfix/slotdrop
Fix items being dropped through slots outside GUI boundaries
2016-01-21 13:49:32 -08:00
LexManos bce7c6d61f Merge pull request #2399 from asiekierka/fix-2388
Fixed ItemStack.splitStack not preserving capabilities, Closes #2388
2016-01-21 13:42:13 -08:00
LexManos 82647f5b66 Restore OreDictionary.getOres(String, boolean) and doeOreNameExist(String) functions that went MIA in git merge issue.
Original Commit: https://github.com/MinecraftForge/MinecraftForge/commit/cd3bbfb02c9fcd4ce4bbf00f460dfdd6a386d107
2016-01-21 13:41:26 -08:00
LexManos be6577b9ce Fix invalid ServerHangWatchdog patch causing it to not apply. 2016-01-21 13:40:00 -08:00
asiekierka 568061864f Fix #2388 2016-01-21 22:09:23 +01:00
LexManos c7dafeed5f Merge pull request #2396 from Minecrell/patch-3
Strip console formatting codes for Vanilla log file
2016-01-21 13:02:34 -08:00
LexManos be8eb484d1 Merge pull request #2394 from iLexiconn/master
Fixed makeItemStack ignoring stackSize
2016-01-21 13:00:34 -08:00
Minecrell 66340a7ec9 Strip console formatting codes for Vanilla log file 2016-01-21 20:00:41 +01:00
iLexiconn a3d4fe5d25 Fixed makeItemStack ignoring stackSize
Fixes #2376
2016-01-21 15:31:39 +01:00
RainWarrior 17e8de8a3a Fixed error detection login in ModelLoader, reduced the maximum number of printed stack traces to 5 per domain. 2016-01-20 01:20:26 +03:00
LexManos 447a87c0c7 Fix forge logging not working correctly in ForgeDev. 2016-01-19 02:14:40 -08:00
LexManos f3c2eb8e9c Fix Deobfusication transformer throwing verification errores in Eclipse development environments. 2016-01-19 02:14:22 -08:00
RainWarrior 968b7cae40 Correctly handle error caused by missing/malformed bucket model definition file. 2016-01-18 21:35:23 +03:00
LexManos 812e69cee3 Call deserialze on capabilities in ItemStack.setItem. Closes #2384 2016-01-17 14:19:59 -08:00
LexManos 3c5103acfb Fix ItemStacks not getting the parent capability provider from items. Closes #2383 2016-01-17 13:37:57 -08:00
cpw b8238e7f22 Merge pull request #2367 from kashike/feature/quiet-watchdog
Skip hang detection on first run of the server hang watchdog
2016-01-16 19:16:23 -05:00
cpw 7574b32b47 Merge pull request #2358 from boq/bedless
Allow sleeping without bed block under player
2016-01-16 19:10:59 -05:00
Bartek Bok fae5ff67ed Allow sleeping without bed 2016-01-17 00:43:29 +01:00
RainWarrior accf6cf218 Fixed missing model error reporting, made block and item variants sort before loading, to make the splash screen info more useful. 2016-01-17 01:57:06 +03:00
cpw 90d1abebd4 Fix spruce not growing properly 2016-01-16 17:04:16 -05:00
cpw cc593d4b54 Fixed problem with LAN connections seeing the original ProxyPacket and consuming the first byte. Closes #2373 2016-01-16 16:34:02 -05:00
cpw 66895a520a Fix shouldRefresh not to be so over-eager about modded TEs. Should fix Packet21 causing a TE reset. 2016-01-16 16:11:34 -05:00
Blay09 30ac80f978 Fix items being dropped out of a GuiContainer when dealing with a slot outside of the xSize/ySize boundaries. 2016-01-16 06:34:07 +01:00
LexManos 7b92a27908 Clone FML packet indexes if channel is not open. Fixes potential threading issue. 2016-01-14 13:35:19 -08:00
Fry dad870ea0b Merge pull request #2375 from bonii-xx/dynbucket
Default bucket model is empty, allow bucket model without fluid.
2016-01-15 00:16:26 +03:00
Bernhard Bonigl 2857b710f8 Default bucket model is empty, allow bucket model without fluid.
This allows capsules, cans, bottles,... to use the same item model for their item variant. Also it's makes much more sense.
2016-01-14 22:13:31 +01:00
LexManos 38531a5ba8 Merge pull request #2370 from mezz/screenBackground
Add DrawScreenBackgroundEvent
2016-01-13 14:26:56 -08:00
mezz aee1bd6014 Add GuiScreenEvent.BackgroundDrawnEvent 2016-01-13 13:01:16 -08:00
cpw 9a737b0c90 Fix problem which meant runtime deobf to MCP names wasn't working. SRG named mods located in the mods dir of a dev
environment will now load normally.
2016-01-13 00:26:52 -05:00
kashike 2ba595b207 Skip hang detection on first run of the server hang watchdog 2016-01-12 04:15:11 -08:00
LexManos 17db34ae31 New Capability system allowing for more manageable world object features.
When combined with @Optional this should address all issues of soft dependancy on mods/apis.
This also addresses the issue of dynamic functionality in TileEntities/Entities.

Current capability providers: TileEntity, Entity, ItemStack

Also added INBTSerializeable, a generic interface for game objects that can be written to/from NBT tags.

Vanilla capabilities will be coming soon, mostly on request and review.
So start requesting capabiliteis on vanilla/Forge features.
2016-01-11 16:04:22 -08:00
LexManos 4672f7bab0 Fixed banners not droping the correct item when harvested using modded mechanics. Closes #2258 2016-01-10 21:34:52 -08:00
LexManos aff6b0004c Fix jline server console not showing colored text. Closes #2334 2016-01-10 20:39:22 -08:00
LexManos 2594196c15 Fixed GuiWrongMinecraft having wrong Log file name. Closes #2348 2016-01-10 20:31:55 -08:00
LexManos afc46fa59a Made WrongMinecraftVersionException and ModSortingException a bit easier to read in log files. Closes: #2345 2016-01-10 11:07:12 -08:00
LexManos 76c40896e4 Remove dead code in JarDiscoverer. Closes #2346 2016-01-10 11:06:37 -08:00
RainWarrior 4dbf1965df Catch GROUND item transform type with the forge hook too. 2016-01-10 13:07:07 +03:00
RainWarrior f42137907e Implemented face culling for item models, improves performance slightly. Closes #2326 2016-01-09 19:05:18 +03:00
LexManos 0921473f53 Merge pull request #2355 from williewillus/fixentityitemdupe
Fix bug with /give command and items with larger than default lifespans
2016-01-08 19:13:52 -08:00
Vincent Lee 591cd5c1b0 Fix visual effect entity persisting longer than it should
Fix derp
2016-01-08 18:51:08 -06:00
LexManos c78a7ce41e Fixed issue with WorldServer.getTileEntities when being called with ranges that overlap chunks oddly. Closes #2350 2016-01-08 14:42:29 -08:00
RainWarrior 5c5d946ff5 Made block model loading bar more robust, and fixed the count. 2016-01-07 02:09:29 +03:00
RainWarrior 95615cb4bf Added progress bar for the ModelLoader. 2016-01-06 22:53:34 +03:00
RainWarrior 68339f51cf Derp. 2016-01-06 22:06:36 +03:00
RainWarrior 949e77b46a Model loader improvements: adding custom data/textures to models that don't need them doesn't cause a error now, since it's common to put those in the defaults section of the blockstate json; you can get IModel associated with the variant now - using ModelLoaderRegistry.getModel; MultiLayerModel should now respect transformations applied to it, and respect part transformations. 2016-01-06 22:00:43 +03:00
cpw 632d8e553d STFU I know how to code. *shouts* get off my lawn! 2016-01-04 16:18:44 -05:00
cpw 035dd4c245 Make the parent dir tree for the dep extractor 2016-01-04 09:07:28 -05:00
RainWarrior d8440de49b Changed default implementation of Block.getExtendedState. Closes #2309. 2016-01-04 15:31:03 +03:00
RainWarrior 4732acc1c4 Java6 + Eclipse + Gradle strike again. 2016-01-04 15:18:36 +03:00
RainWarrior b8dd4c54e1 Fixed implementation if IRetexturableModel in ItemLayerModel. Closes #2244. 2016-01-04 14:21:31 +03:00
RainWarrior f562579054 Don't crash on exception during loading of item variants from blockstate jsons. 2016-01-04 14:08:52 +03:00
RainWarrior 856a9c3cdd Fixed perspective transformation handling for fluid models, changed inventory fluid model to use unrotated still texture. 2016-01-04 13:54:45 +03:00
RainWarrior 826b1d20f8 Fixed invalid flow vector caching of still fluids. 2016-01-04 12:48:10 +03:00
RainWarrior 686b32bfd0 Fixed random offset not working properly for flatly-lit models. 2016-01-04 12:04:30 +03:00
cpw 3c08c104cc Explicitly close the file. 2016-01-03 10:06:25 -05:00
cpw dc4dc55dcd Add a simple ContainedDep mechanic- mods can contain other mods or libs, and can specify them using a manifest tag: "ContainedDeps".
This is a space separated (manifest standard) list of jar files that are to be extracted into the version specific directory.

There's also a special system property "fml.skipContainedDeps" that will allow for runtime skipping of extraction of contained deps (a comma separated list, based on the file name).
2016-01-02 17:28:35 -05:00
LexManos 1a31ff9f06 Added new get/setRegistryName functions to Item and Block.
And helper functions in GameRegistry to allow for registering using those names automatically.
This is to simplify registration and get rid of the horrible hacks users are doing now with 'unlocalised names'.
2016-01-02 12:58:57 -08:00
cpw fb54ea94c0 Move substitution activation after id loading. This should fix the problem of null for existing object. 2016-01-02 12:06:53 -05:00
RainWarrior d105c444ee SidedProxy now has sensible default values - nested ClientProxy and ServerProxy classes. 2016-01-02 09:59:14 +03:00
LexManos 40a124d571 Merge pull request #2332 from killjoy1221/master
Add links for messages and other commands
2016-01-01 20:00:52 -08:00
Matthew Messinger 577f607b5f Add links for messages and other commands 2016-01-01 21:20:27 -05:00
RainWarrior 104feb2973 Reverted Render registration changes due to them working. 2016-01-01 08:51:56 +03:00
RainWarrior a4123580b1 Nobody is left behind. 2016-01-01 02:17:10 +03:00
RainWarrior cf2bbd1353 Fixed RenderingRegistry not working. Closes #2312. 2016-01-01 02:01:03 +03:00
cpw 6e90348dc5 Fix that the dummy registry entries don't allow clients connecting to servers. Also fix that it repeatedly nags about missing stuff in the world. 2015-12-31 17:59:11 -05:00
LexManos 50f235c81b Fix boss health bar rendering when debug overlay is enabled. Closes #2328 2015-12-31 14:48:54 -08:00
LexManos 755df95c96 Swap Mod and Realms button to fix new realms 'notification' icon. 2015-12-31 14:41:08 -08:00
LexManos e0f0273c5e Fix J6 compile issue with ModelFluid. 2015-12-31 14:40:32 -08:00
LexManos 3665d7bf73 Allow for default 1.8.8 mods to be loaded. Should be SRG compatible. 2015-12-31 14:40:17 -08:00
RainWarrior ea2beba5ca Restored transparency to the Forge logo. 2015-12-30 19:35:32 +03:00
RainWarrior 6c40b15d04 Updated the forge logo to a higher-quality GIF file. Closes #2276. 2015-12-30 19:10:33 +03:00
RainWarrior 23a2316157 Fixed wrong import. 2015-12-30 16:14:27 +03:00
RainWarrior 10658f682e Fixed broken leaky caching of OBJ models. 2015-12-30 16:08:08 +03:00
RainWarrior 33b1f8f30f Caching of fluid models. Fixes #2145. 2015-12-30 13:31:36 +03:00
RainWarrior db3e039b31 TESRs registering in preinit don't break pistons anymore. Fixes #2298. 2015-12-30 11:37:32 +03:00
RainWarrior 09e9a181ee Fixed color disabling not working for forge pipeline. Closes #2286. 2015-12-30 11:22:22 +03:00
RainWarrior 56eba05237 1.8.9 update 2015-12-30 07:15:03 +03:00
LexManos 6644e8c9ed Merge remote-tracking branch 'origin/1.8.8' 2015-12-29 19:25:38 -08:00
Fry ad40f24fb1 Merge pull request #2322 from bonii-xx/dynbucket
Fix bucket replacement not loading the bucket model by itself if repl…
2015-12-29 15:34:59 +03:00
Bernhard Bonigl 509cc79112 Fix bucket replacement not loading the bucket model by itself if replacing buckets.
This happens when no other mod that uses the bucket model is present.
Also added a simple method for registering the bucket model, should give
modders an idea on how to use the general model.
2015-12-29 13:31:35 +01:00
LexManos cce0f7a2ed Merge pull request #2320 from bonii-xx/slime
Add a hook for custom particle spawning for slimes
2015-12-28 13:17:28 -08:00
Bernhard Bonigl 7f52bc6547 Add a hook for custom particle spawning for slimes 2015-12-28 21:01:30 +01:00
LexManos 7298b21cb5 Merge pull request #2318 from diesieben07/entity-egg
Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable
2015-12-28 07:12:39 -08:00
Take Weiland af1e769895 Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable 2015-12-28 15:58:37 +01:00
LexManos d2248c3774 Fix Button/Torch/Lever placement on stairs and slabs. Closes #2291 2015-12-27 14:39:29 -08:00
RainWarrior 1cd0bf9ee4 Fixed random block position offset not applying correctly. 2015-12-25 09:31:32 +03:00
RainWarrior 097c0c6130 Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json. 2015-12-24 06:06:38 +03:00
cpw a54b939ea3 Try and make sure active substitutions are immediately available in the block to item map. 2015-12-23 16:41:53 -05:00
cpw 95825e5de0 Actually use the delegate for the itemblock 2015-12-23 15:55:45 -05:00
cpw 54e9a36b67 Capture ItemBlock remaps. 2015-12-23 15:07:16 -05:00
cpw 53227982e3 Try and fix registry NPE when substitution is active. 2015-12-23 14:11:17 -05:00
cpw bcecf59a87 Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs
even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased.
2015-12-23 11:18:54 -05:00
cpw 5562c14c45 Fix up persistent substitution. Should close #2259 2015-12-23 10:37:11 -05:00
cpw d8ca68b280 Fix the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection. 2015-12-22 18:12:35 -05:00
LexManos 6a8a9b3097 Fixed vanilla bug related to spawning entities on top of fences. Closes #2303 2015-12-22 11:52:36 -08:00
LexManos cb609dbab3 Fixed registry issues that prevented connecting to 1.8 Forge servers.
More precisely: Servers with missing registries default back to frozen version.
Throw descriptive error if we do not have any information.
2015-12-21 13:42:40 -08:00
Fry c7790f7b35 Merge pull request #2282 from bonii-xx/dynbucket
Add a dynamic bucket model that displays the animated liquid contained
2015-12-22 00:26:25 +03:00
Bernhard Bonigl 4f6784b733 Add a dynamic bucket model that displays the animated liquid contained
Has a config option (default off) that replaces the vanilla buckets with the forge bucket model

New original bucket textures from mr_hazard
2015-12-21 22:22:40 +01:00
RainWarrior 56f35f4401 Fixed NPE caused by accessing undefined layer in MultiLayerModel. 2015-12-20 22:16:17 +03:00
LexManos f8473adf6f Merge pull request #2293 from Lunatrius/fix/client-command-autocomplete
Fix client side command auto-complete not working correctly.
2015-12-19 11:31:43 -08:00
Lunatrius b665026378 Fix client side commands adding parts of the color codes on autocomplete (prefix "7" and suffix "r"). 2015-12-19 12:55:26 +01:00
RainWarrior 1dcc9abab2 Fix dependency resolution for models with custom data/textures. 2015-12-17 04:41:54 +03:00
RainWarrior 80ba13be89 LightUtil.pack and .unpack now work correctly with unpacked arrays of size <4. 2015-12-15 23:31:09 +03:00
RainWarrior d67c57827a Delayed quad list resolution in MultiModel, fixes NPE in MultiLayerModel. 2015-12-15 23:03:09 +03:00
RainWarrior f0ae51bb34 Forge pipeline will now take original model lightmap into account, if present. 2015-12-15 22:27:01 +03:00
RainWarrior 7c4d643de2 Fixed java6 errors in previous commit. 2015-12-15 22:27:01 +03:00
RainWarrior 86c09722a0 IModel can now depend on a variant definition (ModelResourceLocation); added MultiLayerModel - simple model that'll render correctly in multiple layers + example of using it. 2015-12-15 21:49:19 +03:00
RainWarrior d6ee373e87 Preparations for the Animation system.
Changes to the Model API - IModelState now works with Optional. Handling of parts of the model is not optional, and coordinate space/result interpretation is up to the caller. IModel doesn't extend IModelPart by default anymore; MapModelState uses composition to achieve previous functionality, IModelPart implementations are disjoint now. Updated perspective handing to the new API, removed IPerspectiveState (MapModelState is now the same thing). Perspective transforms for the default fluid model.
2015-12-14 23:27:27 +03:00
LexManos 9032f7e37e Fix enchanting applying the same enchantment multiple times. Closes #2273 2015-12-14 03:49:58 -08:00
cpw 82537e5763 Merge pull request #2272 from AlgorithmX2/addLandingEffects
Added addLandingEffects allowing mods to override landing particles
2015-12-13 17:09:13 -05:00
cpw bf779e6803 Merge pull request #2270 from AlgorithmX2/getHighlightTip
Add getHighlightTip allowing a item to override its displayed renderToolHightlight
2015-12-13 17:00:02 -05:00
AlgorithmX2 a319adba53 Added addLandingEffects allowing mods to override landing particles, for blocks that require world information to determine textures. 2015-12-13 15:35:15 -06:00
cpw 94eadab9fd A test for issue #1848. Please try this with any mods you can @ 1.8.8, and see if you still get log spam of any kind (not just the
log message from the issue either).
2015-12-13 14:22:53 -05:00
AlgorithmX2 8db720151d Add getHighlightTip allowing a item to override its displayed renderToolHightlight. 2015-12-13 04:47:25 -06:00
LexManos 2ed4f39a13 Merge pull request #2268 from minzmann/master
[1.8.8] Minor Fixes to PotionEffect.java.patch
2015-12-12 19:48:23 -08:00
cpw 0632f2aadf Fix derpage when loading a 1.8 world, with persistent state being entirely ignored in that case. 2015-12-12 18:53:44 -05:00
minzmann bf6c31c879 Update PotionEffect.java.patch 2015-12-12 17:05:14 +01:00
LexManos c6d64cd94a Merge pull request #2239 from bonii-xx/potionhiding
Add shouldRender() to Potions that allows to hide them completely in …
2015-12-12 00:18:18 -08:00
cpw cef50616d8 Merge pull request #2228 from Minecrell/patch-2
Fix some issues with the console command completion
2015-12-11 15:42:06 -05:00
cpw 3631955641 Use ItemStack.hasEffect. closes #2230 2015-12-11 15:30:43 -05:00
cpw 46840fb71a Merge pull request #2233 from liachmodded/mcl-typo
Fix a typo in jar detection
2015-12-11 15:16:24 -05:00
Fry 5fd04595f2 Merge pull request #2248 from AlgorithmX2/isOpaqueFace
Added doesSideBlockRendering to provide finer grain face culling.
2015-12-11 22:57:40 +03:00
AlgorithmX2 ea75a3be69 Added doesSideBlockRendering to provide finer grain face culling.
Implemented for BlockStairs and BlockSlab.
2015-12-11 13:42:04 -06:00
LexManos c356105e6d Fix wrong EventType passed for Emerald ore-gen. 2015-12-10 12:41:48 -08:00
LexManos dcda451a0a Deprecate int IDs in FluidRegistry. Modders should only ever use the String name. Also add a 'friendly' exception when attempting to get an ID for a unregistered fluid. Closes #1374 2015-12-10 02:54:00 -08:00
LexManos 2302963a9f Add EMERALD and SILVERFISH to GenerateMinable event. Closes #1158 2015-12-10 02:16:58 -08:00
LexManos b9d1d92654 Fixed ModList GUI rendering incorrectly. Closes #2254 2015-12-10 01:01:51 -08:00
LexManos 3f163fd41e Merge pull request #2253 from simon-i1-h/patch-1
[1.8.8] Fixed edge case where position dependent light would not update.
2015-12-09 20:07:50 -08:00
simon-i1-h 4c4223a817 Fixed that oldLight is not being used. 2015-12-10 00:40:58 +09:00
RainWarrior 724405d6d8 Workaround for https://github.com/google/guava/issues/738 2015-12-09 14:56:01 +03:00
RainWarrior 3254e2acc6 Fixed orientations of generated item faces. Fixes #2215. 2015-12-08 12:26:02 +03:00
LexManos 12cd28715a Fixed colored leather armor, and custom armor textures. 2015-12-08 00:54:27 -08:00
LexManos 01f4a627be Remove MCP reference patches. 2015-12-08 00:34:42 -08:00
Bernhard Bonigl 2324c2fd20 Add shouldRender() to Potions that allows to hide them completely in the inventory 2015-12-05 10:09:02 +01:00
Minecrell bb3596b31e Improve the console command completer
- Fix space after command getting removed when completing a
  subcommand together with the command prefix
- Add support for completing without input (shows command list)
- Sort command completion results
- Fix console spamming command prefixes after closing the input stream
2015-12-04 16:50:07 +01:00
cpw 30bc2653c5 Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. 2015-12-03 17:21:04 -05:00
liach ee61baee73 Fix typo in guava 2015-12-01 22:01:21 -08:00
cpw f8447264e6 Clean up chunk patch. 2015-12-01 19:54:40 -05:00
LexManos 4416537776 Merge pull request #2231 from techbrew-mc/patch-1
Initialize sources list
2015-12-01 16:04:56 -08:00
techbrew-mc 606b402c2d Initialize sources list
Fixes crash NPE thrown by addFile()
2015-12-01 16:02:45 -07:00
cpw 31faf63e94 Most requested feature of all time? TileEntity init method called after it's ready to roll. remove all the if (firstTicks) 2015-12-01 15:20:10 -05:00
cpw e6681ada93 Merge branch 'Emberwalker-lang-adapter-fix' into 1.8.8
Closes #1898
2015-12-01 14:43:42 -05:00
Arkan Emberwalker 7a960edb35 Fix language adapter loading.
The language adapter is now properly picked up after the mod is loaded
on the classpath, fixing the ClassNotFoundException occurring before.
Also fixed some minor formatting and made it throw a full
RuntimeException on failure.

Fix up some formatting
2015-12-01 14:43:14 -05:00
cpw a703367553 Be noisy when API is in a coremod. It'll never work and modders should realize that fact. 2015-12-01 13:08:35 -05:00
cpw 8e9feb21fa Merge branch 'mezz-potionIsBadEffect2' into 1.8.8 2015-12-01 09:03:23 -05:00
cpw d967c6d5d4 Merge branch 'potionIsBadEffect2' of https://github.com/mezz/MinecraftForge into mezz-potionIsBadEffect2 2015-12-01 09:02:36 -05:00
cpw 5087f30ca5 Merge branch 'kashike-fix/secman' into 1.8.8 2015-12-01 08:47:52 -05:00
cpw 413f380781 Merge branch 'fix/secman' of https://github.com/kashike/MinecraftForge into kashike-fix/secman 2015-12-01 08:47:26 -05:00
cpw 8187f48ddc Allow entity selectors to select "." in entity names. Closes #2125 2015-12-01 00:14:05 -05:00
cpw a2e06d968e Merge branch 'Minecrell-jline' into 1.8.8 2015-11-30 14:16:18 -05:00
cpw ff42107b92 A few fixes 2015-11-30 14:14:56 -05:00
cpw cf4c0ca001 Fixup Jline integration 2015-11-30 14:14:03 -05:00
cpw 321665efff Merge branch 'jline' of https://github.com/Minecrell/MinecraftForge into Minecrell-jline 2015-11-30 13:14:49 -05:00
cpw 55e707cc07 Some tweaks - GameRegistry is modder facing API, so avoid having MC methods there. Fix a couple of registry bugs. 2015-11-29 23:12:34 -05:00
cpw 0af45cbf25 Merge branch 'PotionRegistry2' of https://github.com/bonii-xx/MinecraftForge into bonii-xx-PotionRegistry2 2015-11-29 22:43:23 -05:00
cpw d58ad8db68 Fix problem with spam from registry on loading a second world. Empty the staging. 2015-11-29 22:41:11 -05:00
Bernhard Bonigl 57d1a657a0 Add a PotionRegistry to handle dynamic distribution and remapping of Potion IDs 2015-11-29 22:02:55 +01:00
LexManos a13ed35031 Merge pull request #2209 from lumien231/MemoryWorldLeak1.8.8
Fixed: Server not being stopped, causing Worlds to stay loaded
2015-11-28 16:51:38 -08:00
cpw 21173c3b65 Fix up blockstate rebuild. Closes #2221. Also fix formatting. IDEA has differences. Solved now. 2015-11-28 16:31:54 -05:00
LexManos 02e9b9d99c Add chunk loading protection to WorldSever.getTileEntitiesIn, may prevent orphanced chunks and a CME in EntityPlayerMP. Note: The 'max' parameters are NON-inclusive. 2015-11-28 03:36:33 -08:00
cpw 97ef6a5d1f Giant registry fixup 2015-11-28 03:07:53 -05:00
LexManos 5549b06f96 Compiler warnings pass, undeprecated SplashProgress related stuff. 2015-11-26 19:38:21 -08:00
LexManos e2818a2803 Removed IItemRenderer class, all functionality is possible with new rendering system. 2015-11-26 19:37:44 -08:00
LexManos d878a2ae26 Fixed Large mushrooms generating incorrectly. 2015-11-26 19:36:53 -08:00
LexManos 81f9f3f20d Fixed placing blocks on snow layers with more then one layer. 2015-11-26 19:36:38 -08:00
LexManos eb26b3ca0f Bump version for new Minecraft version. 2015-11-26 17:05:45 -08:00
cpw 7e5a2cb5ca Propogate AbortException. Closes #2206. Also fix tracing printstream when printStackTrace is called. 2015-11-25 16:28:06 -05:00
Lumien 2ecc92c4b3 Fixed: The Integrated Server not being stopped when exiting a singleplayer world to the main menu 2015-11-25 20:54:48 +01:00
cpw cb2d5992d2 Add .exc for StatList patch
More tweaking
2015-11-25 02:23:21 -05:00
cpw cde6be7742 Fix up a couple of patches, affected by the recent update 2015-11-25 02:23:21 -05:00
cpw 4f2feee931 Fix button and lever placement problem. Closes #2204 2015-11-24 22:00:27 -05:00
cpw 1351215182 Merge pull request #2205 from Illyohs/bugfix/mdk
[1.8.8] Remove trailing */ causing errors in the mdk build script
2015-11-24 21:15:26 -05:00
Anthony Anderson 91fe229bf0 Remove trailing */ in the build.gradle
Signed-off-by: Anthony Anderson <[email protected]>
2015-11-24 20:10:02 -05:00
cpw 85d7b69d19 More cleanups, some documentation, a bunch of deprecations. 2015-11-24 16:47:46 -05:00
cpw c5a980f8a4 Cleaning up some derpy names 2015-11-24 16:17:08 -05:00
cpw 8c5038c301 Clean up some very long dead code. Bukkit hasn't existed in a very long time now. IASM never worked, and I'm not about to implement it. 2015-11-24 15:52:14 -05:00
cpw f227f4ff72 Deprecate it as well, because hey, it's redundant now. 2015-11-24 15:39:18 -05:00
cpw aa40a8edd7 ONE EVENT BUS TO RULE THEM ALL AND IN THE DARKNESS FIRE THEM! 2015-11-24 15:35:24 -05:00
cpw 44c4011575 Yeah, amount is NOT deprecated. 2015-11-24 15:30:22 -05:00
cpw 1280462ec7 Fix MDK for 1.8.8 using FG2.1 snapshot 2015-11-24 15:30:09 -05:00
cpw c713309769 OMG! Documentation? WUT? I haz lost my mind.
Also, Functional interface for IMC. Senders can send a classname implementing Guava's function, and receivers
will be able to get that function, and do, well, whatever, really. Probably best for those callback type
scenarios, connecting up APIs and stuffs.
2015-11-24 14:44:19 -05:00
cpw b4dc15a9cb Cleanup Fluid deprecations stuff. 2015-11-24 10:05:35 -05:00
LexManos 22e99a2cff Update universal manifest for 1.8.8's json. 2015-11-24 03:37:17 -08:00
cpw 68dfcccd57 Update mappings to 20151122. 2015-11-23 23:18:52 -05:00
cpw 84c3ef0f5c Merge branch 'master' into 1.8.8 2015-11-23 22:39:49 -05:00
cpw 231ec7eaea Merge remote-tracking branch 'origin/noci-1.8.8' into 1.8.8 2015-11-23 22:08:42 -05:00
RainWarrior 9815d729b5 Fixed NPE is B3D loader caused by the missing vertex normal; updated the example chest model - it's now has 2 meshes; Updated ModelAnimationDebug - it now uses the new chest model, renders the base with the static world renderer, and only the lid with the TESR. 2015-11-23 10:12:01 +03:00
RainWarrior 11d237f5f2 Fixed forge lighting working incorrectly outside 0x1000000 coordinates. 2015-11-23 06:54:18 +03:00
RainWarrior 0d06ea6758 Removed face doubles from item models. 2015-11-23 06:54:18 +03:00
RainWarrior b5af11a89d Fix holes in generated item models. 2015-11-23 06:54:18 +03:00
RainWarrior f6ab01843c B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. 2015-11-23 06:54:17 +03:00
RainWarrior f9024d2eb3 Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). 2015-11-23 06:54:11 +03:00
cpw 918d59d6a6 Fix derpy fir trees in the taiga. So many patches. See if we can find any more mistakes?! 2015-11-22 22:35:21 -05:00
cpw 4320a0f1ed Fix weird patch issue where the this FG commit: https://github.com/MinecraftForge/ForgeGradle/commit/2f0ca9921b961133689d29b807333241010a802d
breaks if the exact end of a line is a srgname. Not ideal, but should work.
2015-11-22 16:27:13 -05:00
cpw 2abca14a05 Small tweak to the OUT/ERR logger - should skip the Throwable stuffs now. 2015-11-22 15:31:06 -05:00
cpw e70fb50b51 Back to srgnames for patches. We should be starting to look OK now. 2015-11-22 00:46:26 -05:00
RainWarrior 82d83feab1 Fixed forge lighting working incorrectly outside 0x1000000 coordinates. 2015-11-22 02:11:08 +03:00
cpw b5815a3b8d Use the 2.1 snapshot for FG 2015-11-21 13:24:02 -05:00
cpw aeff5272f3 Re-add trove and vecmath. Mojang no longer ship them. 2015-11-21 13:23:39 -05:00
cpw 059ba15b5a Fix a typesig that was broken 2015-11-21 13:23:20 -05:00
Minecrell e24c38bbb0 Add jline-based console with colors and tab-completion 2015-11-21 15:06:09 +01:00
RainWarrior c4742aadbc Removed face doubles from item models. 2015-11-21 08:09:38 +03:00
RainWarrior 62d0f01236 Fix holes in generated item models. 2015-11-21 07:45:56 +03:00
Lex Manos 1246f1a791 Fix invalid position passed to isAir/getLight in World.playAmbientSound 2015-11-20 11:18:00 -08:00
LexManos 8b70d770d5 Merge pull request #2196 from Choonster/master
BiomeManager: Fix off-by-one errors
2015-11-19 18:55:41 -08:00
Lex Manos 6e68d8fe74 Fix bold font rendering, Unicode is 2x pixel density of normal. 2015-11-19 18:38:33 -08:00
Choonster 48b82567d2 BiomeManager: Fix off-by-one errors 2015-11-20 11:02:37 +11:00
RainWarrior 07ccf667e4 B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. 2015-11-19 23:40:44 +03:00
kashike 7689ea4f28 Use the FMLSecurityManager checkPermission(Permission) method for context-based permission checks. Fixes #2067 2015-11-18 15:39:00 -08:00
Lex Manos 767d733948 Enable the normal ModList GUI in game. Use GL_SCISSOR to support the transparent in-game GUI. 2015-11-18 00:28:26 -08:00
Lex Manos 904a30123d Moved client side Block.onBlockDestroyed to after Item.onBlockDestroyed to match server order. 2015-11-17 04:47:43 -08:00
Lex Manos a3a16d6593 Fix incorrect position passes to Block.getExplosionResistance from entities. 2015-11-17 04:46:50 -08:00
RainWarrior 13d7530e43 Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). 2015-11-16 06:51:39 +03:00
cpw eb73c30b28 This should be everything needed to separate blocks and items completely. 2015-11-14 10:52:03 -05:00
cpw 06a2af3386 Merge branch 'master' into noci-1.8.8 2015-11-14 09:36:08 -05:00
LexManos 41e971ecc9 Merge pull request #2117 from lumien231/master
Fixes Client Login Issue when logging into a non existent dimension
2015-11-14 04:20:34 -08:00
Lumien 39e77bf468 Fix Client Login Issue when logging into a non existent dimension 2015-11-14 12:03:47 +01:00
cpw f4c59a3a5d Remove a suppression 2015-11-13 14:06:16 -05:00
RainWarrior deb26f5c80 ExtendedBlockState, Properties generic updates. 2015-11-13 19:29:44 +03:00
cpw 41c3846c51 Some generic and other warning cleanups 2015-11-13 10:13:47 -05:00
cpw 02e6d581d3 Merge branch 'master' into noci-1.8.8 2015-11-13 09:46:50 -05:00
RainWarrior c5ee4e6451 Model stuff: updated to generics, fixed various warnings, added handling of new perspective types. 2015-11-13 17:23:37 +03:00
cpw fe7f713b67 A few tweaks, things are starting to work now.. 2015-11-13 02:59:43 -05:00
cpw da03639bd7 All the patches done? Some code fixups.. It begins. 2015-11-13 02:32:08 -05:00
cpw a26c4017b1 Fix a newly missing AT. Remove all CL_ references. OBFID is gone. 2015-11-13 00:09:34 -05:00
cpw ce40f91fb0 WorldGen rejects, lots of them. Couple of small fixes elsewhere. 2015-11-12 23:30:53 -05:00
cpw 8f94ff14ff Enchantment,EnchantmentHelper,EntityEnderman,EntityZombie,EntityVillager,FurnaceRecipes,RecipeFireworks,RecipeRepairItem,NetworkSystem,S00PacketServerInfo
PotionEffect,StatList,Session,WeightedRandomChestContent,Explosion,ExtendedBlockStorage,SaveHandler.

All NBT patches seem to have been merged upstream, so removing. The IntegratedServer and MinecraftServer pending queue changes also removed, as fixed upstream.
2015-11-12 22:02:41 -05:00
Lex Manos df56bea102 Bump version for Recomended Build. 2015-11-12 13:48:53 -08:00
RainWarrior 7258d577cd Overlay patch fix: use the correct block position. 2015-11-13 00:05:19 +03:00
RainWarrior b77b036459 EntityRenderer, StringTranslate rejects fixed. 2015-11-12 23:26:44 +03:00
RainWarrior 3a5b7427a1 TextureMap, TextureManager and Stitcher rejects fixed. 2015-11-12 22:42:41 +03:00
RainWarrior e80f66778b Manually updated WorldChunkManager, Chunk and BiomeDecorator patches, removed imports. 2015-11-12 21:26:52 +03:00
RainWarrior bf63855292 ItemBlock, ItemBow, ItemMonsterPlacer, ItemReed, ItemSign rejects fixed. 2015-11-12 20:27:54 +03:00
RainWarrior a8a69775a1 PlayerManager, PlayerProfileCache, ServerConfigurationManager, NetHandlerHandshakeTCP rejects fixed; ItemInWorldManager patch error fixed. 2015-11-12 20:05:25 +03:00
RainWarrior c976ec494e TileEntity and TileEntityHopper rejects fixed, GuiOverlayDebug patch fixed. 2015-11-12 19:27:14 +03:00
RainWarrior 8000e22830 ItemRenderer, RenderGlobal, StateMap, RenderItem rejects updated. 2015-11-12 19:12:58 +03:00
RainWarrior 9deb54b75f RenderEntityItem, RenderPlayer, RendererLivingEntity, LayerArmorBase, ItemStack rejects fixed; changed Armor Layer hook to catch LayerBipedArmor only. 2015-11-12 18:25:08 +03:00
RainWarrior 632c190e6f GuiButton, GuiChat, GuiCreateWorld, GuiIngameMenu, ServerListEntryNormal, GuiStats rejects updated. 2015-11-11 23:30:06 +03:00
RainWarrior b6f91817f0 EntityPlayer patch updated. 2015-11-11 22:21:38 +03:00
RainWarrior 426340fed5 Updated FML Gui methods to WorldRenderer API changes. 2015-11-11 19:17:32 +03:00
cpw 13c7d038eb LoadingScreenRenderer,Minecraft,GuiContainerCreative,PlayerControllerMP,LanguageManager,Locale,SimpleReloadableResourceManager,EntityList,EntityLivingBase,EntityWither,EntityMinecart,EntityPlayerMP
NethanlderPlayClient patch is now in vanilla. The FMLCommonHandler future exception catcher is not needed anymore, it's in Util. The caching of player profiles is now in vanilla (SkinManager).
2015-11-11 10:33:37 -05:00
cpw 5147742049 Delete rejects that I initially processed. 2015-11-11 08:48:04 -05:00
RainWarrior 41bd8a41fa BlockOre, BlockRotatedPillar, SoundManager, EntityPlayerSP, GuiScreen, GuiAchievements, GuiContainer, BlockModelRenderer, ContainerEnchantment, Slot updated manually and imports removed; GitSlot patch updated. 2015-11-11 15:51:32 +03:00
Lex Manos 49d4005805 Merge pull request #2179 from arideus101/patch-1
Fixed issue where custom colored armor wouldn't be colored. (reverted from commit dee0b2084b)
2015-11-11 02:57:06 -08:00
LexManos dee0b2084b Merge pull request #2179 from arideus101/patch-1
Fixed issue where custom colored armor wouldn't be colored.
2015-11-10 17:28:28 -08:00
LexManos 5670868c5e Merge pull request #2177 from gabizou/master
Fix a possible NPE when checking supertypes of interfaces.
2015-11-10 17:24:58 -08:00
arideus101 1f20abde59 Allows Custom Armor Coloring to be done easily 2015-11-10 17:23:58 -08:00
cpw 112c41a707 Merge branch '1.7.10' - fix up some oredictionary and substitution related issues 2015-11-10 18:35:38 -05:00
cpw aa8eaf2b28 Fix firing the remap event. It always fires now, and additionally fires when the registry reverts to frozen.
Most mods refer to the gameregistry for ids they care about, so this shouldn't affect anything significantly,
but if your mod was dependent on their being content in the remap event, and only acting on that content,
empty content means it's "reverted to frozen" state - the state at the start of the game.
2015-11-10 16:40:27 -05:00
Gabriel Harris-Rouquette d08cf58d80 Fix a possible NPE when checking supertypes of interfaces. Closes #2176.
Signed-off-by: Gabriel Harris-Rouquette <[email protected]>
2015-11-10 11:46:49 -08:00
RainWarrior d31ca0dbd8 EntityAIAttackOnCollide, ServerStatusResponse, MinecraftServer, NetHandlerLoginServer, Vec3, BiomeGenBase, AnvilChunkLoader, ChunkProviderServer, MapGenRavine, MinecraftServer updated; fix in Block, GuiIngameForge; can load the world and play with ~20 more manual error fixes. 2015-11-10 21:47:08 +03:00
RainWarrior df05edaa11 WorldProvider, WorldType, WorldServer, WorldServerMulti 2015-11-10 20:09:49 +03:00
RainWarrior adddfab850 IntegratedServer, World, EnumChatFormatting and EnumFacing 2015-11-10 19:39:41 +03:00
RainWarrior 4c4d1096a7 FontRenderer + Item patch update; WorldVertexBufferUploader patch derp fix. 2015-11-10 01:14:37 +03:00
RainWarrior f20b40fb80 Fix generics and error in the BlockState patch. 2015-11-10 00:42:56 +03:00
RainWarrior e833ee81fb Updated various rendering-related patches and classes to 1.8.8; forge still uses vecmath. 2015-11-10 00:03:39 +03:00
cpw c474da04b3 Two more corner cases in the oredictionary. Should work for all cases now. 2015-11-09 15:20:53 -05:00
cpw 98125a97c9 Patches and rejected patches. Note: some which had imports are not listed here because they need
to be refactored not to have imports.
Progress: https://gist.github.com/cpw/29695e426e2b122cf8ff
2015-11-09 01:50:45 -05:00
cpw 1a6c816bac Test of mcp patching 2015-11-08 23:09:33 -05:00
Lex Manos bc05bfda4f Fixed Stronghold Library not having anything in it's chests. 2015-11-08 12:53:01 -08:00
Lex Manos ffbad6633d Fixed Open url confirm screen not showing URL. 2015-11-08 12:52:41 -08:00
cpw b1aa31215f regenerate reference patchset at patches.mcp. These will be used to generate a new patchtree under patches. 2015-11-08 15:50:52 -05:00
cpw ff19efe146 1.8.8 initial work 2015-11-08 12:53:56 -05:00
cpw 95b30f5153 Merge pull request #2174 from diesieben07/findBlockFix
Fix GameData.findBlock
2015-11-08 10:30:18 -05:00
Take Weiland e6d8fde415 Fix GameData.findBlock 2015-11-08 15:34:31 +01:00
RainWarrior b6664c76c5 Fixed anaglyph transformation not being applied in the forge lighting fully. 2015-11-08 15:11:22 +03:00
RainWarrior cbe2766c0a Provide ItemCameraTransforms for vanilla models when possible. 2015-11-08 09:37:33 +03:00
RainWarrior 8a11ad7a7a OBJ loader: reworked texture resolution: keys now have to start with #, like every other model loader; models without explicit library now work, remapping is possible by using the key "#OBJModel.Default.Texture.Name"; in addition to remapping by material name, remapping by texture name works too, like in other model formats. 2015-11-07 20:36:57 +03:00
RainWarrior 3d03461a52 Performace fix for item rendering. 2015-11-07 12:58:23 +03:00
LexManos f466a0c387 Merge pull request #2167 from Choonster/master
Fix texture error message for broken textures
2015-11-05 15:09:02 -08:00
Choonster 729fca7722 Fix texture error message for broken textures
-- Fixes #2100
-- Iterates over badTextureDomains instead of missingTextures.keySet()
as a domain can have broken textures without any missing textures
2015-11-06 06:52:09 +11:00
Lex Manos d790008353 Introduce a new centralized version checking system.
Using the @Mod annotation mods can opt-in to a centrally controlled update system.
This is PURELY a notification system and will NOT automatically download any updates.
The End User can control which mods check for updates and disabel the system entirely using the Forge Config and GUI.
Format for the json the URL must point to is described here: https://gist.github.com/LexManos/7aacb9aa991330523884
2015-11-04 14:37:15 -08:00
Lex Manos 479c7f8b54 Redesign the ModList GUI to use a scrolling list for the main body content.
Allowing for larger information to be displayed.
URLs are auto-detected and now clickable.
Mod Logos are now centered, it looks better.
2015-11-04 13:57:47 -08:00
Lex Manos d0a33c4d9d Merge FML and Forge lang file, and update crowdin project. 2015-11-04 13:49:54 -08:00
RainWarrior c3141b6ed6 Fixed block color multiplier not being cached properly in the forge renderer, performance improvement. 2015-11-03 16:00:44 +03:00
RainWarrior cf8972262a OBJ model: use original vertex material when defining face. 2015-11-03 01:53:58 +03:00
LexManos bdbcf31fc2 Merge pull request #2161 from The-Fireplace/master
Fixed a bug with GuiConfigEntries.SelectValueEntry
2015-11-01 16:15:23 -08:00
The_Fireplace 6dc50ace6b Fixed a bug that caused the config option name to overlap with the selectable values when using GuiConfigEntries.SelectValueEntry, fixes #2114 2015-10-31 18:28:29 -05:00
RainWarrior 51653fb9b7 Obj loader: fix vertices shared between faces having the same attributed (uvs/normals). 2015-10-31 21:19:35 +03:00
RainWarrior 12e6fe9db7 OBJ loader: fixed another whitespace-related issue; removed unused "modifyUVs" property for now; added the "flip-v" property to switch between OpenGL-style and DirextX-style model UVs; fixed normals - they are now correct in-world, still a bit strange for the items; fixed normals a little bit for B3D models too. 2015-10-29 22:50:45 +03:00
RainWarrior c3b15e3f6c Fix color multiplier applied incorrectly for items. 2015-10-29 20:27:26 +03:00
cpw a92f2a263b OreDictionary will warn if there's an invalid ore being registered now, rather than just
using -1 and doing weird things with the list as a result.
2015-10-29 12:46:12 -04:00
cpw 945d3887d2 Fix substitutions for recipes and oredict recipes. Should mean that substitutions start working properly. 2015-10-29 08:46:23 -04:00
Fry 887f3bf31d Merge pull request #2154 from shadekiller666/OBJ_Loader
OBJLoader Update: Fix for normal generation, whitespace handling, and UVs outside 0-1 range
2015-10-29 13:53:09 +03:00
RainWarrior a9d5d0097d Fix for the previous commit - transparent blocks were handled improperly. 2015-10-29 13:32:43 +03:00
RainWarrior 3d972a11a8 Changed how the forge lighting system handles holey models for opaque blocks; it now mimics vanilla behaviour, which allows light to pass through them. 2015-10-29 13:14:35 +03:00
shadekiller666 7a20543d5f OBJLoader: Quick bandages to support/fix the new way that face/vertex normals are calculated, a very quick bandage to patch TextureCoordinates for the time being, and the Parser now uses a Pattern to split strings on whitespace instead of only splitting on " ". 2015-10-29 02:21:28 -07:00
LexManos 4c1e3ac7db Merge pull request #2151 from AbrarSyed/patch-1
Update FG version to 2.0.2
2015-10-28 14:31:08 -07:00
LexManos d6a6316771 Merge pull request #2146 from bonii-xx/potionidfix
Fix Potion IDs above 127
2015-10-28 00:29:42 -07:00
Abrar Syed 459e20df3f Update FG version to 2.0.2 2015-10-27 23:45:49 -05:00
LexManos 7d5b860ff3 Merge pull request #2126 from diesieben07/join-world-fix
Fix CME when entities are spawned from EntityJoinWorldEvent
2015-10-27 18:46:18 -07:00
RainWarrior 6fc96ef94e More lighting fixes, flat lighting now works correctly for grass and torches. 2015-10-28 00:58:44 +03:00
RainWarrior 5214ed29b7 Fixed normal calculation for vanilla models, fixed the grass darkening and simular issues. 2015-10-28 00:29:16 +03:00
RainWarrior 6b10b41b02 Fixed piston rendering (WorldRenderer offset wasn't applied); fixed TESR being registered too early in one of the debug mods. 2015-10-27 19:02:22 +03:00
RainWarrior ef2bcb056d Fixed another generic issue in MultiModel. 2015-10-27 18:52:49 +03:00
RainWarrior da19eda51e Provide a IModel for "builtin/generated", fixes #2147 2015-10-27 18:36:57 +03:00
RainWarrior b75593b0c6 Fixed AO being applied to OBJ model transparency, and OBJ loader trying to force the loading of the builtin white texture. 2015-10-27 18:36:57 +03:00
RainWarrior a96ba1b7f7 Fixed generic bug in MultiModel 2015-10-27 18:36:57 +03:00
RainWarrior 7c7547227c Perspective awareness for vanilla and multi models, fixes #2148.
Improved error handling in MultiModel.
2015-10-27 17:40:05 +03:00
Fry cf568ae85f Merge pull request #2091 from shadekiller666/ItemModelLoadingFix
Fixed a bug with item model loading
2015-10-27 09:59:50 +03:00
RainWarrior 8c82b0296a Small fix for reworked classic lighting 2015-10-27 00:19:04 +03:00
shadekiller666 33e2e0b028 Fixed a bug with item model loading that would occur if ModelBakery.addVariantName() was called with the same string location parameter for 2 different items, and the string pointed to a location that didn't exist, where ModelLoader.loadAnyModel() would substitute the blockdefinition in for the item model, but wouldn't remove the original input location from the loadingModels list, which would cause the location from the second call to throw an IllegalStateException even though that location now has a model. 2015-10-26 10:15:13 -07:00
shadekiller666 d1b220f6a3 Added OBJ loader for the ModelLoaderRegistry system. 2015-10-26 19:38:49 +03:00
RainWarrior d5a658b5ea Added back in the lost class 2015-10-26 19:32:19 +03:00
RainWarrior dd365d7220 Model pipeline system.
Should replace all ad-hoc quad generation methods in forge, and make IBakedModel -> WorldRenderer data transfer faster. Added IVertexConsumer + helper classes; lighting that works correctly for non-axis-aligned faces using the new infrastructure. Changed smooth lighting algorithm, now it should work correctly for everything.
New block lighter can be disabled in the forge config options.
2015-10-26 19:25:48 +03:00
Bernhard Bonigl 336eaa336b Fix Potion IDs above 127 2015-10-25 12:16:17 +01:00
mezz ebdcc11c80 Allow server to access Potion isBadEffect() 2015-10-12 21:35:15 -07:00
LexManos ebe9b6d4cb Merge pull request #2022 from simon816/guava-apache-lcl-exclusion
Add Guava and Apache to LaunchClassLoader exclusion list on server
2015-10-12 12:29:45 -07:00
LexManos 7cc7ce3ba2 Merge pull request #2129 from darkevilmac/master
Add PlayerSetSpawnEvent
2015-10-11 14:52:02 -07:00
darkevilmac b9f5e152de Add PlayerSetSpawnEvent 2015-10-10 15:39:27 -07:00
Take Weiland 76753c06df Fix CME when entities are spawned from EntityJoinWorldEvent 2015-10-04 18:46:47 +02:00
RainWarrior e280f72cfb '#' is now added automatically to the beginning of the texture names in B3D models, and the remapping is expected via the blockstate JSON, since it's more reasonable than adding it to the file name in the modelling program or matching the resource location with the filename. 2015-10-03 04:42:35 +03:00
RainWarrior d71384bc33 Fixes Attributes.transform affecting only 1 vertex. 2015-09-29 02:29:16 +03:00
LexManos 605457deec Merge pull request #2103 from olee/patch-1
Fix possible crash in EventBus
2015-09-27 14:41:29 -07:00
LexManos 90829a3164 Merge pull request #2120 from luacs1998/eventbus_fix
Fix a possible crash in EventBus
2015-09-27 02:12:50 -07:00
luacs1998 05f6ede2ea Fix a possible crash in EventBus 2015-09-27 12:47:37 +08:00
LexManos 1e7fbb7018 Merge pull request #2118 from rubensworks/itemmonsterplacer-dispenser
Fix dispenser action for modded spawn eggs
2015-09-22 12:18:26 -07:00
Ruben Taelman 385159c25e Fix dispenser action for modded spawn eggs 2015-09-22 19:53:34 +02:00
Lex Manos fb9ffa40fd Fix entity count being incorrect for spawning logic. Now filter out 'persistant' entities. 2015-09-14 13:18:34 -07:00
Lex Manos eacffb2b6e Update Gradle wrapper to 2.7 2015-09-14 13:18:02 -07:00
LexManos fb7b47adb4 Merge pull request #2002 from ganymedes01/master
Disallow conflicting furnace recipes
2015-09-09 11:23:08 -07:00
RainWarrior d70ca1a357 Workaround for MinecraftForge/ForgeGradle#256 2015-09-02 22:01:30 +03:00
ganymedes01 31a3a18ec7 Disallow conflicting furnace recipes 2015-09-02 19:04:57 +01:00
cpw 5074f26ccd FMLNetworkHandler.openGui should not try and open a GUI on a FakePlayer.
Fixes #2082 and probably dozens of mod errors. Also, side benefit of the
merged codebase! FML code can ref Forge code!
2015-09-02 13:50:00 -04:00
cpw 4315637f75 Merge branch 'laci200270-patch-1' 2015-09-02 13:30:00 -04:00
cpw b7e8dcff7b Format a bit better 2015-09-02 13:29:43 -04:00
cpw 5a9129f802 Merge branch 'patch-1' of https://github.com/laci200270/MinecraftForge into laci200270-patch-1 2015-09-02 13:27:42 -04:00
RainWarrior b175d265b9 Much requested temporary hack for items and TESRs. Context: #1582, #1597, #1713, #2058 and others. 2015-09-02 07:35:24 +03:00
LexManos e5ee9377fd Merge pull request #2086 from Vorquel/master
Fix faulty channel name checking
2015-09-01 16:32:26 -07:00
LexManos edcb45640f Merge pull request #2069 from simon816/profile-request-fix
Use already provided profile for the player's own skin
2015-09-01 16:32:07 -07:00
simon816 d61a55b661 Use already provided profile for the player's own skin 2015-08-31 03:28:59 +01:00
simon816 b312584ca4 Add Guava and Apache to LaunchClassLoader exclusion list on server
Move exclusions to common place. Less likely to get out of sync
2015-08-31 03:15:30 +01:00
Björn Zeutzheim ac5c7124de Fix possible crash in EventBus
There is currently no way to check if an event handler has been registered or not.
But when trying to unregister a not-registered event handler, Minecraft crashes with a NullPointerException.
This is a simple fix to prevent such crashes.
2015-08-31 03:39:33 +09:00
cpw 57d575f941 More cleanup of the default eclipse workspace. The project is now called "MDKExample" not "Minecraft".
The project tree is now contemporary, instead of a copy from 1.5.x era MC. The launches are cleaned up, and refer to
a better default "runDir" of "run" rather than "eclipse".. Updating to FG2.0.1 which will contain relevant binary fixes.
2015-08-26 21:57:31 -04:00
cpw d41e51f47b Fix eclipse workspace inside the mdk - don't run it through the tokenconverter. Also add in CREDITS-fml.txt to the MDK - it's still required. 2015-08-26 13:57:51 -04:00
Lex Manos 90a88efd8a Fixed issue where config folder would not be created before SplashProgress tried to read from it.
Default macs to disable the new loading screen due to to many macs having issues.
Users can enable it again by editing their config.
Catch and gracefully handle more errors when starting up the Splash Screen.
2015-08-22 18:55:32 -07:00
Lex Manos 4b299529b7 Update gradle wrapper and fix changelog task. 2015-08-22 17:57:12 -07:00
James 589465bb81 Fix faulty Channel name 2015-08-21 16:06:07 -07:00
cpw 0d320e2e31 Fix crowdin again. Run, jenkins, for god's sake, run! 2015-08-21 09:52:33 -07:00
cpw 4903febd96 Fix crowdin task. Good luck jenkins, lets roll! 2015-08-21 09:43:30 -07:00
cpw bbe96a3577 Fix ciWriteBuildNumber task. Ugly, but it works. 2015-08-20 13:42:58 -07:00
cpw b211aca5ce Merge branch 'fg2' 2015-08-20 12:27:20 -07:00
cpw 58ab3de7c1 Remove patches 2015-08-20 12:14:02 -07:00
laci200270 ba8ae53867 Update FMLSecurityManager.java 2015-08-19 20:27:42 +02:00
cpw 7e600c0dd8 Fix packaging the gradle wrapper properly. There is still a problem with
the MDK- it fails to run setupDecompWorkspace.

Filed an issue at ForgeGradle, since this seems to be something FG2 shouldn't
be doing, but is?

https://github.com/MinecraftForge/ForgeGradle/issues/235
2015-08-15 10:16:00 -07:00
cpw 9a0a00c7a4 Trying to fix the MDK to include gradle wrapper, but the gradle-wrapper.jar is
corrupted. @AbrarSyed can you take a look?
2015-08-15 09:56:56 -07:00
cpw 91927e6bc7 The final nail in the coffin. BYE! 2015-08-13 23:07:53 -07:00
cpw fc045f210d Fix MDK task - it now runs. 2015-08-13 23:07:17 -07:00
LexManos eecc691cdf Merge pull request #2072 from AbrarSyed/fg2
Added MDK package
2015-08-09 20:35:50 -07:00
AbrarSyed 7a6557a9e2 added MDK package 2015-08-09 20:30:31 -05:00
LexManos b45fd787f3 Merge pull request #1969 from diesieben07/blockhighlight
Re-introduce RenderBlockOverlayEvent
2015-08-05 11:48:53 -07:00
cpw c2523c685a FML's metabolic processes are now history. FML's off the twig. FML's kicked the bucket, FML's shuffled off this mortal coil,
run down the curtain and joined the bleedin' choir invisible!! THIS IS AN EX-PROJECT!
2015-08-02 00:20:19 -04:00
cpw dfd62a3bd8 Vestigal fml-ectomy. 2015-08-02 00:03:47 -04:00
cpw 614bbcb0da FML is no more. FML has ceased to be. FML's expired and gone to meet its maker. FML's a stiff! Bereft of life, FML rests in peace. 2015-08-01 23:51:40 -04:00
cpw 9a859f8d5c Merge branch 'master' of https://github.com/AbrarSyed/MinecraftForge into fg2 2015-08-01 20:55:58 -04:00
cpw 5045d8df68 Merge branch '1.7.10' 2015-08-01 20:30:22 -04:00
AbrarSyed 9908310384 fixed deployment credentials 2015-08-01 14:08:04 -05:00
Lex Manos 7b18eab02d Fix placing skulls on fence posts. Closes #2055 2015-07-31 15:10:47 -07:00
LexManos bd4b3debc3 Merge pull request #1968 from modwizcode/master
Fix harvest logic running in addition to shearable logic
2015-07-31 12:57:05 -07:00
LexManos 5623634f56 Merge pull request #2048 from shadekiller666/UnlistedPropertyValue
Fix for ExtendedBlockStates containing at least one IProperty and one IUnlistedProperty preventing block placement.
2015-07-25 15:12:57 -07:00
shadekiller666 87bbbfafcc Fixed a bug with ExtendedBlockStates containing at least one IProperty and one IUnlistedProperty not allowing blocks to be placed. 2015-07-25 14:55:42 -07:00
LexManos 2a85ab0eab Merge pull request #2017 from liach/add-enum
Add hook for adding EnumPlantType and fixed npe in BiomeType
2015-07-24 17:08:16 -07:00
LexManos 65123c66a0 Merge pull request #2004 from simon816/sign-nbt-fix
Fix placing signs with NBT prompting for text
2015-07-24 13:53:27 -07:00
LexManos d72caa5005 Merge pull request #2047 from Zaggy1024/forgeblockstatesv1fixes
Fixed two bugs with the Forge blockstates v1 loader.
2015-07-24 11:28:23 -07:00
Zaggy1024 e580d3b6b6 Fixed a Forge blockstates json removing models causing an NPE in the loader.
Fixed the deep clone of a V1 Variant not cloning the submodels properly.
2015-07-24 13:20:10 -05:00
LexManos 5eea9cebae Merge pull request #1983 from clienthax/patch-1
Make layer methods public
2015-07-23 12:13:00 -07:00
LexManos b8fe3913e9 Merge pull request #2044 from rubensworks/enumfacing-server
Remove SideOnly's from EnumFacing allowing full class to be used on both sides.
2015-07-23 10:58:17 -07:00
Ruben Taelman 04d4b2cf76 Make EnumFacing events available server-side 2015-07-23 16:51:45 +02:00
LexManos 81bb69b6c9 Merge pull request #2035 from rubensworks/master
Fix source block check for BlockFluidClassic
2015-07-21 16:43:44 -07:00
Ruben Taelman 0cf1f0d51c Fix source block check for BlockFluidClassic 2015-07-21 10:51:53 +02:00
cpw c308a47124 Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 2015-07-18 12:47:31 -04:00
LexManos cd313c195b Merge pull request #2023 from diesieben07/entity-pick
Allow the new entity eggs to be created via middle-click on an Entity while in creative mode.
2015-07-16 11:33:01 -04:00
diesieben07 9f571ff15d Allow the new entity eggs to be created via middle-click 2015-07-16 14:13:48 +02:00
liach e2ee54a27d Add an EnumHelper hook and fixed an issue 2015-07-14 08:55:51 +08:00
cpw 0f456b4684 Be a little bit more helpful when the ObjectHolder misses. Should help figure out what is going in in #2006 2015-07-09 17:05:20 -04:00
cpw 8636eb1883 Wake up the FluidRegistry before any mods start loading. Should stop mods claiming to own water or lava (depending on who accessed
FluidRegistry first)
2015-07-09 16:53:31 -04:00
cpw 50677ad87a Actually rebuild the fluidNames each rebuild, don't just try and force changes in. Should fix #1973 2015-07-09 16:40:51 -04:00
simon816 81eb6a8bb4 Fix placing signs with NBT prompting for text 2015-07-08 22:27:17 +01:00
Clienthax 97f8c246b8 Signed-off-by: Clienthax <[email protected]> 2015-06-30 22:29:34 +01:00
Fry 20bf76464a Merge pull request #1978 from RainWarrior/model-rotation
Custom transformations in forge blockstate json.
2015-06-30 22:14:31 +03:00
RainWarrior c4f370a7e6 Custom transformations in forge blockstate json. 2015-06-30 21:37:11 +03:00
AbrarSyed 9ebc77ef22 updated installed gradle. not finished 2015-06-30 00:14:41 -05:00
AbrarSyed 2fce67c8b7 fixed local-building fail with changelog 2015-06-29 21:56:35 -05:00
AbrarSyed a55536c0dc added jenkins compat tasks 2015-06-29 21:56:35 -05:00
AbrarSyed 1ae0498534 Added FG2 buildscript + updated for Gradle 2.4 2015-06-29 21:56:35 -05:00
AbrarSyed c02c379bed removed old unnecessary stuff 2015-06-29 21:56:35 -05:00
AbrarSyed c5ac5b0264 DeobfuscationData no longer required at dev time 2015-06-29 21:56:35 -05:00
AbrarSyed 0fb705f8f5 added hardcoded fml version file 2015-06-29 21:56:35 -05:00
AbrarSyed bbfae84ee8 removed broken and duplicate AT lines 2015-06-29 21:56:30 -05:00
LexManos cab151ec44 Fixed ItemMonsterPlacer.getEggInfo missing return. Closes #1975 2015-06-26 17:54:38 -07:00
LexManos 7a733d635e Merge pull request #1974 from Lunatrius/white-screen-fix
Fixed error GUIs showing a white screen
2015-06-26 16:16:01 -07:00
Lunatrius 44077774be Fixed error GUIs showing a white screen and replaced a rogue direct GL call. 2015-06-27 01:12:24 +02:00
Fry 37b4936e9d Fix particle texture of the generated item models. 2015-06-27 01:26:59 +03:00
LexManos 637e2c6f56 Merge pull request #1972 from bonii-xx/StateMapDomainFix
Fix StateMap always mapping properties to the "minecraft" domain
2015-06-26 04:03:25 -07:00
Lex Manos 2bfa1ffc05 Add debug for max texture size and output when Texture Atlas can not stitch all textures. 2015-06-26 03:32:09 -07:00
Bernhard Bonigl e55ee43fd5 Fix StateMap always mapping properties to the "minecraft" domain instead of the mods, causing it to not find BlockState definitions. 2015-06-26 10:29:10 +02:00
cpw 204cb16bc4 ObjectHolder works great, but it should be a lot less spammy about failed lookups. They're usually mod options. 2015-06-25 14:41:45 -04:00
diesieben07 ebef4553f3 Re-introduce RenderBlockOverlayEvent, seems to have been missed during 1.8 update 2015-06-25 19:09:32 +02:00
Starbuck Johnson fe2c4c569d Fix harvest logic running in addition to shearable logic 2015-06-24 14:28:47 -05:00
Lex Manos b2033d642c More descripotive error if Patcher is passed invalid data for vanilla classes. 2015-06-23 20:36:23 -07:00
RainWarrior 74501f509f There's no Map.getOrDefault in java6. 2015-06-23 17:03:19 +03:00
RainWarrior 8f65678b99 Vanilla models can now use custom textures. Fixes #1962 2015-06-23 16:52:42 +03:00
RainWarrior 510b5523d5 Fixed perspective transformations for item models. 2015-06-23 15:56:18 +03:00
Lex Manos d7c4a06ce8 Fix AT for Block constructor. 2015-06-23 01:26:33 -07:00
RainWarrior 1582e401ed Added ItemLayerModel - less awkward, simpler and faster version of ItemModelGenerator. 2015-06-23 04:43:48 +03:00
cpw bae83e6724 Merge remote-tracking branch 'origin/master' 2015-06-21 22:08:08 -04:00
cpw 16ff1be093 Merge branch '1.7.10'
Conflicts:
	fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch
	fml/patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch
	fml/patches/minecraft/net/minecraft/client/resources/SimpleReloadableResourceManager.java.patch
	fml/src/main/java/net/minecraftforge/fml/relauncher/CoreModManager.java
	patches/minecraft/net/minecraft/client/Minecraft.java.patch
	patches/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java.patch
	patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch
	src/main/java/net/minecraftforge/client/model/obj/WavefrontObject.java
2015-06-21 21:59:51 -04:00
LexManos 8bb34107f1 Merge pull request #1858 from FlansMods/master
Hook for Camera Angles, Including Roll
2015-06-21 11:19:26 -07:00
cpw 2c24c7618a Mods that are extracted to the mods dir by unzipping or whatever will now cause the game to crash. Too much info is in the META-INF now,
and more will be being added. Extracting to the mods dir just completely breaks that.
2015-06-20 14:47:55 -04:00
LexManos 240ed53a88 Merge pull request #1956 from lawremi/mesadictfix
fix logic for guessing mesa tag in biome dict
2015-06-19 11:25:49 -07:00
larman 2cb971c38f fix logic for guessing mesa tag in biome dict 2015-06-19 07:04:19 -07:00
Lex Manos 7041fbc27e Time each bar in the loading screen and print it to the log, useful information to see where most time is spent in loading. 2015-06-18 22:18:27 -07:00
Lex Manos e519278888 Add TextureManager to loading screen. 2015-06-18 22:17:21 -07:00
Lex Manos 4235ca36ea Make TextureMap for items and blocks skip the first pass of loading/stitching textures.
Should decrease loading times for large packs.
May cause issues with some mods so use -Dfml.skipFirstTextureLoad=false to disable.
2015-06-18 20:13:31 -07:00
Lex Manos 6527792d06 Add the stitching allocation stage to loading screen. 2015-06-18 20:13:17 -07:00
Lex Manos 716dfdae47 Create config folder in SplashProgress if it does not exist. 2015-06-18 20:11:23 -07:00
Lex Manos c158af902f New system in EntityRegistry to allow modders to register spawn eggs.
For entites that do not use the global ID system.
{Which no mod entity should}
Vanilla spawn eggs will now detect a 'entity_name' entry in it's NBT data and use that for spawning/rendering.
2015-06-18 18:05:12 -07:00
Lex Manos ed09a25c65 Patch line number update. Ignore this. 2015-06-18 18:02:22 -07:00
LexManos 94dc49e522 Merge pull request #1952 from ganymedes01/master
Change permission levels on ore recipes parameters
2015-06-18 11:55:46 -07:00
LexManos 40bc035d74 Merge pull request #1953 from ganymedes01/patch-1
Fixed NPE when calling canBrew
2015-06-18 11:51:48 -07:00
Lex Manos 01aac69514 Use Guava instead of Nio for J6 compatibility. 2015-06-18 11:48:14 -07:00
ganymedes01 953ddae475 Fixed NPE when calling canBrew
Oversight on my part,

If the ingredient doesn't return true in Item.isPotionIngredient, Items.potionitem.getEffects(stack) returns null, causing an NPE to be thrown later on.

This invalidates #1947.
2015-06-18 13:32:21 -03:00
ganymedes01 ab548afbfb Change permission levels on ore recipes parameters 2015-06-18 13:21:00 -03:00
Fry f2eec981ff Merge pull request #1922 from RainWarrior/model-fluid2
1.8 model fluid renderer
2015-06-18 14:29:22 +03:00
RainWarrior 07038f8342 Added fluid renderer. 2015-06-18 14:26:53 +03:00
Lex Manos f59b0a2932 Make Item.shouldCauseReequipAnimation is bit more precise and copy over the new item for rendering even if the animation is diabled. 2015-06-17 20:33:35 -07:00
Lex Manos 030084f2b3 Add vanilla block rotation support back in for certain blocks that were missed in 1.8 update. Closes #1903 2015-06-17 17:28:18 -07:00
LexManos bf63879a92 Merge pull request #1941 from xxmicloxx/xxmicloxx-patch-b3dloader
Bugfix for B3DLoader
2015-06-17 16:52:08 -07:00
LexManos ed8b8bcf8f Merge pull request #1932 from cheeserolls/patch-1
Fix incorrect block position in BlockReed canPlaceBlockAt
2015-06-17 16:48:42 -07:00
LexManos 1dc7a80d4f Merge pull request #1506 from mezz/GuiScreenInputEvents
Add GuiScreenEvents for keyboard and mouse input
2015-06-17 16:45:41 -07:00
LexManos 87b55860af Merge pull request #1781 from ShetiPhian/Block.getPickBlock
Player sensitive version of Block.getPickBlock
2015-06-17 16:37:03 -07:00
Lex Manos 453ec39496 Add Item.shouldCauseReequipAnimation to allow modders more control over the 'Reequip' animation. 2015-06-17 16:36:41 -07:00
Lex Manos 6ec1ec2575 Fixed compile issues with irtimaled's PR. 2015-06-17 16:01:33 -07:00
Lex Manos e7724c13cc Fixed Wavefront Object Importer reading files with integer values. Closes #1651, #1654 2015-06-17 15:48:22 -07:00
Lex Manos 38a85280de Make FML Gui classes use GlStateManager. Closes FML#615 2015-06-17 15:16:48 -07:00
LexManos 20ea3bc0ce Merge pull request #1749 from irtimaled/master
Copy fortress.dat from the overworld to the Nether. Fixes #1747
2015-06-17 14:23:58 -07:00
xxmicloxx b45c90ceb8 Bugfix for B3DLoader 2015-06-17 19:48:51 +02:00
Lex Manos e94288bbb1 Fixup model loading errors not being printed by making ICustomModelLoader.loadModel propogate IOExceptions as needed. 2015-06-16 16:03:10 -07:00
Lex Manos d0902c096e Cleanup code format in LayerBreakingTest. 2015-06-16 16:01:09 -07:00
Lex Manos c50adf2433 Include the thread state in the potential error handleing for SplashProgress. 2015-06-16 15:26:00 -07:00
Lex Manos 64263a9f8e Throw more descriptive errors when mods attempt to register invalid global entity IDs. 2015-06-14 17:06:00 -07:00
cpw 114ac38910 Merge branch '1.7.10'
Conflicts:
	fml/src/main/java/net/minecraftforge/fml/common/MinecraftDummyContainer.java
	fml/src/main/java/net/minecraftforge/fml/common/registry/FMLControlledNamespacedRegistry.java
	fml/src/main/java/net/minecraftforge/fml/common/registry/LanguageRegistry.java
2015-06-14 13:57:23 -04:00
LexManos 1f6086c175 Merge pull request #1935 from superckl/master
Fixed two exceptions in BiomeDictionary related to adding new Biome Types.
2015-06-12 17:47:32 -07:00
superckl c84f7a740f Fixing two IndexOutBoundsExceptions from the BiomeDictionary 2015-06-12 17:08:19 -07:00
Daniel Howard 16be913abc Fix incorrect block position in BlockReed canPlaceBlockAt
block.canSustainPlant is called on the wrong block position.  It should be called on the block below (the 'soil' block).
2015-06-12 10:14:22 +01:00
Lex Manos b3a1548cfa Cleanup mod state dump to be easier to read by displaying the states in abreviation and placing them before the mod info. 2015-06-09 23:06:06 -07:00
Lex Manos b94c2799ab Cleanup mod signature data table. Easily seperating those mods with signatures vs those with none. 2015-06-09 22:25:13 -07:00
Lex Manos d4f6e9e419 Quiet CrashReport class pre-loading debug, no flag to re-enable. 2015-06-09 21:37:33 -07:00
Lex Manos 847c0246cd Quiet FMLControlledNamespacedRegistry debug spam by default. Reenable using -Dfml.debugRegistryEntries=true. 2015-06-09 21:33:52 -07:00
Lex Manos b985384fab Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. 2015-06-09 21:31:18 -07:00
Lex Manos 851f9c1da6 Cleanup some spammy output. 2015-06-09 21:20:53 -07:00
Lex Manos acbb330214 Bump version for new RB 2015-06-09 17:17:35 -07:00
Lex Manos db7d82a889 Copy over parent's modelSet value in variants as well. 2015-06-09 17:17:23 -07:00
Lex Manos 9ef7b13442 Bump version for new RB. 2015-06-09 15:06:42 -07:00
cpw db42d1f532 Merge branch '1.7.10' 2015-06-09 17:57:35 -04:00
LexManos 7406e3df9f Merge pull request #1795 from lumien231/ExperienceEvent
Added LivingExperienceDropsEvent to change how much experience an entity drops
2015-06-09 13:23:01 -07:00
LexManos 8b50f9ab36 Merge pull request #1907 from johnjohn/master
Added ItemMap type check to item frames and ItemRenderer, enabling vanilla style rendering for custom ItemMaps
2015-06-09 12:37:33 -07:00
Lex Manos fef959d1e9 Redefine removal value in IRetextureableModel from null to empty string {""} due to ImmutibleMap not allowing null Values. Closes #1927 2015-06-09 12:36:36 -07:00
LexManos f62ee5c4f5 Merge pull request #1881 from ganymedes01/master
Added a brewing recipe registry system
2015-06-09 12:05:40 -07:00
johnjohn 486c0955cf Added ItemMap type check to item frames and ItemRenderer, enabling vanilla style rendering for custom maps 2015-06-09 12:42:45 -06:00
ganymedes01 0373920f99 Added a brewing registry system 2015-06-09 14:01:45 -03:00
Lex Manos 1ad05f7f22 Missed patch for sign fix. 2015-06-08 16:23:30 -07:00
Lex Manos 15a1d4cf0d Remove worlds from WorldBorder when unloaded tol prevent memory leak, Closes #1923 2015-06-08 16:19:53 -07:00
Lex Manos 1b689802a4 Limit Sign text to 384 json characters and strip control codes. This is 1.8.7's Sign fix. Thanks Searge. 2015-06-08 16:19:02 -07:00
cpw b35aec4347 Attempt to synchronize the state for vanilla client completions and quit the handler if the vanilla
thread has already setup the connection. Should fix #1924
2015-06-08 18:24:35 -04:00
Lex Manos ee1e229b66 Change custom payload lock to be buffer itself incase multiple packets use the same backend buffer. Closes #1908 2015-06-07 00:06:00 -07:00
Fry e007f7cf39 Merge pull request #1868 from fuami/ISmartBlockModel_Damage
Add Block Breaking Animation for ISmartBlockModels
2015-06-06 03:39:11 +03:00
Fuami 5cd4564a32 Added Breaking Animation for Smart Models, Checking each layer.
Added Layered Smart Render Test.
2015-06-05 19:23:17 -05:00
LexManos 26bc23602a Update README.txt 2015-06-05 13:28:07 -07:00
RainWarrior d6bc936ffa B3D Improvements
- fixed keyframe transformation application
 - textures are now resolved the same way as in vanilla models
 - added the ability to use forge blockstate texture information
 - removed unused code from the B3D example
2015-06-04 18:58:42 +03:00
RainWarrior 581363fddd fixed AT missing for getModelBlockDefinition 2015-06-04 18:58:42 +03:00
RainWarrior 685a97fd93 Fixed missing variant logging; added the possibility to specify the item variant in the blockstate json. 2015-06-04 18:07:03 +03:00
RainWarrior 897d41fa77 Fixed partial variant detection in the forge blockstate loader. 2015-06-04 16:59:18 +03:00
Lex Manos 5064d33519 Mitigate potential issue with users requesting lots of server status information by caching ServerStatus json. 2015-06-03 23:16:25 -07:00
LexManos 107e760aa3 Merge pull request #1912 from clienthax/master
Add missing forge patch from 1.8 port
2015-06-03 19:53:01 -07:00
Clienthax 9b53b7e111 Add missing forge patch from 1.8 port
https://github.com/MinecraftForge/MinecraftForge/blob/1.7.10/patches/minecraft/net/minecraft/client/Minecraft.java.patch#L88
2015-06-04 01:55:13 +01:00
cpw 63f2300794 Fix up the client/server fluid race condition that could cause the game to bail when an SSP game connects.
There's still a teeny gap, but it's MUCH less prominent than it was before.
2015-06-03 19:26:53 -04:00
LexManos 61f9c5a201 Merge pull request #1885 from LexManos/EnhanvedBlockStateJson
Hook BlockState's Json loading to add support for simplified Forge format.
2015-06-02 16:52:06 -07:00
Lex Manos 267e1ee62f Hook BlockState's Json loading to add support for simplified Forge format.
See https://github.com/MinecraftForge/MinecraftForge/pull/1885 for more details.
2015-06-02 16:49:56 -07:00
Lex Manos 950da28d54 Fixed missing import in last merge. 2015-06-02 16:32:10 -07:00
cpw e2dc863086 Merge branch '1.7.10'
Conflicts:
	fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch
	fml/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java
	fml/src/main/java/net/minecraftforge/fml/client/SplashProgress.java
2015-06-02 07:30:44 -04:00
cpw f8cb411df1 So we can't print a lot of unicode in the splash screen, so restrict to a hard subset we know we CAN print, closes #1910 2015-06-02 07:24:26 -04:00
LexManos 41cae458a4 Merge pull request #1911 from AlgorithmX2/ItemFramesOnSolidSurfaces
Allow placing item frames on Solid Block Faces (isSideSolid)
2015-06-01 20:45:28 -07:00
AlgorithmX2 885d7602f9 Allow placing item frames on Solid Block Faces (isSideSolid) 2015-06-01 22:31:55 -05:00
Lex Manos e6eeb03108 Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662
(cherry picked from commit 19d7e16fa6)

Conflicts:
	fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch
2015-06-01 17:15:06 -04:00
Lex Manos f088b1b460 Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message.
(cherry picked from commit e3211eec04)

Conflicts:
	fml/src/main/java/cpw/mods/fml/client/SplashProgress.java
2015-06-01 17:09:28 -04:00
cpw 3c640fa32d Bump minor version # to 2 because of the fluid changes (mirroring what happening in 1.7.10) 2015-06-01 16:31:16 -04:00
cpw d02636213a Merge branch '1.7.10' - imports all the fluid fixups and other stuff from 1.7 into 1.8
Conflicts:
	fml/src/main/java/net/minecraftforge/fml/common/FMLCommonHandler.java
	fml/src/main/java/net/minecraftforge/fml/common/Loader.java
	patches/minecraft/net/minecraft/client/Minecraft.java.patch
	patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch
	patches/minecraft/net/minecraft/item/ItemArmor.java.patch
	patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch
	patches/minecraft/net/minecraft/nbt/NBTTagCompound.java.patch
	patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch
	patches/minecraft/net/minecraft/world/World.java.patch
	patches/minecraft/net/minecraft/world/WorldProvider.java.patch
	src/main/java/net/minecraftforge/common/ForgeVersion.java
	src/main/java/net/minecraftforge/common/network/ForgeMessage.java
	src/main/java/net/minecraftforge/fluids/BlockFluidBase.java
	src/main/java/net/minecraftforge/fluids/FluidContainerRegistry.java
	src/main/java/net/minecraftforge/fluids/FluidRegistry.java
	src/main/java/net/minecraftforge/oredict/OreDictionary.java
2015-06-01 16:29:34 -04:00
cpw bd6630810f Add in an ItemStackHolder - a way to inject ItemStacks without having to have complex lookup code everywhere.
Example: https://gist.github.com/cpw/9af398451a20459ac263
2015-05-30 14:07:54 -04:00
Lex Manos 3331d2a496 Fixed damage reduction rate of vanilla armor incorrectly scaling with armor's current durability. 2015-05-26 23:34:32 -07:00
LexManos f9b1e4e23b Merge pull request #1892 from AlgorithmX2/vanilla_lighting_bug
Fix Vanilla Lighting Bug - Fixes Top/Bottom Faces interpolation.
2015-05-26 19:24:37 -07:00
Lex Manos 2bb090bf2b Force netty downgrade on dedicated server to match client. Netty bug: https://github.com/netty/netty/issues/2302 Closes #1848 2015-05-26 19:20:46 -07:00
AlgorithmX2 76f8843017 Fix Partial Face Lighting on Top/Bottom Faces ; Vanilla MC-80148 2015-05-26 19:33:56 -05:00
Lex Manos 9fa51447a2 Fixed command exploit with C12 2015-05-25 16:08:42 -07:00
Lex Manos c608e7c04e Fixes MC-75630 - Exploit with signs and command blocks 2015-05-25 15:28:14 -07:00
Lex Manos 19d7e16fa6 Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 2015-05-25 14:32:35 -07:00
Lex Manos e3211eec04 Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. 2015-05-25 13:34:35 -07:00
Lex Manos 89994bda39 Cleanup a lot of spammy output. Everything hidden behind environment flags now. Scale anvil image down 50% 2015-05-25 13:34:34 -07:00
Lex Manos df5e594e95 Loosen up ServerChatEvent to support IChatComponent Closes #1893 2015-05-25 13:34:34 -07:00
LexManos 8d7b999506 Merge pull request #1804 from Prototik/font
Add true support for unicode fonts
2015-05-21 10:43:22 -07:00
Prototik 2798fc4e49 Add true support for unicode fonts 2015-05-21 20:14:56 +07:00
LexManos 61b2929ae6 Merge pull request #1886 from diesieben07/texture-load-crash
Fix crash when texture loading throws RuntimeException without message
2015-05-20 12:19:18 -07:00
diesieben07 1501f467cf Fix crash when texture loading throws RuntimeException without message 2015-05-20 17:43:52 +02:00
Flan 306af4feee Added CameraSetup sub-event for camera angles
Allows players to alter yaw and pitch of renderViewEntity, but more importantly, adds the ability to roll the view.

Added camera roll hook
2015-05-19 16:14:44 +01:00
LexManos d3ab6d36a4 Merge pull request #1882 from t1g3l/master
Changed forge command tab completion to use getListOfStringsMatchingL…
2015-05-18 10:08:46 -07:00
t1g3l 6a299a483a Changed forge command tab completion to use getListOfStringsMatchingLastWord() 2015-05-18 13:51:05 +02:00
LexManos 8944983d0f Merge pull request #1878 from t1g3l/master
Added tab completion to /forge command.
2015-05-17 14:55:39 -07:00
cpw 06398fa259 Clean up transformers a bit. Can't use COMPUTE_FRAMES even though it's required - the game refuses to even
run if I do. Note for j8: when we force Java8 classes, all coremods will need a thorough overhaul - the
current way we do things is not sustainable when Java8 becomes the universal norm.
2015-05-17 10:35:56 -04:00
cpw 3bbf5c04a6 Strip control codes in progress bar messages. They cause crashes sometimes. 2015-05-17 10:15:44 -04:00
t1g3l fe327fbd76 Added tab completion 2015-05-17 11:00:42 +02:00
cpw 686db5e5eb Hardcode the FML version in-game as a specific value. 2015-05-16 13:43:35 -04:00
cpw 5fe653cf82 Attempt to fix the slow loading problem. Instead of forcing the main thread to wait around
on every call to processWindowMessages, we will simply skip it, if the mutex is already
claimed by the display thread. This should fix slow loading issues seen by some with
the new loading screen.
2015-05-16 12:55:15 -04:00
cpw dca8a4a550 Merged FML @ 1.7.10 2015-05-13 20:00:48 -04:00
cpw 4270f0fb4a MinecraftForge/FML@0b84b6aa29 Expose the state of the loader 2015-05-07 14:24:14 -04:00
cpw dd49a0cd84 Merge branch '1710ls' into 1.7.10 2015-05-07 14:23:37 -04:00
RainWarrior 88a7c0b233 Updated FML:
MinecraftForge/FML@2ed00c4da0 Splash progress screen will not load in the presence of optifine anymore.
MinecraftForge/FML@adcf2247c6 Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack
MinecraftForge/FML@91338433fa Add classloader exclusion for ASM
MinecraftForge/FML@7c10b93a2d Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651
MinecraftForge/FML@8ccfa24764 Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10
MinecraftForge/FML@b2650a0bdb Optifine can tell us when they're ready for the new splash screen.
MinecraftForge/FML@02a5a58a1c Fix the ordering of the messages, so they make sense now.
MinecraftForge/FML@dda4313539 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10.
MinecraftForge/FML@5dbb481732 Eliminated texture name allocation race condition
MinecraftForge/FML@450b82ca0e Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed
2015-05-04 22:18:38 +03:00
cpw 1b1fbbb70d MinecraftForge/FML@dda4313539 Revert "Merge pull request #650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. 2015-05-04 09:26:09 -04:00
cpw 815b97bf7c MinecraftForge/FML@adcf2247c6 Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack
MinecraftForge/FML@91338433fa Add classloader exclusion for ASM
MinecraftForge/FML@7c10b93a2d Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes #651
MinecraftForge/FML@8ccfa24764 Merge pull request #650 from luacs1998/1.7.10
MinecraftForge/FML@b2650a0bdb Optifine can tell us when they're ready for the new splash screen.
MinecraftForge/FML@02a5a58a1c Fix the ordering of the messages, so they make sense now.
2015-05-02 22:15:08 -04:00
cpw 37075d0437 MinecraftForge/FML@2ed00c4da0 Splash progress screen will not load in the presence of optifine anymore. 2015-04-25 15:06:20 -04:00
cpw 63e71af229 MinecraftForge/FML@94821fac98 Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json 2015-04-25 01:34:25 -04:00
cpw 66a4db5fa0 MinecraftForge/FML@4fe7b469b5 Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now.
MinecraftForge/FML@31ae43590a Fix trying to close the screen during error.
2015-04-25 00:47:09 -04:00
cpw 55cbba0764 MinecraftForge/FML@36688e781a Add in resource reloading to the bar. Tidy up some of the labels a bit.
MinecraftForge/FML@a1dc465a55 More progress bar action!
MinecraftForge/FML@bfcbf4ef43 More progress bar hooks
MinecraftForge/FML@a6670c415e Thread errors should be correctly displayed in the crash report now
MinecraftForge/FML@9a16d26186 fixed bar text positioning
MinecraftForge/FML@0059c63028 Track mipmaps and texture upload
MinecraftForge/FML@ef5f809752 Fix broken log message in vanilla.
2015-04-24 19:16:55 -04:00
RainWarrior a297a615b9 MinecraftForge/FML@5785a9c9e8 Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645
MinecraftForge/FML@bd117be9c3 Correctly track exceptions thrown in the loading screen rendering thread
2015-04-24 05:51:44 +03:00
cpw c12bb689fb MinecraftForge/FML@a39482c4b7 Splash screen implementation
MinecraftForge/FML@01fea095cd Merge branch '1.7.10-load-progress' of github.com:RainWarrior/FML into 1.7.10
MinecraftForge/FML@364b4bbbb0 Call some loader stuffs
MinecraftForge/FML@61a891280d Make sure to close the splash screen if there's gonna be an error display
2015-04-21 00:30:52 -04:00
cpw 50215307f2 MinecraftForge/FML@d14d1a8fea Update to use the inherited jar format. Simplifies a lot.. 2015-04-20 22:27:10 -04:00
cpw 96cbadb874 Expose the fluid that a block was constructed with, useful for 'non-default'
configuration of fluidblocks. Shouldn't be used outside of this purpose.
2015-04-20 10:29:04 -04:00
cpw 50608986fe Replace the OLD fluid in the fluidID map, not the new one.. 2015-04-20 10:01:36 -04:00
cpw 7bbe8df2b8 Fix static initializer derp. 2015-04-20 09:26:27 -04:00
cpw 0543828603 Make FluidStack hold a delegate for the fluid. This can then float based on what is "live" at present. 2015-04-20 09:06:23 -04:00
cpw 7e9d2fb509 Reformat ItemArmor$ArmorMaterial.getBaseItem to use an if/then/else structure. The switch
causes the generation of an internal class which may derp custom armor addition.
Closes #1799
2015-04-19 12:04:22 -04:00
cpw dcb2f2588c Actually use the override constraint in ticket requests. Closes #1802 2015-04-19 11:57:39 -04:00
cpw 178acfbb20 Change logging to avoid the String.format bug. Closes #1809 2015-04-19 11:52:23 -04:00
cpw 57408af2a3 MinecraftForge/FML@8f9e3a7e30 Exceptions during construction phase should not propogate and cause an immediate crash. Closes #638 2015-04-18 21:54:01 -04:00
cpw 54af750717 Verify that the fluid registry doesn't contain "junk" fluids thru reflection. 2015-04-18 21:37:45 -04:00
Lex Manos 1effc27790 Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker.
(cherry picked from commit de066a86da)

Conflicts:
	patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch
	patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch
2015-04-18 21:22:44 -04:00
KingLemming 61984561cd Merge pull request #1805 from KingLemming/1.7.10
OreDict functionality updates.
2015-04-16 17:20:43 -04:00
King Lemming cd3bbfb02c Adds some new Ore querying functionality.
Also attempts to size initial Hashmaps in a logical manner.

Signed-off-by: King Lemming <[email protected]>
2015-04-16 17:18:37 -04:00
Lumien 81ab4cbc5f Added LivingExperienceDropsEvent to change the amount of experience an entity drops 2015-04-14 11:58:00 +02:00
LexManos 475d7fc02d Revert KL's change, requesting a ore WILL register it.
Registering like this and returning a new empty list allows for modders to register their recipes and such without requiring to be executed after someone actually adds an item. If handled properly this allows for more flexible load orders, and more responsive code.
2015-04-13 21:28:16 -07:00
KingLemming b30b551197 Merge pull request #1796 from KingLemming/1.7.10
Adjusts OreDictionary to prevent invalid registrations.
2015-04-13 22:41:25 -04:00
King Lemming 3cd7f6bd87 Adjusts OreDictionary to prevent invalid registrations.
Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID.

Tweaks a warning message in the FluidContainerRegistry. No functionality change.

Signed-off-by: King Lemming <[email protected]>
2015-04-13 22:40:38 -04:00
cpw 277495c8e4 MinecraftForge/FML@dfce4cd8d0 Allow registering custom language adapters.
MinecraftForge/FML@9fecd72cf0 Some tidyup of the PR
MinecraftForge/FML@10ac2a4fd9 Fix itemCtorArgs javadoc in registerBlock
MinecraftForge/FML@86f70d37a4 Patch TracingPrintStream to handle Kotlin IO.
2015-04-11 18:20:11 -04:00
cpw 5c88164211 And handle the null case in the constructor itself. Closes #1794 (again) 2015-04-11 17:38:15 -04:00
cpw 230d757a89 Fix NPE - Closes #1794 2015-04-11 17:27:14 -04:00
cpw 9671179453 Fluids are now tracked internally by mod. This allows for the server and the world to specify a "default"
in the case of a possible alternative fluid implementation. If you always called registerFluid, things
should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example)
you should change to register anyway. This way, even if you're not default in the overall instance, you may
become default if you're the only mod present on a server, for example, or in a world save.

This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid
tracking.
2015-04-11 17:18:53 -04:00
cpw eb12936a52 MinecraftForge/FML@0da1263ff9 Enhance error output for bad textures a bit more and try and capture more types of error.. 2015-04-11 12:30:20 -04:00
cpw 345d905438 MinecraftForge/FML@be5ec06e31 Cleaning up the missing resource stack spam, and condensing the information into a usefully understandable format. 2015-04-11 01:03:50 -04:00
cpw 6049d371f3 MinecraftForge/FML@ce791cb1f2 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors.
MinecraftForge/FML@852710962a Clean up some dead code
2015-04-10 22:46:53 -04:00
KingLemming 6d3494a853 Merge pull request #1791 from KingLemming/1.7.10-fluid
FCR Warning + Denial
2015-04-10 20:11:17 -04:00
King Lemming 37d63b3fe9 Adds a warning to the FluidContainerRegistry when a mod does something stupid! Also denies the registration.
Signed-off-by: King Lemming <[email protected]>
2015-04-10 20:09:58 -04:00
KingLemming 291c57b624 Merge pull request #1789 from KingLemming/1.7.10-fluid
1.7.10 fluid
2015-04-10 16:41:29 -04:00
King Lemming 186f92479d Fixes FluidContainerRegistry properly - no more corner case where client/server mods disagree.
Also clarifies the 2x Fluid registration error message somewhat.

Signed-off-by: King Lemming <[email protected]>
2015-04-10 16:38:45 -04:00
KingLemming 7e9dfb1a11 Merge pull request #4 from MinecraftForge/1.7.10
1.7.10
2015-04-10 16:24:33 -04:00
KingLemming 806b4a3bdf Merge pull request #1784 from KingLemming/1.7.10-fluid
Change to FluidContainerRegistry
2015-04-09 17:45:09 -04:00
King Lemming 433b7ca589 Fixes #1782
Signed-off-by: King Lemming <[email protected]>
2015-04-09 17:28:20 -04:00
KingLemming 78db5732ca Merge pull request #2 from MinecraftForge/1.7.10
1.7.10
2015-04-09 16:56:04 -04:00
Timothy Tomkins dfd42ab573 Player sensitive version of Block.getPickBlock
Block.getPickBlock was patched in 1.7 but was overlooked in 1.8.

Closes: https://github.com/MinecraftForge/MinecraftForge/issues/1709
2015-04-09 02:09:58 -04:00
LexManos 24802143eb Merge pull request #1775 from Prototik/patch-1
[1.7.10] Fix FluidRegsitry.registerFluid
2015-04-08 09:25:01 -07:00
Sergey Shatunov a42cf1ae37 Fix FluidRegsitry.registerFluid
FluidRegistry:
```java
    static BiMap<String, Fluid> fluids = HashBiMap.create();
    static BiMap<Fluid, Integer> fluidIDs = HashBiMap.create();
...
    public static boolean registerFluid(Fluid fluid)
    {
        if (fluidIDs.containsKey(fluid.getName()))
            ^^^^^^^
```
There is definitely should be fluids instead fluidIDs. This mistake broke many mods.
2015-04-08 17:26:40 +06:00
Lex Manos 02ebc9ca21 Restore binary compatibility issues in FluidRegistry caused by recent changes. 2015-04-07 20:06:55 -07:00
Lex Manos 1fd39578b0 MinecraftForge/FML@31cf2a9cab Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. 2015-04-07 20:06:01 -07:00
Irtimaled 1eb535f14f Copy fortress.dat from vanilla location
Fixes #1747

If the dat file isn't in the dimension specific folder but is present in the vanilla data folder then copy it over.
2015-04-07 14:40:17 +01:00
cpw 4f0e2fb9c4 You shouldn't be creating FluidStacks from unregistered Fluids. Warn clearly on failed registrations, and make a useful log message for failed fluidstack
creations. Should help a lot with tracking down broken mods that are doing this wrongly.
2015-04-05 22:48:09 -04:00
King Lemming f7395f517b Allow for duplicate Fluid Blocks. It's annoying to be sure but just as with the OreDictionary, we'll have to handle it.
Signed-off-by: King Lemming <[email protected]>
2015-04-05 22:30:39 -04:00
cpw defaddecec Fix formatting 2015-04-05 22:30:39 -04:00
cpw 7506a5b7ad Add in a fluidid transformer 2015-04-05 22:30:39 -04:00
King Lemming 3fc40b955a Removed fluidID from ItemStack.
This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it.

This is a breaking change but can be mitigated with a transformer to the getter getFluidID().

Signed-off-by: King Lemming <[email protected]>
2015-04-05 22:30:39 -04:00
cpw 38b9febfe5 Forge really should have always supported the concept of an "exact spawn". Individual world providers can still
change this behaviour of course, but for default maps it makes sense to support it as a config option.
2015-04-03 10:31:25 -04:00
cpw e837b2e2cd MinecraftForge/FML@12ccf9cf49 Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse.
MinecraftForge/FML@e8cd368da3 It's an IllegalState not an IllegalArgument *sigh*
MinecraftForge/FML@2be9c74342 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it
MinecraftForge/FML@7d8804cf65 You can't setAction to BLOCKONLY
MinecraftForge/FML@c73861efe6 Cherry-pick 01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560
MinecraftForge/FML@94c45b48c1 Fix json cache crash, handle the file much more cleanly. Probably an MC JIRA since it's a vanilla bug. Closes #619
2015-04-03 10:26:17 -04:00
mezz 75c7862e78 Add GuiScreenEvents for keyboard and mouse input 2014-12-06 19:06:19 -08:00
1201 changed files with 51296 additions and 73005 deletions

No files matched your search

+2 -1
View File
@@ -4,6 +4,7 @@
*.java text eol=lf
*.gradle text eol=crlf
*.png binary
*.gif binary
*.exe binary
*.dll binary
*.jar binary
@@ -11,4 +12,4 @@
*.zip binary
*.pyd binary
*.cfg text eol=lf
*.py text eol=lf
*.py text eol=lf
+6 -2
View File
@@ -3,8 +3,12 @@
/.settings
/.classpath
#In case people make their workspace in the repo
/eclipse/
#idea
/.idea
/classes
*.iml
#gradle
@@ -12,13 +16,13 @@
/.gradle
#occupational hazards
/eclipse/
/projects/
/repo/
/buildSrc
#Patch rejects
*.rej
/patches-/
# FML changelog
changelog.txt
/patches_old/
File renamed without changes.
File renamed without changes.
+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
+332 -81
View File
@@ -1,11 +1,6 @@
buildscript {
repositories {
maven {
name = "central_mirrior"
url = "http://uk.maven.org/maven2"
}
mavenCentral()
mavenLocal()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
@@ -16,71 +11,240 @@ buildscript {
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
}
}
configurations {
deployJars
}
import static net.minecraftforge.gradle.dev.ForgeDevPlugin.*
apply plugin: 'maven'
apply plugin: 'forgedev'
repositories {
maven {
name = "central_mirrior"
url = "http://uk.maven.org/maven2"
}
mavenLocal()
flatDir {
name "fileRepo"
dirs "repo"
}
maven {
name = "local"
url = "file:///home/cpw/projects/repo"
}
}
apply plugin: "maven"
apply plugin: "net.minecraftforge.gradle.patcher"
apply plugin: "net.minecraftforge.gradle.launch4j"
minecraft {
version = '1.8'
mcpVersion = '9.10'
mappings = 'snapshot_nodoc_20141130'
fmlDir = projectDir.getAbsolutePath() + "/fml";
mainClass = 'net.minecraftforge.fml.relauncher.ServerLaunchWrapper'
tweakClass = 'net.minecraftforge.fml.common.launcher.FMLTweaker'
version = "1.9"
mappings = 'snapshot_nodoc_20160312'
//mappings = "snapshot_nodoc_20151122"
workspaceDir = "projects"
versionJson = "jsons/1.9-dev.json"
buildUserdev = true
buildInstaller = true
installerVersion = "1.4"
def common = {
patchPrefixOriginal "../src-base/minecraft"
patchPrefixChanged "../src-work/minecraft"
mainClassClient "net.minecraft.launchwrapper.Launch"
tweakClassClient "net.minecraftforge.fml.common.launcher.FMLTweaker"
mainClassServer "net.minecraft.launchwrapper.Launch"
tweakClassServer "net.minecraftforge.fml.common.launcher.FMLServerTweaker"
}
projects {
forge {
rootDir "."
patchDir "patches/minecraft"
patchAfter "clean"
genPatchesFrom "clean"
genMcpPatches = false
applyMcpPatches = false
with common
}
}
}
group = 'net.minecraftforge'
version = getVersionFromJava(getProject(), 'src/main/java/net/minecraftforge/common/ForgeVersion.java')
version = getVersionFromJava(file("src/main/java/net/minecraftforge/common/ForgeVersion.java"))
jenkins {
job = 'minecraftforge'
extractForgeSources { exclude "**/SideOnly.java", "**/Side.java" }
extractForgeResources { exclude "**/log4j2.xml" }
genGradleProjects { addTestCompileDep "junit:junit:4.12" }
processJson {
releaseJson = "jsons/1.9-rel.json"
addReplacements([
"@minecraft_version@": project.minecraft.version,
"@version@": project.version,
"@project@": "forge",
"@artifact@": "net.minecraftforge:forge:${project.version}",
"@universal_jar@": { outputJar.archiveName },
"@timestamp@": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
])
}
// crowdin stuff
if (project.hasProperty("crowdinKey"))
tasks.getLocalizations.apiKey = project.crowdinKey
task changelog(type: JenkinsChangelog) {
// skip if there is no forge jenkins pass
onlyIf {
project.hasProperty('forgeJenkinsPass')
// Not sure what abrar was trying to do here...
//project.file("build/distributions/${project.name}-${project.version}-changelog.txt").text = ""
}
outputs.upToDateWhen { false } // never up to date
serverRoot = "http://ci.jenkins.minecraftforge.net/"
jobName = "minecraftforge"
targetBuild = System.env['BUILD_NUMBER'] ?: 0;
authName = "console_script"
authPassword = project.hasProperty('forgeJenkinsPass') ? project.getProperty('forgeJenkinsPass') : "";
output = "build/distributions/${project.name}-${project.version}-changelog.txt"
}
task crowdin(type: CrowdinDownload) {
output = "build/crowdin.zip"
projectId = 'minecraft-forge'
extract = false // we wanna keep it as a zip. not extract it to a folder named "crowdin.zip"
// task auomatically skips if this is null
if (project.hasProperty('crowdinKey'))
apiKey = project.crowdinKey
}
def extraTxts = [
changelog, // yeah we can do thi, because gradle and groovy are awesome
"LICENSE-fml.txt",
"CREDITS-fml.txt",
"MinecraftForge-Credits.txt",
"MinecraftForge-License.txt",
"Paulscode SoundSystem CodecIBXM License.txt",
"Paulscode IBXM Library License.txt"
]
outputJar {
classifier = 'universal'
from extraTxts
// add crowdin locales
from { crowdin.getDidWork() ? zipTree(crowdin.output) : null}
dependsOn 'crowdin'
manifest.attributes([
"Main-Class": "net.minecraftforge.fml.relauncher.ServerLaunchWrapper",
"TweakClass": "net.minecraftforge.fml.common.launcher.FMLTweaker",
"Class-Path": getServerClasspath(file("jsons/${minecraft.version}-rel.json"))
])
}
installer {
classifier = 'installer'
from extraTxts
from "src/main/resources/forge_logo.png"
rename "forge_logo\\.png", "big_logo.png"
}
task signUniversal(type: SignJar, dependsOn: 'outputJar') {
onlyIf {
project.hasProperty('jarsigner')
}
def jarsigner = [:];
if (project.hasProperty('jarsigner'))
jarsigner = project.jarsigner;
alias = 'forge'
exclude "paulscode/**"
storePass = jarsigner.storepass
keyPass = jarsigner.keypass
keyStore = jarsigner.keystore
inputFile = outputJar.archivePath
outputFile = outputJar.archivePath
}
uploadArchives.dependsOn signUniversal
build.dependsOn signUniversal
installer.dependsOn signUniversal
// MDK package
import org.apache.tools.ant.filters.ReplaceTokens
task makeMdk(type: Zip) {
baseName = project.name
classifier = "mdk"
version = project.version
destinationDir = file('build/distributions')
from 'gradlew'
from 'gradlew.bat'
into ('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'
}
}
tasks.build.dependsOn makeMdk
// launch4j
launch4j {
jar = installer.archivePath.canonicalPath
outfile = file("build/distributions/${project.name}-${project.version}-installer-win.exe").canonicalPath
icon = file('icon.ico').canonicalPath
manifest = file('l4jManifest.xml').canonicalPath
jreMinVersion = '1.6.0'
initialHeapPercent = 5;
maxHeapPercent = 100;
}
tasks.generateXmlConfig.dependsOn installer
tasks.build.dependsOn 'launch4j'
// MAVEN
artifacts {
archives changelog.output
archives file("build/distributions/${project.name}-${project.version}-installer-win.exe")
archives makeMdk
}
task ciWriteBuildNumber << {
def file = file("src/main/java/net/minecraftforge/common/ForgeVersion.java");
def bn = System.getenv("BUILD_NUMBER")?:0;
def outfile = "";
def ln = System.getProperty('line.separator')
file.eachLine{ String s ->
if (s.contains("buildVersion") && s.contains("= 0;")) {
s = " public static final int buildVersion = ${bn};";
}
outfile += (s+ln);
}
file.write(outfile);
}
uploadArchives {
repositories {
add getProject().repositories.mavenLocal()
}
repositories.mavenDeployer {
configuration = configurations.deployJars
if (project.hasProperty("filesmaven")) {
logger.info('Publishing to files server')
repository(url: project.filesmaven.url) {
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
dependsOn 'build'
if (project.hasProperty('forgeMavenPass'))
{
repository(url: "http://files.minecraftforge.net/maven/manage/upload") {
authentication(userName: "forge", password: project.getProperty('forgeMavenPass')) // the elvis operator. look it up.
}
} else {
logger.info('Publishing to repo folder')
}
else
{
// local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
}
@@ -88,49 +252,136 @@ uploadArchives {
groupId = project.group
version = project.version
artifactId = project.archivesBaseName
}
pom.project {
name project.archivesBaseName
packaging 'jar'
description 'Minecraft Forge API'
url 'https://github.com/MinecraftForge/MinecraftForge'
scm {
project {
name project.archivesBaseName
packaging 'jar'
description 'Minecraft Forge API'
url 'https://github.com/MinecraftForge/MinecraftForge'
connection 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
developerConnection 'scm:git:[email protected]:MinecraftForge/MinecraftForge.git'
}
issueManagement {
system 'github'
url 'https://github.com/MinecraftForge/MinecraftForge/issues'
}
scm {
url 'https://github.com/MinecraftForge/MinecraftForge'
connection 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
developerConnection 'scm:git:[email protected]:MinecraftForge/MinecraftForge.git'
}
licenses {
license {
name 'Forge Public License'
url 'https://raw.github.com/MinecraftForge/MinecraftForge/master/MinecraftForge-License.txt'
distribution 'repo'
issueManagement {
system 'github'
url 'https://github.com/MinecraftForge/MinecraftForge/issues'
}
}
developers {
developer {
id 'cpw'
name 'cpw'
roles { role 'developer' }
licenses {
license {
name 'Forge Public License'
url 'https://raw.github.com/MinecraftForge/MinecraftForge/master/MinecraftForge-License.txt'
distribution 'repo'
}
}
developer {
id 'LexManos'
name 'Lex Manos'
roles { role 'developer' }
}
developer {
id 'AbrarSyed'
name 'Abrar Syed'
roles { role 'contributor' }
developers {
developer {
id 'cpw'
name 'cpw'
roles { role 'developer' }
}
developer {
id 'LexManos'
name 'Lex Manos'
roles { role 'developer' }
}
developer {
id 'AbrarSyed'
name 'Abrar Syed'
roles { role 'contributor' }
}
}
}
}
}
}
// HELPER METHODS
import groovy.json.JsonSlurper;
String getServerClasspath(File file)
{
def node = new JsonSlurper().parse(file);
def out = new StringBuilder()
node.versionInfo.libraries.each { lib ->
if (lib.serverreq)
{
// group : artifact : version
def split = lib.name.split(':')
def group = split[0].replace('.', '/')
def artifact = split[1]
def version = split[2]
out += "libraries/$group/$artifact/$version/$artifact-${version}.jar "
}
}
out += "minecraft_server.${minecraft.version}.jar"
return out.toString();
}
String getVersionFromJava(File file)
{
String major = "0";
String minor = "0";
String revision = "0";
String build = "0";
String prefix = "public static final int";
file.eachLine{ String s ->
s = s.trim();
if (s.startsWith(prefix))
{
s = s.substring(prefix.length(), s.length() - 1);
s = s.replace('=', ' ').replace("Version", "").replaceAll(" +", " ").trim();
String[] pts = s.split(" ");
if (pts[0].equals("major")) major = pts[pts.length - 1];
else if (pts[0] == "minor") minor = pts[pts.length - 1];
else if (pts[0] == "revision") revision = pts[pts.length - 1];
}
}
if (System.getenv().containsKey("BUILD_NUMBER"))
{
build = System.getenv("BUILD_NUMBER");
}
String branch = null;
if (!System.getenv().containsKey("GIT_BRANCH"))
{
// TODO: use grgit
branch = "git rev-parse --abbrev-ref HEAD".execute().text.trim()
}
else
{
branch = System.getenv("GIT_BRANCH");
branch = branch.substring(branch.lastIndexOf('/') + 1);
}
def out = "${minecraft.version.replace('-', '_')}-$major.$minor.$revision.$build"
if (branch && branch != 'master' && branch != 'HEAD')
out += "-$branch"
return out;
}
// 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_82499_3_,stack,', 'p_82499_3_,stackIn,')
params.write(text)
}
fixParams.dependsOn('extractMcpMappings')
extractMcpMappings.finalizedBy('fixParams')
Binary file not shown.
-14
View File
@@ -1,14 +0,0 @@
* text eol=lf
*.bat text eol=crlf
*.patch text eol=lf
*.java text eol=lf
*.gradle text eol=crlf
*.png binary
*.exe binary
*.dll binary
*.jar binary
*.lzma binary
*.zip binary
*.pyd binary
*.cfg text eol=lf
*.py text eol=lf
-21
View File
@@ -1,21 +0,0 @@
#eclipse
/bin
/.settings
/.classpath
#idea
/.idea
*.iml
#gradle
/build
/buildSrc
/.gradle
#occupational hazards
/eclipse/
/repo/
#Patch reject
*.rej
-94
View File
@@ -1,94 +0,0 @@
This is Forge Mod Loader, or FML for short, by cpw.
More information can be found at https://github.com/MinecraftForge/FML/wiki
It is a clean reimplementation of a mod loading system for client and server.
It can be installed on its own, or as part of Minecraft Forge.
----------------------
About Forge Mod Loader
----------------------
Environments and compatibility
==============================
FML covers two main environments: client and server. All environments share
the main mod loading code base, with additional varying hooks based on the
specific environment.
There are some very visible changes to the client when FML is installed.
There are some bukkit compatibility hooks available, consult MCPC+, now known as Cauldron
for more information.
Minecraft Forge in all cases bundles FML as it's modloading technology of choice
because FML is open source, freely distributable, and can be easily updated by
contributors through github.
Notable integrations
====================
Optifine has FML compatibility. It varies from Optifine release to release, however
in general it will work well alongside an FML or
Minecraft Forge installation. FML will detect and ensure the good operation of
Optifine (you can see it in your client as an additional data line on the
bottom left).
Mod information
===============
FML exposes the mod information through a mod list visible on the main screen as
well as some small branding enhancements. For full data mods need to provide an
information file. This file is a standard format so hopefully tools providing
launch capabilities can also leverage this content.
-------------------------------
Binary installation information
-------------------------------
If you have downloaded a binary zip file you can install it as follows (client
or server):
Installation
============
To install on a server, simply execute the FML or Forge jar file, with a copy of
minecraft_server-@[email protected] placed in the same directory. FML will launch
it's patched copy.
To install on a client, run the installer by executing java -jar <installer>.jar.
It will identify the location of you minecraft installation (this can be customized)
and create a new profile "FML" there.
Forge Installation
==================
This code also ships as a part of Minecraft Forge. You do not need to install it
separately from your Minecraft Forge installation. Minecraft Forge contains the
exact same code as this. You should not install FML if you are also installing
Minecraft Forge.
-------------------------------------------
Source installation information for modders
-------------------------------------------
This code follows the Minecraft Forge installation methodology. It will apply
some small patches to the vanilla MCP source code, giving you and it access
to some of the data and functions you need to build a successful mod.
Note also that the patches are built against "unrenamed" MCP source code (aka
srgnames) - this means that you will not be able to read them directly against
normal code.
Source pack installation information:
Standalone source installation
==============================
To install this source code for development purposes, extract this zip file.
It ships with a demonstration mod. Run "gradle setupDevWorkspace" to create
a gradle environment primed with FML. Run gradle eclipse or gradle idea to
create an IDE workspace of your choice.
Refer to ForgeGradle for more information about the gradle environment
Forge source installation
=========================
MinecraftForge ships with this code and installs it as part of the forge
installation process, no further action is required on your part.
For reference this is version @MAJOR@.@MINOR@.@REV@.@BUILD@ of FML
for Minecraft version @MCVERSION@.
-112
View File
@@ -1,112 +0,0 @@
buildscript {
repositories {
mavenCentral()
mavenLocal()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
}
}
import static net.minecraftforge.gradle.dev.FmlDevPlugin.*
apply plugin: 'maven'
apply plugin: 'fmldev'
repositories {
flatDir {
name "fileRepo"
dirs "repo"
}
}
minecraft {
version = '1.8'
mcpVersion = '9.10'
mappings = 'snapshot_nodoc_20141130'
fmlDir = projectDir.getAbsolutePath();
mainClass = 'net.minecraftforge.fml.relauncher.ServerLaunchWrapper'
tweakClass = 'net.minecraftforge.fml.common.launcher.FMLTweaker'
installerVersion = "1.4"
}
group = 'net.minecraftforge'
version = getVersionFromGit(getProject())
jenkins {
job = 'fml'
}
uploadArchives {
repositories {
if (project.hasProperty("filesmaven")) {
logger.info('Publishing to files server')
mavenDeployer {
configuration = configurations.deployJars
repository(url: project.filesmaven.url) {
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
}
pom {
groupId = project.group
version = project.version
artifactId = project.archivesBaseName
project {
name project.archivesBaseName
packaging 'jar'
description 'ForgeModLoader'
url 'https://github.com/MinecraftForge/FML'
scm {
url 'https://github.com/MinecraftForge/FML'
connection 'scm:git:git://github.com/MinecraftForge/FML.git'
developerConnection 'scm:git:[email protected]:MinecraftForge/FML.git'
}
issueManagement {
system 'github'
url 'https://github.com/MinecraftForge/FML/issues'
}
licenses {
license {
name 'GNU Lesser Public License (LGPL), Version 2.1'
url 'http://www.gnu.org/licenses/lgpl-2.1.txt'
distribution 'repo'
}
}
developers {
developer {
id 'cpw'
name 'cpw'
roles { role 'developer' }
}
developer {
id 'LexManos'
name 'Lex Manos'
roles { role 'developer' }
}
}
}
}
}
} else {
logger.info('Publishing to repo folder')
mavenDeployer {
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
}
}
}
}
-19
View File
@@ -1,19 +0,0 @@
# Artistic Style format configuration
# see http://astyle.sourceforge.net/astyle.html
style=allman
add-brackets
break-closing-brackets
indent-switches
max-instatement-indent=40
pad-oper
pad-header
unpad-paren
break-blocks
delete-empty-lines
-18447
View File
File diff suppressed because it is too large. Load diff
-5012
View File
File diff suppressed because it is too large. Load diff
-27537
View File
File diff suppressed because it is too large. Load diff
-172
View File
@@ -1,172 +0,0 @@
[DEFAULT]
DirTemp = temp
DirSrc = src
DirLogs = logs
DirBin = bin
DirJars = jars
DirReobf = reobf
DirConf = conf
DirRuntime = runtime
DirLib = lib
DirTempSrc = temp/src
DirTempCls = temp/cls
DirTempBin = temp/bin
DirModSrc = modsrc
DirEclipse = eclipse
[CSV]
Classes = %(DirConf)s/classes.csv
Methods = %(DirConf)s/methods.csv
Fields = %(DirConf)s/fields.csv
Params = %(DirConf)s/params.csv
NewIds = %(DirConf)s/newids.csv
[SRGS]
ConfClient = %(DirConf)s/joined.srg
ConfServer = %(DirConf)s/joined.srg
Client = %(DirTemp)s/client_rg.srg
Server = %(DirTemp)s/server_rg.srg
DeobfClient = %(DirTemp)s/client_deobf.srg
DeobfServer = %(DirTemp)s/server_deobf.srg
ReobfClient = %(DirTemp)s/client_ro.srg
ReobfServer = %(DirTemp)s/server_ro.srg
ReobfClientSrg = %(DirTemp)s/client_ro_srg.srg
ReobfServerSrg = %(DirTemp)s/server_ro_srg.srg
ReobfClientCls = %(DirTemp)s/client_ro_cls.srg
ReobfServerCls = %(DirTemp)s/server_ro_cls.srg
[JAR]
DirNatives = %(DirJars)s/bin/natives
Client = %(DirJars)s/bin/minecraft.jar
Server = %(DirJars)s/minecraft_server.jar
LWJGL = %(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
MD5Client = 8663a10cecc10eaa683a927ef5371852
MD5Server = 5b19d1a562a8a7c5f9a787ad96c8148b
[RETROGUARD]
Location = %(DirRuntime)s/bin/retroguard.jar
RetroConf = %(DirTemp)s/retroguard.cfg
RetroReobConf = %(DirTemp)s/retroguard_ro.cfg
ClientConf = %(DirTemp)s/client_rg.cfg
ServerConf = %(DirTemp)s/server_rg.cfg
ClientReobConf = %(DirTemp)s/client_ro.cfg
ServerReobConf = %(DirTemp)s/server_ro.cfg
ClientOut = %(DirTemp)s/minecraft_rg.jar
ServerOut = %(DirTemp)s/minecraft_server_rg.jar
ClientLog = %(DirLogs)s/client_rg.log
ServerLog = %(DirLogs)s/server_rg.log
ClientDeobLog = %(DirLogs)s/client_deob.log
ServerDeobLog = %(DirLogs)s/server_deob.log
NullPkg = net/minecraft/src
[EXCEPTOR]
XClientJson = %(DirConf)s/exceptor.json
XServerJson = %(DirConf)s/exceptor.json
XClientCfg = %(DirConf)s/joined.exc
XServerCfg = %(DirConf)s/joined.exc
XClientOut = %(DirTemp)s/minecraft_exc.jar
XServerOut = %(DirTemp)s/minecraft_server_exc.jar
XClientLog = %(DirLogs)s/client_exc.log
XServerLog = %(DirLogs)s/server_exc.log
XClientLogReobf = %(DirLogs)s/client_reobf_exc.log
XServerLogReobf = %(DirLogs)s/server_reobf_exc.log
XClientMeta = %(DirTemp)s/client_meta.log
XServerMeta = %(DirTemp)s/server_meta.log
[DECOMPILE]
ClsClientTemp = %(DirTempCls)s/minecraft
ClsServerTemp = %(DirTempCls)s/minecraft_server
SrcClientTemp = %(DirTempSrc)s/minecraft
SrcServerTemp = %(DirTempSrc)s/minecraft_server
FFSource = net
FFClientIn = %(DirTemp)s/minecraft_ff_in.jar
FFServerIn = %(DirTemp)s/minecraft_server_ff_in.jar
[OUTPUT]
BinClientTemp = %(DirTempBin)s/minecraft
BinServerTemp = %(DirTempBin)s/minecraft_server
SrcClient = %(DirSrc)s/minecraft
SrcServer = %(DirSrc)s/minecraft_server
TestClient = net/minecraft/client/main/Main
TestServer = net/minecraft/server/MinecraftServer
[PATCHES]
PatchClient = %(DirConf)s/patches/minecraft.patch
PatchServer = %(DirConf)s/patches/minecraft_server.patch
PatchTemp = %(DirTemp)s/temp.patch
FFPatchClient = %(DirConf)s/patches/minecraft_ff
FFPatchServer = %(DirConf)s/patches/minecraft_server_ff
PatchClient_osx = %(DirConf)s/patches/minecraft_osx.patch
PatchServer_osx = %(DirConf)s/patches/minecraft_server_osx.patch
[RECOMPILE]
BinClient = %(DirBin)s/minecraft
BinServer = %(DirBin)s/minecraft_server
LogClient = %(DirLogs)s/client_compile.log
LogServer = %(DirLogs)s/server_compile.log
ClassPathClient = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/bin/minecraft.jar,%(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
ClassPathServer = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/minecraft_server.jar
ClientFixes = %(DirConf)s/patches
FixStart = Start
IgnorePkg = paulscode,com,isom,ibxm,de/matthiasmann/twl,org,javax,argo,gnu,io/netty
[REOBF]
MD5Client = %(DirTemp)s/client.md5
MD5Server = %(DirTemp)s/server.md5
MD5PreReobfClient = %(DirTemp)s/client_reobf.md5
MD5PreReobfServer = %(DirTemp)s/server_reobf.md5
RecompJarClient = %(DirTemp)s/client_recomp.jar
RecompJarServer = %(DirTemp)s/server_recomp.jar
ObfJarClient = %(DirTemp)s/client_reobf.jar
ObfJarServer = %(DirTemp)s/server_reobf.jar
ReobfDirClient = %(DirReobf)s/minecraft
ReobfDirServer = %(DirReobf)s/minecraft_server
ClientRoLog = %(DirLogs)s/client_ro.log
ServerRoLog = %(DirLogs)s/server_ro.log
ReobfClientLog = %(DirLogs)s/client_reob.log
ReobfServerLog = %(DirLogs)s/server_reob.log
[GETMODSOURCE]
OutSRCClient = %(DirModSrc)s/minecraft
OutSRCServer = %(DirModSrc)s/minecraft_server
[MCP]
LogFile = %(DirLogs)s/mcp.log
LogFileErr = %(DirLogs)s/mcperr.log
UpdateUrl = http://mcp.ocean-labs.de/files/mcprolling_{version}/
IgnoreUpdate = %(DirBin)s,%(DirLib)s,%(DirLogs)s,%(DirModSrc)s,%(DirReobf)s,%(DirSrc)s,%(DirTemp)s,%(DirEclipse)s/Client/bin,%(DirEclipse)s/Server/bin,%(DirJars)s/world,%(DirJars)s/saves,%(DirJars)s/resources
RGIndex = 180425
[ASTYLE]
AstyleConfig = %(DirConf)s/astyle.cfg
[COMMANDS]
Wine = wine
Patcher_win = %(DirRuntime)s/bin/applydiff.exe
Patcher_linux = patch
Patcher_osx = patch
Jad_win = %(DirRuntime)s/bin/jad.exe
Jad_osx = %(DirRuntime)s/bin/jad-osx
AStyle_win = %(DirRuntime)s/bin/astyle.exe
AStyle_linux = astyle
AStyle_osx = %(DirRuntime)s/bin/astyle-osx
JadRetro = %(DirRuntime)s/bin/jadretro.jar
Fernflower = %(DirRuntime)s/bin/fernflower.jar
Exceptor = %(DirRuntime)s/bin/mcinjector.jar
SpecialSource = %(DirRuntime)s/bin/specialsource.jar
CmdPatch = %s -p1 -u -i {patchfile} -d {srcdir}
CmdJad = %s -b -d {outdir} -dead -o -r -s .java -stat -ff {classes}
CmdAStyle = %s --suffix=none --quiet --options={conffile} {classes}
CmdRG = %s -cp "{classpath}" RetroGuard -searge {conffile}
CmdRGReobf = %s -cp "{classpath}" RetroGuard -notch {conffile}
CmdSS = %s -cp "{classpath}" -jar %s -i {injar} -o {outjar} -m {mapfile} --kill-source
CmdSSReobf = %s -cp "{classpath}" -jar %s -i {injar} -o {outjar} -r -m {mapfile} -d {identifier} -e %s
CmdJadretro = %s -jar %s {targetdir}
CmdFernflower = %s -jar %s -din=1 -rbr=0 -dgs=1 -asc=1 -log=WARN {indir} {outdir}
CmdExceptor = %s -jar %s --jarIn {input} --jarOut {output} --mapIn {conf} --log {log} --jsonIn {json} --applyMarkers --generateParams
CmdExceptorDry = %s -jar %s --jarIn {input} --mapIn {conf} --log {log} --jsonIn {json} --applyMarkers
CmdRecomp = %s -Xlint:-options -deprecation -g -source 1.6 -target 1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
CmdRecompScala = %s -encoding UTF-8 -deprecation -target:jvm-1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
CmdStartSrv = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" net.minecraft.server.MinecraftServer
CmdStartClt = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" -Djava.library.path={natives} Start
-114
View File
@@ -1,114 +0,0 @@
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Arrays;
import joptsimple.ArgumentAcceptingOptionSpec;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import net.minecraft.client.Minecraft;
import net.minecraft.client.main.Main;
public class Start
{
public static void main(String[] args) throws Exception
{
int userIndex = -1;
int passIndex = -1;
int sessIndex = -1;
int versIndex = -1;
for( int x = 0; x < args.length; x++)
{
if (args[x].equals("--username")) userIndex = x + 1;
else if (args[x].equals("--password")) passIndex = x + 1;
else if (args[x].equals("--session")) sessIndex = x + 1;
else if (args[x].equals("--version")) versIndex = x + 1;
}
if (userIndex != 0-1 && passIndex != -1 && sessIndex == -1)
{
String[] session = getSession(args[userIndex], args[passIndex]);
if (session != null)
{
args[userIndex] = session[0];
args = concat(args, new String[]{"--session", session[1]});
}
}
//Kill the password if its there so it isn't printed to the console.
if (passIndex != -1)
{
args[passIndex-1] = "no_password_for_joo";
args[passIndex] = "no_password_for_joo";
}
if (versIndex == -1)
{
args = concat(args, new String[]{ "--version", "fml_mcp" });
}
Main.main(args);
}
private static String[] getSession(String username, String password) throws UnsupportedEncodingException
{
String parameters = "http://login.minecraft.net/?user=" + URLEncoder.encode(username, "UTF-8") +
"&password=" + URLEncoder.encode(password, "UTF-8") +
"&version=" + 13;
String result = openUrl(parameters);
if (result == null)
{
System.out.println("Can't connect to minecraft.net");
return null;
}
if (!result.contains(":"))
{
System.out.println("Login Failed: " + result);
return null;
}
String[] values = result.split(":");
return new String[]{ values[2].trim(), values[3].trim() };
}
private static String openUrl(String addr)
{
try
{
URL url = new URL(addr);
java.io.InputStream is;
is = url.openConnection().getInputStream();
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(is));
String buf = "";
String line = null;
while ((line = reader.readLine()) != null)
{
buf += "\n" + line;
}
reader.close();
return buf;
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
private static <T> T[] concat(T[] first, T[] second)
{
T[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
}
@@ -1,22 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net\minecraft\client\Minecraft.java
--- minecraft\net\minecraft\client\Minecraft.java
+++ minecraft_patched\net\minecraft\client\Minecraft.java
@@ -695,9 +695,7 @@
while(true) {
try {
- if(!this.field_71425_J) {
- break;
- }
+ while(this.field_71425_J) {
if(!this.field_71434_R || this.field_71433_S == null) {
try {
@@ -711,6 +709,7 @@
}
this.func_71377_b(this.field_71433_S);
+ }
} catch (MinecraftError var12) {
break;
} catch (ReportedException var13) {
@@ -1,12 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net\minecraft\client\Minecraft.java
--- minecraft\net\minecraft\client\Minecraft.java
+++ minecraft_patched\net\minecraft\client\Minecraft.java
@@ -326,7 +326,7 @@
while(true) {
try {
- if(this.field_71425_J) {
+ while(this.field_71425_J) {
if(!this.field_71434_R || this.field_71433_S == null) {
try {
this.func_71411_J();
@@ -1,21 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\gui\FontRenderer.java minecraft_patched\net\minecraft\client\gui\FontRenderer.java
--- minecraft\net\minecraft\client\gui\FontRenderer.java
+++ minecraft_patched\net\minecraft\client\gui\FontRenderer.java
@@ -592,8 +592,6 @@
case 10:
--var5;
break;
- case 32:
- var6 = var5;
case 167:
if(var5 < var3 - 1) {
++var5;
@@ -607,6 +605,8 @@
}
}
break;
+ case 32:
+ var6 = var5;
default:
var4 += this.func_78263_a(var8);
if(var7) {
@@ -1,37 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\network\NetHandlerPlayClient.java minecraft_patched\net\minecraft\client\network\NetHandlerPlayClient.java
--- minecraft\net\minecraft\client\network\NetHandlerPlayClient.java
+++ minecraft_patched\net\minecraft\client\network\NetHandlerPlayClient.java
@@ -1275,14 +1275,14 @@
private static final String __OBFID = "CL_00002622";
public void func_73878_a(boolean p_73878_1_, int p_73878_2_) {
- NetHandlerPlayClient.thisxxx.field_147299_f = Minecraft.func_71410_x();
+ NetHandlerPlayClient.this.field_147299_f = Minecraft.func_71410_x();
if(p_73878_1_) {
- if(NetHandlerPlayClient.thisxx.field_147299_f.func_147104_D() != null) {
- NetHandlerPlayClient.thisxxxxxxx.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.ENABLED);
+ if(NetHandlerPlayClient.this.field_147299_f.func_147104_D() != null) {
+ NetHandlerPlayClient.this.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.ENABLED);
}
NetHandlerPlayClient.this.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3, C19PacketResourcePackStatus.Action.ACCEPTED));
- Futures.addCallback(NetHandlerPlayClient.thisx.field_147299_f.func_110438_M().func_180601_a(var2, var3), new FutureCallback() {
+ Futures.addCallback(NetHandlerPlayClient.this.field_147299_f.func_110438_M().func_180601_a(var2, var3), new FutureCallback() {
private static final String __OBFID = "CL_00002621";
@@ -1294,11 +1294,11 @@
}
});
} else {
- if(NetHandlerPlayClient.thisxxxx.field_147299_f.func_147104_D() != null) {
- NetHandlerPlayClient.thisxxxxx.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.DISABLED);
+ if(NetHandlerPlayClient.this.field_147299_f.func_147104_D() != null) {
+ NetHandlerPlayClient.this.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.DISABLED);
}
- NetHandlerPlayClient.thisxxxxxx.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3x, C19PacketResourcePackStatus.Action.DECLINED));
+ NetHandlerPlayClient.this.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3, C19PacketResourcePackStatus.Action.DECLINED));
}
ServerList.func_147414_b(NetHandlerPlayClient.this.field_147299_f.func_147104_D());
@@ -1,13 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\particle\EffectRenderer.java minecraft_patched\net\minecraft\client\particle\EffectRenderer.java
--- minecraft\net\minecraft\client\particle\EffectRenderer.java
+++ minecraft_patched\net\minecraft\client\particle\EffectRenderer.java
@@ -242,7 +242,8 @@
GlStateManager.func_179112_b(770, 771);
GlStateManager.func_179092_a(516, 0.003921569F);
- for(final int var8 = 0; var8 < 3; ++var8) {
+ for(int var8_nf = 0; var8_nf < 3; ++var8_nf) {
+ final int var8 = var8_nf;
for(int var9 = 0; var9 < 2; ++var9) {
if(!this.field_78876_b[var8][var9].isEmpty()) {
switch(var9) {
@@ -1,12 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java minecraft_patched\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
--- minecraft\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
+++ minecraft_patched\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
@@ -82,7 +82,7 @@
public ModelBlockDefinition func_178336_a(JsonElement p_178336_1_, Type p_178336_2_, JsonDeserializationContext p_178336_3_) {
JsonObject var4 = p_178336_1_.getAsJsonObject();
List var5 = this.func_178334_a(p_178336_3_, var4);
- return new ModelBlockDefinition(var5);
+ return new ModelBlockDefinition((Collection)var5);
}
protected List func_178334_a(JsonDeserializationContext p_178334_1_, JsonObject p_178334_2_) {
@@ -1,30 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\renderer\texture\TextureManager.java minecraft_patched\net\minecraft\client\renderer\texture\TextureManager.java
--- minecraft\net\minecraft\client\renderer\texture\TextureManager.java
+++ minecraft_patched\net\minecraft\client\renderer\texture\TextureManager.java
@@ -57,13 +57,14 @@
public boolean func_110579_a(ResourceLocation p_110579_1_, final ITextureObject p_110579_2_) {
boolean var3 = true;
-
+ ITextureObject p_110579_2_2 = p_110579_2_;
+
try {
((ITextureObject)p_110579_2_).func_110551_a(this.field_110582_d);
} catch (IOException var8) {
field_147646_a.warn("Failed to load texture: " + p_110579_1_, var8);
- p_110579_2_ = TextureUtil.field_111001_a;
- this.field_110585_a.put(p_110579_1_, p_110579_2_);
+ p_110579_2_2 = TextureUtil.field_111001_a;
+ this.field_110585_a.put(p_110579_1_, p_110579_2_2);
var3 = false;
} catch (Throwable var9) {
CrashReport var5 = CrashReport.func_85055_a(var9, "Registering texture");
@@ -80,7 +81,7 @@
throw new ReportedException(var5);
}
- this.field_110585_a.put(p_110579_1_, p_110579_2_);
+ this.field_110585_a.put(p_110579_1_, p_110579_2_2);
return var3;
}
@@ -1,12 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\client\resources\FolderResourcePack.java minecraft_patched\net\minecraft\client\resources\FolderResourcePack.java
--- minecraft\net\minecraft\client\resources\FolderResourcePack.java
+++ minecraft_patched\net\minecraft\client\resources\FolderResourcePack.java
@@ -31,7 +31,7 @@
HashSet var1 = Sets.newHashSet();
File var2 = new File(this.field_110597_b, "assets/");
if(var2.isDirectory()) {
- File[] var3 = var2.listFiles(DirectoryFileFilter.DIRECTORY);
+ File[] var3 = var2.listFiles((java.io.FileFilter)DirectoryFileFilter.DIRECTORY);
int var4 = var3.length;
for(int var5 = 0; var5 < var4; ++var5) {
@@ -1,100 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\command\PlayerSelector.java minecraft_patched\net\minecraft\command\PlayerSelector.java
--- minecraft\net\minecraft\command\PlayerSelector.java
+++ minecraft_patched\net\minecraft\command\PlayerSelector.java
@@ -135,7 +135,7 @@
private static List func_179663_a(Map p_179663_0_, String p_179663_1_) {
ArrayList var2 = Lists.newArrayList();
- final String var3 = func_179651_b(p_179663_0_, "type");
+ String var3 = func_179651_b(p_179663_0_, "type");
final boolean var4 = var3 != null && var3.startsWith("!");
if(var4) {
var3 = var3.substring(1);
@@ -159,12 +159,13 @@
});
}
} else {
+ final String var3_f = var3;
var2.add(new Predicate() {
private static final String __OBFID = "CL_00002362";
public boolean func_179613_a(Entity p_179613_1_) {
- return EntityList.func_180123_a(p_179613_1_, var3) != var4;
+ return EntityList.func_180123_a(p_179613_1_, var3_f) != var4;
}
// $FF: synthetic method
public boolean apply(Object p_apply_1_) {
@@ -231,13 +232,14 @@
private static List func_179659_d(Map p_179659_0_) {
ArrayList var1 = Lists.newArrayList();
- final String var2 = func_179651_b(p_179659_0_, "team");
+ String var2 = func_179651_b(p_179659_0_, "team");
final boolean var3 = var2 != null && var2.startsWith("!");
if(var3) {
var2 = var2.substring(1);
}
if(var2 != null) {
+ final String var2_f = var2;
var1.add(new Predicate() {
private static final String __OBFID = "CL_00002355";
@@ -249,7 +251,7 @@
EntityLivingBase var2x = (EntityLivingBase)p_179621_1_;
Team var3x = var2x.func_96124_cp();
String var4 = var3x == null?"":var3x.func_96661_b();
- return var4.equals(var2) != var3;
+ return var4.equals(var2_f) != var3;
}
}
// $FF: synthetic method
@@ -321,19 +323,20 @@
private static List func_179647_f(Map p_179647_0_) {
ArrayList var1 = Lists.newArrayList();
- final String var2 = func_179651_b(p_179647_0_, "name");
+ String var2 = func_179651_b(p_179647_0_, "name");
final boolean var3 = var2 != null && var2.startsWith("!");
if(var3) {
var2 = var2.substring(1);
}
if(var2 != null) {
+ final String var2_f = var2;
var1.add(new Predicate() {
private static final String __OBFID = "CL_00002353";
public boolean func_179600_a(Entity p_179600_1_) {
- return p_179600_1_.func_70005_c_().equals(var2) != var3;
+ return p_179600_1_.func_70005_c_().equals(var2_f) != var3;
}
// $FF: synthetic method
public boolean apply(Object p_apply_1_) {
@@ -372,11 +375,9 @@
private static List func_179662_g(Map p_179662_0_) {
ArrayList var1 = Lists.newArrayList();
- final int var2;
- final int var3;
if(p_179662_0_.containsKey("rym") || p_179662_0_.containsKey("ry")) {
- var2 = func_179650_a(func_179653_a(p_179662_0_, "rym", 0));
- var3 = func_179650_a(func_179653_a(p_179662_0_, "ry", 359));
+ final int var2 = func_179650_a(func_179653_a(p_179662_0_, "rym", 0));
+ final int var3 = func_179650_a(func_179653_a(p_179662_0_, "ry", 359));
var1.add(new Predicate() {
private static final String __OBFID = "CL_00002351";
@@ -393,8 +394,8 @@
}
if(p_179662_0_.containsKey("rxm") || p_179662_0_.containsKey("rx")) {
- var2 = func_179650_a(func_179653_a(p_179662_0_, "rxm", 0));
- var3 = func_179650_a(func_179653_a(p_179662_0_, "rx", 359));
+ final int var2 = func_179650_a(func_179653_a(p_179662_0_, "rxm", 0));
+ final int var3 = func_179650_a(func_179653_a(p_179662_0_, "rx", 359));
var1.add(new Predicate() {
private static final String __OBFID = "CL_00002361";
@@ -1,34 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\inventory\ContainerPlayer.java minecraft_patched\net\minecraft\inventory\ContainerPlayer.java
--- minecraft\net\minecraft\inventory\ContainerPlayer.java
+++ minecraft_patched\net\minecraft\inventory\ContainerPlayer.java
@@ -28,7 +28,7 @@
this.field_82862_h = p_i1819_3_;
this.func_75146_a(new SlotCrafting(p_i1819_1_.field_70458_d, this.field_75181_e, this.field_75179_f, 0, 144, 36));
- final int var4;
+ int var4;
int var5;
for(var4 = 0; var4 < 2; ++var4) {
for(var5 = 0; var5 < 2; ++var5) {
@@ -37,6 +37,7 @@
}
for(var4 = 0; var4 < 4; ++var4) {
+ final int var44 = var4;
this.func_75146_a(new Slot(p_i1819_1_, p_i1819_1_.func_70302_i_() - 1 - var4, 8, 8 + var4 * 18) {
private static final String __OBFID = "CL_00001755";
@@ -45,11 +46,11 @@
return 1;
}
public boolean func_75214_a(ItemStack p_75214_1_) {
- return p_75214_1_ == null?false:(p_75214_1_.func_77973_b() instanceof ItemArmor?((ItemArmor)p_75214_1_.func_77973_b()).field_77881_a == var4:(p_75214_1_.func_77973_b() != Item.func_150898_a(Blocks.field_150423_aK) && p_75214_1_.func_77973_b() != Items.field_151144_bL?false:var4 == 0));
+ return p_75214_1_ == null?false:(p_75214_1_.func_77973_b() instanceof ItemArmor?((ItemArmor)p_75214_1_.func_77973_b()).field_77881_a == var44:(p_75214_1_.func_77973_b() != Item.func_150898_a(Blocks.field_150423_aK) && p_75214_1_.func_77973_b() != Items.field_151144_bL?false:var44 == 0));
}
@SideOnly(Side.CLIENT)
public String func_178171_c() {
- return ItemArmor.field_94603_a[var4];
+ return ItemArmor.field_94603_a[var44];
}
});
}
@@ -1,14 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\network\PacketBuffer.java minecraft_patched\net\minecraft\network\PacketBuffer.java
--- minecraft\net\minecraft\network\PacketBuffer.java
+++ minecraft_patched\net\minecraft\network\PacketBuffer.java
@@ -799,10 +799,4 @@
public boolean release(int p_release_1_) {
return this.field_150794_a.release(p_release_1_);
}
-
- // $FF: synthetic method
- // $FF: bridge method
- public int compareTo(Object p_compareTo_1_) {
- return this.compareTo((ByteBuf)p_compareTo_1_);
- }
}
@@ -1,14 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\server\network\NetHandlerLoginServer.java minecraft_patched\net\minecraft\server\network\NetHandlerLoginServer.java
--- minecraft\net\minecraft\server\network\NetHandlerLoginServer.java
+++ minecraft_patched\net\minecraft\server\network\NetHandlerLoginServer.java
@@ -95,10 +95,6 @@
public void operationComplete(ChannelFuture p_operationComplete_1_) {
NetHandlerLoginServer.this.field_147333_a.func_179289_a(NetHandlerLoginServer.this.field_147327_f.func_175577_aI());
}
- // $FF: synthetic method
- public void operationComplete(Future p_operationComplete_1_) {
- this.operationComplete((ChannelFuture)p_operationComplete_1_);
- }
}, new GenericFutureListener[0]);
}
@@ -1,12 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\util\BlockPos.java minecraft_patched\net\minecraft\util\BlockPos.java
--- minecraft\net\minecraft\util\BlockPos.java
+++ minecraft_patched\net\minecraft\util\BlockPos.java
@@ -194,7 +194,7 @@
protected BlockPos.MutableBlockPos func_179313_a() {
if(this.field_179314_b == null) {
- this.field_179314_b = new BlockPos.MutableBlockPos(var2xxx.func_177958_n(), var2.func_177956_o(), var2x.func_177952_p(), null);
+ this.field_179314_b = new BlockPos.MutableBlockPos(var2.func_177958_n(), var2.func_177956_o(), var2.func_177952_p(), null);
return this.field_179314_b;
} else if(this.field_179314_b.equals(var3)) {
return (BlockPos.MutableBlockPos)this.endOfData();
@@ -1,11 +0,0 @@
diff -r -U 3 minecraft\net\minecraft\world\storage\ThreadedFileIOBase.java minecraft_patched\net\minecraft\world\storage\ThreadedFileIOBase.java
--- minecraft\net\minecraft\world\storage\ThreadedFileIOBase.java
+++ minecraft_patched\net\minecraft\world\storage\ThreadedFileIOBase.java
@@ -25,6 +25,7 @@
}
public void run() {
+ while(true)
this.func_75736_b();
}
-4
View File
@@ -1,4 +0,0 @@
[VERSION]
MCPVersion = 9.10
ClientVersion = 1.8
ServerVersion = 1.8
Binary file not shown.
Binary file not shown.
Vendored
-164
View File
@@ -1,164 +0,0 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
-90
View File
@@ -1,90 +0,0 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
-37
View File
@@ -1,37 +0,0 @@
-------------------------------------------
Source installation information for modders
-------------------------------------------
This code follows the Minecraft Forge installation methodology. It will apply
some small patches to the vanilla MCP source code, giving you and it access
to some of the data and functions you need to build a successful mod.
Note also that the patches are built against "unrenamed" MCP source code (aka
srgnames) - this means that you will not be able to read them directly against
normal code.
Source pack installation information:
Standalone source installation
==============================
To install this source code for development purposes, extract this zip file.
It ships with a demonstration mod. Run 'gradlew setupDevWorkspace' to create
a gradle environment primed with FML. Run 'gradlew eclipse' or 'gradlew idea' to
create an IDE workspace of your choice.
Refer to ForgeGradle for more information about the gradle environment
Note: On macs or linux you run the './gradlew.sh' instead of 'gradlew'
Forge source installation
=========================
MinecraftForge ships with this code and installs it as part of the forge
installation process, no further action is required on your part.
For reference this is version @MAJOR@.@MINOR@.@REV@.@BUILD@ of FML
for Minecraft version @MCVERSION@.
LexManos' Install Video
=======================
https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be
For more details update more often refer to the Forge Forums:
http://www.minecraftforge.net/forum/index.php/topic,14048.0.html
-9
View File
@@ -1,9 +0,0 @@
^org/bouncycastle
^org/apache
^com/google
^com/mojang/authlib
^com/mojang/util
^gnu/trove
^io/netty
^javax/annotation
^argo
@@ -1,24 +0,0 @@
--- ../src-base/minecraft/net/minecraft/block/Block.java
+++ ../src-work/minecraft/net/minecraft/block/Block.java
@@ -39,8 +39,9 @@
public class Block
{
private static final ResourceLocation field_176230_a = new ResourceLocation("air");
- public static final RegistryNamespacedDefaultedByKey field_149771_c = new RegistryNamespacedDefaultedByKey(field_176230_a);
- public static final ObjectIntIdentityMap field_176229_d = new ObjectIntIdentityMap();
+ public static final RegistryNamespacedDefaultedByKey field_149771_c = net.minecraftforge.fml.common.registry.GameData.getBlockRegistry();
+ @Deprecated //Modders: DO NOT use this! Use GameRegistry
+ public static final ObjectIntIdentityMap field_176229_d = net.minecraftforge.fml.common.registry.GameData.getBlockStateIDMap();
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);
@@ -124,6 +125,9 @@
private String field_149770_b;
private static final String __OBFID = "CL_00000199";
+ 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_);
@@ -1,197 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/Minecraft.java
+++ ../src-work/minecraft/net/minecraft/client/Minecraft.java
@@ -410,10 +410,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);
- this.func_110436_a();
+ net.minecraftforge.fml.client.FMLClientHandler.instance().beginMinecraftLoading(this, this.field_110449_ao, this.field_110451_am);
this.field_71446_o = new TextureManager(this.field_110451_am);
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"));
@@ -449,6 +449,8 @@
}
});
this.field_71417_B = new MouseHelper();
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar= net.minecraftforge.fml.common.ProgressManager.push("Rendering Setup", 9);
+ bar.step("GL Setup");
this.func_71361_d("Pre startup");
GlStateManager.func_179098_w();
GlStateManager.func_179103_j(7425);
@@ -462,17 +464,21 @@
GlStateManager.func_179096_D();
GlStateManager.func_179128_n(5888);
this.func_71361_d("Startup");
+ bar.step("Loading Texture Map");
this.field_147128_au = new TextureMap("textures");
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);
this.field_147128_au.func_174937_a(false, this.field_71474_y.field_151442_I > 0);
+ 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);
+ bar.step("Loading Item Renderer");
this.field_175621_X = new RenderItem(this.field_71446_o, this.field_175617_aL);
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);
@@ -482,19 +488,21 @@
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);
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().finishMinecraftLoading();
this.func_71361_d("Post startup");
this.field_71456_v = new GuiIngame(this);
if (this.field_71475_ae != null)
{
- this.func_147108_a(new GuiConnecting(new GuiMainMenu(), this, this.field_71475_ae, this.field_71477_af));
+ net.minecraftforge.fml.client.FMLClientHandler.instance().connectToServerAtStartup(this.field_71475_ae, this.field_71477_af);
}
else
{
this.func_147108_a(new GuiMainMenu());
}
- this.field_71446_o.func_147645_c(this.field_152354_ay);
+ net.minecraftforge.fml.client.SplashProgress.clearVanillaResources(field_71446_o, field_152354_ay);
this.field_152354_ay = null;
this.field_71461_s = new LoadingScreenRenderer(this);
@@ -503,6 +511,7 @@
this.func_71352_k();
}
+ net.minecraftforge.fml.client.FMLClientHandler.instance().onInitializationComplete();
try
{
Display.setVSyncEnabled(this.field_71474_y.field_74352_v);
@@ -681,21 +690,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());
+ int retVal;
if (p_71377_1_.func_71497_f() != null)
{
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + p_71377_1_.func_71497_f());
- System.exit(-1);
+ retVal = -1;
}
else if (p_71377_1_.func_147149_a(file2))
{
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + file2.getAbsolutePath());
- System.exit(-1);
+ retVal = -1;
}
else
{
Bootstrap.func_179870_a("#@?@# Game crashed! Crash report could not be saved. #@?@#");
- System.exit(-2);
+ retVal = -2;
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleExit(retVal);
}
public boolean func_152349_b()
@@ -999,7 +1010,7 @@
{
while (!this.field_152351_aB.isEmpty())
{
- ((FutureTask)this.field_152351_aB.poll()).run();
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_152351_aB.poll()));
}
}
@@ -1034,9 +1045,11 @@
if (!this.field_71454_w)
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onRenderTickStart(this.field_71428_T.field_74281_c);
this.field_71424_I.func_76318_c("gameRenderer");
this.field_71460_t.func_78480_b(this.field_71428_T.field_74281_c);
this.field_71424_I.func_76319_b();
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onRenderTickEnd(this.field_71428_T.field_74281_c);
}
this.field_71424_I.func_76319_b();
@@ -1591,6 +1604,8 @@
--this.field_71467_ac;
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreClientTick();
+
this.field_71424_I.func_76320_a("gui");
if (!this.field_71445_n)
@@ -1744,6 +1759,7 @@
this.field_71462_r.func_146274_d();
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireMouseInput();
}
if (this.field_71429_W > 0)
@@ -1920,6 +1936,7 @@
}
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireKeyInput();
}
for (i = 0; i < 9; ++i)
@@ -2120,12 +2137,15 @@
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();
}
public void func_71371_a(String p_71371_1_, String p_71371_2_, 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);
@@ -2161,6 +2181,12 @@
while (!this.field_71437_Z.func_71200_ad())
{
+ if (!net.minecraftforge.fml.common.StartupQuery.check())
+ {
+ func_71403_a(null);
+ func_147108_a(null);
+ return;
+ }
String s2 = this.field_71437_Z.func_71195_b_();
if (s2 != null)
@@ -2186,7 +2212,7 @@
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 C00Handshake(47, socketaddress.toString(), 0, EnumConnectionState.LOGIN, true));
networkmanager.func_179290_a(new C00PacketLoginStart(this.func_110432_I().func_148256_e()));
this.field_71453_ak = networkmanager;
}
@@ -2237,6 +2263,7 @@
this.func_71351_a((ServerData)null);
this.field_71455_al = false;
+ net.minecraftforge.fml.client.FMLClientHandler.instance().handleClientWorldClosing(this.field_71441_e);
}
this.field_147127_av.func_147690_c();
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
@@ -213,6 +213,8 @@
}
}
+ WorldType.field_77139_a[this.field_146331_K].onGUICreateWorldPress();
+
WorldSettings.GameType gametype = WorldSettings.GameType.func_77142_a(this.field_146342_r);
WorldSettings worldsettings = new WorldSettings(i, gametype, this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
worldsettings.func_82750_a(this.field_146334_a);
@@ -1,24 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiIngameMenu.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiIngameMenu.java
@@ -30,8 +30,9 @@
this.field_146292_n.add(new GuiButton(4, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 24 + b0, I18n.func_135052_a("menu.returnToGame", new Object[0])));
this.field_146292_n.add(new GuiButton(0, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("menu.options", new Object[0])));
+ this.field_146292_n.add(new GuiButton(12, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("fml.menu.modoptions")));
GuiButton guibutton;
- this.field_146292_n.add(guibutton = new GuiButton(7, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("menu.shareToLan", new Object[0])));
+ this.field_146292_n.add(guibutton = new GuiButton(7, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 72 + b0, 200, 20, I18n.func_135052_a("menu.shareToLan", new Object[0])));
this.field_146292_n.add(new GuiButton(5, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 48 + b0, 98, 20, I18n.func_135052_a("gui.achievements", new Object[0])));
this.field_146292_n.add(new GuiButton(6, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 48 + b0, 98, 20, I18n.func_135052_a("gui.stats", new Object[0])));
guibutton.field_146124_l = this.field_146297_k.func_71356_B() && !this.field_146297_k.func_71401_C().func_71344_c();
@@ -65,6 +66,10 @@
break;
case 7:
this.field_146297_k.func_147108_a(new GuiShareToLan(this));
+ break;
+ case 12:
+ net.minecraftforge.fml.client.FMLClientHandler.instance().showInGameModOptions(this);
+ break;
}
}
@@ -1,43 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiMainMenu.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiMainMenu.java
@@ -198,6 +198,11 @@
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])));
+ GuiButton fmlModButton = new GuiButton(6, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.func_135052_a("fml.menu.mods"));
+ fmlModButton.field_146128_h = this.field_146294_l / 2 + 2;
+ field_175372_K.field_146120_f = 98;
+ fmlModButton.field_146120_f = 98;
+ this.field_146292_n.add(fmlModButton);
}
private void func_73972_b(int p_73972_1_, int p_73972_2_)
@@ -245,6 +250,11 @@
this.field_146297_k.func_71400_g();
}
+ if (p_146284_1_.field_146127_k == 6)
+ {
+ this.field_146297_k.func_147108_a(new net.minecraftforge.fml.client.GuiModList(this));
+ }
+
if (p_146284_1_.field_146127_k == 11)
{
this.field_146297_k.func_71371_a("Demo_World", "Demo_World", DemoWorldServer.field_73071_a);
@@ -492,7 +502,15 @@
s = s + " Demo";
}
- this.func_73731_b(this.field_146289_q, s, 2, this.field_146295_m - 10, -1);
+ java.util.List<String> brandings = com.google.common.collect.Lists.reverse(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(true));
+ for (int i = 0; i < brandings.size(); i++)
+ {
+ String brd = brandings.get(i);
+ if (!com.google.common.base.Strings.isNullOrEmpty(brd))
+ {
+ this.func_73731_b(this.field_146289_q, brd, 2, this.field_146295_m - ( 10 + i * (this.field_146289_q.field_78288_b + 1)), 16777215);
+ }
+ }
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);
@@ -1,12 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
@@ -170,6 +170,9 @@
long l = j - k;
ArrayList arraylist = 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("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)});
+ arraylist.add("");
+ arraylist.addAll(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(false));
+
if (this.func_175236_d())
{
return arraylist;
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
@@ -187,7 +187,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);
}
}
}
@@ -1,23 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
+++ ../src-work/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
@@ -84,7 +84,7 @@
boolean flag2 = this.field_148301_e.field_82821_f < 47;
boolean flag3 = flag1 || flag2;
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 list = this.field_148300_d.field_71466_p.func_78271_c(this.field_148301_e.field_78843_d, p_180790_4_ - 32 - 2);
+ List list = this.field_148300_d.field_71466_p.func_78271_c(net.minecraftforge.fml.client.FMLClientHandler.instance().fixDescription(this.field_148301_e.field_78843_d), p_180790_4_ - 48 - 2);
for (int l1 = 0; l1 < Math.min(list.size(), 2); ++l1)
{
@@ -178,6 +178,11 @@
int k2 = p_180790_6_ - p_180790_2_;
int l2 = p_180790_7_ - p_180790_3_;
+ String tooltip = net.minecraftforge.fml.client.FMLClientHandler.instance().enhanceServerListEntry(this, this.field_148301_e, p_180790_2_, p_180790_4_, p_180790_3_, k2, l2);
+ if (tooltip != null)
+ {
+ this.field_148303_c.func_146793_a(tooltip);
+ } else
if (k2 >= p_180790_4_ - 15 && k2 <= p_180790_4_ - 5 && l2 >= 0 && l2 <= 8)
{
this.field_148303_c.func_146793_a(s1);
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java
+++ ../src-work/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java
@@ -247,7 +247,7 @@
{
PacketThreadUtil.func_180031_a(p_147282_1_, this, this.field_147299_f);
this.field_147299_f.field_71442_b = new PlayerControllerMP(this.field_147299_f, this);
- this.field_147300_g = new WorldClient(this, new WorldSettings(0L, p_147282_1_.func_149198_e(), false, p_147282_1_.func_149195_d(), p_147282_1_.func_149196_i()), p_147282_1_.func_149194_f(), p_147282_1_.func_149192_g(), this.field_147299_f.field_71424_I);
+ this.field_147300_g = new WorldClient(this, new WorldSettings(0L, p_147282_1_.func_149198_e(), false, p_147282_1_.func_149195_d(), p_147282_1_.func_149196_i()), net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.get(func_147298_b()).getOverrideDimension(p_147282_1_), p_147282_1_.func_149192_g(), this.field_147299_f.field_71424_I);
this.field_147299_f.field_71474_y.field_74318_M = p_147282_1_.func_149192_g();
this.field_147299_f.func_71403_a(this.field_147300_g);
this.field_147299_f.field_71439_g.field_71093_bK = p_147282_1_.func_149194_f();
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/network/OldServerPinger.java
+++ ../src-work/minecraft/net/minecraft/client/network/OldServerPinger.java
@@ -148,6 +148,7 @@
p_147224_1_.func_147407_a((String)null);
}
+ net.minecraftforge.fml.client.FMLClientHandler.instance().bindServerListData(p_147224_1_, serverstatusresponse);
this.field_175092_e = Minecraft.func_71386_F();
networkmanager.func_179290_a(new C01PacketPing(this.field_175092_e));
this.field_147403_d = true;
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/entity/RenderVillager.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/entity/RenderVillager.java
@@ -48,7 +48,7 @@
case 4:
return field_110906_m;
default:
- return field_110903_f;
+ return net.minecraftforge.fml.common.registry.VillagerRegistry.getVillagerSkin(p_110775_1_.func_70946_n(), field_110903_f);
}
}
@@ -1,91 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
@@ -91,6 +91,7 @@
this.field_94258_i.clear();
int j = Integer.MAX_VALUE;
int k = 1 << this.field_147636_j;
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar = net.minecraftforge.fml.common.ProgressManager.push("Texture stitching", this.field_110574_e.size());
Iterator iterator = this.field_110574_e.entrySet().iterator();
while (iterator.hasNext())
@@ -99,6 +100,7 @@
TextureAtlasSprite textureatlassprite = (TextureAtlasSprite)entry.getValue();
ResourceLocation resourcelocation = new ResourceLocation(textureatlassprite.func_94215_i());
ResourceLocation resourcelocation1 = this.func_147634_a(resourcelocation, 0);
+ bar.step(resourcelocation1.func_110623_a());
try
{
@@ -150,12 +152,14 @@
}
catch (RuntimeException runtimeexception)
{
- field_147635_d.error("Unable to parse metadata from " + resourcelocation1, runtimeexception);
+ //logger.error("Unable to parse metadata from " + resourcelocation1, runtimeexception);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackBrokenTexture(resourcelocation1, runtimeexception.getMessage());
continue;
}
catch (IOException ioexception1)
{
- field_147635_d.error("Using missing texture, unable to load " + resourcelocation1, ioexception1);
+ //logger.error("Using missing texture, unable to load " + resourcelocation1, ioexception1);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackMissingTexture(resourcelocation1);
continue;
}
@@ -171,6 +175,7 @@
stitcher.func_110934_a(textureatlassprite);
}
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
int j1 = Math.min(j, k);
int k1 = MathHelper.func_151239_c(j1);
@@ -181,10 +186,12 @@
}
Iterator iterator1 = this.field_110574_e.values().iterator();
+ bar = net.minecraftforge.fml.common.ProgressManager.push("Mipmap generation", this.field_110574_e.size());
while (iterator1.hasNext())
{
final TextureAtlasSprite textureatlassprite1 = (TextureAtlasSprite)iterator1.next();
+ bar.step(textureatlassprite1.func_94215_i());
try
{
@@ -225,9 +232,12 @@
this.field_94249_f.func_147963_d(this.field_147636_j);
stitcher.func_110934_a(this.field_94249_f);
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
+ bar = net.minecraftforge.fml.common.ProgressManager.push("Texture creation", 3);
try
{
+ bar.step("Stitching");
stitcher.func_94305_f();
}
catch (StitcherException stitcherexception)
@@ -236,11 +246,13 @@
}
field_147635_d.info("Created: {}x{} {}-atlas", new Object[] {Integer.valueOf(stitcher.func_110935_a()), Integer.valueOf(stitcher.func_110936_b()), this.field_94254_c});
+ bar.step("Allocating GL texture");
TextureUtil.func_180600_a(this.func_110552_b(), this.field_147636_j, stitcher.func_110935_a(), stitcher.func_110936_b());
HashMap hashmap = Maps.newHashMap(this.field_110574_e);
Iterator iterator2 = stitcher.func_94309_g().iterator();
TextureAtlasSprite textureatlassprite2;
+ bar.step("Uploading GL texture");
while (iterator2.hasNext())
{
textureatlassprite2 = (TextureAtlasSprite)iterator2.next();
@@ -276,6 +288,7 @@
}
TextureUtil.func_177055_a(this.field_94254_c.replaceAll("/", "_"), this.func_110552_b(), this.field_147636_j, stitcher.func_110935_a(), stitcher.func_110936_b());
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
}
private ResourceLocation func_147634_a(ResourceLocation p_147634_1_, int p_147634_2_)
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/resources/LanguageManager.java
+++ ../src-work/minecraft/net/minecraft/client/resources/LanguageManager.java
@@ -83,6 +83,7 @@
}
field_135049_a.func_135022_a(p_110549_1_, arraylist);
+ net.minecraftforge.fml.common.registry.LanguageRegistry.instance().mergeLanguageTable(field_135049_a.field_135032_a, this.field_135048_c);
StringTranslate.func_135063_a(field_135049_a.field_135032_a);
}
@@ -1,41 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/resources/model/ModelBakery.java
+++ ../src-work/minecraft/net/minecraft/client/resources/model/ModelBakery.java
@@ -318,6 +318,7 @@
private void func_177592_e()
{
+ this.field_177613_u.clear(); //FML clear this to prevent double ups.
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150348_b), Lists.newArrayList(new String[] {"stone", "granite", "granite_smooth", "diorite", "diorite_smooth", "andesite", "andesite_smooth"}));
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150346_d), Lists.newArrayList(new String[] {"dirt", "coarse_dirt", "podzol"}));
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150344_f), Lists.newArrayList(new String[] {"oak_planks", "spruce_planks", "birch_planks", "jungle_planks", "acacia_planks", "dark_oak_planks"}));
@@ -360,6 +361,10 @@
this.field_177613_u.put(Item.func_150898_a(Blocks.field_180390_bo), Lists.newArrayList(new String[] {"oak_fence_gate"}));
this.field_177613_u.put(Item.func_150898_a(Blocks.field_180407_aO), Lists.newArrayList(new String[] {"oak_fence"}));
this.field_177613_u.put(Items.field_179570_aq, Lists.newArrayList(new String[] {"oak_door"}));
+ for (Entry<net.minecraftforge.fml.common.registry.RegistryDelegate<Item>, Set<String>> e : customVariantNames.entrySet())
+ {
+ this.field_177613_u.put(e.getKey().get(), Lists.newArrayList(e.getValue().iterator()));
+ }
}
private List func_177596_a(Item p_177596_1_)
@@ -809,4 +814,19 @@
field_177617_q.field_178317_b = "class generation marker";
field_177616_r.field_178317_b = "block entity marker";
}
+
+ /***********************************************************
+ * FML Start
+ ***********************************************************/
+ private static Map<net.minecraftforge.fml.common.registry.RegistryDelegate<Item>, Set<String>> customVariantNames = Maps.newHashMap();
+ public static void addVariantName(Item item, String... names)
+ {
+ if (customVariantNames.containsKey(item.delegate))
+ customVariantNames.get(item.delegate).addAll(Lists.newArrayList(names));
+ else
+ customVariantNames.put(item.delegate, Sets.newHashSet(names));
+ }
+ /***********************************************************
+ * FML End
+ ***********************************************************/
}
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/client/settings/GameSettings.java
+++ ../src-work/minecraft/net/minecraft/client/settings/GameSettings.java
@@ -1067,6 +1067,7 @@
public void func_74303_b()
{
+ if (net.minecraftforge.fml.client.FMLClientHandler.instance().isLoading()) return;
try
{
PrintWriter printwriter = new PrintWriter(new FileWriter(this.field_74354_ai));
@@ -1,32 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/EntityList.java
+++ ../src-work/minecraft/net/minecraft/entity/EntityList.java
@@ -153,9 +153,10 @@
p_75615_0_.func_82580_o("Type");
}
+ Class oclass = null;
try
{
- Class oclass = (Class)field_75625_b.get(p_75615_0_.func_74779_i("id"));
+ oclass = (Class)field_75625_b.get(p_75615_0_.func_74779_i("id"));
if (oclass != null)
{
@@ -169,7 +170,17 @@
if (entity != null)
{
+ try
+ {
entity.func_70020_e(p_75615_0_);
+ }
+ catch (Exception e)
+ {
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
+ "An Entity %s(%s) has thrown an exception during loading, its state cannot be restored. Report this to the mod author",
+ p_75615_0_.func_74779_i("id"), oclass.getName());
+ entity = null;
+ }
}
else
{
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/EntityTracker.java
+++ ../src-work/minecraft/net/minecraft/entity/EntityTracker.java
@@ -58,6 +58,8 @@
public void func_72786_a(Entity p_72786_1_)
{
+ if (net.minecraftforge.fml.common.registry.EntityRegistry.instance().tryTrackingEntity(this, p_72786_1_)) return;
+
if (p_72786_1_ instanceof EntityPlayerMP)
{
this.func_72791_a(p_72786_1_, 512, 2);
@@ -1,27 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/EntityTrackerEntry.java
+++ ../src-work/minecraft/net/minecraft/entity/EntityTrackerEntry.java
@@ -388,6 +388,14 @@
this.field_73138_k = this.field_73132_a.field_70181_x;
this.field_73135_l = this.field_73132_a.field_70179_y;
+ int posX = MathHelper.func_76128_c(this.field_73132_a.field_70165_t * 32.0D);
+ int posY = MathHelper.func_76128_c(this.field_73132_a.field_70163_u * 32.0D);
+ int posZ = MathHelper.func_76128_c(this.field_73132_a.field_70161_v * 32.0D);
+ if (posX != this.field_73128_d || posY != this.field_73129_e || posZ != this.field_73126_f)
+ {
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.makeEntitySpawnAdjustment(this.field_73132_a, p_73117_1_, this.field_73128_d, this.field_73129_e, this.field_73126_f);
+ }
+
if (this.field_73143_t && !(packet instanceof S0FPacketSpawnMob))
{
p_73117_1_.field_71135_a.func_147359_a(new S12PacketEntityVelocity(this.field_73132_a.func_145782_y(), this.field_73132_a.field_70159_w, this.field_73132_a.field_70181_x, this.field_73132_a.field_70179_y));
@@ -474,6 +482,9 @@
field_151262_p.warn("Fetching addPacket for removed entity");
}
+ Packet pkt = net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(this.field_73132_a);
+ if (pkt != null) return pkt;
+
if (this.field_73132_a instanceof EntityItem)
{
return new S0EPacketSpawnObject(this.field_73132_a, 2, 1);
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/boss/IBossDisplayData.java
+++ ../src-work/minecraft/net/minecraft/entity/boss/IBossDisplayData.java
@@ -4,7 +4,6 @@
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-@SideOnly(Side.CLIENT)
public interface IBossDisplayData
{
float func_110138_aP();
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/item/EntityItem.java
+++ ../src-work/minecraft/net/minecraft/entity/item/EntityItem.java
@@ -366,6 +366,7 @@
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerItemPickupEvent(p_70100_1_, this);
if (!this.func_174814_R())
{
this.field_70170_p.func_72956_a(p_70100_1_, "random.pop", 0.2F, ((this.field_70146_Z.nextFloat() - this.field_70146_Z.nextFloat()) * 0.7F + 1.0F) * 2.0F);
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/monster/EntitySlime.java
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntitySlime.java
@@ -271,7 +271,7 @@
{
Chunk chunk = this.field_70170_p.func_175726_f(new BlockPos(MathHelper.func_76128_c(this.field_70165_t), 0, MathHelper.func_76128_c(this.field_70161_v)));
- if (this.field_70170_p.func_72912_H().func_76067_t() == WorldType.field_77138_c && this.field_70146_Z.nextInt(4) != 1)
+ if (this.field_70170_p.func_72912_H().func_76067_t().handleSlimeSpawnReduction(field_70146_Z, field_70170_p))
{
return false;
}
@@ -1,35 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/passive/EntityVillager.java
+++ ../src-work/minecraft/net/minecraft/entity/passive/EntityVillager.java
@@ -83,6 +83,7 @@
private boolean field_82190_bM;
private boolean field_175564_by;
private InventoryBasic field_175560_bz;
+ @Deprecated //Use VillagerRegistry
private static final EntityVillager.ITradeList[][][][] field_175561_bA = new EntityVillager.ITradeList[][][][] {{{{new EntityVillager.EmeraldForItems(Items.field_151015_O, new EntityVillager.PriceInfo(18, 22)), new EntityVillager.EmeraldForItems(Items.field_151174_bG, new EntityVillager.PriceInfo(15, 19)), new EntityVillager.EmeraldForItems(Items.field_151172_bF, new EntityVillager.PriceInfo(15, 19)), new EntityVillager.ListItemForEmeralds(Items.field_151025_P, new EntityVillager.PriceInfo(-4, -2))}, {new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150423_aK), new EntityVillager.PriceInfo(8, 13)), new EntityVillager.ListItemForEmeralds(Items.field_151158_bO, new EntityVillager.PriceInfo(-3, -2))}, {new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150440_ba), new EntityVillager.PriceInfo(7, 12)), new EntityVillager.ListItemForEmeralds(Items.field_151034_e, new EntityVillager.PriceInfo(-5, -7))}, {new EntityVillager.ListItemForEmeralds(Items.field_151106_aX, new EntityVillager.PriceInfo(-6, -10)), new EntityVillager.ListItemForEmeralds(Items.field_151105_aU, new EntityVillager.PriceInfo(1, 1))}}, {{new EntityVillager.EmeraldForItems(Items.field_151007_F, new EntityVillager.PriceInfo(15, 20)), new EntityVillager.EmeraldForItems(Items.field_151044_h, new EntityVillager.PriceInfo(16, 24)), new EntityVillager.ItemAndEmeraldToItem(Items.field_151115_aP, new EntityVillager.PriceInfo(6, 6), Items.field_179566_aV, new EntityVillager.PriceInfo(6, 6))}, {new EntityVillager.ListEnchantedItemForEmeralds(Items.field_151112_aM, new EntityVillager.PriceInfo(7, 8))}}, {{new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150325_L), new EntityVillager.PriceInfo(16, 22)), new EntityVillager.ListItemForEmeralds(Items.field_151097_aZ, new EntityVillager.PriceInfo(3, 4))}, {new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 0), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 1), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 2), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 3), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 4), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 5), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 6), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 7), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 8), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 9), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 10), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 11), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 12), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 13), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 14), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 15), new EntityVillager.PriceInfo(1, 2))}}, {{new EntityVillager.EmeraldForItems(Items.field_151007_F, new EntityVillager.PriceInfo(15, 20)), new EntityVillager.ListItemForEmeralds(Items.field_151032_g, new EntityVillager.PriceInfo(-12, -8))}, {new EntityVillager.ListItemForEmeralds(Items.field_151031_f, new EntityVillager.PriceInfo(2, 3)), new EntityVillager.ItemAndEmeraldToItem(Item.func_150898_a(Blocks.field_150351_n), new EntityVillager.PriceInfo(10, 10), Items.field_151145_ak, new EntityVillager.PriceInfo(6, 10))}}}, {{{new EntityVillager.EmeraldForItems(Items.field_151121_aF, new EntityVillager.PriceInfo(24, 36)), new EntityVillager.ListEnchantedBookForEmeralds()}, {new EntityVillager.EmeraldForItems(Items.field_151122_aG, new EntityVillager.PriceInfo(8, 10)), new EntityVillager.ListItemForEmeralds(Items.field_151111_aL, new EntityVillager.PriceInfo(10, 12)), new EntityVillager.ListItemForEmeralds(Item.func_150898_a(Blocks.field_150342_ Line truncated
private static final String __OBFID = "CL_00001707";
@@ -540,6 +541,7 @@
private void func_175554_cu()
{
+ //TODO: Hook into VillagerRegistry
EntityVillager.ITradeList[][][] aitradelist = field_175561_bA[this.func_70946_n()];
if (this.field_175563_bv != 0 && this.field_175562_bw != 0)
@@ -648,6 +650,7 @@
}
}
+ //TODO: Hook into VillagerRegistry to get name
if (s1 != null)
{
ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("entity.Villager." + s1, new Object[0]);
@@ -710,7 +713,7 @@
public IEntityLivingData func_180482_a(DifficultyInstance p_180482_1_, IEntityLivingData p_180482_2_)
{
p_180482_2_ = super.func_180482_a(p_180482_1_, p_180482_2_);
- this.func_70938_b(this.field_70170_p.field_73012_v.nextInt(5));
+ net.minecraftforge.fml.common.registry.VillagerRegistry.setRandomProfession(this, this.field_70170_p.field_73012_v);
this.func_175552_ct();
return p_180482_2_;
}
@@ -1,41 +0,0 @@
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayer.java
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayer.java
@@ -200,6 +200,7 @@
public void func_70071_h_()
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPreTick(this);
this.field_70145_X = this.func_175149_v();
if (this.func_175149_v())
@@ -344,6 +345,7 @@
{
this.func_70107_b(d3, this.field_70163_u, d4);
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPostTick(this);
}
public int func_82145_z()
@@ -2139,6 +2141,22 @@
this.field_175153_bG = p_175150_1_;
}
+ /**
+ * Opens a GUI with this player, uses FML's IGuiHandler system.
+ * Allows for extension by modders.
+ *
+ * @param mod The mod trying to open a GUI
+ * @param modGuiId GUI ID
+ * @param world Current World
+ * @param x Passed directly to IGuiHandler, data meaningless Typically world X position
+ * @param y Passed directly to IGuiHandler, data meaningless Typically world Y position
+ * @param z Passed directly to IGuiHandler, data meaningless Typically world Z position
+ */
+ public void openGui(Object mod, int modGuiId, World world, int x, int y, int z)
+ {
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z);
+ }
+
public static enum EnumChatVisibility
{
FULL(0, "options.chat.visibility.full"),
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/inventory/SlotCrafting.java
+++ ../src-work/minecraft/net/minecraft/inventory/SlotCrafting.java
@@ -113,6 +113,7 @@
public void func_82870_a(EntityPlayer p_82870_1_, ItemStack p_82870_2_)
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerCraftingEvent(p_82870_1_, p_82870_2_, field_75239_a);
this.func_75208_c(p_82870_2_);
ItemStack[] aitemstack = CraftingManager.func_77594_a().func_180303_b(this.field_75239_a, p_82870_1_.field_70170_p);
@@ -1,23 +0,0 @@
--- ../src-base/minecraft/net/minecraft/item/Item.java
+++ ../src-work/minecraft/net/minecraft/item/Item.java
@@ -47,8 +47,8 @@
public class Item
{
- public static final RegistryNamespaced field_150901_e = new RegistryNamespaced();
- private static final Map field_179220_a = Maps.newHashMap();
+ public static final RegistryNamespaced field_150901_e = net.minecraftforge.fml.common.registry.GameData.getItemRegistry();
+ private static final Map field_179220_a = net.minecraftforge.fml.common.registry.GameData.getBlockItemMap();
protected static final UUID field_111210_e = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF");
private CreativeTabs field_77701_a;
protected static Random field_77697_d = new Random();
@@ -61,6 +61,9 @@
private String field_77774_bZ;
private static final String __OBFID = "CL_00000041";
+ public final net.minecraftforge.fml.common.registry.RegistryDelegate<Item> delegate =
+ ((net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry)field_150901_e).getDelegate(this, Item.class);
+
public static int func_150891_b(Item p_150891_0_)
{
return p_150891_0_ == null ? 0 : field_150901_e.func_148757_b(p_150891_0_);
@@ -1,50 +0,0 @@
--- ../src-base/minecraft/net/minecraft/item/ItemStack.java
+++ ../src-work/minecraft/net/minecraft/item/ItemStack.java
@@ -52,6 +52,7 @@
private boolean field_179551_k;
private static final String __OBFID = "CL_00000043";
+ private net.minecraftforge.fml.common.registry.RegistryDelegate<Item> delegate;
public ItemStack(Block p_i1876_1_)
{
this(p_i1876_1_, 1);
@@ -83,7 +84,7 @@
this.field_179553_i = false;
this.field_179550_j = null;
this.field_179551_k = false;
- this.field_151002_e = p_i1881_1_;
+ this.func_150996_a(p_i1881_1_);
this.field_77994_a = p_i1881_2_;
this.field_77991_e = p_i1881_3_;
@@ -123,7 +124,7 @@
public Item func_77973_b()
{
- return this.field_151002_e;
+ return this.delegate != null ? this.delegate.get() : null;
}
public boolean func_179546_a(EntityPlayer p_179546_1_, World p_179546_2_, BlockPos p_179546_3_, EnumFacing p_179546_4_, float p_179546_5_, float p_179546_6_, float p_179546_7_)
@@ -172,11 +173,11 @@
{
if (p_77963_1_.func_150297_b("id", 8))
{
- this.field_151002_e = Item.func_111206_d(p_77963_1_.func_74779_i("id"));
+ this.func_150996_a(Item.func_111206_d(p_77963_1_.func_74779_i("id")));
}
else
{
- this.field_151002_e = Item.func_150899_d(p_77963_1_.func_74765_d("id"));
+ this.func_150996_a(Item.func_150899_d(p_77963_1_.func_74765_d("id")));
}
this.field_77994_a = p_77963_1_.func_74771_c("Count");
@@ -870,6 +871,7 @@
public void func_150996_a(Item p_150996_1_)
{
+ this.delegate = p_150996_1_ != null ? p_150996_1_.delegate : null;
this.field_151002_e = p_150996_1_;
}
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/network/NetworkSystem.java
+++ ../src-work/minecraft/net/minecraft/network/NetworkSystem.java
@@ -110,7 +110,7 @@
;
}
- p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new PingResponseHandler(NetworkSystem.this)).addLast("splitter", new MessageDeserializer2()).addLast("decoder", new MessageDeserializer(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new MessageSerializer2()).addLast("encoder", new MessageSerializer(EnumPacketDirection.CLIENTBOUND));
+ p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.READ_TIMEOUT)).addLast("legacy_query", new PingResponseHandler(NetworkSystem.this)).addLast("splitter", new MessageDeserializer2()).addLast("decoder", new MessageDeserializer(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new MessageSerializer2()).addLast("encoder", new MessageSerializer(EnumPacketDirection.CLIENTBOUND));
NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.SERVERBOUND);
NetworkSystem.this.field_151272_f.add(networkmanager);
p_initChannel_1_.pipeline().addLast("packet_handler", networkmanager);
@@ -1,18 +0,0 @@
--- ../src-base/minecraft/net/minecraft/network/ServerStatusResponse.java
+++ ../src-work/minecraft/net/minecraft/network/ServerStatusResponse.java
@@ -233,6 +233,7 @@
serverstatusresponse.func_151320_a(JsonUtils.func_151200_h(jsonobject, "favicon"));
}
+ net.minecraftforge.fml.client.FMLClientHandler.instance().captureAdditionalData(serverstatusresponse, jsonobject);
return serverstatusresponse;
}
@@ -260,6 +261,7 @@
jsonobject.addProperty("favicon", p_serialize_1_.func_151316_d());
}
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.enhanceStatusQuery(jsonobject);
return jsonobject;
}
@@ -1,14 +0,0 @@
--- ../src-base/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java
+++ ../src-work/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java
@@ -46,7 +46,11 @@
public void func_148840_b(PacketBuffer p_148840_1_) throws IOException
{
p_148840_1_.func_180714_a(this.field_149172_a);
+ synchronized(this) { //This may be access multiple times, from multiple threads, lets be safe.
+ this.field_149171_b.markReaderIndex();
p_148840_1_.writeBytes((ByteBuf)this.field_149171_b);
+ this.field_149171_b.resetReaderIndex();
+ }
}
public void func_180734_a(INetHandlerPlayClient p_180734_1_)
@@ -1,115 +0,0 @@
--- ../src-base/minecraft/net/minecraft/server/MinecraftServer.java
+++ ../src-work/minecraft/net/minecraft/server/MinecraftServer.java
@@ -399,7 +399,7 @@
public void func_71260_j()
{
- if (!this.field_71290_O)
+ if (!this.field_71290_O && net.minecraftforge.fml.common.Loader.instance().hasReachedState(net.minecraftforge.fml.common.LoaderState.SERVER_STARTED) && !field_71316_v) // make sure the save is valid and we don't save twice
{
field_147145_h.info("Stopping server");
@@ -456,6 +456,7 @@
{
if (this.func_71197_b())
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStarted();
this.field_175591_ab = func_130071_aq();
long i = 0L;
this.field_147147_p.func_151315_a(new ChatComponentText(this.field_71286_C));
@@ -500,12 +501,20 @@
Thread.sleep(Math.max(1L, 50L - i));
this.field_71296_Q = true;
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStopping();
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
}
else
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
this.func_71228_a((CrashReport)null);
}
}
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
+ {
+ // ignore silently
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
+ }
catch (Throwable throwable1)
{
field_147145_h.error("Encountered an unexpected exception", throwable1);
@@ -531,6 +540,7 @@
field_147145_h.error("We were unable to save this crash report to disk.");
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
this.func_71228_a(crashreport);
}
finally
@@ -546,6 +556,8 @@
}
finally
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStopped();
+ this.field_71316_v = true;
this.func_71240_o();
}
}
@@ -591,6 +603,7 @@
public void func_71217_p()
{
long i = System.nanoTime();
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreServerTick();
++this.field_71315_w;
if (this.field_71295_T)
@@ -644,6 +657,7 @@
this.field_71304_b.func_76319_b();
this.field_71304_b.func_76319_b();
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostServerTick();
}
public void func_71190_q()
@@ -657,7 +671,7 @@
{
try
{
- ((FutureTask)this.field_175589_i.poll()).run();
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_175589_i.poll()));
}
catch (Throwable throwable2)
{
@@ -686,6 +700,7 @@
}
this.field_71304_b.func_76320_a("tick");
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreWorldTick(worldserver);
CrashReport crashreport;
try
@@ -710,6 +725,7 @@
throw new ReportedException(crashreport);
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostWorldTick(worldserver);
this.field_71304_b.func_76319_b();
this.field_71304_b.func_76320_a("tracker");
worldserver.func_73039_n().func_72788_a();
@@ -741,6 +757,7 @@
public void func_71256_s()
{
+ net.minecraftforge.fml.common.StartupQuery.reset();
this.field_175590_aa = new Thread(this, "Server thread");
this.field_175590_aa.start();
}
@@ -787,7 +804,7 @@
public String getServerModName()
{
- return "vanilla";
+ return net.minecraftforge.fml.common.FMLCommonHandler.instance().getModName();
}
public CrashReport func_71230_b(CrashReport p_71230_1_)
@@ -1,23 +0,0 @@
--- ../src-base/minecraft/net/minecraft/server/integrated/IntegratedServer.java
+++ ../src-work/minecraft/net/minecraft/server/integrated/IntegratedServer.java
@@ -144,9 +144,10 @@
this.func_71245_h(true);
field_147148_h.info("Generating keypair");
this.func_71253_a(CryptManager.func_75891_b());
+ if (!net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerAboutToStart(this)) return false;
this.func_71247_a(this.func_71270_I(), this.func_71221_J(), this.field_71350_m.func_77160_d(), this.field_71350_m.func_77165_h(), this.field_71350_m.func_82749_j());
this.func_71205_p(this.func_71214_G() + " - " + this.field_71305_c[0].func_72912_H().func_76065_j());
- return true;
+ return net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStarting(this);
}
public void func_71217_p()
@@ -171,7 +172,7 @@
{
try
{
- ((FutureTask)this.field_175589_i.poll()).run();
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_175589_i.poll()));
}
catch (Throwable throwable)
{
@@ -1,50 +0,0 @@
--- ../src-base/minecraft/net/minecraft/server/management/PlayerProfileCache.java
+++ ../src-work/minecraft/net/minecraft/server/management/PlayerProfileCache.java
@@ -204,26 +204,12 @@
{
List list = null;
BufferedReader bufferedreader = null;
- label64:
{
try
{
bufferedreader = Files.newReader(this.field_152665_g, Charsets.UTF_8);
list = (List)this.field_152660_b.fromJson(bufferedreader, field_152666_h);
- break label64;
- }
- catch (FileNotFoundException filenotfoundexception)
- {
- ;
- }
- finally
- {
- IOUtils.closeQuietly(bufferedreader);
- }
- return;
- }
-
if (list != null)
{
this.field_152661_c.clear();
@@ -242,6 +228,20 @@
}
}
}
+ }
+ catch (FileNotFoundException filenotfoundexception)
+ {
+ ;
+ }
+ catch (com.google.gson.JsonParseException parsefail)
+ {
+ // No op - the cache can quietly rebuild if it's junk
+ }
+ finally
+ {
+ IOUtils.closeQuietly(bufferedreader);
+ }
+ }
}
public void func_152658_c()
@@ -1,76 +0,0 @@
--- ../src-base/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
+++ ../src-work/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
@@ -103,7 +103,7 @@
this.field_72405_c = 8;
}
- public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_)
+ public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver)
{
GameProfile gameprofile = p_72355_2_.func_146103_bH();
PlayerProfileCache playerprofilecache = this.field_72400_f.func_152358_ax();
@@ -125,7 +125,7 @@
WorldInfo worldinfo = worldserver.func_72912_H();
BlockPos blockpos = worldserver.func_175694_M();
this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, worldserver);
- NetHandlerPlayServer nethandlerplayserver = new NetHandlerPlayServer(this.field_72400_f, p_72355_1_, p_72355_2_);
+ p_72355_2_.field_71135_a = nethandlerplayserver;
nethandlerplayserver.func_147359_a(new S01PacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.func_177502_q(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo")));
nethandlerplayserver.func_147359_a(new S3FPacketCustomPayload("MC|Brand", (new PacketBuffer(Unpooled.buffer())).func_180714_a(this.func_72365_p().getServerModName())));
nethandlerplayserver.func_147359_a(new S41PacketServerDifficulty(worldinfo.func_176130_y(), worldinfo.func_176123_z()));
@@ -168,6 +168,7 @@
p_72355_2_.func_71116_b();
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedIn(p_72355_2_);
if (nbttagcompound != null && nbttagcompound.func_150297_b("Riding", 10))
{
Entity entity = EntityList.func_75615_a(nbttagcompound.func_74775_l("Riding"), worldserver);
@@ -281,8 +282,23 @@
return nbttagcompound1;
}
+ public NBTTagCompound getPlayerNBT(EntityPlayerMP player)
+ {
+ // Hacky method to allow loading the NBT for a player prior to login
+ NBTTagCompound nbttagcompound = this.field_72400_f.field_71305_c[0].func_72912_H().func_76072_h();
+ if (player.func_70005_c_().equals(this.field_72400_f.func_71214_G()) && nbttagcompound != null)
+ {
+ return nbttagcompound;
+ }
+ else
+ {
+ return ((net.minecraft.world.storage.SaveHandler)this.field_72412_k).getPlayerNBT(player);
+ }
+ }
protected void func_72391_b(EntityPlayerMP p_72391_1_)
{
+ if (p_72391_1_.field_71135_a == null) return;
+
this.field_72412_k.func_75753_a(p_72391_1_);
StatisticsFile statisticsfile = (StatisticsFile)this.field_148547_k.get(p_72391_1_.func_110124_au());
@@ -315,6 +331,7 @@
public void func_72367_e(EntityPlayerMP p_72367_1_)
{
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedOut(p_72367_1_);
p_72367_1_.func_71029_a(StatList.field_75947_j);
this.func_72391_b(p_72367_1_);
WorldServer worldserver = p_72367_1_.func_71121_q();
@@ -473,6 +490,7 @@
this.field_177454_f.put(entityplayermp1.func_110124_au(), entityplayermp1);
entityplayermp1.func_71116_b();
entityplayermp1.func_70606_j(entityplayermp1.func_110143_aJ());
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerRespawnEvent(entityplayermp1);
return entityplayermp1;
}
@@ -498,6 +516,7 @@
PotionEffect potioneffect = (PotionEffect)iterator.next();
p_72356_1_.field_71135_a.func_147359_a(new S1DPacketEntityEffect(p_72356_1_.func_145782_y(), potioneffect));
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerChangedDimensionEvent(p_72356_1_, j, p_72356_2_);
}
public void func_82448_a(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_)
@@ -1,20 +0,0 @@
--- ../src-base/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java
+++ ../src-work/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java
@@ -62,7 +62,7 @@
this.func_147326_c();
}
- if (this.field_147336_h++ == 600)
+ if (this.field_147336_h++ == net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.LOGIN_TIMEOUT)
{
this.func_147322_a("Took too long to log in");
}
@@ -113,7 +113,7 @@
}
this.field_147333_a.func_179290_a(new S02PacketLoginSuccess(this.field_147337_i));
- this.field_147327_f.func_71203_ab().func_72355_a(this.field_147333_a, this.field_147327_f.func_71203_ab().func_148545_a(this.field_147337_i));
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.fmlServerHandshake(this.field_147327_f.func_71203_ab(), this.field_147333_a, this.field_147327_f.func_71203_ab().func_148545_a(this.field_147337_i));
}
}
@@ -1,40 +0,0 @@
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntity.java
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntity.java
@@ -89,9 +89,10 @@
{
TileEntity tileentity = null;
+ Class oclass = null;
try
{
- Class oclass = (Class)field_145855_i.get(p_145827_0_.func_74779_i("id"));
+ oclass = (Class)field_145855_i.get(p_145827_0_.func_74779_i("id"));
if (oclass != null)
{
@@ -109,7 +110,17 @@
}
else
{
+ try
+ {
field_145852_a.warn("Skipping BlockEntity with id " + p_145827_0_.func_74779_i("id"));
+ }
+ catch (Exception ex)
+ {
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, ex,
+ "A TileEntity %s(%s) has thrown an exception during loading, its state cannot be restored. Report this to the mod author",
+ p_145827_0_.func_74779_i("id"), oclass.getName());
+ tileentity = null;
+ }
}
return tileentity;
@@ -141,7 +152,6 @@
}
}
- @SideOnly(Side.CLIENT)
public double func_145835_a(double p_145835_1_, double p_145835_3_, double p_145835_5_)
{
double d3 = (double)this.field_174879_c.func_177958_n() + 0.5D - p_145835_1_;
@@ -1,19 +0,0 @@
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
@@ -348,7 +348,15 @@
}
}
- return item instanceof ItemTool && ((ItemTool)item).func_77861_e().equals("WOOD") ? 200 : (item instanceof ItemSword && ((ItemSword)item).func_150932_j().equals("WOOD") ? 200 : (item instanceof ItemHoe && ((ItemHoe)item).func_77842_f().equals("WOOD") ? 200 : (item == Items.field_151055_y ? 100 : (item == Items.field_151044_h ? 1600 : (item == Items.field_151129_at ? 20000 : (item == Item.func_150898_a(Blocks.field_150345_g) ? 100 : (item == Items.field_151072_bj ? 2400 : 0)))))));
+ if (item instanceof ItemTool && ((ItemTool)item).func_77861_e().equals("WOOD")) return 200;
+ if (item instanceof ItemSword && ((ItemSword)item).func_150932_j().equals("WOOD")) return 200;
+ if (item instanceof ItemHoe && ((ItemHoe)item).func_77842_f().equals("WOOD")) return 200;
+ if (item == Items.field_151055_y) return 100;
+ if (item == Items.field_151044_h) return 1600;
+ if (item == Items.field_151129_at) return 20000;
+ if (item == Item.func_150898_a(Blocks.field_150345_g)) return 100;
+ if (item == Items.field_151072_bj) return 2400;
+ return net.minecraftforge.fml.common.registry.GameRegistry.getFuelValue(p_145952_0_);
}
}
@@ -1,11 +0,0 @@
--- ../src-base/minecraft/net/minecraft/util/MessageSerializer.java
+++ ../src-work/minecraft/net/minecraft/util/MessageSerializer.java
@@ -49,7 +49,7 @@
{
if (p_encode_2_ instanceof S0CPacketSpawnPlayer)
{
- p_encode_2_ = p_encode_2_;
+ //p_encode_2_ = p_encode_2_; FML: Kill warning
}
p_encode_2_.func_148840_b(packetbuffer);
@@ -1,26 +0,0 @@
--- ../src-base/minecraft/net/minecraft/util/ResourceLocation.java
+++ ../src-work/minecraft/net/minecraft/util/ResourceLocation.java
@@ -1,7 +1,5 @@
package net.minecraft.util;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.Validate;
public class ResourceLocation
@@ -22,7 +20,6 @@
this(0, func_177516_a(p_i1293_1_));
}
- @SideOnly(Side.CLIENT)
public ResourceLocation(String p_i1292_1_, String p_i1292_2_)
{
this(0, new String[] {p_i1292_1_, p_i1292_2_});
@@ -51,7 +48,6 @@
return this.field_110625_b;
}
- @SideOnly(Side.CLIENT)
public String func_110624_b()
{
return this.field_110626_a;
@@ -1,64 +0,0 @@
--- ../src-base/minecraft/net/minecraft/util/StringTranslate.java
+++ ../src-work/minecraft/net/minecraft/util/StringTranslate.java
@@ -18,16 +18,38 @@
{
private static final Pattern field_111053_a = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]");
private static final Splitter field_135065_b = Splitter.on('=').limit(2);
+ private final Map field_74816_c;
private static StringTranslate field_74817_a = new StringTranslate();
- private final Map field_74816_c = Maps.newHashMap();
private long field_150511_e;
private static final String __OBFID = "CL_00001212";
public StringTranslate()
{
+ InputStream inputstream = StringTranslate.class.getResourceAsStream("/assets/minecraft/lang/en_US.lang");
+ field_74816_c = Maps.newHashMap();
+ inject(this, inputstream);
+ }
+
+ public static void inject(InputStream inputstream)
+ {
+ inject(field_74817_a, inputstream);
+ }
+
+ private static void inject(StringTranslate inst, InputStream inputstream)
+ {
+ java.util.HashMap<String, String> map = parseLangFile(inputstream);
+ inst.field_74816_c.putAll(map);
+ inst.field_150511_e = System.currentTimeMillis();
+ }
+
+ public static java.util.HashMap<String,String> parseLangFile(InputStream inputstream)
+ {
+ java.util.HashMap<String,String> table = Maps.newHashMap();
try
{
- InputStream inputstream = StringTranslate.class.getResourceAsStream("/assets/minecraft/lang/en_US.lang");
+ inputstream = net.minecraftforge.fml.common.FMLCommonHandler.instance().loadLanguage(table, inputstream);
+ if (inputstream == null) return table;
+
Iterator iterator = IOUtils.readLines(inputstream, Charsets.UTF_8).iterator();
while (iterator.hasNext())
@@ -42,17 +64,17 @@
{
String s1 = astring[0];
String s2 = field_111053_a.matcher(astring[1]).replaceAll("%$1s");
- this.field_74816_c.put(s1, s2);
+ table.put(s1, s2);
}
}
}
- this.field_150511_e = System.currentTimeMillis();
}
- catch (IOException ioexception)
+ catch (Exception ioexception)
{
;
}
+ return table;
}
static StringTranslate func_74808_a()
@@ -1,29 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/World.java
+++ ../src-work/minecraft/net/minecraft/world/World.java
@@ -1626,8 +1626,6 @@
}
}
- this.field_147481_N = false;
-
if (!this.field_147483_b.isEmpty())
{
this.field_175730_i.removeAll(this.field_147483_b);
@@ -1635,6 +1633,8 @@
this.field_147483_b.clear();
}
+ this.field_147481_N = false; //FML Move below remove to prevent CMEs
+
this.field_72984_F.func_76318_c("pendingBlockEntities");
if (!this.field_147484_a.isEmpty())
@@ -3429,7 +3429,7 @@
@SideOnly(Side.CLIENT)
public double func_72919_O()
{
- return this.field_72986_A.func_76067_t() == WorldType.field_77138_c ? 0.0D : 63.0D;
+ return this.field_72986_A.func_76067_t().getHorizon(this);
}
public void func_175715_c(int p_175715_1_, BlockPos p_175715_2_, int p_175715_3_)
@@ -1,47 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/WorldProvider.java
+++ ../src-work/minecraft/net/minecraft/world/WorldProvider.java
@@ -52,26 +52,12 @@
protected void func_76572_b()
{
- WorldType worldtype = this.field_76579_a.func_72912_H().func_76067_t();
-
- if (worldtype == WorldType.field_77138_c)
- {
- FlatGeneratorInfo flatgeneratorinfo = FlatGeneratorInfo.func_82651_a(this.field_76579_a.func_72912_H().func_82571_y());
- this.field_76578_c = new WorldChunkManagerHell(BiomeGenBase.func_180276_a(flatgeneratorinfo.func_82648_a(), BiomeGenBase.field_180279_ad), 0.5F);
- }
- else if (worldtype == WorldType.field_180272_g)
- {
- this.field_76578_c = new WorldChunkManagerHell(BiomeGenBase.field_76772_c, 0.0F);
- }
- else
- {
- this.field_76578_c = new WorldChunkManager(this.field_76579_a);
- }
+ this.field_76578_c = field_76577_b.getChunkManager(field_76579_a);
}
public IChunkProvider func_76555_c()
{
- return (IChunkProvider)(this.field_76577_b == WorldType.field_77138_c ? new ChunkProviderFlat(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c) : (this.field_76577_b == WorldType.field_180272_g ? new ChunkProviderDebug(this.field_76579_a) : (this.field_76577_b == WorldType.field_180271_f ? new ChunkProviderGenerate(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c) : new ChunkProviderGenerate(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c))));
+ return field_76577_b.getChunkGenerator(field_76579_a, field_82913_c);
}
public boolean func_76566_a(int p_76566_1_, int p_76566_2_)
@@ -177,13 +163,13 @@
public int func_76557_i()
{
- return this.field_76577_b == WorldType.field_77138_c ? 4 : 64;
+ return this.field_76577_b.getMinimumSpawnHeight(this.field_76579_a);
}
@SideOnly(Side.CLIENT)
public double func_76565_k()
{
- return this.field_76577_b == WorldType.field_77138_c ? 1.0D : 0.03125D;
+ return this.field_76577_b.voidFadeMagnitude();
}
@SideOnly(Side.CLIENT)
@@ -1,56 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/WorldType.java
+++ ../src-work/minecraft/net/minecraft/world/WorldType.java
@@ -114,4 +114,53 @@
this.field_151361_l = true;
return this;
}
+
+ public net.minecraft.world.biome.WorldChunkManager getChunkManager(World world)
+ {
+ if (this == field_77138_c)
+ {
+ net.minecraft.world.gen.FlatGeneratorInfo flatgeneratorinfo = net.minecraft.world.gen.FlatGeneratorInfo.func_82651_a(world.func_72912_H().func_82571_y());
+ return new net.minecraft.world.biome.WorldChunkManagerHell(net.minecraft.world.biome.BiomeGenBase.func_180276_a(flatgeneratorinfo.func_82648_a(), net.minecraft.world.biome.BiomeGenBase.field_180279_ad), 0.5F);
+ }
+ else if (this == field_180272_g)
+ {
+ return new net.minecraft.world.biome.WorldChunkManagerHell(net.minecraft.world.biome.BiomeGenBase.field_76772_c, 0.0F);
+ }
+ else
+ {
+ return new net.minecraft.world.biome.WorldChunkManager(world);
+ }
+ }
+
+ public net.minecraft.world.chunk.IChunkProvider getChunkGenerator(World world, String generatorOptions)
+ {
+ if (this == field_77138_c) return new net.minecraft.world.gen.ChunkProviderFlat(world, world.func_72905_C(), world.func_72912_H().func_76089_r(), generatorOptions);
+ if (this == field_180272_g) return new net.minecraft.world.gen.ChunkProviderDebug(world);
+ return new net.minecraft.world.gen.ChunkProviderGenerate(world, world.func_72905_C(), world.func_72912_H().func_76089_r(), generatorOptions);
+ }
+
+ public int getMinimumSpawnHeight(World world)
+ {
+ return this == field_77138_c ? 4 : 64;
+ }
+
+ public double getHorizon(World world)
+ {
+ return this == field_77138_c ? 0.0D : 63.0D;
+ }
+
+ public double voidFadeMagnitude()
+ {
+ return this == field_77138_c ? 1.0D : 0.03125D;
+ }
+
+ public boolean handleSlimeSpawnReduction(java.util.Random random, World world)
+ {
+ return this == field_77138_c ? random.nextInt(4) != 1 : false;
+ }
+
+ /**
+ * Called when 'Create New World' button is pressed before starting game
+ */
+ public void onGUICreateWorldPress() { }
}
@@ -1,41 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
+++ ../src-work/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
@@ -287,11 +287,20 @@
Entity entity = (Entity)iterator.next();
nbttagcompound1 = new NBTTagCompound();
+ try
+ {
if (entity.func_70039_c(nbttagcompound1))
{
p_75820_1_.func_177409_g(true);
nbttaglist1.func_74742_a(nbttagcompound1);
}
+ }
+ catch (Exception e)
+ {
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
+ "An Entity type %s has thrown an exception trying to write state. It will not persist. Report this to the mod author",
+ entity.getClass().getName());
+ }
}
}
@@ -303,8 +312,17 @@
{
TileEntity tileentity = (TileEntity)iterator.next();
nbttagcompound1 = new NBTTagCompound();
+ try
+ {
tileentity.func_145841_b(nbttagcompound1);
nbttaglist2.func_74742_a(nbttagcompound1);
+ }
+ catch (Exception e)
+ {
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
+ "A TileEntity type %s has throw an exception trying to write state. It will not persist. Report this to the mod author",
+ tileentity.getClass().getName());
+ }
}
p_75820_3_.func_74782_a("TileEntities", nbttaglist2);
@@ -1,10 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/gen/ChunkProviderServer.java
+++ ../src-work/minecraft/net/minecraft/world/gen/ChunkProviderServer.java
@@ -209,6 +209,7 @@
if (this.field_73246_d != null)
{
this.field_73246_d.func_73153_a(p_73153_1_, p_73153_2_, p_73153_3_);
+ net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(p_73153_2_, p_73153_3_, field_73251_h, field_73246_d, p_73153_1_);
chunk.func_76630_e();
}
}
@@ -1,22 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/gen/structure/StructureVillagePieces.java
+++ ../src-work/minecraft/net/minecraft/world/gen/structure/StructureVillagePieces.java
@@ -59,6 +59,8 @@
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.Field2.class, 3, MathHelper.func_76136_a(p_75084_0_, 2 + p_75084_1_, 4 + p_75084_1_ * 2)));
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.House2.class, 15, MathHelper.func_76136_a(p_75084_0_, 0, 1 + p_75084_1_)));
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.House3.class, 8, MathHelper.func_76136_a(p_75084_0_, 0 + p_75084_1_, 3 + p_75084_1_ * 2)));
+ net.minecraftforge.fml.common.registry.VillagerRegistry.addExtraVillageComponents(arraylist, p_75084_0_, p_75084_1_);
+
Iterator iterator = arraylist.iterator();
while (iterator.hasNext())
@@ -132,6 +134,10 @@
{
object = StructureVillagePieces.House3.func_175849_a(p_176065_0_, p_176065_2_, p_176065_3_, p_176065_4_, p_176065_5_, p_176065_6_, p_176065_7_, p_176065_8_);
}
+ else
+ {
+ object = net.minecraftforge.fml.common.registry.VillagerRegistry.getVillageComponent(p_176065_1_, p_176065_0_ , p_176065_2_, p_176065_3_, p_176065_4_, p_176065_5_, p_176065_6_, p_176065_7_, p_176065_8_);
+ }
return (StructureVillagePieces.Village)object;
}
@@ -1,39 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/storage/MapData.java
+++ ../src-work/minecraft/net/minecraft/world/storage/MapData.java
@@ -22,7 +22,7 @@
{
public int field_76201_a;
public int field_76199_b;
- public byte field_76200_c;
+ public int field_76200_c; //FML byte -> int
public byte field_76197_d;
public byte[] field_76198_e = new byte[16384];
public List field_76196_g = Lists.newArrayList();
@@ -46,7 +46,17 @@
public void func_76184_a(NBTTagCompound p_76184_1_)
{
- this.field_76200_c = p_76184_1_.func_74771_c("dimension");
+ net.minecraft.nbt.NBTBase dimension = p_76184_1_.func_74781_a("dimension");
+
+ if (dimension instanceof net.minecraft.nbt.NBTTagByte)
+ {
+ this.field_76200_c = ((net.minecraft.nbt.NBTTagByte)dimension).func_150290_f();
+ }
+ else
+ {
+ this.field_76200_c = ((net.minecraft.nbt.NBTTagInt)dimension).func_150287_d();
+ }
+
this.field_76201_a = p_76184_1_.func_74762_e("xCenter");
this.field_76199_b = p_76184_1_.func_74762_e("zCenter");
this.field_76197_d = p_76184_1_.func_74771_c("scale");
@@ -87,7 +97,7 @@
public void func_76187_b(NBTTagCompound p_76187_1_)
{
- p_76187_1_.func_74774_a("dimension", this.field_76200_c);
+ p_76187_1_.func_74768_a("dimension", this.field_76200_c);
p_76187_1_.func_74768_a("xCenter", this.field_76201_a);
p_76187_1_.func_74768_a("zCenter", this.field_76199_b);
p_76187_1_.func_74774_a("scale", this.field_76197_d);
@@ -1,89 +0,0 @@
--- ../src-base/minecraft/net/minecraft/world/storage/SaveHandler.java
+++ ../src-work/minecraft/net/minecraft/world/storage/SaveHandler.java
@@ -107,20 +107,29 @@
NBTTagCompound nbttagcompound;
NBTTagCompound nbttagcompound1;
+ WorldInfo worldInfo = null;
+
if (file1.exists())
{
try
{
nbttagcompound = CompressedStreamTools.func_74796_a(new FileInputStream(file1));
nbttagcompound1 = nbttagcompound.func_74775_l("Data");
- return new WorldInfo(nbttagcompound1);
+ worldInfo = new WorldInfo(nbttagcompound1);
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataLoad(this, worldInfo, nbttagcompound);
+ return worldInfo;
}
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
+ {
+ throw e;
+ }
catch (Exception exception1)
{
exception1.printStackTrace();
}
}
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().confirmBackupLevelDatUse(this);
file1 = new File(this.field_75770_b, "level.dat_old");
if (file1.exists())
@@ -129,7 +138,13 @@
{
nbttagcompound = CompressedStreamTools.func_74796_a(new FileInputStream(file1));
nbttagcompound1 = nbttagcompound.func_74775_l("Data");
- return new WorldInfo(nbttagcompound1);
+ worldInfo = new WorldInfo(nbttagcompound1);
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataLoad(this, worldInfo, nbttagcompound);
+ return worldInfo;
+ }
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
+ {
+ throw e;
}
catch (Exception exception)
{
@@ -146,6 +161,8 @@
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
nbttagcompound2.func_74782_a("Data", nbttagcompound1);
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataSave(this, p_75755_1_, nbttagcompound2);
+
try
{
File file1 = new File(this.field_75770_b, "level.dat_new");
@@ -184,6 +201,8 @@
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.func_74782_a("Data", nbttagcompound);
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataSave(this, p_75761_1_, nbttagcompound1);
+
try
{
File file1 = new File(this.field_75770_b, "level.dat_new");
@@ -301,4 +320,22 @@
{
return this.field_75767_f;
}
+
+ public NBTTagCompound getPlayerNBT(net.minecraft.entity.player.EntityPlayerMP player)
+ {
+ try
+ {
+ File file1 = new File(this.field_75771_c, player.func_110124_au().toString() + ".dat");
+
+ if (file1.exists() && file1.isFile())
+ {
+ return CompressedStreamTools.func_74796_a(new FileInputStream(file1));
+ }
+ }
+ catch (Exception exception)
+ {
+ field_151478_a.warn("Failed to load player data for " + player.func_70005_c_());
+ }
+ return null;
+ }
}
-1
View File
@@ -1 +0,0 @@
rootProject.name = 'fml'
@@ -1,55 +0,0 @@
package net.minecraftforge.fml.client;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
public class GuiIngameModOptions extends GuiScreen
{
private final GuiScreen parentScreen;
protected String title = "Mod Options";
private GuiModOptionList optionList;
public GuiIngameModOptions(GuiScreen parentScreen)
{
this.parentScreen = parentScreen;
}
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
this.optionList=new GuiModOptionList(this);
this.optionList.registerScrollButtons(this.buttonList, 7, 8);
this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, I18n.format("gui.done", new Object[0])));
}
@Override
protected void actionPerformed(GuiButton button)
{
if (button.enabled)
{
if (button.id == 200)
{
this.mc.gameSettings.saveOptions();
this.mc.displayGuiScreen(this.parentScreen);
}
}
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
// force a non-transparent background
this.drawDefaultBackground();
this.optionList.drawScreen(mouseX, mouseY, partialTicks);
this.drawCenteredString(this.fontRendererObj, this.title, this.width / 2, 15, 0xFFFFFF);
super.drawScreen(mouseX, mouseY, partialTicks);
}
FontRenderer getFontRenderer() {
return fontRendererObj;
}
}
@@ -1,452 +0,0 @@
/*
* The FML Forge Mod Loader suite.
* Copyright (C) 2012 cpw
*
* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.minecraftforge.fml.client;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.imageio.ImageIO;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StringUtils;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.ModContainer.Disableable;
import org.apache.logging.log4j.Level;
import org.lwjgl.opengl.GL11;
import com.google.common.base.Strings;
/**
* @author cpw
*
*/
public class GuiModList extends GuiScreen
{
private enum SortType implements Comparator<ModContainer>
{
NORMAL(24),
A_TO_Z(25){ @Override protected int compare(String name1, String name2){ return name1.compareTo(name2); }},
Z_TO_A(26){ @Override protected int compare(String name1, String name2){ return name2.compareTo(name1); }};
private int buttonID;
private SortType(int buttonID)
{
this.buttonID = buttonID;
}
public static SortType getTypeForButton(GuiButton button)
{
for (SortType t : values())
{
if (t.buttonID == button.id)
{
return t;
}
}
return null;
}
protected int compare(String name1, String name2){ return 0; }
@Override
public int compare(ModContainer o1, ModContainer o2)
{
String name1 = StringUtils.stripControlCodes(o1.getName()).toLowerCase();
String name2 = StringUtils.stripControlCodes(o2.getName()).toLowerCase();
return compare(name1, name2);
}
}
private GuiScreen mainMenu;
private GuiSlotModList modList;
private int selected = -1;
private ModContainer selectedMod;
private int listWidth;
private ArrayList<ModContainer> mods;
private GuiButton configModButton;
private GuiButton disableModButton;
private ResourceLocation cachedLogo;
private Dimension cachedLogoDimensions;
private int buttonMargin = 1;
private int numButtons = SortType.values().length;
private String lastFilterText = "";
private GuiTextField search;
private boolean sorted = false;
private SortType sortType = SortType.NORMAL;
/**
* @param mainMenu
*/
public GuiModList(GuiScreen mainMenu)
{
this.mainMenu = mainMenu;
this.mods = new ArrayList<ModContainer>();
FMLClientHandler.instance().addSpecialModEntries(mods);
// Add child mods to their parent's list
for (ModContainer mod : Loader.instance().getModList())
{
if (mod.getMetadata() != null && mod.getMetadata().parentMod == null && !Strings.isNullOrEmpty(mod.getMetadata().parent))
{
String parentMod = mod.getMetadata().parent;
ModContainer parentContainer = Loader.instance().getIndexedModList().get(parentMod);
if (parentContainer != null)
{
mod.getMetadata().parentMod = parentContainer;
parentContainer.getMetadata().childMods.add(mod);
continue;
}
}
else if (mod.getMetadata() != null && mod.getMetadata().parentMod != null)
{
continue;
}
mods.add(mod);
}
}
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
for (ModContainer mod : mods)
{
listWidth = Math.max(listWidth,getFontRenderer().getStringWidth(mod.getName()) + 10);
listWidth = Math.max(listWidth,getFontRenderer().getStringWidth(mod.getVersion()) + 10);
}
listWidth = Math.min(listWidth, 150);
this.modList = new GuiSlotModList(this, mods, listWidth);
this.modList.registerScrollButtons(this.buttonList, 7, 8);
this.buttonList.add(new GuiButton(6, ((modList.right + this.width) / 2) - 100, this.height - 38, I18n.format("gui.done")));
configModButton = new GuiButton(20, 10, this.height - 49, this.listWidth, 20, "Config");
disableModButton = new GuiButton(21, 10, this.height - 27, this.listWidth, 20, "Disable");
this.buttonList.add(configModButton);
this.buttonList.add(disableModButton);
search = new GuiTextField(0, getFontRenderer(), 12, modList.bottom + 17, modList.listWidth - 4, 14);
search.setFocused(true);
search.setCanLoseFocus(true);
int width = (modList.listWidth / numButtons);
int x = 10, y = 10;
GuiButton normalSort = new GuiButton(SortType.NORMAL.buttonID, x, y, width - buttonMargin, 20, I18n.format("fml.menu.mods.normal"));
normalSort.enabled = false;
buttonList.add(normalSort);
x += width + buttonMargin;
buttonList.add(new GuiButton(SortType.A_TO_Z.buttonID, x, y, width - buttonMargin, 20, "A-Z"));
x += width + buttonMargin;
buttonList.add(new GuiButton(SortType.Z_TO_A.buttonID, x, y, width - buttonMargin, 20, "Z-A"));
}
@Override
protected void mouseClicked(int x, int y, int button) throws IOException
{
super.mouseClicked(x, y, button);
search.mouseClicked(x, y, button);
if (button == 1 && x >= search.xPosition && x < search.xPosition + search.width && y >= search.yPosition && y < search.yPosition + search.height) {
search.setText("");
}
}
@Override
protected void keyTyped(char c, int keyCode) throws IOException
{
super.keyTyped(c, keyCode);
search.textboxKeyTyped(c, keyCode);
}
@Override
public void updateScreen()
{
super.updateScreen();
search.updateCursorCounter();
if (!search.getText().equals(lastFilterText))
{
reloadMods();
sorted = false;
}
if (!sorted)
{
reloadMods();
Collections.sort(mods, sortType);
selected = modList.selectedIndex = mods.indexOf(selectedMod);
sorted = true;
}
}
private void reloadMods()
{
ArrayList<ModContainer> mods = modList.getMods();
mods.clear();
for (ModContainer m : Loader.instance().getActiveModList())
{
// If it passes the filter, and is not a child mod
if (m.getName().toLowerCase().contains(search.getText().toLowerCase()) && m.getMetadata().parentMod == null)
{
mods.add(m);
}
}
this.mods = mods;
lastFilterText = search.getText();
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button.enabled)
{
SortType type = SortType.getTypeForButton(button);
if (type != null)
{
for (GuiButton b : (List<GuiButton>) buttonList)
{
if (SortType.getTypeForButton(b) != null)
{
b.enabled = true;
}
}
button.enabled = false;
sorted = false;
sortType = type;
this.mods = modList.getMods();
}
else
{
switch (button.id)
{
case 6:
this.mc.displayGuiScreen(this.mainMenu);
return;
case 20:
try
{
IModGuiFactory guiFactory = FMLClientHandler.instance().getGuiFactoryFor(selectedMod);
GuiScreen newScreen = guiFactory.mainConfigGuiClass().getConstructor(GuiScreen.class).newInstance(this);
this.mc.displayGuiScreen(newScreen);
}
catch (Exception e)
{
FMLLog.log(Level.ERROR, e, "There was a critical issue trying to build the config GUI for %s", selectedMod.getModId());
}
return;
}
}
}
super.actionPerformed(button);
}
public int drawLine(String line, int offset, int shifty)
{
this.fontRendererObj.drawString(line, offset, shifty, 0xd7edea);
return shifty + 10;
}
@Override
public void drawScreen(int p_571_1_, int p_571_2_, float p_571_3_)
{
this.modList.drawScreen(p_571_1_, p_571_2_, p_571_3_);
this.drawCenteredString(this.fontRendererObj, "Mod List", this.width / 2, 16, 0xFFFFFF);
int offset = this.listWidth + 20;
if (selectedMod != null)
{
GL11.glEnable(GL11.GL_BLEND);
if (!selectedMod.getMetadata().autogenerated)
{
configModButton.visible = true;
disableModButton.visible = true;
disableModButton.packedFGColour = 0xFF3377;
configModButton.enabled = false;
int shifty = 35;
String logoFile = selectedMod.getMetadata().logoFile;
if (!logoFile.isEmpty())
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
TextureManager tm = mc.getTextureManager();
IResourcePack pack = FMLClientHandler.instance().getResourcePackFor(selectedMod.getModId());
try
{
if (cachedLogo == null)
{
BufferedImage logo = null;
if (pack!=null)
{
logo = pack.getPackImage();
}
else
{
InputStream logoResource = getClass().getResourceAsStream(logoFile);
if (logoResource != null)
{
logo = ImageIO.read(logoResource);
}
}
if (logo != null)
{
cachedLogo = tm.getDynamicTextureLocation("modlogo", new DynamicTexture(logo));
cachedLogoDimensions = new Dimension(logo.getWidth(), logo.getHeight());
}
}
if (cachedLogo != null)
{
this.mc.renderEngine.bindTexture(cachedLogo);
double scaleX = cachedLogoDimensions.width / 200.0;
double scaleY = cachedLogoDimensions.height / 65.0;
double scale = 1.0;
if (scaleX > 1 || scaleY > 1)
{
scale = 1.0 / Math.max(scaleX, scaleY);
}
cachedLogoDimensions.width *= scale;
cachedLogoDimensions.height *= scale;
int top = 32;
Tessellator tess = Tessellator.getInstance();
WorldRenderer world = tess.getWorldRenderer();
world.startDrawingQuads();
world.addVertexWithUV(offset, top + cachedLogoDimensions.height, zLevel, 0, 1);
world.addVertexWithUV(offset + cachedLogoDimensions.width, top + cachedLogoDimensions.height, zLevel, 1, 1);
world.addVertexWithUV(offset + cachedLogoDimensions.width, top, zLevel, 1, 0);
world.addVertexWithUV(offset, top, zLevel, 0, 0);
tess.draw();
shifty += 65;
}
}
catch (IOException e)
{
;
}
}
this.fontRendererObj.drawStringWithShadow(selectedMod.getMetadata().name, offset, shifty, 0xFFFFFF);
shifty += 12;
shifty = drawLine(String.format("Version: %s (%s)", selectedMod.getDisplayVersion(), selectedMod.getVersion()), offset, shifty);
shifty = drawLine(String.format("Mod ID: '%s' Mod State: %s", selectedMod.getModId(), Loader.instance().getModState(selectedMod)), offset, shifty);
if (!selectedMod.getMetadata().credits.isEmpty())
{
shifty = drawLine(String.format("Credits: %s", selectedMod.getMetadata().credits), offset, shifty);
}
shifty = drawLine(String.format("Authors: %s", selectedMod.getMetadata().getAuthorList()), offset, shifty);
shifty = drawLine(String.format("URL: %s", selectedMod.getMetadata().url), offset, shifty);
shifty = drawLine(selectedMod.getMetadata().childMods.isEmpty() ? "No child mods for this mod" : String.format("Child mods: %s", selectedMod.getMetadata().getChildModList()), offset, shifty);
int rightSide = this.width - offset - 20;
if (rightSide > 20)
{
this.getFontRenderer().drawSplitString(selectedMod.getMetadata().description, offset, shifty + 10, rightSide, 0xDDDDDD);
}
Disableable disableable = selectedMod.canBeDisabled();
if (disableable == Disableable.RESTART)
{
disableModButton.enabled = true;
disableModButton.visible = true;
disableModButton.packedFGColour = 0xFF3377;
}
else if (disableable == Disableable.YES)
{
disableModButton.enabled = true;
disableModButton.visible = true;
disableModButton.packedFGColour = 0;
}
else
{
disableModButton.packedFGColour = 0;
disableModButton.visible = true;
disableModButton.enabled = false;
}
IModGuiFactory guiFactory = FMLClientHandler.instance().getGuiFactoryFor(selectedMod);
if (guiFactory == null || guiFactory.mainConfigGuiClass() == null)
{
configModButton.visible = true;
configModButton.enabled = false;
}
else
{
configModButton.visible = true;
configModButton.enabled = true;
}
}
else
{
offset = ( this.listWidth + this.width ) / 2;
this.drawCenteredString(this.fontRendererObj, selectedMod.getName(), offset, 35, 0xFFFFFF);
this.drawCenteredString(this.fontRendererObj, String.format("Version: %s",selectedMod.getVersion()), offset, 45, 0xFFFFFF);
this.drawCenteredString(this.fontRendererObj, String.format("Mod State: %s",Loader.instance().getModState(selectedMod)), offset, 55, 0xFFFFFF);
this.drawCenteredString(this.fontRendererObj, "No mod information found", offset, 65, 0xDDDDDD);
this.drawCenteredString(this.fontRendererObj, "Ask your mod author to provide a mod mcmod.info file", offset, 75, 0xDDDDDD);
configModButton.visible = false;
disableModButton.visible = false;
}
GL11.glDisable(GL11.GL_BLEND);
}
else
{
configModButton.visible = false;
disableModButton.visible = false;
}
super.drawScreen(p_571_1_, p_571_2_, p_571_3_);
String text = I18n.format("fml.menu.mods.search");
int x = ((10 + modList.right) / 2) - (getFontRenderer().getStringWidth(text) / 2);
getFontRenderer().drawString(text, x, modList.bottom + 5, 0xFFFFFF);
search.drawTextBox();
}
Minecraft getMinecraftInstance()
{
return mc;
}
FontRenderer getFontRenderer()
{
return fontRendererObj;
}
public void selectModIndex(int index)
{
this.selected = index;
this.selectedMod = (index >= 0 && index <= mods.size()) ? mods.get(selected) : null;
cachedLogo = null;
}
public boolean modIndexSelected(int index)
{
return index == selected;
}
}
@@ -1,47 +0,0 @@
package net.minecraftforge.fml.client;
import net.minecraft.client.renderer.Tessellator;
public class GuiModOptionList extends GuiScrollingList {
private GuiIngameModOptions parent;
public GuiModOptionList(GuiIngameModOptions parent)
{
super(parent.mc, 150, parent.height, 32, parent.height - 65 + 4, 10, 35);
this.parent = parent;
}
@Override
protected int getSize()
{
return 1;
}
@Override
protected void elementClicked(int index, boolean doubleClick)
{
// TODO Auto-generated method stub
}
@Override
protected boolean isSelected(int index)
{
return false;
}
@Override
protected void drawBackground()
{
}
@Override
protected void drawSlot(int var1, int var2, int var3, int var4, Tessellator var5)
{
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("Test 1", listWidth - 10), this.left + 3 , var3 + 2, 0xFF2222);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("TEST 2", listWidth - 10), this.left + 3 , var3 + 12, 0xFF2222);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("DISABLED", listWidth - 10), this.left + 3 , var3 + 22, 0xFF2222);
}
}
@@ -1,458 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.client;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
public abstract class GuiScrollingList
{
private final Minecraft client;
protected final int listWidth;
protected final int listHeight;
protected final int top;
protected final int bottom;
protected final int right;
protected final int left;
protected final int slotHeight;
private int scrollUpActionId;
private int scrollDownActionId;
protected int mouseX;
protected int mouseY;
private float initialMouseClickY = -2.0F;
private float scrollFactor;
private float scrollDistance;
protected int selectedIndex = -1;
private long lastClickTime = 0L;
private boolean field_25123_p = true;
private boolean field_27262_q;
private int field_27261_r;
public GuiScrollingList(Minecraft client, int width, int height, int top, int bottom, int left, int entryHeight)
{
this.client = client;
this.listWidth = width;
this.listHeight = height;
this.top = top;
this.bottom = bottom;
this.slotHeight = entryHeight;
this.left = left;
this.right = width + this.left;
}
public void func_27258_a(boolean p_27258_1_)
{
this.field_25123_p = p_27258_1_;
}
protected void func_27259_a(boolean p_27259_1_, int p_27259_2_)
{
this.field_27262_q = p_27259_1_;
this.field_27261_r = p_27259_2_;
if (!p_27259_1_)
{
this.field_27261_r = 0;
}
}
protected abstract int getSize();
protected abstract void elementClicked(int index, boolean doubleClick);
protected abstract boolean isSelected(int index);
protected int getContentHeight()
{
return this.getSize() * this.slotHeight + this.field_27261_r;
}
protected abstract void drawBackground();
protected abstract void drawSlot(int var1, int var2, int var3, int var4, Tessellator var5);
protected void func_27260_a(int p_27260_1_, int p_27260_2_, Tessellator p_27260_3_) {}
protected void func_27255_a(int p_27255_1_, int p_27255_2_) {}
protected void func_27257_b(int p_27257_1_, int p_27257_2_) {}
public int func_27256_c(int p_27256_1_, int p_27256_2_)
{
int var3 = this.left + 1;
int var4 = this.left + this.listWidth - 7;
int var5 = p_27256_2_ - this.top - this.field_27261_r + (int)this.scrollDistance - 4;
int var6 = var5 / this.slotHeight;
return p_27256_1_ >= var3 && p_27256_1_ <= var4 && var6 >= 0 && var5 >= 0 && var6 < this.getSize() ? var6 : -1;
}
public void registerScrollButtons(@SuppressWarnings("rawtypes") List p_22240_1_, int p_22240_2_, int p_22240_3_)
{
this.scrollUpActionId = p_22240_2_;
this.scrollDownActionId = p_22240_3_;
}
private void applyScrollLimits()
{
int var1 = this.getContentHeight() - (this.bottom - this.top - 4);
if (var1 < 0)
{
var1 /= 2;
}
if (this.scrollDistance < 0.0F)
{
this.scrollDistance = 0.0F;
}
if (this.scrollDistance > (float)var1)
{
this.scrollDistance = (float)var1;
}
}
public void actionPerformed(GuiButton button)
{
if (button.enabled)
{
if (button.id == this.scrollUpActionId)
{
this.scrollDistance -= (float)(this.slotHeight * 2 / 3);
this.initialMouseClickY = -2.0F;
this.applyScrollLimits();
}
else if (button.id == this.scrollDownActionId)
{
this.scrollDistance += (float)(this.slotHeight * 2 / 3);
this.initialMouseClickY = -2.0F;
this.applyScrollLimits();
}
}
}
public void drawScreen(int mouseX, int mouseY, float p_22243_3_)
{
this.mouseX = mouseX;
this.mouseY = mouseY;
this.drawBackground();
int listLength = this.getSize();
int scrollBarXStart = this.left + this.listWidth - 6;
int scrollBarXEnd = scrollBarXStart + 6;
int boxLeft = this.left;
int boxRight = scrollBarXStart-1;
int var10;
int var11;
int var13;
int var19;
if (Mouse.isButtonDown(0))
{
if (this.initialMouseClickY == -1.0F)
{
boolean var7 = true;
if (mouseY >= this.top && mouseY <= this.bottom)
{
var10 = mouseY - this.top - this.field_27261_r + (int)this.scrollDistance - 4;
var11 = var10 / this.slotHeight;
if (mouseX >= boxLeft && mouseX <= boxRight && var11 >= 0 && var10 >= 0 && var11 < listLength)
{
boolean var12 = var11 == this.selectedIndex && System.currentTimeMillis() - this.lastClickTime < 250L;
this.elementClicked(var11, var12);
this.selectedIndex = var11;
this.lastClickTime = System.currentTimeMillis();
}
else if (mouseX >= boxLeft && mouseX <= boxRight && var10 < 0)
{
this.func_27255_a(mouseX - boxLeft, mouseY - this.top + (int)this.scrollDistance - 4);
var7 = false;
}
if (mouseX >= scrollBarXStart && mouseX <= scrollBarXEnd)
{
this.scrollFactor = -1.0F;
var19 = this.getContentHeight() - (this.bottom - this.top - 4);
if (var19 < 1)
{
var19 = 1;
}
var13 = (int)((float)((this.bottom - this.top) * (this.bottom - this.top)) / (float)this.getContentHeight());
if (var13 < 32)
{
var13 = 32;
}
if (var13 > this.bottom - this.top - 8)
{
var13 = this.bottom - this.top - 8;
}
this.scrollFactor /= (float)(this.bottom - this.top - var13) / (float)var19;
}
else
{
this.scrollFactor = 1.0F;
}
if (var7)
{
this.initialMouseClickY = (float)mouseY;
}
else
{
this.initialMouseClickY = -2.0F;
}
}
else
{
this.initialMouseClickY = -2.0F;
}
}
else if (this.initialMouseClickY >= 0.0F)
{
this.scrollDistance -= ((float)mouseY - this.initialMouseClickY) * this.scrollFactor;
this.initialMouseClickY = (float)mouseY;
}
}
else
{
while (Mouse.next())
{
int var16 = Mouse.getEventDWheel();
if (var16 != 0)
{
if (var16 > 0)
{
var16 = -1;
}
else if (var16 < 0)
{
var16 = 1;
}
this.scrollDistance += (float)(var16 * this.slotHeight / 2);
}
}
this.initialMouseClickY = -1.0F;
}
this.applyScrollLimits();
Tessellator tess = Tessellator.getInstance();
WorldRenderer worldr = tess.getWorldRenderer();
if (this.client.theWorld != null)
{
this.drawGradientRect(this.left, this.top, this.right, this.bottom, -1072689136, -804253680);
}
else
{
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_FOG);
this.client.renderEngine.bindTexture(Gui.optionsBackground);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
float var17 = 32.0F;
worldr.startDrawingQuads();
worldr.setColorOpaque_I(2105376);
worldr.addVertexWithUV((double)this.left, (double)this.bottom, 0.0D, (double)((float)this.left / var17), (double)((float)(this.bottom + (int)this.scrollDistance) / var17));
worldr.addVertexWithUV((double)this.right, (double)this.bottom, 0.0D, (double)((float)this.right / var17), (double)((float)(this.bottom + (int)this.scrollDistance) / var17));
worldr.addVertexWithUV((double)this.right, (double)this.top, 0.0D, (double)((float)this.right / var17), (double)((float)(this.top + (int)this.scrollDistance) / var17));
worldr.addVertexWithUV((double)this.left, (double)this.top, 0.0D, (double)((float)this.left / var17), (double)((float)(this.top + (int)this.scrollDistance) / var17));
tess.draw();
}
// boxRight = this.listWidth / 2 - 92 - 16;
var10 = this.top + 4 - (int)this.scrollDistance;
if (this.field_27262_q)
{
this.func_27260_a(boxRight, var10, tess);
}
int var14;
for (var11 = 0; var11 < listLength; ++var11)
{
var19 = var10 + var11 * this.slotHeight + this.field_27261_r;
var13 = this.slotHeight - 4;
if (var19 <= this.bottom && var19 + var13 >= this.top)
{
if (this.field_25123_p && this.isSelected(var11))
{
var14 = boxLeft;
int var15 = boxRight;
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_TEXTURE_2D);
worldr.startDrawingQuads();
worldr.setColorOpaque_I(8421504);
worldr.addVertexWithUV((double)var14, (double)(var19 + var13 + 2), 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)var15, (double)(var19 + var13 + 2), 0.0D, 1.0D, 1.0D);
worldr.addVertexWithUV((double)var15, (double)(var19 - 2), 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)var14, (double)(var19 - 2), 0.0D, 0.0D, 0.0D);
worldr.setColorOpaque_I(0);
worldr.addVertexWithUV((double)(var14 + 1), (double)(var19 + var13 + 1), 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)(var15 - 1), (double)(var19 + var13 + 1), 0.0D, 1.0D, 1.0D);
worldr.addVertexWithUV((double)(var15 - 1), (double)(var19 - 1), 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)(var14 + 1), (double)(var19 - 1), 0.0D, 0.0D, 0.0D);
tess.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
this.drawSlot(var11, boxRight, var19, var13, tess);
}
}
GL11.glDisable(GL11.GL_DEPTH_TEST);
byte var20 = 4;
if (this.client.theWorld == null)
{
this.overlayBackground(0, this.top, 255, 255);
this.overlayBackground(this.bottom, this.listHeight, 255, 255);
}
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glDisable(GL11.GL_TEXTURE_2D);
worldr.startDrawingQuads();
worldr.setColorRGBA_I(0, 0);
worldr.addVertexWithUV((double)this.left, (double)(this.top + var20), 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)this.right, (double)(this.top + var20), 0.0D, 1.0D, 1.0D);
worldr.setColorRGBA_I(0, 255);
worldr.addVertexWithUV((double)this.right, (double)this.top, 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)this.left, (double)this.top, 0.0D, 0.0D, 0.0D);
tess.draw();
worldr.startDrawingQuads();
worldr.setColorRGBA_I(0, 255);
worldr.addVertexWithUV((double)this.left, (double)this.bottom, 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)this.right, (double)this.bottom, 0.0D, 1.0D, 1.0D);
worldr.setColorRGBA_I(0, 0);
worldr.addVertexWithUV((double)this.right, (double)(this.bottom - var20), 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)this.left, (double)(this.bottom - var20), 0.0D, 0.0D, 0.0D);
tess.draw();
var19 = this.getContentHeight() - (this.bottom - this.top - 4);
if (var19 > 0)
{
var13 = (this.bottom - this.top) * (this.bottom - this.top) / this.getContentHeight();
if (var13 < 32)
{
var13 = 32;
}
if (var13 > this.bottom - this.top - 8)
{
var13 = this.bottom - this.top - 8;
}
var14 = (int)this.scrollDistance * (this.bottom - this.top - var13) / var19 + this.top;
if (var14 < this.top)
{
var14 = this.top;
}
worldr.startDrawingQuads();
worldr.setColorRGBA_I(0, 255);
worldr.addVertexWithUV((double)scrollBarXStart, (double)this.bottom, 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)scrollBarXEnd, (double)this.bottom, 0.0D, 1.0D, 1.0D);
worldr.addVertexWithUV((double)scrollBarXEnd, (double)this.top, 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)scrollBarXStart, (double)this.top, 0.0D, 0.0D, 0.0D);
tess.draw();
worldr.startDrawingQuads();
worldr.setColorRGBA_I(8421504, 255);
worldr.addVertexWithUV((double)scrollBarXStart, (double)(var14 + var13), 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)scrollBarXEnd, (double)(var14 + var13), 0.0D, 1.0D, 1.0D);
worldr.addVertexWithUV((double)scrollBarXEnd, (double)var14, 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)scrollBarXStart, (double)var14, 0.0D, 0.0D, 0.0D);
tess.draw();
worldr.startDrawingQuads();
worldr.setColorRGBA_I(12632256, 255);
worldr.addVertexWithUV((double)scrollBarXStart, (double)(var14 + var13 - 1), 0.0D, 0.0D, 1.0D);
worldr.addVertexWithUV((double)(scrollBarXEnd - 1), (double)(var14 + var13 - 1), 0.0D, 1.0D, 1.0D);
worldr.addVertexWithUV((double)(scrollBarXEnd - 1), (double)var14, 0.0D, 1.0D, 0.0D);
worldr.addVertexWithUV((double)scrollBarXStart, (double)var14, 0.0D, 0.0D, 0.0D);
tess.draw();
}
this.func_27257_b(mouseX, mouseY);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_BLEND);
}
private void overlayBackground(int p_22239_1_, int p_22239_2_, int p_22239_3_, int p_22239_4_)
{
Tessellator var5 = Tessellator.getInstance();
WorldRenderer worldr = var5.getWorldRenderer();
this.client.renderEngine.bindTexture(Gui.optionsBackground);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
float var6 = 32.0F;
worldr.startDrawingQuads();
worldr.setColorRGBA_I(4210752, p_22239_4_);
worldr.addVertexWithUV(0.0D, (double)p_22239_2_, 0.0D, 0.0D, (double)((float)p_22239_2_ / var6));
worldr.addVertexWithUV((double)this.listWidth + 30, (double)p_22239_2_, 0.0D, (double)((float)(this.listWidth + 30) / var6), (double)((float)p_22239_2_ / var6));
worldr.setColorRGBA_I(4210752, p_22239_3_);
worldr.addVertexWithUV((double)this.listWidth + 30, (double)p_22239_1_, 0.0D, (double)((float)(this.listWidth + 30) / var6), (double)((float)p_22239_1_ / var6));
worldr.addVertexWithUV(0.0D, (double)p_22239_1_, 0.0D, 0.0D, (double)((float)p_22239_1_ / var6));
var5.draw();
}
protected void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6)
{
float f = (float)(par5 >> 24 & 255) / 255.0F;
float f1 = (float)(par5 >> 16 & 255) / 255.0F;
float f2 = (float)(par5 >> 8 & 255) / 255.0F;
float f3 = (float)(par5 & 255) / 255.0F;
float f4 = (float)(par6 >> 24 & 255) / 255.0F;
float f5 = (float)(par6 >> 16 & 255) / 255.0F;
float f6 = (float)(par6 >> 8 & 255) / 255.0F;
float f7 = (float)(par6 & 255) / 255.0F;
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glShadeModel(GL11.GL_SMOOTH);
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
worldrenderer.startDrawingQuads();
worldrenderer.setColorRGBA_F(f1, f2, f3, f);
worldrenderer.addVertex((double)par3, (double)par2, 0.0D);
worldrenderer.addVertex((double)par1, (double)par2, 0.0D);
worldrenderer.setColorRGBA_F(f5, f6, f7, f4);
worldrenderer.addVertex((double)par1, (double)par4, 0.0D);
worldrenderer.addVertex((double)par3, (double)par4, 0.0D);
tessellator.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
}
@@ -1,94 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.client;
import java.util.ArrayList;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.StringUtils;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderState.ModState;
import net.minecraftforge.fml.common.ModContainer;
/**
* @author cpw
*
*/
public class GuiSlotModList extends GuiScrollingList
{
private GuiModList parent;
private ArrayList<ModContainer> mods;
public GuiSlotModList(GuiModList parent, ArrayList<ModContainer> mods, int listWidth)
{
super(parent.getMinecraftInstance(), listWidth, parent.height, 32, parent.height - 88 + 4, 10, 35);
this.parent=parent;
this.mods=mods;
}
@Override
protected int getSize()
{
return mods.size();
}
@Override
protected void elementClicked(int var1, boolean var2)
{
this.parent.selectModIndex(var1);
}
@Override
protected boolean isSelected(int var1)
{
return this.parent.modIndexSelected(var1);
}
@Override
protected void drawBackground()
{
this.parent.drawDefaultBackground();
}
@Override
protected int getContentHeight()
{
return (this.getSize()) * 35 + 1;
}
ArrayList<ModContainer> getMods()
{
return mods;
}
@Override
protected void drawSlot(int listIndex, int var2, int var3, int var4, Tessellator var5)
{
ModContainer mc=mods.get(listIndex);
String name = StringUtils.stripControlCodes(mc.getName());
String version = StringUtils.stripControlCodes(mc.getDisplayVersion());
if (Loader.instance().getModState(mc)==ModState.DISABLED)
{
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(name, listWidth - 10), this.left + 3 , var3 + 2, 0xFF2222);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(version, listWidth - 10), this.left + 3 , var3 + 12, 0xFF2222);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("DISABLED", listWidth - 10), this.left + 3 , var3 + 22, 0xFF2222);
}
else
{
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(name, listWidth - 10), this.left + 3 , var3 + 2, 0xFFFFFF);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(version, listWidth - 10), this.left + 3 , var3 + 12, 0xCCCCCC);
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(mc.getMetadata() !=null ? mc.getMetadata().getChildModCountString() : "Metadata not found", listWidth - 10), this.left + 3 , var3 + 22, 0xCCCCCC);
}
}
}
@@ -1,196 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2014 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors (this class):
* bspkrs - implementation
*/
package net.minecraftforge.fml.client.config;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
/**
* This class provides several methods and constants used by the Config GUI classes.
*
* @author bspkrs
*/
public class GuiUtils
{
public static final String UNDO_CHAR = "\u21B6";
public static final String RESET_CHAR = "\u2604";
public static final String VALID = "\u2714";
public static final String INVALID = "\u2715";
public static int[] colorCodes = new int[] { 0, 170, 43520, 43690, 11141120, 11141290, 16755200, 11184810, 5592405, 5592575, 5635925, 5636095, 16733525, 16733695, 16777045, 16777215,
0, 42, 10752, 10794, 2752512, 2752554, 2763264, 2763306, 1381653, 1381695, 1392405, 1392447, 4134165, 4134207, 4144917, 4144959 };
public static int getColorCode(char c, boolean isLighter)
{
return colorCodes[isLighter ? "0123456789abcdef".indexOf(c) : "0123456789abcdef".indexOf(c) + 16];
}
/**
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
* and filler. It is assumed that the desired texture ResourceLocation object has been bound using
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
*
* @param x x axis offset
* @param y y axis offset
* @param u bound resource location image x offset
* @param v bound resource location image y offset
* @param width the desired box width
* @param height the desired box height
* @param textureWidth the width of the box texture in the resource location image
* @param textureHeight the height of the box texture in the resource location image
* @param borderSize the size of the box's borders
* @param zLevel the zLevel to draw at
*/
public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
int borderSize, float zLevel)
{
drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel);
}
/**
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
* and filler. The provided ResourceLocation object will be bound using
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
*
* @param res the ResourceLocation object that contains the desired image
* @param x x axis offset
* @param y y axis offset
* @param u bound resource location image x offset
* @param v bound resource location image y offset
* @param width the desired box width
* @param height the desired box height
* @param textureWidth the width of the box texture in the resource location image
* @param textureHeight the height of the box texture in the resource location image
* @param borderSize the size of the box's borders
* @param zLevel the zLevel to draw at
*/
public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
int borderSize, float zLevel)
{
drawContinuousTexturedBox(res, x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel);
}
/**
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
* and filler. The provided ResourceLocation object will be bound using
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
*
* @param res the ResourceLocation object that contains the desired image
* @param x x axis offset
* @param y y axis offset
* @param u bound resource location image x offset
* @param v bound resource location image y offset
* @param width the desired box width
* @param height the desired box height
* @param textureWidth the width of the box texture in the resource location image
* @param textureHeight the height of the box texture in the resource location image
* @param topBorder the size of the box's top border
* @param bottomBorder the size of the box's bottom border
* @param leftBorder the size of the box's left border
* @param rightBorder the size of the box's right border
* @param zLevel the zLevel to draw at
*/
public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel)
{
Minecraft.getMinecraft().getTextureManager().bindTexture(res);
drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, topBorder, bottomBorder, leftBorder, rightBorder, zLevel);
}
/**
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
* and filler. It is assumed that the desired texture ResourceLocation object has been bound using
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
*
* @param x x axis offset
* @param y y axis offset
* @param u bound resource location image x offset
* @param v bound resource location image y offset
* @param width the desired box width
* @param height the desired box height
* @param textureWidth the width of the box texture in the resource location image
* @param textureHeight the height of the box texture in the resource location image
* @param topBorder the size of the box's top border
* @param bottomBorder the size of the box's bottom border
* @param leftBorder the size of the box's left border
* @param rightBorder the size of the box's right border
* @param zLevel the zLevel to draw at
*/
public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
int fillerWidth = textureWidth - leftBorder - rightBorder;
int fillerHeight = textureHeight - topBorder - bottomBorder;
int canvasWidth = width - leftBorder - rightBorder;
int canvasHeight = height - topBorder - bottomBorder;
int xPasses = canvasWidth / fillerWidth;
int remainderWidth = canvasWidth % fillerWidth;
int yPasses = canvasHeight / fillerHeight;
int remainderHeight = canvasHeight % fillerHeight;
// Draw Border
// Top Left
drawTexturedModalRect(x, y, u, v, leftBorder, topBorder, zLevel);
// Top Right
drawTexturedModalRect(x + leftBorder + canvasWidth, y, u + leftBorder + fillerWidth, v, rightBorder, topBorder, zLevel);
// Bottom Left
drawTexturedModalRect(x, y + topBorder + canvasHeight, u, v + topBorder + fillerHeight, leftBorder, bottomBorder, zLevel);
// Bottom Right
drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + canvasHeight, u + leftBorder + fillerWidth, v + topBorder + fillerHeight, rightBorder, bottomBorder, zLevel);
for (int i = 0; i < xPasses + (remainderWidth > 0 ? 1 : 0); i++)
{
// Top Border
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y, u + leftBorder, v, (i == xPasses ? remainderWidth : fillerWidth), topBorder, zLevel);
// Bottom Border
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + canvasHeight, u + leftBorder, v + topBorder + fillerHeight, (i == xPasses ? remainderWidth : fillerWidth), bottomBorder, zLevel);
// Throw in some filler for good measure
for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++)
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + (j * fillerHeight), u + leftBorder, v + topBorder, (i == xPasses ? remainderWidth : fillerWidth), (j == yPasses ? remainderHeight : fillerHeight), zLevel);
}
// Side Borders
for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++)
{
// Left Border
drawTexturedModalRect(x, y + topBorder + (j * fillerHeight), u, v + topBorder, leftBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel);
// Right Border
drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + (j * fillerHeight), u + leftBorder + fillerWidth, v + topBorder, rightBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel);
}
}
public static void drawTexturedModalRect(int x, int y, int u, int v, int width, int height, float zLevel)
{
float var7 = 0.00390625F;
float var8 = 0.00390625F;
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldr = tessellator.getWorldRenderer();
worldr.startDrawingQuads();
worldr.addVertexWithUV((x + 0), (y + height), zLevel, ((u + 0) * var7), ((v + height) * var8));
worldr.addVertexWithUV((x + width), (y + height), zLevel, ((u + width) * var7), ((v + height) * var8));
worldr.addVertexWithUV((x + width), (y + 0), zLevel, ((u + width) * var7), ((v + 0) * var8));
worldr.addVertexWithUV((x + 0), (y + 0), zLevel, ((u + 0) * var7), ((v + 0) * var8));
tessellator.draw();
}
}
@@ -1,62 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.client.registry;
import java.util.List;
import java.util.Map;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import com.google.common.collect.Lists;
/**
* @author cpw
*
*/
public class RenderingRegistry
{
private static final RenderingRegistry INSTANCE = new RenderingRegistry();
private List<EntityRendererInfo> entityRenderers = Lists.newArrayList();
/**
* Register an entity rendering handler. This will, after mod initialization, be inserted into the main
* render map for entities
*
* @param entityClass
* @param renderer
*/
public static void registerEntityRenderingHandler(Class<? extends Entity> entityClass, Render renderer)
{
INSTANCE.entityRenderers.add(new EntityRendererInfo(entityClass, renderer));
}
private static class EntityRendererInfo
{
public EntityRendererInfo(Class<? extends Entity> target, Render renderer)
{
this.target = target;
this.renderer = renderer;
}
private Class<? extends Entity> target;
private Render renderer;
}
public static void loadEntityRenderers(Map<Class<? extends Entity>, Render> rendererMap)
{
for (EntityRendererInfo info : INSTANCE.entityRenderers)
{
rendererMap.put(info.target, info.renderer);
}
}
}
@@ -1,41 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Declare a variable to be populated by a Bukkit Plugin proxy instance if the bukkit coremod
* is available. It can only be applied to field typed as {@link BukkitProxy}
* Generally it should be used in conjunction with {@link Mod#bukkitPlugin()} specifying the
* plugin to load.
*
* @author cpw
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface BukkitPluginRef
{
/**
* A reference (possibly version specific) to a Bukkit Plugin by name, using the name@versionbound
* specification. If this is a bukkit enabled environment the field annotated by this
* will be populated with a {@link BukkitProxy} instance if possible. This proxy will be gotten by
* reflectively calling the "getModProxy" method on the bukkit plugin instance.
* @return The name of the plugin which we will inject into this field
*/
String value();
}
@@ -1,24 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common;
/**
* A marker interface for retrieving a proxy to a bukkit plugin.
* Fields associated with {@link BukkitPluginRef} annotations should
* declare this type and cast down if the target is available (not null)
* @author cpw
*
*/
public interface BukkitProxy
{
}
@@ -1,34 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common;
import org.objectweb.asm.tree.ClassNode;
public interface IASMHook {
/**
* Inject the {@link Mod} class node into this instance. This allows retrieval from custom
* attributes or other artifacts in your mod class
*
* @param modClassNode The mod class
* @return optionally some code generated classes that will be injected into the classloader
*/
ClassNode[] inject(ClassNode modClassNode);
/**
* Allow mods to manipulate classes loaded from this {@link Mod}'s jar file. The {@link Mod}
* class is always guaranteed to be called first.
* The node state should be changed in place.
*
* @param node The class being loaded
*/
void modifyClass(String className, ClassNode node);
}
@@ -1,26 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common;
public class WrongMinecraftVersionException extends RuntimeException
{
private static final long serialVersionUID = 1L;
public ModContainer mod;
public WrongMinecraftVersionException(ModContainer mod)
{
super(String.format("Wrong Minecraft version for %s", mod.getModId()));
this.mod = mod;
}
}
@@ -1,218 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common.event;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderState;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.Mod.Instance;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
/**
* Simple intermod communications to receive simple messages directed at you
* from other mods
*
* @author cpw
*
*/
public class FMLInterModComms {
private static final ImmutableList<IMCMessage> emptyIMCList = ImmutableList.<IMCMessage>of();
private static ArrayListMultimap<String, IMCMessage> modMessages = ArrayListMultimap.create();
/**
* Subscribe to this event to receive your messages (they are sent between
* {@link Init} and {@link PostInit})
*
* @author cpw
*
*/
public static class IMCEvent extends FMLEvent {
private ModContainer activeContainer;
@Override
public void applyModContainer(ModContainer activeContainer)
{
this.activeContainer = activeContainer;
this.currentList = null;
FMLLog.finer("Attempting to deliver %d IMC messages to mod %s", modMessages.get(activeContainer.getModId()).size(), activeContainer.getModId());
}
private ImmutableList<IMCMessage> currentList;
public ImmutableList<IMCMessage> getMessages()
{
if (currentList == null)
{
currentList = ImmutableList.copyOf(modMessages.removeAll(activeContainer.getModId()));
}
return currentList;
}
}
/**
* You will receive an instance of this for each message sent
*
* @author cpw
*
*/
public static final class IMCMessage {
/**
* This is the modid of the mod that sent you the message
*/
private String sender;
/**
* This field, and {@link #value} are both at the mod's discretion
*/
public final String key;
/**
* This field, and {@link #key} are both at the mod's discretion
*/
private Object value;
private IMCMessage(String key, Object value)
{
this.key = key;
this.value = value;
}
@Override
public String toString()
{
return sender;
}
public String getSender()
{
return this.sender;
}
void setSender(ModContainer activeModContainer)
{
this.sender = activeModContainer.getModId();
}
public String getStringValue()
{
return (String) value;
}
public NBTTagCompound getNBTValue()
{
return (NBTTagCompound) value;
}
public ItemStack getItemStackValue()
{
return (ItemStack) value;
}
public Class<?> getMessageType()
{
return value.getClass();
}
public boolean isStringMessage()
{
return String.class.isAssignableFrom(getMessageType());
}
public boolean isItemStackMessage()
{
return ItemStack.class.isAssignableFrom(getMessageType());
}
public boolean isNBTMessage()
{
return NBTTagCompound.class.isAssignableFrom(getMessageType());
}
}
public static boolean sendMessage(String modId, String key, NBTTagCompound value)
{
return enqueueStartupMessage(modId, new IMCMessage(key, value));
}
public static boolean sendMessage(String modId, String key, ItemStack value)
{
return enqueueStartupMessage(modId, new IMCMessage(key, value));
}
public static boolean sendMessage(String modId, String key, String value)
{
return enqueueStartupMessage(modId, new IMCMessage(key, value));
}
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, NBTTagCompound value)
{
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
}
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, ItemStack value)
{
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
}
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, String value)
{
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
}
private static boolean enqueueStartupMessage(String modTarget, IMCMessage message)
{
if (Loader.instance().activeModContainer() == null)
{
return false;
}
enqueueMessage(Loader.instance().activeModContainer(), modTarget, message);
return Loader.isModLoaded(modTarget) && !Loader.instance().hasReachedState(LoaderState.POSTINITIALIZATION);
}
private static void enqueueMessage(Object sourceMod, String modTarget, IMCMessage message)
{
ModContainer mc;
if (sourceMod instanceof ModContainer) {
mc = (ModContainer) sourceMod;
}
else
{
mc = FMLCommonHandler.instance().findContainerFor(sourceMod);
}
if (mc != null && Loader.isModLoaded(modTarget))
{
message.setSender(mc);
modMessages.put(modTarget, message);
}
}
/**
* Retrieve any pending runtime messages for the mod
* @param forMod The {@link Instance} of the Mod to fetch messages for
* @return any messages - the collection will never be null
*/
public static ImmutableList<IMCMessage> fetchRuntimeMessages(Object forMod)
{
ModContainer mc = FMLCommonHandler.instance().findContainerFor(forMod);
if (mc != null)
{
return ImmutableList.copyOf(modMessages.removeAll(mc.getModId()));
}
else
{
return emptyIMCList;
}
}
}
@@ -1,50 +0,0 @@
/*
* Forge Mod Loader
* Copyright (c) 2012-2013 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* cpw - implementation
*/
package net.minecraftforge.fml.common.event;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderState.ModState;
import com.google.common.base.Throwables;
public class FMLPostInitializationEvent extends FMLStateEvent
{
public FMLPostInitializationEvent(Object... data)
{
super(data);
}
@Override
public ModState getModState()
{
return ModState.POSTINITIALIZED;
}
public Object buildSoftDependProxy(String modId, String className)
{
if (Loader.isModLoaded(modId))
{
try
{
Class<?> clz = Class.forName(className,true,Loader.instance().getModClassLoader());
return clz.newInstance();
}
catch (Exception e)
{
Throwables.propagateIfPossible(e);
return null;
}
}
return null;
}
}
Loaded 100 of 1201 files, more files were not shown because too many files have changed in this diff. Show more