Minecraft PC IP: play.cubecraft.net

DrHam

Forum Veteran
Sep 15, 2015
3,615
4,165
518
Kepler-452b
Hi. This is a way to explain a simple (chat) filter with few mor utilities.
I will explain this:
Code:
package ChatEssentials;

import java.util.List;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.minecraft.server.v1_9_R1.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.v1_9_R1.PacketPlayOutTitle;
import net.minecraft.server.v1_9_R1.PacketPlayOutTitle.EnumTitleAction;
import net.minecraft.server.v1_9_R1.PlayerConnection;

public class Main extends JavaPlugin implements Listener {

    public final Logger logger = Logger.getLogger("Minecraft");

    public static String chatcolor(String s){
        return ChatColor.translateAlternateColorCodes('&', s);
   
        }

    @EventHandler(priority=EventPriority.HIGHEST)
    public void handleJoin(PlayerJoinEvent event)
    {
        Player p = event.getPlayer();
        event.setJoinMessage(chatcolor(getConfig().getString("WelcomeMessage")));
   
    }

    List<String> blockedMessages = getConfig().getStringList("Blacklist");

    @EventHandler
    public void playerChatEvent(AsyncPlayerChatEvent event) {

    for (String blockedMessage : blockedMessages) {
    if(event.getMessage().contains(blockedMessage)) {
    event.setCancelled(true);
    event.getPlayer().sendMessage("" + ChatColor.RED + ChatColor.BOLD + getConfig().getString("BlockedMessageERROR") );
    return;
    }
    }
    }   
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
        getConfig().options().copyDefaults(true);
        saveConfig();
    }

    public void onDisable()
    {
    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

        Player player = (Player)sender;
       if (cmd.getName().equalsIgnoreCase("bc"))
            if (player.hasPermission("CE.Broadcast")) {
            int laengeArray = args.length;
            int indexArray = 0;
            String text = "";
            for (int i = 0; i < args.length; i++) {
                text = text + args[i] + " ";
            }
        Bukkit.broadcastMessage(ChatColor.DARK_RED + "[Alert] " + ChatColor.RED + text);
        return true;
       }

    if (cmd.getName().equalsIgnoreCase("ChatEssentials")) {
        player.sendMessage(ChatColor.DARK_BLUE + "----------------------------------------");
        player.sendMessage(ChatColor.BLUE + "ChatEssentials v2 by Hangar555");

        player.sendMessage(ChatColor.GREEN + "Commands:");
        player.sendMessage(ChatColor.DARK_GREEN + "/ChatEssentials" + ChatColor.GOLD + ":" + ChatColor.GREEN + " Displays this message");
        player.sendMessage(ChatColor.DARK_GREEN + "/Broadcast" + ChatColor.GOLD + ":" + ChatColor.GREEN + " Broadcast a desired message");
        player.sendMessage(ChatColor.GREEN + "Info:");
        player.sendMessage(ChatColor.DARK_GREEN + "This plugin is able to edit player messages, to prevent curse words");
        player.sendMessage(ChatColor.DARK_GREEN + "It can also intercept heavy messages");
        player.sendMessage(ChatColor.DARK_GREEN + "You are not allowed to edit and/or copy the plugin without the developer permission");
        player.sendMessage(ChatColor.DARK_BLUE + "----------------------------------------");


    return true; 
}
    return false;
}
}

Lets start with the welcome message:
Code:
    @EventHandler(priority=EventPriority.HIGHEST) //this sets the event priority, in this case the highest
    public void handleJoin(PlayerJoinEvent event) //Player join event: When the player joins the server
    {
        Player p = event.getPlayer(); //sets the player p = event.getPlayer. Simple
        event.setJoinMessage(chatcolor(getConfig().getString("WelcomeMessage")));  //sets the join message from the config. Can also be null or be write here
Now the filter:
Code:
List<String> blockedMessages = getConfig().getStringList("Blacklist"); //get the string list called "blacklist" from the config

    @EventHandler
    public void playerChatEvent(AsyncPlayerChatEvent event) { //this is the "Chat" event

    for (String blockedMessage : blockedMessages) { //gets the String
    if(event.getMessage().contains(blockedMessage)) { //check if the sentece contains a blocked word
    event.setCancelled(true); //cacels the message
    event.getPlayer().sendMessage("" + ChatColor.RED + ChatColor.BOLD + getConfig().getString("BlockedMessageERROR") ); //gets the error from the config.
    return;
    }
    }
    }

Now onEnable/Disable methods:
Code:
public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this); //register the events
        getConfig().options().copyDefaults(true); //get the config and copy it from the jar
        saveConfig(); //save the config
    }

    public void onDisable()
