diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-10 16:33:18 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-10 16:33:18 +0800 |
| commit | 7b6c58c7db26747783aee7aff2eff87f08ecb8c3 (patch) | |
| tree | 6a0e24aba2b869d18de65dd7dc1dcd8e78d4dcb2 /src/main/java/me/shedaniel/rei/client/ClientHelper.java | |
| parent | 1b21d26487636e50d03979acd5ca4a2a07761a25 (diff) | |
| download | RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.gz RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.bz2 RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.zip | |
Basic cheating / deleting
Diffstat (limited to 'src/main/java/me/shedaniel/rei/client/ClientHelper.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/client/ClientHelper.java | 124 |
1 files changed, 124 insertions, 0 deletions
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<ItemStack> 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<ItemStack> 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<Enchantment, Integer> 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; + } + +} |
