use of net.minecraft.text.Text in project BleachHack by BleachDrinker420.
the class Texts method forEachWord.
/**
* Does an operation to each word in a text. *
*/
public static Text forEachWord(Text text, BiFunction<String, Style, Text> operator) {
MutableText newFullText = new LiteralText("");
for (Text t : unpack(text)) {
MutableText newText = new LiteralText("");
String curString = "";
String[] split = t.getString().split(" ", -1);
for (int i = 0; i < split.length; i++) {
Text word = operator.apply(split[i], t.getStyle());
if (word != null) {
if (!curString.isEmpty()) {
newText.append(new LiteralText(curString).setStyle(t.getStyle()));
curString = "";
}
newText.append(word);
} else {
curString += split[i];
}
if (i != split.length - 1)
curString += " ";
}
if (!curString.isEmpty())
newText.append(new LiteralText(curString).setStyle(t.getStyle()));
newFullText.append(newText);
}
return newFullText;
}
use of net.minecraft.text.Text in project BleachHack by BleachDrinker420.
the class Texts method replaceAll.
/**
* Replaces every string in this text that matches the pattern with a text from the provider. *
*/
public static Text replaceAll(Text text, Pattern pattern, BiFunction<String, Style, Text> replacement) {
if (pattern.pattern().isEmpty())
return text;
MutableText newText = new LiteralText("");
for (Text t : unpack(text)) {
String string = t.getString();
Map<Integer, Integer> positions = new HashMap<>();
Matcher mat = pattern.matcher(string);
while (mat.find()) {
positions.put(mat.start(), mat.end());
}
String curString = "";
for (int i = 0; i < string.length(); i++) {
if (positions.containsKey(i)) {
if (!curString.isEmpty()) {
newText = newText.append(new LiteralText(curString).setStyle(t.getStyle()));
curString = "";
}
newText.append(replacement.apply(string.substring(i, positions.get(i)), t.getStyle()));
i = positions.get(i) - 1;
} else {
curString += string.charAt(i);
}
}
if (!curString.isEmpty())
newText.append(new LiteralText(curString).setStyle(t.getStyle()));
}
return newText;
}
use of net.minecraft.text.Text in project BleachHack by BleachDrinker420.
the class ItemContentUtils method getTextInBook.
public static List<List<String>> getTextInBook(ItemStack item) {
List<String> pages = new ArrayList<>();
NbtCompound nbt = item.getNbt();
if (nbt != null && nbt.contains("pages")) {
NbtList nbt2 = nbt.getList("pages", 8);
for (int i = 0; i < nbt2.size(); i++) {
if (item.getItem() == Items.WRITABLE_BOOK) {
pages.add(nbt2.getString(i));
} else {
Text text = Text.Serializer.fromLenientJson(nbt2.getString(i));
pages.add(text != null ? text.getString() : nbt2.getString(i));
}
}
}
List<List<String>> finalPages = new ArrayList<>();
for (String s : pages) {
String buffer = "";
List<String> pageBuffer = new ArrayList<>();
for (char c : s.toCharArray()) {
if (MinecraftClient.getInstance().textRenderer.getWidth(buffer) > 114 || buffer.endsWith("\n")) {
pageBuffer.add(buffer.replace("\n", ""));
buffer = "";
}
buffer += c;
}
pageBuffer.add(buffer);
finalPages.add(pageBuffer);
}
return finalPages;
}
use of net.minecraft.text.Text in project BleachHack by BleachDrinker420.
the class BetterChat method onPacketRead.
@BleachSubscribe
public void onPacketRead(EventPacket.Read event) {
if (event.getPacket() instanceof GameMessageS2CPacket) {
GameMessageS2CPacket packet = (GameMessageS2CPacket) event.getPacket();
if (packet.getLocation() == MessageType.GAME_INFO)
return;
Text message = packet.getMessage().shallowCopy();
if (getSetting(6).asToggle().getState()) {
message = Texts.forEachWord(message, (string, style) -> {
String stripped = Formatting.strip(string);
if (stripped.matches("['\u00a1-\u00f5]+\u00ff[0-~]+")) {
String decrypted = decrypt(stripped);
if (decrypted != null) {
return new LiteralText("<").styled(s -> s.withColor(BleachHack.watermark.getColor1())).append(new LiteralText(decrypted).styled(s -> s.withColor(0xffffff).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText(string).setStyle(style))))).append(new LiteralText(">").styled(s -> s.withColor(BleachHack.watermark.getColor2())));
}
}
return null;
});
}
if (!filterPatterns.isEmpty() && getSetting(4).asToggle().getState()) {
int mode = getSetting(4).asToggle().getChild(0).asMode().getMode();
if (mode == 0) {
for (Pattern pattern : filterPatterns) {
message = Texts.replaceAll(message, pattern, (string, style) -> new LiteralText(StringUtils.repeat('|', string.length() * 2)).styled(s -> s.withColor(Formatting.GRAY).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText(string).setStyle(style)))));
}
} else {
for (Pattern pat : filterPatterns) {
if (pat.matcher(message.getString()).find()) {
if (mode == 1) {
Text messageCopy = message.shallowCopy();
message = new LiteralText("\u00a77Blocked Message").styled(style -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, messageCopy)));
break;
} else {
event.setCancelled(true);
return;
}
}
}
}
}
if (getSetting(3).asToggle().getState()) {
DateTimeFormatter formatter = getSetting(3).asToggle().getChild(0).asToggle().getState() ? DateTimeFormatter.ofPattern("HH:mm:ss") : DateTimeFormatter.ofPattern("HH:mm");
message = new LiteralText("\u00a78[\u00a77" + LocalDateTime.now().format(formatter) + "\u00a78] ").append(message);
}
if (!message.equals(packet.getMessage())) {
packet.message = message;
}
}
}
use of net.minecraft.text.Text in project BleachHack by BleachDrinker420.
the class BleachCreditsScreen method getBoosterText.
private Text getBoosterText(ImmutablePair<Boolean, String> pair) {
int color = pair.getLeft() ? 0x1abc9c : 0xf579ff;
String[] split = pair.getRight().split("#");
return new LiteralText(split[0]).styled(s -> s.withColor(color).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText(pair.getRight()).styled(s1 -> s1.withColor(color)))));
}
Aggregations