//nothing
    {
    }

Broadcasts, this you should check it here
Player (name it different, not p.)
Code:
    Player player = (Player)sender; //the player is the sender, WOW
Custom CE help (not default, helpful on servers with custom help, like cube)
Code:
 //you alredy have the onCommand method
        if (cmd.getName().equalsIgnoreCase("ChatEssentials")) { //command "executor"
        if(player.hasPermission("CE.help")) //if the player has the required permissions
        player.sendMessage(ChatColor.DARK_BLUE + "----------------------------------------"); //just a line
        player.sendMessage(ChatColor.BLUE + "ChatEssentials v2 by Hangar555"); //I'm famous!

        player.sendMessage(ChatColor.GREEN + "Commands:");
        player.sendMessage(ChatColor.DARK_GREEN + "/ChatEssentials" + ChatColor.GOLD + ":" + ChatColor.GREEN + " Displays this message"); //useless message
        player.sendMessage(ChatColor.DARK_GREEN + "/Broadcast" + ChatColor.GOLD + ":" + ChatColor.GREEN + " Broadcast a desired message"); //It have a use, I suppose
        player.sendMessage(ChatColor.GREEN + "Info:"); //Wow, a word
        player.sendMessage(ChatColor.DARK_GREEN + "This plugin is able to edit player messages, to prevent curse words"); //Same as in spigot web. Awesome
        player.sendMessage(ChatColor.DARK_GREEN + "You are not allowed to edit and/or copy the plugin without the developer permission"); //Pls
        player.sendMessage(ChatColor.DARK_BLUE + "----------------------------------------");
//another line



Hope you like, if you do not understand it: Java OOP :p
 

Foodyling

Well-Known Member
Dec 25, 2015
1,940
155
143
The filter is case-sensitive and won't block variations of words with capitalized letters (if the word lol is blocked, LOL can still be said).
 

codexprivateㅤㅤㅤㅤ

Dedicated Member
May 14, 2016
895
901
168
α муѕтяισυѕ ρƖαcє
Code:
package test.modules.combat;

import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.network.play.client.C02PacketUseEntity;
import net.minecraft.network.play.client.C02PacketUseEntity.Action;
import net.minecraft.network.play.client.C03PacketPlayer;
import net.minecraft.network.play.client.C03PacketPlayer.C04PacketPlayerPosition;
import net.minecraft.network.play.client.C03PacketPlayer.C05PacketPlayerLook;
import net.minecraft.network.play.client.C03PacketPlayer.C06PacketPlayerPosLook;
import sallos.Sallos;
import sallos.commands.Command;
import sallos.events.EventTarget;
import sallos.events.events.EventPacketSend;
import sallos.events.events.EventPreMotionUpdates;
import sallos.managers.CommandManager;
import sallos.managers.ModuleManager;
import sallos.managers.PropertyManager.Property;
import sallos.modules.Module;
import sallos.modules.Module.Category;
import sallos.modules.movement.Speed;
import sallos.modules.movement.Speed.speedMode;
import sallos.utils.Helper;
import sallos.utils.Logger;
import sallos.utils.utils.BlockUtils;
import sallos.utils.utils.PlayerUtils;

public class Criticals
  extends Module
{
  public PropertyManager.Property<CritMode> cMode = new PropertyManager.Property(this, "Criticals Mode", CritMode.PACKET);
  private static boolean next = false;
  private static boolean critical = false;

  public Criticals()
  {
    super("Criticals", 25, 10712391, Module.Category.COMBAT, "Always critical.", new String[] { "crits", "crts", "crit" }, true);
  }

  public static enum CritMode
  {
    PACKET,  GROUND,  JUMPS;
  }

  @EventTarget(0)
  public void onPacketSent(EventPacketSend e)
  {
    if (((e.getPacket() instanceof C02PacketUseEntity)) && (this.cMode.value == CritMode.PACKET))
    {
      C02PacketUseEntity packetUseEntity = (C02PacketUseEntity)e.getPacket();
      if (packetUseEntity.getAction() == C02PacketUseEntity.Action.ATTACK)
      {
        EntityLivingBase ent = (EntityLivingBase)packetUseEntity.getEntityFromWorld(this.mc.theWorld);
        if (ent.hurtTime < 3) {
          if (((next = next ? 0 : 1) != 0) && (this.mc.thePlayer.isCollidedVertically)) {
            doCrits();
          }
        }
      }
    }
    if (this.cMode.value != CritMode.GROUND) {
      return;
    }
    if ((e.getPacket() instanceof C03PacketPlayer))
    {
      ((C03PacketPlayer)e.getPacket()).field_149480_h = false;
      ((C03PacketPlayer)e.getPacket()).field_149474_g = false;
      Helper.blockUtils();
      if (BlockUtils.isOnLiquid()) {
        return;
      }
      if ((Sallos.getModManager().getModState("Glide")) && (!Sallos.getModManager().getModState("Phase"))) {
        if ((e.getPacket() instanceof C03PacketPlayer.C04PacketPlayerPosition))
        {
          C03PacketPlayer.C04PacketPlayerPosition playerPos = (C03PacketPlayer.C04PacketPlayerPosition)e.getPacket();
          playerPos.field_149474_g = false;
          this.mc.thePlayer.onGround = false;
        }
        else if ((e.getPacket() instanceof C03PacketPlayer.C05PacketPlayerLook))
        {
          C03PacketPlayer.C05PacketPlayerLook look = (C03PacketPlayer.C05PacketPlayerLook)e.getPacket();
          look.field_149474_g = false;
        }
        else if ((e.getPacket() instanceof C03PacketPlayer.C06PacketPlayerPosLook))
        {
          C03PacketPlayer.C06PacketPlayerPosLook posLook = (C03PacketPlayer.C06PacketPlayerPosLook)e.getPacket();
          posLook.field_149474_g = false;
        }
      }
    }
  }

  @EventTarget
  public void onPre(EventPreMotionUpdates pre)
  {
    if (this.cMode.value != CritMode.JUMPS) {
      return;
    }
    if ((Helper.playerUtils().MovementInput()) && (this.mc.thePlayer.isCollidedVertically) && (this.mc.thePlayer.onGround))
    {
      if ((this.mc.thePlayer.ticksExisted % 2 == 0) && (pre.getY() == this.mc.thePlayer.posY) && (this.mc.thePlayer.isSwingInProgress) && (Helper.playerUtils().getDistanceToFall() == 0.0D)) {
        pre.setY(pre.getY() + 0.063D);
      }
      if ((pre.getY() == this.mc.thePlayer.posY) && (pre.isGround())) {
        pre.setGround(false);
      }
    }
  }

  public void onDisable()
  {
    super.onDisable();
    next = false;
  }

  public static boolean isCriting()
  {
    return critical;
  }

  public void doCrits()
  {
    if (!Sallos.getModManager().getModState("Criticals")) {
      return;
    }
    Speed speed = (Speed)Sallos.getModManager().getModule(Speed.class);
    if ((speed.mode.value == Speed.speedMode.ONGROUND) && (Helper.playerUtils().MovementInput()) && (speed.getState())) {
      return;
    }
    critical = true;
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY + 0.05D, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY + 0.012511D, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY, this.mc.thePlayer.posZ, false));
    critical = false;
  }

  protected void addCommand()
  {
    Sallos.getCommandManager();CommandManager.cmds.add(new Command(
      "Criticals", "Manages criticals ncp mode", Logger.LogExecutionFail("Option, Options:", new String[] { "Packet", "Ground", "Jumps", "values" }), new String[] { "crits" })
      {
        public void execute(String commandName, String[] arguments)
        {
          String mode = arguments[1];
          String str1;
          switch ((str1 = mode.toLowerCase()).hashCode())
          {
          case -1237460601:
            if (str1.equals("ground")) {}
            break;
          case -995865464:
            if (str1.equals("packet")) {
              break;
            }
            break;
          case -823812830:
            if (str1.equals("values")) {}
            break;
          case -807058197:
            if (str1.equals("packets")) {
              break;
            }
            break;
          case 106:
            if (str1.equals("j")) {}
            break;
          case 110:
            if (str1.equals("n")) {
              break;
            }
            break;
          case 111:
            if (str1.equals("o")) {}
            break;
          case 108960:
            if (str1.equals("new")) {
              break;
            }
            break;
          case 110119:
            if (str1.equals("old")) {}
            break;
          case 3273774:
            if (str1.equals("jump")) {}
            break;
          case 101487109:
            if (!str1.equals("jumps"))
            {
              break label355;
              Criticals.this.cMode.value = Criticals.CritMode.PACKET;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
            
              Criticals.this.cMode.value = Criticals.CritMode.GROUND;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
            }
            else
            {
              Criticals.this.cMode.value = Criticals.CritMode.JUMPS;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
            
              Criticals.this.logValues();
            }
            break;
          }
          label355:
          Logger.logChat(getError());
        }
      });
  }
}
 

