Attempt to fix 1.16.3 branch's issues on the repository
Added the original 'wayoftime' folder back, so see if that fixed the multiple folder issue.
This commit is contained in:
parent
6b4145a67c
commit
9fa68e86ae
224 changed files with 24047 additions and 0 deletions
270
src/main/java/wayoftime/bloodmagic/util/ChatUtil.java
Normal file
270
src/main/java/wayoftime/bloodmagic/util/ChatUtil.java
Normal file
|
@ -0,0 +1,270 @@
|
|||
package wayoftime.bloodmagic.util;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.NewChatGui;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
import wayoftime.bloodmagic.BloodMagic;
|
||||
import wayoftime.bloodmagic.util.helper.TextHelper;
|
||||
|
||||
public class ChatUtil
|
||||
{
|
||||
private static final int DELETION_ID = 2525277;
|
||||
private static int lastAdded;
|
||||
public static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###,###.##");
|
||||
|
||||
private static void sendNoSpamMessages(ITextComponent[] messages)
|
||||
{
|
||||
NewChatGui chat = Minecraft.getInstance().ingameGUI.getChatGUI();
|
||||
// Minecraft.getMinecraft().ingameGUI.getChatGUI();
|
||||
// for (int i = DELETION_ID + messages.length - 1; i <= lastAdded; i++)
|
||||
// {
|
||||
// chat.
|
||||
//// chat.deleteChatLine(i);
|
||||
// }
|
||||
for (int i = 0; i < messages.length; i++)
|
||||
{
|
||||
chat.printChatMessage(messages[i]);
|
||||
// chat.printChatMessageWithOptionalDeletion(messages[i], DELETION_ID + i);
|
||||
}
|
||||
lastAdded = DELETION_ID + messages.length - 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a standard {@link TextComponentString} for the given {@link String} .
|
||||
*
|
||||
* @param s The string to wrap.
|
||||
* @return An {@link ITextComponent} containing the string.
|
||||
*/
|
||||
public static ITextComponent wrap(String s)
|
||||
{
|
||||
return new StringTextComponent(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #wrap(String)
|
||||
*/
|
||||
public static ITextComponent[] wrap(String... s)
|
||||
{
|
||||
ITextComponent[] ret = new ITextComponent[s.length];
|
||||
for (int i = 0; i < ret.length; i++)
|
||||
{
|
||||
ret[i] = wrap(s[i]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a translatable chat component for the given string and format args.
|
||||
*
|
||||
* @param s The string to format
|
||||
* @param args The args to apply to the format
|
||||
*/
|
||||
public static ITextComponent wrapFormatted(String s, Object... args)
|
||||
{
|
||||
return new TranslationTextComponent(s, args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Simply sends the passed lines to the player in a chat message.
|
||||
*
|
||||
* @param player The player to send the chat to
|
||||
* @param lines The lines to send
|
||||
*/
|
||||
public static void sendChat(PlayerEntity player, String... lines)
|
||||
{
|
||||
sendChat(player, wrap(lines));
|
||||
}
|
||||
|
||||
/**
|
||||
* Localizes the lines before sending them.
|
||||
*
|
||||
* @see #sendChat(EntityPlayer, String...)
|
||||
*/
|
||||
public static void sendChatUnloc(PlayerEntity player, String... unlocLines)
|
||||
{
|
||||
sendChat(player, TextHelper.localizeAll(unlocLines));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends all passed chat components to the player.
|
||||
*
|
||||
* @param player The player to send the chat lines to.
|
||||
* @param lines The {@link ITextComponent chat components} to send.yes
|
||||
*/
|
||||
public static void sendChat(PlayerEntity player, ITextComponent... lines)
|
||||
{
|
||||
for (ITextComponent c : lines)
|
||||
{
|
||||
// BloodMagic.packetHandler.send
|
||||
player.sendMessage(c, Util.DUMMY_UUID);
|
||||
// player.sendMessage(c);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Localizes the strings before sending them.
|
||||
*
|
||||
* @see #sendNoSpamClient(String...)
|
||||
*/
|
||||
public static void sendNoSpamClientUnloc(String... unlocLines)
|
||||
{
|
||||
sendNoSpamClient(TextHelper.localizeAll(unlocLines));
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as {@link #sendNoSpamClient(ITextComponent...)}, but wraps the Strings
|
||||
* automatically.
|
||||
*
|
||||
* @param lines The chat lines to send
|
||||
* @see #wrap(String)
|
||||
*/
|
||||
public static void sendNoSpamClient(String... lines)
|
||||
{
|
||||
sendNoSpamClient(wrap(lines));
|
||||
}
|
||||
|
||||
/**
|
||||
* Skips the packet sending, unsafe to call on servers.
|
||||
*
|
||||
* @see #sendNoSpam(ServerPlayerEntity, ITextComponent...)
|
||||
*/
|
||||
public static void sendNoSpamClient(ITextComponent... lines)
|
||||
{
|
||||
sendNoSpamMessages(lines);
|
||||
}
|
||||
|
||||
/**
|
||||
* Localizes the strings before sending them.
|
||||
*
|
||||
* @see #sendNoSpam(EntityPlayer, String...)
|
||||
*/
|
||||
public static void sendNoSpamUnloc(PlayerEntity player, String... unlocLines)
|
||||
{
|
||||
sendNoSpam(player, TextHelper.localizeAll(unlocLines));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #wrap(String)
|
||||
* @see #sendNoSpam(EntityPlayer, ITextComponent...)
|
||||
*/
|
||||
public static void sendNoSpam(PlayerEntity player, String... lines)
|
||||
{
|
||||
sendNoSpam(player, wrap(lines));
|
||||
}
|
||||
|
||||
/**
|
||||
* First checks if the player is instanceof {@link ServerPlayerEntity} before
|
||||
* casting.
|
||||
*
|
||||
* @see #sendNoSpam(ServerPlayerEntity, ITextComponent...)
|
||||
*/
|
||||
public static void sendNoSpam(PlayerEntity player, ITextComponent... lines)
|
||||
{
|
||||
if (player instanceof ServerPlayerEntity)
|
||||
{
|
||||
sendNoSpam((ServerPlayerEntity) player, lines);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Localizes the strings before sending them.
|
||||
*
|
||||
* @see #sendNoSpam(ServerPlayerEntity, String...)
|
||||
*/
|
||||
public static void sendNoSpamUnloc(ServerPlayerEntity player, String... unlocLines)
|
||||
{
|
||||
sendNoSpam(player, TextHelper.localizeAll(unlocLines));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #wrap(String)
|
||||
* @see #sendNoSpam(ServerPlayerEntity, ITextComponent...)
|
||||
*/
|
||||
public static void sendNoSpam(ServerPlayerEntity player, String... lines)
|
||||
{
|
||||
sendNoSpam(player, wrap(lines));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a chat message to the client, deleting past messages also sent via this
|
||||
* method.
|
||||
* <p>
|
||||
* Credit to RWTema for the idea
|
||||
*
|
||||
* @param player The player to send the chat message to
|
||||
* @param lines The chat lines to send.
|
||||
*/
|
||||
public static void sendNoSpam(ServerPlayerEntity player, ITextComponent... lines)
|
||||
{
|
||||
if (lines.length > 0)
|
||||
BloodMagic.packetHandler.sendTo(new PacketNoSpamChat(lines), player);
|
||||
}
|
||||
|
||||
/**
|
||||
* @author tterrag1098
|
||||
* <p>
|
||||
* Ripped from EnderCore (and slightly altered)
|
||||
*/
|
||||
public static class PacketNoSpamChat
|
||||
{
|
||||
private ITextComponent[] chatLines;
|
||||
|
||||
public PacketNoSpamChat()
|
||||
{
|
||||
chatLines = new ITextComponent[0];
|
||||
}
|
||||
|
||||
private PacketNoSpamChat(ITextComponent... lines)
|
||||
{
|
||||
// this is guaranteed to be >1 length by accessing methods
|
||||
this.chatLines = lines;
|
||||
}
|
||||
|
||||
public static void encode(PacketNoSpamChat pkt, PacketBuffer buf)
|
||||
{
|
||||
buf.writeInt(pkt.chatLines.length);
|
||||
for (ITextComponent c : pkt.chatLines)
|
||||
{
|
||||
// ByteBufUtils.writeUTF8String(buf, ITextComponent.Serializer.componentToJson(c));
|
||||
buf.writeString(ITextComponent.Serializer.toJson(c));
|
||||
}
|
||||
}
|
||||
|
||||
public static PacketNoSpamChat decode(PacketBuffer buf)
|
||||
{
|
||||
PacketNoSpamChat pkt = new PacketNoSpamChat(new ITextComponent[buf.readInt()]);
|
||||
for (int i = 0; i < pkt.chatLines.length; i++)
|
||||
{
|
||||
// pkt.chatLines[i] = ITextComponent.Serializer.jsonToComponent(ByteBufUtils.readUTF8String(buf));
|
||||
pkt.chatLines[i] = ITextComponent.Serializer.getComponentFromJsonLenient(buf.readString());
|
||||
}
|
||||
return pkt;
|
||||
}
|
||||
|
||||
public static void handle(PacketNoSpamChat message, Supplier<Context> context)
|
||||
{
|
||||
context.get().enqueueWork(() -> sendNoSpamMessages(message.chatLines));
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
|
||||
// public static class Handler implements IMessageHandler<PacketNoSpamChat, IMessage>
|
||||
// {
|
||||
// @Override
|
||||
// public IMessage onMessage(final PacketNoSpamChat message, MessageContext ctx)
|
||||
// {
|
||||
// Minecraft.getMinecraft().addScheduledTask(() -> sendNoSpamMessages(message.chatLines));
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue