Skip to content

Latest commit

 

History

History
295 lines (228 loc) · 16.8 KB

File metadata and controls

295 lines (228 loc) · 16.8 KB

Minecraft Development for IntelliJ

[1.8.11]

Added

  • Using Minecraft version to recognize unobfuscated Minecraft

Fixed

  • Downgraded non-void WrapWithCondition to warning if there is a pop instruction afterwards
  • Fixed local templates freezing
  • Avoided a crash for unknown MC versions
  • Don't suggest that locals can use names with argsOnly = true

[1.8.10]

Fixed

  • Fixed transitive-* being reported as an error in class tweakers.
  • Fixed all local classes being reported as being inside a mixin.
  • Fixed write-unsafe context errors when using the project creator.

[1.8.9]

Fixed

  • Fixed freeze in project creator
  • Fixed ModifyExpressionValue sometimes being detected as disallowed if MixinExtras expressions are used

[1.8.8]

Fixed

  • @At targets inside @Slice are no longer checked for invalid instructions according to the injector type.

[1.8.7]

Added

  • Translations inside deprecated.json are now properly handled.
    • Usages of removed or renamed translations will be reported as a warning.
    • Translations will now properly be redirected to the correct entry in the translation file if they have been renamed.
  • New error if a local class is used in a mixin.
  • Access wideners have been renamed to class tweakers, which are a new beta Fabric feature, backwards compatible with access wideners. Both the new class tweaker format and the legacy access widener format are supported.
  • Added warnings related to @At.opcode:
    • A warning if it is used on any injection point other than FIELD (it would be ignored).
    • A warning if it is not used on FIELD.
    • A warning if an unsupported opcode is used.
  • Added an inspection for when an injector targets an unsupported instruction. This includes:
    • @Redirect and @WrapOperation targeting any instruction except those that can be targeted according to their docs.
    • @ModifyArg and @ModifyArgs targeting any instruction except method invocations.
    • @ModifyConstant targeting any instruction that doesn't push a constant.
    • @ModifyExpressionValue targeting instructions that don't return a value (e.g. void method invocations).
    • @ModifyReceiver targeting any instruction except non-static method invocations and field references.
    • @ModifyReturnValue targeting any instruction except xRETURN.
    • @WrapWithCondition targeting any instruction except void method invocations and field assignments.
  • Added an inspection for when @Share is used on a parameter that isn't from the LocalRef family.
  • Added an inspection for when two @Share annotations pointing to the same variable have a different type.
  • Added support for target code which has named variables in the LVT. This is enabled by default on all code except in the packages net.minecraft and com.mojang.blaze3d. It can be enabled for these packages too by enabling the mcdev.unobfuscated.minecraft registry value in the registry menu (access via ctrl+shift+A in the IDE and search for "Registry"). Plugins can add further unobfuscated packages by registering to the com.demonwav.minecraft-dev.missingLVTChecker extension point.
    • @Local and @ModifyVariable will generate warnings if the target class has named variables in the LVT, but are being targeted with ordinal, index, or in implicit mode.
      • This is currently disabled for parameter locals (those that can have argsOnly = true, due to a Mixin issue).
      • There is a quick fix to convert the annotation to use name.
    • MixinExtras expressions will now auto-complete to use named @Local targets where possible.
    • The @Inject local capture migration quick fix now also uses named @Local targets where possible.

Changed

  • Simplified translation identification code and made interpolation inlining less aggressive. When folding translations, MinecraftDev will no longer attempt to inline the values of variables in the substitution.
  • Removed the check for injecting before a super() call. This was never a correct thing to check for.
  • Switched from using entry points to implicit usage providers in mixins. This allows MixinExtras sugar parameters to be reported as unused by IntelliJ if they are unused, while maintaining an implicit usage on the whole method to avoid an unused warning there.
  • Changed @Local and @ModifyVariable can be argsOnly = true inspection to also work if the local is specified by name.