DrHam

Forum Veteran
Sep 15, 2015
3,615
4,165
518
Kepler-452b
Code:
package test.modules.combat;

import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.network.play.client.C02PacketUseEntity;
import net.minecraft.network.play.client.C02PacketUseEntity.Action;
import net.minecraft.network.play.client.C03PacketPlayer;
import net.minecraft.network.play.client.C03PacketPlayer.C04PacketPlayerPosition;
import net.minecraft.network.play.client.C03PacketPlayer.C05PacketPlayerLook;
import net.minecraft.network.play.client.C03PacketPlayer.C06PacketPlayerPosLook;
import sallos.Sallos;
import sallos.commands.Command;
import sallos.events.EventTarget;
import sallos.events.events.EventPacketSend;
import sallos.events.events.EventPreMotionUpdates;
import sallos.managers.CommandManager;
import sallos.managers.ModuleManager;
import sallos.managers.PropertyManager.Property;
import sallos.modules.Module;
import sallos.modules.Module.Category;
import sallos.modules.movement.Speed;
import sallos.modules.movement.Speed.speedMode;
import sallos.utils.Helper;
import sallos.utils.Logger;
import sallos.utils.utils.BlockUtils;
import sallos.utils.utils.PlayerUtils;

public class Criticals
  extends Module
{
  public PropertyManager.Property<CritMode> cMode = new PropertyManager.Property(this, "Criticals Mode", CritMode.PACKET);
  private static boolean next = false;
  private static boolean critical = false;

  public Criticals()
  {
    super("Criticals", 25, 10712391, Module.Category.COMBAT, "Always critical.", new String[] { "crits", "crts", "crit" }, true);
  }

  public static enum CritMode
  {
    PACKET,  GROUND,  JUMPS;
  }

  @EventTarget(0)
  public void onPacketSent(EventPacketSend e)
  {
    if (((e.getPacket() instanceof C02PacketUseEntity)) && (this.cMode.value == CritMode.PACKET))
    {
      C02PacketUseEntity packetUseEntity = (C02PacketUseEntity)e.getPacket();
      if (packetUseEntity.getAction() == C02PacketUseEntity.Action.ATTACK)
      {
        EntityLivingBase ent = (EntityLivingBase)packetUseEntity.getEntityFromWorld(this.mc.theWorld);
        if (ent.hurtTime < 3) {
          if (((next = next ? 0 : 1) != 0) && (this.mc.thePlayer.isCollidedVertically)) {
            doCrits();
          }
        }
      }
    }
    if (this.cMode.value != CritMode.GROUND) {
      return;
    }
    if ((e.getPacket() instanceof C03PacketPlayer))
    {
      ((C03PacketPlayer)e.getPacket()).field_149480_h = false;
      ((C03PacketPlayer)e.getPacket()).field_149474_g = false;
      Helper.blockUtils();
      if (BlockUtils.isOnLiquid()) {
        return;
      }
      if ((Sallos.getModManager().getModState("Glide")) && (!Sallos.getModManager().getModState("Phase"))) {
        if ((e.getPacket() instanceof C03PacketPlayer.C04PacketPlayerPosition))
        {
          C03PacketPlayer.C04PacketPlayerPosition playerPos = (C03PacketPlayer.C04PacketPlayerPosition)e.getPacket();
          playerPos.field_149474_g = false;
          this.mc.thePlayer.onGround = false;
        }
        else if ((e.getPacket() instanceof C03PacketPlayer.C05PacketPlayerLook))
        {
          C03PacketPlayer.C05PacketPlayerLook look = (C03PacketPlayer.C05PacketPlayerLook)e.getPacket();
          look.field_149474_g = false;
        }
        else if ((e.getPacket() instanceof C03PacketPlayer.C06PacketPlayerPosLook))
        {
          C03PacketPlayer.C06PacketPlayerPosLook posLook = (C03PacketPlayer.C06PacketPlayerPosLook)e.getPacket();
          posLook.field_149474_g = false;
        }
      }
    }
  }

  @EventTarget
  public void onPre(EventPreMotionUpdates pre)
  {
    if (this.cMode.value != CritMode.JUMPS) {
      return;
    }
    if ((Helper.playerUtils().MovementInput()) && (this.mc.thePlayer.isCollidedVertically) && (this.mc.thePlayer.onGround))
    {
      if ((this.mc.thePlayer.ticksExisted % 2 == 0) && (pre.getY() == this.mc.thePlayer.posY) && (this.mc.thePlayer.isSwingInProgress) && (Helper.playerUtils().getDistanceToFall() == 0.0D)) {
        pre.setY(pre.getY() + 0.063D);
      }
      if ((pre.getY() == this.mc.thePlayer.posY) && (pre.isGround())) {
        pre.setGround(false);
      }
    }
  }

  public void onDisable()
  {
    super.onDisable();
    next = false;
  }

  public static boolean isCriting()
  {
    return critical;
  }

  public void doCrits()
  {
    if (!Sallos.getModManager().getModState("Criticals")) {
      return;
    }
    Speed speed = (Speed)Sallos.getModManager().getModule(Speed.class);
    if ((speed.mode.value == Speed.speedMode.ONGROUND) && (Helper.playerUtils().MovementInput()) && (speed.getState())) {
      return;
    }
    critical = true;
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY + 0.05D, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY + 0.012511D, this.mc.thePlayer.posZ, false));
    Helper.sendPacket(new C03PacketPlayer.C04PacketPlayerPosition(this.mc.thePlayer.posX, this.mc.thePlayer.posY, this.mc.thePlayer.posZ, false));
    critical = false;
  }

  protected void addCommand()
  {
    Sallos.getCommandManager();CommandManager.cmds.add(new Command(
      "Criticals", "Manages criticals ncp mode", Logger.LogExecutionFail("Option, Options:", new String[] { "Packet", "Ground", "Jumps", "values" }), new String[] { "crits" })
      {
        public void execute(String commandName, String[] arguments)
        {
          String mode = arguments[1];
          String str1;
          switch ((str1 = mode.toLowerCase()).hashCode())
          {
          case -1237460601:
            if (str1.equals("ground")) {}
            break;
          case -995865464:
            if (str1.equals("packet")) {
              break;
            }
            break;
          case -823812830:
            if (str1.equals("values")) {}
            break;
          case -807058197:
            if (str1.equals("packets")) {
              break;
            }
            break;
          case 106:
            if (str1.equals("j")) {}
            break;
          case 110:
            if (str1.equals("n")) {
              break;
            }
            break;
          case 111:
            if (str1.equals("o")) {}
            break;
          case 108960:
            if (str1.equals("new")) {
              break;
            }
            break;
          case 110119:
            if (str1.equals("old")) {}
            break;
          case 3273774:
            if (str1.equals("jump")) {}
            break;
          case 101487109:
            if (!str1.equals("jumps"))
            {
              break label355;
              Criticals.this.cMode.value = Criticals.CritMode.PACKET;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
           
              Criticals.this.cMode.value = Criticals.CritMode.GROUND;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
            }
            else
            {
              Criticals.this.cMode.value = Criticals.CritMode.JUMPS;
              Logger.logSetMessage("Criticals", "Mode", Criticals.this.cMode);
              return;
           
              Criticals.this.logValues();
            }
            break;
          }
          label355:
          Logger.logChat(getError());
        }
      });
  }
}
You made that?
 

