ModNetHandlerPlayServer.java 4.1 KB

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