Compare commits

...
178 Commits
Author SHA1 Message Date
LexManos d5cb0935e9 Bump version for new RB. 2020-05-15 12:33:32 -07:00
LexManos d4f79882f9 Update MCP Mappings. 2020-05-15 12:17:25 -07:00
ichttt 8d3685439e fix test mod and add warning comment to framebuffer (#6698) 2020-05-15 20:25:57 +02:00
LexManos 68cf703435 Fix FireBlock using flammability instead of spread speed when looking for places to spread. Closes #6646 2020-05-15 10:59:57 -07:00
LexManos bcdd04d549 Fix incorrect argument passed in RenderPipeline potentially causing crash. #6677 2020-05-15 10:53:35 -07:00
Funwayguy ec7d9d4179 Re-added patch to enable stencil buffer in net.minecraft.client.shader.Framebuffer
Add test for the stencil buffer feature. Only tests that it doesn't crash when enabling, for now. - giga
2020-05-15 19:49:55 +02:00
TheSilkMiner 765da1aca8 Allow Music Discs to be created with SoundEvent delegates. (#6523) 2020-05-15 10:38:19 -07:00
Edwin Mindcraft 7fa42ca064 Use IProperty#getName when generating blockstate jsons (#6582)
Close #6520
2020-05-15 13:28:10 -04:00
David Quintana c23ea1e733 Model system fixes:
- Add "origin" key to determine what origin to use. This will default to the existing (broken) behaviour to avoid breaking changes.
- Fix interaction of transforms with variant transforms (transformation ordering).
- Fix OBJ loader ignoring "diffuseLighting" attribute from the json.
  This attribute will continue not being used if "ambientToFullbright" is on (default) to avoid breaking changes.
2020-05-15 19:25:26 +02:00
LexManos 0f48e851a3 Fixed typo in registry alias writing causing infinite loop. Closes #6689 2020-05-15 09:38:20 -07:00
LexManos 549007a4a6 Fixed Partivle.onGround not updating correctly due to decompile error. Closes #6595 2020-05-15 09:37:51 -07:00
covers1624 932e7c84b3 Remove duplicate post of ChunkEvent.Load. (#6697) 2020-05-15 07:45:37 -07:00
Cyborgmas 999b5df933 Fix LevelChange event not firing after enchanting (#6693) 2020-05-14 13:22:12 -07:00
ichttt 29396b6235 Fix server config directory remaining locked when integrated server is shut down. (#6644) 2020-05-12 15:11:45 -07:00
Alex Thomson 4ce32c3663 Fix exclusion of coremods not filtering correctly when the mods directory is a symbolic link. (#6600) 2020-05-12 15:02:01 -07:00
Jais Djurhuus-Kempel 8084cc5499 Allow Bees to use custom hives. (#6656) 2020-05-12 14:29:32 -07:00
Tom Boshoven 988fc97af1 Fixed tile entities persisting when switching between states that don't have TEs without changing the block. (#6674) 2020-05-12 14:21:28 -07:00
Jamie Mansfield 5f082045b0 Fixed CropGrowEvents not firing for Bamboo (#6680) 2020-05-12 14:18:36 -07:00
Jamie Mansfield abc98ba56b Fix vanilla screens escape key not matching done button behavior (#6682) 2020-05-12 14:18:03 -07:00
ShetiPhian e35c5c9ae4 Fixed FluidTank.drain calling onContentsChanged when simulating (#6684) 2020-05-12 14:17:17 -07:00
LexManos 926fa5d5a6 Fix infinite loading screen when resources error. Closes #6592 & #6593 2020-05-12 14:08:05 -07:00
covers1624 99d8fa1a6b Fix IForgeBlock.removedByPlayer not firing on the client. (#6638) 2020-05-11 15:28:38 -07:00
cpw 1a317a7306 Update to newer eventbus, with typetools compatibility with jvms up to j14. No guarantees on actual game compatibility however.
Signed-off-by: cpw <[email protected]>
2020-05-10 20:34:57 -04:00
Jamie Mansfield fa01ba3221 Fixed informational /forge commands being repeated to all ops when logging is enabled. Closes #6330 2020-05-06 13:49:15 -07:00
Jamie Mansfield 766019e1fc Fix ModListScreen escape key not matching done button behavior. Closes #6672 2020-05-06 13:41:43 -07:00
David Quintana a7e4cdcc49 Patch the bucket logic to not hardcode some checks to WATER. Fixes not being able to place custom fluids into modded fluid-loggable blocks that accept fluids other than water. 2020-05-06 13:30:20 +02:00
David Quintana 6551ccc247 Avoid discarding the bottom 4 bits of the lightmap coords. It turns out vanilla relies on those bits. Fixes some blocks being darker than they should be in certain circumstances. 2020-05-04 01:13:43 +02:00
Jacob Smith c3e4d303e9 Fix issue with providing a null ItemStack to onPlayerDestroyItem (#6633) 2020-05-03 13:48:17 -07:00
Brennan Ward 9e763a8334 Allow overriding of tool level requirements when harvesting a block, via the HarvestCheck event. (#6632) 2020-05-03 13:40:34 -07:00
Richard Freimer 035c01e222 Fixed Hoppers not inserting fully into custom contains with slots that can hold more then max stack (#6631) 2020-05-03 13:34:26 -07:00
Corey Frenette 1fa88ebd56 Fixed ChunkDataEvent.Save being fired with a null world if chunk isn't fully generated when unloaded. (#6628) 2020-05-03 13:27:06 -07:00
Tyler Hancock 4fce4eb10b Fix vanilla loot table resource leak. (#6622) 2020-05-03 13:23:09 -07:00
Tyler Hancock 2e694d3a6d Change recipe condition log level to debug. (#6621) 2020-05-03 13:22:22 -07:00
CAS-ual-TY e8966a05f5 Fix milk buckets removing potion effects without filters. (#6609) 2020-05-03 13:17:43 -07:00
Dion van der Hak a377727ac4 Added missing localization for swim speed, and reach distance attributes (#6585) 2020-05-03 13:13:56 -07:00
Vincent Lee 385fb64ab7 Allow colors of tooltip to be specified in GuiUtils.drawHoveringText tooltip methods (#6579) 2020-05-03 13:09:28 -07:00
ichttt f2216f4e25 Fix config comments referencing disallowed enum values. (#6542) 2020-05-03 12:56:47 -07:00
David Quintana 0fc1ea01d1 Remove redundant call to modifyLoot. Closes #6657 2020-04-28 19:22:48 +02:00
tterrag ea23cd4779 Fix various issues with the loading screen and datagen
Fix NPE on datagen startup
Fix early loading GUI hanging and never terminating after datagen
Add loading GUI messages for datagen
2020-04-28 00:00:45 -04:00
Take Weiland 903a400132 Fix BackgroundScanHandler crashing on servers (#6660) 2020-04-27 11:06:34 -07:00
cpw 940f3ed731 Remove silly icon override. Squirrels are fun y'all..
Signed-off-by: cpw <[email protected]>
2020-04-27 09:55:14 -04:00
tterrag 9d8817b5db Rename window icon image to avoid conflict, fix not using vanilla icon 2020-04-27 01:09:34 -04:00
tterrag 10204f8d82 Fix VariantList calling deprecated bake method 2020-04-26 23:48:51 -04:00
LexManos 746d702058 Fix resource packs not being sorted properly. Closes #6287 2020-04-26 20:05:56 -07:00
LexManos 3c5728f070 Fix Automatic Event Subscriber not detecting mod id defaults, and fix test mods. 2020-04-26 19:04:37 -07:00
cpw 8c8ef2d9e1 Use forge logo as short term window Icon, fix Buffer cast problems for new JDK stupid.
Signed-off-by: cpw <[email protected]>
2020-04-26 21:42:18 -04:00
cpw 6a25490d7f Handle message display a bit better, try to make the UI tick a bit better.. Still a problem with
a modelbake right at the end, happening on the window flip.

Signed-off-by: cpw <[email protected]>
2020-04-26 21:03:43 -04:00
RogueLogix 6a0b16817d Move ClientVisualization to secondary thread 2020-04-26 16:06:44 -07:00
RogueLogix 677e2104a0 move handOffWindow down near start() 2020-04-26 15:41:53 -07:00
cpw 438c969fef merge early startup into main window if used. It seems to work well.. Also ticks window on main thread, so mac compatible now.
Signed-off-by: cpw <[email protected]>
2020-04-26 18:24:48 -04:00
cpw 4af0bfd661 Update jenkinsfile and gradle for new versions of things..
Signed-off-by: cpw <[email protected]>
2020-04-25 17:54:50 -04:00
LexManos 03c2a3d3a8 Fix potential NPEs in RegistryObject.orElseThrow/isPresent/ifPresent Closes #6647 2020-04-24 19:18:57 -07:00
David Quintana 9a6d1c390e Add tickRate setter to the ForgeFlowingFluid Properties builder. 2020-04-23 14:57:06 +02:00
cpw 0512a47eba Fix recursion mess in PlayerAdvancement loading, by using an alternative based on a toposorted list of all advancements.
It seems to be fully equivalent in testing, but there may be corner cases, so there is a config to disable, though disabling
may break servers, especially those chunkloading fake players.

Signed-off-by: cpw <[email protected]>
2020-04-19 21:36:44 -04:00
LexManos 699a5c3c18 Revert defualt jvm args. 2020-04-15 10:09:49 -07:00
LexManos 5a552b9f8d Fixed dev time compilation using J9+ producing incorrect bytecode. 2020-04-14 23:54:32 -07:00
David Quintana aa5b9d12ea Add "type" field to global loot modifier jsons. (#6554)
* Add "type" field to global loot modifier jsons and fix tests.
To avoid binary breaking, "type" defaults to be the same as the filename.
* Fix license headers.
2020-04-12 21:27:11 +02:00
tterrag a3b1007633 Fix child annotations not inheriting member name, cleanup 2020-04-11 01:57:40 -04:00
tterrag bdd0af5280 Fix element type of scanned child annotations 2020-04-11 01:19:25 -04:00
Patrick Ocampo 5e554530ac Fixed PlantType not extending IExtensibleEnum, Closes #6286 2020-04-08 17:17:38 -07:00
valoeghese 713c24d916 Added hook to allow modded Hill Biomes (#6571) 2020-04-08 17:12:04 -07:00
tterrag c359a38d9f Improve performance of VertexBufferConsumer by inlining element locs 2020-04-07 21:44:29 -04:00
tterrag d84a88d78d Revive forge lighting pipeline, disabled by default for now
Remove a lot of light value convolution by using 0..1 for nearly everything
Fix a lot of TODOs that are needed for the lighting pipeline to function
Potential fix for #6425
2020-04-07 21:44:15 -04:00
tterrag cf9b1b2193 Fix Tag serializing empty optionals, improve RegistryObject error msg 2020-04-05 00:48:56 -04:00
tterrag 25605505d5 Remove SideOnly from WoodType methods 2020-04-04 15:35:41 -04:00
LexManos 0d2a0deef3 Cleanup IForgeTagBuilder code style. 2020-04-01 11:34:36 -07:00
tterrag b6dc5381ca Move global loot test data files out of generated folder 2020-03-31 20:15:55 -04:00
tterrag 559bacbd98 Add support for optional tag values to Tag.Builder
Add optional tag values to data gen test
Fix data gen test not running by correcting gui_light value
2020-03-31 20:15:09 -04:00
tterrag 19444ffa18 Fix a few issues with BufferBuilder
Fix vanilla bug that caused the byte order of the buffer from getNextBuffer to be incorrect
Fix missing modification to nextElementBytes in putBulkData
2020-03-31 19:55:09 -04:00
tterrag db3d202c4e Deprecate ModelBuilder#gui3d, add ModelBuilder#guiLight 2020-03-30 00:15:08 -04:00
naqaden 2f5172f907 Add renderer to RenderNameplateEvent (#6562) 2020-03-27 16:22:01 -07:00
dags f6cb5268a2 Defer writing the server.properties file until after mods have loaded to prevent config loss (#6545) 2020-03-27 16:19:34 -07:00
hnOsmium0001 fcee09cab2 Fix ownership leak in ItemStackHandler (#6580)
- Triggered by invoking ItemStackHandler#extractItem with `simulate=true`
2020-03-27 16:10:21 -07:00
cpw dd1d8737ad Fix cycle happening in noteblock even though we're setting the new value as well..
Signed-off-by: cpw <[email protected]>
2020-03-20 20:05:23 -04:00
cpw 3e48066021 Add a progress message for atlas textures. Fills a big time gap on bigger packs.
Signed-off-by: cpw <[email protected]>
2020-03-20 17:34:46 -04:00
Managarmr 0d16042705 Remove ArrowEntity patch, vanilla fixed MC-107941 2020-03-17 02:41:36 -07:00
LexManos 52b8070692 Fix Forge's tps and gen commands. 2020-03-15 16:27:58 -07:00
LexManos 23541ab175 Update gradle wrapper
Update MCPConfig to version that bypasses javac compiler bugs
Fix Global loot test compile errors.
2020-03-15 13:55:03 -07:00
tterrag c7a17946a5 Fix loading text not rendering after mojang logo appears 2020-03-15 03:39:04 -04:00
tterrag 208ca23515 Fix loading GUI corrupting matrix state 2020-03-15 03:27:43 -04:00
cpw 6329c0fcf2 Somewhat restore the loading screen overlay. It seems that once the mojang logo and progress bar
start running, I can no longer write to the window, even though I am obviously trying to..

Signed-off-by: cpw <[email protected]>
2020-03-14 23:28:45 -04:00
Nightenom 202ae50820 Add projection matrix to RenderWorldLastEvent (#6536) 2020-03-11 00:00:21 -07:00
Draco18s 58e5f33fad Global Loot Functions (#6401) 2020-02-26 22:13:36 -08:00
DaemonUmbra 2ce4f5ece5 Updated ForgeDev MCP Mapping Version (#6532) 2020-02-25 19:45:14 -08:00
cpw aca45340bf Fix up alarming security crisis with network handling that allowed for wrong code execution on the server, resulting in CRASHED SERVERS. AWFUL stuff.
Also fixed a silly log message from the login handler.

This change introduces a mechanism to direct certain packets to only process on one side or another. Invalid sidedness will result in the connection being terminated.

Signed-off-by: cpw <[email protected]>
2020-02-23 22:15:34 -05:00
Julian Dunskus 30d4520c6b Make TransformationHelper.slerp for quaternions public (#6528) 2020-02-23 18:32:33 +01:00
DaemonUmbra daff482092 Fixed Conduit and Beacon Activation on Vanilla Servers (#6438) 2020-02-17 11:01:38 -08:00
Richard Freimer a740044e21 Fix ITeleporter being ignored when teleporting from the end to the overworld (#6505)
* Fix custom teleporters triggering end credits when returning from the end
* Fix setdimension command ignoring position
2020-02-17 17:16:46 +01:00
Vincent Lee 1a4955f9fd Fix missing call to itemstack TER (#6445) 2020-02-14 22:43:31 +01:00
Vincent Lee 2c4042c17c Fix missed modeldata passing in BlockModelRenderer (#6442) 2020-02-14 22:33:27 +01:00
Robert Skalko e95ba8a3dc Fix NPE when players rejoin the server in a dimension that was deleted (#6511) 2020-02-14 12:34:41 -08:00
Rigner 63cb030cba Fix a wrong RenderState name MC-167447 (#6501) 2020-02-14 12:12:52 -08:00
Daniël Goossens 743fc70a7f Fix client not informing server when it attempts to interact with things, and is canceled by a client side handler. 2020-02-14 12:04:38 -08:00
ewewukek c14ffa3264 Fix wrong arguments passed to ForgeHooksClient.renderSpecificFirstPersonHand() (#6496) 2020-02-14 12:03:08 -08:00
malte0811 3f292d5d42 Fixed ChunkWatchEvent.(Un)Watch not firing correctly (#6453) 2020-02-14 12:02:47 -08:00
Unnoen 886e89ccb2 Update version and support data on README. (#6429) 2020-02-14 12:02:00 -08:00
Joseph Tarbit 977428e42c Fixed Food not using effect suppliers, to better support delayed initialization and registry replacements. (#6411) 2020-02-14 12:00:40 -08:00
Parker Hawke 1c02312ae6 Fixed displaying item names when only more sensitive version changes (#6402) 2020-02-14 11:55:27 -08:00
David Quintana 8fbd84515f Fix gui_light for forge's item parent models. 2020-02-14 19:03:11 +01:00
Richard Freimer f93289e01c Allows custom blocks to define if they should use the fluid overlay instead of the flowing texture when in a fluid (#6493) 2020-02-06 23:53:37 +01:00
LexManos 982ed69776 Fix a small patch misalignment. 2020-02-03 13:21:18 -08:00
Richard Freimer 1f46169e1e Add FluidStack support to the Forge packet buffer. (#6353) (#6485) 2020-02-03 12:46:14 -08:00
Richard Freimer 7bac75f370 Make Minecarts work with modded powered/activator rails. (#6486)
Re-adds functionality for rails to have different maximum speeds.
2020-02-03 12:45:36 -08:00
ichttt 06d9b6531c Revert game data to frozen on disconnect from a remote server or when terminating a local server. Closes #6487 (#6497) 2020-02-03 12:21:10 -08:00
David Quintana 2991e767dd Remove unintended changes. 2020-02-02 23:05:04 +01:00
David Quintana a901d80dd5 Implement fluid overlay texture rendering for custom fluids. 2020-02-02 23:02:56 +01:00
DaemonUmbra d86f58a0df Fixed Attacks/Punches not Registering (#6481)
Replaced incorrect magic number with constant
2020-01-29 22:12:04 -08:00
Vincent Lee 0ad574257e Clean up a bunch of render events (#6444)
* Delete RenderHandEvent as RenderSpecificHandEvent can do everything it does and more. Rename RenderSpecificHandEvent to RenderHandEvent as it's now the only hand rendering event.
* Pass MatrixStack and IRenderTypeBuffer into the event whenever they are available. If they're available, that means we're in a batching environment and the modder should not be using the tessellator or other buffers on their own, or they risk "Already building" crashes.
2020-01-30 00:46:22 +01:00
Bartosz Skrzypczak 4839d18c73 Fix NullPointerException on java 8u242 in dev environment. (#6473)
Java 8u242 no longer re-initializes internal sys_paths and usr_paths fields in loadLibrary when they are null, so the value can't be set to null.
2020-01-29 13:55:07 -08:00
Vincent Lee e539e7ecbb Fix incorrectly ported patch for restoreBlurMipmap (#6450) 2020-01-29 13:13:08 -08:00
Daniël Goossens 1b618fae90 Fix RightClickBlock code differences between client and server implementation (#6451) 2020-01-29 13:11:50 -08:00
Yamahari f12a93fe1e Defer material getting for ChestTileEntityRenderer into seperate function (#6465) 2020-01-29 13:05:12 -08:00
Cadiboo 617159c825 Small Forge config fixes (#6466) 2020-01-29 13:04:35 -08:00
LexManos c72d6e9122 Fix ChunkDataEvent.Load not firing, it now fires in the aync thread. Be careful. Closes #6471 2020-01-29 12:18:13 -08:00
LexManos 69ae178bf4 Fix incorrect keybinding modifiers patch. Closes #6478 2020-01-29 11:57:10 -08:00
LexManos d391299340 Fix PlayerChangedDimensionEvent using incorrect from dimension argument in ServerPlayerEntity.teleport. Closes #6457 2020-01-29 11:56:38 -08:00
LexManos 40091678a8 Fix default mod resources loosing it's sort order. 2020-01-29 11:31:31 -08:00
LexManos 2b43aa6301 Fix WakeupEvent patch misalign. Closes #6474 2020-01-29 11:31:02 -08:00
mcenderdragon 44d9fff2b4 [1.15] Reimplemented the ITeleporter interface (#6404) 2020-01-29 09:18:07 -08:00
David Quintana 509a28efd3 Hook "gui_light" value from the model into the IBakedModel implementations.
Apply some of the suggestions from the 1.14 models PR.
2020-01-23 22:54:54 +01:00
LexManos c4e000dbe7 1.15.2 Initial Update 2020-01-22 13:44:03 -08:00
ichttt 0bcc2e3fbd Cleanup fml packages removing old deprecated classes related to GUIs/Configs and fix HoverChecker (#6437)
Fixed ModListWidget name to avoid confusion and collision.
Delete CheckBox, as vanilla has it's own CheckBox now which looks much better
Rename ModConfigEvent.ConfigReloading to ModConfigEvent.Reloading
2020-01-22 14:09:58 -07:00
Daniël Goossens e6c440a4f7 Fixed parameter name issue in ISTER rename. #6461 (#6468) 2020-01-22 13:38:13 -07:00
LexManos 575af22cee Fix default widget foreground color. 2020-01-22 11:56:05 -08:00
Daniël Goossens dea08be906 Updated method names referencing ItemStackTileEntityRenderer (#6461) 2020-01-22 12:26:34 -07:00
Cadiboo 0f27975f77 Fix Widget Foreground Color not allowing pure black (#6460) 2020-01-22 12:25:35 -07:00
Wyn Price 2d30419a31 Fixed rounding issue with entity navigation fix (#6455) (#6456) 2020-01-22 12:24:20 -07:00
Brennan Ward 68ce113c5b Fixed RenderTypeLookup loosing mappings for registry replacements. (#6452) 2020-01-22 12:23:42 -07:00
Take Weiland ad7e4e95ae Use extended version of getLightValue in all places (#6433) 2020-01-22 12:22:35 -07:00
Scotteh 345387645e [1.15.x] Added entity nameplate rendering event hook (#6416) 2020-01-22 12:22:04 -07:00
tterrag 380366e25f Remove emissive items hook, add small utility for bakedquad lighting 2020-01-20 22:44:26 -05:00
David Quintana 1936eb1f36 Fix breaking overlay weirdness. applyBakedNormals was not transforming the baked normals when applying them. Fixes #6432 2020-01-16 03:29:46 +01:00
Daniël Goossens 088fc6b67f [1.15] Add new InputEvent.ClickInputEvent, addresses #5802 (#6047) 2020-01-15 16:30:01 -08:00
David Quintana 983a47a7d6 Fix dark spots in fullbright quad rendering.
Fix multi-layer model not declaring dependency on the particle texture.
Fix mistake in 2c054fca which I didn't intend to push when I did.
2020-01-13 23:20:46 +01:00
David Quintana c1840abb0a Fix multi-layer model loader to actually work in a sane way. No more "base" model involved, and now transforms and overrides work as expected. 2020-01-13 19:38:52 +01:00
David Quintana 2c054fca76 Attempt to fix fullbright lighting.
Fix lightmap value calculation.
2020-01-13 13:19:36 +01:00
tterrag d5b94aa9c8 Add constructor for FishBucketItem that accepts suppliers 2020-01-09 17:26:11 -05:00
David Quintana c4c760bfb3 Fix QuadTransformer normal processing. 2020-01-07 23:52:51 +01:00
Choonster TheMage dd0260c476 Fix validation in RotationBuilder#angle (fixes #6323) (#6408) 2020-01-07 14:21:12 -08:00
Richard Freimer ca62702ff9 Add support for custom nether portal frame blocks (#6389) 2020-01-07 14:20:37 -08:00
RANKSHANK 0d50b4c39f InputEvent.RawMouseEvent fix (#6395) 2020-01-07 13:19:46 -08:00
DaemonUmbra c37e44efb6 Fixed Big Mushrooms not generating (#6390)
Removed vanilla negation from Forge logic that negated the vanilla logic it was replacing
also ran datagen to update the dirt tag to reflect changes that were previously made in the datagen code
2020-01-07 13:15:11 -08:00
tterrag df04ae11ef Fix dyes tag containing dye items instead of tags
Update generated data
2020-01-05 19:03:49 -05:00
Choonster TheMage 6e8b976089 [1.15.x] Remove unused parameter from ElementBuilder#rotation (fixes #6321) (#6407) 2020-01-05 14:29:45 -05:00
tterrag bc878ddf19 Refactor BlockStateProvider to encapsulate a BlockModelProvider
Make most protected methods of data generators public
2020-01-05 14:27:20 -05:00
tterrag 3096608d4a Fix crash when building BakedQuadBuilder
Add javadocs and move sprite to constructor where possible
2020-01-05 13:36:06 -05:00
tterrag 7c99b756f9 Fix incorrect check for missing texture in DynamicBucketModel 2020-01-04 23:50:17 -05:00
tterrag 90035ab084 Remove custom vertex format from BakedQuad 2020-01-04 23:36:56 -05:00
David Quintana b6c12f5fff A few more binary-breaking changes, before it's too late:
- Move CompositeModel out of its package.
- Move a few inner classes from the OBJ loader.
- Rename the bucket model and fluid model classes to match the naming convention.
- Remove BiomeEvent.* and WorldTypeEvent.InitBiomeGens as they are not currently implemented and they haven't been in the previous version either.
2020-01-04 17:18:28 +01:00
David Quintana 4b9920bcb3 Cherry-pick ca819e09 from the 1.14.x branch. Removes a patch from NativeImage which was invalid. 2020-01-04 17:18:27 +01:00
LexManos 1e053298be Fix the particle renderer not setting GL state between each type. MC-168672 2020-01-02 19:02:42 -08:00
David Quintana ca031ca33f Fix CompositeModel not respecting "display" transforms.
Remove leftovers from discarded feature.
2020-01-02 06:21:43 +01:00
David Quintana ecb56054bc Allow model jsons to override the material library used by OBJ models.
Fix model loader test mod resources.
Update licenses.
2020-01-01 17:15:49 +01:00
tterrag 53747b0cb5 Apply baked-in lightmap data to rendering
- Fix ForgeHooksClient.fillNormal injecting data to lightmap
- Fix OBJModel not filling lightmap data
- Fix NewModelLoaderTest blockitem not linking with block
2019-12-30 16:12:14 -05:00
David Quintana e1b0a8c153 Fix LightUtil.unpack to set the 4th component to 1 when expanding an xyz position into a 4-component vector.
Add TRSRTransformer test mod.
Fix signature of the bindTileEntityRenderer method, to account for covariance.
2019-12-29 17:16:27 +01:00
David Quintana fc189c9aaf More model/rendering fixes:
- Breaking change: Change ClientRegistry.bindTileEntityRenderer to a factory, so mods don't have to manually specify the dispatcher.
- Breaking change: Delete obsolete SimpleModelState (the class was duplicated by mistake, see SimpleModelTransform) and ICustomModelState (part of the old loader API).
- Breaking change: Rename getTextureDependencies to getTextures, for consistency.
- Reinstate the getRenderLayer method, fixed appropriately to return the new RenderType value.
- Fix OBJ loader applying the model transform in the wrong reference frame.
- Fix vanilla bug in TransformationMatrix#func_227986_a_
- Fix QuadTransformer logic.
- Added new method to IModelConfiguration to retrieve the owner IUnbakedModel, needed in order to construct ItemOverrideLists when baking custom models.
- Reintroduce multi-layer model through the new model loader system.
2019-12-29 02:13:58 +01:00
David Quintana e8ce61d4cd New batch of Model/rendering fixes:
- PerspectiveMapWrapper did not pass IModelData through to the wrapped model.
- CompositeModel did not store the returned textures from getTextureDependencies.
- VertexFormat used COLOR instead of UV to detect UV presence.
- QuadTransformer would crash due to index out of bounds.
- Small cleanup of TransformationHelper
2019-12-24 13:12:38 +01:00
David Quintana ac61018806 Fix obj models having all faces in the same mesh, breaking material assignments and visibility in the process.
Reintroduce lost patch from the model loader, which would cause the custom values to be missing from generated models.
2019-12-20 18:14:09 +01:00
tterrag 18e97a487d Fix diffuse lighting being baked into models, fixes dark items 2019-12-19 23:13:28 -05:00
David Quintana c3b1f47754 Fix item quads not using the existing vertex color when applying tint colors. 2019-12-20 04:50:40 +01:00
David Quintana 503d277033 Fix bucket model. Some mask textures were not added to the repository, and the bucket override generation was broken.
Fix OBJ loading crash due to a float value being parsed as int.
Fixes 6377
2019-12-20 02:44:27 +01:00
bl4ckscor3 40de19f16e Fix game crashing when modded entities are present (#6364) 2019-12-19 00:56:01 -05:00
ichttt 83ebdcd8f2 Fix warning screen about missing minecraft registry entries (#6363) 2019-12-18 21:02:20 -08:00
Richard Freimer 47a1f7529a Fix capabilities becoming inaccessible on returning from end (#6368) 2019-12-18 20:40:36 -08:00
ichttt 747cb0f151 Some code cleanup for 1.15 (#6362) 2019-12-18 20:39:41 -08:00
tterrag 30b530836a Fix MainMenuScreen patch 2019-12-17 21:10:49 -05:00
tterrag 49596dcacc Mod list GUI detail pass
- Make padding consistent on all elements
- Properly horizontally center the "Search" text
- Update and resize forge/mcp logos
- Enable linear filtering on logo rendering by default
  - Can be disabled with the "logoBlur" mods.toml property
2019-12-17 20:58:26 -05:00
ichttt 5df687dddc Fix mod list screen (#6367) 2019-12-17 20:03:11 -05:00
David Quintana 599a754b60 Fix items in ground being too small, we were applying perspectives twice.
Restore forge patch and fix a tiny mistake in it.
2019-12-18 00:46:29 +01:00
Tobias Hotz eaac0c17a4 Fix keybinds not loading/saving correctly 2019-12-17 18:30:51 -05:00
tterrag faaebe7a07 Remove uvlock hook, fixes broken stair/fence/etc models 2019-12-17 17:37:39 -05:00
tterrag 6256ba336e Update fallback spec version 2019-12-17 17:15:09 -05:00
tterrag 5987d917b8 Update to 1.15.1 2019-12-17 14:37:34 -05:00
David Quintana 738abbb360 Finish converting the code from javax.vecmath to the vanilla vector classes. Forge is now vecmath-free! 2019-12-17 19:14:52 +01:00
tterrag 1558362583 Remove deprecations 2019-12-17 04:50:13 -05:00
tterrag 5b67354e24 Fix incorrect item lighting 2019-12-16 23:46:45 -05:00
tterrag dec91dec68 Revert fluid change to use Material, fixes server crash 2019-12-16 23:22:13 -05:00
1933d05e36 Update to 1.15
Due to the massive rendering changes, certain features, such as emissive item rendering and the forge block rendering/lighting pipeline are currently disabled.

Co-authored-by: David Quintana <[email protected]>
Co-authored-by: tterrag <[email protected]>
Co-authored-by: Unnoen <[email protected]>
2019-12-17 03:38:12 +01:00
791 changed files with 16279 additions and 17521 deletions

No files matched your search

+1
View File
@@ -35,4 +35,5 @@ branches:
- 1.13-pre
- 1.13.x
- 1.14.x
- 1.15.x
- /^noci-.*$/
Vendored
+3 -10
View File
@@ -6,8 +6,8 @@ pipeline {
}
agent {
docker {
image 'gradlewrapper:latest'
args '-v gradlecache:/gradlecache'
image 'gradle:jdk8'
args '-v forgegc:/home/gradle/.gradle/'
}
}
environment {
@@ -18,11 +18,6 @@ pipeline {
}
stages {
stage('fetch') {
steps {
checkout scm
}
}
stage('notify_start') {
when {
not {
@@ -91,9 +86,7 @@ pipeline {
always {
script {
archiveArtifacts artifacts: 'projects/forge/build/libs/**/*.*', fingerprint: true, onlyIfSuccessful: true, allowEmptyArchive: true
//junit 'build/test-results/*/*.xml'
//jacoco sourcePattern: '**/src/*/java'
if (env.CHANGE_ID == null) { // This is unset for non-PRs
discordSend(
title: "${DISCORD_PREFIX} Finished ${currentBuild.currentResult}",
+68 -36
View File
@@ -3,12 +3,16 @@ buildscript {
mavenLocal()
maven { url = 'https://files.minecraftforge.net/maven' }
jcenter()
mavenCentral()
//mavenCentral() //TODO: Update Gradle to use HTTPS by default
maven {
name 'maven_central'
url 'https://repo.maven.apache.org/maven2/'
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
classpath 'org.ow2.asm:asm:7.1'
classpath 'org.ow2.asm:asm-tree:7.1'
classpath 'org.ow2.asm:asm:7.2'
classpath 'org.ow2.asm:asm-tree:7.2'
}
}
import groovy.json.JsonSlurper
@@ -48,6 +52,8 @@ plugins {
}
apply plugin: 'eclipse'
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version'))
ext {
JAR_SIGNER = null
if (project.hasProperty('keystore')) {
@@ -58,9 +64,9 @@ ext {
]
}
MAPPING_CHANNEL = 'snapshot'
MAPPING_VERSION = '20190719-1.14.3'
MC_VERSION = '1.14.4'
MCP_VERSION = '20190829.143755'
MAPPING_VERSION = '20200514-1.15.1'
MC_VERSION = '1.15.2'
MCP_VERSION = '20200515.085601'
}
project(':mcp') {
@@ -78,11 +84,15 @@ project(':clean') {
compileJava.sourceCompatibility = compileJava.targetCompatibility = sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
repositories {
mavenCentral()
//mavenCentral() //TODO: Update Gradle to use HTTPS by default
maven {
name 'maven_central'
url 'https://repo.maven.apache.org/maven2/'
}
}
dependencies {
implementation 'net.minecraftforge:forgespi:1.1.+'
implementation 'net.minecraftforge:forgespi:2.0.+'
}
patcher {
parent = project(':mcp')
@@ -175,24 +185,34 @@ project(':forge') {
srcDirs = ["$rootDir/src/userdev/resources"]
}
}
userdev_test {
compileClasspath += sourceSets.userdev.runtimeClasspath
runtimeClasspath += sourceSets.userdev.runtimeClasspath
compileClasspath += sourceSets.test.runtimeClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
//Eclipse adds the sourcesets twice, once where we tell it to, once in the projects folder. No idea why. So delete them
eclipse.classpath.file.whenMerged { cls -> cls.entries.removeIf { e -> e instanceof SourceFolder && e.path.startsWith('src/') && !e.path.startsWith('src/main/') } }
repositories {
mavenLocal()
mavenCentral()
//mavenCentral() //TODO: Update Gradle to use HTTPS by default
maven {
name 'maven_central'
url 'https://repo.maven.apache.org/maven2/'
}
}
ext {
SPEC_VERSION = '28.1' // This is overwritten by git tag, but here so dev time doesnt explode
SPEC_VERSION = '31.2' // This is overwritten by git tag, but here so dev time doesnt explode
// The new versioning sceme is <MCVersion>-<ForgeMC>.<RB>.<CommitsSinceRB>
// ForgeMC is a unique identifier for every MC version we have supported.
// Essentially, the same as the old, except dropping the first number, and the builds are no longer unique.
MCP_ARTIFACT = project(':mcp').mcp.config
SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.8.5'
VERSION_JSON = project(':mcp').file('build/mcp/downloadJson/version.json')
BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.7:fatjar'
BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
}
def getVersion = {
@@ -212,6 +232,7 @@ project(':forge') {
}
version = getVersion()
println('Forge Version: ' + version)
patcher {
exc = file("$rootDir/src/main/resources/forge.exc")
@@ -254,6 +275,8 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
ideaModule "${rootProject.name}.${project.name}.userdev_test"
mods {
TestMods { sources sourceSets.test }
}
@@ -286,6 +309,8 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
ideaModule "${rootProject.name}.${project.name}.userdev_test"
mods {
TestMods { sources sourceSets.test }
}
@@ -321,6 +346,8 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
ideaModule "${rootProject.name}.${project.name}.userdev_test"
mods {
tests { sources sourceSets.test }
}
@@ -402,22 +429,21 @@ project(':forge') {
fmllauncherImplementation.extendsFrom(installer)
}
dependencies {
installer 'org.ow2.asm:asm:6.2'
installer 'org.ow2.asm:asm-commons:6.2'
installer 'org.ow2.asm:asm-tree:6.2'
installer 'cpw.mods:modlauncher:4.1.+'
installer 'cpw.mods:grossjava9hacks:1.1.+'
installer 'net.minecraftforge:accesstransformers:1.0.+:shadowed'
installer 'net.minecraftforge:eventbus:1.0.+:service'
installer 'net.minecraftforge:forgespi:1.5.+'
installer 'net.minecraftforge:coremods:1.0.+'
installer 'org.ow2.asm:asm:7.2'
installer 'org.ow2.asm:asm-commons:7.2'
installer 'org.ow2.asm:asm-tree:7.2'
installer 'cpw.mods:modlauncher:5.1.+'
installer 'cpw.mods:grossjava9hacks:1.3.+'
installer 'net.minecraftforge:accesstransformers:2.1.+:shadowed'
installer 'net.minecraftforge:eventbus:2.2.+:service'
installer 'net.minecraftforge:forgespi:2.1.+'
installer 'net.minecraftforge:coremods:2.0.+'
installer 'net.minecraftforge:unsafe:0.2.+'
installer 'com.electronwill.night-config:core:3.6.0'
installer 'com.electronwill.night-config:toml:3.6.0'
installer 'com.electronwill.night-config:core:3.6.2'
installer 'com.electronwill.night-config:toml:3.6.2'
installer 'org.jline:jline:3.12.+'
installer 'org.apache.maven:maven-artifact:3.6.0'
installer 'net.jodah:typetools:0.6.0'
installer 'java3d:vecmath:1.5.2'
installer 'net.jodah:typetools:0.8.+'
installer 'org.apache.logging.log4j:log4j-api:2.11.2'
installer 'org.apache.logging.log4j:log4j-core:2.11.2'
installer 'net.minecrell:terminalconsoleappender:1.2.+'
@@ -796,16 +822,16 @@ project(':forge') {
server: '/data/server.lzma'
],
MC_SLIM: [
client: "[net.minecraft:client:${MC_VERSION}:slim${MC_VERSION == '1.14.4' ? '-stable' : ''}]",
server: "[net.minecraft:server:${MC_VERSION}:slim${MC_VERSION == '1.14.4' ? '-stable' : ''}]"
client: "[net.minecraft:client:${MC_VERSION}:slim]",
server: "[net.minecraft:server:${MC_VERSION}:slim]"
],
MC_SLIM_SHA: [
client: "'${sha1(tasks.getByName('downloadClientSlim').output)}'",
server: "'${sha1(tasks.getByName('downloadServerSlim').output)}'"
],
MC_EXTRA: [
client: "[net.minecraft:client:${MC_VERSION}:extra${MC_VERSION == '1.14.4' ? '-stable' : ''}]",
server: "[net.minecraft:server:${MC_VERSION}:extra${MC_VERSION == '1.14.4' ? '-stable' : ''}]"
client: "[net.minecraft:client:${MC_VERSION}:extra]",
server: "[net.minecraft:server:${MC_VERSION}:extra]"
],
MC_EXTRA_SHA: [
client: "'${sha1(tasks.getByName('downloadClientExtra').output)}'",
@@ -893,7 +919,7 @@ project(':forge') {
['slim', 'extra'].each { type ->
def name = "download${side.capitalize()}${type.capitalize()}"
task "${name}"(type: DownloadMavenArtifact) {
artifact = "net.minecraft:${side}:${MC_VERSION}${MC_VERSION == '1.14.4' ? '-stable' : ''}:${type}"
artifact = "net.minecraft:${side}:${MC_VERSION}:${type}"
}
installerJson.dependsOn(name)
installerJson.inputs.file(tasks.getByName(name).output)
@@ -946,7 +972,7 @@ project(':forge') {
artifacts.each { key, lib ->
classpath += "libraries/${lib.downloads.artifact.path} "
}
classpath += "libraries/net/minecraft/server/${MC_VERSION}/server-${MC_VERSION}-extra${MC_VERSION == '1.14.4' ? '-stable' : ''}.jar"
classpath += "libraries/net/minecraft/server/${MC_VERSION}/server-${MC_VERSION}-extra.jar"
MANIFESTS.each{ pkg, values ->
if (pkg == '/') {
@@ -979,7 +1005,7 @@ project(':forge') {
extension = 'jar' //Needs to be Zip task to not override Manifest, so set extension
destinationDir = file('build/libs')
from(extraTxts)
from(rootProject.file('/src/main/resources/forge_logo.png')) {
from(rootProject.file('/installer_logo.png')) {
rename{'big_logo.png'}
}
from(rootProject.file('/src/main/resources/url.png'))
@@ -1293,12 +1319,18 @@ def getArtifacts(project, config, classifiers) {
}
def checkExists(url) {
def code = new URL(url).openConnection().with {
requestMethod = 'HEAD'
connect()
responseCode
try {
def code = new URL(url).openConnection().with {
requestMethod = 'HEAD'
connect()
responseCode
}
return code == 200
} catch (Exception e) {
if (e.toString().contains('unable to find valid certification path to requested target'))
throw new RuntimeException('Failed to connect to ' + url + ': Missing certificate root authority, try updating java')
throw e
}
return code == 200
}
def getClasspath(project, libs, artifact) {
+4 -4
View File
@@ -2,16 +2,16 @@
MinecraftForge
=============
[![Stable Release](https://img.shields.io/badge/dynamic/json?url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json&label=Stable&prefix=1.14.4-&query=$.promos["1.14.4-recommended"]&color=brightgreen&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtc3RhciBmYS13LTE4IiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pY29uPSJzdGFyIiBkYXRhLXByZWZpeD0iZmFzIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMjU5LjMgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNWMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4zIDIzLjIgNDYgNDYuNCAzMy43TDI4OCA0MzkuNmwxMzAuNyA2OC43YzIzLjIgMTIuMiA1MC45LTcuNCA0Ni40LTMzLjdsLTI1LTE0NS41IDEwNS43LTEwM2MxOS0xOC41IDguNS01MC44LTE3LjctNTQuNkwzODIgMTUwLjIgMzE2LjcgMTcuOGMtMTEuNy0yMy42LTQ1LjYtMjMuOS01Ny40IDB6IiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K)](https://files.minecraftforge.net)
[![Latest Release](https://img.shields.io/badge/dynamic/json?url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json&label=Latest&prefix=1.14.4-&query=$.promos["1.14.4-latest"]&color=blue&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtYnVnIGZhLXctMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWljb249ImJ1ZyIgZGF0YS1wcmVmaXg9ImZhcyIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUxMS45ODggMjg4LjljLS40NzggMTcuNDMtMTUuMjE3IDMxLjEtMzIuNjUzIDMxLjFINDI0djE2YzAgMjEuODY0LTQuODgyIDQyLjU4NC0xMy42IDYxLjE0NWw2MC4yMjggNjAuMjI4YzEyLjQ5NiAxMi40OTcgMTIuNDk2IDMyLjc1OCAwIDQ1LjI1NS0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDBsLTU0LjczNi01NC43MzZDMzQ1Ljg4NiA0NjcuOTY1IDMxNC4zNTEgNDgwIDI4MCA0ODBWMjM2YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0NGMtMzQuMzUxIDAtNjUuODg2LTEyLjAzNS05MC42MzYtMzIuMTA4bC01NC43MzYgNTQuNzM2Yy0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDAtMTIuNDk2LTEyLjQ5Ny0xMi40OTYtMzIuNzU4IDAtNDUuMjU1bDYwLjIyOC02MC4yMjhDOTIuODgyIDM3OC41ODQgODggMzU3Ljg2NCA4OCAzMzZ2LTE2SDMyLjY2NkMxNS4yMyAzMjAgLjQ5MSAzMDYuMzMuMDEzIDI4OC45LS40ODQgMjcwLjgxNiAxNC4wMjggMjU2IDMyIDI1Nmg1NnYtNTguNzQ1bC00Ni42MjgtNDYuNjI4Yy0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTUgMTIuNDk4LTEyLjQ5NyAzMi43NTgtMTIuNDk3IDQ1LjI1NiAwTDE0MS4yNTUgMTYwaDIyOS40ODlsNTQuNjI3LTU0LjYyN2MxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDAgMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1TDQyNCAxOTcuMjU1VjI1Nmg1NmMxNy45NzIgMCAzMi40ODQgMTQuODE2IDMxLjk4OCAzMi45ek0yNTcgMGMtNjEuODU2IDAtMTEyIDUwLjE0NC0xMTIgMTEyaDIyNEMzNjkgNTAuMTQ0IDMxOC44NTYgMCAyNTcgMHoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=
[![Stable Release](https://img.shields.io/badge/dynamic/json?url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json&label=Stable&prefix=1.15.2-&query=$.promos["1.15.2-recommended"]&color=brightgreen&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtc3RhciBmYS13LTE4IiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1pY29uPSJzdGFyIiBkYXRhLXByZWZpeD0iZmFzIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMjU5LjMgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNWMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4zIDIzLjIgNDYgNDYuNCAzMy43TDI4OCA0MzkuNmwxMzAuNyA2OC43YzIzLjIgMTIuMiA1MC45LTcuNCA0Ni40LTMzLjdsLTI1LTE0NS41IDEwNS43LTEwM2MxOS0xOC41IDguNS01MC44LTE3LjctNTQuNkwzODIgMTUwLjIgMzE2LjcgMTcuOGMtMTEuNy0yMy42LTQ1LjYtMjMuOS01Ny40IDB6IiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K)](https://files.minecraftforge.net)
[![Latest Release](https://img.shields.io/badge/dynamic/json?url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json&label=Latest&prefix=1.15.2-&query=$.promos["1.15.2-latest"]&color=blue&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtYnVnIGZhLXctMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWljb249ImJ1ZyIgZGF0YS1wcmVmaXg9ImZhcyIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUxMS45ODggMjg4LjljLS40NzggMTcuNDMtMTUuMjE3IDMxLjEtMzIuNjUzIDMxLjFINDI0djE2YzAgMjEuODY0LTQuODgyIDQyLjU4NC0xMy42IDYxLjE0NWw2MC4yMjggNjAuMjI4YzEyLjQ5NiAxMi40OTcgMTIuNDk2IDMyLjc1OCAwIDQ1LjI1NS0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDBsLTU0LjczNi01NC43MzZDMzQ1Ljg4NiA0NjcuOTY1IDMxNC4zNTEgNDgwIDI4MCA0ODBWMjM2YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0NGMtMzQuMzUxIDAtNjUuODg2LTEyLjAzNS05MC42MzYtMzIuMTA4bC01NC43MzYgNTQuNzM2Yy0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDAtMTIuNDk2LTEyLjQ5Ny0xMi40OTYtMzIuNzU4IDAtNDUuMjU1bDYwLjIyOC02MC4yMjhDOTIuODgyIDM3OC41ODQgODggMzU3Ljg2NCA4OCAzMzZ2LTE2SDMyLjY2NkMxNS4yMyAzMjAgLjQ5MSAzMDYuMzMuMDEzIDI4OC45LS40ODQgMjcwLjgxNiAxNC4wMjggMjU2IDMyIDI1Nmg1NnYtNTguNzQ1bC00Ni42MjgtNDYuNjI4Yy0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTUgMTIuNDk4LTEyLjQ5NyAzMi43NTgtMTIuNDk3IDQ1LjI1NiAwTDE0MS4yNTUgMTYwaDIyOS40ODlsNTQuNjI3LTU0LjYyN2MxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDAgMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1TDQyNCAxOTcuMjU1VjI1Nmg1NmMxNy45NzIgMCAzMi40ODQgMTQuODE2IDMxLjk4OCAzMi45ek0yNTcgMGMtNjEuODU2IDAtMTEyIDUwLjE0NC0xMTIgMTEyaDIyNEMzNjkgNTAuMTQ0IDMxOC44NTYgMCAyNTcgMHoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=
)](https://files.minecraftforge.net) [![Discord](https://img.shields.io/discord/313125603924639766.svg?color=%237289da&label=Discord&logo=discord&logoColor=%237289da)](https://discord.gg/UvedJ9m) [![Support](https://img.shields.io/badge/Patreon-Support-orange.svg?logo=Patreon)](https://www.patreon.com/LexManos) [![Merch](https://img.shields.io/badge/Flocker-Merch-blueviolet.svg)](https://forgedev.flocker.tv/)
Forge is a free, open-source modding API all of your favourite mods use!
| Version | Support |
| ------------- | ------------- |
| 1.14.x | Active |
| 1.12.x | Legacy |
| 1.15.x | Active |
| 1.14.x | LTS |
* [Download]
* [Forum]
+1 -1
View File
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

+6 -9
View File
@@ -127,18 +127,15 @@ jar {
}
// Example configuration to allow publishing using the maven-publish task
// we define a custom artifact that is sourced from the reobfJar output task
// and then declare that to be published
// Note you'll need to add a repository here
def reobfFile = file("$buildDir/reobfJar/output.jar")
def reobfArtifact = artifacts.add('default', reobfFile) {
type 'jar'
builtBy 'reobfJar'
}
// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
//publish.dependsOn('reobfJar')
publishing {
publications {
mavenJava(MavenPublication) {
artifact reobfArtifact
artifact jar
}
}
repositories {
+3 -3
View File
@@ -6,7 +6,7 @@
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
modLoader="javafml" #mandatory
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
loaderVersion="[28,)" #mandatory (28 is current forge version)
loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
# A URL to refer people to when problems occur with this mod
issueTrackerURL="http://my.issue.tracker/" #optional
# A list of mods - how many allowed here is determined by the individual mod loader
@@ -42,7 +42,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
# Does this dependency have to exist - if not, ordering below must be specified
mandatory=true #mandatory
# The version range of the dependency
versionRange="[28,)" #mandatory
versionRange="[31,)" #mandatory
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
ordering="NONE"
# Side this dependency is applied on - BOTH, CLIENT or SERVER
@@ -51,6 +51,6 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
[[dependencies.examplemod]]
modId="minecraft"
mandatory=true
versionRange="[1.14.4]"
versionRange="[1.15.2]"
ordering="NONE"
side="BOTH"
+2 -2
View File
@@ -1,7 +1,7 @@
{
"pack": {
"description": "examplemod resources",
"pack_format": 4,
"_comment": "A pack_format of 4 requires json lang files. Note: we require v4 pack meta for all mods."
"pack_format": 5,
"_comment": "A pack_format of 5 requires json lang files and some texture changes from 1.15. Note: we require v5 pack meta for all mods."
}
}
@@ -1,24 +0,0 @@
--- a/com/mojang/blaze3d/platform/GLX.java
+++ b/com/mojang/blaze3d/platform/GLX.java
@@ -115,6 +115,10 @@
p_212906_0_.put(1286, "Operation on incomplete framebuffer");
});
+ /* Stores the last values sent into glMultiTexCoord2f */
+ public static float lastBrightnessX = 0.0f;
+ public static float lastBrightnessY = 0.0f;
+
public static void populateSnooperWithOpenGL(IDataHolder p_populateSnooperWithOpenGL_0_) {
p_populateSnooperWithOpenGL_0_.setFixedData("opengl_version", GlStateManager.getString(7938));
p_populateSnooperWithOpenGL_0_.setFixedData("opengl_vendor", GlStateManager.getString(7936));
@@ -913,6 +917,10 @@
GL13.glMultiTexCoord2f(p_glMultiTexCoord2f_0_, p_glMultiTexCoord2f_1_, p_glMultiTexCoord2f_2_);
}
+ if (p_glMultiTexCoord2f_0_ == GL_TEXTURE1) {
+ lastBrightnessX = p_glMultiTexCoord2f_1_;
+ lastBrightnessY = p_glMultiTexCoord2f_2_;
+ }
}
public static void glBlendFuncSeparate(int p_glBlendFuncSeparate_0_, int p_glBlendFuncSeparate_1_, int p_glBlendFuncSeparate_2_, int p_glBlendFuncSeparate_3_) {
@@ -0,0 +1,20 @@
--- a/com/mojang/blaze3d/platform/GlStateManager.java
+++ b/com/mojang/blaze3d/platform/GlStateManager.java
@@ -579,10 +579,17 @@
GL13.glClientActiveTexture(p_227747_0_);
}
+ /* Stores the last values sent into glMultiTexCoord2f */
+ public static float lastBrightnessX = 0.0f;
+ public static float lastBrightnessY = 0.0f;
@Deprecated
public static void func_227640_a_(int p_227640_0_, float p_227640_1_, float p_227640_2_) {
RenderSystem.assertThread(RenderSystem::isOnRenderThread);
GL13.glMultiTexCoord2f(p_227640_0_, p_227640_1_, p_227640_2_);
+ if (p_227640_0_ == GL13.GL_TEXTURE1) {
+ lastBrightnessX = p_227640_1_;
+ lastBrightnessY = p_227640_2_;
+ }
}
public static void func_227706_d_(int p_227706_0_, int p_227706_1_, int p_227706_2_, int p_227706_3_) {
@@ -0,0 +1,25 @@
--- a/com/mojang/blaze3d/vertex/IVertexBuilder.java
+++ b/com/mojang/blaze3d/vertex/IVertexBuilder.java
@@ -18,7 +18,7 @@
import org.lwjgl.system.MemoryStack;
@OnlyIn(Dist.CLIENT)
-public interface IVertexBuilder {
+public interface IVertexBuilder extends net.minecraftforge.client.extensions.IForgeVertexBuilder {
Logger field_227884_f_ = LogManager.getLogger();
IVertexBuilder func_225582_a_(double p_225582_1_, double p_225582_3_, double p_225582_5_);
@@ -96,11 +96,12 @@
f5 = p_227890_3_[k] * p_227890_6_;
}
- int l = p_227890_7_[k];
+ int l = applyBakedLighting(p_227890_7_[k], bytebuffer);
float f9 = bytebuffer.getFloat(16);
float f10 = bytebuffer.getFloat(20);
Vector4f vector4f = new Vector4f(f, f1, f2, 1.0F);
vector4f.func_229372_a_(matrix4f);
+ applyBakedNormals(vector3f, bytebuffer, p_227890_1_.func_227872_b_());
this.func_225588_a_(vector4f.func_195910_a(), vector4f.func_195913_b(), vector4f.func_195914_c(), f3, f4, f5, 1.0F, f9, f10, p_227890_8_, l, vector3f.func_195899_a(), vector3f.func_195900_b(), vector3f.func_195902_c());
}
}
@@ -0,0 +1,18 @@
--- a/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java
+++ b/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java
@@ -64,6 +64,15 @@
super.tick();
}
+ @Override
+ public boolean keyPressed(int key, int scanCode, int modifiers) {
+ if (key == org.lwjgl.glfw.GLFW.GLFW_KEY_ESCAPE) {
+ Realms.setScreen(this.field_224228_a);
+ return true;
+ }
+ return super.keyPressed(key, scanCode, modifiers);
+ }
+
public void render(int p_render_1_, int p_render_2_, float p_render_3_) {
this.renderBackground();
this.drawCenteredString(this.field_224229_b, this.width() / 2, 80, 16777215);
@@ -0,0 +1,10 @@
--- a/net/minecraft/advancements/AdvancementList.java
+++ b/net/minecraft/advancements/AdvancementList.java
@@ -96,6 +96,7 @@
}
}
+ net.minecraftforge.common.AdvancementLoadFix.buildSortedTrees(this.field_192093_c);
field_192091_a.info("Loaded {} advancements", (int)this.field_192092_b.size());
}
@@ -1,6 +1,14 @@
--- a/net/minecraft/advancements/PlayerAdvancements.java
+++ b/net/minecraft/advancements/PlayerAdvancements.java
@@ -187,6 +187,8 @@
@@ -154,6 +154,7 @@
}
this.func_192748_e();
+ if (net.minecraftforge.common.ForgeConfig.SERVER.fixAdvancementLoading.get()) net.minecraftforge.common.AdvancementLoadFix.loadVisibility(this, this.field_192759_g, this.field_192760_h, this.field_192758_f, this.field_192761_i, this::func_192738_c); else
this.func_192752_d();
this.func_192751_c();
}
@@ -187,6 +188,8 @@
}
public boolean func_192750_a(Advancement p_192750_1_, String p_192750_2_) {
@@ -9,7 +17,7 @@
boolean flag = false;
AdvancementProgress advancementprogress = this.func_192747_a(p_192750_1_);
boolean flag1 = advancementprogress.func_192105_a();
@@ -199,6 +201,7 @@
@@ -199,6 +202,7 @@
if (p_192750_1_.func_192068_c() != null && p_192750_1_.func_192068_c().func_193220_i() && this.field_192762_j.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223620_w)) {
this.field_192756_d.func_184103_al().func_148539_a(new TranslationTextComponent("chat.type.advancement." + p_192750_1_.func_192068_c().func_192291_d().func_192307_a(), this.field_192762_j.func_145748_c_(), p_192750_1_.func_193123_j()));
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/advancements/criterion/ItemPredicate.java
+++ b/net/minecraft/advancements/criterion/ItemPredicate.java
@@ -25,6 +25,8 @@
@@ -26,6 +26,8 @@
import net.minecraft.util.registry.Registry;
public class ItemPredicate {
@@ -9,7 +9,7 @@
public static final ItemPredicate field_192495_a = new ItemPredicate();
@Nullable
private final Tag<Item> field_200018_b;
@@ -93,6 +95,11 @@
@@ -105,6 +107,11 @@
public static ItemPredicate func_192492_a(@Nullable JsonElement p_192492_0_) {
if (p_192492_0_ != null && !p_192492_0_.isJsonNull()) {
JsonObject jsonobject = JSONUtils.func_151210_l(p_192492_0_, "item");
@@ -21,7 +21,7 @@
MinMaxBounds.IntBound minmaxbounds$intbound = MinMaxBounds.IntBound.func_211344_a(jsonobject.get("count"));
MinMaxBounds.IntBound minmaxbounds$intbound1 = MinMaxBounds.IntBound.func_211344_a(jsonobject.get("durability"));
if (jsonobject.has("data")) {
@@ -181,6 +188,14 @@
@@ -204,6 +211,14 @@
}
}
@@ -35,4 +35,4 @@
+
public static class Builder {
private final List<EnchantmentPredicate> field_200312_a = Lists.newArrayList();
@Nullable
private final List<EnchantmentPredicate> field_226657_b_ = Lists.newArrayList();
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/AbstractRailBlock.java
+++ b/net/minecraft/block/AbstractRailBlock.java
@@ -35,7 +35,7 @@
@@ -36,7 +36,7 @@
}
public VoxelShape func_220053_a(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) {
@@ -9,7 +9,7 @@
return railshape != null && railshape.func_208092_c() ? field_190959_b : field_185590_a;
}
@@ -57,7 +57,7 @@
@@ -56,7 +56,7 @@
public void func_220069_a(BlockState p_220069_1_, World p_220069_2_, BlockPos p_220069_3_, Block p_220069_4_, BlockPos p_220069_5_, boolean p_220069_6_) {
if (!p_220069_2_.field_72995_K) {
@@ -27,8 +27,8 @@
p_196243_2_.func_195593_d(p_196243_3_.func_177984_a(), this);
}
@@ -127,5 +127,66 @@
}
@@ -134,5 +134,66 @@
return blockstate.func_206870_a(this.func_176560_l(), flag ? RailShape.EAST_WEST : RailShape.NORTH_SOUTH);
}
+ //Forge: Use getRailDirection(IBlockAccess, BlockPos, IBlockState, EntityMinecart) for enhanced ability
@@ -0,0 +1,16 @@
--- a/net/minecraft/block/BambooBlock.java
+++ b/net/minecraft/block/BambooBlock.java
@@ -91,10 +91,11 @@
if (!p_225534_1_.func_196955_c(p_225534_2_, p_225534_3_)) {
p_225534_2_.func_175655_b(p_225534_3_, true);
} else if (p_225534_1_.func_177229_b(field_220266_f) == 0) {
- if (p_225534_4_.nextInt(3) == 0 && p_225534_2_.func_175623_d(p_225534_3_.func_177984_a()) && p_225534_2_.func_226659_b_(p_225534_3_.func_177984_a(), 0) >= 9) {
+ if (true) {
int i = this.func_220260_b(p_225534_2_, p_225534_3_) + 1;
- if (i < 16) {
+ if (i < 16 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(3) == 0 && p_225534_2_.func_175623_d(p_225534_3_.func_177984_a()) && p_225534_2_.func_226659_b_(p_225534_3_.func_177984_a(), 0) >= 9)) {
this.func_220258_a(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_, i);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
@@ -1,13 +1,13 @@
--- a/net/minecraft/block/BedBlock.java
+++ b/net/minecraft/block/BedBlock.java
@@ -85,7 +85,9 @@
@@ -88,7 +88,9 @@
}
}
- if (p_220051_2_.field_73011_w.func_76567_e() && p_220051_2_.func_180494_b(p_220051_3_) != Biomes.field_76778_j) {
+ net.minecraftforge.common.extensions.IForgeDimension.SleepResult sleepResult = p_220051_2_.field_73011_w.canSleepAt(p_220051_4_, p_220051_3_);
- if (p_225533_2_.field_73011_w.func_76567_e() && p_225533_2_.func_226691_t_(p_225533_3_) != Biomes.field_76778_j) {
+ net.minecraftforge.common.extensions.IForgeDimension.SleepResult sleepResult = p_225533_2_.field_73011_w.canSleepAt(p_225533_4_, p_225533_3_);
+ if (sleepResult != net.minecraftforge.common.extensions.IForgeDimension.SleepResult.BED_EXPLODES) {
+ if (sleepResult == net.minecraftforge.common.extensions.IForgeDimension.SleepResult.DENY) return true;
if (p_220051_1_.func_177229_b(field_176471_b)) {
p_220051_4_.func_146105_b(new TranslationTextComponent("block.minecraft.bed.occupied"), true);
return true;
+ if (sleepResult == net.minecraftforge.common.extensions.IForgeDimension.SleepResult.DENY) return ActionResultType.SUCCESS;
if (p_225533_1_.func_177229_b(field_176471_b)) {
if (!this.func_226861_a_(p_225533_2_, p_225533_3_)) {
p_225533_4_.func_146105_b(new TranslationTextComponent("block.minecraft.bed.occupied"), true);
@@ -13,18 +13,27 @@
private static final Direction[] field_212556_a = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP};
private static final LoadingCache<VoxelShape, Boolean> field_223006_b = CacheBuilder.newBuilder().maximumSize(512L).weakKeys().build(new CacheLoader<VoxelShape, Boolean>() {
public Boolean load(VoxelShape p_load_1_) {
@@ -151,7 +152,7 @@
@Deprecated
public boolean func_220067_a(BlockState p_220067_1_, IBlockReader p_220067_2_, BlockPos p_220067_3_, EntityType<?> p_220067_4_) {
- return p_220067_1_.func_224755_d(p_220067_2_, p_220067_3_, Direction.UP) && this.field_149784_t < 14;
+ return p_220067_1_.func_224755_d(p_220067_2_, p_220067_3_, Direction.UP) && p_220067_1_.getLightValue(p_220067_2_, p_220067_3_) < 14;
}
@Deprecated
@@ -246,6 +247,10 @@
this.field_149765_K = p_i48440_1_.field_200961_i;
this.field_208621_p = p_i48440_1_.field_208772_j;
this.field_220085_g = p_i48440_1_.field_222381_j;
this.field_149781_w = p_i48440_1_.field_200958_f;
this.field_149782_v = p_i48440_1_.field_200959_g;
this.field_149789_z = p_i48440_1_.field_200960_h;
+ this.harvestLevel = p_i48440_1_.harvestLevel;
+ this.harvestTool = p_i48440_1_.harvestTool;
+ final ResourceLocation lootTableCache = p_i48440_1_.field_222381_j;
+ this.lootTableSupplier = lootTableCache != null ? () -> lootTableCache : p_i48440_1_.lootTableSupplier != null ? p_i48440_1_.lootTableSupplier : () -> new ResourceLocation(this.getRegistryName().func_110624_b(), "blocks/" + this.getRegistryName().func_110623_a());
this.field_176227_L = builder.func_206893_a(BlockState::new);
this.func_180632_j(this.field_176227_L.func_177621_b());
}
@@ -291,7 +296,7 @@
this.field_149765_K = p_i48440_1_.field_200961_i;
this.field_226886_f_ = p_i48440_1_.field_226893_j_;
this.field_226887_g_ = p_i48440_1_.field_226894_k_;
@@ -297,7 +302,7 @@
@Deprecated
public boolean func_196253_a(BlockState p_196253_1_, BlockItemUseContext p_196253_2_) {
@@ -33,7 +42,7 @@
}
@Deprecated
@@ -303,8 +308,9 @@
@@ -314,8 +319,9 @@
return this.field_149789_z;
}
@@ -44,28 +53,19 @@
}
@Deprecated
@@ -315,7 +321,7 @@
@Deprecated
@OnlyIn(Dist.CLIENT)
public int func_220058_a(BlockState p_220058_1_, IEnviromentBlockReader p_220058_2_, BlockPos p_220058_3_) {
- return p_220058_2_.func_217338_b(p_220058_3_, p_220058_1_.func_185906_d());
+ return p_220058_2_.func_217338_b(p_220058_3_, p_220058_1_.getLightValue(p_220058_2_, p_220058_3_));
}
@OnlyIn(Dist.CLIENT)
@@ -460,10 +466,9 @@
@@ -471,10 +477,9 @@
@Deprecated
public void func_196243_a(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, boolean p_196243_5_) {
- if (this.func_149716_u() && p_196243_1_.func_177230_c() != p_196243_4_.func_177230_c()) {
+ if (p_196243_1_.hasTileEntity() && p_196243_1_.func_177230_c() != p_196243_4_.func_177230_c()) {
+ if (p_196243_1_.hasTileEntity() && (p_196243_1_.func_177230_c() != p_196243_4_.func_177230_c() || !p_196243_4_.hasTileEntity())) {
p_196243_2_.func_175713_t(p_196243_3_);
}
-
}
@Deprecated
@@ -472,8 +477,8 @@
@@ -483,8 +488,8 @@
if (f == -1.0F) {
return 0.0F;
} else {
@@ -76,7 +76,7 @@
}
}
@@ -483,8 +488,7 @@
@@ -494,8 +499,7 @@
public ResourceLocation func_220068_i() {
if (this.field_220085_g == null) {
@@ -86,7 +86,7 @@
}
return this.field_220085_g;
@@ -553,7 +557,7 @@
@@ -555,7 +559,7 @@
}
public static void func_180635_a(World p_180635_0_, BlockPos p_180635_1_, ItemStack p_180635_2_) {
@@ -95,7 +95,7 @@
float f = 0.5F;
double d0 = (double)(p_180635_0_.field_73012_v.nextFloat() * 0.5F) + 0.25D;
double d1 = (double)(p_180635_0_.field_73012_v.nextFloat() * 0.5F) + 0.25D;
@@ -565,7 +569,7 @@
@@ -567,7 +571,7 @@
}
public void func_180637_b(World p_180637_1_, BlockPos p_180637_2_, int p_180637_3_) {
@@ -104,7 +104,7 @@
while(p_180637_3_ > 0) {
int i = ExperienceOrbEntity.func_70527_a(p_180637_3_);
p_180637_3_ -= i;
@@ -575,6 +579,7 @@
@@ -577,6 +581,7 @@
}
@@ -112,7 +112,7 @@
public float func_149638_a() {
return this.field_149781_w;
}
@@ -677,6 +682,7 @@
@@ -675,6 +680,7 @@
p_176216_2_.func_213317_d(p_176216_2_.func_213322_ci().func_216372_d(1.0D, 0.0D, 1.0D));
}
@@ -120,7 +120,7 @@
public ItemStack func_185473_a(IBlockReader p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) {
return new ItemStack(this);
}
@@ -690,6 +696,7 @@
@@ -688,6 +694,7 @@
return Fluids.field_204541_a.func_207188_f();
}
@@ -128,7 +128,7 @@
public float func_208618_m() {
return this.field_149765_K;
}
@@ -710,6 +717,7 @@
@@ -716,6 +723,7 @@
public void func_176224_k(World p_176224_1_, BlockPos p_176224_2_) {
}
@@ -136,7 +136,7 @@
public boolean func_149659_a(Explosion p_149659_1_) {
return true;
}
@@ -754,6 +762,7 @@
@@ -760,6 +768,7 @@
}
}
@@ -144,7 +144,7 @@
public SoundType func_220072_p(BlockState p_220072_1_) {
return this.field_149762_H;
}
@@ -763,7 +772,7 @@
@@ -769,7 +778,7 @@
this.field_220086_i = Item.func_150898_a(this);
}
@@ -153,7 +153,7 @@
}
public boolean func_208619_r() {
@@ -771,7 +780,7 @@
@@ -777,13 +786,81 @@
}
public String toString() {
@@ -162,17 +162,7 @@
}
@OnlyIn(Dist.CLIENT)
@@ -779,13 +788,81 @@
}
public static boolean func_196252_e(Block p_196252_0_) {
- return p_196252_0_ == Blocks.field_150348_b || p_196252_0_ == Blocks.field_196650_c || p_196252_0_ == Blocks.field_196654_e || p_196252_0_ == Blocks.field_196656_g;
+ return net.minecraftforge.common.Tags.Blocks.STONE.func_199685_a_(p_196252_0_);
}
public static boolean func_196245_f(Block p_196245_0_) {
- return p_196245_0_ == Blocks.field_150346_d || p_196245_0_ == Blocks.field_196660_k || p_196245_0_ == Blocks.field_196661_l;
+ return net.minecraftforge.common.Tags.Blocks.DIRT.func_199685_a_(p_196245_0_);
public void func_190948_a(ItemStack p_190948_1_, @Nullable IBlockReader p_190948_2_, List<ITextComponent> p_190948_3_, ITooltipFlag p_190948_4_) {
}
+ /* ======================================== FORGE START =====================================*/
@@ -217,10 +207,10 @@
+ case Nether: return this.getBlock() == Blocks.field_150425_aM;
+ case Crop: return this.getBlock() == Blocks.field_150458_ak;
+ case Cave: return Block.func_220056_d(state, world, pos, Direction.UP);
+ case Plains: return this.getBlock() == Blocks.field_196658_i || Block.func_196245_f(this) || this.getBlock() == Blocks.field_150458_ak;
+ case Plains: return this.getBlock() == Blocks.field_196658_i || net.minecraftforge.common.Tags.Blocks.DIRT.func_199685_a_(this) || this.getBlock() == Blocks.field_150458_ak;
+ case Water: return state.func_185904_a() == Material.field_151586_h; //&& state.getValue(BlockLiquidWrapper)
+ case Beach:
+ boolean isBeach = this.getBlock() == Blocks.field_196658_i || Block.func_196245_f(this) || this.getBlock() == Blocks.field_150354_m;
+ boolean isBeach = this.getBlock() == Blocks.field_196658_i || net.minecraftforge.common.Tags.Blocks.DIRT.func_199685_a_(this) || this.getBlock() == Blocks.field_150354_m;
+ boolean hasWater = (world.func_180495_p(pos.func_177974_f()).func_185904_a() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177976_e()).func_185904_a() == Material.field_151586_h ||
+ world.func_180495_p(pos.func_177978_c()).func_185904_a() == Material.field_151586_h ||
@@ -246,9 +236,9 @@
public static enum OffsetType {
NONE,
XZ,
@@ -804,6 +881,9 @@
private float field_200961_i = 0.6F;
@@ -805,6 +882,9 @@
private ResourceLocation field_222381_j;
private boolean field_226895_m_ = true;
private boolean field_208772_j;
+ private int harvestLevel = -1;
+ private net.minecraftforge.common.ToolType harvestTool;
@@ -256,16 +246,16 @@
private Properties(Material p_i48616_1_, MaterialColor p_i48616_2_) {
this.field_200953_a = p_i48616_1_;
@@ -834,6 +914,8 @@
block$properties.field_200956_d = p_200950_0_.field_149762_H;
block$properties.field_200961_i = p_200950_0_.func_208618_m();
@@ -837,6 +917,8 @@
block$properties.field_226893_j_ = p_200950_0_.func_226891_m_();
block$properties.field_208772_j = p_200950_0_.field_208621_p;
block$properties.field_226895_m_ = p_200950_0_.field_226888_j_;
+ block$properties.harvestLevel = p_200950_0_.harvestLevel;
+ block$properties.harvestTool = p_200950_0_.harvestTool;
return block$properties;
}
@@ -882,13 +964,23 @@
@@ -901,13 +983,23 @@
return this;
}
@@ -1,23 +1,23 @@
--- a/net/minecraft/block/Blocks.java
+++ b/net/minecraft/block/Blocks.java
@@ -13,6 +13,7 @@
import net.minecraft.potion.Effects;
@@ -14,6 +14,7 @@
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.registry.Registry;
[email protected]("minecraft")
public class Blocks {
public static final Block field_150350_a = func_222382_a("air", new AirBlock(Block.Properties.func_200945_a(Material.field_151579_a).func_200942_a().func_222380_e()));
public static final Block field_150348_b = func_222382_a("stone", new Block(Block.Properties.func_200949_a(Material.field_151576_e, MaterialColor.field_151665_m).func_200948_a(1.5F, 6.0F)));
@@ -104,7 +105,7 @@
public static final Block field_196601_az = func_222382_a("green_bed", new BedBlock(DyeColor.GREEN, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F)));
public static final Block field_196550_aA = func_222382_a("red_bed", new BedBlock(DyeColor.RED, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F)));
public static final Block field_196551_aB = func_222382_a("black_bed", new BedBlock(DyeColor.BLACK, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F)));
@@ -105,7 +106,7 @@
public static final Block field_196601_az = func_222382_a("green_bed", new BedBlock(DyeColor.GREEN, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F).func_226896_b_()));
public static final Block field_196550_aA = func_222382_a("red_bed", new BedBlock(DyeColor.RED, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F).func_226896_b_()));
public static final Block field_196551_aB = func_222382_a("black_bed", new BedBlock(DyeColor.BLACK, Block.Properties.func_200945_a(Material.field_151580_n).func_200947_a(SoundType.field_185848_a).func_200943_b(0.2F).func_226896_b_()));
- public static final Block field_196552_aC = func_222382_a("powered_rail", new PoweredRailBlock(Block.Properties.func_200945_a(Material.field_151594_q).func_200942_a().func_200943_b(0.7F).func_200947_a(SoundType.field_185852_e)));
+ public static final Block field_196552_aC = func_222382_a("powered_rail", new PoweredRailBlock(Block.Properties.func_200945_a(Material.field_151594_q).func_200942_a().func_200943_b(0.7F).func_200947_a(SoundType.field_185852_e), true));
public static final Block field_150319_E = func_222382_a("detector_rail", new DetectorRailBlock(Block.Properties.func_200945_a(Material.field_151594_q).func_200942_a().func_200943_b(0.7F).func_200947_a(SoundType.field_185852_e)));
public static final Block field_150320_F = func_222382_a("sticky_piston", new PistonBlock(true, Block.Properties.func_200945_a(Material.field_76233_E).func_200943_b(0.5F)));
public static final Block field_196553_aF = func_222382_a("cobweb", new WebBlock(Block.Properties.func_200945_a(Material.field_151569_G).func_200942_a().func_200943_b(4.0F)));
@@ -694,16 +695,4 @@
@@ -701,16 +702,4 @@
private static Block func_222382_a(String p_222382_0_, Block p_222382_1_) {
return Registry.func_218325_a(Registry.field_212618_g, p_222382_0_, p_222382_1_);
}
@@ -19,8 +19,8 @@
}
@@ -33,4 +35,11 @@
public boolean func_200123_i(BlockState p_200123_1_, IBlockReader p_200123_2_, BlockPos p_200123_3_) {
return true;
public boolean func_196266_a(BlockState p_196266_1_, IBlockReader p_196266_2_, BlockPos p_196266_3_, PathType p_196266_4_) {
return p_196266_4_ == PathType.AIR && !this.field_196274_w ? true : super.func_196266_a(p_196266_1_, p_196266_2_, p_196266_3_, p_196266_4_);
}
+
+ @Override
@@ -1,8 +1,8 @@
--- a/net/minecraft/block/CactusBlock.java
+++ b/net/minecraft/block/CactusBlock.java
@@ -19,7 +19,7 @@
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
-public class CactusBlock extends Block {
+public class CactusBlock extends Block implements net.minecraftforge.common.IPlantable {
@@ -12,30 +12,30 @@
@@ -30,6 +30,7 @@
}
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 1)) return; // Forge: prevent growing cactus from loading unloaded chunks with block update
if (!p_196267_1_.func_196955_c(p_196267_2_, p_196267_3_)) {
p_196267_2_.func_175655_b(p_196267_3_, true);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 1)) return; // Forge: prevent growing cactus from loading unloaded chunks with block update
if (!p_225534_1_.func_196955_c(p_225534_2_, p_225534_3_)) {
p_225534_2_.func_175655_b(p_225534_3_, true);
} else {
@@ -42,6 +43,7 @@
if (i < 3) {
int j = p_196267_1_.func_177229_b(field_176587_a);
+ if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, blockpos, p_196267_1_, true)) {
int j = p_225534_1_.func_177229_b(field_176587_a);
+ if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, blockpos, p_225534_1_, true)) {
if (j == 15) {
p_196267_2_.func_175656_a(blockpos, this.func_176223_P());
BlockState blockstate = p_196267_1_.func_206870_a(field_176587_a, Integer.valueOf(0));
p_225534_2_.func_175656_a(blockpos, this.func_176223_P());
BlockState blockstate = p_225534_1_.func_206870_a(field_176587_a, Integer.valueOf(0));
@@ -50,7 +52,8 @@
} else {
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_176587_a, Integer.valueOf(j + 1)), 4);
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_176587_a, Integer.valueOf(j + 1)), 4);
}
-
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
+ }
}
}
}
@@ -85,8 +88,8 @@
@@ -81,8 +84,8 @@
}
}
@@ -46,7 +46,7 @@
}
public void func_196262_a(BlockState p_196262_1_, World p_196262_2_, BlockPos p_196262_3_, Entity p_196262_4_) {
@@ -104,4 +107,14 @@
@@ -96,4 +99,14 @@
public boolean func_196266_a(BlockState p_196266_1_, IBlockReader p_196266_2_, BlockPos p_196266_3_, PathType p_196266_4_) {
return false;
}
@@ -0,0 +1,11 @@
--- a/net/minecraft/block/CampfireBlock.java
+++ b/net/minecraft/block/CampfireBlock.java
@@ -187,7 +187,7 @@
boolean flag = p_220066_4_ instanceof AbstractFireballEntity || p_220066_4_ instanceof AbstractArrowEntity && p_220066_4_.func_70027_ad();
if (flag) {
Entity entity = this.func_226913_a_(p_220066_4_);
- boolean flag1 = entity == null || entity instanceof PlayerEntity || p_220066_1_.func_82736_K().func_223586_b(GameRules.field_223599_b);
+ boolean flag1 = entity == null || entity instanceof PlayerEntity || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_220066_1_, entity);
if (flag1 && !p_220066_2_.func_177229_b(field_220101_b) && !p_220066_2_.func_177229_b(field_220103_d)) {
BlockPos blockpos = p_220066_3_.func_216350_a();
p_220066_1_.func_180501_a(blockpos, p_220066_2_.func_206870_a(BlockStateProperties.field_208190_q, Boolean.valueOf(true)), 11);
@@ -1,36 +1,36 @@
--- a/net/minecraft/block/ChorusFlowerBlock.java
+++ b/net/minecraft/block/ChorusFlowerBlock.java
@@ -30,9 +30,9 @@
p_196267_2_.func_175655_b(p_196267_3_, true);
@@ -29,9 +29,9 @@
p_225534_2_.func_175655_b(p_225534_3_, true);
} else {
BlockPos blockpos = p_196267_3_.func_177984_a();
- if (p_196267_2_.func_175623_d(blockpos) && blockpos.func_177956_o() < 256) {
+ if (p_196267_2_.func_175623_d(blockpos) && blockpos.func_177956_o() < p_196267_2_.func_201675_m().getHeight()) {
int i = p_196267_1_.func_177229_b(field_185607_a);
BlockPos blockpos = p_225534_3_.func_177984_a();
- if (p_225534_2_.func_175623_d(blockpos) && blockpos.func_177956_o() < 256) {
+ if (p_225534_2_.func_175623_d(blockpos) && blockpos.func_177956_o() < p_225534_2_.func_201675_m().getHeight()) {
int i = p_225534_1_.func_177229_b(field_185607_a);
- if (i < 5) {
+ if (i < 5 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, blockpos, p_196267_1_, true)) {
+ if (i < 5 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, blockpos, p_225534_1_, true)) {
boolean flag = false;
boolean flag1 = false;
BlockState blockstate = p_196267_2_.func_180495_p(p_196267_3_.func_177977_b());
@@ -57,7 +57,7 @@
if (j < 2 || j <= p_196267_4_.nextInt(flag1 ? 5 : 4)) {
BlockState blockstate = p_225534_2_.func_180495_p(p_225534_3_.func_177977_b());
@@ -56,7 +56,7 @@
if (j < 2 || j <= p_225534_4_.nextInt(flag1 ? 5 : 4)) {
flag = true;
}
- } else if (blockstate.func_196958_f()) {
+ } else if (blockstate.isAir(p_196267_2_, p_196267_3_.func_177977_b())) {
+ } else if (blockstate.isAir(p_225534_2_, p_225534_3_.func_177977_b())) {
flag = true;
}
@@ -89,7 +89,7 @@
@@ -88,7 +88,7 @@
} else {
this.func_185605_c(p_196267_2_, p_196267_3_);
this.func_185605_c(p_225534_2_, p_225534_3_);
}
-
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
}
@@ -127,7 +127,7 @@
@@ -126,7 +126,7 @@
BlockState blockstate = p_196260_2_.func_180495_p(p_196260_3_.func_177977_b());
Block block = blockstate.func_177230_c();
if (block != this.field_196405_b && block != Blocks.field_150377_bs) {
@@ -39,7 +39,7 @@
return false;
} else {
boolean flag = false;
@@ -140,7 +140,7 @@
@@ -139,7 +139,7 @@
}
flag = true;
@@ -3,14 +3,14 @@
@@ -30,10 +30,11 @@
}
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
- if (p_196267_2_.field_73012_v.nextInt(5) == 0) {
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
- if (p_225534_2_.field_73012_v.nextInt(5) == 0) {
+ if (true) {
int i = p_196267_1_.func_177229_b(field_176501_a);
int i = p_225534_1_.func_177229_b(field_176501_a);
- if (i < 2) {
+ if (i < 2 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_2_.field_73012_v.nextInt(5) == 0)) {
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_176501_a, Integer.valueOf(i + 1)), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
+ if (i < 2 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_2_.field_73012_v.nextInt(5) == 0)) {
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_176501_a, Integer.valueOf(i + 1)), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/ComparatorBlock.java
+++ b/net/minecraft/block/ComparatorBlock.java
@@ -66,7 +66,7 @@
@@ -71,7 +71,7 @@
blockstate = p_176397_1_.func_180495_p(blockpos);
if (blockstate.func_185912_n()) {
i = blockstate.func_185888_a(p_176397_1_, blockpos);
@@ -9,7 +9,7 @@
ItemFrameEntity itemframeentity = this.func_176461_a(p_176397_1_, direction, blockpos);
if (itemframeentity != null) {
i = itemframeentity.func_174866_q();
@@ -152,4 +152,16 @@
@@ -157,4 +157,16 @@
protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
p_206840_1_.func_206894_a(field_185512_D, field_176463_b, field_196348_c);
}
@@ -1,22 +1,22 @@
--- a/net/minecraft/block/CropsBlock.java
+++ b/net/minecraft/block/CropsBlock.java
@@ -57,12 +57,14 @@
@@ -58,12 +58,14 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_196267_2_.func_201669_a(p_196267_3_, 0) >= 9) {
int i = this.func_185527_x(p_196267_1_);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
super.func_225534_a_(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_);
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_225534_2_.func_226659_b_(p_225534_3_, 0) >= 9) {
int i = this.func_185527_x(p_225534_1_);
if (i < this.func_185526_g()) {
float f = func_180672_a(this, p_196267_2_, p_196267_3_);
- if (p_196267_4_.nextInt((int)(25.0F / f) + 1) == 0) {
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_.nextInt((int)(25.0F / f) + 1) == 0)) {
p_196267_2_.func_180501_a(p_196267_3_, this.func_185528_e(i + 1), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
float f = func_180672_a(this, p_225534_2_, p_225534_3_);
- if (p_225534_4_.nextInt((int)(25.0F / f) + 1) == 0) {
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt((int)(25.0F / f) + 1) == 0)) {
p_225534_2_.func_180501_a(p_225534_3_, this.func_185528_e(i + 1), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
}
@@ -91,9 +93,9 @@
@@ -92,9 +94,9 @@
for(int j = -1; j <= 1; ++j) {
float f1 = 0.0F;
BlockState blockstate = p_180672_1_.func_180495_p(blockpos.func_177982_a(i, 0, j));
@@ -28,12 +28,12 @@
f1 = 3.0F;
}
}
@@ -129,7 +131,7 @@
@@ -130,7 +132,7 @@
}
public void func_196262_a(BlockState p_196262_1_, World p_196262_2_, BlockPos p_196262_3_, Entity p_196262_4_) {
- if (p_196262_4_ instanceof RavagerEntity && p_196262_2_.func_82736_K().func_223586_b(GameRules.field_223599_b)) {
+ if (p_196262_4_ instanceof RavagerEntity && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_196262_2_, p_196262_4_)) {
p_196262_2_.func_175655_b(p_196262_3_, true);
p_196262_2_.func_225521_a_(p_196262_3_, true, p_196262_4_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/DetectorRailBlock.java
+++ b/net/minecraft/block/DetectorRailBlock.java
@@ -128,6 +128,8 @@
@@ -129,6 +129,8 @@
public int func_180641_l(BlockState p_180641_1_, World p_180641_2_, BlockPos p_180641_3_) {
if (p_180641_1_.func_177229_b(field_176574_M)) {
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/EnchantingTableBlock.java
+++ b/net/minecraft/block/EnchantingTableBlock.java
@@ -53,7 +53,7 @@
@@ -54,7 +54,7 @@
if (p_180655_4_.nextInt(16) == 0) {
for(int k = 0; k <= 1; ++k) {
BlockPos blockpos = p_180655_3_.func_177982_a(i, k, j);
@@ -1,20 +1,20 @@
--- a/net/minecraft/block/FallingBlock.java
+++ b/net/minecraft/block/FallingBlock.java
@@ -35,7 +35,7 @@
@@ -29,7 +29,7 @@
}
private void func_176503_e(World p_176503_1_, BlockPos p_176503_2_) {
- if (func_185759_i(p_176503_1_.func_180495_p(p_176503_2_.func_177977_b())) && p_176503_2_.func_177956_o() >= 0) {
+ if (p_176503_1_.func_175623_d(p_176503_2_.func_177977_b()) || func_185759_i(p_176503_1_.func_180495_p(p_176503_2_.func_177977_b())) && p_176503_2_.func_177956_o() >= 0) {
if (!p_176503_1_.field_72995_K) {
FallingBlockEntity fallingblockentity = new FallingBlockEntity(p_176503_1_, (double)p_176503_2_.func_177958_n() + 0.5D, (double)p_176503_2_.func_177956_o(), (double)p_176503_2_.func_177952_p() + 0.5D, p_176503_1_.func_180495_p(p_176503_2_));
this.func_149829_a(fallingblockentity);
@@ -68,7 +68,7 @@
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
- if (func_185759_i(p_225534_2_.func_180495_p(p_225534_3_.func_177977_b())) && p_225534_3_.func_177956_o() >= 0) {
+ if (p_225534_2_.func_175623_d(p_225534_3_.func_177977_b()) || func_185759_i(p_225534_2_.func_180495_p(p_225534_3_.func_177977_b())) && p_225534_3_.func_177956_o() >= 0) {
FallingBlockEntity fallingblockentity = new FallingBlockEntity(p_225534_2_, (double)p_225534_3_.func_177958_n() + 0.5D, (double)p_225534_3_.func_177956_o(), (double)p_225534_3_.func_177952_p() + 0.5D, p_225534_2_.func_180495_p(p_225534_3_));
this.func_149829_a(fallingblockentity);
p_225534_2_.func_217376_c(fallingblockentity);
@@ -59,7 +59,7 @@
public void func_180655_c(BlockState p_180655_1_, World p_180655_2_, BlockPos p_180655_3_, Random p_180655_4_) {
if (p_180655_4_.nextInt(16) == 0) {
BlockPos blockpos = p_180655_3_.func_177977_b();
- if (func_185759_i(p_180655_2_.func_180495_p(blockpos))) {
+ if (p_180655_2_.func_175623_d(blockpos) || func_185759_i(p_180655_2_.func_180495_p(blockpos))) {
double d0 = (double)((float)p_180655_3_.func_177958_n() + p_180655_4_.nextFloat());
double d0 = (double)p_180655_3_.func_177958_n() + (double)p_180655_4_.nextFloat();
double d1 = (double)p_180655_3_.func_177956_o() - 0.05D;
double d2 = (double)((float)p_180655_3_.func_177952_p() + p_180655_4_.nextFloat());
double d2 = (double)p_180655_3_.func_177952_p() + (double)p_180655_4_.nextFloat();
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/FarmlandBlock.java
+++ b/net/minecraft/block/FarmlandBlock.java
@@ -73,7 +73,7 @@
@@ -76,7 +76,7 @@
}
public void func_180658_a(World p_180658_1_, BlockPos p_180658_2_, Entity p_180658_3_, float p_180658_4_) {
@@ -9,7 +9,7 @@
func_199610_d(p_180658_1_.func_180495_p(p_180658_2_), p_180658_1_, p_180658_2_);
}
@@ -84,9 +84,9 @@
@@ -87,9 +87,9 @@
p_199610_1_.func_175656_a(p_199610_2_, func_199601_a(p_199610_0_, Blocks.field_150346_d.func_176223_P(), p_199610_1_, p_199610_2_));
}
@@ -22,7 +22,7 @@
}
private static boolean func_176530_e(IWorldReader p_176530_0_, BlockPos p_176530_1_) {
@@ -96,7 +96,7 @@
@@ -99,7 +99,7 @@
}
}
@@ -18,46 +18,46 @@
@@ -91,12 +91,14 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
if (p_196267_2_.func_82736_K().func_223586_b(GameRules.field_223598_a)) {
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 2)) return; // Forge: prevent loading unloaded chunks when spreading fire
if (!p_196267_1_.func_196955_c(p_196267_2_, p_196267_3_)) {
p_196267_2_.func_217377_a(p_196267_3_, false);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
if (p_225534_2_.func_82736_K().func_223586_b(GameRules.field_223598_a)) {
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 2)) return; // Forge: prevent loading unloaded chunks when spreading fire
if (!p_225534_1_.func_196955_c(p_225534_2_, p_225534_3_)) {
p_225534_2_.func_217377_a(p_225534_3_, false);
}
Block block = p_196267_2_.func_180495_p(p_196267_3_.func_177977_b()).func_177230_c();
- boolean flag = p_196267_2_.field_73011_w instanceof EndDimension && block == Blocks.field_150357_h || block == Blocks.field_150424_aL || block == Blocks.field_196814_hQ;
+ BlockState other = p_196267_2_.func_180495_p(p_196267_3_.func_177977_b());
+ boolean flag = other.isFireSource(p_196267_2_, p_196267_3_.func_177977_b(), Direction.UP);
int i = p_196267_1_.func_177229_b(field_176543_a);
if (!flag && p_196267_2_.func_72896_J() && this.func_176537_d(p_196267_2_, p_196267_3_) && p_196267_4_.nextFloat() < 0.2F + (float)i * 0.03F) {
p_196267_2_.func_217377_a(p_196267_3_, false);
Block block = p_225534_2_.func_180495_p(p_225534_3_.func_177977_b()).func_177230_c();
- boolean flag = p_225534_2_.field_73011_w instanceof EndDimension && block == Blocks.field_150357_h || block == Blocks.field_150424_aL || block == Blocks.field_196814_hQ;
+ BlockState other = p_225534_2_.func_180495_p(p_225534_3_.func_177977_b());
+ boolean flag = other.isFireSource(p_225534_2_, p_225534_3_.func_177977_b(), Direction.UP);
int i = p_225534_1_.func_177229_b(field_176543_a);
if (!flag && p_225534_2_.func_72896_J() && this.func_176537_d(p_225534_2_, p_225534_3_) && p_225534_4_.nextFloat() < 0.2F + (float)i * 0.03F) {
p_225534_2_.func_217377_a(p_225534_3_, false);
@@ -118,7 +120,7 @@
return;
}
- if (i == 15 && p_196267_4_.nextInt(4) == 0 && !this.func_196446_i(p_196267_2_.func_180495_p(p_196267_3_.func_177977_b()))) {
+ if (i == 15 && p_196267_4_.nextInt(4) == 0 && !this.canCatchFire(p_196267_2_, p_196267_3_.func_177977_b(), Direction.UP)) {
p_196267_2_.func_217377_a(p_196267_3_, false);
- if (i == 15 && p_225534_4_.nextInt(4) == 0 && !this.func_196446_i(p_225534_2_.func_180495_p(p_225534_3_.func_177977_b()))) {
+ if (i == 15 && p_225534_4_.nextInt(4) == 0 && !this.canCatchFire(p_225534_2_, p_225534_3_.func_177977_b(), Direction.UP)) {
p_225534_2_.func_217377_a(p_225534_3_, false);
return;
}
@@ -126,12 +128,12 @@
boolean flag1 = p_196267_2_.func_180502_D(p_196267_3_);
boolean flag1 = p_225534_2_.func_180502_D(p_225534_3_);
int k = flag1 ? -50 : 0;
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177974_f(), 300 + k, p_196267_4_, i);
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177976_e(), 300 + k, p_196267_4_, i);
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177977_b(), 250 + k, p_196267_4_, i);
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177984_a(), 250 + k, p_196267_4_, i);
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177978_c(), 300 + k, p_196267_4_, i);
- this.func_176536_a(p_196267_2_, p_196267_3_.func_177968_d(), 300 + k, p_196267_4_, i);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177974_f(), 300 + k, p_196267_4_, i, Direction.WEST);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177976_e(), 300 + k, p_196267_4_, i, Direction.EAST);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177977_b(), 250 + k, p_196267_4_, i, Direction.UP);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177984_a(), 250 + k, p_196267_4_, i, Direction.DOWN);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177978_c(), 300 + k, p_196267_4_, i, Direction.SOUTH);
+ this.tryCatchFire(p_196267_2_, p_196267_3_.func_177968_d(), 300 + k, p_196267_4_, i, Direction.NORTH);
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177974_f(), 300 + k, p_225534_4_, i);
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177976_e(), 300 + k, p_225534_4_, i);
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177977_b(), 250 + k, p_225534_4_, i);
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177984_a(), 250 + k, p_225534_4_, i);
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177978_c(), 300 + k, p_225534_4_, i);
- this.func_176536_a(p_225534_2_, p_225534_3_.func_177968_d(), 300 + k, p_225534_4_, i);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177974_f(), 300 + k, p_225534_4_, i, Direction.WEST);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177976_e(), 300 + k, p_225534_4_, i, Direction.EAST);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177977_b(), 250 + k, p_225534_4_, i, Direction.UP);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177984_a(), 250 + k, p_225534_4_, i, Direction.DOWN);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177978_c(), 300 + k, p_225534_4_, i, Direction.SOUTH);
+ this.tryCatchFire(p_225534_2_, p_225534_3_.func_177968_d(), 300 + k, p_225534_4_, i, Direction.NORTH);
BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable();
for(int l = -1; l <= 1; ++l) {
@@ -169,16 +171,18 @@
@@ -109,7 +109,7 @@
for(Direction direction : Direction.values()) {
BlockState blockstate = p_176538_1_.func_180495_p(p_176538_2_.func_177972_a(direction));
- i = Math.max(this.func_220275_r(blockstate), i);
+ i = Math.max(blockstate.getFlammability(p_176538_1_, p_176538_2_.func_177972_a(direction), direction.func_176734_d()), i);
+ i = Math.max(blockstate.getFireSpreadSpeed(p_176538_1_, p_176538_2_.func_177972_a(direction), direction.func_176734_d()), i);
}
return i;
@@ -167,7 +167,7 @@
for(int j1 = 0; j1 < 2; ++j1) {
double d7 = (double)p_180655_3_.func_177958_n() + p_180655_4_.nextDouble();
double d12 = (double)(p_180655_3_.func_177956_o() + 1) - p_180655_4_.nextDouble() * (double)0.1F;
@@ -311,10 +312,23 @@
@@ -307,10 +308,23 @@
}
public void func_180686_a(Block p_180686_1_, int p_180686_2_, int p_180686_3_) {
@@ -19,10 +19,10 @@
+ /**
+ * For mod use, eliminates the need to extend this class, and prevents modded
+ * flower pots from altering vanilla behavior.
+ *
+ *
+ * @param emptyPot The empty pot for this pot, or null for self.
+ * @param p_i48395_1_ The flower block.
+ * @param p_i48395_2_
+ * @param properties
+ */
+ public FlowerPotBlock(@javax.annotation.Nullable java.util.function.Supplier<FlowerPotBlock> emptyPot, java.util.function.Supplier<? extends Block> p_i48395_1_, Block.Properties p_i48395_2_) {
super(p_i48395_2_);
@@ -41,8 +41,8 @@
public VoxelShape func_220053_a(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) {
@@ -40,7 +67,7 @@
public boolean func_220051_a(BlockState p_220051_1_, World p_220051_2_, BlockPos p_220051_3_, PlayerEntity p_220051_4_, Hand p_220051_5_, BlockRayTraceResult p_220051_6_) {
ItemStack itemstack = p_220051_4_.func_184586_b(p_220051_5_);
public ActionResultType func_225533_a_(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) {
ItemStack itemstack = p_225533_4_.func_184586_b(p_225533_5_);
Item item = itemstack.func_77973_b();
- Block block = item instanceof BlockItem ? field_196451_b.getOrDefault(((BlockItem)item).func_179223_d(), Blocks.field_150350_a) : Blocks.field_150350_a;
+ Block block = item instanceof BlockItem ? getEmptyPot().fullPots.getOrDefault(((BlockItem)item).func_179223_d().getRegistryName(), Blocks.field_150350_a.delegate).get() : Blocks.field_150350_a;
@@ -50,26 +50,26 @@
boolean flag1 = this.field_196452_c == Blocks.field_150350_a;
if (flag != flag1) {
@@ -58,7 +85,7 @@
p_220051_4_.func_71019_a(itemstack1, false);
p_225533_4_.func_71019_a(itemstack1, false);
}
- p_220051_2_.func_180501_a(p_220051_3_, Blocks.field_150457_bL.func_176223_P(), 3);
+ p_220051_2_.func_180501_a(p_220051_3_, getEmptyPot().func_176223_P(), 3);
- p_225533_2_.func_180501_a(p_225533_3_, Blocks.field_150457_bL.func_176223_P(), 3);
+ p_225533_2_.func_180501_a(p_225533_3_, getEmptyPot().func_176223_P(), 3);
}
}
@@ -78,6 +105,17 @@
return ActionResultType.SUCCESS;
@@ -76,6 +103,17 @@
}
public Block func_220276_d() {
- return this.field_196452_c;
+ return flowerDelegate.get();
}
+
+
+ public FlowerPotBlock getEmptyPot() {
+ return emptyPot == null ? this : emptyPot.get();
+ }
+
+
+ public void addPlant(net.minecraft.util.ResourceLocation flower, java.util.function.Supplier<? extends Block> fullPot) {
+ if (getEmptyPot() != this) {
+ throw new IllegalArgumentException("Cannot add plant to non-empty pot: " + this);
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/FlowingFluidBlock.java
+++ b/net/minecraft/block/FlowingFluidBlock.java
@@ -30,9 +30,11 @@
@@ -31,9 +31,11 @@
public class FlowingFluidBlock extends Block implements IBucketPickupHandler {
public static final IntegerProperty field_176367_b = BlockStateProperties.field_208132_ag;
@@ -13,7 +13,7 @@
protected FlowingFluidBlock(FlowingFluid p_i49014_1_, Block.Properties p_i49014_2_) {
super(p_i49014_2_);
this.field_204517_c = p_i49014_1_;
@@ -45,8 +47,21 @@
@@ -46,8 +48,21 @@
this.field_212565_c.add(p_i49014_1_.func_207207_a(8, true));
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176367_b, Integer.valueOf(0)));
@@ -32,10 +32,10 @@
+ this.supplier = supplier;
+ }
+
public void func_196265_a(BlockState p_196265_1_, World p_196265_2_, BlockPos p_196265_3_, Random p_196265_4_) {
p_196265_2_.func_204610_c(p_196265_3_).func_206891_b(p_196265_2_, p_196265_3_, p_196265_4_);
public void func_225542_b_(BlockState p_225542_1_, ServerWorld p_225542_2_, BlockPos p_225542_3_, Random p_225542_4_) {
p_225542_2_.func_204610_c(p_225542_3_).func_206891_b(p_225542_2_, p_225542_3_, p_225542_4_);
}
@@ -61,6 +76,7 @@
@@ -62,6 +77,7 @@
public IFluidState func_204507_t(BlockState p_204507_1_) {
int i = p_204507_1_.func_177229_b(field_176367_b);
@@ -43,7 +43,7 @@
return this.field_212565_c.get(Math.min(i, 8));
}
@@ -121,13 +137,13 @@
@@ -122,13 +138,13 @@
if (flag) {
IFluidState ifluidstate = p_204515_1_.func_204610_c(p_204515_2_);
if (ifluidstate.func_206889_d()) {
@@ -59,7 +59,7 @@
this.func_180688_d(p_204515_1_, p_204515_2_);
return false;
}
@@ -160,4 +176,27 @@
@@ -161,4 +177,23 @@
}
}
@@ -72,17 +72,13 @@
+
+ private boolean fluidStateCacheInitialized = false;
+ protected synchronized void initFluidStateCache() {
+ if (fluidStateCacheInitialized == false)
+ {
+ if (fluidStateCacheInitialized == false) {
+ this.field_212565_c.add(getFluid().func_207204_a(false));
+
+ for (int i = 1; i < 8; ++i)
+ {
+ this.field_212565_c.add(getFluid().func_207207_a(8 - i, false));
+ }
+
+ this.field_212565_c.add(getFluid().func_207207_a(8, true));
+
+ fluidStateCacheInitialized = true;
+ }
+ }
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/JigsawBlock.java
+++ b/net/minecraft/block/JigsawBlock.java
@@ -29,6 +29,13 @@
@@ -30,6 +30,13 @@
return p_185499_1_.func_206870_a(field_176387_N, p_185499_2_.func_185831_a(p_185499_1_.func_177229_b(field_176387_N)));
}
@@ -1,13 +1,13 @@
--- a/net/minecraft/block/KelpTopBlock.java
+++ b/net/minecraft/block/KelpTopBlock.java
@@ -57,8 +57,9 @@
@@ -52,8 +52,9 @@
} else {
BlockPos blockpos = p_196267_3_.func_177984_a();
BlockState blockstate = p_196267_2_.func_180495_p(blockpos);
- if (blockstate.func_177230_c() == Blocks.field_150355_j && p_196267_1_.func_177229_b(field_203163_a) < 25 && p_196267_4_.nextDouble() < 0.14D) {
+ if (blockstate.func_177230_c() == Blocks.field_150355_j && p_196267_1_.func_177229_b(field_203163_a) < 25 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, blockpos, p_196267_1_, p_196267_4_.nextDouble() < 0.14D)) {
p_196267_2_.func_175656_a(blockpos, p_196267_1_.func_177231_a(field_203163_a));
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
BlockPos blockpos = p_225534_3_.func_177984_a();
BlockState blockstate = p_225534_2_.func_180495_p(blockpos);
- if (blockstate.func_177230_c() == Blocks.field_150355_j && p_225534_1_.func_177229_b(field_203163_a) < 25 && p_225534_4_.nextDouble() < 0.14D) {
+ if (blockstate.func_177230_c() == Blocks.field_150355_j && p_225534_1_.func_177229_b(field_203163_a) < 25 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, blockpos, p_225534_1_, p_225534_4_.nextDouble() < 0.14D)) {
p_225534_2_.func_175656_a(blockpos, p_225534_1_.func_177231_a(field_203163_a));
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, blockpos, p_225534_1_);
}
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/LadderBlock.java
+++ b/net/minecraft/block/LadderBlock.java
@@ -94,6 +94,11 @@
@@ -93,6 +93,11 @@
return null;
}
@@ -9,6 +9,6 @@
+ return true;
+ }
+
public BlockRenderLayer func_180664_k() {
return BlockRenderLayer.CUTOUT;
public BlockState func_185499_a(BlockState p_185499_1_, Rotation p_185499_2_) {
return p_185499_1_.func_206870_a(field_176382_a, p_185499_2_.func_185831_a(p_185499_1_.func_177229_b(field_176382_a)));
}
@@ -8,4 +8,4 @@
+public class LeavesBlock extends Block implements net.minecraftforge.common.IShearable {
public static final IntegerProperty field_208494_a = BlockStateProperties.field_208514_aa;
public static final BooleanProperty field_208495_b = BlockStateProperties.field_208515_s;
protected static boolean field_196478_c;
@@ -1,11 +1,11 @@
--- a/net/minecraft/block/MushroomBlock.java
+++ b/net/minecraft/block/MushroomBlock.java
@@ -62,7 +62,7 @@
@@ -64,7 +64,7 @@
BlockState blockstate = p_196260_2_.func_180495_p(blockpos);
Block block = blockstate.func_177230_c();
if (block != Blocks.field_150391_bh && block != Blocks.field_196661_l) {
- return p_196260_2_.func_201669_a(p_196260_3_, 0) < 13 && this.func_200014_a_(blockstate, p_196260_2_, blockpos);
+ return p_196260_2_.func_201669_a(p_196260_3_, 0) < 13 && blockstate.canSustainPlant(p_196260_2_, blockpos, net.minecraft.util.Direction.UP, this);
- return p_196260_2_.func_226659_b_(p_196260_3_, 0) < 13 && this.func_200014_a_(blockstate, p_196260_2_, blockpos);
+ return p_196260_2_.func_226659_b_(p_196260_3_, 0) < 13 && blockstate.canSustainPlant(p_196260_2_, blockpos, net.minecraft.util.Direction.UP, this);
} else {
return true;
}
@@ -9,3 +9,48 @@
netherportalblock$size.func_150859_c();
return true;
} else {
@@ -241,13 +241,13 @@
int i;
for(i = 0; i < 22; ++i) {
BlockPos blockpos = p_180120_1_.func_177967_a(p_180120_2_, i);
- if (!this.func_196900_a(this.field_150867_a.func_180495_p(blockpos)) || this.field_150867_a.func_180495_p(blockpos.func_177977_b()).func_177230_c() != Blocks.field_150343_Z) {
+ if (!this.func_196900_a(this.field_150867_a.func_180495_p(blockpos)) || !this.field_150867_a.func_180495_p(blockpos.func_177977_b()).isPortalFrame(this.field_150867_a, blockpos.func_177977_b())) {
break;
}
}
- Block block = this.field_150867_a.func_180495_p(p_180120_1_.func_177967_a(p_180120_2_, i)).func_177230_c();
- return block == Blocks.field_150343_Z ? i : 0;
+ BlockPos framePos = p_180120_1_.func_177967_a(p_180120_2_, i);
+ return this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos) ? i : 0;
}
public int func_181100_a() {
@@ -274,13 +274,13 @@
}
if (i == 0) {
- block = this.field_150867_a.func_180495_p(blockpos.func_177972_a(this.field_150863_d)).func_177230_c();
- if (block != Blocks.field_150343_Z) {
+ BlockPos framePos = blockpos.func_177972_a(this.field_150863_d);
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
break label56;
}
} else if (i == this.field_150868_h - 1) {
- block = this.field_150867_a.func_180495_p(blockpos.func_177972_a(this.field_150866_c)).func_177230_c();
- if (block != Blocks.field_150343_Z) {
+ BlockPos framePos = blockpos.func_177972_a(this.field_150866_c);
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
break label56;
}
}
@@ -288,7 +288,8 @@
}
for(int j = 0; j < this.field_150868_h; ++j) {
- if (this.field_150867_a.func_180495_p(this.field_150861_f.func_177967_a(this.field_150866_c, j).func_177981_b(this.field_150862_g)).func_177230_c() != Blocks.field_150343_Z) {
+ BlockPos framePos = this.field_150861_f.func_177967_a(this.field_150866_c, j).func_177981_b(this.field_150862_g);
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
this.field_150862_g = 0;
break;
}
@@ -2,13 +2,13 @@
+++ b/net/minecraft/block/NetherWartBlock.java
@@ -31,9 +31,10 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
int i = p_196267_1_.func_177229_b(field_176486_a);
- if (i < 3 && p_196267_4_.nextInt(10) == 0) {
+ if (i < 3 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_.nextInt(10) == 0)) {
p_196267_1_ = p_196267_1_.func_206870_a(field_176486_a, Integer.valueOf(i + 1));
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_, 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
int i = p_225534_1_.func_177229_b(field_176486_a);
- if (i < 3 && p_225534_4_.nextInt(10) == 0) {
+ if (i < 3 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(10) == 0)) {
p_225534_1_ = p_225534_1_.func_206870_a(field_176486_a, Integer.valueOf(i + 1));
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_, 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
super.func_225534_a_(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_);
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/NoteBlock.java
+++ b/net/minecraft/block/NoteBlock.java
@@ -49,7 +49,7 @@
@@ -50,7 +50,7 @@
}
private void func_196482_a(World p_196482_1_, BlockPos p_196482_2_) {
@@ -9,18 +9,18 @@
p_196482_1_.func_175641_c(p_196482_2_, this, 0, 0);
}
@@ -59,7 +59,9 @@
if (p_220051_2_.field_72995_K) {
return true;
@@ -60,7 +60,9 @@
if (p_225533_2_.field_72995_K) {
return ActionResultType.SUCCESS;
} else {
- p_220051_1_ = p_220051_1_.func_177231_a(field_196485_c);
+ int _new = net.minecraftforge.common.ForgeHooks.onNoteChange(p_220051_2_, p_220051_3_, p_220051_1_, p_220051_1_.func_177229_b(field_196485_c), p_220051_1_.func_177231_a(field_196485_c).func_177229_b(field_196485_c));
+ if (_new == -1) return false;
+ p_220051_1_ = (BlockState)p_220051_1_.func_206870_a(field_196485_c, _new);
p_220051_2_.func_180501_a(p_220051_3_, p_220051_1_, 3);
this.func_196482_a(p_220051_2_, p_220051_3_);
p_220051_4_.func_195066_a(Stats.field_188087_U);
@@ -75,6 +77,9 @@
- p_225533_1_ = p_225533_1_.func_177231_a(field_196485_c);
+ int _new = net.minecraftforge.common.ForgeHooks.onNoteChange(p_225533_2_, p_225533_3_, p_225533_1_, p_225533_1_.func_177229_b(field_196485_c), p_225533_1_.func_177231_a(field_196485_c).func_177229_b(field_196485_c));
+ if (_new == -1) return ActionResultType.FAIL;
+ p_225533_1_ = (BlockState)p_225533_1_.func_206870_a(field_196485_c, _new);
p_225533_2_.func_180501_a(p_225533_3_, p_225533_1_, 3);
this.func_196482_a(p_225533_2_, p_225533_3_);
p_225533_4_.func_195066_a(Stats.field_188087_U);
@@ -76,6 +78,9 @@
}
public boolean func_189539_a(BlockState p_189539_1_, World p_189539_2_, BlockPos p_189539_3_, int p_189539_4_, int p_189539_5_) {
@@ -4,7 +4,7 @@
}
if (p_189539_4_ == 0) {
+ if(net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, true)) return false;
+ if (net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, true)) return false;
if (!this.func_176319_a(p_189539_2_, p_189539_3_, direction, true)) {
return false;
}
@@ -12,7 +12,7 @@
p_189539_2_.func_180501_a(p_189539_3_, p_189539_1_.func_206870_a(field_176320_b, Boolean.valueOf(true)), 67);
p_189539_2_.func_184133_a((PlayerEntity)null, p_189539_3_, SoundEvents.field_187715_dR, SoundCategory.BLOCKS, 0.5F, p_189539_2_.field_73012_v.nextFloat() * 0.25F + 0.6F);
} else if (p_189539_4_ == 1 || p_189539_4_ == 2) {
+ if(net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, false)) return false;
+ if (net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, false)) return false;
TileEntity tileentity1 = p_189539_2_.func_175625_s(p_189539_3_.func_177972_a(direction));
if (tileentity1 instanceof PistonTileEntity) {
((PistonTileEntity)tileentity1).func_145866_f();
@@ -42,16 +42,16 @@
} else {
return false;
}
@@ -274,7 +277,7 @@
@@ -276,7 +279,7 @@
for(int j = list2.size() - 1; j >= 0; --j) {
BlockPos blockpos2 = list2.get(j);
BlockState blockstate = p_176319_1_.func_180495_p(blockpos2);
- TileEntity tileentity = blockstate.func_177230_c().func_149716_u() ? p_176319_1_.func_175625_s(blockpos2) : null;
+ TileEntity tileentity = blockstate.hasTileEntity() ? p_176319_1_.func_175625_s(blockpos2) : null;
func_220059_a(blockstate, p_176319_1_, blockpos2, tileentity);
BlockState blockstate1 = p_176319_1_.func_180495_p(blockpos2);
- TileEntity tileentity = blockstate1.func_177230_c().func_149716_u() ? p_176319_1_.func_175625_s(blockpos2) : null;
+ TileEntity tileentity = blockstate1.hasTileEntity() ? p_176319_1_.func_175625_s(blockpos2) : null;
func_220059_a(blockstate1, p_176319_1_, blockpos2, tileentity);
p_176319_1_.func_180501_a(blockpos2, Blocks.field_150350_a.func_176223_P(), 18);
--k;
@@ -328,6 +331,10 @@
@@ -340,6 +343,10 @@
return p_185499_1_.func_206870_a(field_176387_N, p_185499_2_.func_185831_a(p_185499_1_.func_177229_b(field_176387_N)));
}
@@ -0,0 +1,81 @@
--- a/net/minecraft/block/PistonBlockStructureHelper.java
+++ b/net/minecraft/block/PistonBlockStructureHelper.java
@@ -48,7 +48,7 @@
} else {
for(int i = 0; i < this.field_177258_e.size(); ++i) {
BlockPos blockpos = this.field_177258_e.get(i);
- if (func_227029_a_(this.field_177261_a.func_180495_p(blockpos).func_177230_c()) && !this.func_177250_b(blockpos)) {
+ if (this.field_177261_a.func_180495_p(blockpos).isStickyBlock() && !this.func_177250_b(blockpos)) {
return false;
}
}
@@ -57,24 +57,9 @@
}
}
- private static boolean func_227029_a_(Block p_227029_0_) {
- return p_227029_0_ == Blocks.field_180399_cE || p_227029_0_ == Blocks.field_226907_mc_;
- }
-
- private static boolean func_227030_a_(Block p_227030_0_, Block p_227030_1_) {
- if (p_227030_0_ == Blocks.field_226907_mc_ && p_227030_1_ == Blocks.field_180399_cE) {
- return false;
- } else if (p_227030_0_ == Blocks.field_180399_cE && p_227030_1_ == Blocks.field_226907_mc_) {
- return false;
- } else {
- return func_227029_a_(p_227030_0_) || func_227029_a_(p_227030_1_);
- }
- }
-
private boolean func_177251_a(BlockPos p_177251_1_, Direction p_177251_2_) {
BlockState blockstate = this.field_177261_a.func_180495_p(p_177251_1_);
- Block block = blockstate.func_177230_c();
- if (blockstate.func_196958_f()) {
+ if (field_177261_a.func_175623_d(p_177251_1_)) {
return true;
} else if (!PistonBlock.func_185646_a(blockstate, this.field_177261_a, p_177251_1_, this.field_177257_d, false, p_177251_2_)) {
return true;
@@ -87,12 +72,12 @@
if (i + this.field_177258_e.size() > 12) {
return false;
} else {
- while(func_227029_a_(block)) {
+ BlockState oldState;
+ while(blockstate.isStickyBlock()) {
BlockPos blockpos = p_177251_1_.func_177967_a(this.field_177257_d.func_176734_d(), i);
- Block block1 = block;
+ oldState = blockstate;
blockstate = this.field_177261_a.func_180495_p(blockpos);
- block = blockstate.func_177230_c();
- if (blockstate.func_196958_f() || !func_227030_a_(block1, block) || !PistonBlock.func_185646_a(blockstate, this.field_177261_a, blockpos, this.field_177257_d, false, this.field_177257_d.func_176734_d()) || blockpos.equals(this.field_177259_b)) {
+ if (blockstate.isAir(this.field_177261_a, blockpos) || !oldState.canStickTo(blockstate) || !PistonBlock.func_185646_a(blockstate, this.field_177261_a, blockpos, this.field_177257_d, false, this.field_177257_d.func_176734_d()) || blockpos.equals(this.field_177259_b)) {
break;
}
@@ -119,7 +104,7 @@
for(int k = 0; k <= j + l; ++k) {
BlockPos blockpos2 = this.field_177258_e.get(k);
- if (func_227029_a_(this.field_177261_a.func_180495_p(blockpos2).func_177230_c()) && !this.func_177250_b(blockpos2)) {
+ if (this.field_177261_a.func_180495_p(blockpos2).isStickyBlock() && !this.func_177250_b(blockpos2)) {
return false;
}
}
@@ -128,7 +113,7 @@
}
blockstate = this.field_177261_a.func_180495_p(blockpos1);
- if (blockstate.func_196958_f()) {
+ if (blockstate.isAir(field_177261_a, blockpos1)) {
return true;
}
@@ -173,7 +158,7 @@
if (direction.func_176740_k() != this.field_177257_d.func_176740_k()) {
BlockPos blockpos = p_177250_1_.func_177972_a(direction);
BlockState blockstate1 = this.field_177261_a.func_180495_p(blockpos);
- if (func_227030_a_(blockstate1.func_177230_c(), blockstate.func_177230_c()) && !this.func_177251_a(blockpos, direction)) {
+ if (blockstate1.canStickTo(blockstate) && !this.func_177251_a(blockpos, direction)) {
return false;
}
}
@@ -4,17 +4,17 @@
public class PoweredRailBlock extends AbstractRailBlock {
public static final EnumProperty<RailShape> field_176568_b = BlockStateProperties.field_208166_S;
public static final BooleanProperty field_176569_M = BlockStateProperties.field_208194_u;
+ private final boolean isActivator;
+ private final boolean isActivator; // TRUE for an Activator Rail, FALSE for Powered Rail
protected PoweredRailBlock(Block.Properties p_i48349_1_) {
- super(true, p_i48349_1_);
+ this(p_i48349_1_, false);
+ }
+
+ protected PoweredRailBlock(Block.Properties builder, boolean isActivator) {
+ protected PoweredRailBlock(Block.Properties builder, boolean isPoweredRail) {
+ super(true, builder);
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176568_b, RailShape.NORTH_SOUTH).func_206870_a(field_176569_M, Boolean.valueOf(false)));
+ this.isActivator = isActivator;
+ this.isActivator = !isPoweredRail;
}
protected boolean func_176566_a(World p_176566_1_, BlockPos p_176566_2_, BlockState p_176566_3_, boolean p_176566_4_, int p_176566_5_) {
@@ -35,3 +35,12 @@
return p_208071_1_.func_175640_z(p_208071_2_) ? true : this.func_176566_a(p_208071_1_, p_208071_2_, blockstate, p_208071_3_, p_208071_4_ + 1);
} else {
return false;
@@ -255,4 +261,8 @@
protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
p_206840_1_.func_206894_a(field_176568_b, field_176569_M);
}
+
+ public boolean isActivatorRail() {
+ return isActivator;
+ }
}
@@ -37,7 +37,7 @@
if (AbstractRailBlock.func_208488_a(this.field_196920_a, blockpos3.func_177984_a())) {
railshape = RailShape.ASCENDING_EAST;
}
@@ -298,7 +300,7 @@
@@ -304,7 +306,7 @@
}
}
@@ -46,7 +46,7 @@
if (AbstractRailBlock.func_208488_a(this.field_196920_a, blockpos.func_177984_a())) {
railshape = RailShape.ASCENDING_NORTH;
}
@@ -308,7 +310,7 @@
@@ -314,7 +316,7 @@
}
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/RedstoneOreBlock.java
+++ b/net/minecraft/block/RedstoneOreBlock.java
@@ -61,11 +61,11 @@
@@ -68,11 +68,11 @@
public void func_220062_a(BlockState p_220062_1_, World p_220062_2_, BlockPos p_220062_3_, ItemStack p_220062_4_) {
super.func_220062_a(p_220062_1_, p_220062_2_, p_220062_3_, p_220062_4_);
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/RedstoneWireBlock.java
+++ b/net/minecraft/block/RedstoneWireBlock.java
@@ -124,7 +124,7 @@
@@ -123,7 +123,7 @@
BlockState blockstate1 = p_208074_1_.func_180495_p(blockpos1);
if (!blockstate1.func_215686_e(p_208074_1_, blockpos1)) {
boolean flag = blockstate.func_224755_d(p_208074_1_, blockpos, Direction.UP) || blockstate.func_177230_c() == Blocks.field_150438_bZ;
@@ -9,7 +9,7 @@
if (blockstate.func_224756_o(p_208074_1_, blockpos)) {
return RedstoneSide.UP;
}
@@ -133,7 +133,7 @@
@@ -132,7 +132,7 @@
}
}
@@ -18,7 +18,7 @@
}
public boolean func_196260_a(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
@@ -318,26 +318,18 @@
@@ -315,26 +315,18 @@
boolean flag = blockstate.func_215686_e(p_176339_1_, blockpos);
BlockPos blockpos1 = p_176339_2_.func_177984_a();
boolean flag1 = p_176339_1_.func_180495_p(blockpos1).func_215686_e(p_176339_1_, blockpos1);
@@ -49,7 +49,7 @@
Block block = p_176343_0_.func_177230_c();
if (block == Blocks.field_150488_af) {
return true;
@@ -347,7 +339,7 @@
@@ -344,7 +336,7 @@
} else if (Blocks.field_190976_dk == p_176343_0_.func_177230_c()) {
return p_176343_1_ == p_176343_0_.func_177229_b(ObserverBlock.field_176387_N);
} else {
@@ -2,17 +2,17 @@
+++ b/net/minecraft/block/SaplingBlock.java
@@ -29,6 +29,7 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_196267_2_.func_201696_r(p_196267_3_.func_177984_a()) >= 9 && p_196267_4_.nextInt(7) == 0) {
this.func_176478_d(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
super.func_225534_a_(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_);
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_225534_2_.func_201696_r(p_225534_3_.func_177984_a()) >= 9 && p_225534_4_.nextInt(7) == 0) {
this.func_226942_a_(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_);
}
@@ -39,6 +40,7 @@
if (p_176478_3_.func_177229_b(field_176479_b) == 0) {
p_176478_1_.func_180501_a(p_176478_2_, p_176478_3_.func_177231_a(field_176479_b), 4);
if (p_226942_3_.func_177229_b(field_176479_b) == 0) {
p_226942_1_.func_180501_a(p_226942_2_, p_226942_3_.func_177231_a(field_176479_b), 4);
} else {
+ if (!net.minecraftforge.event.ForgeEventFactory.saplingGrowTree(p_176478_1_, p_176478_4_, p_176478_2_)) return;
this.field_196387_c.func_196935_a(p_176478_1_, p_176478_2_, p_176478_3_, p_176478_4_);
+ if (!net.minecraftforge.event.ForgeEventFactory.saplingGrowTree(p_226942_1_, p_226942_4_, p_226942_2_)) return;
this.field_196387_c.func_225545_a_(p_226942_1_, p_226942_1_.func_72863_F().func_201711_g(), p_226942_2_, p_226942_3_, p_226942_4_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/ScaffoldingBlock.java
+++ b/net/minecraft/block/ScaffoldingBlock.java
@@ -142,6 +142,8 @@
@@ -138,6 +138,8 @@
return i;
}
@@ -1,8 +1,8 @@
--- a/net/minecraft/block/SeaGrassBlock.java
+++ b/net/minecraft/block/SeaGrassBlock.java
@@ -16,7 +16,7 @@
import net.minecraft.world.IWorld;
@@ -17,7 +17,7 @@
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
-public class SeaGrassBlock extends BushBlock implements IGrowable, ILiquidContainer {
+public class SeaGrassBlock extends BushBlock implements IGrowable, ILiquidContainer, net.minecraftforge.common.IShearable {
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/SpawnerBlock.java
+++ b/net/minecraft/block/SpawnerBlock.java
@@ -19,10 +19,13 @@
@@ -18,10 +18,13 @@
public void func_220062_a(BlockState p_220062_1_, World p_220062_2_, BlockPos p_220062_3_, ItemStack p_220062_4_) {
super.func_220062_a(p_220062_1_, p_220062_2_, p_220062_3_, p_220062_4_);
@@ -2,9 +2,9 @@
+++ b/net/minecraft/block/SpreadableSnowyDirtBlock.java
@@ -31,6 +31,7 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
if (!p_196267_2_.field_72995_K) {
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 3)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading
if (!func_220257_b(p_196267_1_, p_196267_2_, p_196267_3_)) {
p_196267_2_.func_175656_a(p_196267_3_, Blocks.field_150346_d.func_176223_P());
} else {
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
if (!func_220257_b(p_225534_1_, p_225534_2_, p_225534_3_)) {
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 3)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading
p_225534_2_.func_175656_a(p_225534_3_, Blocks.field_150346_d.func_176223_P());
} else {
if (p_225534_2_.func_201696_r(p_225534_3_.func_177984_a()) >= 9) {
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/StairsBlock.java
+++ b/net/minecraft/block/StairsBlock.java
@@ -83,13 +83,24 @@
@@ -84,13 +84,24 @@
return voxelshape;
}
@@ -25,7 +25,7 @@
public boolean func_220074_n(BlockState p_220074_1_) {
return true;
}
@@ -265,4 +276,12 @@
@@ -262,4 +273,12 @@
public boolean func_196266_a(BlockState p_196266_1_, IBlockReader p_196266_2_, BlockPos p_196266_3_, PathType p_196266_4_) {
return false;
}
@@ -1,40 +1,40 @@
--- a/net/minecraft/block/StemBlock.java
+++ b/net/minecraft/block/StemBlock.java
@@ -39,22 +39,24 @@
@@ -40,22 +40,24 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
+ if (!p_196267_2_.isAreaLoaded(p_196267_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_196267_2_.func_201669_a(p_196267_3_, 0) >= 9) {
float f = CropsBlock.func_180672_a(this, p_196267_2_, p_196267_3_);
- if (p_196267_4_.nextInt((int)(25.0F / f) + 1) == 0) {
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_.nextInt((int)(25.0F / f) + 1) == 0)) {
int i = p_196267_1_.func_177229_b(field_176484_a);
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
super.func_225534_a_(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_);
+ if (!p_225534_2_.isAreaLoaded(p_225534_3_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light
if (p_225534_2_.func_226659_b_(p_225534_3_, 0) >= 9) {
float f = CropsBlock.func_180672_a(this, p_225534_2_, p_225534_3_);
- if (p_225534_4_.nextInt((int)(25.0F / f) + 1) == 0) {
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt((int)(25.0F / f) + 1) == 0)) {
int i = p_225534_1_.func_177229_b(field_176484_a);
if (i < 7) {
- p_196267_1_ = p_196267_1_.func_206870_a(field_176484_a, Integer.valueOf(i + 1));
- p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_, 2);
+ p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_176484_a, Integer.valueOf(i + 1)), 2);
- p_225534_1_ = p_225534_1_.func_206870_a(field_176484_a, Integer.valueOf(i + 1));
- p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_, 2);
+ p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_176484_a, Integer.valueOf(i + 1)), 2);
} else {
Direction direction = Direction.Plane.HORIZONTAL.func_179518_a(p_196267_4_);
BlockPos blockpos = p_196267_3_.func_177972_a(direction);
- Block block = p_196267_2_.func_180495_p(blockpos.func_177977_b()).func_177230_c();
- if (p_196267_2_.func_180495_p(blockpos).func_196958_f() && (block == Blocks.field_150458_ak || block == Blocks.field_150346_d || block == Blocks.field_196660_k || block == Blocks.field_196661_l || block == Blocks.field_196658_i)) {
+ BlockState soil = p_196267_2_.func_180495_p(blockpos.func_177977_b());
Direction direction = Direction.Plane.HORIZONTAL.func_179518_a(p_225534_4_);
BlockPos blockpos = p_225534_3_.func_177972_a(direction);
- Block block = p_225534_2_.func_180495_p(blockpos.func_177977_b()).func_177230_c();
- if (p_225534_2_.func_180495_p(blockpos).func_196958_f() && (block == Blocks.field_150458_ak || block == Blocks.field_150346_d || block == Blocks.field_196660_k || block == Blocks.field_196661_l || block == Blocks.field_196658_i)) {
+ BlockState soil = p_225534_2_.func_180495_p(blockpos.func_177977_b());
+ Block block = soil.func_177230_c();
+ if (p_196267_2_.func_180495_p(blockpos).isAir(p_196267_2_, blockpos) && (soil.canSustainPlant(p_196267_2_, blockpos.func_177977_b(), Direction.UP, this) || block == Blocks.field_150458_ak || block == Blocks.field_150346_d || block == Blocks.field_196660_k || block == Blocks.field_196661_l || block == Blocks.field_196658_i)) {
p_196267_2_.func_175656_a(blockpos, this.field_149877_a.func_176223_P());
p_196267_2_.func_175656_a(p_196267_3_, this.field_149877_a.func_196523_e().func_176223_P().func_206870_a(HorizontalBlock.field_185512_D, direction));
+ if (p_225534_2_.func_175623_d(blockpos) && (soil.canSustainPlant(p_225534_2_, blockpos.func_177977_b(), Direction.UP, this) || block == Blocks.field_150458_ak || block == Blocks.field_150346_d || block == Blocks.field_196660_k || block == Blocks.field_196661_l || block == Blocks.field_196658_i)) {
p_225534_2_.func_175656_a(blockpos, this.field_149877_a.func_176223_P());
p_225534_2_.func_175656_a(p_225534_3_, this.field_149877_a.func_196523_e().func_176223_P().func_206870_a(HorizontalBlock.field_185512_D, direction));
}
}
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
@@ -100,4 +102,10 @@
@@ -101,4 +103,10 @@
public StemGrownBlock func_208486_d() {
return this.field_149877_a;
}
+
+
+ //FORGE START
+ @Override
+ public net.minecraftforge.common.PlantType getPlantType(IBlockReader world, BlockPos pos) {
@@ -1,31 +1,31 @@
--- a/net/minecraft/block/SugarCaneBlock.java
+++ b/net/minecraft/block/SugarCaneBlock.java
@@ -16,7 +16,7 @@
@@ -15,7 +15,7 @@
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
-public class SugarCaneBlock extends Block {
+public class SugarCaneBlock extends Block implements net.minecraftforge.common.IPlantable {
public static final IntegerProperty field_176355_a = BlockStateProperties.field_208171_X;
protected static final VoxelShape field_196503_b = Block.func_208617_a(2.0D, 0.0D, 2.0D, 14.0D, 16.0D, 14.0D);
@@ -40,12 +40,15 @@
@@ -39,12 +39,15 @@
if (i < 3) {
int j = p_196267_1_.func_177229_b(field_176355_a);
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, true)) {
int j = p_225534_1_.func_177229_b(field_176355_a);
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, true)) {
if (j == 15) {
p_196267_2_.func_175656_a(p_196267_3_.func_177984_a(), this.func_176223_P());
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_176355_a, Integer.valueOf(0)), 4);
p_225534_2_.func_175656_a(p_225534_3_.func_177984_a(), this.func_176223_P());
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_176355_a, Integer.valueOf(0)), 4);
} else {
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_176355_a, Integer.valueOf(j + 1)), 4);
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_176355_a, Integer.valueOf(j + 1)), 4);
}
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
+ }
}
}
@@ -60,6 +63,8 @@
@@ -59,6 +62,8 @@
}
public boolean func_196260_a(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
@@ -34,7 +34,7 @@
Block block = p_196260_2_.func_180495_p(p_196260_3_.func_177977_b()).func_177230_c();
if (block == this) {
return true;
@@ -87,4 +92,14 @@
@@ -82,4 +87,14 @@
protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
p_206840_1_.func_206894_a(field_176355_a);
}
@@ -1,13 +1,13 @@
--- a/net/minecraft/block/SweetBerryBushBlock.java
+++ b/net/minecraft/block/SweetBerryBushBlock.java
@@ -47,8 +47,9 @@
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
int i = p_196267_1_.func_177229_b(field_220125_a);
- if (i < 3 && p_196267_4_.nextInt(5) == 0 && p_196267_2_.func_201669_a(p_196267_3_.func_177984_a(), 0) >= 9) {
+ if (i < 3 && p_196267_2_.func_201669_a(p_196267_3_.func_177984_a(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_.nextInt(5) == 0)) {
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_220125_a, Integer.valueOf(i + 1)), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
@@ -49,8 +49,9 @@
public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) {
super.func_225534_a_(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_);
int i = p_225534_1_.func_177229_b(field_220125_a);
- if (i < 3 && p_225534_4_.nextInt(5) == 0 && p_225534_2_.func_226659_b_(p_225534_3_.func_177984_a(), 0) >= 9) {
+ if (i < 3 && p_225534_2_.func_226659_b_(p_225534_3_.func_177984_a(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) {
p_225534_2_.func_180501_a(p_225534_3_, p_225534_1_.func_206870_a(field_220125_a, Integer.valueOf(i + 1)), 2);
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_);
}
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/TNTBlock.java
+++ b/net/minecraft/block/TNTBlock.java
@@ -28,10 +28,14 @@
@@ -29,10 +29,14 @@
this.func_180632_j(this.func_176223_P().func_206870_a(field_212569_a, Boolean.valueOf(false)));
}
@@ -16,7 +16,7 @@
p_220082_2_.func_217377_a(p_220082_3_, false);
}
@@ -40,7 +44,7 @@
@@ -41,7 +45,7 @@
public void func_220069_a(BlockState p_220069_1_, World p_220069_2_, BlockPos p_220069_3_, Block p_220069_4_, BlockPos p_220069_5_, boolean p_220069_6_) {
if (p_220069_2_.func_175640_z(p_220069_3_)) {
@@ -25,7 +25,7 @@
p_220069_2_.func_217377_a(p_220069_3_, false);
}
@@ -48,7 +52,7 @@
@@ -49,7 +53,7 @@
public void func_176208_a(World p_176208_1_, BlockPos p_176208_2_, BlockState p_176208_3_, PlayerEntity p_176208_4_) {
if (!p_176208_1_.func_201670_d() && !p_176208_4_.func_184812_l_() && p_176208_3_.func_177229_b(field_212569_a)) {
@@ -34,7 +34,7 @@
}
super.func_176208_a(p_176208_1_, p_176208_2_, p_176208_3_, p_176208_4_);
@@ -62,10 +66,12 @@
@@ -63,10 +67,12 @@
}
}
@@ -46,17 +46,17 @@
+ @Deprecated //Forge: Prefer using IForgeBlock#catchFire
private static void func_196535_a(World p_196535_0_, BlockPos p_196535_1_, @Nullable LivingEntity p_196535_2_) {
if (!p_196535_0_.field_72995_K) {
TNTEntity tntentity = new TNTEntity(p_196535_0_, (double)((float)p_196535_1_.func_177958_n() + 0.5F), (double)p_196535_1_.func_177956_o(), (double)((float)p_196535_1_.func_177952_p() + 0.5F), p_196535_2_);
@@ -80,7 +86,7 @@
TNTEntity tntentity = new TNTEntity(p_196535_0_, (double)p_196535_1_.func_177958_n() + 0.5D, (double)p_196535_1_.func_177956_o(), (double)p_196535_1_.func_177952_p() + 0.5D, p_196535_2_);
@@ -81,7 +87,7 @@
if (item != Items.field_151033_d && item != Items.field_151059_bz) {
return super.func_220051_a(p_220051_1_, p_220051_2_, p_220051_3_, p_220051_4_, p_220051_5_, p_220051_6_);
return super.func_225533_a_(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_);
} else {
- func_196535_a(p_220051_2_, p_220051_3_, p_220051_4_);
+ catchFire(p_220051_1_, p_220051_2_, p_220051_3_, p_220051_6_.func_216354_b(), p_220051_4_);
p_220051_2_.func_180501_a(p_220051_3_, Blocks.field_150350_a.func_176223_P(), 11);
if (item == Items.field_151033_d) {
itemstack.func_222118_a(1, p_220051_4_, (p_220287_1_) -> {
@@ -100,7 +106,7 @@
- func_196535_a(p_225533_2_, p_225533_3_, p_225533_4_);
+ catchFire(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_6_.func_216354_b(), p_225533_4_);
p_225533_2_.func_180501_a(p_225533_3_, Blocks.field_150350_a.func_176223_P(), 11);
if (!p_225533_4_.func_184812_l_()) {
if (item == Items.field_151033_d) {
@@ -103,7 +109,7 @@
Entity entity = abstractarrowentity.func_212360_k();
if (abstractarrowentity.func_70027_ad()) {
BlockPos blockpos = p_220066_3_.func_216350_a();
@@ -1,8 +1,8 @@
--- a/net/minecraft/block/TallGrassBlock.java
+++ b/net/minecraft/block/TallGrassBlock.java
@@ -7,7 +7,7 @@
import net.minecraft.world.IBlockReader;
@@ -8,7 +8,7 @@
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
-public class TallGrassBlock extends BushBlock implements IGrowable {
+public class TallGrassBlock extends BushBlock implements IGrowable, net.minecraftforge.common.IShearable {
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/TrapDoorBlock.java
+++ b/net/minecraft/block/TrapDoorBlock.java
@@ -153,6 +153,16 @@
@@ -149,6 +149,16 @@
return super.func_196271_a(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/TurtleEggBlock.java
+++ b/net/minecraft/block/TurtleEggBlock.java
@@ -146,7 +146,7 @@
@@ -141,7 +141,7 @@
if (p_212570_2_ instanceof TurtleEntity) {
return false;
} else {
@@ -1,24 +1,43 @@
--- a/net/minecraft/block/VineBlock.java
+++ b/net/minecraft/block/VineBlock.java
@@ -20,7 +20,7 @@
@@ -19,7 +19,7 @@
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
-public class VineBlock extends Block {
+public class VineBlock extends Block implements net.minecraftforge.common.IShearable {
public static final BooleanProperty field_176277_a = SixWayBlock.field_196496_z;
public static final BooleanProperty field_176273_b = SixWayBlock.field_196488_a;
public static final BooleanProperty field_176278_M = SixWayBlock.field_196490_b;
@@ -154,7 +154,7 @@
p_196267_2_.func_217377_a(p_196267_3_, false);
}
@@ -152,14 +152,14 @@
p_225534_2_.func_217377_a(p_225534_3_, false);
}
- } else if (p_196267_2_.field_73012_v.nextInt(4) == 0) {
+ } else if (p_196267_2_.field_73012_v.nextInt(4) == 0 && p_196267_2_.isAreaLoaded(p_196267_3_, 4)) { // Forge: check area to prevent loading unloaded chunks
Direction direction = Direction.func_176741_a(p_196267_4_);
BlockPos blockpos = p_196267_3_.func_177984_a();
if (direction.func_176740_k().func_176722_c() && !p_196267_1_.func_177229_b(func_176267_a(direction))) {
@@ -329,4 +329,6 @@
- } else if (p_225534_2_.field_73012_v.nextInt(4) == 0) {
+ } else if (p_225534_2_.field_73012_v.nextInt(4) == 0 && p_225534_2_.isAreaLoaded(p_225534_3_, 4)) { // Forge: check area to prevent loading unloaded chunks
Direction direction = Direction.func_176741_a(p_225534_4_);
BlockPos blockpos = p_225534_3_.func_177984_a();
if (direction.func_176740_k().func_176722_c() && !p_225534_1_.func_177229_b(func_176267_a(direction))) {
if (this.func_196539_a(p_225534_2_, p_225534_3_)) {
BlockPos blockpos4 = p_225534_3_.func_177972_a(direction);
BlockState blockstate5 = p_225534_2_.func_180495_p(blockpos4);
- if (blockstate5.func_196958_f()) {
+ if (blockstate5.isAir(p_225534_2_, blockpos4)) {
Direction direction3 = direction.func_176746_e();
Direction direction4 = direction.func_176735_f();
boolean flag = p_225534_1_.func_177229_b(func_176267_a(direction3));
@@ -216,8 +216,8 @@
if (p_225534_3_.func_177956_o() > 0) {
BlockPos blockpos1 = p_225534_3_.func_177977_b();
BlockState blockstate1 = p_225534_2_.func_180495_p(blockpos1);
- if (blockstate1.func_196958_f() || blockstate1.func_177230_c() == this) {
- BlockState blockstate2 = blockstate1.func_196958_f() ? this.func_176223_P() : blockstate1;
+ if (blockstate1.isAir(p_225534_2_, blockpos1) || blockstate1.func_177230_c() == this) {
+ BlockState blockstate2 = blockstate1.isAir(p_225534_2_, blockpos1) ? this.func_176223_P() : blockstate1;
BlockState blockstate3 = this.func_196544_a(p_225534_1_, blockstate2, p_225534_4_);
if (blockstate2 != blockstate3 && this.func_196540_x(blockstate3)) {
p_225534_2_.func_180501_a(blockpos1, blockstate3, 2);
@@ -322,4 +322,6 @@
public static BooleanProperty func_176267_a(Direction p_176267_0_) {
return field_196546_A.get(p_176267_0_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/block/WebBlock.java
+++ b/net/minecraft/block/WebBlock.java
@@ -6,7 +6,7 @@
@@ -5,7 +5,7 @@
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
@@ -1,53 +0,0 @@
--- a/net/minecraft/block/state/PistonBlockStructureHelper.java
+++ b/net/minecraft/block/state/PistonBlockStructureHelper.java
@@ -52,7 +52,7 @@
} else {
for(int i = 0; i < this.field_177258_e.size(); ++i) {
BlockPos blockpos = this.field_177258_e.get(i);
- if (this.field_177261_a.func_180495_p(blockpos).func_177230_c() == Blocks.field_180399_cE && !this.func_177250_b(blockpos)) {
+ if (this.field_177261_a.func_180495_p(blockpos).isStickyBlock() && !this.func_177250_b(blockpos)) {
return false;
}
}
@@ -63,8 +63,7 @@
private boolean func_177251_a(BlockPos p_177251_1_, Direction p_177251_2_) {
BlockState blockstate = this.field_177261_a.func_180495_p(p_177251_1_);
- Block block = blockstate.func_177230_c();
- if (blockstate.func_196958_f()) {
+ if (field_177261_a.func_175623_d(p_177251_1_)) {
return true;
} else if (!PistonBlock.func_185646_a(blockstate, this.field_177261_a, p_177251_1_, this.field_177257_d, false, p_177251_2_)) {
return true;
@@ -77,11 +76,10 @@
if (i + this.field_177258_e.size() > 12) {
return false;
} else {
- while(block == Blocks.field_180399_cE) {
+ while(blockstate.isStickyBlock()) {
BlockPos blockpos = p_177251_1_.func_177967_a(this.field_177257_d.func_176734_d(), i);
blockstate = this.field_177261_a.func_180495_p(blockpos);
- block = blockstate.func_177230_c();
- if (blockstate.func_196958_f() || !PistonBlock.func_185646_a(blockstate, this.field_177261_a, blockpos, this.field_177257_d, false, this.field_177257_d.func_176734_d()) || blockpos.equals(this.field_177259_b)) {
+ if (blockstate.isAir(this.field_177261_a, blockpos) || !PistonBlock.func_185646_a(blockstate, this.field_177261_a, blockpos, this.field_177257_d, false, this.field_177257_d.func_176734_d()) || blockpos.equals(this.field_177259_b)) {
break;
}
@@ -108,7 +106,7 @@
for(int l = 0; l <= k + i1; ++l) {
BlockPos blockpos2 = this.field_177258_e.get(l);
- if (this.field_177261_a.func_180495_p(blockpos2).func_177230_c() == Blocks.field_180399_cE && !this.func_177250_b(blockpos2)) {
+ if (this.field_177261_a.func_180495_p(blockpos2).isStickyBlock() && !this.func_177250_b(blockpos2)) {
return false;
}
}
@@ -117,7 +115,7 @@
}
blockstate = this.field_177261_a.func_180495_p(blockpos1);
- if (blockstate.func_196958_f()) {
+ if (blockstate.isAir(field_177261_a, blockpos1)) {
return true;
}
@@ -1,16 +1,11 @@
--- a/net/minecraft/block/trees/JungleTree.java
+++ b/net/minecraft/block/trees/JungleTree.java
@@ -11,11 +11,11 @@
@@ -12,7 +12,7 @@
public class JungleTree extends BigTree {
@Nullable
protected AbstractTreeFeature<NoFeatureConfig> func_196936_b(Random p_196936_1_) {
- return new TreeFeature(NoFeatureConfig::func_214639_a, true, 4 + p_196936_1_.nextInt(7), Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), false);
+ return new TreeFeature(NoFeatureConfig::func_214639_a, true, 4 + p_196936_1_.nextInt(7), Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), false).setSapling((net.minecraft.block.SaplingBlock)Blocks.field_196678_w);
protected ConfiguredFeature<TreeFeatureConfig, ?> func_225546_b_(Random p_225546_1_, boolean p_225546_2_) {
- return (new TreeFeature(TreeFeatureConfig::func_227338_a_)).func_225566_b_(DefaultBiomeFeatures.field_226808_c_);
+ return (new TreeFeature(TreeFeatureConfig::deserializeJungle)).func_225566_b_(DefaultBiomeFeatures.field_226808_c_);
}
@Nullable
protected AbstractTreeFeature<NoFeatureConfig> func_196938_a(Random p_196938_1_) {
- return new MegaJungleFeature(NoFeatureConfig::func_214639_a, true, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P());
+ return new MegaJungleFeature(NoFeatureConfig::func_214639_a, true, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P()).setSapling((net.minecraft.block.SaplingBlock)Blocks.field_196678_w);
}
}
@@ -1,15 +1,6 @@
--- a/net/minecraft/client/GameSettings.java
+++ b/net/minecraft/client/GameSettings.java
@@ -143,7 +143,7 @@
public final KeyBinding[] field_151456_ac = new KeyBinding[]{new KeyBinding("key.hotbar.1", 49, "key.categories.inventory"), new KeyBinding("key.hotbar.2", 50, "key.categories.inventory"), new KeyBinding("key.hotbar.3", 51, "key.categories.inventory"), new KeyBinding("key.hotbar.4", 52, "key.categories.inventory"), new KeyBinding("key.hotbar.5", 53, "key.categories.inventory"), new KeyBinding("key.hotbar.6", 54, "key.categories.inventory"), new KeyBinding("key.hotbar.7", 55, "key.categories.inventory"), new KeyBinding("key.hotbar.8", 56, "key.categories.inventory"), new KeyBinding("key.hotbar.9", 57, "key.categories.inventory")};
public final KeyBinding field_193629_ap = new KeyBinding("key.saveToolbarActivator", 67, "key.categories.creative");
public final KeyBinding field_193630_aq = new KeyBinding("key.loadToolbarActivator", 88, "key.categories.creative");
- public final KeyBinding[] field_74324_K = ArrayUtils.addAll(new KeyBinding[]{this.field_74312_F, this.field_74313_G, this.field_74351_w, this.field_74370_x, this.field_74368_y, this.field_74366_z, this.field_74314_A, this.field_74311_E, this.field_151444_V, this.field_74316_C, this.field_151445_Q, this.field_74310_D, this.field_74321_H, this.field_74322_I, this.field_74323_J, this.field_151447_Z, this.field_151457_aa, this.field_151458_ab, this.field_152395_am, this.field_178883_an, this.field_186718_X, this.field_193629_ap, this.field_193630_aq, this.field_194146_ao}, this.field_151456_ac);
+ public KeyBinding[] field_74324_K = ArrayUtils.addAll(new KeyBinding[]{this.field_74312_F, this.field_74313_G, this.field_74351_w, this.field_74370_x, this.field_74368_y, this.field_74366_z, this.field_74314_A, this.field_74311_E, this.field_151444_V, this.field_74316_C, this.field_151445_Q, this.field_74310_D, this.field_74321_H, this.field_74322_I, this.field_74323_J, this.field_151447_Z, this.field_151457_aa, this.field_151458_ab, this.field_152395_am, this.field_178883_an, this.field_186718_X, this.field_193629_ap, this.field_193630_aq, this.field_194146_ao}, this.field_151456_ac);
protected Minecraft field_74317_L;
private final File field_74354_ai;
public Difficulty field_74318_M = Difficulty.NORMAL;
@@ -162,6 +162,7 @@
@@ -171,6 +171,7 @@
public String field_74363_ab = "en_us";
public GameSettings(Minecraft p_i46326_1_, File p_i46326_2_) {
@@ -17,20 +8,20 @@
this.field_74317_L = p_i46326_1_;
this.field_74354_ai = new File(p_i46326_2_, "options.txt");
if (p_i46326_1_.func_147111_S() && Runtime.getRuntime().maxMemory() >= 1000000000L) {
@@ -467,7 +468,11 @@
@@ -490,7 +491,11 @@
for(KeyBinding keybinding : this.field_74324_K) {
if (s1.equals("key_" + keybinding.func_151464_g())) {
- keybinding.func_197979_b(InputMappings.func_197955_a(s2));
+ if (s2.indexOf(':') != -1) {
+ String[] pts = s2.split(":");
if (s.equals("key_" + keybinding.func_151464_g())) {
- keybinding.func_197979_b(InputMappings.func_197955_a(s1));
+ if (s1.indexOf(':') != -1) {
+ String[] pts = s1.split(":");
+ keybinding.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.valueFromString(pts[1]), InputMappings.func_197955_a(pts[0]));
+ } else
+ keybinding.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputMappings.func_197955_a(s2));
+ keybinding.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputMappings.func_197955_a(s1));
}
}
@@ -515,6 +520,7 @@
@@ -538,6 +543,7 @@
}
public void func_74303_b() {
@@ -38,8 +29,8 @@
try (PrintWriter printwriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(this.field_74354_ai), StandardCharsets.UTF_8))) {
printwriter.println("version:" + SharedConstants.func_215069_a().getWorldVersion());
printwriter.println("autoJump:" + AbstractOption.field_216719_z.func_216741_b(this));
@@ -589,7 +595,7 @@
printwriter.println("glDebugVerbosity:" + this.field_209231_W);
@@ -615,7 +621,7 @@
printwriter.println("skipMultiplayerWarning:" + this.field_230152_Z_);
for(KeyBinding keybinding : this.field_74324_K) {
- printwriter.println("key_" + keybinding.func_151464_g() + ":" + keybinding.func_197982_m());
@@ -47,11 +38,8 @@
}
for(SoundCategory soundcategory : SoundCategory.values()) {
@@ -686,6 +692,25 @@
}
}
@@ -714,4 +720,22 @@
+ if (net.minecraftforge.fml.client.ClientModLoader.isLoading()) return; //Don't save settings before mods add keybindigns and the like to prevent them from being deleted.
p_198017_1_.func_198985_a(set);
}
+
@@ -62,7 +50,7 @@
+ field_74368_y.setKeyConflictContext(inGame);
+ field_74366_z.setKeyConflictContext(inGame);
+ field_74314_A.setKeyConflictContext(inGame);
+ field_74311_E.setKeyConflictContext(inGame);
+ field_228046_af_.setKeyConflictContext(inGame);
+ field_151444_V.setKeyConflictContext(inGame);
+ field_74312_F.setKeyConflictContext(inGame);
+ field_74310_D.setKeyConflictContext(inGame);
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/KeyboardListener.java
+++ b/net/minecraft/client/KeyboardListener.java
@@ -252,7 +252,9 @@
@@ -251,7 +251,9 @@
}
INestedGuiEventHandler inestedguieventhandler = this.field_197972_a.field_71462_r;
@@ -9,9 +9,9 @@
+ if ((!(this.field_197972_a.field_71462_r instanceof ControlsScreen) || ((ControlsScreen)inestedguieventhandler).field_152177_g <= Util.func_211177_b() - 20L)) {
+ if (p_197961_5_ == 1) {
if (this.field_197972_a.field_71474_y.field_152395_am.func_197976_a(p_197961_3_, p_197961_4_)) {
this.field_197972_a.field_195558_d.func_198077_g();
this.field_197972_a.field_71474_y.field_74353_u = this.field_197972_a.field_195558_d.func_198113_j();
@@ -271,6 +273,8 @@
this.field_197972_a.func_228018_at_().func_198077_g();
this.field_197972_a.field_71474_y.field_74353_u = this.field_197972_a.func_228018_at_().func_198113_j();
@@ -270,6 +272,8 @@
});
return;
}
@@ -20,7 +20,7 @@
}
boolean flag = inestedguieventhandler == null || !(inestedguieventhandler.getFocused() instanceof TextFieldWidget) || !((TextFieldWidget)inestedguieventhandler.getFocused()).func_212955_f();
@@ -290,10 +294,14 @@
@@ -289,10 +293,14 @@
Screen.wrapScreenError(() -> {
if (p_197961_5_ != 1 && (p_197961_5_ != 2 || !this.field_197973_b)) {
if (p_197961_5_ == 0) {
@@ -37,7 +37,7 @@
}
}, "keyPressed event handler", inestedguieventhandler.getClass().getCanonicalName());
@@ -354,7 +362,7 @@
@@ -353,7 +361,7 @@
}
}
}
@@ -46,7 +46,7 @@
}
}
@@ -364,12 +372,16 @@
@@ -363,12 +371,16 @@
if (iguieventlistener != null && this.field_197972_a.func_213250_au() == null) {
if (Character.charCount(p_197963_3_) == 1) {
Screen.wrapScreenError(() -> {
@@ -0,0 +1,11 @@
--- a/net/minecraft/client/MainWindow.java
+++ b/net/minecraft/client/MainWindow.java
@@ -86,7 +86,7 @@
GLFW.glfwWindowHint(139266, 2);
GLFW.glfwWindowHint(139267, 0);
GLFW.glfwWindowHint(139272, 0);
- this.field_198119_f = GLFW.glfwCreateWindow(this.field_198129_p, this.field_198130_q, p_i51170_5_, this.field_198125_l && monitor != null ? monitor.func_197995_f() : 0L, 0L);
+ this.field_198119_f = net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.INSTANCE.handOffWindow(()->this.field_198129_p, ()->this.field_198130_q, ()->p_i51170_5_, ()->this.field_198125_l && monitor != null ? monitor.func_197995_f() : 0L);
if (monitor != null) {
VideoMode videomode = monitor.func_197992_a(this.field_198125_l ? this.field_198124_k : Optional.empty());
this.field_198120_g = this.field_198127_n = monitor.func_197989_c() + videomode.func_198064_a() / 2 - this.field_198129_p / 2;
@@ -1,23 +1,14 @@
--- a/net/minecraft/client/Minecraft.java
+++ b/net/minecraft/client/Minecraft.java
@@ -316,6 +316,7 @@
@@ -322,6 +322,7 @@
public Minecraft(GameConfiguration p_i45547_1_) {
super("Client");
this.field_195556_O = p_i45547_1_.field_178743_b;
field_71432_P = this;
+ net.minecraftforge.client.ForgeHooksClient.invalidateLog4jThreadCache();
this.field_71412_D = p_i45547_1_.field_178744_c.field_178760_a;
this.field_110446_Y = p_i45547_1_.field_178744_c.field_178759_c;
File file1 = p_i45547_1_.field_178744_c.field_178759_c;
this.field_130070_K = p_i45547_1_.field_178744_c.field_178758_b;
@@ -333,7 +334,7 @@
supplier = p_213262_2_;
}
- return new ClientResourcePackInfo(p_213262_0_, p_213262_1_, supplier, p_213262_3_, p_213262_4_, p_213262_5_);
+ return new ClientResourcePackInfo(p_213262_0_, p_213262_1_, supplier, p_213262_3_, p_213262_4_, p_213262_5_, p_213262_3_.isHidden());
});
this.field_110448_aq.func_198982_a(this.field_195554_ax);
this.field_110448_aq.func_198982_a(new FolderPackFinder(this.field_130070_K));
@@ -341,7 +342,6 @@
@@ -336,7 +337,6 @@
this.field_152355_az = (new YggdrasilAuthenticationService(this.field_110453_aa, UUID.randomUUID().toString())).createMinecraftSessionService();
this.field_71449_j = p_i45547_1_.field_178745_a.field_178752_a;
field_147123_G.info("Setting user: {}", (Object)this.field_71449_j.func_111285_a());
@@ -25,74 +16,88 @@
this.field_71459_aj = p_i45547_1_.field_178741_d.field_178756_a;
this.field_147129_ai = func_147122_X();
this.field_71437_Z = null;
@@ -423,6 +423,7 @@
screensize = new ScreenSize(this.field_71474_y.field_92118_B, this.field_71474_y.field_92119_C, screensize.field_216496_c, screensize.field_216497_d, screensize.field_216498_e);
@@ -350,7 +350,7 @@
i = 0;
}
+ net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.INSTANCE.join();
LongSupplier longsupplier = GLX.initGlfw();
if (longsupplier != null) {
Util.field_211180_a = longsupplier;
@@ -442,7 +443,6 @@
- Bootstrap.func_151354_b();
+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(()->Bootstrap.func_151354_b(), net.minecraftforge.fml.loading.FMLLoader.progressWindowTick);
Bootstrap.func_218821_c();
KeybindTextComponent.field_193637_b = KeyBinding::func_193626_b;
this.field_184131_U = DataFixesManager.func_210901_a();
@@ -383,13 +383,13 @@
this.field_195558_d.func_216526_a(this.field_71474_y.field_74350_i);
this.field_71417_B = new MouseHelper(this);
- this.field_71417_B.func_198029_a(this.field_195558_d.func_198092_i());
this.field_195559_v = new KeyboardListener(this);
this.field_195559_v.func_197968_a(this.field_195558_d.func_198092_i());
GLX.init();
@@ -451,6 +451,7 @@
RenderSystem.initRenderer(this.field_71474_y.field_209231_W, false);
this.field_147124_at = new Framebuffer(this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l(), true, field_142025_a);
this.field_147124_at.func_147604_a(0.0F, 0.0F, 0.0F, 0.0F);
this.field_110451_am = new SimpleReloadableResourceManager(ResourcePackType.CLIENT_RESOURCES, this.field_152352_aC);
this.field_71474_y.func_198017_a(this.field_110448_aq);
+ net.minecraftforge.fml.client.ClientModLoader.begin(this, this.field_110448_aq, this.field_110451_am, this.field_195554_ax);
this.field_71474_y.func_198017_a(this.field_110448_aq);
this.field_110448_aq.func_198983_a();
List<IResourcePack> list = this.field_110448_aq.func_198980_d().stream().map(ResourcePackInfo::func_195796_e).collect(Collectors.toList());
this.field_135017_as = new LanguageManager(this.field_71474_y.field_74363_ab);
@@ -434,12 +434,14 @@
this.func_193986_ar();
this.field_110451_am.func_219534_a(this.field_193995_ae);
this.field_71452_i = new ParticleManager(this.field_71441_e, this.field_71446_o);
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.ParticleFactoryRegisterEvent());
this.field_110451_am.func_219534_a(this.field_71452_i);
this.field_213272_aL = new PaintingSpriteUploader(this.field_71446_o);
this.field_110451_am.func_219534_a(this.field_213272_aL);
this.field_213273_aM = new PotionSpriteUploader(this.field_71446_o);
this.field_110451_am.func_219534_a(this.field_213273_aM);
- this.field_71456_v = new IngameGui(this);
+ this.field_71456_v = new net.minecraftforge.client.gui.ForgeIngameGui(this);
+ this.field_71417_B.func_198029_a(this.field_195558_d.func_198092_i()); //Forge: Moved below ingameGUI setting to prevent NPEs in handeler.
this.field_184132_p = new DebugRenderer(this);
RenderSystem.setErrorCallback(this::func_195545_a);
if (this.field_71474_y.field_74353_u && !this.field_195558_d.func_198113_j()) {
@@ -451,12 +453,11 @@
this.field_195558_d.func_224798_d(this.field_71474_y.field_225307_E);
this.field_195558_d.func_227801_c_();
this.func_213226_a();
- if (s != null) {
- this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, s, i));
- } else {
- this.func_147108_a(new MainMenuScreen(true));
- }
@@ -516,12 +517,14 @@
this.field_110451_am.func_219534_a(this.field_193995_ae);
GlStateManager.viewport(0, 0, this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l());
this.field_71452_i = new ParticleManager(this.field_71441_e, this.field_71446_o);
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.ParticleFactoryRegisterEvent());
this.field_110451_am.func_219534_a(this.field_71452_i);
this.field_213272_aL = new PaintingSpriteUploader(this.field_71446_o);
this.field_110451_am.func_219534_a(this.field_213272_aL);
this.field_213273_aM = new PotionSpriteUploader(this.field_71446_o);
this.field_110451_am.func_219534_a(this.field_213273_aM);
- this.field_71456_v = new IngameGui(this);
+ this.field_71456_v = new net.minecraftforge.client.ForgeIngameGui(this);
+ this.field_71417_B.func_198029_a(this.field_195558_d.func_198092_i()); //Forge: Moved below ingameGUI setting to prevent NPEs in handeler.
this.field_184132_p = new DebugRenderer(this);
GLX.setGlfwErrorCallback(this::func_195545_a);
if (this.field_71474_y.field_74353_u && !this.field_195558_d.func_198113_j()) {
@@ -532,18 +535,20 @@
this.field_195558_d.func_216523_b(this.field_71474_y.field_74352_v);
this.field_195558_d.func_224798_d(this.field_71474_y.field_225307_E);
this.field_195558_d.func_198112_b();
- if (this.field_71475_ae != null) {
- this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, this.field_71475_ae, this.field_71477_af));
- } else {
- this.func_147108_a(new MainMenuScreen(true));
- }
+ //Final needed so we can move into lambda below.
+ final String autoServerName = s;
+ final int autoServerPort = i;
+
ResourceLoadProgressGui.func_212970_a(this);
List<IResourcePack> list = this.field_110448_aq.func_198980_d().stream().map(ResourcePackInfo::func_195796_e).collect(Collectors.toList());
this.func_213268_a(new ResourceLoadProgressGui(this, this.field_110451_am.func_219537_a(Util.func_215072_e(), this, field_223714_G, list), (p_229990_2_) -> {
@@ -466,6 +467,14 @@
this.func_213256_aB();
}
ResourceLoadProgressGui.func_212970_a(this);
this.func_213268_a(new ResourceLoadProgressGui(this, this.field_110451_am.func_219535_a(Util.func_215072_e(), this, field_223714_G), () -> {
if (SharedConstants.field_206244_b) {
this.func_213256_aB();
}
-
+ if (net.minecraftforge.fml.client.ClientModLoader.completeModLoading()) return; // Do not overwrite the error sceen
+ // FORGE: Move opening initial screen to after startup and events are enabled.
+ // Also Fixes MC-145102
+ if (this.field_71475_ae != null) {
+ this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, this.field_71475_ae, this.field_71477_af));
+ } else {
+ this.func_147108_a(new MainMenuScreen(true));
+ }
}, false));
+ if (net.minecraftforge.fml.client.ClientModLoader.completeModLoading()) return; // Do not overwrite the error screen
+ // FORGE: Move opening initial screen to after startup and events are enabled.
+ // Also Fixes MC-145102
+ if (autoServerName != null) {
+ this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, autoServerName, autoServerPort));
+ } else {
+ this.func_147108_a(new MainMenuScreen(true));
+ }
});
}, false));
}
@@ -505,7 +514,7 @@
}
@@ -558,7 +563,7 @@
private void func_229988_a_(Throwable p_229988_1_) {
- if (this.field_110448_aq.func_198980_d().size() > 1) {
+ if (this.field_110448_aq.func_198980_d().stream().anyMatch(e -> !e.func_195797_g())) { //Forge: This caused infinite loop if any resource packs are forced. Such as mod resources. So check if we can disable any.
ITextComponent itextcomponent;
if (p_229988_1_ instanceof SimpleReloadableResourceManager.FailedPackException) {
itextcomponent = new StringTextComponent(((SimpleReloadableResourceManager.FailedPackException)p_229988_1_).func_230028_a().func_195762_a());
@@ -579,7 +588,7 @@
return Stream.of(Registry.field_212630_s.func_177774_c(p_213251_0_.func_77973_b()));
});
SearchTreeReloadable<ItemStack> searchtreereloadable = new SearchTreeReloadable<>((p_213235_0_) -> {
@@ -101,16 +106,24 @@
});
NonNullList<ItemStack> nonnulllist = NonNullList.func_191196_a();
@@ -647,7 +652,7 @@
Bootstrap.func_179870_a(p_71377_1_.func_71502_e());
if (p_71377_1_.func_71497_f() != null) {
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + p_71377_1_.func_71497_f());
@@ -667,13 +676,13 @@
Bootstrap.func_179870_a(p_71377_0_.func_71502_e());
if (p_71377_0_.func_71497_f() != null) {
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + p_71377_0_.func_71497_f());
- System.exit(-1);
+ net.minecraftforge.fml.server.ServerLifecycleHooks.handleExit(-1);
} else if (p_71377_1_.func_147149_a(file2)) {
} else if (p_71377_0_.func_147149_a(file2)) {
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + file2.getAbsolutePath());
System.exit(-1);
@@ -662,6 +667,7 @@
- System.exit(-1);
+ net.minecraftforge.fml.server.ServerLifecycleHooks.handleExit(-1);
} else {
Bootstrap.func_179870_a("#@?@# Game crashed! Crash report could not be saved. #@?@#");
- System.exit(-2);
+ net.minecraftforge.fml.server.ServerLifecycleHooks.handleExit(-2);
}
}
@@ -682,6 +691,7 @@
return this.field_71474_y.field_211842_aO;
}
@@ -118,7 +131,7 @@
public CompletableFuture<Void> func_213237_g() {
if (this.field_213276_aV != null) {
return this.field_213276_aV;
@@ -741,16 +747,20 @@
@@ -760,10 +770,6 @@
}
public void func_147108_a(@Nullable Screen p_147108_1_) {
@@ -129,7 +142,8 @@
if (p_147108_1_ == null && this.field_71441_e == null) {
p_147108_1_ = new MainMenuScreen();
} else if (p_147108_1_ == null && this.field_71439_g.func_110143_aJ() <= 0.0F) {
p_147108_1_ = new DeathScreen((ITextComponent)null, this.field_71441_e.func_72912_H().func_76093_s());
@@ -774,6 +780,14 @@
}
}
+ Screen old = this.field_71462_r;
@@ -143,8 +157,8 @@
if (p_147108_1_ instanceof MainMenuScreen || p_147108_1_ instanceof MultiplayerScreen) {
this.field_71474_y.field_74330_P = false;
this.field_71456_v.func_146158_b().func_146231_a(true);
@@ -875,11 +885,13 @@
GlStateManager.enableTexture();
@@ -905,11 +919,13 @@
RenderSystem.enableTexture();
this.field_71424_I.func_76319_b();
if (!this.field_71454_w) {
+ net.minecraftforge.fml.hooks.BasicEventHooks.onRenderTickStart(this.field_71428_T.field_194147_b);
@@ -157,47 +171,107 @@
}
this.field_71424_I.func_219897_b();
@@ -1147,10 +1159,10 @@
@@ -976,7 +992,7 @@
Framebuffer framebuffer = this.func_147110_a();
framebuffer.func_216491_a(this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l(), field_142025_a);
- this.field_71460_t.func_147704_a(this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l());
+ if (this.field_71460_t!=null) this.field_71460_t.func_147704_a(this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l());
this.field_71417_B.func_198021_g();
}
@@ -1164,11 +1180,21 @@
if (p_147115_1_ && this.field_71476_x != null && this.field_71476_x.func_216346_c() == RayTraceResult.Type.BLOCK) {
BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)this.field_71476_x;
BlockPos blockpos = blockraytraceresult.func_216350_a();
- if (!this.field_71441_e.func_180495_p(blockpos).func_196958_f()) {
+ if (!this.field_71441_e.func_175623_d(blockpos)) {
+ net.minecraftforge.client.event.InputEvent.ClickInputEvent inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.field_71474_y.field_74312_F, Hand.MAIN_HAND);
+ if (inputEvent.isCanceled()) {
+ if (inputEvent.shouldSwingHand()) {
+ this.field_71452_i.addBlockHitEffects(blockpos, blockraytraceresult);
+ this.field_71439_g.func_184609_a(Hand.MAIN_HAND);
+ }
+ return;
+ }
Direction direction = blockraytraceresult.func_216354_b();
if (this.field_71442_b.func_180512_c(blockpos, direction)) {
- this.field_71452_i.func_180532_a(blockpos, direction);
+ if (inputEvent.shouldSwingHand()) {
+ this.field_71452_i.addBlockHitEffects(blockpos, blockraytraceresult);
this.field_71439_g.func_184609_a(Hand.MAIN_HAND);
+ }
}
}
@@ -1177,7 +1189,7 @@
@@ -1187,6 +1213,8 @@
}
} else if (!this.field_71439_g.func_184838_M()) {
+ net.minecraftforge.client.event.InputEvent.ClickInputEvent inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.field_71474_y.field_74312_F, Hand.MAIN_HAND);
+ if (!inputEvent.isCanceled())
switch(this.field_71476_x.func_216346_c()) {
case ENTITY:
this.field_71442_b.func_78764_a(this.field_71439_g, ((EntityRayTraceResult)this.field_71476_x).func_216348_a());
@@ -1194,7 +1222,7 @@
case BLOCK:
BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)this.field_71476_x;
BlockPos blockpos = blockraytraceresult.func_216350_a();
- if (!this.field_71441_e.func_180495_p(blockpos).func_196958_f()) {
+ if (!this.field_71441_e.func_180495_p(blockpos).isAir(field_71441_e, blockpos)) {
+ if (!this.field_71441_e.func_175623_d(blockpos)) {
this.field_71442_b.func_180511_b(blockpos, blockraytraceresult.func_216354_b());
break;
}
@@ -1187,6 +1199,7 @@
@@ -1204,8 +1232,10 @@
}
this.field_71439_g.func_184821_cY();
+ net.minecraftforge.common.ForgeHooks.onEmptyLeftClick(this.field_71439_g);
}
+ if (inputEvent.shouldSwingHand())
this.field_71439_g.func_184609_a(Hand.MAIN_HAND);
@@ -1236,6 +1249,9 @@
}
}
@@ -1220,6 +1250,11 @@
}
for(Hand hand : Hand.values()) {
+ net.minecraftforge.client.event.InputEvent.ClickInputEvent inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(1, this.field_71474_y.field_74313_G, hand);
+ if (inputEvent.isCanceled()) {
+ if (inputEvent.shouldSwingHand()) this.field_71439_g.func_184609_a(hand);
+ return;
+ }
ItemStack itemstack = this.field_71439_g.func_184586_b(hand);
if (this.field_71476_x != null) {
switch(this.field_71476_x.func_216346_c()) {
@@ -1233,6 +1268,7 @@
if (actionresulttype.func_226246_a_()) {
if (actionresulttype.func_226247_b_()) {
+ if (inputEvent.shouldSwingHand())
this.field_71439_g.func_184609_a(hand);
}
@@ -1245,6 +1281,7 @@
ActionResultType actionresulttype1 = this.field_71442_b.func_217292_a(this.field_71439_g, this.field_71441_e, hand, blockraytraceresult);
if (actionresulttype1.func_226246_a_()) {
if (actionresulttype1.func_226247_b_()) {
+ if (inputEvent.shouldSwingHand())
this.field_71439_g.func_184609_a(hand);
if (!itemstack.func_190926_b() && (itemstack.func_190916_E() != i || this.field_71442_b.func_78758_h())) {
this.field_71460_t.field_78516_c.func_187460_a(hand);
@@ -1260,6 +1297,9 @@
}
}
+ if (itemstack.func_190926_b() && (this.field_71476_x == null || this.field_71476_x.func_216346_c() == RayTraceResult.Type.MISS))
+ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.field_71439_g, hand);
+ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.field_71439_g, hand);
+
if (!itemstack.func_190926_b() && this.field_71442_b.func_187101_a(this.field_71439_g, this.field_71441_e, hand) == ActionResultType.SUCCESS) {
this.field_71460_t.field_78516_c.func_187460_a(hand);
return;
@@ -1255,6 +1271,8 @@
if (!itemstack.func_190926_b()) {
ActionResultType actionresulttype2 = this.field_71442_b.func_187101_a(this.field_71439_g, this.field_71441_e, hand);
if (actionresulttype2.func_226246_a_()) {
@@ -1286,6 +1326,8 @@
--this.field_71467_ac;
}
@@ -206,7 +280,7 @@
this.field_71424_I.func_76320_a("gui");
if (!this.field_71445_n) {
this.field_71456_v.func_73831_a();
@@ -1373,6 +1391,8 @@
@@ -1403,6 +1445,8 @@
this.field_71424_I.func_219895_b("keyboard");
this.field_195559_v.func_204870_b();
this.field_71424_I.func_76319_b();
@@ -215,7 +289,7 @@
}
private void func_184117_aA() {
@@ -1527,6 +1547,12 @@
@@ -1557,6 +1601,12 @@
this.func_147108_a(worldloadprogressscreen);
while(!this.field_71437_Z.func_71200_ad()) {
@@ -228,8 +302,8 @@
worldloadprogressscreen.tick();
this.func_195542_b(false);
@@ -1547,11 +1573,17 @@
networkmanager.func_150719_a(new ClientLoginNetHandler(networkmanager, this, (Screen)null, (p_213261_0_) -> {
@@ -1577,11 +1627,17 @@
networkmanager.func_150719_a(new ClientLoginNetHandler(networkmanager, this, (Screen)null, (p_229998_0_) -> {
}));
networkmanager.func_179290_a(new CHandshakePacket(socketaddress.toString(), 0, ProtocolType.LOGIN));
- networkmanager.func_179290_a(new CLoginStartPacket(this.func_110432_I().func_148256_e()));
@@ -247,7 +321,7 @@
WorkingScreen workingscreen = new WorkingScreen();
workingscreen.func_200210_a(new TranslationTextComponent("connect.joining"));
this.func_213241_c(workingscreen);
@@ -1583,10 +1615,12 @@
@@ -1613,10 +1669,12 @@
IntegratedServer integratedserver = this.field_71437_Z;
this.field_71437_Z = null;
this.field_71460_t.func_190564_k();
@@ -260,15 +334,23 @@
if (integratedserver != null) {
while(!integratedserver.func_213201_w()) {
this.func_195542_b(false);
@@ -1624,6 +1658,7 @@
@@ -1627,6 +1685,7 @@
this.field_71456_v.func_181029_i();
this.field_71422_O = null;
this.field_71455_al = false;
+ net.minecraftforge.fml.client.ClientHooks.handleClientWorldClosing(field_71441_e);
this.field_213274_aO.func_216815_b();
}
@@ -1649,6 +1708,7 @@
this.field_71452_i.func_78870_a(p_213257_1_);
TileEntityRendererDispatcher.field_147556_a.func_147543_a(p_213257_1_);
this.func_230150_b_();
+ net.minecraftforge.client.MinecraftForgeClient.clearRenderCache();
}
public final boolean func_71355_q() {
@@ -1649,112 +1684,8 @@
@@ -1674,112 +1734,9 @@
private void func_147112_ai() {
if (this.field_71476_x != null && this.field_71476_x.func_216346_c() != RayTraceResult.Type.MISS) {
@@ -378,20 +460,21 @@
- }
-
- }
+ if (!net.minecraftforge.client.ForgeHooksClient.onClickInput(2, this.field_71474_y.field_74322_I, Hand.MAIN_HAND).isCanceled())
+ net.minecraftforge.common.ForgeHooks.onPickBlock(this.field_71476_x, this.field_71439_g, this.field_71441_e);
+ // We delete this code wholly instead of commenting it out, to make sure we detect changes in it between MC versions
}
}
@@ -1826,6 +1757,7 @@
@@ -1861,6 +1818,7 @@
return field_71432_P;
}
+ @Deprecated // Forge: Use selective scheduleResourceRefresh method in FMLClientHandler
public CompletableFuture<Void> func_213245_w() {
return this.func_213169_a(this::func_213237_g).thenCompose((p_213240_0_) -> {
return p_213240_0_;
@@ -1972,6 +1904,8 @@
return this.func_213169_a(this::func_213237_g).thenCompose((p_229993_0_) -> {
return p_229993_0_;
@@ -1988,6 +1946,8 @@
}
public MusicTicker.MusicType func_147109_W() {
@@ -400,9 +483,18 @@
if (this.field_71462_r instanceof WinGameScreen) {
return MusicTicker.MusicType.CREDITS;
} else if (this.field_71439_g == null) {
@@ -2128,4 +2062,12 @@
public LoadingGui func_213250_au() {
return this.field_213279_p;
@@ -2164,7 +2124,7 @@
supplier = func_228022_c_(supplier);
}
- return new ClientResourcePackInfo(p_228011_0_, p_228011_1_, supplier, p_228011_3_, p_228011_4_, p_228011_5_);
+ return new ClientResourcePackInfo(p_228011_0_, p_228011_1_, supplier, p_228011_3_, p_228011_4_, p_228011_5_, p_228011_3_.isHidden());
}
private static Supplier<IResourcePack> func_228021_b_(Supplier<IResourcePack> p_228021_0_) {
@@ -2182,4 +2142,12 @@
public void func_228020_b_(int p_228020_1_) {
this.field_175617_aL.func_229355_a_(p_228020_1_);
}
+
+ public ItemColors getItemColors() {
@@ -1,27 +1,28 @@
--- a/net/minecraft/client/MouseHelper.java
+++ b/net/minecraft/client/MouseHelper.java
@@ -71,17 +71,22 @@
if (!this.field_198051_p && flag) {
this.func_198034_i();
}
+ if (net.minecraftforge.client.ForgeHooksClient.onRawMouseClicked(p_198023_3_, p_198023_4_, p_198023_5_)) return;
} else {
double d0 = this.field_198040_e * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
double d1 = this.field_198041_f * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
int p_198023_3_f = p_198023_3_;
@@ -66,6 +66,7 @@
this.field_198042_g = -1;
}
+ if (net.minecraftforge.client.ForgeHooksClient.onRawMouseClicked(p_198023_3_, p_198023_4_, p_198023_5_)) return;
boolean[] aboolean = new boolean[]{false};
if (this.field_198036_a.field_213279_p == null) {
if (this.field_198036_a.field_71462_r == null) {
@@ -77,11 +78,15 @@
double d1 = this.field_198041_f * (double)this.field_198036_a.func_228018_at_().func_198087_p() / (double)this.field_198036_a.func_228018_at_().func_198083_n();
if (flag) {
Screen.wrapScreenError(() -> {
- aboolean[0] = this.field_198036_a.field_71462_r.mouseClicked(d0, d1, p_198023_3_f);
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseClickedPre(this.field_198036_a.field_71462_r, d0, d1, p_198023_3_f);
+ if (!aboolean[0]) aboolean[0] = this.field_198036_a.field_71462_r.mouseClicked(d0, d1, p_198023_3_f);
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseClickedPost(this.field_198036_a.field_71462_r, d0, d1, p_198023_3_f);
- aboolean[0] = this.field_198036_a.field_71462_r.mouseClicked(d0, d1, i);
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseClickedPre(this.field_198036_a.field_71462_r, d0, d1, i);
+ if (!aboolean[0]) aboolean[0] = this.field_198036_a.field_71462_r.mouseClicked(d0, d1, i);
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseClickedPost(this.field_198036_a.field_71462_r, d0, d1, i);
}, "mouseClicked event handler", this.field_198036_a.field_71462_r.getClass().getCanonicalName());
} else {
Screen.wrapScreenError(() -> {
- aboolean[0] = this.field_198036_a.field_71462_r.mouseReleased(d0, d1, p_198023_3_f);
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseReleasedPre(this.field_198036_a.field_71462_r, d0, d1, p_198023_3_f);
+ if (!aboolean[0]) aboolean[0] = this.field_198036_a.field_71462_r.mouseReleased(d0, d1, p_198023_3_f);
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseReleasedPost(this.field_198036_a.field_71462_r, d0, d1, p_198023_3_f);
- aboolean[0] = this.field_198036_a.field_71462_r.mouseReleased(d0, d1, i);
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseReleasedPre(this.field_198036_a.field_71462_r, d0, d1, i);
+ if (!aboolean[0]) aboolean[0] = this.field_198036_a.field_71462_r.mouseReleased(d0, d1, i);
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onGuiMouseReleasedPost(this.field_198036_a.field_71462_r, d0, d1, i);
}, "mouseReleased event handler", this.field_198036_a.field_71462_r.getClass().getCanonicalName());
}
}
@@ -36,8 +37,8 @@
@@ -116,7 +121,9 @@
if (this.field_198036_a.field_71462_r != null) {
double d1 = this.field_198040_e * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
double d2 = this.field_198041_f * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
double d1 = this.field_198040_e * (double)this.field_198036_a.func_228018_at_().func_198107_o() / (double)this.field_198036_a.func_228018_at_().func_198105_m();
double d2 = this.field_198041_f * (double)this.field_198036_a.func_228018_at_().func_198087_p() / (double)this.field_198036_a.func_228018_at_().func_198083_n();
- this.field_198036_a.field_71462_r.mouseScrolled(d1, d2, d0);
+ if (net.minecraftforge.client.ForgeHooksClient.onGuiMouseScrollPre(this, this.field_198036_a.field_71462_r, d0)) return;
+ if (this.field_198036_a.field_71462_r.mouseScrolled(d1, d2, d0)) return;
@@ -53,18 +54,18 @@
if (this.field_198036_a.field_71439_g.func_175149_v()) {
if (this.field_198036_a.field_71456_v.func_175187_g().func_175262_a()) {
this.field_198036_a.field_71456_v.func_175187_g().func_195621_a((double)(-f1));
@@ -168,7 +176,9 @@
double d2 = (p_198022_3_ - this.field_198040_e) * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
double d3 = (p_198022_5_ - this.field_198041_f) * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
@@ -180,7 +188,9 @@
double d2 = (p_198022_3_ - this.field_198040_e) * (double)this.field_198036_a.func_228018_at_().func_198107_o() / (double)this.field_198036_a.func_228018_at_().func_198105_m();
double d3 = (p_198022_5_ - this.field_198041_f) * (double)this.field_198036_a.func_228018_at_().func_198087_p() / (double)this.field_198036_a.func_228018_at_().func_198083_n();
Screen.wrapScreenError(() -> {
- iguieventlistener.mouseDragged(d0, d1, this.field_198042_g, d2, d3);
+ if (net.minecraftforge.client.ForgeHooksClient.onGuiMouseDragPre(this.field_198036_a.field_71462_r, d0, d1, this.field_198042_g, d2, d3)) return;
+ if (iguieventlistener.mouseDragged(d0, d1, this.field_198042_g, d2, d3)) return;
+ net.minecraftforge.client.ForgeHooksClient.onGuiMouseDragPost(this.field_198036_a.field_71462_r, d0, d1, this.field_198042_g, d2, d3);
+ if (net.minecraftforge.client.ForgeHooksClient.onGuiMouseDragPre(this.field_198036_a.field_71462_r, d0, d1, this.field_198042_g, d2, d3)) return;
+ if (iguieventlistener.mouseDragged(d0, d1, this.field_198042_g, d2, d3)) return;
+ net.minecraftforge.client.ForgeHooksClient.onGuiMouseDragPost(this.field_198036_a.field_71462_r, d0, d1, this.field_198042_g, d2, d3);
}, "mouseDragged event handler", iguieventlistener.getClass().getCanonicalName());
}
}
@@ -233,6 +243,10 @@
@@ -245,6 +255,10 @@
return this.field_198039_d;
}
@@ -75,7 +76,7 @@
public double func_198024_e() {
return this.field_198040_e;
}
@@ -241,6 +255,14 @@
@@ -253,6 +267,14 @@
return this.field_198041_f;
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/audio/SoundEngine.java
+++ b/net/minecraft/client/audio/SoundEngine.java
@@ -53,6 +53,7 @@
@@ -55,6 +55,7 @@
this.field_148622_c = p_i50892_1_;
this.field_148619_d = p_i50892_2_;
this.field_217939_i = new AudioStreamManager(p_i50892_3_);
@@ -8,7 +8,7 @@
}
public void func_148596_a() {
@@ -68,6 +69,7 @@
@@ -70,6 +71,7 @@
this.func_148613_b();
this.func_148608_i();
@@ -16,7 +16,7 @@
}
private synchronized void func_148608_i() {
@@ -246,6 +248,8 @@
@@ -251,6 +253,8 @@
public void func_148611_c(ISound p_148611_1_) {
if (this.field_148617_f) {
@@ -25,7 +25,7 @@
SoundEventAccessor soundeventaccessor = p_148611_1_.func_184366_a(this.field_148622_c);
ResourceLocation resourcelocation = p_148611_1_.func_147650_b();
if (soundeventaccessor == null) {
@@ -300,11 +304,13 @@
@@ -305,11 +309,13 @@
p_217930_7_.func_216420_a(vec3d);
p_217930_7_.func_216432_b(flag);
});
@@ -39,7 +39,7 @@
});
});
} else {
@@ -312,6 +318,7 @@
@@ -317,6 +323,7 @@
channelmanager$entry.func_217888_a((p_217935_1_) -> {
p_217935_1_.func_216433_a(p_217928_1_);
p_217935_1_.func_216438_c();
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/audio/SoundHandler.java
+++ b/net/minecraft/client/audio/SoundHandler.java
@@ -210,6 +210,11 @@
@@ -214,6 +214,11 @@
this.field_147694_f.func_195855_a(p_195478_1_, p_195478_2_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/entity/player/AbstractClientPlayerEntity.java
+++ b/net/minecraft/client/entity/player/AbstractClientPlayerEntity.java
@@ -116,7 +116,7 @@
@@ -115,7 +115,7 @@
f = 1.0F;
}
@@ -9,7 +9,7 @@
int i = this.func_184612_cw();
float f1 = (float)i / 20.0F;
if (f1 > 1.0F) {
@@ -128,6 +128,6 @@
@@ -127,6 +127,6 @@
f *= 1.0F - f1 * 0.15F;
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/entity/player/ClientPlayerEntity.java
+++ b/net/minecraft/client/entity/player/ClientPlayerEntity.java
@@ -130,6 +130,7 @@
@@ -134,6 +134,7 @@
}
public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_) {
@@ -8,7 +8,7 @@
return false;
}
@@ -449,6 +450,11 @@
@@ -458,6 +459,11 @@
}
public void func_184185_a(SoundEvent p_184185_1_, float p_184185_2_, float p_184185_3_) {
@@ -17,33 +17,36 @@
+ p_184185_1_ = event.getSound();
+ p_184185_2_ = event.getVolume();
+ p_184185_3_ = event.getPitch();
this.field_70170_p.func_184134_a(this.field_70165_t, this.field_70163_u, this.field_70161_v, p_184185_1_, this.func_184176_by(), p_184185_2_, p_184185_3_, false);
this.field_70170_p.func_184134_a(this.func_226277_ct_(), this.func_226278_cu_(), this.func_226281_cx_(), p_184185_1_, this.func_184176_by(), p_184185_2_, p_184185_3_, false);
}
@@ -591,6 +597,7 @@
@@ -599,6 +605,7 @@
boolean flag1 = this.field_71158_b.field_228350_h_;
boolean flag2 = this.func_223110_ee();
boolean flag3 = this.func_213287_bg() || this.func_213300_bk();
this.field_71158_b.func_217607_a(flag3, this.func_175149_v());
this.field_71158_b.func_225607_a_(this.func_228354_I_());
+ net.minecraftforge.client.ForgeHooksClient.onInputUpdate(this, this.field_71158_b);
this.field_71159_c.func_193032_ao().func_193293_a(this.field_71158_b);
if (this.func_184587_cr() && !this.func_184218_aH()) {
this.field_71158_b.field_78902_a *= 0.2F;
@@ -607,10 +614,14 @@
if (!this.field_70145_X) {
AxisAlignedBB axisalignedbb = this.func_174813_aQ();
+ net.minecraftforge.client.event.PlayerSPPushOutOfBlocksEvent event = new net.minecraftforge.client.event.PlayerSPPushOutOfBlocksEvent(this, axisalignedbb);
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) {
+ axisalignedbb = event.getEntityBoundingBox();
this.func_213282_i(this.field_70165_t - (double)this.func_213311_cf() * 0.35D, axisalignedbb.field_72338_b + 0.5D, this.field_70161_v + (double)this.func_213311_cf() * 0.35D);
this.func_213282_i(this.field_70165_t - (double)this.func_213311_cf() * 0.35D, axisalignedbb.field_72338_b + 0.5D, this.field_70161_v - (double)this.func_213311_cf() * 0.35D);
this.func_213282_i(this.field_70165_t + (double)this.func_213311_cf() * 0.35D, axisalignedbb.field_72338_b + 0.5D, this.field_70161_v - (double)this.func_213311_cf() * 0.35D);
this.func_213282_i(this.field_70165_t + (double)this.func_213311_cf() * 0.35D, axisalignedbb.field_72338_b + 0.5D, this.field_70161_v + (double)this.func_213311_cf() * 0.35D);
+ }
@@ -613,11 +620,12 @@
this.field_71158_b.field_78901_c = true;
}
boolean flag7 = (float)this.func_71024_bL().func_75116_a() > 6.0F || this.field_71075_bZ.field_75101_c;
@@ -950,4 +961,16 @@
- if (!this.field_70145_X) {
- this.func_213282_i(this.func_226277_ct_() - (double)this.func_213311_cf() * 0.35D, this.func_226278_cu_() + 0.5D, this.func_226281_cx_() + (double)this.func_213311_cf() * 0.35D);
- this.func_213282_i(this.func_226277_ct_() - (double)this.func_213311_cf() * 0.35D, this.func_226278_cu_() + 0.5D, this.func_226281_cx_() - (double)this.func_213311_cf() * 0.35D);
- this.func_213282_i(this.func_226277_ct_() + (double)this.func_213311_cf() * 0.35D, this.func_226278_cu_() + 0.5D, this.func_226281_cx_() - (double)this.func_213311_cf() * 0.35D);
- this.func_213282_i(this.func_226277_ct_() + (double)this.func_213311_cf() * 0.35D, this.func_226278_cu_() + 0.5D, this.func_226281_cx_() + (double)this.func_213311_cf() * 0.35D);
+ net.minecraftforge.client.event.PlayerSPPushOutOfBlocksEvent event = new net.minecraftforge.client.event.PlayerSPPushOutOfBlocksEvent(this);
+ if (!this.field_70145_X && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) {
+ this.func_213282_i(this.func_226277_ct_() - (double)this.func_213311_cf() * 0.35D, event.getMinY(), this.func_226281_cx_() + (double)this.func_213311_cf() * 0.35D);
+ this.func_213282_i(this.func_226277_ct_() - (double)this.func_213311_cf() * 0.35D, event.getMinY(), this.func_226281_cx_() - (double)this.func_213311_cf() * 0.35D);
+ this.func_213282_i(this.func_226277_ct_() + (double)this.func_213311_cf() * 0.35D, event.getMinY(), this.func_226281_cx_() - (double)this.func_213311_cf() * 0.35D);
+ this.func_213282_i(this.func_226277_ct_() + (double)this.func_213311_cf() * 0.35D, event.getMinY(), this.func_226281_cx_() + (double)this.func_213311_cf() * 0.35D);
}
boolean flag4 = (float)this.func_71024_bL().func_75116_a() > 6.0F || this.field_71075_bZ.field_75101_c;
@@ -961,4 +969,16 @@
return this.field_204230_bP;
}
}
@@ -55,7 +58,7 @@
+ this.field_175164_bL = old.field_175164_bL;
+ this.field_175165_bM = old.field_175165_bM;
+ this.field_184841_cd = old.field_184841_cd;
+ this.field_175170_bN = old.field_175170_bN;
+ this.field_228351_cj_ = old.field_228351_cj_;
+ this.field_175171_bO = old.field_175171_bO;
+ this.field_175168_bP = old.field_175168_bP;
+ }
@@ -8,12 +8,12 @@
this.field_147003_i = 160 + (this.width - this.field_146999_f - 200) / 2;
this.field_147045_u = true;
}
@@ -59,7 +60,7 @@
@@ -58,7 +59,7 @@
j = 132 / (collection.size() - 1);
}
- Iterable<EffectInstance> iterable = Ordering.<EffectInstance>natural().sortedCopy(collection);
+ Iterable<EffectInstance> iterable = collection.stream().filter( effectInstance -> effectInstance.func_188419_a().shouldRender(effectInstance)).sorted().collect(java.util.stream.Collectors.toList());
+ Iterable<EffectInstance> iterable = collection.stream().filter( effectInstance -> effectInstance.shouldRender()).sorted().collect(java.util.stream.Collectors.toList());
this.func_214079_a(i, j, iterable);
this.func_214077_b(i, j, iterable);
this.func_214078_c(i, j, iterable);
@@ -21,8 +21,8 @@
int i = this.field_147009_r;
for(EffectInstance effectinstance : p_214078_3_) {
+ effectinstance.func_188419_a().renderInventoryEffect(effectinstance, this, p_214078_1_, i, this.blitOffset);
+ if (!effectinstance.func_188419_a().shouldRenderInvText(effectinstance)) { i += p_214078_2_; continue; }
+ effectinstance.renderInventoryEffect(this, p_214078_1_, i, this.getBlitOffset());
+ if (!effectinstance.shouldRenderInvText()) { i += p_214078_2_; continue; }
String s = I18n.func_135052_a(effectinstance.func_188419_a().func_76393_a());
if (effectinstance.func_76458_c() >= 1 && effectinstance.func_76458_c() <= 9) {
s = s + ' ' + I18n.func_135052_a("enchantment.level." + (effectinstance.func_76458_c() + 1));
@@ -1,40 +1,34 @@
--- a/net/minecraft/client/gui/IngameGui.java
+++ b/net/minecraft/client/gui/IngameGui.java
@@ -408,6 +408,9 @@
@@ -406,6 +406,9 @@
for(EffectInstance effectinstance : Ordering.natural().reverse().sortedCopy(collection)) {
Effect effect = effectinstance.func_188419_a();
+ if (!effect.shouldRenderHUD(effectinstance)) continue;
+ if (!effectinstance.shouldRenderHUD()) continue;
+ // Rebind in case previous renderHUDEffect changed texture
+ this.field_73839_d.func_110434_K().func_110577_a(ContainerScreen.field_147001_a);
if (effectinstance.func_205348_f()) {
int k = this.field_194811_H;
int l = 1;
@@ -439,11 +442,13 @@
float f_f = f;
int k_f = k;
int l_f = l;
+
TextureAtlasSprite textureatlassprite = potionspriteuploader.func_215288_a(effect);
list.add(() -> {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, f_f);
blit(k_f + 3, l_f + 3, this.blitOffset, 18, 18, textureatlassprite);
@@ -443,6 +446,7 @@
RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);
blit(j1 + 3, k1 + 3, this.getBlitOffset(), 18, 18, textureatlassprite);
});
+ effect.renderHUDEffect(effectinstance, this, k, l, this.blitOffset, f);
+ effectinstance.renderHUDEffect(this, k, l, this.getBlitOffset(), f);
}
}
@@ -572,6 +577,7 @@
@@ -568,6 +572,7 @@
}
String s = itextcomponent.func_150254_d();
+ s = this.field_92016_l.func_77973_b().getHighlightTip(this.field_92016_l, s);
+ s = this.field_92016_l.getHighlightTip(s);
int i = (this.field_194811_H - this.func_175179_f().func_78256_a(s)) / 2;
int j = this.field_194812_I - 59;
if (!this.field_73839_d.field_71442_b.func_78755_b()) {
@@ -588,7 +594,13 @@
GlStateManager.enableBlend();
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
@@ -584,7 +589,13 @@
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
fill(i - 2, j - 2, i + this.func_175179_f().func_78256_a(s) + 2, j + 9 + 2, this.field_73839_d.field_71474_y.func_216839_a(0));
+ FontRenderer font = field_92016_l.func_77973_b().getFontRenderer(field_92016_l);
+ if (font == null) {
@@ -43,6 +37,15 @@
+ i = (this.field_194811_H - font.func_78256_a(s)) / 2;
+ font.func_175063_a(s, (float)i, (float)j, 16777215 + (k << 24));
+ }
GlStateManager.disableBlend();
GlStateManager.popMatrix();
RenderSystem.disableBlend();
RenderSystem.popMatrix();
}
@@ -1045,7 +1056,7 @@
ItemStack itemstack = this.field_73839_d.field_71439_g.field_71071_by.func_70448_g();
if (itemstack.func_190926_b()) {
this.field_92017_k = 0;
- } else if (!this.field_92016_l.func_190926_b() && itemstack.func_77973_b() == this.field_92016_l.func_77973_b() && itemstack.func_200301_q().equals(this.field_92016_l.func_200301_q())) {
+ } else if (!this.field_92016_l.func_190926_b() && itemstack.func_77973_b() == this.field_92016_l.func_77973_b() && (itemstack.func_200301_q().equals(this.field_92016_l.func_200301_q()) && itemstack.getHighlightTip(itemstack.func_200301_q().func_150261_e()).equals(field_92016_l.getHighlightTip(field_92016_l.func_200301_q().func_150261_e())))) {
if (this.field_92017_k > 0) {
--this.field_92017_k;
}
@@ -1,10 +1,10 @@
--- a/net/minecraft/client/gui/MapItemRenderer.java
+++ b/net/minecraft/client/gui/MapItemRenderer.java
@@ -118,6 +118,7 @@
@@ -114,6 +114,7 @@
for(MapDecoration mapdecoration : this.field_148242_b.field_76203_h.values()) {
if (!p_148237_1_ || mapdecoration.func_191180_f()) {
if (!p_228089_3_ || mapdecoration.func_191180_f()) {
+ if (mapdecoration.render(k)) { k++; continue; }
MapItemRenderer.this.field_148251_b.func_110577_a(MapItemRenderer.field_148253_a);
GlStateManager.pushMatrix();
GlStateManager.translatef(0.0F + (float)mapdecoration.func_176112_b() / 2.0F + 64.0F, 0.0F + (float)mapdecoration.func_176113_c() / 2.0F + 64.0F, -0.02F);
p_228089_1_.func_227860_a_();
p_228089_1_.func_227861_a_((double)(0.0F + (float)mapdecoration.func_176112_b() / 2.0F + 64.0F), (double)(0.0F + (float)mapdecoration.func_176113_c() / 2.0F + 64.0F), (double)-0.02F);
p_228089_1_.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_((float)(mapdecoration.func_176111_d() * 360) / 16.0F));
@@ -1,10 +1,10 @@
--- a/net/minecraft/client/gui/ResourceLoadProgressGui.java
+++ b/net/minecraft/client/gui/ResourceLoadProgressGui.java
@@ -79,6 +79,7 @@
@@ -81,6 +81,7 @@
this.blit(k1, i1, 0, 0, 256, 256);
float f3 = this.field_212975_c.func_219555_b();
this.field_212978_f = this.field_212978_f * 0.95F + f3 * 0.050000012F;
this.field_212978_f = MathHelper.func_76131_a(this.field_212978_f * 0.95F + f3 * 0.050000012F, 0.0F, 1.0F);
+ net.minecraftforge.fml.client.ClientModLoader.renderProgressText();
if (f < 1.0F) {
this.func_212972_a(i / 2 - 150, j / 4 * 3, i / 2 + 150, j / 4 * 3 + 10, this.field_212978_f, 1.0F - MathHelper.func_76131_a(f, 0.0F, 1.0F));
this.func_228181_a_(i / 2 - 150, j / 4 * 3, i / 2 + 150, j / 4 * 3 + 10, 1.0F - MathHelper.func_76131_a(f, 0.0F, 1.0F));
}
@@ -1,24 +1,24 @@
--- a/net/minecraft/client/gui/SlotGui.java
+++ b/net/minecraft/client/gui/SlotGui.java
@@ -154,15 +154,8 @@
GlStateManager.disableFog();
@@ -153,15 +153,8 @@
this.capYPosition();
Tessellator tessellator = Tessellator.func_178181_a();
BufferBuilder bufferbuilder = tessellator.func_178180_c();
- this.minecraft.func_110434_K().func_110577_a(AbstractGui.BACKGROUND_LOCATION);
- GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- float f = 32.0F;
- bufferbuilder.func_181668_a(7, DefaultVertexFormats.field_181709_i);
- bufferbuilder.func_181662_b((double)this.x0, (double)this.y1, 0.0D).func_187315_a((double)((float)this.x0 / 32.0F), (double)((float)(this.y1 + (int)this.yo) / 32.0F)).func_181669_b(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_181662_b((double)this.x1, (double)this.y1, 0.0D).func_187315_a((double)((float)this.x1 / 32.0F), (double)((float)(this.y1 + (int)this.yo) / 32.0F)).func_181669_b(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_181662_b((double)this.x1, (double)this.y0, 0.0D).func_187315_a((double)((float)this.x1 / 32.0F), (double)((float)(this.y0 + (int)this.yo) / 32.0F)).func_181669_b(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_181662_b((double)this.x0, (double)this.y0, 0.0D).func_187315_a((double)((float)this.x0 / 32.0F), (double)((float)(this.y0 + (int)this.yo) / 32.0F)).func_181669_b(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_225582_a_((double)this.x0, (double)this.y1, 0.0D).func_225583_a_((float)this.x0 / 32.0F, (float)(this.y1 + (int)this.yo) / 32.0F).func_225586_a_(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_225582_a_((double)this.x1, (double)this.y1, 0.0D).func_225583_a_((float)this.x1 / 32.0F, (float)(this.y1 + (int)this.yo) / 32.0F).func_225586_a_(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_225582_a_((double)this.x1, (double)this.y0, 0.0D).func_225583_a_((float)this.x1 / 32.0F, (float)(this.y0 + (int)this.yo) / 32.0F).func_225586_a_(32, 32, 32, 255).func_181675_d();
- bufferbuilder.func_225582_a_((double)this.x0, (double)this.y0, 0.0D).func_225583_a_((float)this.x0 / 32.0F, (float)(this.y0 + (int)this.yo) / 32.0F).func_225586_a_(32, 32, 32, 255).func_181675_d();
- tessellator.func_78381_a();
+ // Forge: background rendering moved into separate method.
+ this.drawContainerBackground(tessellator);
int k = this.x0 + this.width / 2 - this.getRowWidth() / 2 + 2;
int l = this.y0 + 4 - (int)this.yo;
if (this.renderHeader) {
@@ -402,4 +395,17 @@
@@ -401,4 +394,17 @@
public int getItemHeight() {
return this.itemHeight;
}
@@ -26,13 +26,13 @@
+ protected void drawContainerBackground(Tessellator tessellator) {
+ BufferBuilder buffer = tessellator.func_178180_c();
+ this.minecraft.func_110434_K().func_110577_a(AbstractGui.BACKGROUND_LOCATION);
+ GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ float scale = 32.0F;
+ buffer.func_181668_a(7, DefaultVertexFormats.field_181709_i);
+ buffer.func_181662_b((double)this.x0, (double)this.y1, 0.0D).func_187315_a(this.x0 / scale, (this.y1 + (int)this.yo) / scale).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.x1, (double)this.y1, 0.0D).func_187315_a(this.x1 / scale, (this.y1 + (int)this.yo) / scale).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.x1, (double)this.y0, 0.0D).func_187315_a(this.x1 / scale, (this.y0 + (int)this.yo) / scale).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_181662_b((double)this.x0, (double)this.y0, 0.0D).func_187315_a(this.x0 / scale, (this.y0 + (int)this.yo) / scale).func_181669_b(32, 32, 32, 255).func_181675_d();
+ buffer.func_225582_a_((double)this.x0, (double)this.y1, 0.0D).func_225583_a_(this.x0 / scale, (this.y1 + (int)this.yo) / scale).func_225586_a_(32, 32, 32, 255).func_181675_d();
+ buffer.func_225582_a_((double)this.x1, (double)this.y1, 0.0D).func_225583_a_(this.x1 / scale, (this.y1 + (int)this.yo) / scale).func_225586_a_(32, 32, 32, 255).func_181675_d();
+ buffer.func_225582_a_((double)this.x1, (double)this.y0, 0.0D).func_225583_a_(this.x1 / scale, (this.y0 + (int)this.yo) / scale).func_225586_a_(32, 32, 32, 255).func_181675_d();
+ buffer.func_225582_a_((double)this.x0, (double)this.y0, 0.0D).func_225583_a_(this.x0 / scale, (this.y0 + (int)this.yo) / scale).func_225586_a_(32, 32, 32, 255).func_181675_d();
+ tessellator.func_78381_a();
+ }
}
@@ -24,7 +24,7 @@
public Advancement func_193935_c() {
return this.field_191805_h;
}
@@ -136,8 +146,8 @@
@@ -150,8 +160,8 @@
return null;
} else {
for(AdvancementTabType advancementtabtype : AdvancementTabType.values()) {
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/advancements/AdvancementsScreen.java
+++ b/net/minecraft/client/gui/advancements/AdvancementsScreen.java
@@ -25,6 +25,7 @@
@@ -24,6 +24,7 @@
private final Map<Advancement, AdvancementTabGui> field_191947_i = Maps.newLinkedHashMap();
private AdvancementTabGui field_191940_s;
private boolean field_191944_v;
@@ -8,7 +8,7 @@
public AdvancementsScreen(ClientAdvancementManager p_i47383_1_) {
super(NarratorChatListener.field_216868_a);
@@ -40,7 +41,13 @@
@@ -39,7 +40,13 @@
} else {
this.field_191946_h.func_194230_a(this.field_191940_s == null ? null : this.field_191940_s.func_193935_c(), true);
}
@@ -23,7 +23,7 @@
}
public void removed() {
@@ -58,7 +65,7 @@
@@ -57,7 +64,7 @@
int j = (this.height - 140) / 2;
for(AdvancementTabGui advancementtabgui : this.field_191947_i.values()) {
@@ -32,20 +32,20 @@
this.field_191946_h.func_194230_a(advancementtabgui.func_193935_c(), true);
break;
}
@@ -83,6 +90,12 @@
@@ -82,6 +89,12 @@
int j = (this.height - 140) / 2;
this.renderBackground();
this.func_191936_c(p_render_1_, p_render_2_, i, j);
+ if (maxPages != 0) {
+ String page = String.format("%d / %d", tabPage + 1, maxPages + 1);
+ int width = this.font.func_78256_a(page);
+ GlStateManager.disableLighting();
+ RenderSystem.disableLighting();
+ this.font.func_175063_a(page, i + (252 / 2) - (width / 2), j - 44, -1);
+ }
this.func_191934_b(i, j);
this.func_191937_d(p_render_1_, p_render_2_, i, j);
}
@@ -131,6 +144,7 @@
@@ -128,6 +141,7 @@
this.minecraft.func_110434_K().func_110577_a(field_191945_g);
for(AdvancementTabGui advancementtabgui : this.field_191947_i.values()) {
@@ -53,15 +53,15 @@
advancementtabgui.func_191798_a(p_191934_1_, p_191934_2_, advancementtabgui == this.field_191940_s);
}
@@ -139,6 +153,7 @@
RenderHelper.func_74520_c();
@@ -135,6 +149,7 @@
RenderSystem.defaultBlendFunc();
for(AdvancementTabGui advancementtabgui1 : this.field_191947_i.values()) {
+ if (advancementtabgui1.getPage() == tabPage)
advancementtabgui1.func_191796_a(p_191934_1_, p_191934_2_, this.itemRenderer);
}
@@ -161,7 +176,7 @@
@@ -157,7 +172,7 @@
if (this.field_191947_i.size() > 1) {
for(AdvancementTabGui advancementtabgui : this.field_191947_i.values()) {
@@ -5,9 +5,9 @@
for(ClientBossInfo clientbossinfo : this.field_184060_g.values()) {
int k = i / 2 - 91;
+ net.minecraftforge.client.event.RenderGameOverlayEvent.BossInfo event =
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPre(this.field_184059_f.field_195558_d, clientbossinfo, k, j, 10 + this.field_184059_f.field_71466_p.field_78288_b);
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPre(this.field_184059_f.func_228018_at_(), clientbossinfo, k, j, 10 + this.field_184059_f.field_71466_p.field_78288_b);
+ if (!event.isCanceled()) {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.field_184059_f.func_110434_K().func_110577_a(field_184058_a);
this.func_184052_a(k, j, clientbossinfo);
@@ -38,7 +41,9 @@
@@ -17,7 +17,7 @@
- j += 10 + 9;
+ }
+ j += event.getIncrement();
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPost(this.field_184059_f.field_195558_d);
if (j >= this.field_184059_f.field_195558_d.func_198087_p() / 3) {
+ net.minecraftforge.client.ForgeHooksClient.bossBarRenderPost(this.field_184059_f.func_228018_at_());
if (j >= this.field_184059_f.func_228018_at_().func_198087_p() / 3) {
break;
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/overlay/DebugOverlayGui.java
+++ b/net/minecraft/client/gui/overlay/DebugOverlayGui.java
@@ -342,7 +342,7 @@
@@ -357,7 +357,7 @@
list.add(this.func_211534_a(entry));
}
@@ -9,7 +9,7 @@
list.add("#" + resourcelocation);
}
}
@@ -358,7 +358,7 @@
@@ -373,7 +373,7 @@
list.add(this.func_211534_a(entry1));
}
@@ -18,7 +18,7 @@
list.add("#" + resourcelocation1);
}
}
@@ -368,6 +368,7 @@
@@ -383,6 +383,7 @@
list.add("");
list.add(TextFormatting.UNDERLINE + "Targeted Entity");
list.add(String.valueOf((Object)Registry.field_212629_r.func_177774_c(entity.func_200600_R())));
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/recipebook/RecipeBookGui.java
+++ b/net/minecraft/client/gui/recipebook/RecipeBookGui.java
@@ -89,7 +89,7 @@
@@ -88,7 +88,7 @@
this.func_205702_a();
this.field_193018_j.clear();
@@ -9,7 +9,7 @@
this.field_193018_j.add(new RecipeTabToggleWidget(recipebookcategories));
}
@@ -421,7 +421,7 @@
@@ -417,7 +417,7 @@
languagemanager.func_135045_a(language);
this.field_191888_F.field_71474_y.field_74363_ab = language.getCode();
@@ -1,23 +1,23 @@
--- a/net/minecraft/client/gui/screen/ControlsScreen.java
+++ b/net/minecraft/client/gui/screen/ControlsScreen.java
@@ -37,7 +37,7 @@
@@ -32,7 +32,7 @@
this.children.add(this.field_146494_r);
this.field_146493_s = this.addButton(new Button(this.width / 2 - 155, this.height - 29, 150, 20, I18n.func_135052_a("controls.resetAll"), (p_213125_1_) -> {
for(KeyBinding keybinding : this.minecraft.field_71474_y.field_74324_K) {
for(KeyBinding keybinding : this.field_228183_b_.field_74324_K) {
- keybinding.func_197979_b(keybinding.func_197977_i());
+ keybinding.setToDefault();
}
KeyBinding.func_74508_b();
@@ -61,11 +61,14 @@
@@ -56,11 +56,14 @@
public boolean keyPressed(int p_keyPressed_1_, int p_keyPressed_2_, int p_keyPressed_3_) {
if (this.field_146491_f != null) {
if (p_keyPressed_1_ == 256) {
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputMappings.field_197958_a);
this.field_146497_i.func_198014_a(this.field_146491_f, InputMappings.field_197958_a);
this.field_228183_b_.func_198014_a(this.field_146491_f, InputMappings.field_197958_a);
} else {
+ this.field_146491_f.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputMappings.func_197954_a(p_keyPressed_1_, p_keyPressed_2_));
this.field_146497_i.func_198014_a(this.field_146491_f, InputMappings.func_197954_a(p_keyPressed_1_, p_keyPressed_2_));
this.field_228183_b_.func_198014_a(this.field_146491_f, InputMappings.func_197954_a(p_keyPressed_1_, p_keyPressed_2_));
}
+ if (!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(this.field_146491_f.getKey()))
@@ -1,7 +1,7 @@
--- a/net/minecraft/client/gui/screen/CreateWorldScreen.java
+++ b/net/minecraft/client/gui/screen/CreateWorldScreen.java
@@ -137,14 +137,7 @@
}));
@@ -145,14 +145,7 @@
});
this.field_146320_D.visible = false;
this.field_146322_F = this.addButton(new Button(this.width / 2 + 5, 120, 150, 20, I18n.func_135052_a("selectWorld.customizeType"), (p_214314_1_) -> {
- if (WorldType.field_77139_a[this.field_146331_K] == WorldType.field_77138_c) {
@@ -16,11 +16,12 @@
}));
this.field_146322_F.visible = false;
this.field_146321_E = this.addButton(new Button(this.width / 2 - 155, 151, 150, 20, I18n.func_135052_a("selectWorld.allowCommands"), (p_214315_1_) -> {
@@ -223,6 +216,7 @@
i = (long)s.hashCode();
@@ -240,6 +233,8 @@
}
}
+ WorldType.field_77139_a[this.field_146331_K].onGUICreateWorldPress();
WorldSettings worldsettings = new WorldSettings(i, GameType.func_77142_a(this.field_146342_r), this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
+ WorldType.field_77139_a[this.field_146331_K].onGUICreateWorldPress();
+
WorldSettings worldsettings = new WorldSettings(i, this.field_228197_f_.field_228218_f_, this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
worldsettings.func_205390_a(Dynamic.convert(NBTDynamicOps.field_210820_a, JsonOps.INSTANCE, this.field_146334_a));
if (this.field_146338_v && !this.field_146337_w) {
@@ -1,10 +1,10 @@
--- a/net/minecraft/client/gui/screen/DeathScreen.java
+++ b/net/minecraft/client/gui/screen/DeathScreen.java
@@ -44,6 +44,7 @@
@@ -34,6 +34,7 @@
}));
Button button = this.addButton(new Button(this.width / 2 - 100, this.height / 4 + 96, 200, 20, s1, (p_213020_1_) -> {
Button button = this.addButton(new Button(this.width / 2 - 100, this.height / 4 + 96, 200, 20, I18n.func_135052_a("deathScreen.titleScreen"), (p_213020_1_) -> {
if (this.field_213023_c) {
+ func_213022_a(true);
this.minecraft.func_147108_a(new MainMenuScreen());
this.func_228177_a_();
} else {
ConfirmScreen confirmscreen = new ConfirmScreen(this::func_213022_a, new TranslationTextComponent("deathScreen.quit.confirm"), new StringTextComponent(""), I18n.func_135052_a("deathScreen.titleScreen"), I18n.func_135052_a("deathScreen.respawn"));
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/screen/EnchantmentScreen.java
+++ b/net/minecraft/client/gui/screen/EnchantmentScreen.java
@@ -146,7 +146,7 @@
@@ -155,7 +155,7 @@
String s1 = EnchantmentNameParts.func_178176_a().func_148334_a(this.font, i2);
FontRenderer fontrenderer = this.minecraft.func_211500_ak().func_211504_a(Minecraft.field_71464_q);
int j2 = 6839882;
@@ -9,7 +9,7 @@
this.blit(j1, j + 14 + 19 * i1, 0, 185, 108, 19);
this.blit(j1 + 1, j + 15 + 19 * i1, 16 * i1, 239, 16, 16);
fontrenderer.func_78279_b(s1, k1, j + 16 + 19 * i1, i2, (j2 & 16711422) >> 1);
@@ -186,10 +186,12 @@
@@ -195,10 +195,12 @@
Enchantment enchantment = Enchantment.func_185262_c((this.field_147002_h).field_185001_h[j]);
int l = (this.field_147002_h).field_185002_i[j];
int i1 = j + 1;
@@ -1,11 +1,11 @@
--- a/net/minecraft/client/gui/screen/LanguageScreen.java
+++ b/net/minecraft/client/gui/screen/LanguageScreen.java
@@ -45,7 +45,7 @@
@@ -41,7 +41,7 @@
if (languagescreen$list$languageentry != null && !languagescreen$list$languageentry.field_214398_b.getCode().equals(this.field_146454_h.func_135041_c().getCode())) {
this.field_146454_h.func_135045_a(languagescreen$list$languageentry.field_214398_b);
this.field_146451_g.field_74363_ab = languagescreen$list$languageentry.field_214398_b.getCode();
this.field_228183_b_.field_74363_ab = languagescreen$list$languageentry.field_214398_b.getCode();
- this.minecraft.func_213237_g();
+ net.minecraftforge.client.ForgeHooksClient.refreshResources(this.minecraft, net.minecraftforge.resource.VanillaResourceType.LANGUAGES);
this.font.func_78275_b(this.field_146454_h.func_135044_b());
this.field_146452_r.setMessage(I18n.func_135052_a("gui.done"));
this.field_211832_i.setMessage(AbstractOption.field_216684_H.func_216743_c(this.field_146451_g));
this.field_211832_i.setMessage(AbstractOption.field_216684_H.func_216743_c(this.field_228183_b_));
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/screen/MainMenuScreen.java
+++ b/net/minecraft/client/gui/screen/MainMenuScreen.java
@@ -51,6 +51,7 @@
@@ -45,6 +45,7 @@
private final RenderSkybox field_209101_K = new RenderSkybox(field_213098_a);
private final boolean field_213102_y;
private long field_213103_z;
@@ -8,7 +8,7 @@
public MainMenuScreen() {
this(false);
@@ -98,10 +99,14 @@
@@ -88,10 +89,14 @@
this.field_193979_N = this.width - this.field_193978_M - 2;
int i = 24;
int j = this.height / 4 + 48;
@@ -18,12 +18,12 @@
} else {
this.func_73969_a(j, 24);
+ modbutton = this.addButton(new Button(this.width / 2 - 100, j + 24 * 2, 98, 20, I18n.func_135052_a("fml.menu.mods"), button -> {
+ this.minecraft.func_147108_a(new net.minecraftforge.fml.client.gui.GuiModList(this));
+ this.minecraft.func_147108_a(new net.minecraftforge.fml.client.gui.screen.ModListScreen(this));
+ }));
}
this.addButton(new ImageButton(this.width / 2 - 124, j + 72 + 12, 20, 20, 0, 106, 20, Button.WIDGETS_LOCATION, 256, 256, (p_213090_1_) -> {
@@ -130,6 +135,7 @@
@@ -116,6 +121,7 @@
if (this.func_183501_a()) {
this.field_183503_M.init(this.minecraft, this.width, this.height);
}
@@ -31,25 +31,25 @@
}
@@ -140,7 +146,7 @@
this.addButton(new Button(this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, 200, 20, I18n.func_135052_a("menu.multiplayer"), (p_213086_1_) -> {
this.minecraft.func_147108_a(new MultiplayerScreen(this));
@@ -131,7 +137,7 @@
}
}));
- this.addButton(new Button(this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, 200, 20, I18n.func_135052_a("menu.online"), (p_213095_1_) -> {
+ this.addButton(new Button(this.width / 2 + 2, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.func_135052_a("menu.online"), (p_213095_1_) -> {
this.func_140005_i();
}));
}
@@ -204,6 +210,7 @@
@@ -195,6 +201,7 @@
this.minecraft.func_110434_K().func_110577_a(field_194400_H);
blit(j + 88, 67, 0.0F, 0.0F, 98, 14, 128, 16);
+ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, this.font, this.width, this.height);
if (this.field_73975_c != null) {
GlStateManager.pushMatrix();
GlStateManager.translatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
@@ -222,7 +229,13 @@
s = s + ("release".equalsIgnoreCase(this.minecraft.func_184123_d()) ? "" : "/" + this.minecraft.func_184123_d());
RenderSystem.pushMatrix();
RenderSystem.translatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
@@ -217,7 +224,13 @@
s = s + I18n.func_135052_a("menu.modded");
}
- this.drawString(this.font, s, 2, this.height - 10, 16777215 | l);
@@ -63,7 +63,7 @@
this.drawString(this.font, "Copyright Mojang AB. Do not distribute!", this.field_193979_N, this.height - 10, 16777215 | l);
if (p_render_1_ > this.field_193979_N && p_render_1_ < this.field_193979_N + this.field_193978_M && p_render_2_ > this.height - 10 && p_render_2_ < this.height) {
fill(this.field_193979_N, this.height - 1, this.field_193979_N + this.field_193978_M, this.height, 16777215 | l);
@@ -240,6 +253,7 @@
@@ -231,6 +244,7 @@
if (this.func_183501_a() && f1 >= 1.0F) {
this.field_183503_M.render(p_render_1_, p_render_2_, p_render_3_);
}
@@ -0,0 +1,14 @@
--- a/net/minecraft/client/gui/screen/MultiplayerScreen.java
+++ b/net/minecraft/client/gui/screen/MultiplayerScreen.java
@@ -241,6 +241,11 @@
}
+ @Override
+ public void onClose() {
+ this.minecraft.func_147108_a(this.field_146798_g);
+ }
+
public ServerPinger func_146789_i() {
return this.field_146797_f;
}
@@ -0,0 +1,15 @@
--- a/net/minecraft/client/gui/screen/OptionsScreen.java
+++ b/net/minecraft/client/gui/screen/OptionsScreen.java
@@ -118,4 +118,12 @@
this.drawCenteredString(this.font, this.title.func_150254_d(), this.width / 2, 15, 16777215);
super.render(p_render_1_, p_render_2_, p_render_3_);
}
+
+ @Override
+ public void onClose() {
+ // We need to consider 2 potential parent screens here:
+ // 1. From the main menu, in which case display the main menu
+ // 2. From the pause menu, in which case exit back to game
+ this.minecraft.func_147108_a(this.field_146441_g instanceof IngameMenuScreen ? null : this.field_146441_g);
+ }
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/screen/ResourcePacksScreen.java
+++ b/net/minecraft/client/gui/screen/ResourcePacksScreen.java
@@ -84,11 +84,14 @@
@@ -86,11 +86,14 @@
resourcepacklist.func_198983_a();
List<ClientResourcePackInfo> list = Lists.newArrayList(resourcepacklist.func_198978_b());
list.removeAll(resourcepacklist.func_198980_d());
@@ -1,18 +1,18 @@
--- a/net/minecraft/client/gui/screen/Screen.java
+++ b/net/minecraft/client/gui/screen/Screen.java
@@ -109,7 +109,10 @@
@@ -111,7 +111,10 @@
}
protected void renderTooltip(ItemStack p_renderTooltip_1_, int p_renderTooltip_2_, int p_renderTooltip_3_) {
- this.renderTooltip(this.getTooltipFromItem(p_renderTooltip_1_), p_renderTooltip_2_, p_renderTooltip_3_);
+ FontRenderer font = p_renderTooltip_1_.func_77973_b().getFontRenderer(p_renderTooltip_1_);
+ net.minecraftforge.fml.client.config.GuiUtils.preItemToolTip(p_renderTooltip_1_);
+ net.minecraftforge.fml.client.gui.GuiUtils.preItemToolTip(p_renderTooltip_1_);
+ this.renderTooltip(this.getTooltipFromItem(p_renderTooltip_1_), p_renderTooltip_2_, p_renderTooltip_3_, (font == null ? this.font : font));
+ net.minecraftforge.fml.client.config.GuiUtils.postItemToolTip();
+ net.minecraftforge.fml.client.gui.GuiUtils.postItemToolTip();
}
public List<String> getTooltipFromItem(ItemStack p_getTooltipFromItem_1_) {
@@ -128,7 +131,11 @@
@@ -130,7 +133,11 @@
}
public void renderTooltip(List<String> p_renderTooltip_1_, int p_renderTooltip_2_, int p_renderTooltip_3_) {
@@ -20,12 +20,12 @@
+ renderTooltip(p_renderTooltip_1_, p_renderTooltip_2_, p_renderTooltip_3_, font);
+ }
+ public void renderTooltip(List<String> p_renderTooltip_1_, int p_renderTooltip_2_, int p_renderTooltip_3_, FontRenderer font) {
+ net.minecraftforge.fml.client.config.GuiUtils.drawHoveringText(p_renderTooltip_1_, p_renderTooltip_2_, p_renderTooltip_3_, width, height, -1, font);
+ net.minecraftforge.fml.client.gui.GuiUtils.drawHoveringText(p_renderTooltip_1_, p_renderTooltip_2_, p_renderTooltip_3_, width, height, -1, font);
+ if (false && !p_renderTooltip_1_.isEmpty()) {
GlStateManager.disableRescaleNormal();
RenderHelper.func_74518_a();
GlStateManager.disableLighting();
@@ -301,9 +308,12 @@
RenderSystem.disableRescaleNormal();
RenderSystem.disableDepthTest();
int i = 0;
@@ -308,9 +315,12 @@
}
public void sendMessage(String p_sendMessage_1_, boolean p_sendMessage_2_) {
@@ -38,7 +38,7 @@
this.minecraft.field_71439_g.func_71165_d(p_sendMessage_1_);
}
@@ -314,10 +324,14 @@
@@ -321,10 +331,14 @@
this.font = p_init_1_.field_71466_p;
this.width = p_init_2_;
this.height = p_init_3_;
@@ -53,7 +53,7 @@
}
public void setSize(int p_setSize_1_, int p_setSize_2_) {
@@ -345,6 +359,7 @@
@@ -352,6 +366,7 @@
public void renderBackground(int p_renderBackground_1_) {
if (this.minecraft.field_71441_e != null) {
this.fillGradient(0, 0, this.width, this.height, -1072689136, -804253680);
@@ -61,15 +61,15 @@
} else {
this.renderDirtBackground(p_renderBackground_1_);
}
@@ -365,6 +380,7 @@
bufferbuilder.func_181662_b((double)this.width, 0.0D, 0.0D).func_187315_a((double)((float)this.width / 32.0F), (double)p_renderDirtBackground_1_).func_181669_b(64, 64, 64, 255).func_181675_d();
bufferbuilder.func_181662_b(0.0D, 0.0D, 0.0D).func_187315_a(0.0D, (double)p_renderDirtBackground_1_).func_181669_b(64, 64, 64, 255).func_181675_d();
@@ -370,6 +385,7 @@
bufferbuilder.func_225582_a_((double)this.width, 0.0D, 0.0D).func_225583_a_((float)this.width / 32.0F, (float)p_renderDirtBackground_1_).func_225586_a_(64, 64, 64, 255).func_181675_d();
bufferbuilder.func_225582_a_(0.0D, 0.0D, 0.0D).func_225583_a_(0.0F, (float)p_renderDirtBackground_1_).func_225586_a_(64, 64, 64, 255).func_181675_d();
tessellator.func_78381_a();
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.BackgroundDrawnEvent(this));
}
public boolean isPauseScreen() {
@@ -448,4 +464,8 @@
@@ -453,4 +469,8 @@
public boolean isMouseOver(double p_isMouseOver_1_, double p_isMouseOver_3_) {
return true;
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/screen/ServerSelectionList.java
+++ b/net/minecraft/client/gui/screen/ServerSelectionList.java
@@ -292,6 +292,8 @@
@@ -294,6 +294,8 @@
this.field_148303_c.func_146793_a(s);
}
@@ -1,59 +1,43 @@
--- a/net/minecraft/client/gui/screen/inventory/ContainerScreen.java
+++ b/net/minecraft/client/gui/screen/inventory/ContainerScreen.java
@@ -73,6 +73,7 @@
@@ -71,6 +71,7 @@
int i = this.field_147003_i;
int j = this.field_147009_r;
this.func_146976_a(p_render_3_, p_render_1_, p_render_2_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiContainerEvent.DrawBackground(this, p_render_1_, p_render_2_));
GlStateManager.disableRescaleNormal();
RenderHelper.func_74518_a();
GlStateManager.disableLighting();
@@ -102,7 +103,8 @@
RenderSystem.disableRescaleNormal();
RenderSystem.disableDepthTest();
super.render(p_render_1_, p_render_2_, p_render_3_);
@@ -96,13 +97,15 @@
int j1 = slot.field_75223_e;
int k1 = slot.field_75221_f;
GlStateManager.colorMask(true, true, true, false);
RenderSystem.colorMask(true, true, true, false);
- this.fillGradient(j1, k1, j1 + 16, k1 + 16, -2130706433, -2130706433);
+ int slotColor = this.getSlotColor(i1);
+ this.fillGradient(j1, k1, j1 + 16, k1 + 16, slotColor, slotColor);
GlStateManager.colorMask(true, true, true, true);
GlStateManager.enableLighting();
GlStateManager.enableDepthTest();
@@ -112,6 +114,7 @@
RenderHelper.func_74518_a();
RenderSystem.colorMask(true, true, true, true);
RenderSystem.enableDepthTest();
}
}
this.func_146979_b(p_render_1_, p_render_2_);
RenderHelper.func_74520_c();
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiContainerEvent.DrawForeground(this, p_render_1_, p_render_2_));
PlayerInventory playerinventory = this.minecraft.field_71439_g.field_71071_by;
ItemStack itemstack = this.field_147012_x.func_190926_b() ? playerinventory.func_70445_o() : this.field_147012_x;
if (!itemstack.func_190926_b()) {
@@ -163,8 +166,10 @@
GlStateManager.translatef(0.0F, 0.0F, 32.0F);
this.blitOffset = 200;
@@ -152,8 +155,10 @@
RenderSystem.translatef(0.0F, 0.0F, 32.0F);
this.setBlitOffset(200);
this.itemRenderer.field_77023_b = 200.0F;
+ net.minecraft.client.gui.FontRenderer font = p_146982_1_.func_77973_b().getFontRenderer(p_146982_1_);
+ if (font == null) font = this.font;
this.itemRenderer.func_180450_b(p_146982_1_, p_146982_2_, p_146982_3_);
- this.itemRenderer.func_180453_a(this.font, p_146982_1_, p_146982_2_, p_146982_3_ - (this.field_147012_x.func_190926_b() ? 0 : 8), p_146982_4_);
+ this.itemRenderer.func_180453_a(font, p_146982_1_, p_146982_2_, p_146982_3_ - (this.field_147012_x.func_190926_b() ? 0 : 8), p_146982_4_);
this.blitOffset = 0;
this.setBlitOffset(0);
this.itemRenderer.field_77023_b = 0.0F;
}
@@ -208,11 +213,10 @@
this.blitOffset = 100;
this.itemRenderer.field_77023_b = 100.0F;
if (itemstack.func_190926_b() && p_146977_1_.func_111238_b()) {
- String s1 = p_146977_1_.func_178171_c();
- if (s1 != null) {
- TextureAtlasSprite textureatlassprite = this.minecraft.func_147117_R().func_110572_b(s1);
+ TextureAtlasSprite textureatlassprite = p_146977_1_.getBackgroundSprite();
+ if (textureatlassprite != null) {
GlStateManager.disableLighting();
- this.minecraft.func_110434_K().func_110577_a(AtlasTexture.field_110575_b);
+ this.minecraft.func_110434_K().func_110577_a(p_146977_1_.getBackgroundLocation());
blit(i, j, this.blitOffset, 16, 16, textureatlassprite);
GlStateManager.enableLighting();
flag1 = true;
@@ -273,7 +277,8 @@
@@ -260,7 +265,8 @@
if (super.mouseClicked(p_mouseClicked_1_, p_mouseClicked_3_, p_mouseClicked_5_)) {
return true;
} else {
@@ -63,7 +47,7 @@
Slot slot = this.func_195360_a(p_mouseClicked_1_, p_mouseClicked_3_);
long i = Util.func_211177_b();
this.field_146993_M = this.field_146998_K == slot && i - this.field_146997_J < 250L && this.field_146992_L == p_mouseClicked_5_;
@@ -282,6 +287,7 @@
@@ -269,6 +275,7 @@
int j = this.field_147003_i;
int k = this.field_147009_r;
boolean flag1 = this.func_195361_a(p_mouseClicked_1_, p_mouseClicked_3_, j, k, p_mouseClicked_5_);
@@ -71,7 +55,7 @@
int l = -1;
if (slot != null) {
l = slot.field_75222_d;
@@ -307,7 +313,7 @@
@@ -294,7 +301,7 @@
}
} else if (!this.field_147007_t) {
if (this.minecraft.field_71439_g.field_71071_by.func_70445_o().func_190926_b()) {
@@ -79,8 +63,8 @@
+ if (this.minecraft.field_71474_y.field_74322_I.isActiveAndMatches(mouseKey)) {
this.func_184098_a(slot, l, p_mouseClicked_5_, ClickType.CLONE);
} else {
boolean flag2 = l != -999 && (InputMappings.func_216506_a(Minecraft.func_71410_x().field_195558_d.func_198092_i(), 340) || InputMappings.func_216506_a(Minecraft.func_71410_x().field_195558_d.func_198092_i(), 344));
@@ -331,7 +337,7 @@
boolean flag2 = l != -999 && (InputMappings.func_216506_a(Minecraft.func_71410_x().func_228018_at_().func_198092_i(), 340) || InputMappings.func_216506_a(Minecraft.func_71410_x().func_228018_at_().func_198092_i(), 344));
@@ -318,7 +325,7 @@
this.field_146987_F = 0;
} else if (p_mouseClicked_5_ == 1) {
this.field_146987_F = 1;
@@ -89,7 +73,7 @@
this.field_146987_F = 2;
}
}
@@ -384,10 +390,13 @@
@@ -371,10 +378,13 @@
}
public boolean mouseReleased(double p_mouseReleased_1_, double p_mouseReleased_3_, int p_mouseReleased_5_) {
@@ -103,7 +87,7 @@
int k = -1;
if (slot != null) {
k = slot.field_75222_d;
@@ -401,7 +410,7 @@
@@ -388,7 +398,7 @@
if (hasShiftDown()) {
if (!this.field_146994_N.func_190926_b()) {
for(Slot slot2 : this.field_147002_h.field_75151_b) {
@@ -112,7 +96,7 @@
this.func_184098_a(slot2, slot2.field_75222_d, p_mouseReleased_5_, ClickType.QUICK_MOVE);
}
}
@@ -465,7 +474,7 @@
@@ -452,7 +462,7 @@
this.func_184098_a((Slot)null, -999, Container.func_94534_d(2, this.field_146987_F), ClickType.QUICK_CRAFT);
} else if (!this.minecraft.field_71439_g.field_71071_by.func_70445_o().func_190926_b()) {
@@ -120,8 +104,8 @@
+ if (this.minecraft.field_71474_y.field_74322_I.isActiveAndMatches(mouseKey)) {
this.func_184098_a(slot, k, p_mouseReleased_5_, ClickType.CLONE);
} else {
boolean flag1 = k != -999 && (InputMappings.func_216506_a(Minecraft.func_71410_x().field_195558_d.func_198092_i(), 340) || InputMappings.func_216506_a(Minecraft.func_71410_x().field_195558_d.func_198092_i(), 344));
@@ -514,27 +523,32 @@
boolean flag1 = k != -999 && (InputMappings.func_216506_a(Minecraft.func_71410_x().func_228018_at_().func_198092_i(), 340) || InputMappings.func_216506_a(Minecraft.func_71410_x().func_228018_at_().func_198092_i(), 344));
@@ -501,27 +511,34 @@
if (super.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_)) {
return true;
} else {
@@ -145,6 +129,8 @@
this.func_184098_a(this.field_147006_u, this.field_147006_u.field_75222_d, hasControlDown() ? 1 : 0, ClickType.THROW);
+ return true; // Forge MC-146650: Needs to return true when the key is handled.
}
+ } else if (this.minecraft.field_71474_y.field_74316_C.isActiveAndMatches(mouseKey)) {
+ return true; // Forge MC-146650: Emulate MC bug, so we don't drop from hotbar when pressing drop without hovering over a item.
}
- return true;
@@ -160,7 +146,7 @@
this.func_184098_a(this.field_147006_u, this.field_147006_u.field_75222_d, i, ClickType.SWAP);
return true;
}
@@ -565,4 +579,16 @@
@@ -552,4 +569,16 @@
public T func_212873_a_() {
return this.field_147002_h;
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/gui/screen/inventory/CreativeScreen.java
+++ b/net/minecraft/client/gui/screen/inventory/CreativeScreen.java
@@ -63,6 +63,8 @@
@@ -65,6 +65,8 @@
private boolean field_195377_F;
private boolean field_199506_G;
private final Map<ResourceLocation, Tag<Item>> field_214085_w = Maps.newTreeMap();
@@ -9,7 +9,7 @@
public CreativeScreen(PlayerEntity p_i1088_1_) {
super(new CreativeScreen.CreativeContainer(p_i1088_1_), p_i1088_1_.field_71071_by, new StringTextComponent(""));
@@ -231,6 +233,12 @@
@@ -233,6 +235,12 @@
if (this.minecraft.field_71442_b.func_78758_h()) {
super.init();
this.minecraft.field_195559_v.func_197967_a(true);
@@ -22,7 +22,7 @@
this.field_147062_A = new TextFieldWidget(this.font, this.field_147003_i + 82, this.field_147009_r + 6, 80, 9, I18n.func_135052_a("itemGroup.search"));
this.field_147062_A.func_146203_f(50);
this.field_147062_A.func_146185_a(false);
@@ -271,7 +279,7 @@
@@ -273,7 +281,7 @@
public boolean charTyped(char p_charTyped_1_, int p_charTyped_2_) {
if (this.field_195377_F) {
return false;
@@ -31,7 +31,7 @@
return false;
} else {
String s = this.field_147062_A.func_146179_b();
@@ -289,7 +297,7 @@
@@ -291,7 +299,7 @@
public boolean keyPressed(int p_keyPressed_1_, int p_keyPressed_2_, int p_keyPressed_3_) {
this.field_195377_F = false;
@@ -40,7 +40,7 @@
if (this.minecraft.field_71474_y.field_74310_D.func_197976_a(p_keyPressed_1_, p_keyPressed_2_)) {
this.field_195377_F = true;
this.func_147050_b(ItemGroup.field_78027_g);
@@ -325,6 +333,32 @@
@@ -327,6 +335,32 @@
private void func_147053_i() {
(this.field_147002_h).field_148330_a.clear();
this.field_214085_w.clear();
@@ -73,19 +73,19 @@
String s = this.field_147062_A.func_146179_b();
if (s.isEmpty()) {
for(Item item : Registry.field_212630_s) {
@@ -370,9 +404,9 @@
@@ -372,9 +406,9 @@
protected void func_146979_b(int p_146979_1_, int p_146979_2_) {
ItemGroup itemgroup = ItemGroup.field_78032_a[field_147058_w];
- if (itemgroup.func_78019_g()) {
+ if (itemgroup != null && itemgroup.func_78019_g()) {
GlStateManager.disableBlend();
RenderSystem.disableBlend();
- this.font.func_211126_b(I18n.func_135052_a(itemgroup.func_78024_c()), 8.0F, 6.0F, 4210752);
+ this.font.func_211126_b(I18n.func_135052_a(itemgroup.func_78024_c()), 8.0F, 6.0F, itemgroup.getLabelColor());
}
}
@@ -383,7 +417,7 @@
@@ -385,7 +419,7 @@
double d1 = p_mouseClicked_3_ - (double)this.field_147009_r;
for(ItemGroup itemgroup : ItemGroup.field_78032_a) {
@@ -94,7 +94,7 @@
return true;
}
}
@@ -404,7 +438,7 @@
@@ -406,7 +440,7 @@
this.field_147066_y = false;
for(ItemGroup itemgroup : ItemGroup.field_78032_a) {
@@ -103,7 +103,7 @@
this.func_147050_b(itemgroup);
return true;
}
@@ -415,12 +449,15 @@
@@ -417,12 +451,15 @@
}
private boolean func_147055_p() {
@@ -119,7 +119,7 @@
this.field_147008_s.clear();
(this.field_147002_h).field_148330_a.clear();
if (p_147050_1_ == ItemGroup.field_192395_m) {
@@ -494,13 +531,15 @@
@@ -499,13 +536,15 @@
}
if (this.field_147062_A != null) {
@@ -136,7 +136,7 @@
this.func_147053_i();
} else {
@@ -560,16 +599,35 @@
@@ -565,16 +604,35 @@
this.renderBackground();
super.render(p_render_1_, p_render_2_, p_render_3_);
@@ -163,32 +163,31 @@
+ if (maxPages != 0) {
+ String page = String.format("%d / %d", tabPage + 1, maxPages + 1);
+ GlStateManager.disableLighting();
+ this.blitOffset = 300;
+ RenderSystem.disableLighting();
+ this.setBlitOffset(300);
+ this.itemRenderer.field_77023_b = 300.0F;
+ font.func_211126_b(page, field_147003_i + (field_146999_f / 2) - (font.func_78256_a(page) / 2), field_147009_r - 44, -1);
+ this.blitOffset = 0;
+ this.setBlitOffset(0);
+ this.itemRenderer.field_77023_b = 0.0F;
+ }
+
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.disableLighting();
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.func_191948_b(p_render_1_, p_render_2_);
@@ -618,7 +676,11 @@
}
@@ -622,7 +680,10 @@
}
}
- this.renderTooltip(list1, p_renderTooltip_2_, p_renderTooltip_3_);
+
+ net.minecraft.client.gui.FontRenderer font = p_renderTooltip_1_.func_77973_b().getFontRenderer(p_renderTooltip_1_);
+ net.minecraftforge.fml.client.config.GuiUtils.preItemToolTip(p_renderTooltip_1_);
+ net.minecraftforge.fml.client.gui.GuiUtils.preItemToolTip(p_renderTooltip_1_);
+ this.renderTooltip(list1, p_renderTooltip_2_, p_renderTooltip_3_, (font == null ? this.font : font));
+ net.minecraftforge.fml.client.config.GuiUtils.postItemToolTip();
+ net.minecraftforge.fml.client.gui.GuiUtils.postItemToolTip();
} else {
super.renderTooltip(p_renderTooltip_1_, p_renderTooltip_2_, p_renderTooltip_3_);
}
@@ -630,25 +692,44 @@
RenderHelper.func_74520_c();
@@ -633,25 +694,44 @@
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
ItemGroup itemgroup = ItemGroup.field_78032_a[field_147058_w];
- for(ItemGroup itemgroup1 : ItemGroup.field_78032_a) {
@@ -221,7 +220,7 @@
+ this.minecraft.func_110434_K().func_110577_a(itemgroup.getBackgroundImage());
this.blit(this.field_147003_i, this.field_147009_r, 0, 0, this.field_146999_f, this.field_147000_g);
this.field_147062_A.render(p_146976_2_, p_146976_3_, p_146976_1_);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
int i = this.field_147003_i + 175;
int j = this.field_147009_r + 18;
int k = j + 112;
@@ -236,8 +235,8 @@
+
this.func_147051_a(itemgroup);
if (itemgroup == ItemGroup.field_78036_m) {
InventoryScreen.func_147046_a(this.field_147003_i + 88, this.field_147009_r + 45, 20, (float)(this.field_147003_i + 88 - p_146976_2_), (float)(this.field_147009_r + 45 - 30 - p_146976_3_), this.minecraft.field_71439_g);
@@ -657,6 +738,7 @@
InventoryScreen.func_228187_a_(this.field_147003_i + 88, this.field_147009_r + 45, 20, (float)(this.field_147003_i + 88 - p_146976_2_), (float)(this.field_147009_r + 45 - 30 - p_146976_3_), this.minecraft.field_71439_g);
@@ -660,6 +740,7 @@
}
protected boolean func_195375_a(ItemGroup p_195375_1_, double p_195375_2_, double p_195375_4_) {
@@ -245,43 +244,34 @@
int i = p_195375_1_.func_78020_k();
int j = 28 * i;
int k = 0;
@@ -726,6 +808,8 @@
@@ -728,6 +809,8 @@
i1 = i1 + (this.field_147000_g - 4);
}
GlStateManager.disableLighting();
+ GlStateManager.color3f(1F, 1F, 1F); //Forge: Reset color in case Items change it.
+ GlStateManager.enableBlend(); //Forge: Make sure blend is enabled else tabs show a white border.
+ RenderSystem.color3f(1F, 1F, 1F); //Forge: Reset color in case Items change it.
+ RenderSystem.enableBlend(); //Forge: Make sure blend is enabled else tabs show a white border.
this.blit(l, i1, j, k, 28, 32);
this.blitOffset = 100;
this.setBlitOffset(100);
this.itemRenderer.field_77023_b = 100.0F;
@@ -897,6 +981,31 @@
@@ -896,6 +979,22 @@
public boolean func_82869_a(PlayerEntity p_82869_1_) {
return this.field_148332_b.func_82869_a(p_82869_1_);
}
+
+ public ResourceLocation getBackgroundLocation() {
+ return this.field_148332_b.getBackgroundLocation();
+ }
+
+ public void setBackgroundLocation(ResourceLocation texture) {
+ this.field_148332_b.setBackgroundLocation(texture);
+ }
+
+ public void setBackgroundName(@Nullable String name) {
+ this.field_148332_b.setBackgroundName(name);
+ }
+
+ @Nullable
+ public net.minecraft.client.renderer.texture.TextureAtlasSprite getBackgroundSprite() {
+ return this.field_148332_b.getBackgroundSprite();
+ }
+
+ @Override
+ public int getSlotIndex() {
+ return this.field_148332_b.getSlotIndex();
+ }
+
+ @Override
+ public boolean isSameInventory(Slot other) {
+ return this.field_148332_b.isSameInventory(other);
+ }
+
+ @Override
+ public Slot setBackground(ResourceLocation atlas, ResourceLocation sprite) {
+ this.field_148332_b.setBackground(atlas, sprite);
+ return this;
+ }
}
@@ -1,11 +1,11 @@
--- a/net/minecraft/client/gui/toasts/RecipeToast.java
+++ b/net/minecraft/client/gui/toasts/RecipeToast.java
@@ -36,7 +36,7 @@
@@ -34,7 +34,7 @@
p_193653_1_.blit(0, 0, 0, 32, 160, 32);
p_193653_1_.func_192989_b().field_71466_p.func_211126_b(I18n.func_135052_a("recipe.toast.title"), 30.0F, 7.0F, -11534256);
p_193653_1_.func_192989_b().field_71466_p.func_211126_b(I18n.func_135052_a("recipe.toast.description"), 30.0F, 18.0F, -16777216);
RenderHelper.func_74520_c();
- IRecipe<?> irecipe = this.field_202906_c.get((int)(p_193653_2_ / (5000L / (long)this.field_202906_c.size()) % (long)this.field_202906_c.size()));
+ IRecipe<?> irecipe = this.field_202906_c.get((int)((p_193653_2_ * (long)this.field_202906_c.size() / 5000L) % (long)this.field_202906_c.size())); //Forge: fix math so that it doesn't divide by 0 when there are more than 5000 recipes
ItemStack itemstack = irecipe.func_222128_h();
GlStateManager.pushMatrix();
GlStateManager.scalef(0.6F, 0.6F, 1.0F);
RenderSystem.pushMatrix();
RenderSystem.scalef(0.6F, 0.6F, 1.0F);
@@ -1,20 +1,15 @@
--- a/net/minecraft/client/gui/widget/Widget.java
+++ b/net/minecraft/client/gui/widget/Widget.java
@@ -110,12 +110,7 @@
@@ -111,7 +111,7 @@
this.blit(this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height);
this.blit(this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height);
this.renderBg(minecraft, p_renderButton_1_, p_renderButton_2_);
- int j = 14737632;
- if (!this.active) {
- j = 10526880;
- } else if (this.isHovered()) {
- j = 16777120;
- }
- int j = this.active ? 16777215 : 10526880;
+ int j = getFGColor();
this.drawCenteredString(fontrenderer, this.message, this.x + this.width / 2, this.y + (this.height - 8) / 2, j | MathHelper.func_76123_f(this.alpha * 255.0F) << 24);
this.drawCenteredString(fontrenderer, this.getMessage(), this.x + this.width / 2, this.y + (this.height - 8) / 2, j | MathHelper.func_76123_f(this.alpha * 255.0F) << 24);
}
@@ -211,6 +206,14 @@
@@ -206,6 +206,14 @@
this.width = p_setWidth_1_;
}
@@ -29,22 +24,21 @@
public void setAlpha(float p_setAlpha_1_) {
this.alpha = p_setAlpha_1_;
}
@@ -234,4 +237,18 @@
@@ -233,4 +241,17 @@
protected void setFocused(boolean p_setFocused_1_) {
this.focused = p_setFocused_1_;
}
+
+ protected int packedFGColor = 0;
+ public static final int UNSET_FG_COLOR = -1;
+ protected int packedFGColor = UNSET_FG_COLOR;
+ public int getFGColor() {
+ if (packedFGColor != 0) return packedFGColor;
+ int ret = 14737632;
+ if (!this.active)
+ ret = 10526880;
+ else if (this.isHovered())
+ ret = 16777120;
+ return ret;
+ if (packedFGColor != UNSET_FG_COLOR) return packedFGColor;
+ return this.active ? 16777215 : 10526880; // White : Light Grey
+ }
+ public void setFGColor(int color) {
+ this.packedFGColor = color;
+ }
+ public void clearFGColor() {
+ this.packedFGColor = UNSET_FG_COLOR;
+ }
}
Loaded 100 of 791 files, more files were not shown because too many files have changed in this diff. Show more