From 2b9d2b60cf4a1ea0191330f299c2b08581eba84b Mon Sep 17 00:00:00 2001 From: expvintl Date: Tue, 8 Apr 2025 16:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=B01.21.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci_build.yml | 2 +- .idea/compiler.xml | 2 +- .idea/misc.xml | 3 +- .idea/modules.xml | 6 --- .idea/runConfigurations/Minecraft_Server.xml | 2 +- gradle.properties | 8 ++-- .../mctools/commands/CAutoFishCommand.java | 4 +- .../mctools/commands/CAutoRespawnCommand.java | 4 +- .../mctools/commands/CAutoToolCommand.java | 47 ++++++++++++------- .../mctools/commands/CFastDropCommand.java | 22 ++++----- .../mctools/commands/CFullbirghtCommand.java | 2 +- .../commands/CNoFallPacketCommand.java | 6 +-- .../commands/CQServerPluginsCommand.java | 2 +- .../mctools/commands/CSafeWalkCommand.java | 4 +- .../mctools/mixin/hud/ChatHudMixin.java | 4 -- .../com/expvintl/mctools/texthud/MCInfo.java | 6 ++- .../expvintl/mctools/utils/CommandUtils.java | 2 +- .../com/expvintl/mctools/utils/Utils.java | 8 ++-- 18 files changed, 69 insertions(+), 65 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 5068440..1fe3acb 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -1,4 +1,4 @@ -name: Build1.21 +name: Build on: push diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56..b86273d 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9d0bbd3..031d9d3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,6 @@ - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 55c33c0..3b1026f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,14 +2,8 @@ - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index c1b3bf6..5870600 100644 --- a/.idea/runConfigurations/Minecraft_Server.xml +++ b/.idea/runConfigurations/Minecraft_Server.xml @@ -12,5 +12,5 @@ - + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0168541..ae3a4c1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,12 +3,12 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.21 - yarn_mappings=1.21+build.9 - loader_version=0.16.0 + minecraft_version=1.21.5 + yarn_mappings=1.21.5+build.1 + loader_version=0.16.12 #Fabric api - fabric_version=0.100.8+1.21 + fabric_version=0.119.9+1.21.5 # Mod Properties mod_version = 1.0 diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java index e739b8c..bfdbe83 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java @@ -30,9 +30,9 @@ public class CAutoFishCommand { private static int execute(CommandContext context) { Globals.autoFish.set(context.getArgument("开关", Boolean.class)); if(Globals.autoFish.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java index 0254dff..57c7851 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java @@ -28,9 +28,9 @@ public class CAutoRespawnCommand { private static int execute(CommandContext context) { Globals.autoRespawn.set(context.getArgument("开关", Boolean.class)); if(Globals.autoRespawn.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动重生!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动重生!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动重生!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动重生!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 3e6deb4..1537e2e 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -26,6 +26,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; import net.minecraft.text.Text; +import java.awt.*; + import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; @@ -41,9 +43,9 @@ public class CAutoToolCommand { private static int execute(CommandContext context) { Globals.autoTool.set(context.getArgument("开关", Boolean.class)); if(Globals.autoTool.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用智能工具!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用智能工具!"),false); } return Command.SINGLE_SUCCESS; } @@ -52,11 +54,12 @@ public class CAutoToolCommand { if(!Globals.autoTool.get()) return; MinecraftClient mc=MinecraftClient.getInstance(); if (mc.world == null||mc.player==null) return; - if (lastSlot!=-1){ - //破坏方块后切换回去 - mc.player.getInventory().selectedSlot=lastSlot; - lastSlot=-1; - } + //TODO: 因bug禁用 +// if (lastSlot!=-1){ +// //破坏方块后切换回去 +// mc.player.getInventory().setSelectedSlot(lastSlot); +// lastSlot=-1; +// } } @Subscribe private void onAttackEntity(PlayerAttackEntityEvent event){ @@ -80,7 +83,7 @@ public class CAutoToolCommand { //低耐久测试 if(!lowDurability(currentItem)) { //切换过去 - event.player.getInventory().selectedSlot = slot; + event.player.getInventory().setSelectedSlot(slot); MinecraftClient mc=MinecraftClient.getInstance(); if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); @@ -116,17 +119,27 @@ public class CAutoToolCommand { //确定已经选择好了工具就切换 if(!lowDurability(currentItem)) { //记住上一次的槽方便恢复 - lastSlot=mc.player.getInventory().selectedSlot; + lastSlot=mc.player.getInventory().getSelectedSlot(); //切换过去 - mc.player.getInventory().selectedSlot = slot; + mc.player.getInventory().setSelectedSlot(slot); if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); } } } + public boolean isSwordItem(Item item){ + return item==Items.STONE_SWORD||item==Items.DIAMOND_SWORD||item==Items.GOLDEN_SWORD||item==Items.IRON_SWORD||item==Items.NETHERITE_SWORD||item==Items.WOODEN_SWORD; + } + public boolean isToolItem(Item item){ + return item == Items.WOODEN_PICKAXE || item == Items.STONE_PICKAXE || item == Items.IRON_PICKAXE || item == Items.GOLDEN_PICKAXE || item == Items.DIAMOND_PICKAXE || item == Items.NETHERITE_PICKAXE + || item == Items.WOODEN_AXE || item == Items.STONE_AXE || item == Items.IRON_AXE || item == Items.GOLDEN_AXE || item == Items.DIAMOND_AXE || item == Items.NETHERITE_AXE + || item == Items.WOODEN_SHOVEL || item == Items.STONE_SHOVEL || item == Items.IRON_SHOVEL || item == Items.GOLDEN_SHOVEL || item == Items.DIAMOND_SHOVEL || item == Items.NETHERITE_SHOVEL + || item == Items.WOODEN_HOE || item == Items.STONE_HOE || item == Items.IRON_HOE || item == Items.GOLDEN_HOE || item == Items.DIAMOND_HOE || item == Items.NETHERITE_HOE + || item == Items.WOODEN_SWORD || item == Items.STONE_SWORD || item == Items.IRON_SWORD || item == Items.GOLDEN_SWORD || item == Items.DIAMOND_SWORD || item == Items.NETHERITE_SWORD; + } public float getToolsScore(ItemStack item, BlockState state){ float score=0; - if(item.getItem() instanceof ToolItem || item.getItem() instanceof ShearsItem){ + if(isToolItem(item.getItem())||item.getItem() instanceof ShearsItem){ //根据挖掘速度提升评分 score+=item.getMiningSpeedMultiplier(state)*30; //附魔加分 @@ -136,10 +149,10 @@ public class CAutoToolCommand { score+=Utils.GetEnchantLevel(Enchantments.EFFICIENCY,item); //经验修补 score+=Utils.GetEnchantLevel(Enchantments.MENDING,item); - if (item.getItem() instanceof SwordItem item1 && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { - if((item1.getComponents().get(DataComponentTypes.TOOL)!=null)){ + if (isSwordItem(item.getItem()) && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { + if((item.getItem().getComponents().get(DataComponentTypes.TOOL)!=null)){ //根据挖掘等级加分 - score += 90 + (item1.getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); + score += 90 + (item.getItem().getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); } } } @@ -149,10 +162,10 @@ public class CAutoToolCommand { float damageScore = 0; ItemStack item = player.getInventory().getStack(slot); //剑优先 - if(item.getItem() instanceof SwordItem) damageScore+=10; + if(isSwordItem(item.getItem())) damageScore+=10; //使用所有工具组 - if (item.getItem() instanceof ToolItem tool) { - damageScore += tool.getMaterial().getAttackDamage(); + if (isToolItem(item.getItem())) { + damageScore += item.getDamage(); //锋利加分 damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; //精修 diff --git a/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java b/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java index b7b6d77..149dc38 100644 --- a/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java @@ -36,12 +36,12 @@ public class CFastDropCommand { for(Item i:trashItem){ sb.append(i.getName().getString()).append(","); } - context.getSource().getPlayer().sendMessage(Text.literal(sb.toString())); + context.getSource().getPlayer().sendMessage(Text.literal(sb.toString()),false); return Command.SINGLE_SUCCESS; })))); dispatcher.register(literal("cfastdrop").then(literal("clear").executes((context -> { trashItem.clear(); - context.getSource().getPlayer().sendMessage(Text.literal("已清除全部物品!")); + context.getSource().getPlayer().sendMessage(Text.literal("已清除全部物品!"),false); return Command.SINGLE_SUCCESS; })))); dispatcher.register(literal("cfastdrop").then(literal("del").then(argument("物品", ItemStackArgumentType.itemStack(access)).suggests(((context, builder) -> suggestItems(builder))).executes(cmd->{ @@ -49,12 +49,12 @@ public class CFastDropCommand { if (item != Items.AIR) { // 确保找到的物品是有效的 if (trashItem.contains(item)) { trashItem.remove(item); - cmd.getSource().getPlayer().sendMessage(Text.literal("已移除 " + item.getName().getString())); + cmd.getSource().getPlayer().sendMessage(Text.literal("已移除 " + item.getName().getString()),false); }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("没有找到 " + item.getName().getString())); + cmd.getSource().getPlayer().sendMessage(Text.literal("没有找到 " + item.getName().getString()),false); } }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!")); + cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!"),false); return 0; } return Command.SINGLE_SUCCESS; @@ -63,13 +63,13 @@ public class CFastDropCommand { Item item=ItemStackArgumentType.getItemStackArgument(cmd,"物品").getItem(); if (item != Items.AIR) { // 确保找到的物品是有效的 if(trashItem.contains(item)){ - cmd.getSource().getPlayer().sendMessage(Text.literal( item.getName().getString() + " 已存在!")); + cmd.getSource().getPlayer().sendMessage(Text.literal( item.getName().getString() + " 已存在!"),false); }else { trashItem.add(item); - cmd.getSource().getPlayer().sendMessage(Text.literal("已添加 " + item.getName().getString() + " 到垃圾物品列表")); + cmd.getSource().getPlayer().sendMessage(Text.literal("已添加 " + item.getName().getString() + " 到垃圾物品列表"),false); } }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!")); + cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!"),false); return 0; } return Command.SINGLE_SUCCESS; @@ -104,15 +104,15 @@ public class CFastDropCommand { return 0; } PlayerInventory inv=player.getInventory(); - for(int i=0;i context) { ((SimpleOptionAccessor)(Object)context.getSource().getClient().options.getGamma()).forceSetValue(32767.0); - context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮")); + context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮"),false); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java index 5db3383..1c0e539 100644 --- a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java @@ -31,9 +31,9 @@ public class CNoFallPacketCommand { private static int execute(CommandContext context) { Globals.noFallPacket.set(context.getArgument("开关", Boolean.class)); if(Globals.noFallPacket.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用摔落伤害!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用摔落伤害!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用摔落伤害!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用摔落伤害!"),false); } return Command.SINGLE_SUCCESS; } @@ -43,7 +43,7 @@ public class CNoFallPacketCommand { if(!(event.packet instanceof PlayerMoveC2SPacket)) return; //跳过创造 if(Globals.noFallPacket.get()&& !mc.player.getAbilities().creativeMode){ - if(mc.player.isFallFlying()) return; + if(mc.player.fallDistance<=mc.player.getSafeFallDistance()) return; if(mc.player.getVelocity().y> -0.5) return; //直接发送在地面的数据包来免伤 ((PlayerMoveC2SPacketAccessor)event.packet).setOnGround(true); diff --git a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java index 7eda4a0..2a9fd15 100644 --- a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java @@ -52,7 +52,7 @@ public class CQServerPluginsCommand { buf.append('[').append(s.getText()).append(']').append(' '); } if(MinecraftClient.getInstance().player!=null){ - MinecraftClient.getInstance().player.sendMessage(Text.literal(buf.toString())); + MinecraftClient.getInstance().player.sendMessage(Text.literal(buf.toString()),false); } Globals.checkBukkitPlugins.set(false); //取消事件注册 diff --git a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java index 12adaed..2a0b098 100644 --- a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java @@ -22,9 +22,9 @@ public class CSafeWalkCommand { private static int execute(CommandContext context) { Globals.selfWalk.set(context.getArgument("开关", Boolean.class)); if(Globals.selfWalk.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动挂边!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动挂边!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动挂边!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动挂边!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java b/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java index d3f0f00..5992823 100644 --- a/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java @@ -17,11 +17,7 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; public class ChatHudMixin { @ModifyReceiver(method = "render",at=@At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawTextWithShadow(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/OrderedText;III)I")) private DrawContext onRenderDrawTextWithShadow(DrawContext context, TextRenderer renderer, OrderedText text, int x, int y, int color, @Local ChatHudLine.Visible line){ - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(1,1,1,((color >> 24) & 0x000000FF)/255f); Utils.DrawHeadIcon(context,line,y); - RenderSystem.setShaderColor(1,1,1,1); - RenderSystem.disableBlend(); return context; } } diff --git a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java index d42e96c..8d85f3c 100644 --- a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java @@ -11,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Colors; import net.minecraft.util.math.Vec3d; +import java.util.Objects; + public class MCInfo { private static String gameDayToRealTimeFormat(long gameDays) { // 游戏 1 小时等于 20 分钟 @@ -69,8 +71,8 @@ public class MCInfo { DrawUtils.AddLeftText(drawContext,String.format("世界时间: %d天 (%s)",mc.world.getTimeOfDay()/24000,gameDayToRealTimeFormat(mc.world.getTimeOfDay()/24000))); DrawUtils.AddLeftText(drawContext,String.format("当前区块: [%d,%d]",mc.player.getChunkPos().x,mc.player.getChunkPos().z)); DrawUtils.AddLeftText(drawContext,String.format("本地难度:%.2f",mc.world.getLocalDifficulty(mc.player.getBlockPos()).getLocalDifficulty())); - ItemStack currentItem=p.getInventory().getMainHandStack(); - if(currentItem!=null&¤tItem.isDamageable()){ + ItemStack currentItem=p.getMainHandStack(); + if(Objects.nonNull(currentItem)&¤tItem.isDamageable()){ DrawUtils.AddLeftText(drawContext,String.format("耐久度:%d/%d",currentItem.getMaxDamage()-currentItem.getDamage(),currentItem.getMaxDamage())); } } diff --git a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java index 5586ead..7848892 100644 --- a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java +++ b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java @@ -9,7 +9,7 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit public class CommandUtils { public static void CreateStatusCommand(String cmd, Setting toggle, CommandDispatcher dispatcher){ dispatcher.register(literal(cmd).executes((context -> { - context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+toggle.get())); + context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+toggle.get()),false); return Command.SINGLE_SUCCESS; }))); } diff --git a/src/main/java/com/expvintl/mctools/utils/Utils.java b/src/main/java/com/expvintl/mctools/utils/Utils.java index 3895071..d33f2ab 100644 --- a/src/main/java/com/expvintl/mctools/utils/Utils.java +++ b/src/main/java/com/expvintl/mctools/utils/Utils.java @@ -11,6 +11,7 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.render.RenderLayer; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantments; import net.minecraft.item.ItemStack; @@ -30,6 +31,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.Timer; +import java.util.function.Function; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -220,7 +222,7 @@ public class Utils { for (int z = (int) -pos.z; z < (pos.z + radius); z++) { BlockState b = mc.world.getBlockState(new BlockPos(x, hight, z)); if (b.getBlock().asItem().getName().getString().equals(itemName)) { - mc.player.sendMessage(Text.literal(String.format("找到方块:%d,%d,%d", x, hight, z))); + mc.player.sendMessage(Text.literal(String.format("找到方块:%d,%d,%d", x, hight, z)),false); } } } @@ -244,9 +246,7 @@ public class Utils { if (entry == null) return; Identifier skin = entry.getSkinTextures().texture(); - - draw.drawTexture(skin, 0, y, 8, 8, 8, 8, 8, 8, 64, 64); - draw.drawTexture(skin, 0, y, 8, 8, 40, 8, 8, 8, 64, 64); + draw.drawTexture(RenderLayer::getGuiTextured, skin,0, y, 8, 8, 8, 8, 8, 8, 64, 64); draw.getMatrices().translate(10, 0, 0); } public static GameProfile getChatSender(String text){