Rickylachow

Untitled

Dec 13th, 2022
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. package prymarp.prymarp.events.worldguardevents;
  2.  
  3. import com.sk89q.worldedit.util.Location;
  4. import com.sk89q.worldedit.world.World;
  5. import com.sk89q.worldguard.LocalPlayer;
  6. import com.sk89q.worldguard.commands.CommandUtils;
  7. import com.sk89q.worldguard.protection.ApplicableRegionSet;
  8. import com.sk89q.worldguard.protection.flags.Flags;
  9. import com.sk89q.worldguard.protection.flags.StateFlag;
  10. import com.sk89q.worldguard.protection.flags.StateFlag.State;
  11. import com.sk89q.worldguard.session.MoveType;
  12. import com.sk89q.worldguard.session.Session;
  13. import com.sk89q.worldguard.session.handler.FlagValueChangeHandler;
  14. import com.sk89q.worldguard.session.handler.Handler;
  15.  
  16. import static prymarp.prymarp.PrymaRP.PRYMAFLAG_COMUNE_EXIT;
  17.  
  18. public class WGPrymaRegistrazioneExit extends FlagValueChangeHandler<State> {
  19.  
  20. public static final Factory FACTORY = new Factory();
  21.  
  22. public static class Factory extends Handler.Factory<WGPrymaRegistrazioneExit> {
  23. @Override
  24. public WGPrymaRegistrazioneExit create(Session session) {
  25. return new WGPrymaRegistrazioneExit(session);
  26. }
  27. }
  28.  
  29. private static final long MESSAGE_THRESHOLD = 1000 * 2;
  30. private String storedMessage;
  31. private boolean exitViaTeleport = false;
  32. private long lastMessage;
  33.  
  34. public WGPrymaRegistrazioneExit(Session session) {
  35. super(session, PRYMAFLAG_COMUNE_EXIT);
  36. }
  37.  
  38. private void update(LocalPlayer localPlayer, ApplicableRegionSet set, boolean allowed) {
  39. if (!allowed) {
  40. storedMessage = "Non puoi uscire da qua prima di aver completato la registrazione!";
  41. exitViaTeleport = set.testState(localPlayer, Flags.EXIT_VIA_TELEPORT);
  42. }
  43. }
  44.  
  45. private void sendMessage(LocalPlayer player) {
  46. long now = System.currentTimeMillis();
  47.  
  48. if ((now - lastMessage) > MESSAGE_THRESHOLD && storedMessage != null && !storedMessage.isEmpty()) {
  49. player.printRaw(CommandUtils.replaceColorMacros(storedMessage));
  50. lastMessage = now;
  51. }
  52. }
  53.  
  54. @Override
  55. protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, State value) {
  56. update(player, set, StateFlag.test(value));
  57. }
  58.  
  59. @Override
  60. protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) {
  61. if (getSession().getManager().hasBypass(player, (World) from.getExtent())) {
  62. return true;
  63. }
  64.  
  65. boolean lastAllowed = StateFlag.test(lastValue);
  66. boolean allowed = StateFlag.test(currentValue);
  67.  
  68. if (allowed && !lastAllowed && !(moveType.isTeleport() && exitViaTeleport) && moveType.isCancellable()) {
  69. Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE);
  70. if (override == null || !override) {
  71. sendMessage(player);
  72. return false;
  73. }
  74. }
  75.  
  76. update(player, toSet, allowed);
  77. return true;
  78. }
  79.  
  80. @Override
  81. protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) {
  82. if (getSession().getManager().hasBypass(player, (World) from.getExtent())) {
  83. return true;
  84. }
  85.  
  86. boolean lastAllowed = StateFlag.test(lastValue);
  87.  
  88. if (!lastAllowed && moveType.isCancellable()) {
  89. Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE);
  90. if (override == null || !override) {
  91. sendMessage(player);
  92. return false;
  93. }
  94. }
  95.  
  96. return true;
  97. }
  98.  
  99. }
Advertisement
Add Comment
Please, Sign In to add comment