summaryrefslogtreecommitdiff
path: root/enigma-server
diff options
context:
space:
mode:
authorGravatar 2xsaiko2020-06-03 20:16:10 +0200
committerGravatar GitHub2020-06-03 19:16:10 +0100
commit5a286d58e740f1aa5944488c602f5abc1318f6ca (patch)
treedfde9eff0c744906b3571390af0f6a6e3be92a91 /enigma-server
parentRefactor MenuBar (#251) (diff)
downloadenigma-5a286d58e740f1aa5944488c602f5abc1318f6ca.tar.gz
enigma-5a286d58e740f1aa5944488c602f5abc1318f6ca.tar.xz
enigma-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')
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java9
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java18
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java17
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java22
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java17
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java21
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java17
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java21
-rw-r--r--enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java17
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 720744bf..1b0191be 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;
5import cuchaz.enigma.translation.mapping.tree.EntryTree; 5import cuchaz.enigma.translation.mapping.tree.EntryTree;
6import cuchaz.enigma.network.packet.Packet; 6import cuchaz.enigma.network.packet.Packet;
7import cuchaz.enigma.translation.representation.entry.Entry; 7import cuchaz.enigma.translation.representation.entry.Entry;
8import cuchaz.enigma.utils.validation.ValidationContext;
8 9
9import java.util.List; 10import java.util.List;
10 11
11public interface ClientPacketHandler { 12public 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 1b52cf14..23ffe993 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import java.io.DataInput;
4import java.io.DataOutput;
5import java.io.IOException;
6
3import cuchaz.enigma.translation.mapping.EntryMapping; 7import cuchaz.enigma.translation.mapping.EntryMapping;
4import cuchaz.enigma.network.EnigmaServer; 8import cuchaz.enigma.network.EnigmaServer;
5import cuchaz.enigma.network.Message; 9import cuchaz.enigma.network.Message;
6import cuchaz.enigma.network.ServerPacketHandler; 10import cuchaz.enigma.network.ServerPacketHandler;
7import cuchaz.enigma.translation.representation.entry.Entry; 11import cuchaz.enigma.translation.representation.entry.Entry;
8import cuchaz.enigma.utils.Utils; 12import cuchaz.enigma.utils.Utils;
9 13import cuchaz.enigma.utils.validation.PrintValidatable;
10import java.io.DataInput; 14import cuchaz.enigma.utils.validation.ValidationContext;
11import java.io.DataOutput;
12import java.io.IOException;
13 15
14public class ChangeDocsC2SPacket implements Packet<ServerPacketHandler> { 16public 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 12a30253..78fa4fa9 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.analysis.EntryReference;
4import cuchaz.enigma.network.ClientPacketHandler;
5import cuchaz.enigma.translation.representation.entry.Entry;
6
7import java.io.DataInput; 3import java.io.DataInput;
8import java.io.DataOutput; 4import java.io.DataOutput;
9import java.io.IOException; 5import java.io.IOException;
10 6
7import cuchaz.enigma.analysis.EntryReference;
8import cuchaz.enigma.network.ClientPacketHandler;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.utils.validation.PrintValidatable;
11import cuchaz.enigma.utils.validation.ValidationContext;
12
11public class ChangeDocsS2CPacket implements Packet<ClientPacketHandler> { 13public 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 a41c620f..732c7448 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.network.ServerPacketHandler;
4import cuchaz.enigma.translation.mapping.EntryMapping;
5import cuchaz.enigma.translation.representation.entry.Entry;
6import cuchaz.enigma.network.Message;
7
8import java.io.DataInput; 3import java.io.DataInput;
9import java.io.DataOutput; 4import java.io.DataOutput;
10import java.io.IOException; 5import java.io.IOException;
11 6
7import cuchaz.enigma.network.Message;
8import cuchaz.enigma.network.ServerPacketHandler;
9import cuchaz.enigma.translation.mapping.EntryMapping;
10import cuchaz.enigma.translation.representation.entry.Entry;
11import cuchaz.enigma.utils.validation.PrintValidatable;
12import cuchaz.enigma.utils.validation.ValidationContext;
13
12public class MarkDeobfuscatedC2SPacket implements Packet<ServerPacketHandler> { 14public 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 7504430d..969d13c5 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.analysis.EntryReference;
4import cuchaz.enigma.network.ClientPacketHandler;
5import cuchaz.enigma.translation.representation.entry.Entry;
6
7import java.io.DataInput; 3import java.io.DataInput;
8import java.io.DataOutput; 4import java.io.DataOutput;
9import java.io.IOException; 5import java.io.IOException;
10 6
7import cuchaz.enigma.analysis.EntryReference;
8import cuchaz.enigma.network.ClientPacketHandler;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.utils.validation.PrintValidatable;
11import cuchaz.enigma.utils.validation.ValidationContext;
12
11public class MarkDeobfuscatedS2CPacket implements Packet<ClientPacketHandler> { 13public 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 3f852285..298e674f 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.network.ServerPacketHandler;
4import cuchaz.enigma.translation.mapping.IllegalNameException;
5import cuchaz.enigma.translation.representation.entry.Entry;
6import cuchaz.enigma.network.Message;
7
8import java.io.DataInput; 3import java.io.DataInput;
9import java.io.DataOutput; 4import java.io.DataOutput;
10import java.io.IOException; 5import java.io.IOException;
11 6
7import cuchaz.enigma.network.Message;
8import cuchaz.enigma.network.ServerPacketHandler;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.utils.validation.PrintValidatable;
11import cuchaz.enigma.utils.validation.ValidationContext;
12
12public class RemoveMappingC2SPacket implements Packet<ServerPacketHandler> { 13public 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 70d803c1..e336c7b2 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.analysis.EntryReference;
4import cuchaz.enigma.network.ClientPacketHandler;
5import cuchaz.enigma.translation.representation.entry.Entry;
6
7import java.io.DataInput; 3import java.io.DataInput;
8import java.io.DataOutput; 4import java.io.DataOutput;
9import java.io.IOException; 5import java.io.IOException;
10 6
7import cuchaz.enigma.analysis.EntryReference;
8import cuchaz.enigma.network.ClientPacketHandler;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.utils.validation.PrintValidatable;
11import cuchaz.enigma.utils.validation.ValidationContext;
12
11public class RemoveMappingS2CPacket implements Packet<ClientPacketHandler> { 13public 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 e3e7e379..6a7d2fd1 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import java.io.DataInput;
4import java.io.DataOutput;
5import java.io.IOException;
6
3import cuchaz.enigma.network.ServerPacketHandler; 7import cuchaz.enigma.network.ServerPacketHandler;
4import cuchaz.enigma.translation.mapping.IllegalNameException;
5import cuchaz.enigma.translation.mapping.EntryMapping; 8import cuchaz.enigma.translation.mapping.EntryMapping;
6import cuchaz.enigma.translation.representation.entry.Entry; 9import cuchaz.enigma.translation.representation.entry.Entry;
7import cuchaz.enigma.network.Message; 10import cuchaz.enigma.network.Message;
8 11import cuchaz.enigma.utils.validation.PrintValidatable;
9import java.io.DataInput; 12import cuchaz.enigma.utils.validation.ValidationContext;
10import java.io.DataOutput;
11import java.io.IOException;
12 13
13public class RenameC2SPacket implements Packet<ServerPacketHandler> { 14public 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 787e89e6..fdf06540 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 @@
1package cuchaz.enigma.network.packet; 1package cuchaz.enigma.network.packet;
2 2
3import cuchaz.enigma.analysis.EntryReference;
4import cuchaz.enigma.network.ClientPacketHandler;
5import cuchaz.enigma.translation.representation.entry.Entry;
6
7import java.io.DataInput; 3import java.io.DataInput;
8import java.io.DataOutput; 4import java.io.DataOutput;
9import java.io.IOException; 5import java.io.IOException;
10 6
7import cuchaz.enigma.analysis.EntryReference;
8import cuchaz.enigma.network.ClientPacketHandler;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.utils.validation.PrintValidatable;
11import cuchaz.enigma.utils.validation.ValidationContext;
12
11public class RenameS2CPacket implements Packet<ClientPacketHandler> { 13public 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}