From d0a52bb6de19c81705094b26132931a57dc40866 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 20 Aug 2025 17:15:23 +0100 Subject: Add GuiService for plugins to make additions to the GUI. Also add enough context to do something useful. --- .../src/main/java/cuchaz/enigma/EnigmaProject.java | 11 ++++++- .../cuchaz/enigma/analysis/EntryReference.java | 8 ++++- .../java/cuchaz/enigma/api/service/GuiService.java | 34 ++++++++++++++++++++ .../main/java/cuchaz/enigma/api/view/GuiView.java | 13 ++++++++ .../java/cuchaz/enigma/api/view/ProjectView.java | 7 +++++ .../enigma/api/view/entry/ClassDefEntryView.java | 10 ++++++ .../enigma/api/view/entry/ClassEntryView.java | 5 +++ .../cuchaz/enigma/api/view/entry/DefEntryView.java | 5 +++ .../enigma/api/view/entry/EntryReferenceView.java | 5 +++ .../cuchaz/enigma/api/view/entry/EntryView.java | 36 ++++++++++++++++++++++ .../enigma/api/view/entry/FieldEntryView.java | 7 +++++ .../api/view/entry/LocalVariableDefEntryView.java | 5 +++ .../api/view/entry/LocalVariableEntryView.java | 9 ++++++ .../enigma/api/view/entry/MethodEntryView.java | 7 +++++ .../representation/entry/ClassDefEntry.java | 5 ++- .../representation/entry/ClassEntry.java | 3 +- .../translation/representation/entry/DefEntry.java | 8 ++++- .../translation/representation/entry/Entry.java | 36 ++-------------------- .../representation/entry/FieldEntry.java | 8 ++++- .../entry/LocalVariableDefEntry.java | 8 ++++- .../representation/entry/LocalVariableEntry.java | 5 ++- .../representation/entry/MethodEntry.java | 8 ++++- 22 files changed, 200 insertions(+), 43 deletions(-) create mode 100644 enigma/src/main/java/cuchaz/enigma/api/service/GuiService.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/GuiView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/ProjectView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassDefEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/DefEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryReferenceView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/FieldEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableDefEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableEntryView.java create mode 100644 enigma/src/main/java/cuchaz/enigma/api/view/entry/MethodEntryView.java (limited to 'enigma/src/main/java') diff --git a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index 79df2fb..96ad433 100644 --- a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -24,6 +24,8 @@ import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.analysis.index.JarIndex; import cuchaz.enigma.api.service.NameProposalService; import cuchaz.enigma.api.service.ObfuscationTestService; +import cuchaz.enigma.api.view.ProjectView; +import cuchaz.enigma.api.view.entry.EntryView; import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; import cuchaz.enigma.classprovider.ClassProvider; import cuchaz.enigma.classprovider.ObfuscationFixClassProvider; @@ -31,6 +33,7 @@ import cuchaz.enigma.source.Decompiler; import cuchaz.enigma.source.DecompilerService; import cuchaz.enigma.source.SourceSettings; import cuchaz.enigma.translation.ProposingTranslator; +import cuchaz.enigma.translation.Translatable; import cuchaz.enigma.translation.Translator; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.EntryRemapper; @@ -44,7 +47,7 @@ import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; import cuchaz.enigma.translation.representation.entry.MethodEntry; import cuchaz.enigma.utils.I18n; -public class EnigmaProject { +public class EnigmaProject implements ProjectView { private final Enigma enigma; private final List jarPaths; @@ -325,6 +328,12 @@ public class EnigmaProject { } } + @Override + @SuppressWarnings("unchecked") + public T deobfuscate(T entry) { + return (T) mapper.extendedDeobfuscate((Translatable) entry).getValue(); + } + public static final class SourceExport { public final Collection decompiled; diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java index 9c54281..ec9b375 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java @@ -15,6 +15,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; +import cuchaz.enigma.api.view.entry.EntryReferenceView; import cuchaz.enigma.translation.Translatable; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -25,7 +26,7 @@ import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; import cuchaz.enigma.translation.representation.entry.MethodEntry; -public class EntryReference, C extends Entry> implements Translatable { +public class EntryReference, C extends Entry> implements Translatable, EntryReferenceView { private static final List CONSTRUCTOR_NON_NAMES = Arrays.asList("this", "super", "static"); public final E entry; public final C context; @@ -89,6 +90,11 @@ public class EntryReference, C extends Entry> implements T return this.declaration; } + @Override + public E getEntry() { + return entry; + } + public Entry getNameableEntry() { if (entry instanceof MethodEntry method && method.isConstructor()) { // renaming a constructor really means renaming the class diff --git a/enigma/src/main/java/cuchaz/enigma/api/service/GuiService.java b/enigma/src/main/java/cuchaz/enigma/api/service/GuiService.java new file mode 100644 index 0000000..b00b94d --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/service/GuiService.java @@ -0,0 +1,34 @@ +package cuchaz.enigma.api.service; + +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; + +import javax.swing.KeyStroke; + +import cuchaz.enigma.api.view.GuiView; + +public interface GuiService extends EnigmaService { + EnigmaServiceType TYPE = EnigmaServiceType.create("gui"); + + default void onStart(GuiView gui) { + } + + default void addToEditorContextMenu(GuiView gui, MenuRegistrar registrar) { + } + + interface MenuRegistrar { + void addSeparator(); + + default MenuItemBuilder add(String translationKey) { + return add(() -> translationKey); + } + + MenuItemBuilder add(Supplier translationKey); + } + + interface MenuItemBuilder { + MenuItemBuilder setAccelerator(KeyStroke accelerator); + MenuItemBuilder setEnabledWhen(BooleanSupplier condition); + MenuItemBuilder setAction(Runnable action); + } +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/GuiView.java b/enigma/src/main/java/cuchaz/enigma/api/view/GuiView.java new file mode 100644 index 0000000..15c2dc6 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/GuiView.java @@ -0,0 +1,13 @@ +package cuchaz.enigma.api.view; + +import org.jetbrains.annotations.Nullable; + +import cuchaz.enigma.api.view.entry.EntryReferenceView; + +public interface GuiView { + @Nullable + ProjectView getProject(); + + @Nullable + EntryReferenceView getCursorReference(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/ProjectView.java b/enigma/src/main/java/cuchaz/enigma/api/view/ProjectView.java new file mode 100644 index 0000000..e07645a --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/ProjectView.java @@ -0,0 +1,7 @@ +package cuchaz.enigma.api.view; + +import cuchaz.enigma.api.view.entry.EntryView; + +public interface ProjectView { + T deobfuscate(T entry); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassDefEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassDefEntryView.java new file mode 100644 index 0000000..7cb1829 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassDefEntryView.java @@ -0,0 +1,10 @@ +package cuchaz.enigma.api.view.entry; + +import org.jetbrains.annotations.Nullable; + +public interface ClassDefEntryView extends ClassEntryView, DefEntryView { + @Nullable + ClassEntryView getSuperClass(); + + ClassEntryView[] getInterfaces(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassEntryView.java new file mode 100644 index 0000000..40c0bcb --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/ClassEntryView.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api.view.entry; + +public interface ClassEntryView extends EntryView { + ClassEntryView getParent(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/DefEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/DefEntryView.java new file mode 100644 index 0000000..bf246fb --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/DefEntryView.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api.view.entry; + +public interface DefEntryView { + int getAccessFlags(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryReferenceView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryReferenceView.java new file mode 100644 index 0000000..d49aa1e --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryReferenceView.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api.view.entry; + +public interface EntryReferenceView { + EntryView getEntry(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryView.java new file mode 100644 index 0000000..2dad562 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/EntryView.java @@ -0,0 +1,36 @@ +package cuchaz.enigma.api.view.entry; + +import org.jetbrains.annotations.Nullable; + +public interface EntryView { + /** + * Returns the default name of this entry. + * + *

Examples:

+ *
    + *
  • Outer class: "domain.name.ClassA"
  • + *
  • Inner class: "ClassB"
  • + *
  • Method: "methodC"
  • + *
+ */ + String getName(); + + /** + * Returns the full name of this entry. + * + *

For methods, fields and inner classes, it's their name prefixed with the full name + * of their parent entry.

+ *

For other classes, it's their name prefixed with their package name.

+ * + *

Examples:

+ *
    + *
  • Outer class: "domain.name.ClassA"
  • + *
  • Inner class: "domain.name.ClassA$ClassB"
  • + *
  • Method: "domain.name.ClassA.methodC"
  • + *
+ */ + String getFullName(); + + @Nullable + String getJavadocs(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/FieldEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/FieldEntryView.java new file mode 100644 index 0000000..a7967da --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/FieldEntryView.java @@ -0,0 +1,7 @@ +package cuchaz.enigma.api.view.entry; + +public interface FieldEntryView extends EntryView { + String getDescriptor(); + + ClassEntryView getParent(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableDefEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableDefEntryView.java new file mode 100644 index 0000000..d091560 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableDefEntryView.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api.view.entry; + +public interface LocalVariableDefEntryView extends LocalVariableEntryView { + String getDescriptor(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableEntryView.java new file mode 100644 index 0000000..391bc0f --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/LocalVariableEntryView.java @@ -0,0 +1,9 @@ +package cuchaz.enigma.api.view.entry; + +public interface LocalVariableEntryView extends EntryView { + int getIndex(); + + boolean isArgument(); + + MethodEntryView getParent(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/api/view/entry/MethodEntryView.java b/enigma/src/main/java/cuchaz/enigma/api/view/entry/MethodEntryView.java new file mode 100644 index 0000000..7db192b --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/api/view/entry/MethodEntryView.java @@ -0,0 +1,7 @@ +package cuchaz.enigma.api.view.entry; + +public interface MethodEntryView extends EntryView { + String getDescriptor(); + + ClassEntryView getParent(); +} diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java index 3cbd0c9..2f8b250 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java @@ -17,6 +17,7 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import cuchaz.enigma.api.view.entry.ClassDefEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -24,7 +25,7 @@ import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.representation.AccessFlags; import cuchaz.enigma.translation.representation.Signature; -public class ClassDefEntry extends ClassEntry implements DefEntry { +public class ClassDefEntry extends ClassEntry implements DefEntry, ClassDefEntryView { private final AccessFlags access; private final Signature signature; private final @Nullable ClassEntry superClass; @@ -62,11 +63,13 @@ public class ClassDefEntry extends ClassEntry implements DefEntry { return access; } + @Override @Nullable public ClassEntry getSuperClass() { return superClass; } + @Override public ClassEntry[] getInterfaces() { return interfaces; } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java index 23c4f4f..2662b3c 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java @@ -17,6 +17,7 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import cuchaz.enigma.api.view.entry.ClassEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -25,7 +26,7 @@ import cuchaz.enigma.translation.mapping.IdentifierValidation; import cuchaz.enigma.translation.representation.TypeDescriptor; import cuchaz.enigma.utils.validation.ValidationContext; -public class ClassEntry extends ParentedEntry implements Comparable { +public class ClassEntry extends ParentedEntry implements Comparable, ClassEntryView { private final String fullName; public ClassEntry(String className) { diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java index 82536c7..d6e7729 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java @@ -1,7 +1,13 @@ package cuchaz.enigma.translation.representation.entry; +import cuchaz.enigma.api.view.entry.DefEntryView; import cuchaz.enigma.translation.representation.AccessFlags; -public interface DefEntry

> extends Entry

{ +public interface DefEntry

> extends Entry

, DefEntryView { AccessFlags getAccess(); + + @Override + default int getAccessFlags() { + return getAccess().getFlags(); + } } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java index 568d01c..6f73948 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java @@ -17,26 +17,12 @@ import java.util.Objects; import org.jetbrains.annotations.Nullable; +import cuchaz.enigma.api.view.entry.EntryView; import cuchaz.enigma.translation.Translatable; import cuchaz.enigma.translation.mapping.IdentifierValidation; import cuchaz.enigma.utils.validation.ValidationContext; -public interface Entry

> extends Translatable { - /** - * Returns the default name of this entry. - * - *

For methods, fields and inner classes, it's the same as {@link #getSimpleName()}.

- *

For other classes, it's the same as {@link #getFullName()}.

- * - *

Examples:

- *
    - *
  • Outer class: "domain.name.ClassA"
  • - *
  • Inner class: "ClassB"
  • - *
  • Method: "methodC"
  • - *
- */ - String getName(); - +public interface Entry

> extends Translatable, EntryView { /** * Returns the simple name of this entry. * @@ -52,22 +38,6 @@ public interface Entry

> extends Translatable { */ String getSimpleName(); - /** - * Returns the full name of this entry. - * - *

For methods, fields and inner classes, it's their name prefixed with the full name - * of their parent entry.

- *

For other classes, it's their name prefixed with their package name.

- * - *

Examples:

- *
    - *
  • Outer class: "domain.name.ClassA"
  • - *
  • Inner class: "domain.name.ClassA$ClassB"
  • - *
  • Method: "domain.name.ClassA.methodC"
  • - *
- */ - String getFullName(); - /** * Returns the contextual name of this entry. * @@ -84,8 +54,6 @@ public interface Entry

> extends Translatable { */ String getContextualName(); - String getJavadocs(); - default String getSourceRemapName() { return getName(); } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java index 745485f..dba8644 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java @@ -15,13 +15,14 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; +import cuchaz.enigma.api.view.entry.FieldEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.representation.TypeDescriptor; -public class FieldEntry extends ParentedEntry implements Comparable { +public class FieldEntry extends ParentedEntry implements Comparable, FieldEntryView { protected final TypeDescriptor desc; public FieldEntry(ClassEntry parent, String name, TypeDescriptor desc) { @@ -47,6 +48,11 @@ public class FieldEntry extends ParentedEntry implements Comparable< return this.desc; } + @Override + public String getDescriptor() { + return this.desc.toString(); + } + @Override public FieldEntry withName(String name) { return new FieldEntry(parent, name, desc, null); diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java index 9eda3a9..eca8c5d 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java @@ -4,6 +4,7 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; +import cuchaz.enigma.api.view.entry.LocalVariableDefEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -15,7 +16,7 @@ import cuchaz.enigma.translation.representation.TypeDescriptor; * Created by Thog * 19/10/2016 */ -public class LocalVariableDefEntry extends LocalVariableEntry { +public class LocalVariableDefEntry extends LocalVariableEntry implements LocalVariableDefEntryView { protected final TypeDescriptor desc; public LocalVariableDefEntry(MethodEntry ownerEntry, int index, String name, boolean parameter, TypeDescriptor desc, String javadoc) { @@ -28,6 +29,11 @@ public class LocalVariableDefEntry extends LocalVariableEntry { return desc; } + @Override + public String getDescriptor() { + return desc.toString(); + } + @Override protected TranslateResult extendedTranslate(Translator translator, @NotNull EntryMapping mapping) { TypeDescriptor translatedDesc = translator.translate(desc); diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java index b188fb5..4213ff9 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java @@ -4,6 +4,7 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; +import cuchaz.enigma.api.view.entry.LocalVariableEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -14,7 +15,7 @@ import cuchaz.enigma.translation.mapping.EntryMapping; * Created by Thog * 19/10/2016 */ -public class LocalVariableEntry extends ParentedEntry implements Comparable { +public class LocalVariableEntry extends ParentedEntry implements Comparable, LocalVariableEntryView { protected final int index; protected final boolean parameter; @@ -34,10 +35,12 @@ public class LocalVariableEntry extends ParentedEntry implements Co return MethodEntry.class; } + @Override public boolean isArgument() { return this.parameter; } + @Override public int getIndex() { return index; } diff --git a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java index 3390bc5..d86f156 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java @@ -15,13 +15,14 @@ import java.util.Objects; import org.jetbrains.annotations.NotNull; +import cuchaz.enigma.api.view.entry.MethodEntryView; import cuchaz.enigma.source.RenamableTokenType; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.representation.MethodDescriptor; -public class MethodEntry extends ParentedEntry implements Comparable { +public class MethodEntry extends ParentedEntry implements Comparable, MethodEntryView { protected final MethodDescriptor descriptor; public MethodEntry(ClassEntry parent, String name, MethodDescriptor descriptor) { @@ -47,6 +48,11 @@ public class MethodEntry extends ParentedEntry implements Comparable return this.descriptor; } + @Override + public String getDescriptor() { + return descriptor.toString(); + } + public boolean isConstructor() { return name.equals("") || name.equals(""); } -- cgit v1.2.3