From 7b6c58c7db26747783aee7aff2eff87f08ecb8c3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 10 Jan 2019 16:33:18 +0800 Subject: Basic cheating / deleting --- .../java/me/shedaniel/rei/client/ClientHelper.java | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 src/main/java/me/shedaniel/rei/client/ClientHelper.java (limited to 'src/main/java/me/shedaniel/rei/client/ClientHelper.java') diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java new file mode 100644 index 000000000..b0bc64a98 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -0,0 +1,124 @@ +package me.shedaniel.rei.client; + +import com.google.common.collect.Lists; +import io.netty.buffer.Unpooled; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.listeners.ClientLoaded; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.loader.FabricLoader; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Mouse; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.server.network.packet.CustomPayloadServerPacket; +import net.minecraft.util.Identifier; +import net.minecraft.util.PacketByteBuf; +import net.minecraft.util.registry.Registry; + +import java.awt.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ClientHelper implements ClientLoaded, ClientModInitializer { + + private static List itemList; + private static boolean cheating; + + public ClientHelper() { + this.itemList = Lists.newLinkedList(); + } + + public static String getModFromItemStack(ItemStack stack) { + if (!stack.isEmpty()) { + Identifier location = Registry.ITEM.getId(stack.getItem()); + assert location != null; + String modid = location.getNamespace(); + if (modid.equalsIgnoreCase("minecraft")) + return "Minecraft"; + return FabricLoader.INSTANCE.getModContainers().stream() + .map(modContainer -> { + return modContainer.getInfo(); + }) + .filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))) + .findFirst().map(modInfo -> { + if (modInfo.getName() != null) + return modInfo.getName(); + return modid; + }).orElse(modid); + } + return ""; + } + + public static List getItemList() { + return itemList; + } + + public static Point getMouseLocation() { + MinecraftClient client = MinecraftClient.getInstance(); + Mouse mouse = client.mouse; + double double_1 = mouse.getX() * (double) client.window.getScaledWidth() / (double) client.window.method_4480(); + double double_2 = mouse.getY() * (double) client.window.getScaledHeight() / (double) client.window.method_4507(); + return new Point((int) double_1, (int) double_2); + } + + public static boolean isCheating() { + return cheating; + } + + public static void sendDeletePacket() { + PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); + MinecraftClient.getInstance().getNetworkHandler().sendPacket(new CustomPayloadServerPacket(RoughlyEnoughItemsCore.DELETE_ITEMS_PACKET, buf)); + } + + public static boolean tryCheatingStack(ItemStack cheatedStack) { + try { + PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); + buf.writeItemStack(cheatedStack.copy()); + MinecraftClient.getInstance().getNetworkHandler().sendPacket(new CustomPayloadServerPacket(RoughlyEnoughItemsCore.CREATE_ITEMS_PACKET, buf)); + return true; + } catch (Exception e) { + return false; + } + } + + public static boolean executeRecipeKeyBind() { + return false; + } + + public static boolean executeUsageKeyBind() { + return false; + } + + @Override + public void clientLoaded() { + Registry.ITEM.forEach(this::registerItem); + Registry.ENCHANTMENT.forEach(enchantment -> { + for(int i = enchantment.getMinimumLevel(); i < enchantment.getMaximumLevel(); i++) { + Map map = new HashMap<>(); + map.put(enchantment, i); + ItemStack itemStack = new ItemStack(Items.ENCHANTED_BOOK); + EnchantmentHelper.set(map, itemStack); + registerItemStack(itemStack); + } + }); + } + + public void registerItem(Item item) { + registerItemStack(item.getDefaultStack()); + } + + public void registerItemStack(ItemStack stack) { + if (!stack.getItem().equals(Items.AIR)) + itemList.add(stack); + } + + @Override + public void onInitializeClient() { + this.cheating = true; + } + +} -- cgit