Jump to content

[1.7.2]EnumChatFormatting doesnt work on all the string


Recommended Posts

Posted

Hey

I am using this code:

    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + finalstring));

And it paint only the first line:

How do I fix this?

Posted

an example from some of my code (the string is already split into params[]):

 

          String msg = "";

	for(int i = 0; i < params.length; i++){
		msg += params[i];
		msg += " ";
		msg += EnumChatFormatting.GRAY.toString() + EnumChatFormatting.ITALIC.toString();
	}

I'll need help, and I'll give help. Just ask, you know I will!

Posted

String[] stringList = message.split(" +"); // string broken into words
String formatting = EnumChatFormatting.GRAY.toString() +  EnumChatFormatting.ITALIC.toString(); // formatting codes

resultString = formatting + String.join(" " + formatting, stringList); // result with formatting between words

 

Posted

String[] stringList = String.split(" +",message); // string broken into words
String formatting = EnumChatFormatting.GRAY.toString() +  EnumChatFormatting.ITALIC.toString(); // formatting codes

resultString = formatting + String.join(" " + formatting, stringList); // result with formatting between words

"The method join(String, String[]) is undefined for the type String"

1410831192]

an example from some of my code (the string is already split into params[]):

 

          String msg = "";

	for(int i = 0; i < params.length; i++){
		msg += params[i];
		msg += " ";
		msg += EnumChatFormatting.GRAY.toString() + EnumChatFormatting.ITALIC.toString();
	}

It doesnt work

It does split the word but the color doesn't work

I did this:

String[] stringList = msg.split(" ");
    	    		for(int i = 0; i < stringList.length; i++){
    	    			finalstring += stringList[i];
    	    			finalstring += " ";
    	    			finalstring += EnumChatFormatting.AQUA.toString() + EnumChatFormatting.ITALIC.toString();

Posted

Well you certainly have to adapt the concepts for your own usage... are you saying you got it fixed or that it still does not work?

I'll need help, and I'll give help. Just ask, you know I will!

Posted

Well you certainly have to adapt the concepts for your own usage... are you saying you got it fixed or that it still does not work?

I said it doesnt work:

It doesnt work

It does split the word but the color doesn't work

Posted

For complete clarity, can you please post the entire method containing the lines in question? Then we can make specific edits instead of theoretical ones and get you squared away.

I'll need help, and I'll give help. Just ask, you know I will!

Posted

For complete clarity, can you please post the entire method containing the lines in question? Then we can make specific edits instead of theoretical ones and get you squared away.

    			else{
    	    		String[] stringList = msg.split(" ");
    	    		for(int i = 0; i < stringList.length; i++){
    	    			finalstring += stringList[i];
    	    			finalstring += " ";
    	    			finalstring += EnumChatFormatting.AQUA;
    	    		}
    				e.setCanceled(true);
    				mc.thePlayer.addChatMessage(new ChatComponentText(finalstring));
}

All the class:

package com.TealNerd.SnitchCensor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.minecraft.client.Minecraft;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class ChatFilter {
    
    Minecraft mc = Minecraft.getMinecraft();

    public String msg;
    public String finalstring ="";
    private Pattern snitch = Pattern.compile("\\[[-0-9]* [0-9]* [-0-9]*\\]");
    private Pattern user = Pattern.compile("([a-zA-Z0-9_]+?) entered snitch at");
    public String username;
    protected boolean isEnemy = false;
    public Matcher snitchMatcher;
    public Matcher usernameMatcher;
    private String modDir = mc.mcDataDir + "/mods/SnitchCensor/";
    public File bounties = new File(modDir, "perps.txt");
    private Pattern name = Pattern.compile("\\\"name\\\":\\\"([A-Za-z0-9_]+?)\\\"");
    boolean hasBounty = false;

    {

    }
      
    @SubscribeEvent
    public void onChat(ClientChatReceivedEvent e) throws IOException{
    	msg = e.message.getUnformattedText();
    	Matcher snitchMatcher = snitch.matcher(msg);
    	Matcher usernameMatcher = user.matcher(msg);
    	
    	if(SnitchCensor.custom){
    		if(snitchMatcher.find()){
        	if(usernameMatcher.find()){
        		username = usernameMatcher.group(1);
        	}
        	String dir = mc.mcDataDir + "/mods/RadarBro/";
        	File enemies = new File(dir, "EnemyList.txt");
        	Scanner input = new Scanner(enemies);
        	
        	while(input.hasNext()){
        		String nextLine = input.nextLine();
        		if(nextLine.equals(username)){
        			isEnemy = true;
        		}else{
        			isEnemy = false;
        		}
        	}
        	
        	input.close();
        	
        	String contents;   		
    		Scanner in = new Scanner(bounties);
    		contents = readFile(bounties);
    		Matcher nameMatcher = name.matcher(contents);
    		while(nameMatcher.find())
    		{	
    		        if(nameMatcher.group(1).equals(username))
    		        {
    		                hasBounty = true;
    		                break;
    		        }
    		        else
    		        {
    		                hasBounty = false;
    		        }
    		}
    		in.close();
        	
    		if(isEnemy){
    			if(SnitchCensor.isEnabled){
    				e.setCanceled(true);
    				finalstring = snitchMatcher.replaceAll("[**** ** ****]");
    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + finalstring));
    			}else{
    				e.setCanceled(true);
    				finalstring = msg;
    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + finalstring));
    			}
    		}else if(hasBounty){
    			if(SnitchCensor.isEnabled){
    				e.setCanceled(true);
    				finalstring = snitchMatcher.replaceAll("[**** ** ****]");
    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + finalstring));
    			}else{
    				e.setCanceled(true);
    				finalstring = msg;
    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + finalstring));
    			}
    		}else{
    			if(SnitchCensor.isEnabled){
    	    		String[] stringList = msg.split(" ");
    	    		for(int i = 0; i < stringList.length; i++){
    	    			finalstring += stringList[i];
    	    			finalstring += " ";
    	    			finalstring += EnumChatFormatting.AQUA;
    	    		}
    				e.setCanceled(true);
    				finalstring = snitchMatcher.replaceAll("[**** ** ****]");
    				mc.thePlayer.addChatMessage(new ChatComponentText(finalstring));
    				mc.thePlayer.addChatMessage(new ChatComponentText(stringList[stringList.length-1]));
    			}else{
    	    		String[] stringList = msg.split(" ");

    				e.setCanceled(true);
    				mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + finalstring));
    			}
    		}
        	
    		}
    	}else if(SnitchCensor.isEnabled){
    		e.setCanceled(true);
    		finalstring = snitchMatcher.replaceAll("[**** ** ****]");
		mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + finalstring));
    	}else{
    		e.setCanceled(true);
		finalstring = msg;
		mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + finalstring));
    	}
        }
    
    	
    	
         

    
    String readFile(File file) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(file));
        try {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();
     
            while (line != null) {
                sb.append(line);
                sb.append("\n");
                line = br.readLine();
            }
            return sb.toString();
        } finally {
            br.close();
        }
    }
    }