Fixed

  • Error reporting now works again and uses Sentry. If you have had problems reporting errors to MinecraftDev, it may be worth trying again after this update.
  • Fixed auto-completion for NEW and FIELD targets so they now read from the bytecode rather than the source code, improving accuracy.
  • Injection point specifiers and ordinals no longer prevent completion of @At targets.
  • @Local no longer always reports as able to be argsOnly = true if there are other annotations on the method, which was particularly noticeable when using @Expression.
  • Fixed @ModifyConstant's expected method signature for class types. It now correctly expects two arguments, an Object instance and a Class<?> type, and may return a Class<?> or a boolean.
  • MinecraftDev no longer uses the internal loom.mods[...].modSourceSets property when importing a Fabric project.
  • Double nested anonymous class resolving now works, so mixins targeting Foo$1$1 should now work correctly.
  • Fixed navigation to constructors from mixins, which was broken in the previous release.
  • Class tweaker (access widener) files no longer treat unrecognized namespaces as a syntax error.
    • A warning will be generated if the namespace is not in the current mapping file (pulled from Loom). If the current mapping file does not exist, only official will be recognized as a valid namespace.
  • Fixed the "copy AT entry" action for unobfuscated environments.
  • Fixed an ArrayIndexOutOfBoundsException in LocalVariables.guessAllLocalVariablesUncached.
  • Override getLanguage in NbttCodeStyleSettingsProvider, preventing an IDE error.
  • Weaken the assertions in TranslationFiles, showing a balloon to the user instead. This prevents an IDE error from occurring.

[1.8.6]

Added

  • Debug flow diagrams for MixinExtras expressions.
  • An inspection to replace INVOKE_ASSIGN with MixinExtras expressions where possible.
    • Expressions are preferred because INVOKE_ASSIGN doesn't fail if there's no assignment.

Changed

  • Performance improvements for shadow completions.
  • Smarter warnings for discouraged shifting
    • Shifting is now always discouraged on injectors that can't inject on any instruction in the method (such as @Redirect).
    • When MixinExtras expressions are being used, the discourage shifting logic now takes into account the type of expression.
  • Mixin navigation to lambdas has been improved. MinecraftDev will now properly detect that a synthetic method will be generated for method references in the following additional cases:
    • All array method references.
    • Method references to a superclass method (super::foo).
    • Constructor method references for a non-static inner class.
      • Previously, all constructor method references were incorrectly assumed to generate a synthetic method.
    • Varargs parameter expansions.
    • Access to private methods in an outer or inner class before Java 9.
    • Access to protected methods in the superclass of an outer class, if the superclass is in a different package.
    • Cases where the functional interface method being implemented has a parameter which is an intersection type (a type parameter extending multiple things).

Fixed

  • Fixed "generate accessor/invoker" action not doing anything.
  • Fixed Mixin version detection in legacy/non-standard Minecraft environments. The Mixin version is now taken from the MixinBootstrap class, rather than attempting to decipher it from the library artifact.
  • Fixed @Coerce on return type wanting subtypes not supertypes.
  • Fixed the "add definition" quick-fix for MixinExtras expressions creating a "dummy" definition since 2025.1
  • Fixed incorrect unused warnings on MixinExtras expression definitions
  • Fixed "find usages" on MixinExtras expression definitions
  • Fixed IDE error that sometimes occurs when navigating to mixin target
  • Fixed mixin navigation to field assignments.

[1.8.5]

Added

  • Support injection point specifiers everywhere
  • Support for the 2025.2 EAP

Changed

  • Demote a couple of mixin inspections from error to warning
  • Allow handler methods to be static even when not required, except for @Inject on stock mixin
  • Allow CallbackInfoReturnable.cancel() in MixinCancellableInspection
  • Check bases for CIR.cancel()
  • Allow .aw as alternative access widener file extension
  • Remove shadow completions explicit proximity

Fixed

  • #2148 Allow assignment to @Final fields in class initializer blocks
  • #2468 entrypoint checks on non-ending parts of entrypoint references, and handle escapes in entrypoint reference strings
  • #2470 Various Mixin fixes
  • @Shadow suggestions being incorrectly prioritized
  • NoSuchElementException in MixinAnnotationTargetInspection
  • IllegalStateException when typing a colon in Java code

[1.8.4]

Added

  • Added datagen to Fabric project templates

[1.8.3]

Added

  • #2391 Project creator template repo and maven repo authorization
    • this makes it possible to use private GitHub or GitLab repos, or any URL that requires an HTTP Authorization or custom header to access
    • it also supports authenticating to Maven repos to list versions when using a maven_artifact_version property in your template through basic authentication

