ModNetHandlerPlayServer.java 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package me.km.playerbank;
  2. import me.km.KajetansMod;
  3. import me.km.events.PlayerLeaveMessageEvent;
  4. import me.km.snuviscript.ScriptEvents;
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.entity.player.EntityPlayerMP;
  7. import net.minecraft.network.NetHandlerPlayServer;
  8. import net.minecraft.network.NetworkManager;
  9. import net.minecraft.network.play.client.CPacketChatMessage;
  10. import net.minecraft.network.play.server.SPacketChat;
  11. import net.minecraft.server.MinecraftServer;
  12. import net.minecraft.util.text.ITextComponent;
  13. import net.minecraft.util.text.TextComponentString;
  14. import net.minecraft.util.text.TextComponentTranslation;
  15. import net.minecraft.util.text.TextFormatting;
  16. import net.minecraftforge.common.MinecraftForge;
  17. import org.apache.logging.log4j.LogManager;
  18. import org.apache.logging.log4j.Logger;
  19. public class ModNetHandlerPlayServer extends NetHandlerPlayServer
  20. {
  21. private static final Logger LOGGER = LogManager.getLogger();
  22. private final MinecraftServer serverController;
  23. private final ScriptEvents scriptEvents;
  24. public ModNetHandlerPlayServer(MinecraftServer server, NetworkManager nm, EntityPlayerMP p)
  25. {
  26. super(server, nm, p);
  27. serverController = server;
  28. scriptEvents = KajetansMod.scripts.getEvent(ScriptEvents.class);
  29. }
  30. @Override
  31. public void processChatMessage(CPacketChatMessage packetIn)
  32. {
  33. if(packetIn.getMessage().startsWith("/"))
  34. {
  35. String s = packetIn.getMessage();
  36. int i = s.indexOf(" ");
  37. String command;
  38. String left;
  39. if(i == -1)
  40. {
  41. command = s.substring(1).toLowerCase();
  42. left = "";
  43. }
  44. else
  45. {
  46. command = s.substring(1, i).toLowerCase();
  47. left = s.substring(i);
  48. }
  49. if(KajetansMod.scripts.isRegisteredScriptCommand(command))
  50. {
  51. if (this.player.getChatVisibility() == EntityPlayer.EnumChatVisibility.HIDDEN)
  52. {
  53. TextComponentTranslation trans = new TextComponentTranslation("chat.cannotSend", new Object[0]);
  54. trans.getStyle().setColor(TextFormatting.RED);
  55. this.sendPacket(new SPacketChat(trans));
  56. }
  57. else
  58. {
  59. this.player.markPlayerActive();
  60. scriptEvents.onCustomCommand(this.player, command, left);
  61. }
  62. }
  63. else
  64. {
  65. super.processChatMessage(new CPacketChatMessage("/" + command + left));
  66. }
  67. return;
  68. }
  69. super.processChatMessage(packetIn);
  70. }
  71. @Override
  72. public void onDisconnect(ITextComponent reason)
  73. {
  74. LOGGER.info("{} lost connection: {}", new Object[] {this.player.getName(), reason});
  75. this.serverController.refreshStatusNextTick();
  76. // Custom Leave Message - Start
  77. PlayerLeaveMessageEvent event = new PlayerLeaveMessageEvent(this.player, "No message was set.");
  78. if(!MinecraftForge.EVENT_BUS.post(event))
  79. {
  80. TextComponentString text = new TextComponentString(event.getMessage());
  81. this.serverController.getPlayerList().sendMessage(text);
  82. }
  83. // Custom Leave Message - End
  84. this.player.mountEntityAndWakeUp();
  85. this.serverController.getPlayerList().playerLoggedOut(this.player);
  86. if (this.serverController.isSinglePlayer() && this.player.getName().equals(this.serverController.getServerOwner()))
  87. {
  88. LOGGER.info("Stopping singleplayer server as player logged out");
  89. this.serverController.initiateShutdown();
  90. }
  91. }
  92. }