Posted

First off put the chat formatting line at the beginning of your loop, before you add the split string. Also I see you made an edit to your post... maybe comment out the snitch replace method thing to see if it is what causes you problems. I personally am having browser issues trying to view your entire class on my mobile device or I could get more in depth :/

I'll need help, and I'll give help. Just ask, you know I will!

Posted

One more thing... add .toString () at the end of the chat formatting.

Thx its working now!

btw I have another question:

I want to make a mod for multiplayer that msg the player every time a player join or leave the server.

How do I identify when a new player join or leave the server?

Posted

Well it would be wise to post the question in a new thread, but you will have to hook an EntityPlayer event... is this something you are familiar with? You can most likely find a 5 minute tutorial video on the subject and theforge github references every event you can subscribe to.

I'll need help, and I'll give help. Just ask, you know I will!

Posted

Also, I see you are new to the boards; dont be afraid to click that thank you button in the corner if anyone wasof help to you! ;)

I'll need help, and I'll give help. Just ask, you know I will!

Posted

Well it would be wise to post the question in a new thread, but you will have to hook an EntityPlayer event... is this something you are familiar with? You can most likely find a 5 minute tutorial video on the subject and theforge github references every event you can subscribe to.

I am new with Forge.

I am just trying to make a simple mod for a server I am playing on.

I know only basic java so I am having hard time doing it.

If u know any other mod that does what I want it can really help me

Posted

If you are new to forge but interested in learning more, then subscribing to events and maybe writing a custom save file should be within your scope/a good learning experience and easy enough to find basic outlines and tutorials about them. My first thoughts on your approach would be as follows:

 

I'll need help, and I'll give help. Just ask, you know I will!

Posted

Don't store the names, but the UUIDs, because there's gonna be name-change support and that will mess up your names.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

Don't store the names, but the UUIDs, because there's gonna be name-change support and that will mess up your names.

 

This is pretty wise, especially if you plan on your server almost never restarting. Unless you are saving this list to file, it will clear out every time you restart the server.

 

Edit: Although if you remove a player from the list every time you find a null, it will be self-cleaning anyway, and the "new name" (when that feature comes available) will be used the next time that individual player logs in. So if all you are using this list for is notifying players of login, you will only run into issues for one specific player, during the specific session in which they changed their name. If you want a list for more sophisticated and long-term uses, then you should most definitely take larsgerrits' advice. If it were me I would start simple and work up, since it's pretty much all stilla challenge for you.

I'll need help, and I'll give help. Just ask, you know I will!

Posted

Don't store the names, but the UUIDs, because there's gonna be name-change support and that will mess up your names.

 

This is pretty wise, especially if you plan on your server almost never restarting. Unless you are saving this list to file, it will clear out every time you restart the server.

 

Edit: Although if you remove a player from the list every time you find a null, it will be self-cleaning anyway, and the "new name" (when that feature comes available) will be used the next time that individual player logs in. So if all you are using this list for is notifying players of login, you will only run into issues for one specific player, during the specific session in which they changed their name. If you want a list for more sophisticated and long-term uses, then you should most definitely take larsgerrits' advice. If it were me I would start simple and work up, since it's pretty much all stilla challenge for you.

I am not making this mod for the server- this is a bukkit server and I am not the owner

Is it going to work if the mod isnt install on the server?

Posted

Don't store the names, but the UUIDs, because there's gonna be name-change support and that will mess up your names.

 

This is pretty wise, especially if you plan on your server almost never restarting. Unless you are saving this list to file, it will clear out every time you restart the server.

 

Edit: Although if you remove a player from the list every time you find a null, it will be self-cleaning anyway, and the "new name" (when that feature comes available) will be used the next time that individual player logs in. So if all you are using this list for is notifying players of login, you will only run into issues for one specific player, during the specific session in which they changed their name. If you want a list for more sophisticated and long-term uses, then you should most definitely take larsgerrits' advice. If it were me I would start simple and work up, since it's pretty much all stilla challenge for you.

I am not making this mod for the server- this is a bukkit server and I am not the owner

Is it going to work if the mod isnt install on the server?

 

That's a big no. It will work in single player. Or if you are the server, any client who also has the mod will be able to log in and it will work. If it is installed on the server a client can not log in unless they have it installed also. Simple as that.

 

EnumChatFormatting.RED + String1 + EnumChatFormatting.RESET + String2

 

? Issue already solved, and that's not it...

I'll need help, and I'll give help. Just ask, you know I will!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.