Foodyling

Well-Known Member
Dec 25, 2015
1,940
155
143
is there a way to make it non case-sensitive?
Simpleton way is to get the message and call a #toLowerCase() and do a #toLowerCase() on all the blacklisted words.
For example,
Message: LoL -> lol
Blacklisted word -> lol
a #contains(String) will return true.

However, a more advanced approach would to some form of indexing of similar character types and do lookups.
 

DrHam

Forum Veteran
Sep 15, 2015
3,615
4,165
518
Kepler-452b
Simpleton way is to get the message and call a #toLowerCase() and do a #toLowerCase() on all the blacklisted words.
For example,
Message: LoL -> lol
Blacklisted word -> lol
a #contains(String) will return true.

However, a more advanced approach would to some form of indexing of similar character types and do lookups.
Okay, thanks!
 
Members Online

Team online

Latest profile posts

denki_kiri wrote on savina875's profile.
Thanks for the follow :D
Desiderata wrote on Egg🥚's profile.
eggs age over time

how curious
C95689C6-C73E-40B4-9CD7-76C479A7E2D5.png

Here’s my son, I made him in biology today! Say hi to Jimothy!
UncleSpect wrote on Egg🥚's profile.
Happy birthday! 🎈
Desiderata wrote on savina875's profile.
thabks 4 folow
Top Bottom