Commit Graph

153 Commits

Author SHA1 Message Date
ichttt 747cb0f151 Some code cleanup for 1.15 (#6362) 2019-12-18 20:39:41 -08: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
LexManos 1933d05e36 Update to 1.15
Due to the massive rendering changes, certain features, such as emissive item rendering and the forge block rendering/lighting pipeline are currently disabled.

Co-authored-by: David Quintana <gigaherz@gmail.com>
Co-authored-by: tterrag <tterrag1098@gmail.com>
Co-authored-by: Unnoen <theunnoen@gmail.com>
2019-12-17 03:38:12 +01:00
tterrag 5c88451f6f Allow classpath locator to discover jars via FMLModType attribute 2019-12-05 22:56:05 -05:00
cpw cfc53c939e
Tidy up some output and also add libraries from the modfile detection into the transforming classloader.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-12-05 22:47:39 -05:00
cpw 31da9a4878
Fix the hang on startup problem when windows' broken device enumeration
causes a huge glfwInit slowdown. Log a message too when this is detected.

See https://github.com/glfw/glfw/issues/1284, https://stackoverflow.com/questions/10967795/directinput8-enumdevices-sometimes-painfully-slow,
https://discourse.libsdl.org/t/win-10-initing-joystick-causes-45s-hang-in-sdl-dinput-joystickdetect/23293

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-11-23 15:37:56 -05:00
cpw 1e1644f6d4
A few tweaks to things. Make the mods command a bit better, make the
IndexedMessageCodec actually log which network channel it got back packets
on. Also, improve the custom directorymodlocator with actual custom names,
finally, allow up to 99 log rollovers, up from 7 default (this means a
repeatedly crashing server is less likely to roll out the log of the first
crash).

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-11-03 12:33:07 -05:00
cpw 862289cf56
Handle logging during shutdown better on the server, by not
closing the logfile before the server itself has shutdown.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-10-26 16:55:15 -04:00
cpw e3068d7db2
Fix NPE in modlauncher when there is no mods dir yet.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-10-25 07:27:55 -04:00
DaemonUmbra 29ad7a39de Fixed NPEs caused by uninitialized lists in ModDirTransformerDiscoverer (#6277) 2019-10-24 23:06:27 -07:00
cpw 3bf6c17bb8
Allow pack locators to load from the mods folder.
Regular mods are now automatically de-duped based on the version number -
the highest version file of a "root mod id" is now selected automatically.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-10-23 21:30:17 -04:00
JoJoModding 8adc546d92 Allow mods actually to have their own usable config gui (#6208) 2019-10-15 14:56:27 -07:00
cpw 9c759294c6
Add a super early GUI for showing pre-game launch messages from FML. NOTE: this cannot show on MAC because MAC can't handle
off-thread GUIs in any way shape or form, and we need the main thread to do real work.

Fix forge fading in wrongly.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-10-05 17:03:02 -04:00
cpw 136452840d
Remove forced ANSI terminal - it breaks the Eclipse terminal output.
As a result, we can now support coloured log output again, by default.

Regen run configs to get the change (you should do this every update, you
know :D)

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-09-28 16:05:50 -04:00
cpw f4bab8b8c1
Integrate modlauncher changes for mixin.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-09-27 17:42:24 -04:00
LexManos 48cf910626 Bump binpatcher and jarsplitter versions to address Java differences on older JDKs. 2019-09-22 17:30:29 -07:00
tterrag dee844e232 Add IExtensibleEnum#init, extend FillerBlockType/PlacementBehaviour 2019-09-21 15:57:32 -04:00
cpw 71a4828809
Some tweaks around the code base. A functional consumer for networking - return a bool from your consumer function, rather than setPacketHandled.
Tweak the server modloading behaviour to try and be a bit clearer that a mod errored.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-09-16 20:14:25 -04:00
cpw bdce8d0494
Add a modfolderfactory. Fix up login payload exposure.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-09-01 14:40:39 -04:00
cpw 734a3d76aa
Peel IModLocator into the SPI package and extract a small IModFile
interface as well. This allows building external IModLocator
implementations.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-09-01 11:31:09 -04:00
Tobias Hotz 185f7344fa
move default log level for debug file to debug instead of trace, and remove millis from console and GUI. Also remove unused config xmls 2019-08-31 13:55:46 -04:00
cpw 0d448a5e4f
Update libs to 1.0 versions, bump grgit, and fix tag search behaviour that resulted.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-08-29 23:39:49 -04:00
cpw 5048739b7f
Turned minecraft into a proper Mod, with a "dummy" language provider.
Also fixed the "translations" not being available early if an exception occurs
by force loading the forge and MC ones. Closes #5984

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-08-04 20:16:01 -04:00
cpw cd826f7bcf
Load default configs from the defaultconfig directory by default. (Can
be overridden in the fml.toml config file if desired).

Will load any type of config tracked file from there - client, common, server
or custom tracked file. This means you can ship defaults for your pack
in a defaultconfig directory. I am thinking about ways to force a specific
config override for an existing config.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-07-28 13:44:18 -04:00
cpw e17714583f
Crash report extended to show ModLauncher FML and Forge data.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-07-26 20:02:21 -04:00
cpw 0bdc2d04b4
Added a coremod, shush, don't tell Lex.
Seriously, this is how to do targeted changes to specific classes.

In this case, adding a fieldtomethod redirect for EffectInstance.potion
to allow substitution.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-07-25 23:02:05 -04:00
cpw 9d82d822db
Fix error when ModsDiscoverer visits a non existent mods dir.
Closes cpw/modlauncher#30

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-07-20 19:37:54 -04:00
cpw eec5809097
Realms' removal has removed the need for additional jar transformation.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-07-20 19:33:54 -04:00
ichttt bef52c945b Fix forge 1.14.4 startup in obfed enviroment (#5955) 2019-07-20 12:59:23 -07:00
cpw 27afdc8a27
Provisional update to 1.14.4. Missing a lot of playerinteractionmanager patches because everything moved and I'm tired.
Fix up immediate problems.

bump to 28.
2019-07-20 00:35:40 -04:00
Dirk "YouDirk" Lehmann 8c37d642fe Fix logoFile not working properly (#5775) 2019-07-08 19:49:31 -07:00
LexManos bc23c1ddb2 Add installer processor to deobfuscate Mincraft's Realms library.
This task will processes the current realms library from the json, so the installer must be re-ran every time they update it.
2019-07-03 01:08:20 -07:00
cpw c8e5007913
Remove legacy StartupProgress.
Implement properly scalable progress thanks to @gigaherz. Closes #5863.
Implement API for pushing messages to the startup screen from mods.
Add memory display.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-06-30 23:48:54 -04:00
LexManos c284de366b Split userdev data entry point into it's own provider to fix duplicate mod issue. 2019-06-25 18:03:51 -07:00
cpw bdad2af27b
Tweak for lowercase handling.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-06-23 14:51:58 -04:00
cpw 60513446fa
Merge branch 'pull/5793' into 1.14.x 2019-06-23 14:42:32 -04:00
JoJoDeveloping b9e5dfd286
Add mod failure identification 2019-06-23 03:14:05 +02:00
cpw 389bc1ecea
Tidy up mod loading a bit more, and also crash if the [[mods]] list isn't
a list.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-06-22 12:52:22 -04:00
LexManos f01b87fac7 Fix some compile errors in test classes. 2019-06-19 18:07:58 -07:00
LexManos 002e29958e Make ReverseTagWrapper unmodifiable, fix error in log when mods folder doesn't exist initial scan. 2019-06-16 00:47:40 -07:00
cpw d736e26e0c
Fix realms class name
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-06-07 17:32:33 -04:00
cpw c57c6213ea
Enhance crash reports and logging to capture transformers on stack trace elements.
Moved log4j2.xml file to the launcher source set, so it loads first in the client.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-05-27 00:00:45 -04:00
LexManos eae0858de6 Fix build script producing duplicated eclipse source folders.
Fix not including userdev source in sources jar.
Update license header of files that need it.
Delete patches_old folders. Most are unneeded in 1.13+ as the systems they effected were changed significantly. Any that need to be readdressed can be done as PRs.
2019-05-13 19:11:24 -07:00
tterrag 7c90d9f3e8 Better handle errors from eclipse compiled (non-compiling) bytecode 2019-05-11 18:58:45 -04:00
LexManos a7204b5cd3 Bump ForgeSPI version, and add support for DistCleaner stripping interfaces from classes.
Add more detail to VersionChecker log info.
2019-05-06 15:52:12 -07:00
tterrag 616416569b Add explicit return type checks for extensible enums, fix exc 2019-04-25 19:51:20 -04:00
tterrag cab1b9716c Fix EnumRarity, make sure extensible enums have at least one factory candidate 2019-04-25 19:38:03 -04:00
Ben Staddon f19fed0853 Add redirects to PotionEffect to respect registry replacement (#5213) 2019-04-23 14:47:47 -04:00
tterrag 06f67f7696 Add FieldRedirectTransformer updated to new modlauncher API 2019-04-23 14:39:26 -04:00
ichttt e868739675 Readd redirecting of stdout and stderr (#5678) 2019-04-16 14:08:08 -07:00
Yanbing Zhao 254c1d1531 Only remove synthetic lambda methods referenced in body of SideOnly methods (#5127) 2019-04-11 18:02:34 -04:00
cpw cdbd842494
Refactor to use naming service, and provide an MCP naming service when
in userdev. Step 1 to supporting loading SRG mods in userdev.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-04-06 12:10:54 -04:00
tterrag 2f486f2bdd
Add method to IResourcePack to hide it entirely from the UI (#5525) 2019-03-25 17:24:37 -04:00
cpw d99a55a7d1
Allow login packets to only generate on server based connections
Run injectSnapshot on the client thread, wait for result and
disconnect when injectSnapshot fails.
Fix DevServer to load MOD_CLASSES
Fix LaunchTesting to properly load log4j2 markers (don't use a
static variable in that class!)

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-03-15 23:22:28 -04:00
ichttt 00845d5252 Add UI for warnings that occurred during loading (#5530) 2019-03-11 15:32:37 -07:00
cpw 7cfc5c3316
Add in the ability to load modlists from a file.
This is simple: <modfile>.list is a newline separated list
of maven-like coordinates for mods to load into the game.
They are searched for in all known maven roots.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-03-09 17:51:37 -05:00
LexManos 3003e33074 Refactor Userdev and Forgedev launching.
Locating mods on the classpath in dev should solve linked MC sources when debugging.
As well as loading deobfed mods.
Rewrote how arguments are handled in dev, so users can overwrite any defaults we provide.
Added basic Yggdrasil auth support. Passing in --username and --password arguments.
ONLY USE IF NECESSARY. Forge is NOT responsible for your login information.
2019-03-06 20:59:32 -08:00
cpw 45f5f0904a
Log a message as well, when we crash.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-03-01 19:48:25 -05:00
cpw b4ccafe718
Enforce specversion number for forgeSPI so we don't crash with weird errors later.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-03-01 19:27:22 -05:00
cpw 7f1ea578d6
Fix problem with duplicate mods caused by duplicate classes found during scan.
File Scan results are now sets.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-27 23:34:23 -05:00
cpw 0bcc60fbe3
Tidy up server launch. The JAR will resolve it's libraries from a relative
path. We just need to verify what we need is on the classpath, and
try and handle when it's not, cleanly (by recommending running the
installer).

The manifest now embeds the correct launch arguments to allow FML to
resolve - these were _never_ editable, and belong somewhere out of
the way.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-26 10:28:48 -05:00
cpw bbdf52e038
Update to 0.10 modlauncher API with performance improvements..
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-23 14:36:05 -05:00
LexManos b7f6fbcfcb Merge extra and data jars. As Log4j has issues with it's config being in a different jar then the custom logger. 2019-02-21 04:24:39 -08:00
tterrag 57cd8324dc Fix reference to UnsafeHacks in RuntimeEnumExtender 2019-02-19 19:28:17 -05:00
cpw 36ccb3bbfe
Fix serverlang loading issue, by frontloading MC and Forge langs,
so error messaging works.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-15 20:00:41 -05:00
cpw 78455ac3c0
Add the language providers to the main classloader as well, so
their resources are available to other classes..

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-14 21:43:56 -05:00
cpw 4441935a4a
Handle invalid JAR files more gracefully. Don't crash.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-13 18:33:50 -05:00
cpw f1feac76b3
Fix JKS to be stored as binary 2019-02-11 13:51:13 -05:00
cpw d9c4446ccc
Enable https to Let's Encrypt endpoints by using an SSL factory with
the two extra Let's Encrypt root certs installed into an auxiliary
keystore.

The keystore was generated using standard commands, documented in the
FixSSL class.

The Let's Encrypt certificates are not provided by default in Java 8
prior to update 101.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 23:41:40 -05:00
cpw f83500db11
Its 2019. Update licence headers to match.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 17:57:03 -05:00
cpw fd02d81e73
Fix Terminal Handler and GUI logging on dediserver, hopefully..
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 17:51:25 -05:00
cpw 0d379fdd6b
Fix config to use new system properly, without exploding the server.
Separates server specific config into the server config file.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 16:38:14 -05:00
cpw c25214aaf4
Fix #5429 properly, without breaking symlinks on linux..
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 15:58:12 -05:00
cpw b28a418bd9
Use a configuration value for the thread count, make it default to
availableProcessors when set to <=0 (default value is -1)

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 11:44:22 -05:00
cpw 64f69cf5c9
Revert "Make sure to create entire path for directory, fixes #5429"
This reverts commit 77dd9eb8

This will completely break symlinks on linux.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-02-10 10:26:21 -05:00
tterrag 065ebd748a Add synchronized modifier to runtime enhanced enum methods 2019-02-07 17:01:40 -05:00
tterrag 79c17cb542 Add IExtensibleEnum, fix DimensionType create method 2019-02-07 16:36:30 -05:00
Bartosz Skrzypczak b527bf8ab3 Fix leaking unclosed InputStream in Scanner.fileVisitor (#5432) 2019-02-06 22:57:00 -08:00
LexManos aa91af865d Rework server launching at runtime to include needed default arguments and validate libraries exist.
Move Forge config loading to manual while config system is in development.
2019-02-04 18:23:58 -08:00
tterrag 77dd9eb883 Make sure to create entire path for directory, fixes #5429 2019-02-04 12:31:47 -05:00
cpw 55691fce4e
Expose the ModFile in the scan data, so languages can read it and make
mod construction decisions.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-31 23:09:47 -05:00
Justin d2a3b5bed8 Fix RuntimeEnumExtender creating new enums with incorrect ordinal value (#5402) 2019-01-30 12:51:14 -08:00
cpw 6365674a2a
Config watching and config events now actually work!
Also fixed small bug with MOD_CLASSES not defaulting to empty string.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-29 15:42:56 -05:00
ichttt da33233762 Update for ForgeSPI change, revert back to VersionStatus checking 2019-01-27 20:51:35 +01:00
cpw 0a11ffb827
More logging tweaks, including some aimed at userdev.
`forge.logging.markers=<LIST OF MARKERS>` will enable markers.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-27 00:06:57 -05:00
cpw d539dc12a1
Fix modsorter to not crash on soft dependencies that don't exist.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-26 17:07:17 -05:00
cpw 8b74b32909
Make MOD_CLASSES available to the forge development environment as well.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-26 13:07:30 -05:00
cpw 0bdafb976e
Fix handing the "minecraft" dependency properly by adding it to the list
of mods.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-26 11:23:51 -05:00
tterrag 0b2a98f956 Fix dependents not being loaded into mod sorter 2019-01-23 20:04:57 -05:00
liach c01b336095 Improves topological sort
This can be used for mod sorting, dependencies between registries, etc.
e.g. https://github.com/MinecraftForge/MinecraftForge/pull/4694#issuecomment-412520302

New features:
Now accepts guava graph
Performance improvement: no longer reverse the graph; changed dfs to bfs
Accepets a comparator for secondary order, e.g. natural order, index by map
Now properly reports all cycles in a graph with Tarjan's strongly connected component algorithm
Adds a test to prove the validity of the sort and cycle detection
Modified build.gradle for test source directory and dependencies

Mod loading changes:
Sort mod file info instead of suppliers (we don't have suppliers instances)
Moves cycle error reporting out of topological sort and into mod sorter
Prevent mod file dependencies between mods that share the same file

Signed-off-by: liach <liach@users.noreply.github.com>
2019-01-21 03:06:27 +00:00
cpw 040cc4bf16
Expose a couple of mods.toml properties properly. Half-implemented
override namespace - still needs to be reviewed and determined how this
might work in detail.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
2019-01-20 21:26:31 -05:00
tterrag 0d1a2f2af3 Add utilities that RuntimeEnumExtender expects to exist 2019-01-17 13:11:54 -05:00
cpw 755eff7415 Fix exploded directory locator to actually scan all paths for a file. 2019-01-15 22:14:23 -05:00
cpw 99452a8b45 Update a bunch of libs, rename some of the mod events to more
meaningful names.
2019-01-14 00:39:00 -05:00
LexManos 36d2e67b07 Reimplement @ObjectHolder scanning, and expose system for others to add handlers.
Fix forgedev and userdev run configs.
Fix issue in log functions assuming String arguments.
2019-01-09 20:57:01 -08:00
LexManos f7acc73282 Update userdev and runconfigs for ForgeGradle changes. 2019-01-08 00:29:36 -08:00
cpw 1b40618f02 Fix classloading properly. ModLoadingClassLoader doesn't work
with the proper delegation model. Abandoned it, in favour of injecting
locators into the Transformer classloader directly.
2019-01-06 16:24:32 -05:00
cpw 58c78560fa Fix up some stuff with resource packs, so the guilist works properly. 2019-01-05 10:19:47 -05:00
cpw fd9c83b65f Finish up classloading system. Use ModJARURL to locate resources
and enable ModLauncher to use those instead. This allows all mods to load
within the scope of the game classloader, removing weird conflicts and
class discovery problems.
2019-01-04 23:56:10 -05:00
cpw 6baddc7e26 client and server work standalone and in forge dev. Next up userdev.
Moved some launchplugin code to the launcher. Moved servermain to
the launcher.

server currently needs cmdline arguments  --fml.forgeVersion=24.0.51-1.13-pre --fml.mcVersion=1.13 --fml.mcpVersion=2018.09.12.04.11.00 --fml.forgeGroup=net.minecraftforge.test
2019-01-01 21:35:23 -05:00