aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/client/ClientHelper.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-10 16:33:18 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-10 16:33:18 +0800
commit7b6c58c7db26747783aee7aff2eff87f08ecb8c3 (patch)
tree6a0e24aba2b869d18de65dd7dc1dcd8e78d4dcb2 /src/main/java/me/shedaniel/rei/client/ClientHelper.java
parent1b21d26487636e50d03979acd5ca4a2a07761a25 (diff)
downloadRoughlyEnoughItems-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.java124
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;
+ }
+
+}