|
17 | 17 | package ms.kevi.plotplugin.command.defaults; |
18 | 18 |
|
19 | 19 | import cn.nukkit.Player; |
20 | | -import cn.nukkit.event.EventHandler; |
21 | | -import cn.nukkit.event.Listener; |
22 | | -import cn.nukkit.event.player.PlayerFormRespondedEvent; |
23 | 20 | import cn.nukkit.form.element.ElementButton; |
24 | | -import cn.nukkit.form.response.FormResponse; |
25 | | -import cn.nukkit.form.response.FormResponseSimple; |
| 21 | +import cn.nukkit.form.handler.FormResponseHandler; |
26 | 22 | import cn.nukkit.form.window.FormWindowSimple; |
27 | 23 | import ms.kevi.plotplugin.PlotPlugin; |
28 | 24 | import ms.kevi.plotplugin.command.PlotCommand; |
29 | 25 | import ms.kevi.plotplugin.command.SubCommand; |
30 | 26 | import ms.kevi.plotplugin.lang.TranslationKey; |
31 | 27 | import ms.kevi.plotplugin.manager.PlotManager; |
32 | 28 |
|
33 | | -import java.util.HashMap; |
34 | 29 | import java.util.Map; |
35 | | -import java.util.function.Consumer; |
36 | 30 |
|
37 | 31 | /** |
38 | 32 | * @author Kevims KCodeYT |
39 | 33 | * @version 1.0 |
40 | 34 | */ |
41 | 35 | public class TeleportCommand extends SubCommand { |
42 | 36 |
|
43 | | - private final Map<Player, Map<Integer, Consumer<FormResponse>>> map; |
44 | | - |
45 | 37 | public TeleportCommand(PlotPlugin plugin, PlotCommand parent) { |
46 | 38 | super(plugin, parent, "teleport", "tp"); |
47 | 39 | this.setPermission("plot.command.admin.teleport"); |
48 | | - |
49 | | - this.map = new HashMap<>(); |
50 | | - |
51 | | - this.plugin.getServer().getPluginManager().registerEvents(new Listener() { |
52 | | - @EventHandler |
53 | | - public void onResponded(PlayerFormRespondedEvent event) { |
54 | | - final Map<Integer, Consumer<FormResponse>> map; |
55 | | - if((map = TeleportCommand.this.map.get(event.getPlayer())) != null) { |
56 | | - final Consumer<FormResponse> consumer = map.get(event.getFormID()); |
57 | | - if(consumer != null) consumer.accept(event.getResponse()); |
58 | | - } |
59 | | - } |
60 | | - }, this.plugin); |
61 | 40 | } |
62 | 41 |
|
63 | 42 | @Override |
64 | 43 | public boolean execute(Player player, String[] args) { |
65 | | - Map<Integer, Consumer<FormResponse>> map; |
66 | | - if((map = this.map.get(player)) == null) |
67 | | - this.map.put(player, map = new HashMap<>()); |
68 | | - |
69 | 44 | final Map<String, PlotManager> plotManagers = this.plugin.getPlotManagerMap(); |
70 | 45 | final FormWindowSimple window = new FormWindowSimple(this.translate(player, TranslationKey.TELEPORT_FORM_TITLE), ""); |
71 | 46 |
|
72 | 47 | for(String levelName : plotManagers.keySet()) |
73 | 48 | window.addButton(new ElementButton(levelName)); |
74 | 49 |
|
75 | | - map.put(player.showFormWindow(window), response -> { |
76 | | - if(response instanceof FormResponseSimple) { |
77 | | - final PlotManager plotManager = plotManagers.get(((FormResponseSimple) response).getClickedButton().getText()); |
| 50 | + window.addHandler(FormResponseHandler.withoutPlayer(ignored -> { |
| 51 | + if(!window.wasClosed()) { |
| 52 | + final PlotManager plotManager = plotManagers.get(window.getResponse().getClickedButton().getText()); |
78 | 53 | if(plotManager == null) return; |
79 | 54 |
|
80 | 55 | player.teleport(plotManager.getLevel().getSpawnLocation()); |
81 | 56 | player.sendMessage(this.translate(player, TranslationKey.TELEPORT_SUCCESS, plotManager.getLevel().getFolderName())); |
82 | 57 | } |
83 | | - }); |
| 58 | + })); |
| 59 | + |
| 60 | + player.showFormWindow(window); |
84 | 61 | return false; |
85 | 62 | } |
86 | 63 |
|
|
0 commit comments