Compare commits

...
177 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
431 changed files with 7380 additions and 6594 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}",
+59 -27
View File
@@ -3,7 +3,11 @@ 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.+'
@@ -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.15'
MCP_VERSION = '20191212.203412'
MAPPING_VERSION = '20200514-1.15.1'
MC_VERSION = '1.15.2'
MCP_VERSION = '20200515.085601'
}
project(':mcp') {
@@ -78,7 +84,11 @@ 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 {
@@ -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 = '29.0' // 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 }
}
@@ -405,19 +432,18 @@ project(':forge') {
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.0.+'
installer 'cpw.mods:grossjava9hacks:1.1.+'
installer 'net.minecraftforge:accesstransformers:2.0.+:shadowed'
installer 'net.minecraftforge:eventbus:2.0.+:service'
installer 'net.minecraftforge:forgespi:2.0.+'
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.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.1'
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,6 +1,6 @@
--- a/com/mojang/blaze3d/platform/GlStateManager.java
+++ b/com/mojang/blaze3d/platform/GlStateManager.java
@@ -578,10 +578,17 @@
@@ -579,10 +579,17 @@
GL13.glClientActiveTexture(p_227747_0_);
}
@@ -1,6 +1,6 @@
--- a/com/mojang/blaze3d/vertex/IVertexBuilder.java
+++ b/com/mojang/blaze3d/vertex/IVertexBuilder.java
@@ -17,7 +17,7 @@
@@ -18,7 +18,7 @@
import org.lwjgl.system.MemoryStack;
@OnlyIn(Dist.CLIENT)
@@ -9,3 +9,17 @@
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()));
}
@@ -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_);
}
}
@@ -13,6 +13,15 @@
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_149781_w = p_i48440_1_.field_200958_f;
this.field_149782_v = p_i48440_1_.field_200959_g;
@@ -49,7 +58,7 @@
@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_);
}
-
@@ -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;
@@ -22,7 +22,7 @@
+ *
+ * @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_);
@@ -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;
}
@@ -9,17 +9,18 @@
p_196482_1_.func_175641_c(p_196482_2_, this, 0, 0);
}
@@ -60,6 +60,9 @@
@@ -60,7 +60,9 @@
if (p_225533_2_.field_72995_K) {
return ActionResultType.SUCCESS;
} else {
- 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_1_ = p_225533_1_.func_177231_a(field_196485_c);
p_225533_2_.func_180501_a(p_225533_3_, p_225533_1_, 3);
this.func_196482_a(p_225533_2_, p_225533_3_);
@@ -76,6 +79,9 @@
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,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;
+ }
}
@@ -3,7 +3,7 @@
@@ -12,7 +12,7 @@
public class JungleTree extends BigTree {
@Nullable
protected ConfiguredFeature<TreeFeatureConfig, ?> func_225546_b_(Random p_225546_1_) {
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_);
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/GameSettings.java
+++ b/net/minecraft/client/GameSettings.java
@@ -170,6 +170,7 @@
@@ -171,6 +171,7 @@
public String field_74363_ab = "en_us";
public GameSettings(Minecraft p_i46326_1_, File p_i46326_2_) {
@@ -8,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) {
@@ -485,7 +486,11 @@
@@ -490,7 +491,11 @@
for(KeyBinding keybinding : this.field_74324_K) {
if (s.equals("key_" + keybinding.func_151464_g())) {
- keybinding.func_197979_b(InputMappings.func_197955_a(s1));
+ if (s.indexOf(':') != -1) {
+ String[] pts = s.split(":");
+ 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(s));
+ keybinding.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputMappings.func_197955_a(s1));
}
}
@@ -533,6 +538,7 @@
@@ -538,6 +543,7 @@
}
public void func_74303_b() {
@@ -29,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));
@@ -609,7 +615,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());
@@ -38,11 +38,8 @@
}
for(SoundCategory soundcategory : SoundCategory.values()) {
@@ -706,6 +712,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);
}
+
@@ -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,6 +1,6 @@
--- a/net/minecraft/client/Minecraft.java
+++ b/net/minecraft/client/Minecraft.java
@@ -321,6 +321,7 @@
@@ -322,6 +322,7 @@
public Minecraft(GameConfiguration p_i45547_1_) {
super("Client");
field_71432_P = this;
@@ -8,7 +8,7 @@
this.field_71412_D = p_i45547_1_.field_178744_c.field_178760_a;
File file1 = p_i45547_1_.field_178744_c.field_178759_c;
this.field_130070_K = p_i45547_1_.field_178744_c.field_178758_b;
@@ -335,7 +336,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());
@@ -16,15 +16,16 @@
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;
@@ -367,6 +367,7 @@
screensize = p_i45547_1_.field_178743_b;
@@ -350,7 +350,7 @@
i = 0;
}
+ net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.INSTANCE.join();
Util.field_211180_a = RenderSystem.initBackendSystem();
this.field_195557_T = new VirtualScreen(this);
this.field_195558_d = this.field_195557_T.func_217626_a(screensize, this.field_71474_y.field_198019_u, "Minecraft " + SharedConstants.func_215069_a().getName());
@@ -382,7 +383,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);
@@ -32,15 +33,14 @@
this.field_195559_v = new KeyboardListener(this);
this.field_195559_v.func_197968_a(this.field_195558_d.func_198092_i());
RenderSystem.initRenderer(this.field_71474_y.field_209231_W, false);
@@ -390,6 +390,7 @@
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();
this.field_135017_as = new LanguageManager(this.field_71474_y.field_74363_ab);
this.field_110451_am.func_219534_a(this.field_135017_as);
@@ -433,12 +434,14 @@
@@ -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);
@@ -56,7 +56,7 @@
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()) {
@@ -450,12 +453,11 @@
@@ -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();
@@ -73,7 +73,7 @@
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_) -> {
@@ -465,6 +467,14 @@
@@ -466,6 +467,14 @@
this.func_213256_aB();
}
@@ -88,7 +88,16 @@
});
}, false));
}
@@ -545,7 +555,7 @@
@@ -505,7 +514,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_) -> {
@@ -97,7 +106,7 @@
});
NonNullList<ItemStack> nonnulllist = NonNullList.func_191196_a();
@@ -633,13 +643,13 @@
@@ -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());
@@ -114,7 +123,7 @@
}
}
@@ -648,6 +658,7 @@
@@ -682,6 +691,7 @@
return this.field_71474_y.field_211842_aO;
}
@@ -122,7 +131,7 @@
public CompletableFuture<Void> func_213237_g() {
if (this.field_213276_aV != null) {
return this.field_213276_aV;
@@ -726,10 +737,6 @@
@@ -760,10 +770,6 @@
}
public void func_147108_a(@Nullable Screen p_147108_1_) {
@@ -133,7 +142,7 @@
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) {
@@ -740,6 +747,14 @@
@@ -774,6 +780,14 @@
}
}
@@ -148,7 +157,7 @@
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);
@@ -862,11 +877,13 @@
@@ -905,11 +919,13 @@
RenderSystem.enableTexture();
this.field_71424_I.func_76319_b();
if (!this.field_71454_w) {
@@ -162,20 +171,49 @@
}
this.field_71424_I.func_219897_b();
@@ -1121,10 +1138,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);
+ }
}
}
@@ -1151,7 +1168,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();
@@ -184,15 +222,46 @@
this.field_71442_b.func_180511_b(blockpos, blockraytraceresult.func_216354_b());
break;
}
@@ -1161,6 +1178,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);
@@ -1217,6 +1235,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 @@
}
}
@@ -202,7 +271,7 @@
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_()) {
@@ -1243,6 +1264,8 @@
@@ -1286,6 +1326,8 @@
--this.field_71467_ac;
}
@@ -211,7 +280,7 @@
this.field_71424_I.func_76320_a("gui");
if (!this.field_71445_n) {
this.field_71456_v.func_73831_a();
@@ -1360,6 +1383,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();
@@ -220,7 +289,7 @@
}
private void func_184117_aA() {
@@ -1514,6 +1539,12 @@
@@ -1557,6 +1601,12 @@
this.func_147108_a(worldloadprogressscreen);
while(!this.field_71437_Z.func_71200_ad()) {
@@ -233,7 +302,7 @@
worldloadprogressscreen.tick();
this.func_195542_b(false);
@@ -1534,11 +1565,17 @@
@@ -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));
@@ -252,7 +321,7 @@
WorkingScreen workingscreen = new WorkingScreen();
workingscreen.func_200210_a(new TranslationTextComponent("connect.joining"));
this.func_213241_c(workingscreen);
@@ -1570,10 +1607,12 @@
@@ -1613,10 +1669,12 @@
IntegratedServer integratedserver = this.field_71437_Z;
this.field_71437_Z = null;
this.field_71460_t.func_190564_k();
@@ -265,15 +334,23 @@
if (integratedserver != null) {
while(!integratedserver.func_213201_w()) {
this.func_195542_b(false);
@@ -1605,6 +1644,7 @@
this.field_71438_f.func_72732_a(p_213257_1_);
@@ -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() {
@@ -1630,112 +1670,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) {
@@ -383,12 +460,13 @@
- }
-
- }
+ 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
}
}
@@ -1817,6 +1753,7 @@
@@ -1861,6 +1818,7 @@
return field_71432_P;
}
@@ -396,7 +474,7 @@
public CompletableFuture<Void> func_213245_w() {
return this.func_213169_a(this::func_213237_g).thenCompose((p_229993_0_) -> {
return p_229993_0_;
@@ -1944,6 +1881,8 @@
@@ -1988,6 +1946,8 @@
}
public MusicTicker.MusicType func_147109_W() {
@@ -405,7 +483,7 @@
if (this.field_71462_r instanceof WinGameScreen) {
return MusicTicker.MusicType.CREDITS;
} else if (this.field_71439_g == null) {
@@ -2120,7 +2059,7 @@
@@ -2164,7 +2124,7 @@
supplier = func_228022_c_(supplier);
}
@@ -414,7 +492,7 @@
}
private static Supplier<IResourcePack> func_228021_b_(Supplier<IResourcePack> p_228021_0_) {
@@ -2138,4 +2077,12 @@
@@ -2182,4 +2142,12 @@
public void func_228020_b_(int p_228020_1_) {
this.field_175617_aL.func_229355_a_(p_228020_1_);
}
@@ -1,12 +1,14 @@
--- a/net/minecraft/client/MouseHelper.java
+++ b/net/minecraft/client/MouseHelper.java
@@ -72,16 +72,21 @@
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.func_228018_at_().func_198107_o() / (double)this.field_198036_a.func_228018_at_().func_198105_m();
@@ -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(() -> {
@@ -40,3 +40,12 @@
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;
}
@@ -18,7 +18,7 @@
} 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));
+ }));
}
@@ -31,16 +31,16 @@
}
@@ -126,7 +132,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();
}));
}
@@ -190,6 +196,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);
@@ -48,8 +48,8 @@
if (this.field_73975_c != null) {
RenderSystem.pushMatrix();
RenderSystem.translatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
@@ -208,7 +215,13 @@
s = s + ("release".equalsIgnoreCase(this.minecraft.func_184123_d()) ? "" : "/" + this.minecraft.func_184123_d());
@@ -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);
@@ -222,6 +235,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);
+ }
}
@@ -6,9 +6,9 @@
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_) {
@@ -20,7 +20,7 @@
+ 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()) {
RenderSystem.disableRescaleNormal();
RenderSystem.disableDepthTest();
@@ -180,9 +180,9 @@
- 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_);
}
@@ -24,17 +24,21 @@
public void setAlpha(float p_setAlpha_1_) {
this.alpha = p_setAlpha_1_;
}
@@ -233,4 +241,13 @@
@@ -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;
+ return this.active ? 16777215 : 10526880;
+ 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;
+ }
}
@@ -8,7 +8,7 @@
if (this.field_78776_a.field_71439_g.func_223729_a(this.field_78776_a.field_71441_e, p_187103_1_, this.field_78779_k)) {
return false;
} else {
@@ -103,7 +104,7 @@
@@ -103,12 +104,11 @@
Block block = blockstate.func_177230_c();
if ((block instanceof CommandBlockBlock || block instanceof StructureBlock || block instanceof JigsawBlock) && !this.field_78776_a.field_71439_g.func_195070_dx()) {
return false;
@@ -16,8 +16,14 @@
+ } else if (blockstate.isAir(world, p_187103_1_)) {
return false;
} else {
block.func_176208_a(world, p_187103_1_, blockstate, this.field_78776_a.field_71439_g);
@@ -129,21 +130,25 @@
- block.func_176208_a(world, p_187103_1_, blockstate, this.field_78776_a.field_71439_g);
IFluidState ifluidstate = world.func_204610_c(p_187103_1_);
- boolean flag = world.func_180501_a(p_187103_1_, ifluidstate.func_206883_i(), 11);
+ boolean flag = blockstate.removedByPlayer(world, p_187103_1_, field_78776_a.field_71439_g, false, ifluidstate);
if (flag) {
block.func_176206_d(world, p_187103_1_, blockstate);
}
@@ -129,21 +129,25 @@
BlockState blockstate = this.field_78776_a.field_71441_e.func_180495_p(p_180511_1_);
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180511_1_, blockstate, 1.0F);
this.func_225324_a(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, p_180511_1_, p_180511_2_);
@@ -44,7 +50,7 @@
if (flag && blockstate1.func_185903_a(this.field_78776_a.field_71439_g, this.field_78776_a.field_71439_g.field_70170_p, p_180511_1_) >= 1.0F) {
this.func_187103_a(p_180511_1_);
} else {
@@ -183,22 +188,24 @@
@@ -183,22 +187,24 @@
BlockState blockstate1 = this.field_78776_a.field_71441_e.func_180495_p(p_180512_1_);
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180512_1_, blockstate1, 1.0F);
this.func_225324_a(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, p_180512_1_, p_180512_2_);
@@ -71,7 +77,7 @@
if (this.field_78770_f >= 1.0F) {
this.field_78778_j = false;
this.func_225324_a(CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, p_180512_1_, p_180512_2_);
@@ -217,7 +224,8 @@
@@ -217,7 +223,8 @@
}
public float func_78757_d() {
@@ -81,7 +87,7 @@
}
public void func_78765_e() {
@@ -234,7 +242,7 @@
@@ -234,7 +241,7 @@
ItemStack itemstack = this.field_78776_a.field_71439_g.func_184614_ca();
boolean flag = this.field_85183_f.func_190926_b() && itemstack.func_190926_b();
if (!this.field_85183_f.func_190926_b() && !itemstack.func_190926_b()) {
@@ -90,7 +96,7 @@
}
return p_178893_1_.equals(this.field_178895_c) && flag;
@@ -256,13 +264,19 @@
@@ -256,13 +263,27 @@
return ActionResultType.FAIL;
} else {
ItemStack itemstack = p_217292_1_.func_184586_b(p_217292_3_);
@@ -105,6 +111,14 @@
return ActionResultType.SUCCESS;
} else {
- boolean flag = !p_217292_1_.func_184614_ca().func_190926_b() || !p_217292_1_.func_184592_cb().func_190926_b();
+ ItemUseContext itemusecontext = new ItemUseContext(p_217292_1_, p_217292_3_, p_217292_4_);
+ if (event.getUseItem() != net.minecraftforge.eventbus.api.Event.Result.DENY) {
+ ActionResultType result = itemstack.onItemUseFirst(itemusecontext);
+ if (result != ActionResultType.PASS) {
+ this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
+ return result;
+ }
+ }
+ boolean flag = !p_217292_1_.func_184614_ca().doesSneakBypassUse(p_217292_2_,blockpos,p_217292_1_) || !p_217292_1_.func_184592_cb().doesSneakBypassUse(p_217292_2_,blockpos,p_217292_1_);
boolean flag1 = p_217292_1_.func_226563_dT_() && flag;
- if (!flag1) {
@@ -112,15 +126,17 @@
ActionResultType actionresulttype = p_217292_2_.func_180495_p(blockpos).func_227031_a_(p_217292_2_, p_217292_1_, p_217292_3_, p_217292_4_);
if (actionresulttype.func_226246_a_()) {
this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
@@ -271,6 +285,7 @@
@@ -271,8 +292,8 @@
}
this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return ActionResultType.PASS;
if (!itemstack.func_190926_b() && !p_217292_1_.func_184811_cZ().func_185141_a(itemstack.func_77973_b())) {
ItemUseContext itemusecontext = new ItemUseContext(p_217292_1_, p_217292_3_, p_217292_4_);
- ItemUseContext itemusecontext = new ItemUseContext(p_217292_1_, p_217292_3_, p_217292_4_);
ActionResultType actionresulttype1;
@@ -300,11 +315,14 @@
if (this.field_78779_k.func_77145_d()) {
int i = itemstack.func_190916_E();
@@ -300,11 +321,14 @@
if (p_187101_1_.func_184811_cZ().func_185141_a(itemstack.func_77973_b())) {
return ActionResultType.PASS;
} else {
@@ -135,7 +151,7 @@
}
return actionresult.func_188397_a();
@@ -329,6 +347,9 @@
@@ -329,6 +353,9 @@
public ActionResultType func_187097_a(PlayerEntity p_187097_1_, Entity p_187097_2_, Hand p_187097_3_) {
this.func_78750_j();
this.field_78774_b.func_147297_a(new CUseEntityPacket(p_187097_2_, p_187097_3_));
@@ -145,7 +161,7 @@
return this.field_78779_k == GameType.SPECTATOR ? ActionResultType.PASS : p_187097_1_.func_190775_a(p_187097_2_, p_187097_3_);
}
@@ -336,6 +357,9 @@
@@ -336,6 +363,9 @@
this.func_78750_j();
Vec3d vec3d = p_187102_3_.func_216347_e().func_178786_a(p_187102_2_.func_226277_ct_(), p_187102_2_.func_226278_cu_(), p_187102_2_.func_226281_cx_());
this.field_78774_b.func_147297_a(new CUseEntityPacket(p_187102_2_, p_187102_4_, vec3d));
@@ -39,17 +39,27 @@
this.field_187241_h.add(p_78873_1_);
}
@@ -312,7 +313,8 @@
@@ -305,14 +306,18 @@
public void func_228345_a_(MatrixStack p_228345_1_, IRenderTypeBuffer.Impl p_228345_2_, LightTexture p_228345_3_, ActiveRenderInfo p_228345_4_, float p_228345_5_) {
p_228345_3_.func_205109_c();
+ Runnable enable = () -> {
RenderSystem.enableAlphaTest();
RenderSystem.defaultAlphaFunc();
RenderSystem.enableDepthTest();
RenderSystem.enableFog();
+ };
RenderSystem.pushMatrix();
RenderSystem.multMatrix(p_228345_1_.func_227866_c_().func_227870_a_());
- for(IParticleRenderType iparticlerendertype : field_215241_b) {
+ for(IParticleRenderType iparticlerendertype : this.field_78876_b.keySet()) { // Forge: allow custom IParticleRenderType's
+ if (iparticlerendertype == IParticleRenderType.field_217606_f) continue;
+ enable.run(); //Forge: MC-168672 Make sure all render types have the correct GL state.
Iterable<Particle> iterable = this.field_78876_b.get(iparticlerendertype);
if (iterable != null) {
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -351,7 +353,7 @@
@@ -351,7 +356,7 @@
}
public void func_180533_a(BlockPos p_180533_1_, BlockState p_180533_2_) {
@@ -58,7 +68,7 @@
VoxelShape voxelshape = p_180533_2_.func_196954_c(this.field_78878_a, p_180533_1_);
double d0 = 0.25D;
voxelshape.func_197755_b((p_228348_3_, p_228348_5_, p_228348_7_, p_228348_9_, p_228348_11_, p_228348_13_) -> {
@@ -423,6 +425,12 @@
@@ -423,6 +428,12 @@
return String.valueOf(this.field_78876_b.values().stream().mapToInt(Collection::size).sum());
}
@@ -6,10 +6,11 @@
+ @Deprecated //Forge: Model data argument
public boolean func_228802_a_(ILightReader p_228802_1_, IBakedModel p_228802_2_, BlockState p_228802_3_, BlockPos p_228802_4_, MatrixStack p_228802_5_, IVertexBuilder p_228802_6_, boolean p_228802_7_, Random p_228802_8_, long p_228802_9_, int p_228802_11_) {
- boolean flag = Minecraft.func_71379_u() && p_228802_3_.func_185906_d() == 0 && p_228802_2_.func_177555_b();
+ return renderModel(p_228802_1_, p_228802_2_, p_228802_3_, p_228802_4_, p_228802_5_, p_228802_6_, p_228802_7_, p_228802_8_, p_228802_9_, p_228802_11_, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
+ }
+ public boolean renderModel(ILightReader p_228802_1_, IBakedModel p_228802_2_, BlockState p_228802_3_, BlockPos p_228802_4_, MatrixStack p_228802_5_, IVertexBuilder p_228802_6_, boolean p_228802_7_, Random p_228802_8_, long p_228802_9_, int p_228802_11_, net.minecraftforge.client.model.data.IModelData modelData) {
boolean flag = Minecraft.func_71379_u() && p_228802_3_.func_185906_d() == 0 && p_228802_2_.func_177555_b();
+ boolean flag = Minecraft.func_71379_u() && p_228802_3_.getLightValue(p_228802_1_, p_228802_4_) == 0 && p_228802_2_.func_177555_b();
Vec3d vec3d = p_228802_3_.func_191059_e(p_228802_1_, p_228802_4_);
p_228802_5_.func_227861_a_(vec3d.field_72450_a, vec3d.field_72448_b, vec3d.field_72449_c);
+ modelData = p_228802_2_.getModelData(p_228802_1_, p_228802_4_, p_228802_3_, modelData);
@@ -79,7 +80,22 @@
if (!list1.isEmpty()) {
this.func_228798_a_(p_228806_1_, p_228806_3_, p_228806_4_, -1, p_228806_11_, true, p_228806_5_, p_228806_6_, list1, bitset);
flag = true;
@@ -208,7 +222,11 @@
@@ -125,6 +139,14 @@
f1 = 1.0F;
f2 = 1.0F;
}
+ // FORGE: Apply diffuse lighting at render-time instead of baking it in
+ if (p_228800_6_.shouldApplyDiffuseLighting()) {
+ // TODO this should be handled by the forge lighting pipeline
+ float l = net.minecraftforge.client.model.pipeline.LightUtil.diffuseLight(p_228800_6_.func_178210_d());
+ f *= l;
+ f1 *= l;
+ f2 *= l;
+ }
p_228800_4_.func_227890_a_(p_228800_5_, p_228800_6_, new float[]{p_228800_7_, p_228800_8_, p_228800_9_, p_228800_10_}, f, f1, f2, new int[]{p_228800_11_, p_228800_12_, p_228800_13_, p_228800_14_}, p_228800_15_, true);
}
@@ -208,17 +230,21 @@
}
@@ -91,3 +107,15 @@
Random random = new Random();
long i = 42L;
for(Direction direction : Direction.values()) {
random.setSeed(42L);
- func_228803_a_(p_228804_1_, p_228804_2_, p_228804_5_, p_228804_6_, p_228804_7_, p_228804_4_.func_200117_a(p_228804_3_, direction, random), p_228804_8_, p_228804_9_);
+ func_228803_a_(p_228804_1_, p_228804_2_, p_228804_5_, p_228804_6_, p_228804_7_, p_228804_4_.getQuads(p_228804_3_, direction, random, modelData), p_228804_8_, p_228804_9_);
}
random.setSeed(42L);
- func_228803_a_(p_228804_1_, p_228804_2_, p_228804_5_, p_228804_6_, p_228804_7_, p_228804_4_.func_200117_a(p_228804_3_, (Direction)null, random), p_228804_8_, p_228804_9_);
+ func_228803_a_(p_228804_1_, p_228804_2_, p_228804_5_, p_228804_6_, p_228804_7_, p_228804_4_.getQuads(p_228804_3_, (Direction)null, random, modelData), p_228804_8_, p_228804_9_);
}
private static void func_228803_a_(MatrixStack.Entry p_228803_0_, IVertexBuilder p_228803_1_, float p_228803_2_, float p_228803_3_, float p_228803_4_, List<BakedQuad> p_228803_5_, int p_228803_6_, int p_228803_7_) {
@@ -1,5 +1,14 @@
--- a/net/minecraft/client/renderer/BlockRendererDispatcher.java
+++ b/net/minecraft/client/renderer/BlockRendererDispatcher.java
@@ -32,7 +32,7 @@
public BlockRendererDispatcher(BlockModelShapes p_i46577_1_, BlockColors p_i46577_2_) {
this.field_175028_a = p_i46577_1_;
this.field_228790_e_ = p_i46577_2_;
- this.field_175027_c = new BlockModelRenderer(this.field_228790_e_);
+ this.field_175027_c = new net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer(this.field_228790_e_);
this.field_175025_e = new FluidBlockRenderer();
}
@@ -40,18 +40,26 @@
return this.field_175028_a;
}
@@ -41,7 +50,7 @@
BlockRenderType blockrendertype = p_228791_1_.func_185901_i();
if (blockrendertype != BlockRenderType.INVISIBLE) {
switch(blockrendertype) {
@@ -89,7 +101,7 @@
@@ -89,10 +101,11 @@
float f = (float)(i >> 16 & 255) / 255.0F;
float f1 = (float)(i >> 8 & 255) / 255.0F;
float f2 = (float)(i & 255) / 255.0F;
@@ -49,8 +58,13 @@
+ this.field_175027_c.renderModel(p_228791_2_.func_227866_c_(), p_228791_3_.getBuffer(RenderTypeLookup.func_228394_b_(p_228791_1_)), p_228791_1_, ibakedmodel, f, f1, f2, p_228791_4_, p_228791_5_, modelData);
break;
case ENTITYBLOCK_ANIMATED:
ItemStackTileEntityRenderer.field_147719_a.func_228364_a_(new ItemStack(p_228791_1_.func_177230_c()), p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_);
@@ -101,4 +113,9 @@
- ItemStackTileEntityRenderer.field_147719_a.func_228364_a_(new ItemStack(p_228791_1_.func_177230_c()), p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_);
+ ItemStack stack = new ItemStack(p_228791_1_.func_177230_c());
+ stack.func_77973_b().getItemStackTileEntityRenderer().func_228364_a_(stack, p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_);
}
}
@@ -101,4 +114,9 @@
public void func_195410_a(IResourceManager p_195410_1_) {
this.field_175025_e.func_178268_a();
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/renderer/BufferBuilder.java
+++ b/net/minecraft/client/renderer/BufferBuilder.java
@@ -121,7 +121,6 @@
@@ -122,7 +122,6 @@
bitset.set(l);
}
@@ -8,16 +8,25 @@
}
private void func_227829_a_(FloatBuffer p_227829_1_, int p_227829_2_) {
@@ -364,4 +363,14 @@
@@ -298,6 +297,7 @@
}
ByteBuffer bytebuffer = this.field_179001_a.slice();
+ bytebuffer.order(this.field_179001_a.order()); // FORGE: Fix incorrect byte order
((Buffer)this.field_179001_a).clear();
return Pair.of(bufferbuilder$drawstate, bytebuffer);
}
@@ -365,4 +365,15 @@
this.field_179018_e = p_i225907_2_;
}
}
+
+ public void putBulkData(ByteBuffer buffer) {
+ func_181670_b(buffer.limit() + this.field_179011_q.func_177338_f());
+ this.field_179001_a.position(this.field_178997_d * this.field_179011_q.func_177338_f());
+ ((Buffer)this.field_179001_a).position(this.field_178997_d * this.field_179011_q.func_177338_f());
+ this.field_179001_a.put(buffer);
+ this.field_178997_d += buffer.limit() / this.field_179011_q.func_177338_f();
+ this.field_227824_l_ += buffer.limit();
+ }
+
+ // Forge start
@@ -35,14 +35,14 @@
if (flag) {
float f5 = hand == Hand.MAIN_HAND ? f : 0.0F;
float f2 = 1.0F - MathHelper.func_219799_g(p_228396_1_, this.field_187470_g, this.field_187469_f);
+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(Hand.MAIN_HAND, p_228396_2_, p_228396_1_, f1, f3, f5, this.field_187467_d))
+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(Hand.MAIN_HAND, p_228396_2_, p_228396_3_, p_228396_5_, p_228396_1_, f1, f5, f2, this.field_187467_d))
this.func_228405_a_(p_228396_4_, p_228396_1_, f1, Hand.MAIN_HAND, f5, this.field_187467_d, f2, p_228396_2_, p_228396_3_, p_228396_5_);
}
if (flag1) {
float f6 = hand == Hand.OFF_HAND ? f : 0.0F;
float f7 = 1.0F - MathHelper.func_219799_g(p_228396_1_, this.field_187472_i, this.field_187471_h);
+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(Hand.OFF_HAND, p_228396_2_, p_228396_1_, f1, f4, f6, this.field_187468_e))
+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(Hand.OFF_HAND, p_228396_2_, p_228396_3_, p_228396_5_, p_228396_1_, f1, f6, f7, this.field_187468_e))
this.func_228405_a_(p_228396_4_, p_228396_1_, f1, Hand.OFF_HAND, f6, this.field_187468_e, f7, p_228396_2_, p_228396_3_, p_228396_5_);
}
@@ -20,19 +20,19 @@
- this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, f14, f18, j);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, f15, f19, j);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, f16, f20, j);
+ this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f7, d2 + 0.0D, f25, f26, f27, alpha, f13, f17, j);
+ this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, alpha, f14, f18, j);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, alpha, f15, f19, j);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, alpha, f16, f20, j);
+ this.vertex(p_228796_3_, d0 + 0.0D, d1 + (double)f7, d2 + 0.0D, f25, f26, f27, alpha, f13, f17, j);
+ this.vertex(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, alpha, f14, f18, j);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, alpha, f15, f19, j);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, alpha, f16, f20, j);
if (p_228796_4_.func_205586_a(p_228796_1_, p_228796_2_.func_177984_a())) {
- this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f7, d2 + 0.0D, f25, f26, f27, f13, f17, j);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, f16, f20, j);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, f15, f19, j);
- this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, f14, f18, j);
+ this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f7, d2 + 0.0D, f25, f26, f27, alpha, f13, f17, j);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, alpha, f16, f20, j);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, alpha, f15, f19, j);
+ this.func_228797_a_(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, alpha, f14, f18, j);
+ this.vertex(p_228796_3_, d0 + 0.0D, d1 + (double)f7, d2 + 0.0D, f25, f26, f27, alpha, f13, f17, j);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f10, d2 + 0.0D, f25, f26, f27, alpha, f16, f20, j);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f9, d2 + 1.0D, f25, f26, f27, alpha, f15, f19, j);
+ this.vertex(p_228796_3_, d0 + 0.0D, d1 + (double)f8, d2 + 1.0D, f25, f26, f27, alpha, f14, f18, j);
}
}
@@ -44,14 +44,28 @@
- this.func_228797_a_(p_228796_3_, d0, d1 + (double)f12, d2, f40, f41, f42, f34, f37, i1);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2, f40, f41, f42, f35, f37, i1);
- this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2 + 1.0D, f40, f41, f42, f35, f39, i1);
+ this.func_228797_a_(p_228796_3_, d0, d1 + (double)f12, d2 + 1.0D, f40, f41, f42, alpha, f34, f39, i1);
+ this.func_228797_a_(p_228796_3_, d0, d1 + (double)f12, d2, f40, f41, f42, alpha, f34, f37, i1);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2, f40, f41, f42, alpha, f35, f37, i1);
+ this.func_228797_a_(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2 + 1.0D, f40, f41, f42, alpha, f35, f39, i1);
+ this.vertex(p_228796_3_, d0, d1 + (double)f12, d2 + 1.0D, f40, f41, f42, alpha, f34, f39, i1);
+ this.vertex(p_228796_3_, d0, d1 + (double)f12, d2, f40, f41, f42, alpha, f34, f37, i1);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2, f40, f41, f42, alpha, f35, f37, i1);
+ this.vertex(p_228796_3_, d0 + 1.0D, d1 + (double)f12, d2 + 1.0D, f40, f41, f42, alpha, f35, f39, i1);
flag7 = true;
}
@@ -239,15 +240,15 @@
@@ -222,10 +223,9 @@
flag7 = true;
BlockPos blockpos = p_228796_2_.func_177972_a(direction);
TextureAtlasSprite textureatlassprite2 = atextureatlassprite[1];
- if (!flag) {
- Block block = p_228796_1_.func_180495_p(blockpos).func_177230_c();
- if (block == Blocks.field_150359_w || block instanceof StainedGlassBlock) {
- textureatlassprite2 = this.field_187501_d;
+ if (atextureatlassprite[2] != null) {
+ if (p_228796_1_.func_180495_p(blockpos).shouldDisplayFluidOverlay(p_228796_1_, blockpos, p_228796_4_)) {
+ textureatlassprite2 = atextureatlassprite[2];
}
}
@@ -239,15 +239,15 @@
float f31 = 1.0F * f30 * f;
float f32 = 1.0F * f30 * f1;
float f33 = 1.0F * f30 * f2;
@@ -59,34 +73,35 @@
- this.func_228797_a_(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, f49, f28, k);
- this.func_228797_a_(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, f49, f29, k);
- this.func_228797_a_(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, f48, f29, k);
+ this.func_228797_a_(p_228796_3_, d3, d1 + (double)f36, d4, f31, f32, f33, alpha, f48, f50, k);
+ this.func_228797_a_(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, alpha, f49, f28, k);
+ this.func_228797_a_(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, alpha, f49, f29, k);
+ this.func_228797_a_(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, alpha, f48, f29, k);
if (textureatlassprite2 != this.field_187501_d) {
- if (textureatlassprite2 != this.field_187501_d) {
- this.func_228797_a_(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, f48, f29, k);
- this.func_228797_a_(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, f49, f29, k);
- this.func_228797_a_(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, f49, f28, k);
- this.func_228797_a_(p_228796_3_, d3, d1 + (double)f36, d4, f31, f32, f33, f48, f50, k);
+ this.func_228797_a_(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, alpha, f48, f29, k);
+ this.func_228797_a_(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, alpha, f49, f29, k);
+ this.func_228797_a_(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, alpha, f49, f28, k);
+ this.func_228797_a_(p_228796_3_, d3, d1 + (double)f36, d4, f31, f32, f33, alpha, f48, f50, k);
+ this.vertex(p_228796_3_, d3, d1 + (double)f36, d4, f31, f32, f33, alpha, f48, f50, k);
+ this.vertex(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, alpha, f49, f28, k);
+ this.vertex(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, alpha, f49, f29, k);
+ this.vertex(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, alpha, f48, f29, k);
+ if (textureatlassprite2 != atextureatlassprite[2]) {
+ this.vertex(p_228796_3_, d3, d1 + (double)f12, d4, f31, f32, f33, alpha, f48, f29, k);
+ this.vertex(p_228796_3_, d5, d1 + (double)f12, d6, f31, f32, f33, alpha, f49, f29, k);
+ this.vertex(p_228796_3_, d5, d1 + (double)f38, d6, f31, f32, f33, alpha, f49, f28, k);
+ this.vertex(p_228796_3_, d3, d1 + (double)f36, d4, f31, f32, f33, alpha, f48, f50, k);
}
}
}
@@ -256,10 +257,15 @@
@@ -256,10 +256,15 @@
}
}
+ @Deprecated
private void func_228797_a_(IVertexBuilder p_228797_1_, double p_228797_2_, double p_228797_4_, double p_228797_6_, float p_228797_8_, float p_228797_9_, float p_228797_10_, float p_228797_11_, float p_228797_12_, int p_228797_13_) {
- p_228797_1_.func_225582_a_(p_228797_2_, p_228797_4_, p_228797_6_).func_227885_a_(p_228797_8_, p_228797_9_, p_228797_10_, 1.0F).func_225583_a_(p_228797_11_, p_228797_12_).func_227886_a_(p_228797_13_).func_225584_a_(0.0F, 1.0F, 0.0F).func_181675_d();
+ func_228797_a_(p_228797_1_, p_228797_2_, p_228797_4_, p_228797_6_, p_228797_8_, p_228797_9_, p_228797_10_, 1.0F, p_228797_11_, p_228797_12_, p_228797_13_);
+ vertex(p_228797_1_, p_228797_2_, p_228797_4_, p_228797_6_, p_228797_8_, p_228797_9_, p_228797_10_, 1.0F, p_228797_11_, p_228797_12_, p_228797_13_);
}
+ private void func_228797_a_(IVertexBuilder p_228797_1_, double p_228797_2_, double p_228797_4_, double p_228797_6_, float p_228797_8_, float p_228797_9_, float p_228797_10_, float alpha, float p_228797_11_, float p_228797_12_, int p_228797_13_) {
+ p_228797_1_.func_225582_a_(p_228797_2_, p_228797_4_, p_228797_6_).func_227885_a_(p_228797_8_, p_228797_9_, p_228797_10_, alpha).func_225583_a_(p_228797_11_, p_228797_12_).func_227886_a_(p_228797_13_).func_225584_a_(0.0F, 1.0F, 0.0F).func_181675_d();
+ private void vertex(IVertexBuilder p_228797_1_, double p_228797_2_, double p_228797_4_, double p_228797_6_, float p_228797_8_, float p_228797_9_, float p_228797_10_, float alpha, float p_228797_11_, float p_228797_12_, int p_228797_13_) {
+ p_228797_1_.func_225582_a_(p_228797_2_, p_228797_4_, p_228797_6_).func_227885_a_(p_228797_8_, p_228797_9_, p_228797_10_, alpha).func_225583_a_(p_228797_11_, p_228797_12_).func_227886_a_(p_228797_13_).func_225584_a_(0.0F, 1.0F, 0.0F).func_181675_d();
+ }
+
private int func_228795_a_(ILightReader p_228795_1_, BlockPos p_228795_2_) {
@@ -18,15 +18,7 @@
}
}
@@ -358,6 +360,7 @@
}
boolean flag = this.field_78531_r.func_175606_aa() instanceof LivingEntity && ((LivingEntity)this.field_78531_r.func_175606_aa()).func_70608_bn();
+ if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(field_78531_r.field_71438_f, p_228381_1_, p_228381_3_))
if (this.field_78531_r.field_71474_y.field_74320_O == 0 && !flag && !this.field_78531_r.field_71474_y.field_74319_N && this.field_78531_r.field_71442_b.func_178889_l() != GameType.SPECTATOR) {
this.field_78513_d.func_205109_c();
this.field_78516_c.func_228396_a_(p_228381_3_, p_228381_1_, this.field_228374_i_.func_228487_b_(), this.field_78531_r.field_71439_g, this.field_78531_r.func_175598_ae().func_229085_a_(this.field_78531_r.field_71439_g, p_228381_3_));
@@ -475,7 +478,7 @@
@@ -475,7 +477,7 @@
}
} else if (this.field_78531_r.field_71462_r != null) {
try {
@@ -35,7 +27,7 @@
} catch (Throwable throwable) {
CrashReport crashreport1 = CrashReport.func_85055_a(throwable, "Rendering screen");
CrashReportCategory crashreportcategory1 = crashreport1.func_85058_a("Screen render details");
@@ -588,9 +591,16 @@
@@ -588,9 +590,16 @@
Matrix4f matrix4f = matrixstack.func_227866_c_().func_227870_a_();
this.func_228379_a_(matrix4f);
activerenderinfo.func_216772_a(this.field_78531_r.field_71441_e, (Entity)(this.field_78531_r.func_175606_aa() == null ? this.field_78531_r.field_71439_g : this.field_78531_r.func_175606_aa()), this.field_78531_r.field_71474_y.field_74320_O > 0, this.field_78531_r.field_71474_y.field_74320_O == 2, p_228378_1_);
@@ -48,11 +40,11 @@
p_228378_4_.func_227863_a_(Vector3f.field_229181_d_.func_229187_a_(activerenderinfo.func_216778_f() + 180.0F));
this.field_78531_r.field_71438_f.func_228426_a_(p_228378_4_, p_228378_1_, p_228378_2_, flag, activerenderinfo, this, this.field_78513_d, matrix4f);
+ this.field_78531_r.func_213239_aq().func_219895_b("forge_render_last");
+ net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(this.field_78531_r.field_71438_f, p_228378_4_, p_228378_2_);
+ net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(this.field_78531_r.field_71438_f, p_228378_4_, p_228378_1_, matrix4f, p_228378_2_);
this.field_78531_r.func_213239_aq().func_219895_b("hand");
if (this.field_175074_C) {
RenderSystem.clear(256, Minecraft.field_142025_a);
@@ -670,4 +680,9 @@
@@ -670,4 +679,9 @@
public OverlayTexture func_228385_m_() {
return this.field_228375_t_;
}
@@ -9,36 +9,34 @@
for(Item item : Registry.field_212630_s) {
if (!field_195411_c.contains(item)) {
@@ -70,6 +70,10 @@
}
private void func_229114_a_(IBakedModel p_229114_1_, ItemStack p_229114_2_, int p_229114_3_, int p_229114_4_, MatrixStack p_229114_5_, IVertexBuilder p_229114_6_) {
+ if (false && net.minecraftforge.common.ForgeConfig.CLIENT.allowEmissiveItems.get()) { //TODO: Find way to re-introduce emissive items.
+ net.minecraftforge.client.ForgeHooksClient.renderLitItem(this, p_229114_5_, p_229114_6_, p_229114_1_, p_229114_2_);
+ return;
+ }
Random random = new Random();
long i = 42L;
@@ -91,7 +95,7 @@
@@ -91,7 +91,7 @@
p_229111_8_ = this.field_175059_m.func_178083_a().func_174953_a(new ModelResourceLocation("minecraft:trident#inventory"));
}
- p_229111_8_.func_177552_f().func_181688_b(p_229111_2_).func_228830_a_(p_229111_3_, p_229111_4_);
+ net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(p_229111_4_, p_229111_8_, p_229111_2_, p_229111_3_);
+ p_229111_8_ = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(p_229111_4_, p_229111_8_, p_229111_2_, p_229111_3_);
p_229111_4_.func_227861_a_(-0.5D, -0.5D, -0.5D);
if (!p_229111_8_.func_188618_c() && (p_229111_1_.func_77973_b() != Items.field_203184_eO || flag1)) {
RenderType rendertype = RenderTypeLookup.func_228389_a_(p_229111_1_);
@@ -105,7 +109,7 @@
@@ -105,7 +105,7 @@
IVertexBuilder ivertexbuilder = func_229113_a_(p_229111_5_, rendertype1, true, p_229111_1_.func_77962_s());
this.func_229114_a_(p_229111_8_, p_229111_1_, p_229111_6_, p_229111_7_, p_229111_4_, ivertexbuilder);
} else {
- ItemStackTileEntityRenderer.field_147719_a.func_228364_a_(p_229111_1_, p_229111_4_, p_229111_5_, p_229111_6_, p_229111_7_);
+ p_229111_1_.func_77973_b().getTileEntityItemStackRenderer().func_228364_a_(p_229111_1_, p_229111_4_, p_229111_5_, p_229111_6_, p_229111_7_);
+ p_229111_1_.func_77973_b().getItemStackTileEntityRenderer().func_228364_a_(p_229111_1_, p_229111_4_, p_229111_5_, p_229111_6_, p_229111_7_);
}
p_229111_4_.func_227865_b_();
@@ -216,6 +220,7 @@
@@ -129,7 +129,7 @@
float f = (float)(i >> 16 & 255) / 255.0F;
float f1 = (float)(i >> 8 & 255) / 255.0F;
float f2 = (float)(i & 255) / 255.0F;
- p_229112_2_.func_227889_a_(matrixstack$entry, bakedquad, f, f1, f2, p_229112_5_, p_229112_6_);
+ p_229112_2_.addVertexData(matrixstack$entry, bakedquad, f, f1, f2, p_229112_5_, p_229112_6_, true);
}
}
@@ -215,6 +215,7 @@
crashreportcategory.func_189529_a("Item Type", () -> {
return String.valueOf((Object)p_184391_2_.func_77973_b());
});
@@ -46,7 +44,7 @@
crashreportcategory.func_189529_a("Item Damage", () -> {
return String.valueOf(p_184391_2_.func_77952_i());
});
@@ -247,18 +252,16 @@
@@ -246,18 +247,16 @@
irendertypebuffer$impl.func_228461_a_();
}
@@ -69,7 +67,7 @@
this.func_181565_a(bufferbuilder, p_180453_3_ + 2, p_180453_4_ + 13, 13, 2, 0, 0, 0, 255);
this.func_181565_a(bufferbuilder, p_180453_3_ + 2, p_180453_4_ + 13, i, 1, j >> 16 & 255, j >> 8 & 255, j & 255, 255);
RenderSystem.enableBlend();
@@ -296,4 +299,9 @@
@@ -295,4 +294,9 @@
public void func_195410_a(IResourceManager p_195410_1_) {
this.field_175059_m.func_178085_b();
}
@@ -9,3 +9,12 @@
vector3f1.func_195901_a(0.0F, 1.0F);
if (f2 > 0.0F) {
float f10 = Math.max(vector3f1.func_195899_a(), Math.max(vector3f1.func_195900_b(), vector3f1.func_195902_c()));
@@ -169,7 +171,7 @@
}
public static int func_228450_a_(int p_228450_0_) {
- return p_228450_0_ >> 4 & '\uffff';
+ return (p_228450_0_ & 0xFFFF) >> 4; // Forge: Fix fullbright quads showing dark artifacts. Reported as MC-169806
}
public static int func_228454_b_(int p_228454_0_) {
@@ -0,0 +1,14 @@
--- a/net/minecraft/client/renderer/Matrix3f.java
+++ b/net/minecraft/client/renderer/Matrix3f.java
@@ -406,4 +406,11 @@
public Matrix3f func_226121_d_() {
return new Matrix3f(this);
}
+
+ // Forge start
+ public void multiplyBackward(Matrix3f other) {
+ Matrix3f copy = other.func_226121_d_();
+ copy.func_226118_b_(this);
+ this.func_226114_a_(copy);
+ }
}
@@ -1,12 +1,30 @@
--- a/net/minecraft/client/renderer/Matrix4f.java
+++ b/net/minecraft/client/renderer/Matrix4f.java
@@ -373,4 +373,88 @@
@@ -373,4 +373,78 @@
matrix4f.field_226586_l_ = p_226599_2_;
return matrix4f;
}
+
+ // Forge start
+ public Matrix4f(float[] values) { set(values); }
+ public Matrix4f(float[] values) {
+ field_226575_a_ = values[0];
+ field_226576_b_ = values[1];
+ field_226577_c_ = values[2];
+ field_226578_d_ = values[3];
+ field_226579_e_ = values[4];
+ field_226580_f_ = values[5];
+ field_226581_g_ = values[6];
+ field_226582_h_ = values[7];
+ field_226583_i_ = values[8];
+ field_226584_j_ = values[9];
+ field_226585_k_ = values[10];
+ field_226586_l_ = values[11];
+ field_226587_m_ = values[12];
+ field_226588_n_ = values[13];
+ field_226589_o_ = values[14];
+ field_226590_p_ = values[15];
+ }
+
+ public void set(Matrix4f mat) {
+ this.field_226575_a_ = mat.field_226575_a_;
+ this.field_226576_b_ = mat.field_226576_b_;
@@ -45,47 +63,19 @@
+ field_226590_p_ += other.field_226590_p_;
+ }
+
+ public void set(float[] others) {
+ field_226575_a_ = others[0];
+ field_226576_b_ = others[1];
+ field_226577_c_ = others[2];
+ field_226578_d_ = others[3];
+ field_226579_e_ = others[4];
+ field_226580_f_ = others[5];
+ field_226581_g_ = others[6];
+ field_226582_h_ = others[7];
+ field_226583_i_ = others[8];
+ field_226584_j_ = others[9];
+ field_226585_k_ = others[10];
+ field_226586_l_ = others[11];
+ field_226587_m_ = others[12];
+ field_226588_n_ = others[13];
+ field_226589_o_ = others[14];
+ field_226590_p_ = others[15];
+ }
+
+ public void write(float[] dest) {
+ dest[0] = field_226575_a_;
+ dest[1] = field_226576_b_;
+ dest[2] = field_226577_c_;
+ dest[3] = field_226578_d_;
+ dest[4] = field_226579_e_;
+ dest[5] = field_226580_f_;
+ dest[6] = field_226581_g_;
+ dest[7] = field_226582_h_;
+ dest[8] = field_226583_i_;
+ dest[9] = field_226584_j_;
+ dest[10] = field_226585_k_;
+ dest[11] = field_226586_l_;
+ dest[12] = field_226587_m_;
+ dest[13] = field_226588_n_;
+ dest[14] = field_226589_o_;
+ dest[15] = field_226590_p_;
+ }
+
+ public void multiplyBackward(Matrix4f other) {
+ Matrix4f copy = other.func_226601_d_();
+ copy.func_226595_a_(this);
+ this.set(copy);
+ }
+
+ public void setTranslation(float x, float y, float z) {
+ this.field_226575_a_ = 1.0F;
+ this.field_226580_f_ = 1.0F;
+ this.field_226585_k_ = 1.0F;
+ this.field_226590_p_ = 1.0F;
+ this.field_226578_d_ = x;
+ this.field_226582_h_ = y;
+ this.field_226586_l_ = z;
+ }
}
@@ -1,15 +0,0 @@
--- a/net/minecraft/client/renderer/Quaternion.java
+++ b/net/minecraft/client/renderer/Quaternion.java
@@ -176,4 +176,12 @@
public Quaternion func_227068_g_() {
return new Quaternion(this);
}
+
+ // Forge start
+ public Quaternion(float[] values) {
+ this.field_227061_b_ = values[0];
+ this.field_227062_c_ = values[1];
+ this.field_227063_d_ = values[2];
+ this.field_227064_e_ = values[3];
+ }
}
@@ -0,0 +1,11 @@
--- a/net/minecraft/client/renderer/RenderState.java
+++ b/net/minecraft/client/renderer/RenderState.java
@@ -360,7 +360,7 @@
private final OptionalDouble field_228587_Q_;
public LineState(OptionalDouble p_i225982_1_) {
- super("alpha", () -> {
+ super("line_width", () -> { // FORGE: fix MC-167447
if (!Objects.equals(p_i225982_1_, OptionalDouble.of(1.0D))) {
if (p_i225982_1_.isPresent()) {
RenderSystem.lineWidth((float)p_i225982_1_.getAsDouble());
@@ -46,8 +46,8 @@
+ // FORGE START
+
+ private static final Map<Block, java.util.function.Predicate<RenderType>> blockRenderChecks = Maps.newHashMap();
+ private static final Map<Fluid, java.util.function.Predicate<RenderType>> fluidRenderChecks = Maps.newHashMap();
+ private static final Map<net.minecraftforge.registries.IRegistryDelegate<Block>, java.util.function.Predicate<RenderType>> blockRenderChecks = Maps.newHashMap();
+ private static final Map<net.minecraftforge.registries.IRegistryDelegate<Fluid>, java.util.function.Predicate<RenderType>> fluidRenderChecks = Maps.newHashMap();
+ static {
+ field_228386_a_.forEach(RenderTypeLookup::setRenderLayer);
+ field_228387_b_.forEach(RenderTypeLookup::setRenderLayer);
@@ -60,7 +60,7 @@
+ } else {
+ java.util.function.Predicate<RenderType> rendertype;
+ synchronized (RenderTypeLookup.class) {
+ rendertype = blockRenderChecks.get(block);
+ rendertype = blockRenderChecks.get(block.delegate);
+ }
+ return rendertype != null ? rendertype.test(type) : type == RenderType.func_228639_c_();
+ }
@@ -69,7 +69,7 @@
+ public static boolean canRenderInLayer(IFluidState fluid, RenderType type) {
+ java.util.function.Predicate<RenderType> rendertype;
+ synchronized (RenderTypeLookup.class) {
+ rendertype = fluidRenderChecks.get(fluid.func_206886_c());
+ rendertype = fluidRenderChecks.get(fluid.func_206886_c().delegate);
+ }
+ return rendertype != null ? rendertype.test(type) : type == RenderType.func_228639_c_();
+ }
@@ -80,7 +80,7 @@
+ }
+
+ public static synchronized void setRenderLayer(Block block, java.util.function.Predicate<RenderType> predicate) {
+ blockRenderChecks.put(block, predicate);
+ blockRenderChecks.put(block.delegate, predicate);
+ }
+
+ public static void setRenderLayer(Fluid fluid, RenderType type) {
@@ -89,7 +89,7 @@
+ }
+
+ public static synchronized void setRenderLayer(Fluid fluid, java.util.function.Predicate<RenderType> predicate) {
+ fluidRenderChecks.put(fluid, predicate);
+ fluidRenderChecks.put(fluid.delegate, predicate);
+ }
+
public static void func_228393_a_(boolean p_228393_0_) {
@@ -9,7 +9,7 @@
private final Matrix4f field_227976_a_;
private boolean field_227977_b_;
@Nullable
@@ -133,4 +133,33 @@
@@ -133,4 +133,32 @@
public int hashCode() {
return Objects.hash(this.field_227976_a_);
}
@@ -29,17 +29,16 @@
+ return field_227981_f_.func_227068_g_();
+ }
+
+ private javax.vecmath.Matrix3f normalTransform = null;
+ public javax.vecmath.Matrix3f getNormalMatrix() {
+ private Matrix3f normalTransform = null;
+ public Matrix3f getNormalMatrix() {
+ checkNormalTransform();
+ return normalTransform;
+ }
+ private void checkNormalTransform() {
+ if (normalTransform == null) {
+ normalTransform = new javax.vecmath.Matrix3f();
+ net.minecraftforge.common.model.TransformationHelper.toVecmath(field_227976_a_).getRotationScale(normalTransform);
+ normalTransform.invert();
+ normalTransform.transpose();
+ normalTransform = new Matrix3f(field_227976_a_);
+ normalTransform.func_226123_f_();
+ normalTransform.func_226110_a_();
+ }
+ }
}
@@ -1,12 +1,15 @@
--- a/net/minecraft/client/renderer/Vector3f.java
+++ b/net/minecraft/client/renderer/Vector3f.java
@@ -198,4 +198,14 @@
@@ -198,4 +198,17 @@
public String toString() {
return "[" + this.field_229184_g_ + ", " + this.field_229185_h_ + ", " + this.field_229186_i_ + "]";
}
+
+ // Forge start
+ public Vector3f(float[] values) {
+ set(values);
+ }
+ public void set(float[] values) {
+ this.field_229184_g_ = values[0];
+ this.field_229185_h_ = values[1];
+ this.field_229186_i_ = values[2];
@@ -1,24 +1,19 @@
--- a/net/minecraft/client/renderer/Vector4f.java
+++ b/net/minecraft/client/renderer/Vector4f.java
@@ -129,4 +129,21 @@
@@ -129,4 +129,16 @@
public String toString() {
return "[" + this.field_229368_a_ + ", " + this.field_229369_b_ + ", " + this.field_229370_c_ + ", " + this.field_229371_d_ + "]";
}
+
+ // Forge start
+ public Vector4f(float[] values) {
+ set(values);
+ }
+ public void set(float[] values) {
+ this.field_229368_a_ = values[0];
+ this.field_229369_b_ = values[1];
+ this.field_229370_c_ = values[2];
+ this.field_229371_d_ = values[3];
+ }
+ public void write(float[] values) {
+ values[0] = this.field_229368_a_;
+ values[1] = this.field_229369_b_;
+ values[2] = this.field_229370_c_;
+ values[3] = this.field_229371_d_;
+ }
+ public void setX(float x) { this.field_229368_a_ = x; }
+ public void setY(float y) { this.field_229369_b_ = y; }
+ public void setZ(float z) { this.field_229370_c_ = z; }
+ public void setW(float z) { this.field_229371_d_ = z; }
}
@@ -41,7 +41,7 @@
this.func_174967_a(p_228426_3_ + l1);
iprofiler.func_219895_b("terrain");
this.func_228441_a_(RenderType.func_228639_c_(), p_228426_1_, d0, d1, d2);
+ this.field_72777_q.func_209506_al().func_229356_a_(AtlasTexture.field_110575_b).func_174937_a(false, this.field_72777_q.field_71474_y.field_151442_I > 0); // FORGE: fix flickering leaves when mods mess up the blurMipmap settings
+ this.field_72777_q.func_209506_al().func_229356_a_(AtlasTexture.field_110575_b).setBlurMipmap(false, this.field_72777_q.field_71474_y.field_151442_I > 0); // FORGE: fix flickering leaves when mods mess up the blurMipmap settings
this.func_228441_a_(RenderType.func_228641_d_(), p_228426_1_, d0, d1, d2);
+ this.field_72777_q.func_209506_al().func_229356_a_(AtlasTexture.field_110575_b).restoreLastBlurMipmap();
this.func_228441_a_(RenderType.func_228643_e_(), p_228426_1_, d0, d1, d2);
@@ -68,7 +68,7 @@
BlockPos blockpos = ((BlockRayTraceResult)raytraceresult).func_216350_a();
BlockState blockstate = this.field_72769_h.func_180495_p(blockpos);
- if (!blockstate.func_196958_f() && this.field_72769_h.func_175723_af().func_177746_a(blockpos)) {
+ if (!net.minecraftforge.client.ForgeHooksClient.onDrawBlockHighlight(this, p_228426_6_, field_72777_q.field_71476_x, 0, p_228426_2_))
+ if (!net.minecraftforge.client.ForgeHooksClient.onDrawBlockHighlight(this, p_228426_6_, field_72777_q.field_71476_x, p_228426_2_, p_228426_1_, irendertypebuffer$impl))
+ if (!blockstate.isAir(this.field_72769_h, blockpos) && this.field_72769_h.func_175723_af().func_177746_a(blockpos)) {
IVertexBuilder ivertexbuilder2 = irendertypebuffer$impl.getBuffer(RenderType.func_228659_m_());
this.func_228429_a_(p_228426_1_, ivertexbuilder2, p_228426_6_.func_216773_g(), d0, d1, d2, blockpos, blockstate);
@@ -85,7 +85,38 @@
if (this.field_72777_q.field_71441_e.field_73011_w.func_186058_p() == DimensionType.field_223229_c_) {
this.func_228444_b_(p_228424_1_);
} else if (this.field_72777_q.field_71441_e.field_73011_w.func_76569_d()) {
@@ -2283,8 +2298,8 @@
@@ -1977,7 +1992,12 @@
this.field_175008_n.func_217628_a(p_215319_1_, p_215319_2_, p_215319_3_, p_215319_4_);
}
+ @Deprecated // Forge: use item aware function below
public void func_184377_a(@Nullable SoundEvent p_184377_1_, BlockPos p_184377_2_) {
+ this.playRecord(p_184377_1_, p_184377_2_, p_184377_1_ == null? null : MusicDiscItem.func_185074_a(p_184377_1_));
+ }
+
+ public void playRecord(@Nullable SoundEvent p_184377_1_, BlockPos p_184377_2_, @Nullable MusicDiscItem musicDiscItem) {
ISound isound = this.field_147593_P.get(p_184377_2_);
if (isound != null) {
this.field_72777_q.func_147118_V().func_147683_b(isound);
@@ -1985,7 +2005,7 @@
}
if (p_184377_1_ != null) {
- MusicDiscItem musicdiscitem = MusicDiscItem.func_185074_a(p_184377_1_);
+ MusicDiscItem musicdiscitem = musicDiscItem;
if (musicdiscitem != null) {
this.field_72777_q.field_71456_v.func_73833_a(musicdiscitem.func_200299_h().func_150254_d());
}
@@ -2133,7 +2153,7 @@
break;
case 1010:
if (Item.func_150899_d(p_180439_4_) instanceof MusicDiscItem) {
- this.func_184377_a(((MusicDiscItem)Item.func_150899_d(p_180439_4_)).func_185075_h(), p_180439_3_);
+ this.playRecord(((MusicDiscItem)Item.func_150899_d(p_180439_4_)).func_185075_h(), p_180439_3_, (MusicDiscItem) Item.func_150899_d(p_180439_4_));
} else {
this.func_184377_a((SoundEvent)null, p_180439_3_);
}
@@ -2283,8 +2303,8 @@
break;
case 2001:
BlockState blockstate = Block.func_196257_b(p_180439_4_);
@@ -96,7 +127,16 @@
this.field_72769_h.func_184156_a(p_180439_3_, soundtype.func_185845_c(), SoundCategory.BLOCKS, (soundtype.func_185843_a() + 1.0F) / 2.0F, soundtype.func_185847_b() * 0.8F, false);
}
@@ -2445,6 +2460,11 @@
@@ -2432,7 +2452,7 @@
} else {
int i = p_228420_0_.func_226658_a_(LightType.SKY, p_228420_2_);
int j = p_228420_0_.func_226658_a_(LightType.BLOCK, p_228420_2_);
- int k = p_228420_1_.func_185906_d();
+ int k = p_228420_1_.getLightValue(p_228420_0_, p_228420_2_);
if (j < k) {
j = k;
}
@@ -2445,6 +2465,11 @@
return this.field_175015_z;
}
@@ -0,0 +1,15 @@
--- a/net/minecraft/client/renderer/entity/EntityRenderer.java
+++ b/net/minecraft/client/renderer/entity/EntityRenderer.java
@@ -54,8 +54,10 @@
}
public void func_225623_a_(T p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) {
- if (this.func_177070_b(p_225623_1_)) {
- this.func_225629_a_(p_225623_1_, p_225623_1_.func_145748_c_().func_150254_d(), p_225623_4_, p_225623_5_, p_225623_6_);
+ net.minecraftforge.client.event.RenderNameplateEvent renderNameplateEvent = new net.minecraftforge.client.event.RenderNameplateEvent(p_225623_1_, p_225623_1_.func_145748_c_().func_150254_d(), this, p_225623_4_, p_225623_5_, p_225623_6_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(renderNameplateEvent);
+ if (renderNameplateEvent.getResult() != net.minecraftforge.eventbus.api.Event.Result.DENY && (renderNameplateEvent.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || this.func_177070_b(p_225623_1_))) {
+ this.func_225629_a_(p_225623_1_, renderNameplateEvent.getContent(), p_225623_4_, p_225623_5_, p_225623_6_);
}
}
@@ -1,6 +1,23 @@
--- a/net/minecraft/client/renderer/entity/EntityRendererManager.java
+++ b/net/minecraft/client/renderer/entity/EntityRendererManager.java
@@ -445,4 +445,8 @@
@@ -183,13 +183,15 @@
this.field_178637_m = new PlayerRenderer(this);
this.field_178636_l.put("default", this.field_178637_m);
this.field_178636_l.put("slim", new PlayerRenderer(this, true));
+ }
+ //FORGE: Validate the existence of a renderer for each entity type after modded entity renderers have been added
+ public void validateRendererExistence() {
for(EntityType<?> entitytype : Registry.field_212629_r) {
if (entitytype != EntityType.field_200729_aH && !this.field_78729_o.containsKey(entitytype)) {
throw new IllegalStateException("No renderer registered for " + Registry.field_212629_r.func_177774_c(entitytype));
}
}
-
}
public <T extends Entity> EntityRenderer<? super T> func_78713_a(T p_78713_1_) {
@@ -445,4 +447,8 @@
public FontRenderer func_78716_a() {
return this.field_78736_p;
}
@@ -19,7 +19,7 @@
+ int i = mapdata != null ? p_225623_1_.func_82333_j() % 4 * 2 : p_225623_1_.func_82333_j();
p_225623_4_.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_((float)i * 360.0F / 8.0F));
- if (flag) {
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderItemInFrameEvent(p_225623_1_, this))) {
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderItemInFrameEvent(p_225623_1_, this, p_225623_4_, p_225623_5_, p_225623_6_))) {
+ if (mapdata != null) {
p_225623_4_.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(180.0F));
float f = 0.0078125F;
@@ -23,7 +23,7 @@
p_225623_4_.func_227861_a_((double)f7, (double)f8, (double)f9);
}
@@ -75,18 +72,19 @@
@@ -75,18 +72,18 @@
float f11 = (this.field_177079_e.nextFloat() * 2.0F - 1.0F) * 0.15F;
float f13 = (this.field_177079_e.nextFloat() * 2.0F - 1.0F) * 0.15F;
float f10 = (this.field_177079_e.nextFloat() * 2.0F - 1.0F) * 0.15F;
@@ -37,9 +37,7 @@
}
}
- this.field_177080_a.func_229111_a_(itemstack, ItemCameraTransforms.TransformType.GROUND, false, p_225623_4_, p_225623_5_, p_225623_6_, OverlayTexture.field_229196_a_, ibakedmodel);
+ IBakedModel transformedModel = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(p_225623_4_, ibakedmodel, ItemCameraTransforms.TransformType.GROUND, false);
+ this.field_177080_a.func_229111_a_(itemstack, ItemCameraTransforms.TransformType.GROUND, false, p_225623_4_, p_225623_5_, p_225623_6_, OverlayTexture.field_229196_a_, transformedModel);
this.field_177080_a.func_229111_a_(itemstack, ItemCameraTransforms.TransformType.GROUND, false, p_225623_4_, p_225623_5_, p_225623_6_, OverlayTexture.field_229196_a_, ibakedmodel);
p_225623_4_.func_227865_b_();
if (!flag) {
- p_225623_4_.func_227861_a_((double)(0.0F * f4), (double)(0.0F * f5), (double)(0.09375F * f6));
@@ -47,7 +45,7 @@
}
}
@@ -97,4 +95,21 @@
@@ -97,4 +94,21 @@
public ResourceLocation func_110775_a(ItemEntity p_110775_1_) {
return AtlasTexture.field_110575_b;
}
@@ -1,10 +1,10 @@
--- a/net/minecraft/client/renderer/entity/LivingRenderer.java
+++ b/net/minecraft/client/renderer/entity/LivingRenderer.java
@@ -47,14 +47,17 @@
@@ -48,14 +48,17 @@
}
public void func_225623_a_(T p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) {
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Pre<T, M>(p_225623_1_, this, p_225623_3_, p_225623_4_))) return;
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Pre<T, M>(p_225623_1_, this, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_))) return;
p_225623_4_.func_227860_a_();
this.field_77045_g.field_217112_c = this.func_77040_d(p_225623_1_, p_225623_3_);
- this.field_77045_g.field_217113_d = p_225623_1_.func_184218_aH();
@@ -20,7 +20,7 @@
LivingEntity livingentity = (LivingEntity)p_225623_1_.func_184187_bx();
f = MathHelper.func_219805_h(p_225623_3_, livingentity.field_70760_ar, livingentity.field_70761_aq);
f2 = f1 - f;
@@ -91,7 +94,7 @@
@@ -92,7 +95,7 @@
p_225623_4_.func_227861_a_(0.0D, (double)-1.501F, 0.0D);
float f8 = 0.0F;
float f5 = 0.0F;
@@ -29,11 +29,11 @@
f8 = MathHelper.func_219799_g(p_225623_3_, p_225623_1_.field_184618_aE, p_225623_1_.field_70721_aZ);
f5 = p_225623_1_.field_184619_aG - p_225623_1_.field_70721_aZ * (1.0F - p_225623_3_);
if (p_225623_1_.func_70631_g_()) {
@@ -132,6 +135,7 @@
@@ -123,6 +126,7 @@
p_225623_4_.func_227865_b_();
super.func_225623_a_(p_225623_1_, p_225623_2_, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Post<T, M>(p_225623_1_, this, p_225623_3_, p_225623_4_));
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Post<T, M>(p_225623_1_, this, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_));
}
public static int func_229117_c_(LivingEntity p_229117_0_, float p_229117_1_) {
@Nullable
@@ -4,9 +4,9 @@
public void func_225623_a_(AbstractClientPlayerEntity p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) {
this.func_177137_d(p_225623_1_);
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Pre(p_225623_1_, this, p_225623_3_, p_225623_4_))) return;
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Pre(p_225623_1_, this, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_))) return;
super.func_225623_a_(p_225623_1_, p_225623_2_, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_225623_1_, this, p_225623_3_, p_225623_4_));
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_225623_1_, this, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_));
}
public Vec3d func_225627_b_(AbstractClientPlayerEntity p_225627_1_, float p_225627_2_) {
@@ -1,6 +1,13 @@
--- a/net/minecraft/client/renderer/model/BakedQuad.java
+++ b/net/minecraft/client/renderer/model/BakedQuad.java
@@ -12,7 +12,17 @@
@@ -6,13 +6,22 @@
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
-public class BakedQuad {
+public class BakedQuad implements net.minecraftforge.client.model.pipeline.IVertexProducer {
protected final int[] field_178215_a;
protected final int field_178213_b;
protected final Direction field_178214_c;
protected final TextureAtlasSprite field_187509_d;
@@ -9,25 +16,25 @@
+ */
+ @Deprecated
public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, Direction p_i46574_3_, TextureAtlasSprite p_i46574_4_) {
+ this(p_i46574_1_, p_i46574_2_, p_i46574_3_, p_i46574_4_, true, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176600_a);
+ this(p_i46574_1_, p_i46574_2_, p_i46574_3_, p_i46574_4_, true);
+ }
+
+ public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, Direction p_i46574_3_, TextureAtlasSprite p_i46574_4_, boolean applyDiffuseLighting, net.minecraft.client.renderer.vertex.VertexFormat format) {
+ this.format = format;
+ public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, Direction p_i46574_3_, TextureAtlasSprite p_i46574_4_, boolean applyDiffuseLighting) {
+ this.applyDiffuseLighting = applyDiffuseLighting;
this.field_178215_a = p_i46574_1_;
this.field_178213_b = p_i46574_2_;
this.field_178214_c = p_i46574_3_;
@@ -34,4 +44,19 @@
@@ -34,4 +43,20 @@
public Direction func_178210_d() {
return this.field_178214_c;
}
+
+ protected final net.minecraft.client.renderer.vertex.VertexFormat format;
+ // Forge start
+ protected final boolean applyDiffuseLighting;
+
+ public net.minecraft.client.renderer.vertex.VertexFormat getFormat() {
+ return format;
+ @Override
+ public void pipe(net.minecraftforge.client.model.pipeline.IVertexConsumer consumer) {
+ net.minecraftforge.client.model.pipeline.LightUtil.putBakedQuad(consumer, this);
+ }
+
+ public TextureAtlasSprite func_187508_a() {
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/renderer/model/BlockModel.java
+++ b/net/minecraft/client/renderer/model/BlockModel.java
@@ -56,9 +56,10 @@
@@ -57,9 +57,10 @@
public BlockModel field_178315_d;
@Nullable
protected ResourceLocation field_178316_e;
@@ -12,8 +12,8 @@
}
public static BlockModel func_178294_a(String p_178294_0_) {
@@ -75,10 +76,15 @@
this.field_187968_k = p_i46573_7_;
@@ -76,10 +77,15 @@
this.field_187968_k = p_i230056_7_;
}
+ @Deprecated
@@ -28,7 +28,7 @@
public boolean func_178309_b() {
return this.field_178315_d != null ? this.field_178315_d.func_178309_b() : this.field_178322_i;
}
@@ -95,6 +101,10 @@
@@ -100,6 +106,10 @@
return this.field_187968_k.isEmpty() ? ItemOverrideList.field_188022_a : new ItemOverrideList(p_217646_1_, p_217646_2_, p_217646_1_::func_209597_a, this.field_187968_k);
}
@@ -39,7 +39,7 @@
public Collection<ResourceLocation> func_187965_e() {
Set<ResourceLocation> set = Sets.newHashSet();
@@ -138,6 +148,9 @@
@@ -143,6 +153,9 @@
Set<Material> set1 = Sets.newHashSet(this.func_228816_c_("particle"));
@@ -49,20 +49,25 @@
for(BlockPart blockpart : this.func_178298_a()) {
for(BlockPartFace blockpartface : blockpart.field_178240_c.values()) {
Material material = this.func_228816_c_(blockpartface.field_178242_d);
@@ -168,7 +181,11 @@
return this.func_228813_a_(p_225613_1_, this, p_225613_2_, p_225613_3_, p_225613_4_);
@@ -169,11 +182,17 @@
return set1;
}
- public IBakedModel func_228813_a_(ModelBakery p_228813_1_, BlockModel p_228813_2_, Function<Material, TextureAtlasSprite> p_228813_3_, IModelTransform p_228813_4_, ResourceLocation p_228813_5_) {
+ public IBakedModel func_228813_a_(ModelBakery p_228813_1_, BlockModel p_228813_2_, Function<Material, TextureAtlasSprite> p_228813_3_, IModelTransform p_228813_4_, ResourceLocation p_228813_5_)
+ {
+ return net.minecraftforge.client.model.ModelLoaderRegistry.bakeHelper(this, p_228813_1_, p_228813_2_, p_228813_3_, p_228813_4_, p_228813_5_);
+ @Deprecated //Forge: Use Boolean variant
public IBakedModel func_225613_a_(ModelBakery p_225613_1_, Function<Material, TextureAtlasSprite> p_225613_2_, IModelTransform p_225613_3_, ResourceLocation p_225613_4_) {
return this.func_228813_a_(p_225613_1_, this, p_225613_2_, p_225613_3_, p_225613_4_, true);
}
public IBakedModel func_228813_a_(ModelBakery p_228813_1_, BlockModel p_228813_2_, Function<Material, TextureAtlasSprite> p_228813_3_, IModelTransform p_228813_4_, ResourceLocation p_228813_5_, boolean p_228813_6_) {
+ return net.minecraftforge.client.model.ModelLoaderRegistry.bakeHelper(this, p_228813_1_, p_228813_2_, p_228813_3_, p_228813_4_, p_228813_5_, p_228813_6_);
+ }
+ public IBakedModel bakeVanilla(ModelBakery p_228813_1_, BlockModel p_228813_2_, Function<Material, TextureAtlasSprite> p_228813_3_, IModelTransform p_228813_4_, ResourceLocation p_228813_5_) {
+
+ @Deprecated //Forge: exposed for our callbacks only. Use the above function.
+ public IBakedModel bakeVanilla(ModelBakery p_228813_1_, BlockModel p_228813_2_, Function<Material, TextureAtlasSprite> p_228813_3_, IModelTransform p_228813_4_, ResourceLocation p_228813_5_, boolean p_228813_6_) {
TextureAtlasSprite textureatlassprite = p_228813_3_.apply(this.func_228816_c_("particle"));
if (this.func_178310_f() == ModelBakery.field_177616_r) {
return new BuiltInModel(this.func_181682_g(), this.func_217646_a(p_228813_1_, p_228813_2_), textureatlassprite);
@@ -195,6 +212,10 @@
return new BuiltInModel(this.func_181682_g(), this.func_217646_a(p_228813_1_, p_228813_2_), textureatlassprite, this.func_230176_c_().func_230178_a_());
@@ -200,6 +219,10 @@
return field_217647_g.func_228824_a_(p_228812_0_.field_178241_a, p_228812_0_.field_178239_b, p_228812_1_, p_228812_2_, p_228812_3_, p_228812_4_, p_228812_0_.field_178237_d, p_228812_0_.field_178238_e, p_228812_5_);
}
@@ -73,3 +78,11 @@
public boolean func_178300_b(String p_178300_1_) {
return !MissingTextureSprite.func_195675_b().equals(this.func_228816_c_(p_178300_1_).func_229313_b_());
}
@@ -373,5 +396,7 @@
public boolean func_230178_a_() {
return this == SIDE;
}
+
+ public String getSerializedName() { return field_230177_c_; }
}
}
@@ -1,28 +1,30 @@
--- a/net/minecraft/client/renderer/model/FaceBakery.java
+++ b/net/minecraft/client/renderer/model/FaceBakery.java
@@ -24,7 +24,7 @@
public BakedQuad func_228824_a_(Vector3f p_228824_1_, Vector3f p_228824_2_, BlockPartFace p_228824_3_, TextureAtlasSprite p_228824_4_, Direction p_228824_5_, IModelTransform p_228824_6_, @Nullable BlockPartRotation p_228824_7_, boolean p_228824_8_, ResourceLocation p_228824_9_) {
BlockFaceUV blockfaceuv = p_228824_3_.field_178243_e;
if (p_228824_6_.func_188049_c()) {
- blockfaceuv = func_228821_a_(p_228824_3_.field_178243_e, p_228824_5_, p_228824_6_.func_225615_b_(), p_228824_9_);
+ blockfaceuv = net.minecraftforge.client.ForgeHooksClient.applyUVLock(p_228824_3_.field_178243_e, p_228824_5_, p_228824_6_.func_225615_b_(), p_228824_9_);
}
float[] afloat = new float[blockfaceuv.field_178351_a.length];
@@ -43,7 +43,8 @@
@@ -36,14 +36,16 @@
blockfaceuv.field_178351_a[2] = MathHelper.func_219799_g(f, blockfaceuv.field_178351_a[2], f1);
blockfaceuv.field_178351_a[1] = MathHelper.func_219799_g(f, blockfaceuv.field_178351_a[1], f2);
blockfaceuv.field_178351_a[3] = MathHelper.func_219799_g(f, blockfaceuv.field_178351_a[3], f2);
- int[] aint = this.func_228820_a_(blockfaceuv, p_228824_4_, p_228824_5_, this.func_199337_a(p_228824_1_, p_228824_2_), p_228824_6_.func_225615_b_(), p_228824_7_, p_228824_8_);
+ // FORGE: Apply diffuse lighting at render-time instead of baking it in
+ int[] aint = this.func_228820_a_(blockfaceuv, p_228824_4_, p_228824_5_, this.func_199337_a(p_228824_1_, p_228824_2_), p_228824_6_.func_225615_b_(), p_228824_7_, false);
Direction direction = func_178410_a(aint);
System.arraycopy(afloat, 0, blockfaceuv.field_178351_a, 0, afloat.length);
if (p_228824_7_ == null) {
this.func_178408_a(aint, direction);
}
- return new BakedQuad(aint, p_228824_3_.field_178245_c, direction, p_228824_4_);
+ net.minecraftforge.client.ForgeHooksClient.fillNormal(aint, direction);
+ return new BakedQuad(aint, p_228824_3_.field_178245_c, direction, p_228824_4_, p_228824_8_, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176600_a);
+ return new BakedQuad(aint, p_228824_3_.field_178245_c, direction, p_228824_4_, p_228824_8_);
}
public static BlockFaceUV func_228821_a_(BlockFaceUV p_228821_0_, Direction p_228821_1_, TransformationMatrix p_228821_2_, ResourceLocation p_228821_3_) {
@@ -152,6 +153,8 @@
@@ -150,8 +152,8 @@
p_228826_1_[i + 1] = Float.floatToRawIntBits(p_228826_3_.func_195900_b());
p_228826_1_[i + 2] = Float.floatToRawIntBits(p_228826_3_.func_195902_c());
p_228826_1_[i + 3] = p_228826_4_;
p_228826_1_[i + 4] = Float.floatToRawIntBits(p_228826_5_.func_94214_a((double)p_228826_6_.func_178348_a(p_228826_2_)));
p_228826_1_[i + 4 + 1] = Float.floatToRawIntBits(p_228826_5_.func_94207_b((double)p_228826_6_.func_178346_b(p_228826_2_)));
- p_228826_1_[i + 4] = Float.floatToRawIntBits(p_228826_5_.func_94214_a((double)p_228826_6_.func_178348_a(p_228826_2_)));
- p_228826_1_[i + 4 + 1] = Float.floatToRawIntBits(p_228826_5_.func_94207_b((double)p_228826_6_.func_178346_b(p_228826_2_)));
+ p_228826_1_[i + 4] = Float.floatToRawIntBits(p_228826_5_.func_94214_a((double)p_228826_6_.func_178348_a(p_228826_2_) * .999 + p_228826_6_.func_178348_a((p_228826_2_ + 2) % 4) * .001));
+ p_228826_1_[i + 4 + 1] = Float.floatToRawIntBits(p_228826_5_.func_94207_b((double)p_228826_6_.func_178346_b(p_228826_2_) * .999 + p_228826_6_.func_178346_b((p_228826_2_ + 2) % 4) * .001));
}
@@ -11,7 +11,7 @@
List<BakedQuad> func_200117_a(@Nullable BlockState p_200117_1_, @Nullable Direction p_200117_2_, Random p_200117_3_);
boolean func_177555_b();
@@ -19,9 +21,12 @@
@@ -21,9 +23,12 @@
boolean func_188618_c();
@@ -0,0 +1,10 @@
--- a/net/minecraft/client/renderer/model/ItemModelGenerator.java
+++ b/net/minecraft/client/renderer/model/ItemModelGenerator.java
@@ -36,6 +36,7 @@
map.put("particle", p_209579_2_.func_178300_b("particle") ? Either.left(p_209579_2_.func_228816_c_("particle")) : map.get("layer0"));
BlockModel blockmodel = new BlockModel((ResourceLocation)null, list, map, false, p_209579_2_.func_230176_c_(), p_209579_2_.func_181682_g(), p_209579_2_.func_187966_f());
blockmodel.field_178317_b = p_209579_2_.field_178317_b;
+ blockmodel.customData.copyFrom(p_209579_2_.customData);
return blockmodel;
}
@@ -46,11 +46,11 @@
field_177603_c.warn("Unable to bake model: '{}': {}", p_229350_1_, exception);
}
@@ -447,6 +462,13 @@
@@ -443,6 +458,13 @@
this.field_217848_D.addAll(p_209593_2_.func_187965_e());
}
+ // Same as func_217843_a but without restricting to MRL's
+ // Same as loadTopModel but without restricting to MRL's
+ private void addModelToCache(ResourceLocation p_217843_1_) {
+ IUnbakedModel iunbakedmodel = this.func_209597_a(p_217843_1_);
+ this.field_217849_F.put(p_217843_1_, iunbakedmodel);
@@ -60,7 +60,7 @@
private void func_217843_a(ModelResourceLocation p_217843_1_) {
IUnbakedModel iunbakedmodel = this.func_209597_a(p_217843_1_);
this.field_217849_F.put(p_217843_1_, iunbakedmodel);
@@ -461,7 +483,13 @@
@@ -457,7 +479,13 @@
}
@Nullable
@@ -74,12 +74,12 @@
Triple<ResourceLocation, TransformationMatrix, Boolean> triple = Triple.of(p_217845_1_, p_217845_2_.func_225615_b_(), p_217845_2_.func_188049_c());
if (this.field_217850_G.containsKey(triple)) {
return this.field_217850_G.get(triple);
@@ -472,11 +500,11 @@
@@ -468,11 +496,11 @@
if (iunbakedmodel instanceof BlockModel) {
BlockModel blockmodel = (BlockModel)iunbakedmodel;
if (blockmodel.func_178310_f() == field_177606_o) {
- return field_217854_z.func_209579_a(this.field_229322_z_::func_229151_a_, blockmodel).func_228813_a_(this, blockmodel, this.field_229322_z_::func_229151_a_, p_217845_2_, p_217845_1_);
+ return field_217854_z.func_209579_a(textureGetter, blockmodel).func_228813_a_(this, blockmodel, textureGetter, p_217845_2_, p_217845_1_);
- return field_217854_z.func_209579_a(this.field_229322_z_::func_229151_a_, blockmodel).func_228813_a_(this, blockmodel, this.field_229322_z_::func_229151_a_, p_217845_2_, p_217845_1_, false);
+ return field_217854_z.func_209579_a(textureGetter, blockmodel).func_228813_a_(this, blockmodel, this.field_229322_z_::func_229151_a_, p_217845_2_, p_217845_1_, false);
}
}
@@ -88,7 +88,7 @@
this.field_217850_G.put(triple, ibakedmodel);
return ibakedmodel;
}
@@ -530,6 +558,10 @@
@@ -526,6 +554,10 @@
return this.field_225367_M;
}
@@ -99,7 +99,7 @@
@OnlyIn(Dist.CLIENT)
static class BlockStateDefinitionException extends RuntimeException {
public BlockStateDefinitionException(String p_i49526_1_) {
@@ -537,6 +569,10 @@
@@ -533,6 +565,10 @@
}
}
@@ -29,7 +29,7 @@
p_212854_2_.func_219897_b();
return modelbakery;
}
@@ -60,6 +64,7 @@
@@ -64,6 +68,7 @@
this.field_174958_a = p_212853_1_.func_217846_a();
this.field_224744_f = p_212853_1_.func_225354_b();
this.field_174955_d = this.field_174958_a.get(ModelBakery.field_177604_a);
@@ -37,15 +37,15 @@
p_212853_3_.func_219895_b("cache");
this.field_174957_c.func_178124_c();
p_212853_3_.func_76319_b();
@@ -85,6 +90,7 @@
@@ -89,6 +94,7 @@
}
public AtlasTexture func_229356_a_(ResourceLocation p_229356_1_) {
+ if (this.field_229352_b_ == null) throw new RuntimeException("func_229356_a_ called too early!");
+ if (this.field_229352_b_ == null) throw new RuntimeException("getAtlasTexture called too early!");
return this.field_229352_b_.func_229152_a_(p_229356_1_);
}
@@ -95,4 +101,10 @@
@@ -99,4 +105,10 @@
public void func_229355_a_(int p_229355_1_) {
this.field_229354_f_ = p_229355_1_;
}
@@ -1,13 +1,13 @@
--- a/net/minecraft/client/renderer/model/SimpleBakedModel.java
+++ b/net/minecraft/client/renderer/model/SimpleBakedModel.java
@@ -74,6 +74,10 @@
this(p_i46988_1_.func_178309_b(), p_i46988_1_.func_178311_c(), p_i46988_1_.func_181682_g(), p_i46988_2_);
}
@@ -77,6 +77,10 @@
private final boolean field_177653_e;
private final ItemCameraTransforms field_177651_f;
+ public Builder(net.minecraftforge.client.model.IModelConfiguration model, ItemOverrideList overrides) {
+ this(model.useSmoothLighting(), model.isShadedInGui(), model.getCameraTransforms(), overrides);
+ this(model.useSmoothLighting(), model.isShadedInGui(), model.isSideLit(), model.getCameraTransforms(), overrides);
+ }
+
private Builder(boolean p_i46990_1_, boolean p_i46990_2_, ItemCameraTransforms p_i46990_3_, ItemOverrideList p_i46990_4_) {
for(Direction direction : Direction.values()) {
this.field_177654_b.put(direction, Lists.newArrayList());
public Builder(BlockModel p_i230060_1_, ItemOverrideList p_i230060_2_, boolean p_i230060_3_) {
this(p_i230060_1_.func_178309_b(), p_i230060_1_.func_230176_c_().func_230178_a_(), p_i230060_3_, p_i230060_1_.func_181682_g(), p_i230060_2_);
}
@@ -0,0 +1,11 @@
--- a/net/minecraft/client/renderer/model/VariantList.java
+++ b/net/minecraft/client/renderer/model/VariantList.java
@@ -64,7 +64,7 @@
WeightedBakedModel.Builder weightedbakedmodel$builder = new WeightedBakedModel.Builder();
for(Variant variant : this.func_188114_a()) {
- IBakedModel ibakedmodel = p_225613_1_.func_217845_a(variant.func_188046_a(), variant);
+ IBakedModel ibakedmodel = p_225613_1_.getBakedModel(variant.func_188046_a(), variant, p_225613_2_);
weightedbakedmodel$builder.func_177677_a(ibakedmodel, variant.func_188047_d());
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/renderer/texture/NativeImage.java
+++ b/net/minecraft/client/renderer/texture/NativeImage.java
@@ -178,7 +178,7 @@
@@ -180,7 +180,7 @@
public int func_195709_a(int p_195709_1_, int p_195709_2_) {
if (this.field_211680_b != NativeImage.PixelFormat.RGBA) {
throw new IllegalArgumentException(String.format("getPixelRGBA only works on RGBA images; have %s", this.field_211680_b));
@@ -9,7 +9,7 @@
this.func_195696_g();
long i = (long)((p_195709_1_ + p_195709_2_ * this.field_195719_a) * 4);
return MemoryUtil.memGetInt(this.field_195722_d + i);
@@ -190,7 +190,7 @@
@@ -192,7 +192,7 @@
public void func_195700_a(int p_195700_1_, int p_195700_2_, int p_195700_3_) {
if (this.field_211680_b != NativeImage.PixelFormat.RGBA) {
throw new IllegalArgumentException(String.format("getPixelRGBA only works on RGBA images; have %s", this.field_211680_b));
@@ -18,7 +18,7 @@
this.func_195696_g();
long i = (long)((p_195700_1_ + p_195700_2_ * this.field_195719_a) * 4);
MemoryUtil.memPutInt(this.field_195722_d + i, p_195700_3_);
@@ -202,7 +202,7 @@
@@ -204,7 +204,7 @@
public byte func_211675_e(int p_211675_1_, int p_211675_2_) {
if (!this.field_211680_b.func_211653_r()) {
throw new IllegalArgumentException(String.format("no luminance or alpha in %s", this.field_211680_b));
@@ -27,12 +27,3 @@
int i = (p_211675_1_ + p_211675_2_ * this.field_195719_a) * this.field_211680_b.func_211651_a() + this.field_211680_b.func_211647_v() / 8;
return MemoryUtil.memGetByte(this.field_195722_d + (long)i);
} else {
@@ -336,7 +336,7 @@
}
public void func_211676_a(STBTTFontinfo p_211676_1_, int p_211676_2_, int p_211676_3_, int p_211676_4_, float p_211676_5_, float p_211676_6_, float p_211676_7_, float p_211676_8_, int p_211676_9_, int p_211676_10_) {
- if (p_211676_9_ >= 0 && p_211676_9_ + p_211676_3_ <= this.func_195702_a() && p_211676_10_ >= 0 && p_211676_10_ + p_211676_4_ <= this.func_195714_b()) {
+ if (p_211676_9_ >= 0 && p_211676_9_ + p_211676_3_ < this.func_195702_a() && p_211676_10_ >= 0 && p_211676_10_ + p_211676_4_ < this.func_195714_b()) { //Fix MC-162953 bounds checks in `NativeImage`
if (this.field_211680_b.func_211651_a() != 1) {
throw new IllegalArgumentException("Can only write fonts into 1-component images.");
} else {
@@ -1,12 +1,21 @@
--- a/net/minecraft/client/renderer/texture/Texture.java
+++ b/net/minecraft/client/renderer/texture/Texture.java
@@ -33,6 +33,11 @@
@@ -33,6 +33,20 @@
GlStateManager.func_227677_b_(3553, 10240, j);
}
+ // FORGE: This seems to have been stripped out, but we need it
+ private boolean lastBlur;
+ private boolean lastMipmap;
+
+ public void setBlurMipmap(boolean blur, boolean mipmap) {
+ this.lastBlur = this.field_174940_b;
+ this.lastMipmap = this.field_174941_c;
+ func_174937_a(blur, mipmap);
+ }
+
+ public void restoreLastBlurMipmap() {
+ func_174937_a(this.field_174940_b, this.field_174941_c);
+ func_174937_a(this.lastBlur, this.lastMipmap);
+ }
+
public int func_110552_b() {
@@ -17,14 +17,13 @@
p_195667_3_[i].func_227788_a_(i, this.field_110975_c >> i, this.field_110974_d >> i, p_195667_1_ >> i, p_195667_2_ >> i, this.field_229226_c_.field_229245_b_ >> i, this.field_229226_c_.field_229246_c_ >> i, this.field_195670_c.length > 1, false);
}
@@ -341,4 +342,10 @@
@@ -341,4 +342,9 @@
}
}
+
+
+ // Forge Start
+
+ public int getPixelRGBA(int frameIndex, int x, int y) {
+ return this.field_195670_c[frameIndex].func_195709_a(x + this.field_195671_d[frameIndex] * func_94211_a(), y + this.field_195672_e[frameIndex] * func_94216_b());
+ return this.field_195670_c[0].func_195709_a(x + this.field_195671_d[frameIndex] * func_94211_a(), y + this.field_195672_e[frameIndex] * func_94216_b());
+ }
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/renderer/texture/TextureManager.java
+++ b/net/minecraft/client/renderer/texture/TextureManager.java
@@ -140,6 +140,7 @@
@@ -145,6 +145,7 @@
public void func_147645_c(ResourceLocation p_147645_1_) {
Texture texture = this.func_229267_b_(p_147645_1_);
if (texture != null) {
@@ -0,0 +1,20 @@
--- a/net/minecraft/client/renderer/tileentity/ChestTileEntityRenderer.java
+++ b/net/minecraft/client/renderer/tileentity/ChestTileEntityRenderer.java
@@ -98,7 +98,7 @@
f1 = 1.0F - f1;
f1 = 1.0F - f1 * f1 * f1;
int i = icallbackwrapper.apply(new DualBrightnessCallback<>()).applyAsInt(p_225616_5_);
- Material material = Atlases.func_228771_a_(p_225616_1_, chesttype, this.field_147509_j);
+ Material material = this.getMaterial(p_225616_1_, chesttype);
IVertexBuilder ivertexbuilder = material.func_229311_a_(p_225616_4_, RenderType::func_228638_b_);
if (flag1) {
if (chesttype == ChestType.LEFT) {
@@ -121,4 +121,8 @@
p_228871_4_.func_228308_a_(p_228871_1_, p_228871_2_, p_228871_7_, p_228871_8_);
p_228871_5_.func_228308_a_(p_228871_1_, p_228871_2_, p_228871_7_, p_228871_8_);
}
+
+ protected Material getMaterial(T tileEntity, ChestType chestType) {
+ return Atlases.func_228771_a_(tileEntity, chestType, this.field_147509_j);
+ }
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java
+++ b/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java
@@ -141,4 +141,9 @@
@@ -134,4 +134,9 @@
public FontRenderer func_147548_a() {
return this.field_147557_n;
}
@@ -10,5 +10,5 @@
+ public boolean hasPosition() { return field_177355_b.stream().anyMatch(e -> e.func_177374_g()); }
+ public boolean hasNormal() { return field_177355_b.stream().anyMatch(e -> e.func_177375_c() == VertexFormatElement.Usage.NORMAL); }
+ public boolean hasColor() { return field_177355_b.stream().anyMatch(e -> e.func_177375_c() == VertexFormatElement.Usage.COLOR); }
+ public boolean hasUV(int which) { return field_177355_b.stream().anyMatch(e -> e.func_177375_c() == VertexFormatElement.Usage.COLOR && e.func_177369_e() == which); }
+ public boolean hasUV(int which) { return field_177355_b.stream().anyMatch(e -> e.func_177375_c() == VertexFormatElement.Usage.UV && e.func_177369_e() == which); }
}
@@ -17,7 +17,7 @@
public static void func_197981_a(InputMappings.Input p_197981_0_) {
- KeyBinding keybinding = field_74514_b.get(p_197981_0_);
+ for (KeyBinding keybinding : field_74514_b.lookupAll(p_197981_0_))
+ KeyBinding keybinding = field_74514_b.lookupActive(p_197981_0_);
if (keybinding != null) {
++keybinding.field_151474_i;
}
@@ -0,0 +1,47 @@
--- a/net/minecraft/client/shader/Framebuffer.java
+++ b/net/minecraft/client/shader/Framebuffer.java
@@ -100,8 +100,14 @@
GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, FramebufferConstants.field_227594_c_, 3553, this.field_147617_g, 0);
if (this.field_147619_e) {
GlStateManager.func_227730_i_(FramebufferConstants.field_227593_b_, this.field_147624_h);
+ if (!stencilEnabled) {
GlStateManager.func_227678_b_(FramebufferConstants.field_227593_b_, 33190, this.field_147622_a, this.field_147620_b);
GlStateManager.func_227693_c_(FramebufferConstants.field_227592_a_, FramebufferConstants.field_227595_d_, FramebufferConstants.field_227593_b_, this.field_147624_h);
+ } else {
+ GlStateManager.func_227678_b_(FramebufferConstants.field_227593_b_, org.lwjgl.opengl.EXTPackedDepthStencil.GL_DEPTH24_STENCIL8_EXT, this.field_147622_a, this.field_147620_b);
+ GlStateManager.func_227693_c_(FramebufferConstants.field_227592_a_, org.lwjgl.opengl.EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, FramebufferConstants.field_227593_b_, this.field_147624_h);
+ GlStateManager.func_227693_c_(FramebufferConstants.field_227592_a_, org.lwjgl.opengl.EXTFramebufferObject.GL_STENCIL_ATTACHMENT_EXT, FramebufferConstants.field_227593_b_, this.field_147624_h);
+ }
}
this.func_147611_b();
@@ -254,4 +260,29 @@
GlStateManager.func_227658_a_(i, p_216493_1_);
this.func_147609_e();
}
+
+ /*================================ FORGE START ================================================*/
+ private boolean stencilEnabled = false;
+ /**
+ * Attempts to enable 8 bits of stencil buffer on this FrameBuffer.
+ * Modders must call this directly to set things up.
+ * This is to prevent the default cause where graphics cards do not support stencil bits.
+ * <b>Make sure to call this on the main render thread!</b>
+ */
+ public void enableStencil()
+ {
+ if(stencilEnabled) return;
+ stencilEnabled = true;
+ this.func_216491_a(field_147621_c, field_147618_d, net.minecraft.client.Minecraft.field_142025_a);
+ }
+
+ /**
+ * Returns wither or not this FBO has been successfully initialized with stencil bits.
+ * If not, and a modder wishes it to be, they must call enableStencil.
+ */
+ public boolean isStencilEnabled()
+ {
+ return this.stencilEnabled;
+ }
+ /*================================ FORGE END ================================================*/
}
@@ -9,7 +9,15 @@
}
public Collection<Path> func_200389_a() {
@@ -53,6 +53,10 @@
@@ -38,6 +38,7 @@
for(IDataProvider idataprovider : this.field_200396_d) {
field_200393_a.info("Starting provider: {}", (Object)idataprovider.func_200397_b());
+ net.minecraftforge.fml.StartupMessageManager.addModMessage("Generating: " + idataprovider.func_200397_b());
stopwatch1.start();
idataprovider.func_200398_a(directorycache);
stopwatch1.stop();
@@ -53,6 +54,10 @@
this.field_200396_d.add(p_200390_1_);
}
@@ -222,15 +222,27 @@
}
public boolean func_70028_i(Entity p_70028_1_) {
@@ -2046,6 +2073,7 @@
@@ -2046,6 +2073,11 @@
@Nullable
public Entity func_212321_a(DimensionType p_212321_1_) {
+ return this.changeDimension(p_212321_1_, func_184102_h().func_71218_a(p_212321_1_).func_85176_s());
+ }
+ @Nullable
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
+ if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_212321_1_)) return null;
if (!this.field_70170_p.field_72995_K && !this.field_70128_L) {
this.field_70170_p.func_217381_Z().func_76320_a("changeDimension");
MinecraftServer minecraftserver = this.func_184102_h();
@@ -2063,16 +2091,9 @@
@@ -2055,6 +2087,7 @@
this.field_71093_bK = p_212321_1_;
this.func_213319_R();
this.field_70170_p.func_217381_Z().func_76320_a("reposition");
+ Entity transportedEntity = teleporter.placeEntity(this, serverworld, serverworld1, this.field_70177_z, spawnPortal -> { //Forge: Start vanilla logic
Vec3d vec3d = this.func_213322_ci();
float f = 0.0F;
BlockPos blockpos;
@@ -2063,16 +2096,9 @@
} else if (p_212321_1_ == DimensionType.field_223229_c_) {
blockpos = serverworld1.func_180504_m();
} else {
@@ -250,16 +262,41 @@
double d3 = Math.min(-2.9999872E7D, serverworld1.func_175723_af().func_177726_b() + 16.0D);
double d4 = Math.min(-2.9999872E7D, serverworld1.func_175723_af().func_177736_c() + 16.0D);
@@ -2101,7 +2122,7 @@
@@ -2082,6 +2108,7 @@
d1 = MathHelper.func_151237_a(d1, d4, d6);
Vec3d vec3d1 = this.func_181014_aG();
blockpos = new BlockPos(d0, this.func_226278_cu_(), d1);
+ if (spawnPortal) {
BlockPattern.PortalInfo blockpattern$portalinfo = serverworld1.func_85176_s().func_222272_a(blockpos, vec3d, this.func_181012_aH(), vec3d1.field_72450_a, vec3d1.field_72448_b, this instanceof PlayerEntity);
if (blockpattern$portalinfo == null) {
return null;
@@ -2090,6 +2117,7 @@
blockpos = new BlockPos(blockpattern$portalinfo.field_222505_a);
vec3d = blockpattern$portalinfo.field_222506_b;
f = (float)blockpattern$portalinfo.field_222507_c;
+ }
}
this.field_70170_p.func_217381_Z().func_219895_b("reloading");
@@ -2100,13 +2128,15 @@
entity.func_213317_d(vec3d);
serverworld1.func_217460_e(entity);
}
+ return entity;
+ });//Forge: End vanilla logic
- this.field_70128_L = true;
+ this.remove(false);
this.field_70170_p.func_217381_Z().func_76319_b();
serverworld.func_82742_i();
serverworld1.func_82742_i();
@@ -2129,10 +2150,12 @@
this.field_70170_p.func_217381_Z().func_76319_b();
- return entity;
+ return transportedEntity;
} else {
return null;
}
@@ -2129,10 +2159,12 @@
}
public Vec3d func_181014_aG() {
@@ -272,7 +309,7 @@
return this.field_181018_ap;
}
@@ -2261,7 +2284,7 @@
@@ -2261,7 +2293,7 @@
Pose pose = this.func_213283_Z();
EntitySize entitysize1 = this.func_213305_a(pose);
this.field_213325_aI = entitysize1;
@@ -281,7 +318,7 @@
if (entitysize1.field_220315_a < entitysize.field_220315_a) {
double d0 = (double)entitysize1.field_220315_a / 2.0D;
this.func_174826_a(new AxisAlignedBB(this.func_226277_ct_() - d0, this.func_226278_cu_(), this.func_226281_cx_() - d0, this.func_226277_ct_() + d0, this.func_226278_cu_() + (double)entitysize1.field_220316_b, this.func_226281_cx_() + d0));
@@ -2713,6 +2736,7 @@
@@ -2713,6 +2745,7 @@
this.field_70165_t = p_226288_1_;
this.field_70163_u = p_226288_3_;
this.field_70161_v = p_226288_5_;
@@ -289,7 +326,7 @@
}
public void func_70623_bb() {
@@ -2726,4 +2750,69 @@
@@ -2726,4 +2759,69 @@
public interface IMoveCallback {
void accept(Entity p_accept_1_, double p_accept_2_, double p_accept_4_, double p_accept_6_);
}
@@ -53,16 +53,16 @@
for(int i = 0; i < 20; ++i) {
double d0 = this.field_70146_Z.nextGaussian() * 0.02D;
@@ -571,7 +580,7 @@
Effect effect = iterator.next();
EffectInstance effectinstance = this.field_70713_bf.get(effect);
if (!effectinstance.func_76455_a(this)) {
@@ -573,7 +582,7 @@
if (!effectinstance.func_76455_a(this, () -> {
this.func_70695_b(effectinstance, true);
})) {
- if (!this.field_70170_p.field_72995_K) {
+ if (!this.field_70170_p.field_72995_K && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionExpiryEvent(this, effectinstance))) {
iterator.remove();
this.func_70688_c(effectinstance);
}
@@ -621,8 +630,10 @@
@@ -623,8 +632,10 @@
this.func_82142_c(false);
} else {
Collection<EffectInstance> collection = this.field_70713_bf.values();
@@ -75,7 +75,7 @@
this.func_82142_c(this.func_70644_a(Effects.field_76441_p));
}
@@ -686,7 +697,9 @@
@@ -688,7 +699,9 @@
boolean flag;
for(flag = false; iterator.hasNext(); flag = true) {
@@ -86,7 +86,7 @@
iterator.remove();
}
@@ -716,6 +729,7 @@
@@ -718,6 +731,7 @@
return false;
} else {
EffectInstance effectinstance = this.field_70713_bf.get(p_195064_1_.func_188419_a());
@@ -94,7 +94,7 @@
if (effectinstance == null) {
this.field_70713_bf.put(p_195064_1_.func_188419_a(), p_195064_1_);
this.func_70670_a(p_195064_1_);
@@ -730,6 +744,9 @@
@@ -732,6 +746,9 @@
}
public boolean func_70687_e(EffectInstance p_70687_1_) {
@@ -104,7 +104,7 @@
if (this.func_70668_bt() == CreatureAttribute.field_223223_b_) {
Effect effect = p_70687_1_.func_188419_a();
if (effect == Effects.field_76428_l || effect == Effects.field_76436_u) {
@@ -750,6 +767,7 @@
@@ -752,6 +769,7 @@
}
public boolean func_195063_d(Effect p_195063_1_) {
@@ -112,7 +112,7 @@
EffectInstance effectinstance = this.func_184596_c(p_195063_1_);
if (effectinstance != null) {
this.func_70688_c(effectinstance);
@@ -786,6 +804,8 @@
@@ -788,6 +806,8 @@
}
public void func_70691_i(float p_70691_1_) {
@@ -121,7 +121,7 @@
float f = this.func_110143_aJ();
if (f > 0.0F) {
this.func_70606_j(f + p_70691_1_);
@@ -802,6 +822,7 @@
@@ -804,6 +824,7 @@
}
public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_) {
@@ -129,7 +129,7 @@
if (this.func_180431_b(p_70097_1_)) {
return false;
} else if (this.field_70170_p.field_72995_K) {
@@ -868,8 +889,8 @@
@@ -870,8 +891,8 @@
if (entity1 instanceof PlayerEntity) {
this.field_70718_bc = 100;
this.field_70717_bb = (PlayerEntity)entity1;
@@ -140,15 +140,15 @@
if (wolfentity.func_70909_n()) {
this.field_70718_bc = 100;
LivingEntity livingentity = wolfentity.func_70902_q();
@@ -1051,6 +1072,7 @@
@@ -1053,6 +1074,7 @@
}
public void func_70645_a(DamageSource p_70645_1_) {
+ if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_70645_1_)) return;
if (!this.field_70729_aU) {
if (!this.field_70128_L && !this.field_70729_aU) {
Entity entity = p_70645_1_.func_76346_g();
LivingEntity livingentity = this.func_94060_bK();
@@ -1082,10 +1104,10 @@
@@ -1084,10 +1106,10 @@
if (!this.field_70170_p.field_72995_K) {
boolean flag = false;
if (p_226298_1_ instanceof WitherEntity) {
@@ -161,7 +161,7 @@
this.field_70170_p.func_180501_a(blockpos, blockstate, 3);
flag = true;
}
@@ -1102,13 +1124,10 @@
@@ -1104,13 +1126,10 @@
protected void func_213345_d(DamageSource p_213345_1_) {
Entity entity = p_213345_1_.func_76346_g();
@@ -178,7 +178,7 @@
boolean flag = this.field_70718_bc > 0;
if (this.func_146066_aG() && this.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223602_e)) {
this.func_213354_a(p_213345_1_, flag);
@@ -1117,6 +1136,10 @@
@@ -1119,6 +1138,10 @@
this.func_213337_cE();
this.func_226294_cV_();
@@ -189,7 +189,7 @@
}
protected void func_213337_cE() {
@@ -1126,6 +1149,7 @@
@@ -1128,6 +1151,7 @@
if (!this.field_70170_p.field_72995_K && (this.func_70684_aJ() || this.field_70718_bc > 0 && this.func_146066_aG() && this.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223602_e))) {
int i = this.func_70693_a(this.field_70717_bb);
@@ -197,7 +197,7 @@
while(i > 0) {
int j = ExperienceOrbEntity.func_70527_a(i);
i -= j;
@@ -1133,6 +1157,7 @@
@@ -1135,6 +1159,7 @@
}
}
@@ -205,7 +205,17 @@
}
protected void func_213333_a(DamageSource p_213333_1_, int p_213333_2_, boolean p_213333_3_) {
@@ -1159,6 +1184,9 @@
@@ -1148,7 +1173,8 @@
ResourceLocation resourcelocation = this.func_213346_cF();
LootTable loottable = this.field_70170_p.func_73046_m().func_200249_aQ().func_186521_a(resourcelocation);
LootContext.Builder lootcontext$builder = this.func_213363_a(p_213354_2_, p_213354_1_);
- loottable.func_216120_b(lootcontext$builder.func_216022_a(LootParameterSets.field_216263_d), this::func_199701_a_);
+ LootContext ctx = lootcontext$builder.func_216022_a(LootParameterSets.field_216263_d);
+ loottable.func_216113_a(ctx).forEach(this::func_199701_a_);
}
protected LootContext.Builder func_213363_a(boolean p_213363_1_, DamageSource p_213363_2_) {
@@ -1161,6 +1187,9 @@
}
public void func_70653_a(Entity p_70653_1_, float p_70653_2_, double p_70653_3_, double p_70653_5_) {
@@ -215,7 +225,7 @@
if (!(this.field_70146_Z.nextDouble() < this.func_110148_a(SharedMonsterAttributes.field_111266_c).func_111126_e())) {
this.field_70160_al = true;
Vec3d vec3d = this.func_213322_ci();
@@ -1194,12 +1222,7 @@
@@ -1196,12 +1225,7 @@
return false;
} else {
BlockState blockstate = this.func_213339_cH();
@@ -229,7 +239,7 @@
}
}
@@ -1223,6 +1246,11 @@
@@ -1225,6 +1249,11 @@
}
public boolean func_225503_b_(float p_225503_1_, float p_225503_2_) {
@@ -241,7 +251,7 @@
boolean flag = super.func_225503_b_(p_225503_1_, p_225503_2_);
int i = this.func_225508_e_(p_225503_1_, p_225503_2_);
if (i > 0) {
@@ -1246,9 +1274,10 @@
@@ -1248,9 +1277,10 @@
int i = MathHelper.func_76128_c(this.func_226277_ct_());
int j = MathHelper.func_76128_c(this.func_226278_cu_() - (double)0.2F);
int k = MathHelper.func_76128_c(this.func_226281_cx_());
@@ -255,7 +265,7 @@
this.func_184185_a(soundtype.func_185842_g(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
}
@@ -1317,6 +1346,8 @@
@@ -1319,6 +1349,8 @@
protected void func_70665_d(DamageSource p_70665_1_, float p_70665_2_) {
if (!this.func_180431_b(p_70665_1_)) {
@@ -264,7 +274,7 @@
p_70665_2_ = this.func_70655_b(p_70665_1_, p_70665_2_);
p_70665_2_ = this.func_70672_c(p_70665_1_, p_70665_2_);
float f2 = Math.max(p_70665_2_ - this.func_110139_bj(), 0.0F);
@@ -1326,10 +1357,11 @@
@@ -1328,10 +1360,11 @@
((ServerPlayerEntity)p_70665_1_.func_76346_g()).func_195067_a(Stats.field_212735_F, Math.round(f * 10.0F));
}
@@ -277,7 +287,7 @@
this.func_110149_m(this.func_110139_bj() - f2);
}
}
@@ -1383,6 +1415,8 @@
@@ -1385,6 +1418,8 @@
}
public void func_226292_a_(Hand p_226292_1_, boolean p_226292_2_) {
@@ -286,7 +296,7 @@
if (!this.field_82175_bq || this.field_110158_av >= this.func_82166_i() / 2 || this.field_110158_av < 0) {
this.field_110158_av = -1;
this.field_82175_bq = true;
@@ -1769,15 +1803,16 @@
@@ -1771,15 +1806,16 @@
}
this.field_70160_al = true;
@@ -305,7 +315,7 @@
}
protected float func_189749_co() {
@@ -1787,11 +1822,15 @@
@@ -1789,11 +1825,15 @@
public void func_213352_e(Vec3d p_213352_1_) {
if (this.func_70613_aW() || this.func_184186_bw()) {
double d0 = 0.08D;
@@ -322,7 +332,7 @@
if (!this.func_70090_H() || this instanceof PlayerEntity && ((PlayerEntity)this).field_71075_bZ.field_75100_b) {
if (!this.func_180799_ab() || this instanceof PlayerEntity && ((PlayerEntity)this).field_71075_bZ.field_75100_b) {
@@ -1840,7 +1879,7 @@
@@ -1842,7 +1882,7 @@
}
} else {
BlockPos blockpos = this.func_226270_aj_();
@@ -331,7 +341,7 @@
float f7 = this.field_70122_E ? f5 * 0.91F : 0.91F;
this.func_213309_a(this.func_213335_r(f5), p_213352_1_);
this.func_213317_d(this.func_213362_f(this.func_213322_ci()));
@@ -1902,6 +1941,7 @@
@@ -1904,6 +1944,7 @@
f = 0.96F;
}
@@ -339,7 +349,7 @@
this.func_213309_a(f1, p_213352_1_);
this.func_213315_a(MoverType.SELF, this.func_213322_ci());
Vec3d vec3d1 = this.func_213322_ci();
@@ -1977,6 +2017,7 @@
@@ -1979,6 +2020,7 @@
}
public void func_70071_h_() {
@@ -347,7 +357,7 @@
super.func_70071_h_();
this.func_184608_ct();
this.func_205014_p();
@@ -2020,7 +2061,9 @@
@@ -2022,7 +2064,9 @@
ItemStack itemstack1 = this.func_184582_a(equipmentslottype);
if (!ItemStack.func_77989_b(itemstack1, itemstack)) {
@@ -357,7 +367,7 @@
if (!itemstack.func_190926_b()) {
this.func_110140_aT().func_111148_a(itemstack.func_111283_C(equipmentslottype));
}
@@ -2472,13 +2515,22 @@
@@ -2474,13 +2518,22 @@
private void func_184608_ct() {
if (this.func_184587_cr()) {
@@ -382,7 +392,7 @@
this.func_71036_o();
}
} else {
@@ -2520,8 +2572,10 @@
@@ -2522,8 +2575,10 @@
public void func_184598_c(Hand p_184598_1_) {
ItemStack itemstack = this.func_184586_b(p_184598_1_);
if (!itemstack.func_190926_b() && !this.func_184587_cr()) {
@@ -394,7 +404,7 @@
if (!this.field_70170_p.field_72995_K) {
this.func_204802_c(1, true);
this.func_204802_c(2, p_184598_1_ == Hand.OFF_HAND);
@@ -2581,6 +2635,9 @@
@@ -2583,6 +2638,9 @@
vec3d1 = vec3d1.func_178789_a(-this.field_70125_A * ((float)Math.PI / 180F));
vec3d1 = vec3d1.func_178785_b(-this.field_70177_z * ((float)Math.PI / 180F));
vec3d1 = vec3d1.func_72441_c(this.func_226277_ct_(), this.func_226280_cw_(), this.func_226281_cx_());
@@ -404,7 +414,7 @@
this.field_70170_p.func_195594_a(new ItemParticleData(ParticleTypes.field_197591_B, p_195062_1_), vec3d1.field_72450_a, vec3d1.field_72448_b, vec3d1.field_72449_c, vec3d.field_72450_a, vec3d.field_72448_b + 0.05D, vec3d.field_72449_c);
}
@@ -2592,7 +2649,9 @@
@@ -2594,7 +2652,9 @@
} else {
if (!this.field_184627_bm.func_190926_b() && this.func_184587_cr()) {
this.func_226293_b_(this.field_184627_bm, 16);
@@ -415,7 +425,7 @@
this.func_184602_cy();
}
@@ -2613,7 +2672,11 @@
@@ -2615,7 +2675,11 @@
public void func_184597_cx() {
if (!this.field_184627_bm.func_190926_b()) {
@@ -427,7 +437,7 @@
if (this.field_184627_bm.func_222122_m()) {
this.func_184608_ct();
}
@@ -2770,16 +2833,16 @@
@@ -2772,16 +2836,16 @@
private boolean func_213359_p() {
return this.func_213374_dv().map((p_213347_1_) -> {
@@ -448,7 +458,7 @@
BlockPos blockpos = p_213368_1_.func_177984_a();
return new Vec3d((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.1D, (double)blockpos.func_177952_p() + 0.5D);
});
@@ -2795,7 +2858,9 @@
@@ -2797,7 +2861,9 @@
@OnlyIn(Dist.CLIENT)
public Direction func_213376_dz() {
BlockPos blockpos = this.func_213374_dv().orElse((BlockPos)null);
@@ -459,7 +469,7 @@
}
public boolean func_70094_T() {
@@ -2864,4 +2929,58 @@
@@ -2866,4 +2932,58 @@
public void func_213334_d(Hand p_213334_1_) {
this.func_213361_c(p_213334_1_ == Hand.MAIN_HAND ? EquipmentSlotType.MAINHAND : EquipmentSlotType.OFFHAND);
}
@@ -22,3 +22,17 @@
}
} else if (livingentity != null) {
livingentity.func_70634_a(this.func_226277_ct_(), this.func_226278_cu_(), this.func_226281_cx_());
@@ -121,11 +124,11 @@
}
@Nullable
- public Entity func_212321_a(DimensionType p_212321_1_) {
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
if (this.field_70192_c.field_71093_bK != p_212321_1_) {
this.field_70192_c = null;
}
- return super.func_212321_a(p_212321_1_);
+ return super.changeDimension(p_212321_1_, teleporter);
}
}
@@ -1,6 +1,6 @@
--- a/net/minecraft/entity/item/FallingBlockEntity.java
+++ b/net/minecraft/entity/item/FallingBlockEntity.java
@@ -152,7 +152,7 @@
@@ -153,7 +153,7 @@
((FallingBlock)block).func_176502_a_(this.field_70170_p, blockpos1, this.field_175132_d, blockstate);
}
@@ -109,6 +109,17 @@
this.func_70106_y();
itemstack.func_190920_e(i);
}
@@ -300,8 +328,8 @@
}
@Nullable
- public Entity func_212321_a(DimensionType p_212321_1_) {
- Entity entity = super.func_212321_a(p_212321_1_);
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
+ Entity entity = super.changeDimension(p_212321_1_, teleporter);
if (!this.field_70170_p.field_72995_K && entity instanceof ItemEntity) {
((ItemEntity)entity).func_85054_d();
}
@@ -366,7 +394,7 @@
public void func_174870_v() {
@@ -31,15 +31,18 @@
}
public double func_70042_X() {
@@ -239,7 +241,7 @@
@@ -239,9 +241,9 @@
BlockPos blockpos = new BlockPos(i, j, k);
BlockState blockstate = this.field_70170_p.func_180495_p(blockpos);
- if (blockstate.func_203425_a(BlockTags.field_203437_y)) {
+ if (canUseRail() && blockstate.func_203425_a(BlockTags.field_203437_y)) {
this.func_180460_a(blockpos, blockstate);
if (blockstate.func_177230_c() == Blocks.field_150408_cc) {
- if (blockstate.func_177230_c() == Blocks.field_150408_cc) {
+ if (blockstate.func_177230_c() instanceof PoweredRailBlock && ((PoweredRailBlock) blockstate.func_177230_c()).isActivatorRail()) {
this.func_96095_a(i, j, k, blockstate.func_177229_b(PoweredRailBlock.field_176569_M));
}
} else {
@@ -266,8 +268,11 @@
}
@@ -98,7 +101,13 @@
}
}
@@ -327,24 +341,23 @@
@@ -322,29 +336,28 @@
boolean flag = false;
boolean flag1 = false;
AbstractRailBlock abstractrailblock = (AbstractRailBlock)p_180460_2_.func_177230_c();
- if (abstractrailblock == Blocks.field_196552_aC) {
+ if (abstractrailblock instanceof PoweredRailBlock && !((PoweredRailBlock) abstractrailblock).isActivatorRail()) {
flag = p_180460_2_.func_177229_b(PoweredRailBlock.field_176569_M);
flag1 = !flag;
}
@@ -238,7 +247,7 @@
+ public void moveMinecartOnRail(BlockPos pos) { //Non-default because getMaximumSpeed is protected
+ AbstractMinecartEntity mc = getMinecart();
+ double d24 = mc.func_184207_aI() ? 0.75D : 1.0D;
+ double d25 = mc.func_174898_m();
+ double d25 = mc.getMaxSpeedWithRail();
+ Vec3d vec3d1 = mc.func_213322_ci();
+ mc.func_213315_a(MoverType.SELF, new Vec3d(MathHelper.func_151237_a(d24 * vec3d1.field_72450_a, -d25, d25), 0.0D, MathHelper.func_151237_a(d24 * vec3d1.field_72449_c, -d25, d25)));
+ }
@@ -1,7 +1,14 @@
--- a/net/minecraft/entity/item/minecart/ContainerMinecartEntity.java
+++ b/net/minecraft/entity/item/minecart/ContainerMinecartEntity.java
@@ -115,12 +115,14 @@
return super.func_212321_a(p_212321_1_);
@@ -110,17 +110,19 @@
}
@Nullable
- public Entity func_212321_a(DimensionType p_212321_1_) {
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
this.field_94112_b = false;
- return super.func_212321_a(p_212321_1_);
+ return super.changeDimension(p_212321_1_, teleporter);
}
- public void func_70106_y() {
@@ -1,6 +1,6 @@
--- a/net/minecraft/entity/item/minecart/FurnaceMinecartEntity.java
+++ b/net/minecraft/entity/item/minecart/FurnaceMinecartEntity.java
@@ -114,6 +114,7 @@
@@ -110,6 +110,7 @@
}
public boolean func_184230_a(PlayerEntity p_184230_1_, Hand p_184230_2_) {
@@ -0,0 +1,14 @@
--- a/net/minecraft/entity/merchant/villager/AbstractVillagerEntity.java
+++ b/net/minecraft/entity/merchant/villager/AbstractVillagerEntity.java
@@ -179,9 +179,9 @@
}
@Nullable
- public Entity func_212321_a(DimensionType p_212321_1_) {
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
this.func_213750_eg();
- return super.func_212321_a(p_212321_1_);
+ return super.changeDimension(p_212321_1_, teleporter);
}
protected void func_213750_eg() {
@@ -9,7 +9,7 @@
if (this.func_70631_g_()) {
this.func_213756_es();
return super.func_184645_a(p_184645_1_, p_184645_2_);
@@ -604,7 +604,8 @@
@@ -607,7 +607,8 @@
}
protected ITextComponent func_225513_by_() {
@@ -0,0 +1,11 @@
--- a/net/minecraft/entity/passive/BeeEntity.java
+++ b/net/minecraft/entity/passive/BeeEntity.java
@@ -438,7 +438,7 @@
return false;
} else {
TileEntity tileentity = this.field_70170_p.func_175625_s(this.field_226369_bI_);
- return tileentity != null && tileentity.func_200662_C() == TileEntityType.field_226985_G_;
+ return tileentity instanceof BeehiveTileEntity;
}
}
@@ -304,16 +304,15 @@
this.func_226560_a_(p_213819_1_, false, true);
return Either.left(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW);
}
@@ -1274,6 +1341,8 @@
@@ -1273,6 +1340,7 @@
}
private boolean func_190774_a(BlockPos p_190774_1_, Direction p_190774_2_) {
if (Math.abs(this.func_226277_ct_() - (double)p_190774_1_.func_177958_n()) <= 3.0D && Math.abs(this.func_226278_cu_() - (double)p_190774_1_.func_177956_o()) <= 2.0D && Math.abs(this.func_226281_cx_() - (double)p_190774_1_.func_177952_p()) <= 3.0D) {
return true;
+ } else if (p_190774_2_ == null) {
+ return false;
} else {
BlockPos blockpos = p_190774_1_.func_177972_a(p_190774_2_.func_176734_d());
return Math.abs(this.func_226277_ct_() - (double)blockpos.func_177958_n()) <= 3.0D && Math.abs(this.func_226278_cu_() - (double)blockpos.func_177956_o()) <= 2.0D && Math.abs(this.func_226281_cx_() - (double)blockpos.func_177952_p()) <= 3.0D;
@@ -1286,6 +1355,7 @@
+ if (p_190774_2_ == null) return false;
return this.func_230126_g_(p_190774_1_) || this.func_230126_g_(p_190774_1_.func_177972_a(p_190774_2_.func_176734_d()));
}
@@ -1287,6 +1355,7 @@
}
public void func_225652_a_(boolean p_225652_1_, boolean p_225652_2_) {
@@ -321,7 +320,7 @@
super.func_213366_dy();
if (this.field_70170_p instanceof ServerWorld && p_225652_2_) {
((ServerWorld)this.field_70170_p).func_72854_c();
@@ -1299,17 +1369,17 @@
@@ -1300,17 +1369,17 @@
}
public static Optional<Vec3d> func_213822_a(IWorldReader p_213822_0_, BlockPos p_213822_1_, boolean p_213822_2_) {
@@ -343,7 +342,7 @@
}
}
@@ -1324,15 +1394,62 @@
@@ -1325,15 +1394,62 @@
public void func_146105_b(ITextComponent p_146105_1_, boolean p_146105_2_) {
}
@@ -408,7 +407,7 @@
if (p_226560_1_ != null) {
if (p_226560_3_ && !p_226560_1_.equals(this.field_71077_c)) {
this.func_145747_a(new TranslationTextComponent("block.minecraft.bed.set_spawn"));
@@ -1505,6 +1622,7 @@
@@ -1506,6 +1622,7 @@
public boolean func_225503_b_(float p_225503_1_, float p_225503_2_) {
if (this.field_71075_bZ.field_75101_c) {
@@ -416,7 +415,7 @@
return false;
} else {
if (p_225503_1_ >= 2.0F) {
@@ -1559,6 +1677,10 @@
@@ -1560,6 +1677,10 @@
}
public void func_195068_e(int p_195068_1_) {
@@ -427,7 +426,16 @@
this.func_85039_t(p_195068_1_);
this.field_71106_cc += (float)p_195068_1_ / (float)this.func_71050_bK();
this.field_71067_cb = MathHelper.func_76125_a(this.field_71067_cb + p_195068_1_, 0, Integer.MAX_VALUE);
@@ -1598,6 +1720,10 @@
@@ -1588,7 +1709,7 @@
}
public void func_192024_a(ItemStack p_192024_1_, int p_192024_2_) {
- this.field_71068_ca -= p_192024_2_;
+ func_82242_a(-p_192024_2_);
if (this.field_71068_ca < 0) {
this.field_71068_ca = 0;
this.field_71106_cc = 0.0F;
@@ -1599,6 +1720,10 @@
}
public void func_82242_a(int p_82242_1_) {
@@ -438,7 +446,7 @@
this.field_71068_ca += p_82242_1_;
if (this.field_71068_ca < 0) {
this.field_71068_ca = 0;
@@ -1788,7 +1914,10 @@
@@ -1789,7 +1914,10 @@
}
public ITextComponent func_145748_c_() {
@@ -450,7 +458,7 @@
return this.func_208016_c(itextcomponent);
}
@@ -2028,4 +2157,45 @@
@@ -2029,4 +2157,45 @@
return this.field_221260_g;
}
}
@@ -8,18 +8,26 @@
boolean flag = this.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223609_l);
if (flag) {
ITextComponent itextcomponent = this.func_110142_aN().func_151521_b();
@@ -550,8 +551,10 @@
@@ -550,13 +551,15 @@
return this.field_71133_b.func_71219_W();
}
+ @Override
@Nullable
public Entity func_212321_a(DimensionType p_212321_1_) {
- public Entity func_212321_a(DimensionType p_212321_1_) {
+ public Entity changeDimension(DimensionType p_212321_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
+ if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_212321_1_)) return null;
this.field_184851_cj = true;
DimensionType dimensiontype = this.field_71093_bK;
if (dimensiontype == DimensionType.field_223229_c_ && p_212321_1_ == DimensionType.field_223227_a_) {
@@ -569,12 +572,13 @@
- if (dimensiontype == DimensionType.field_223229_c_ && p_212321_1_ == DimensionType.field_223227_a_) {
+ if (dimensiontype == DimensionType.field_223229_c_ && p_212321_1_ == DimensionType.field_223227_a_ && teleporter instanceof net.minecraft.world.Teleporter) { //Forge: Fix non-vanilla teleporters triggering end credits
this.func_213319_R();
- this.func_71121_q().func_217434_e(this);
+ this.func_71121_q().removePlayer(this, true); //Forge: The player entity is cloned so keep the data until after cloning calls copyFrom
if (!this.field_71136_j) {
this.field_71136_j = true;
this.field_71135_a.func_147359_a(new SChangeGameStatePacket(4, this.field_192040_cp ? 0.0F : 1.0F));
@@ -569,12 +572,14 @@
this.field_71093_bK = p_212321_1_;
ServerWorld serverworld1 = this.field_71133_b.func_71218_a(p_212321_1_);
WorldInfo worldinfo = serverworld1.func_72912_H();
@@ -32,10 +40,11 @@
- this.field_70128_L = false;
+ serverworld.removeEntity(this, true); //Forge: the player entity is moved to the new world, NOT cloned. So keep the data alive with no matching invalidate call.
+ this.revive();
+ Entity e = teleporter.placeEntity(this, serverworld, serverworld1, this.field_70177_z, spawnPortal -> {//Forge: Start vanilla logic
double d0 = this.func_226277_ct_();
double d1 = this.func_226278_cu_();
double d2 = this.func_226281_cx_();
@@ -583,13 +587,11 @@
@@ -583,13 +588,11 @@
double d3 = 8.0D;
float f2 = f1;
serverworld.func_217381_Z().func_76320_a("moving");
@@ -52,7 +61,26 @@
} else if (dimensiontype == DimensionType.field_223227_a_ && p_212321_1_ == DimensionType.field_223229_c_) {
BlockPos blockpos = serverworld1.func_180504_m();
d0 = (double)blockpos.func_177958_n();
@@ -653,6 +655,7 @@
@@ -630,7 +633,7 @@
this.func_70012_b((double)i, (double)j, (double)k, f1, 0.0F);
this.func_213317_d(Vec3d.field_186680_a);
- } else if (!serverworld1.func_85176_s().func_222268_a(this, f2)) {
+ } else if (spawnPortal && !serverworld1.func_85176_s().func_222268_a(this, f2)) {
serverworld1.func_85176_s().func_85188_a(this);
serverworld1.func_85176_s().func_222268_a(this, f2);
}
@@ -640,6 +643,9 @@
serverworld1.func_217447_b(this);
this.func_213846_b(serverworld);
this.field_71135_a.func_147364_a(this.func_226277_ct_(), this.func_226278_cu_(), this.func_226281_cx_(), f1, f);
+ return this;//forge: this is part of the ITeleporter patch
+ });//Forge: End vanilla logic
+ if (e != this) throw new java.lang.IllegalArgumentException(String.format("Teleporter %s returned not the player entity but instead %s, expected PlayerEntity %s", teleporter, e, this));
this.field_71134_c.func_73080_a(serverworld1);
this.field_71135_a.func_147359_a(new SPlayerAbilitiesPacket(this.field_71075_bZ));
playerlist.func_72354_b(this, serverworld1);
@@ -653,6 +659,7 @@
this.field_71144_ck = -1;
this.field_71149_ch = -1.0F;
this.field_71146_ci = -1;
@@ -60,7 +88,7 @@
return this;
}
}
@@ -788,6 +791,7 @@
@@ -788,6 +795,7 @@
this.field_71135_a.func_147359_a(new SOpenWindowPacket(container.field_75152_c, container.func_216957_a(), p_213829_1_.func_145748_c_()));
container.func_75132_a(this);
this.field_71070_bA = container;
@@ -68,7 +96,7 @@
return OptionalInt.of(this.field_71139_cq);
}
}
@@ -806,6 +810,7 @@
@@ -806,6 +814,7 @@
this.field_71135_a.func_147359_a(new SOpenHorseWindowPacket(this.field_71139_cq, p_184826_2_.func_70302_i_(), p_184826_1_.func_145782_y()));
this.field_71070_bA = new HorseInventoryContainer(this.field_71139_cq, this.field_71071_by, p_184826_2_, p_184826_1_);
this.field_71070_bA.func_75132_a(this);
@@ -76,7 +104,7 @@
}
public void func_184814_a(ItemStack p_184814_1_, Hand p_184814_2_) {
@@ -863,6 +868,7 @@
@@ -863,6 +872,7 @@
public void func_71128_l() {
this.field_71070_bA.func_75134_a(this);
@@ -84,7 +112,7 @@
this.field_71070_bA = this.field_71069_bz;
}
@@ -989,6 +995,20 @@
@@ -989,6 +999,20 @@
this.field_193110_cw = p_193104_1_.field_193110_cw;
this.func_192029_h(p_193104_1_.func_192023_dk());
this.func_192031_i(p_193104_1_.func_192025_dl());
@@ -105,12 +133,13 @@
}
protected void func_70670_a(EffectInstance p_70670_1_) {
@@ -1207,15 +1227,16 @@
@@ -1207,15 +1231,17 @@
this.func_184210_p();
if (p_200619_1_ == this.field_70170_p) {
this.field_71135_a.func_147364_a(p_200619_2_, p_200619_4_, p_200619_6_, p_200619_8_, p_200619_9_);
- } else {
+ } else if (net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_200619_1_.field_73011_w.func_186058_p())) {
+ DimensionType oldDimension = this.field_71093_bK;
ServerWorld serverworld = this.func_71121_q();
this.field_71093_bK = p_200619_1_.field_73011_w.func_186058_p();
WorldInfo worldinfo = p_200619_1_.func_72912_H();
@@ -125,15 +154,15 @@
this.func_70012_b(p_200619_2_, p_200619_4_, p_200619_6_, p_200619_8_, p_200619_9_);
this.func_70029_a(p_200619_1_);
p_200619_1_.func_217446_a(this);
@@ -1224,6 +1245,7 @@
@@ -1224,6 +1250,7 @@
this.field_71134_c.func_73080_a(p_200619_1_);
this.field_71133_b.func_184103_al().func_72354_b(this, p_200619_1_);
this.field_71133_b.func_184103_al().func_72385_f(this);
+ net.minecraftforge.fml.hooks.BasicEventHooks.firePlayerChangedDimensionEvent(this, p_200619_1_.field_73011_w.func_186058_p(), this.field_71093_bK);
+ net.minecraftforge.fml.hooks.BasicEventHooks.firePlayerChangedDimensionEvent(this, oldDimension, this.field_71093_bK);
}
}
@@ -1261,6 +1283,8 @@
@@ -1261,6 +1288,8 @@
if (itementity == null) {
return null;
} else {
@@ -1,11 +0,0 @@
--- a/net/minecraft/entity/projectile/ArrowEntity.java
+++ b/net/minecraft/entity/projectile/ArrowEntity.java
@@ -59,7 +59,7 @@
} else if (p_184555_1_.func_77973_b() == Items.field_151032_g) {
this.field_184560_g = Potions.field_185229_a;
this.field_184561_h.clear();
- this.field_70180_af.func_187227_b(field_184559_f, -1);
+ this.func_191507_d(-1); // Forge: fix MC-107941
}
}
@@ -41,7 +41,35 @@
ItemStack itemstack1 = this.func_150910_a(itemstack, p_77659_2_, fluid.func_204524_b());
if (!p_77659_1_.field_72995_K) {
CriteriaTriggers.field_204813_j.func_204817_a((ServerPlayerEntity)p_77659_2_, new ItemStack(fluid.func_204524_b()));
@@ -148,7 +165,19 @@
@@ -67,7 +84,7 @@
return ActionResult.func_226251_d_(itemstack);
} else {
BlockState blockstate = p_77659_1_.func_180495_p(blockpos);
- BlockPos blockpos2 = blockstate.func_177230_c() instanceof ILiquidContainer && this.field_77876_a == Fluids.field_204546_a ? blockpos : blockpos1;
+ BlockPos blockpos2 = canBlockContainFluid(p_77659_1_, blockpos, blockstate) ? blockpos : blockpos1;
if (this.func_180616_a(p_77659_2_, p_77659_1_, blockpos2, blockraytraceresult)) {
this.func_203792_a(p_77659_1_, itemstack, blockpos2);
if (p_77659_2_ instanceof ServerPlayerEntity) {
@@ -117,7 +134,8 @@
BlockState blockstate = p_180616_2_.func_180495_p(p_180616_3_);
Material material = blockstate.func_185904_a();
boolean flag = blockstate.func_227032_a_(this.field_77876_a);
- if (blockstate.func_196958_f() || flag || blockstate.func_177230_c() instanceof ILiquidContainer && ((ILiquidContainer)blockstate.func_177230_c()).func_204510_a(p_180616_2_, p_180616_3_, blockstate, this.field_77876_a)) {
+ boolean canContainFluid = canBlockContainFluid(p_180616_2_, p_180616_3_, blockstate);
+ if (blockstate.func_196958_f() || flag || canContainFluid) {
if (p_180616_2_.field_73011_w.func_177500_n() && this.field_77876_a.func_207185_a(FluidTags.field_206959_a)) {
int i = p_180616_3_.func_177958_n();
int j = p_180616_3_.func_177956_o();
@@ -127,7 +145,7 @@
for(int l = 0; l < 8; ++l) {
p_180616_2_.func_195594_a(ParticleTypes.field_197594_E, (double)i + Math.random(), (double)j + Math.random(), (double)k + Math.random(), 0.0D, 0.0D, 0.0D);
}
- } else if (blockstate.func_177230_c() instanceof ILiquidContainer && this.field_77876_a == Fluids.field_204546_a) {
+ } else if (canContainFluid) {
if (((ILiquidContainer)blockstate.func_177230_c()).func_204509_a(p_180616_2_, p_180616_3_, blockstate, ((FlowingFluid)this.field_77876_a).func_207204_a(false))) {
this.func_203791_b(p_180616_1_, p_180616_2_, p_180616_3_);
}
@@ -148,7 +166,24 @@
}
protected void func_203791_b(@Nullable PlayerEntity p_203791_1_, IWorld p_203791_2_, BlockPos p_203791_3_) {
@@ -61,4 +89,9 @@
+
+ private final java.util.function.Supplier<? extends Fluid> fluidSupplier;
+ public Fluid getFluid() { return fluidSupplier.get(); }
+
+ private boolean canBlockContainFluid(World worldIn, BlockPos posIn, BlockState blockstate)
+ {
+ return blockstate.func_177230_c() instanceof ILiquidContainer && ((ILiquidContainer)blockstate.func_177230_c()).func_204510_a(worldIn, posIn, blockstate, this.field_77876_a);
+ }
}
@@ -0,0 +1,32 @@
--- a/net/minecraft/item/FishBucketItem.java
+++ b/net/minecraft/item/FishBucketItem.java
@@ -25,11 +25,19 @@
public class FishBucketItem extends BucketItem {
private final EntityType<?> field_203794_a;
+ @Deprecated
public FishBucketItem(EntityType<?> p_i49022_1_, Fluid p_i49022_2_, Item.Properties p_i49022_3_) {
super(p_i49022_2_, p_i49022_3_);
this.field_203794_a = p_i49022_1_;
+ this.fishTypeSupplier = () -> p_i49022_1_;
}
+ public FishBucketItem(java.util.function.Supplier<? extends EntityType<?>> fishTypeIn, java.util.function.Supplier<? extends Fluid> p_i49022_2_, Item.Properties builder) {
+ super(p_i49022_2_, builder);
+ this.field_203794_a = null;
+ this.fishTypeSupplier = fishTypeIn;
+ }
+
public void func_203792_a(World p_203792_1_, ItemStack p_203792_2_, BlockPos p_203792_3_) {
if (!p_203792_1_.field_72995_K) {
this.func_205357_b(p_203792_1_, p_203792_2_, p_203792_3_);
@@ -78,4 +86,9 @@
}
}
+
+ private final java.util.function.Supplier<? extends EntityType<?>> fishTypeSupplier;
+ protected EntityType<?> getFishType() {
+ return fishTypeSupplier.get();
+ }
}
@@ -0,0 +1,12 @@
--- a/net/minecraft/item/FlintAndSteelItem.java
+++ b/net/minecraft/item/FlintAndSteelItem.java
@@ -65,7 +65,8 @@
boolean flag = false;
for(Direction direction : Direction.Plane.HORIZONTAL) {
- if (p_219996_1_.func_180495_p(p_219996_2_.func_177972_a(direction)).func_177230_c() == Blocks.field_150343_Z && ((NetherPortalBlock)Blocks.field_150427_aO).func_201816_b(p_219996_1_, p_219996_2_) != null) {
+ BlockPos framePos = p_219996_2_.func_177972_a(direction);
+ if (p_219996_1_.func_180495_p(framePos).isPortalFrame(p_219996_1_, framePos) && ((NetherPortalBlock)Blocks.field_150427_aO).func_201816_b(p_219996_1_, p_219996_2_) != null) {
flag = true;
}
}
@@ -0,0 +1,73 @@
--- a/net/minecraft/item/Food.java
+++ b/net/minecraft/item/Food.java
@@ -11,15 +11,26 @@
private final boolean field_221472_c;
private final boolean field_221473_d;
private final boolean field_221474_e;
- private final List<Pair<EffectInstance, Float>> field_221475_f;
+ private final List<Pair<java.util.function.Supplier<EffectInstance>, Float>> field_221475_f;
+
+ private Food(Food.Builder builder) {
+ this.field_221470_a = builder.field_221458_a;
+ this.field_221471_b = builder.field_221459_b;
+ this.field_221472_c = builder.field_221460_c;
+ this.field_221473_d = builder.field_221461_d;
+ this.field_221474_e = builder.field_221462_e;
+ this.field_221475_f = builder.field_221463_f;
+ }
+ // Forge: Use builder method instead
+ @Deprecated
private Food(int p_i50106_1_, float p_i50106_2_, boolean p_i50106_3_, boolean p_i50106_4_, boolean p_i50106_5_, List<Pair<EffectInstance, Float>> p_i50106_6_) {
this.field_221470_a = p_i50106_1_;
this.field_221471_b = p_i50106_2_;
this.field_221472_c = p_i50106_3_;
this.field_221473_d = p_i50106_4_;
this.field_221474_e = p_i50106_5_;
- this.field_221475_f = p_i50106_6_;
+ this.field_221475_f = p_i50106_6_.stream().map(pair -> Pair.<java.util.function.Supplier<EffectInstance>, Float>of(pair::getLeft, pair.getRight())).collect(java.util.stream.Collectors.toList());
}
public int func_221466_a() {
@@ -43,7 +54,7 @@
}
public List<Pair<EffectInstance, Float>> func_221464_f() {
- return this.field_221475_f;
+ return this.field_221475_f.stream().map(pair -> Pair.of(pair.getLeft() != null ? pair.getLeft().get() : null, pair.getRight())).collect(java.util.stream.Collectors.toList());
}
public static class Builder {
@@ -52,7 +63,7 @@
private boolean field_221460_c;
private boolean field_221461_d;
private boolean field_221462_e;
- private final List<Pair<EffectInstance, Float>> field_221463_f = Lists.newArrayList();
+ private final List<Pair<java.util.function.Supplier<EffectInstance>, Float>> field_221463_f = Lists.newArrayList();
public Food.Builder func_221456_a(int p_221456_1_) {
this.field_221458_a = p_221456_1_;
@@ -78,14 +89,21 @@
this.field_221462_e = true;
return this;
}
+
+ public Food.Builder effect(java.util.function.Supplier<EffectInstance> effectIn, float probability) {
+ this.field_221463_f.add(Pair.of(effectIn, probability));
+ return this;
+ }
+ // Forge: Use supplier method instead
+ @Deprecated
public Food.Builder func_221452_a(EffectInstance p_221452_1_, float p_221452_2_) {
- this.field_221463_f.add(Pair.of(p_221452_1_, p_221452_2_));
+ this.field_221463_f.add(Pair.of(() -> p_221452_1_, p_221452_2_));
return this;
}
public Food func_221453_d() {
- return new Food(this.field_221458_a, this.field_221459_b, this.field_221460_c, this.field_221461_d, this.field_221462_e, this.field_221463_f);
+ return new Food(this);
}
}
}
@@ -17,8 +17,8 @@
}
+ this.canRepair = p_i48487_1_.canRepair;
+ this.toolClasses.putAll(p_i48487_1_.toolClasses);
+ Object tmp = p_i48487_1_.teisr == null ? null : net.minecraftforge.fml.DistExecutor.callWhenOn(Dist.CLIENT, p_i48487_1_.teisr);
+ this.teisr = tmp == null ? null : () -> (net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer) tmp;
+ Object tmp = p_i48487_1_.ister == null ? null : net.minecraftforge.fml.DistExecutor.callWhenOn(Dist.CLIENT, p_i48487_1_.ister);
+ this.ister = tmp == null ? null : () -> (net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer) tmp;
}
@@ -86,7 +86,7 @@
}
+ @Nullable
+ private final java.util.function.Supplier<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer> teisr;
+ private final java.util.function.Supplier<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer> ister;
+ private final java.util.Map<net.minecraftforge.common.ToolType, Integer> toolClasses = Maps.newHashMap();
+ private final net.minecraftforge.common.util.ReverseTagWrapper<Item> reverseTags = new net.minecraftforge.common.util.ReverseTagWrapper<>(this, net.minecraft.tags.ItemTags::getGeneration, net.minecraft.tags.ItemTags::func_199903_a);
+ protected final boolean canRepair;
@@ -108,8 +108,8 @@
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public final net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer getTileEntityItemStackRenderer() {
+ net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer renderer = teisr != null ? teisr.get() : null;
+ public final net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer getItemStackTileEntityRenderer() {
+ net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer renderer = ister != null ? ister.get() : null;
+ return renderer != null ? renderer : net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer.field_147719_a;
+ }
+
@@ -127,7 +127,7 @@
private Food field_221541_f;
+ private boolean canRepair = true;
+ private java.util.Map<net.minecraftforge.common.ToolType, Integer> toolClasses = Maps.newHashMap();
+ private java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer>> teisr;
+ private java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer>> ister;
public Item.Properties func_221540_a(Food p_221540_1_) {
this.field_221541_f = p_221540_1_;
@@ -146,8 +146,8 @@
+ return this;
+ }
+
+ public Item.Properties setTEISR(java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer>> teisr) {
+ this.teisr = teisr;
+ public Item.Properties setISTER(java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer>> ister) {
+ this.ister = ister;
+ return this;
+ }
}
@@ -190,7 +190,7 @@
}
}
@@ -648,6 +671,7 @@
@@ -652,6 +675,7 @@
}
}
@@ -198,7 +198,7 @@
return list;
}
@@ -768,7 +792,7 @@
@@ -772,7 +796,7 @@
}
}
} else {
@@ -207,7 +207,7 @@
}
multimap.values().forEach((p_226631_0_) -> {
@@ -911,6 +935,35 @@
@@ -915,6 +939,35 @@
return this.func_77973_b().func_219971_r();
}
@@ -9,7 +9,18 @@
if (p_77654_3_ instanceof ServerPlayerEntity) {
ServerPlayerEntity serverplayerentity = (ServerPlayerEntity)p_77654_3_;
CriteriaTriggers.field_193138_y.func_193148_a(serverplayerentity, p_77654_1_);
@@ -44,4 +46,9 @@
@@ -25,10 +27,6 @@
p_77654_1_.func_190918_g(1);
}
- if (!p_77654_2_.field_72995_K) {
- p_77654_3_.func_195061_cb();
- }
-
return p_77654_1_.func_190926_b() ? new ItemStack(Items.field_151133_ar) : p_77654_1_;
}
@@ -44,4 +42,9 @@
p_77659_2_.func_184598_c(p_77659_3_);
return ActionResult.func_226248_a_(p_77659_2_.func_184586_b(p_77659_3_));
}
@@ -0,0 +1,51 @@
--- a/net/minecraft/item/MusicDiscItem.java
+++ b/net/minecraft/item/MusicDiscItem.java
@@ -21,17 +21,40 @@
import net.minecraftforge.api.distmarker.OnlyIn;
public class MusicDiscItem extends Item {
+ @Deprecated // Forge: refer to WorldRender#playRecord. Modders: there's no need to reflectively modify this map!
private static final Map<SoundEvent, MusicDiscItem> field_150928_b = Maps.newHashMap();
private final int field_195977_c;
+ @Deprecated // Forge: refer to soundSupplier
private final SoundEvent field_185076_b;
+ private final java.util.function.Supplier<SoundEvent> soundSupplier;
+ @Deprecated // Forge: Use the constructor that takes a supplier instead
protected MusicDiscItem(int p_i48475_1_, SoundEvent p_i48475_2_, Item.Properties p_i48475_3_) {
super(p_i48475_3_);
this.field_195977_c = p_i48475_1_;
this.field_185076_b = p_i48475_2_;
field_150928_b.put(this.field_185076_b, this);
+ this.soundSupplier = this.field_185076_b.delegate;
}
+ /**
+ * For mod use, allows to create a music disc without having to create a new
+ * SoundEvent before their registry event is fired.
+ *
+ * @param comparatorValue The value this music disc should output on the comparator. Must be between 0 and 15.
+ * @param soundSupplier A supplier that provides the sound that should be played. Use a
+ * {@link net.minecraftforge.fml.RegistryObject}{@code <SoundEvent>} or a
+ * {@link net.minecraftforge.registries.IRegistryDelegate} for this parameter.
+ * @param builder A set of {@link Item.Properties} that describe this item.
+ */
+ public MusicDiscItem(int comparatorValue, java.util.function.Supplier<SoundEvent> soundSupplier, Item.Properties builder)
+ {
+ super(builder);
+ this.field_195977_c = comparatorValue;
+ this.field_185076_b = null;
+ this.soundSupplier = soundSupplier;
+ }
+
public ActionResultType func_195939_a(ItemUseContext p_195939_1_) {
World world = p_195939_1_.func_195991_k();
BlockPos blockpos = p_195939_1_.func_195995_a();
@@ -76,6 +99,6 @@
@OnlyIn(Dist.CLIENT)
public SoundEvent func_185075_h() {
- return this.field_185076_b;
+ return this.soundSupplier.get();
}
}
@@ -8,7 +8,7 @@
try {
+ if (!net.minecraftforge.common.crafting.CraftingHelper.processConditions(entry.getValue(), "conditions")) {
+ field_199521_c.info("Skipping loading recipe {} as it's conditions were not met", resourcelocation);
+ field_199521_c.debug("Skipping loading recipe {} as it's conditions were not met", resourcelocation);
+ continue;
+ }
IRecipe<?> irecipe = func_215377_a(resourcelocation, entry.getValue());
Loaded 100 of 431 files, more files were not shown because too many files have changed in this diff. Show more