|
1 | 1 | # Minecraft Development for IntelliJ |
2 | 2 |
|
| 3 | +## [1.8.7] |
| 4 | + |
| 5 | +### Added |
| 6 | + |
| 7 | +- Translations inside `deprecated.json` are now properly handled. |
| 8 | + - Usages of removed or renamed translations will be reported as a warning. |
| 9 | + - Translations will now properly be redirected to the correct entry in the translation file if they have been renamed. |
| 10 | +- New error if a local class is used in a mixin. |
| 11 | +- Access wideners have been renamed to class tweakers, which are a new beta Fabric feature, backwards compatible with |
| 12 | + access wideners. Both the new class tweaker format and the legacy access widener format are supported. |
| 13 | +- Added warnings related to `@At.opcode`: |
| 14 | + - A warning if it is used on any injection point other than `FIELD` (it would be ignored). |
| 15 | + - A warning if it is *not* used on `FIELD`. |
| 16 | + - A warning if an unsupported opcode is used. |
| 17 | +- Added an inspection for when an injector targets an unsupported instruction. This includes: |
| 18 | + - `@Redirect` and `@WrapOperation` targeting any instruction except those that can be targeted according to their docs. |
| 19 | + - `@ModifyArg` and `@ModifyArgs` targeting any instruction except method invocations. |
| 20 | + - `@ModifyConstant` targeting any instruction that doesn't push a constant. |
| 21 | + - `@ModifyExpressionValue` targeting instructions that don't return a value (e.g. void method invocations). |
| 22 | + - `@ModifyReceiver` targeting any instruction except non-static method invocations and field references. |
| 23 | + - `@ModifyReturnValue` targeting any instruction except `xRETURN`. |
| 24 | + - `@WrapWithCondition` targeting any instruction except void method invocations and field assignments. |
| 25 | +- Added an inspection for when `@Share` is used on a parameter that isn't from the `LocalRef` family. |
| 26 | +- Added an inspection for when two `@Share` annotations pointing to the same variable have a different type. |
| 27 | +- Added support for target code which has named variables in the LVT. This is enabled by default on all code except in |
| 28 | + the packages `net.minecraft` and `com.mojang.blaze3d`. It can be enabled for these packages too by enabling the |
| 29 | + `mcdev.unobfuscated.minecraft` registry value in the registry menu (access via ctrl+shift+A in the IDE and search for |
| 30 | + "Registry"). Plugins can add further unobfuscated packages by registering to the |
| 31 | + `com.demonwav.minecraft-dev.missingLVTChecker` extension point. |
| 32 | + - `@Local` and `@ModifyVariable` will generate warnings if the target class has named variables in the LVT, but are |
| 33 | + being targeted with `ordinal`, `index`, or in implicit mode. |
| 34 | + - This is currently disabled for parameter locals (those that can have `argsOnly = true`, due to a |
| 35 | + [Mixin issue](https://github.com/FabricMC/Mixin/issues/189)). |
| 36 | + - There is a quick fix to convert the annotation to use `name`. |
| 37 | + - MixinExtras expressions will now auto-complete to use named `@Local` targets where possible. |
| 38 | + - The `@Inject` local capture migration quick fix now also uses named `@Local` targets where possible. |
| 39 | + |
| 40 | +### Changed |
| 41 | + |
| 42 | +- Simplified translation identification code and made interpolation inlining less aggressive. When folding translations, |
| 43 | + MinecraftDev will no longer attempt to inline the values of variables in the substitution. |
| 44 | +- Removed the check for injecting before a `super()` call. This was never a correct thing to check for. |
| 45 | +- Switched from using entry points to implicit usage providers in mixins. This allows MixinExtras sugar parameters to be |
| 46 | + reported as unused by IntelliJ if they are unused, while maintaining an implicit usage on the whole method to avoid an |
| 47 | + unused warning there. |
| 48 | +- Changed `@Local` and `@ModifyVariable` can be `argsOnly = true` inspection to also work if the local is specified by |
| 49 | + name. |
| 50 | + |
| 51 | +### Fixed |
| 52 | + |
| 53 | +- Error reporting now works again and uses Sentry. If you have had problems reporting errors to MinecraftDev, it may be |
| 54 | + worth trying again after this update. |
| 55 | +- Fixed auto-completion for `NEW` and `FIELD` targets so they now read from the bytecode rather than the source code, |
| 56 | + improving accuracy. |
| 57 | +- Injection point specifiers and ordinals no longer prevent completion of `@At` targets. |
| 58 | +- `@Local` no longer always reports as able to be `argsOnly = true` if there are other annotations on the method, which |
| 59 | + was particularly noticeable when using `@Expression`. |
| 60 | +- Fixed `@ModifyConstant`'s expected method signature for class types. It now correctly expects two arguments, an |
| 61 | + `Object` instance and a `Class<?>` type, and may return a `Class<?>` or a `boolean`. |
| 62 | +- MinecraftDev no longer uses the internal `loom.mods[...].modSourceSets` property when importing a Fabric project. |
| 63 | +- Double nested anonymous class resolving now works, so mixins targeting `Foo$1$1` should now work correctly. |
| 64 | +- Fixed navigation to constructors from mixins, which was broken in the previous release. |
| 65 | +- Class tweaker (access widener) files no longer treat unrecognized namespaces as a syntax error. |
| 66 | + - A warning will be generated if the namespace is not in the current mapping file (pulled from Loom). If the current |
| 67 | + mapping file does not exist, only `official` will be recognized as a valid namespace. |
| 68 | +- Fixed the "copy AT entry" action for unobfuscated environments. |
| 69 | +- Fixed an `ArrayIndexOutOfBoundsException` in `LocalVariables.guessAllLocalVariablesUncached`. |
| 70 | +- Override `getLanguage` in `NbttCodeStyleSettingsProvider`, preventing an IDE error. |
| 71 | +- Weaken the assertions in `TranslationFiles`, showing a balloon to the user instead. This prevents an IDE error from |
| 72 | + occurring. |
| 73 | + |
3 | 74 | ## [1.8.6] |
4 | 75 |
|
5 | 76 | ### Added |
|
0 commit comments