Comments (4)
Maybe this is because method parameter names are declared in SRG mappings, so could please add an option to regenerate method parameter names?
from forgeflower.
You've provided no context, and your first post doesnt actually explain what you're doing.
There already exists a flag to disable using bytecode LV names. So... Done.
from forgeflower.
(the flag is patched in by us, you can use it with -jvn)
from forgeflower.
I tried with "-dgs=1 -rsy=1 -asc=1 -bsm=1 -iec=1 -jvn=1 -udv=0 -ump=0", but the result is bad: arguments in lambda is not JAD style, method parameter names is JAD style in code but not in declaration.
Code fragment decompiled by ForgeFlower with "-dgs=1 -rsy=1 -asc=1 -bsm=1 -iec=1 -jvn=1 -udv=0 -ump=0"
public void remove(ServerPlayer var1) {
ServerLevel serverlevel = serverplayer.getLevel();
serverplayer.awardStat(Stats.LEAVE_GAME); // 'serverplayer' is actually 'var1'
this.save(serverplayer);
if (serverplayer.isPassenger()) {
Entity entity = serverplayer.getRootVehicle();
if (entity.hasExactlyOnePlayerPassenger()) {
LOGGER.debug("Removing player mount");
serverplayer.stopRiding();
entity.getPassengersAndSelf().forEach((var0) -> var0.setRemoved(Entity.RemovalReason.UNLOADED_WITH_PLAYER));
}
}
...
}
...
protected void save(ServerPlayer var1) {
this.playerIo.save(serverplayer);
ServerStatsCounter serverstatscounter = this.stats.get(serverplayer.getUUID());
if (serverstatscounter != null) {
serverstatscounter.save();
}
PlayerAdvancements playeradvancements = this.advancements.get(serverplayer.getUUID());
if (playeradvancements != null) {
playeradvancements.save();
}
}
I wrote a JAD name generator that generates JAD style names and writes them to LVT. Then use ForgeFlower with "-dgs=1 -rsy=1 -asc=1 -bsm=1 -iec=1" to decompile, the result is good. (at least better than above)
Code fragment decompiled by ForgeFlower with "-dgs=1 -rsy=1 -asc=1 -bsm=1 -iec=1" and my JAD name generator
public void remove(ServerPlayer serverplayer) {
ServerLevel serverlevel = serverplayer.getLevel();
serverplayer.awardStat(Stats.LEAVE_GAME);
this.save(serverplayer);
if (serverplayer.isPassenger()) {
Entity entity = serverplayer.getRootVehicle();
if (entity.hasExactlyOnePlayerPassenger()) {
LOGGER.debug("Removing player mount");
serverplayer.stopRiding();
entity.getPassengersAndSelf().forEach((entity) -> entity.setRemoved(Entity.RemovalReason.UNLOADED_WITH_PLAYER));
}
}
...
}
...
protected void save(ServerPlayer serverplayer) {
this.playerIo.save(serverplayer);
ServerStatsCounter serverstatscounter = this.stats.get(serverplayer.getUUID());
if (serverstatscounter != null) {
serverstatscounter.save();
}
PlayerAdvancements playeradvancements = this.advancements.get(serverplayer.getUUID());
if (playeradvancements != null) {
playeradvancements.save();
}
}
from forgeflower.
Related Issues (20)
- Record Canonical Constructor's not cleaned/written correctly.
- Deompile exception after updating to 1.5.605.12 HOT 1
- Decompile output is inconsistent between Java 17 and 19
- Method local inner record decompiled into wrong location
- Possible enhanced for loop failure
- While loop created outside try block with a return statement - 1.16/1.15 ClientThread#run
- Boxed and primitive overloads causing recursion - 1.16/1.15 SuffixArray#func_194058_a
- Improper variable merging - 1.16/1.15 Particle#func_187110_a HOT 1
- Misuse of debug names when debug names are disable HOT 1
- Static field initializes that reference itself or other static fields not inlined/compileable. HOT 1
- Some variables are not condensed to invocations.
- Some variables have LVT tags when other var exprents dont. HOT 1
- Invalid reference to outer class instance. HOT 1
- Add support for switch on string HOT 4
- Primitive class wrappers are not unwrapped
- Threads hang when decompiling project HOT 3
- Local variable names in inner class methods aren't fixed when they conflict with outer names HOT 3
- (21w13a) net.minecraft.world.level.levelgen.SimpleRandomSource.nextGaussian fails to decompile HOT 4
- Potential NPE in InvocationExprent.appendParamList HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from forgeflower.