diff options
| author | 2020-06-03 20:16:10 +0200 | |
|---|---|---|
| committer | 2020-06-03 19:16:10 +0100 | |
| commit | 5a286d58e740f1aa5944488c602f5abc1318f6ca (patch) | |
| tree | dfde9eff0c744906b3571390af0f6a6e3be92a91 /enigma-server | |
| parent | Refactor MenuBar (#251) (diff) | |
| download | enigma-fork-5a286d58e740f1aa5944488c602f5abc1318f6ca.tar.gz enigma-fork-5a286d58e740f1aa5944488c602f5abc1318f6ca.tar.xz enigma-fork-5a286d58e740f1aa5944488c602f5abc1318f6ca.zip | |
Editor tabs (#238)
* Split into modules
* Add validation utils from patch-1 branch
* Tabs, iteration 1
* Delete RefreshMode
* Load initial code asynchronously
* Formatting
* Don't do anything when close() gets called multiple times
* Add scroll pane to editor
* Fix getActiveEditor()
* Rename components to more descriptive editorScrollPanes
* Move ClassHandle and related types out of gui package
* Fix tab title bar and other files not updating when changing mappings
* Fix compilation errors
* Start adding renaming functionality to new panel
* Scale validation error marker
* Make most user input validation use ValidationContext
* Fix line numbers not displaying
* Move CodeReader.navigateToToken into PanelEditor
* Add close button on tabs
* Remove TODO, it's fast enough
* Remove JS script action for 2 seconds faster startup
* Add comment on why the action is removed
* ClassHandle/ClassHandleProvider documentation
* Fix language file formatting
* Bulk tab closing operations
* Fix crash when renaming class and not connected to server
* Fix caret jumping to the end of the file when opening
* Increase identifier panel size
* Make popup menu text translatable
* Fix formatting
* Fix compilation issues
* CovertTextField -> ConvertingTextField
* Retain formatting using spaces
* Add de_de.json
* Better decompilation error handling
* Fix some caret related NPEs
* Localization
* Close editor on classhandle delete & fix onInvalidate not running on the Swing thread
* Fix crash when trying to close a tab from onDeleted class handle listener
Co-authored-by: Runemoro <runemoro1@gmail.com>
Diffstat (limited to 'enigma-server')
9 files changed, 102 insertions, 57 deletions
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java b/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java index 720744b..1b0191b 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java | |||
| @@ -5,19 +5,20 @@ import cuchaz.enigma.translation.mapping.EntryMapping; | |||
| 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 6 | import cuchaz.enigma.network.packet.Packet; | 6 | import cuchaz.enigma.network.packet.Packet; |
| 7 | import cuchaz.enigma.translation.representation.entry.Entry; | 7 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 8 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 8 | 9 | ||
| 9 | import java.util.List; | 10 | import java.util.List; |
| 10 | 11 | ||
| 11 | public interface ClientPacketHandler { | 12 | public interface ClientPacketHandler { |
| 12 | void openMappings(EntryTree<EntryMapping> mappings); | 13 | void openMappings(EntryTree<EntryMapping> mappings); |
| 13 | 14 | ||
| 14 | void rename(EntryReference<Entry<?>, Entry<?>> reference, String newName, boolean refreshClassTree, boolean jumpToReference); | 15 | void rename(ValidationContext vc, EntryReference<Entry<?>, Entry<?>> reference, String newName, boolean refreshClassTree); |
| 15 | 16 | ||
| 16 | void removeMapping(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference); | 17 | void removeMapping(ValidationContext vc, EntryReference<Entry<?>, Entry<?>> reference); |
| 17 | 18 | ||
| 18 | void changeDocs(EntryReference<Entry<?>, Entry<?>> reference, String updatedDocs, boolean jumpToReference); | 19 | void changeDocs(ValidationContext vc, EntryReference<Entry<?>, Entry<?>> reference, String updatedDocs); |
| 19 | 20 | ||
| 20 | void markAsDeobfuscated(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference); | 21 | void markAsDeobfuscated(ValidationContext vc, EntryReference<Entry<?>, Entry<?>> reference); |
| 21 | 22 | ||
| 22 | void disconnectIfConnected(String reason); | 23 | void disconnectIfConnected(String reason); |
| 23 | 24 | ||
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java index 1b52cf1..23ffe99 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import java.io.DataInput; | ||
| 4 | import java.io.DataOutput; | ||
| 5 | import java.io.IOException; | ||
| 6 | |||
| 3 | import cuchaz.enigma.translation.mapping.EntryMapping; | 7 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 4 | import cuchaz.enigma.network.EnigmaServer; | 8 | import cuchaz.enigma.network.EnigmaServer; |
| 5 | import cuchaz.enigma.network.Message; | 9 | import cuchaz.enigma.network.Message; |
| 6 | import cuchaz.enigma.network.ServerPacketHandler; | 10 | import cuchaz.enigma.network.ServerPacketHandler; |
| 7 | import cuchaz.enigma.translation.representation.entry.Entry; | 11 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 8 | import cuchaz.enigma.utils.Utils; | 12 | import cuchaz.enigma.utils.Utils; |
| 9 | 13 | import cuchaz.enigma.utils.validation.PrintValidatable; | |
| 10 | import java.io.DataInput; | 14 | import cuchaz.enigma.utils.validation.ValidationContext; |
| 11 | import java.io.DataOutput; | ||
| 12 | import java.io.IOException; | ||
| 13 | 15 | ||
| 14 | public class ChangeDocsC2SPacket implements Packet<ServerPacketHandler> { | 16 | public class ChangeDocsC2SPacket implements Packet<ServerPacketHandler> { |
| 15 | private Entry<?> entry; | 17 | private Entry<?> entry; |
| @@ -37,6 +39,9 @@ public class ChangeDocsC2SPacket implements Packet<ServerPacketHandler> { | |||
| 37 | 39 | ||
| 38 | @Override | 40 | @Override |
| 39 | public void handle(ServerPacketHandler handler) { | 41 | public void handle(ServerPacketHandler handler) { |
| 42 | ValidationContext vc = new ValidationContext(); | ||
| 43 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 44 | |||
| 40 | EntryMapping mapping = handler.getServer().getMappings().getDeobfMapping(entry); | 45 | EntryMapping mapping = handler.getServer().getMappings().getDeobfMapping(entry); |
| 41 | 46 | ||
| 42 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); | 47 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); |
| @@ -49,11 +54,12 @@ public class ChangeDocsC2SPacket implements Packet<ServerPacketHandler> { | |||
| 49 | if (mapping == null) { | 54 | if (mapping == null) { |
| 50 | mapping = new EntryMapping(handler.getServer().getMappings().deobfuscate(entry).getName()); | 55 | mapping = new EntryMapping(handler.getServer().getMappings().deobfuscate(entry).getName()); |
| 51 | } | 56 | } |
| 52 | handler.getServer().getMappings().mapFromObf(entry, mapping.withDocs(Utils.isBlank(newDocs) ? null : newDocs)); | 57 | handler.getServer().getMappings().mapFromObf(vc, entry, mapping.withDocs(Utils.isBlank(newDocs) ? null : newDocs)); |
| 58 | |||
| 59 | if (!vc.canProceed()) return; | ||
| 53 | 60 | ||
| 54 | int syncId = handler.getServer().lockEntry(handler.getClient(), entry); | 61 | int syncId = handler.getServer().lockEntry(handler.getClient(), entry); |
| 55 | handler.getServer().sendToAllExcept(handler.getClient(), new ChangeDocsS2CPacket(syncId, entry, newDocs)); | 62 | handler.getServer().sendToAllExcept(handler.getClient(), new ChangeDocsS2CPacket(syncId, entry, newDocs)); |
| 56 | handler.getServer().sendMessage(Message.editDocs(handler.getServer().getUsername(handler.getClient()), entry)); | 63 | handler.getServer().sendMessage(Message.editDocs(handler.getServer().getUsername(handler.getClient()), entry)); |
| 57 | } | 64 | } |
| 58 | |||
| 59 | } | 65 | } |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java index 12a3025..78fa4fa 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | ||
| 4 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | |||
| 7 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 5 | import java.io.IOException; |
| 10 | 6 | ||
| 7 | import cuchaz.enigma.analysis.EntryReference; | ||
| 8 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 11 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 12 | |||
| 11 | public class ChangeDocsS2CPacket implements Packet<ClientPacketHandler> { | 13 | public class ChangeDocsS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 14 | private int syncId; |
| 13 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| @@ -38,7 +40,12 @@ public class ChangeDocsS2CPacket implements Packet<ClientPacketHandler> { | |||
| 38 | 40 | ||
| 39 | @Override | 41 | @Override |
| 40 | public void handle(ClientPacketHandler controller) { | 42 | public void handle(ClientPacketHandler controller) { |
| 41 | controller.changeDocs(new EntryReference<>(entry, entry.getName()), newDocs, false); | 43 | ValidationContext vc = new ValidationContext(); |
| 44 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 45 | |||
| 46 | controller.changeDocs(vc, new EntryReference<>(entry, entry.getName()), newDocs); | ||
| 47 | |||
| 48 | if (!vc.canProceed()) return; | ||
| 42 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 49 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 43 | } | 50 | } |
| 44 | } | 51 | } |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java index a41c620..732c744 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java | |||
| @@ -1,14 +1,16 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | ||
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | import cuchaz.enigma.network.Message; | ||
| 7 | |||
| 8 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 9 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 10 | import java.io.IOException; | 5 | import java.io.IOException; |
| 11 | 6 | ||
| 7 | import cuchaz.enigma.network.Message; | ||
| 8 | import cuchaz.enigma.network.ServerPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 10 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 11 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 12 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 13 | |||
| 12 | public class MarkDeobfuscatedC2SPacket implements Packet<ServerPacketHandler> { | 14 | public class MarkDeobfuscatedC2SPacket implements Packet<ServerPacketHandler> { |
| 13 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| 14 | 16 | ||
| @@ -31,18 +33,24 @@ public class MarkDeobfuscatedC2SPacket implements Packet<ServerPacketHandler> { | |||
| 31 | 33 | ||
| 32 | @Override | 34 | @Override |
| 33 | public void handle(ServerPacketHandler handler) { | 35 | public void handle(ServerPacketHandler handler) { |
| 36 | ValidationContext vc = new ValidationContext(); | ||
| 37 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 38 | |||
| 34 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); | 39 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); |
| 40 | |||
| 35 | if (!valid) { | 41 | if (!valid) { |
| 36 | handler.getServer().sendCorrectMapping(handler.getClient(), entry, true); | 42 | handler.getServer().sendCorrectMapping(handler.getClient(), entry, true); |
| 37 | return; | 43 | return; |
| 38 | } | 44 | } |
| 39 | 45 | ||
| 40 | handler.getServer().getMappings().mapFromObf(entry, new EntryMapping(handler.getServer().getMappings().deobfuscate(entry).getName())); | 46 | handler.getServer().getMappings().mapFromObf(vc, entry, new EntryMapping(handler.getServer().getMappings().deobfuscate(entry).getName())); |
| 47 | |||
| 48 | if (!vc.canProceed()) return; | ||
| 49 | |||
| 41 | handler.getServer().log(handler.getServer().getUsername(handler.getClient()) + " marked " + entry + " as deobfuscated"); | 50 | handler.getServer().log(handler.getServer().getUsername(handler.getClient()) + " marked " + entry + " as deobfuscated"); |
| 42 | 51 | ||
| 43 | int syncId = handler.getServer().lockEntry(handler.getClient(), entry); | 52 | int syncId = handler.getServer().lockEntry(handler.getClient(), entry); |
| 44 | handler.getServer().sendToAllExcept(handler.getClient(), new MarkDeobfuscatedS2CPacket(syncId, entry)); | 53 | handler.getServer().sendToAllExcept(handler.getClient(), new MarkDeobfuscatedS2CPacket(syncId, entry)); |
| 45 | handler.getServer().sendMessage(Message.markDeobf(handler.getServer().getUsername(handler.getClient()), entry)); | 54 | handler.getServer().sendMessage(Message.markDeobf(handler.getServer().getUsername(handler.getClient()), entry)); |
| 46 | |||
| 47 | } | 55 | } |
| 48 | } | 56 | } |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java index 7504430..969d13c 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | ||
| 4 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | |||
| 7 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 5 | import java.io.IOException; |
| 10 | 6 | ||
| 7 | import cuchaz.enigma.analysis.EntryReference; | ||
| 8 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 11 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 12 | |||
| 11 | public class MarkDeobfuscatedS2CPacket implements Packet<ClientPacketHandler> { | 13 | public class MarkDeobfuscatedS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 14 | private int syncId; |
| 13 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| @@ -34,7 +36,12 @@ public class MarkDeobfuscatedS2CPacket implements Packet<ClientPacketHandler> { | |||
| 34 | 36 | ||
| 35 | @Override | 37 | @Override |
| 36 | public void handle(ClientPacketHandler controller) { | 38 | public void handle(ClientPacketHandler controller) { |
| 37 | controller.markAsDeobfuscated(new EntryReference<>(entry, entry.getName()), false); | 39 | ValidationContext vc = new ValidationContext(); |
| 40 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 41 | |||
| 42 | controller.markAsDeobfuscated(vc, new EntryReference<>(entry, entry.getName())); | ||
| 43 | |||
| 44 | if (!vc.canProceed()) return; | ||
| 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 45 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 39 | } | 46 | } |
| 40 | } | 47 | } |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java index 3f85228..298e674 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java | |||
| @@ -1,14 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | ||
| 4 | import cuchaz.enigma.translation.mapping.IllegalNameException; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | import cuchaz.enigma.network.Message; | ||
| 7 | |||
| 8 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 9 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 10 | import java.io.IOException; | 5 | import java.io.IOException; |
| 11 | 6 | ||
| 7 | import cuchaz.enigma.network.Message; | ||
| 8 | import cuchaz.enigma.network.ServerPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 11 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 12 | |||
| 12 | public class RemoveMappingC2SPacket implements Packet<ServerPacketHandler> { | 13 | public class RemoveMappingC2SPacket implements Packet<ServerPacketHandler> { |
| 13 | private Entry<?> entry; | 14 | private Entry<?> entry; |
| 14 | 15 | ||
| @@ -31,14 +32,14 @@ public class RemoveMappingC2SPacket implements Packet<ServerPacketHandler> { | |||
| 31 | 32 | ||
| 32 | @Override | 33 | @Override |
| 33 | public void handle(ServerPacketHandler handler) { | 34 | public void handle(ServerPacketHandler handler) { |
| 35 | ValidationContext vc = new ValidationContext(); | ||
| 36 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 37 | |||
| 34 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); | 38 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); |
| 35 | 39 | ||
| 36 | if (valid) { | 40 | if (valid) { |
| 37 | try { | 41 | handler.getServer().getMappings().removeByObf(vc, entry); |
| 38 | handler.getServer().getMappings().removeByObf(entry); | 42 | valid = vc.canProceed(); |
| 39 | } catch (IllegalNameException e) { | ||
| 40 | valid = false; | ||
| 41 | } | ||
| 42 | } | 43 | } |
| 43 | 44 | ||
| 44 | if (!valid) { | 45 | if (!valid) { |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java index 70d803c..e336c7b 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | ||
| 4 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | |||
| 7 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 5 | import java.io.IOException; |
| 10 | 6 | ||
| 7 | import cuchaz.enigma.analysis.EntryReference; | ||
| 8 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 11 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 12 | |||
| 11 | public class RemoveMappingS2CPacket implements Packet<ClientPacketHandler> { | 13 | public class RemoveMappingS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 14 | private int syncId; |
| 13 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| @@ -34,7 +36,12 @@ public class RemoveMappingS2CPacket implements Packet<ClientPacketHandler> { | |||
| 34 | 36 | ||
| 35 | @Override | 37 | @Override |
| 36 | public void handle(ClientPacketHandler controller) { | 38 | public void handle(ClientPacketHandler controller) { |
| 37 | controller.removeMapping(new EntryReference<>(entry, entry.getName()), false); | 39 | ValidationContext vc = new ValidationContext(); |
| 40 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 41 | |||
| 42 | controller.removeMapping(vc, new EntryReference<>(entry, entry.getName())); | ||
| 43 | |||
| 44 | if (!vc.canProceed()) return; | ||
| 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 45 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 39 | } | 46 | } |
| 40 | } | 47 | } |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java index e3e7e37..6a7d2fd 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java | |||
| @@ -1,14 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import java.io.DataInput; | ||
| 4 | import java.io.DataOutput; | ||
| 5 | import java.io.IOException; | ||
| 6 | |||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | 7 | import cuchaz.enigma.network.ServerPacketHandler; |
| 4 | import cuchaz.enigma.translation.mapping.IllegalNameException; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 8 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.representation.entry.Entry; | 9 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 7 | import cuchaz.enigma.network.Message; | 10 | import cuchaz.enigma.network.Message; |
| 8 | 11 | import cuchaz.enigma.utils.validation.PrintValidatable; | |
| 9 | import java.io.DataInput; | 12 | import cuchaz.enigma.utils.validation.ValidationContext; |
| 10 | import java.io.DataOutput; | ||
| 11 | import java.io.IOException; | ||
| 12 | 13 | ||
| 13 | public class RenameC2SPacket implements Packet<ServerPacketHandler> { | 14 | public class RenameC2SPacket implements Packet<ServerPacketHandler> { |
| 14 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| @@ -40,14 +41,14 @@ public class RenameC2SPacket implements Packet<ServerPacketHandler> { | |||
| 40 | 41 | ||
| 41 | @Override | 42 | @Override |
| 42 | public void handle(ServerPacketHandler handler) { | 43 | public void handle(ServerPacketHandler handler) { |
| 44 | ValidationContext vc = new ValidationContext(); | ||
| 45 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 46 | |||
| 43 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); | 47 | boolean valid = handler.getServer().canModifyEntry(handler.getClient(), entry); |
| 44 | 48 | ||
| 45 | if (valid) { | 49 | if (valid) { |
| 46 | try { | 50 | handler.getServer().getMappings().mapFromObf(vc, entry, new EntryMapping(newName)); |
| 47 | handler.getServer().getMappings().mapFromObf(entry, new EntryMapping(newName)); | 51 | valid = vc.canProceed(); |
| 48 | } catch (IllegalNameException e) { | ||
| 49 | valid = false; | ||
| 50 | } | ||
| 51 | } | 52 | } |
| 52 | 53 | ||
| 53 | if (!valid) { | 54 | if (!valid) { |
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java index 787e89e..fdf0654 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | ||
| 4 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 6 | |||
| 7 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 5 | import java.io.IOException; |
| 10 | 6 | ||
| 7 | import cuchaz.enigma.analysis.EntryReference; | ||
| 8 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.utils.validation.PrintValidatable; | ||
| 11 | import cuchaz.enigma.utils.validation.ValidationContext; | ||
| 12 | |||
| 11 | public class RenameS2CPacket implements Packet<ClientPacketHandler> { | 13 | public class RenameS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 14 | private int syncId; |
| 13 | private Entry<?> entry; | 15 | private Entry<?> entry; |
| @@ -42,7 +44,12 @@ public class RenameS2CPacket implements Packet<ClientPacketHandler> { | |||
| 42 | 44 | ||
| 43 | @Override | 45 | @Override |
| 44 | public void handle(ClientPacketHandler controller) { | 46 | public void handle(ClientPacketHandler controller) { |
| 45 | controller.rename(new EntryReference<>(entry, entry.getName()), newName, refreshClassTree, false); | 47 | ValidationContext vc = new ValidationContext(); |
| 48 | vc.setActiveElement(PrintValidatable.INSTANCE); | ||
| 49 | |||
| 50 | controller.rename(vc, new EntryReference<>(entry, entry.getName()), newName, refreshClassTree); | ||
| 51 | |||
| 52 | if (!vc.canProceed()) return; | ||
| 46 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 53 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 47 | } | 54 | } |
| 48 | } | 55 | } |