Fixed

  • #2394 Write-unsafe context errors when using the project creator
  • #2406 IllegalStateException: Constraint inSmartMode cannot be satisfied when opening a project
  • #2382 No Parchment version was selectable when using a version of Minecraft that Parchment doesn't support explicitly
    • In this case, the creator will now select the latest version available for the latest Minecraft version supported by Parchment
  • #2408 External translation annotations are not attached
    • This happens because IntelliJ IDEA disables external annotations by default in 2024.3, which we rely on for this feature, an opt-out setting has been added to force-enable external annotations in Minecraft projects.
  • Cases where references to client sources in fabric.mod.json were not resolved

[1.8.2] - 2024-10-05

Added

  • plugin.yml, paper-plugin.yml and bungee.yml main class reference and validity inspection
  • mods.toml and neoforge.mods.toml documentation for lookup elements
  • Support for split strings within inspections and method target references in Mixins (#2358)
  • Mouse ungrab on breakpoint hit while running a Gradle task
  • JSON5 support to mixin config jsons (#2375)
  • Value types in mods.toml key completion
  • Mixin injection signature fix preview
  • Loom 1.8 support
  • K2 mode compatibility
  • #2385 ModDevGradle Vanilla-Mode support

Changed

  • More reliable ClassFqn creator property suggestions and validation
  • Lang spellchecking now works in dumb mode

Fixed

  • #2362 CME in fabric.mod.json
  • Ignored annotations registrations
  • NeoGradle and NeoModDev Minecraft version import
  • #2360 Class initialization must not depend on services error
  • #2376 Error when generating event listeners in read only file
  • #2308 Mixin Inject signature fix adds last parameter as first local
  • #1813 Single character Accessor targets aren't inferred correctly
  • #1886 Sync error in ForgeGradle composite builds

[1.8.1] - 2024-08-10

Added

  • Access widener completion in fabric.mod.json
  • Event listener generation for Kotlin
  • JUMP injection point support (without source navigation)
  • Inspection highlighting that JUMP usages are discouraged
  • Inspection highlighting discouraged instruction shifts
  • Inspections for when @Inject local capture is unused and for when they can be replaced with @Local
  • #2306 Use mixin icon for mixin classes
  • Documentation while completing keys in mods.toml
  • mods.toml support for neoforge.mods.toml
  • Automatically insert an = after completing a mods.toml key

Changed

  • #2353 Move "Method must not be static" error message to static keyword (#2354)

Fixed

  • #2330 Reformat created files without keeping line breaks. Fixes the Velocity main class annotation's bad formatting.
  • #2331 Support fabric.mod.json in test resources
  • MixinExtras occasional cache desync (#2335)
  • #2163 @ModifyVariable method signature checking with STORE
  • #2282 Mixin support confusion with $ and . separators in class names
  • Recent NeoModDev version import errors
  • Recommended Artifact ID value was not sanitized properly
  • NeoForge versions in the Architectury were not being matched correctly for the first version of a major Minecraft release

[1.8.0] - 2024-07-14

This release contains two major features:

  • Support for MixinExtras expressions (#2274)
  • A rewritten project creator (#2304)

About the new project creator

The new project creator is very similar to the previous one but has a few advantages:

  • The templates are now stored on a separate repository and updated the first time you open the creator. This allows us to release template updates independently of plugin releases.
  • You can create your own custom templates in their own repositories, which can be:
    • flat directories
    • local ZIP archives
    • remote ZIP archives (like the built-in templates)
  • Kotlin templates were added to all platforms except Forge and Architectury (couldn't get the Forge one to work, will look into it later)
  • Fabric now has a split sources option
  • Some niche options like the plugins dependencies fields were removed as their use was quite limited
  • Remembered field values won't be ported over to the new creator, so make sure to configure your Group ID under Build System Properties!
  • The old creator will be kept for a few months to give us the time to fix the new creator, please report any issues on the issue tracker

Added

  • Initial support for NeoForge's ModDevGradle
  • Option to force json translation and configurable default i18n call (#2292)
  • Minecraft version detection for Loom-based projects
  • Other JVM languages support for translation references, inspections and code folding
  • Repo-based project creator templates (#2304)
  • Support for MixinExtras expressions (#2274)

Changed

  • #2296 Support entry point container objects in fabric.mod.json
  • #2325 Make lang annotator fixes bulk compatible
  • Migrated the remaining legacy forms to the Kotlin UI DSL

Fixed

  • #2316 Sponge's injection inspection isn't aware of the Configurate 4 classes (#2317)
  • #2310 Translations aren't detected for enum constructors
  • #2260 Vararg return type expected in a @ModifyArg method