aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/utils
diff options
context:
space:
mode:
authorRoseGoldIsntGay <yoavkau@gmail.com>2022-01-07 16:41:44 +0200
committerRoseGoldIsntGay <yoavkau@gmail.com>2022-01-07 16:41:44 +0200
commitf06690a35ed7040db0aed7cec1f8a392eeffa3e7 (patch)
tree74adb90635b1101d7eedf17cc071b502a9febb46 /src/main/java/rosegoldaddons/utils
parent19de3c3ee0582f25d8e127492d791f81a410b70a (diff)
downloadRGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.tar.gz
RGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.tar.bz2
RGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.zip
2.5.1-pre1
Diffstat (limited to 'src/main/java/rosegoldaddons/utils')
-rw-r--r--src/main/java/rosegoldaddons/utils/DiscordWebhook.java391
-rw-r--r--src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java231
-rw-r--r--src/main/java/rosegoldaddons/utils/OutlineUtils.java152
-rw-r--r--src/main/java/rosegoldaddons/utils/PlayerUtils.java36
-rw-r--r--src/main/java/rosegoldaddons/utils/RenderUtils.java91
-rw-r--r--src/main/java/rosegoldaddons/utils/RotationUtils.java6
-rw-r--r--src/main/java/rosegoldaddons/utils/ScoreboardUtils.java63
7 files changed, 645 insertions, 325 deletions
diff --git a/src/main/java/rosegoldaddons/utils/DiscordWebhook.java b/src/main/java/rosegoldaddons/utils/DiscordWebhook.java
new file mode 100644
index 0000000..404df87
--- /dev/null
+++ b/src/main/java/rosegoldaddons/utils/DiscordWebhook.java
@@ -0,0 +1,391 @@
+package rosegoldaddons.utils;
+
+import javax.net.ssl.HttpsURLConnection;
+import java.awt.Color;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.Array;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+//CREDIT: https://gist.github.com/k3kdude/fba6f6b37594eae3d6f9475330733bdb
+
+/**
+ * Class used to execute Discord Webhooks with low effort
+ */
+public class DiscordWebhook {
+ private final String url;
+ private String content;
+ private String username;
+ private String avatarUrl;
+ private boolean tts;
+ private List<EmbedObject> embeds = new ArrayList<>();
+
+ /**
+ * Constructs a new DiscordWebhook instance
+ *
+ * @param url The webhook URL obtained in Discord
+ */
+ public DiscordWebhook(String url) {
+ this.url = url;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public void setAvatarUrl(String avatarUrl) {
+ this.avatarUrl = avatarUrl;
+ }
+
+ public void setTts(boolean tts) {
+ this.tts = tts;
+ }
+
+ public void addEmbed(EmbedObject embed) {
+ this.embeds.add(embed);
+ }
+
+ public void execute() throws IOException {
+ if (this.content == null && this.embeds.isEmpty()) {
+ throw new IllegalArgumentException("Set content or add at least one EmbedObject");
+ }
+
+ JSONObject json = new JSONObject();
+
+ json.put("content", this.content);
+ json.put("username", this.username);
+ json.put("avatar_url", this.avatarUrl);
+ json.put("tts", this.tts);
+
+ if (!this.embeds.isEmpty()) {
+ List<JSONObject> embedObjects = new ArrayList<>();
+
+ for (EmbedObject embed : this.embeds) {
+ JSONObject jsonEmbed = new JSONObject();
+
+ jsonEmbed.put("title", embed.getTitle());
+ jsonEmbed.put("description", embed.getDescription());
+ jsonEmbed.put("url", embed.getUrl());
+
+ if (embed.getColor() != null) {
+ Color color = embed.getColor();
+ int rgb = color.getRed();
+ rgb = (rgb << 8) + color.getGreen();
+ rgb = (rgb << 8) + color.getBlue();
+
+ jsonEmbed.put("color", rgb);
+ }
+
+ EmbedObject.Footer footer = embed.getFooter();
+ EmbedObject.Image image = embed.getImage();
+ EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
+ EmbedObject.Author author = embed.getAuthor();
+ List<EmbedObject.Field> fields = embed.getFields();
+
+ if (footer != null) {
+ JSONObject jsonFooter = new JSONObject();
+
+ jsonFooter.put("text", footer.getText());
+ jsonFooter.put("icon_url", footer.getIconUrl());
+ jsonEmbed.put("footer", jsonFooter);
+ }
+
+ if (image != null) {
+ JSONObject jsonImage = new JSONObject();
+
+ jsonImage.put("url", image.getUrl());
+ jsonEmbed.put("image", jsonImage);
+ }
+
+ if (thumbnail != null) {
+ JSONObject jsonThumbnail = new JSONObject();
+
+ jsonThumbnail.put("url", thumbnail.getUrl());
+ jsonEmbed.put("thumbnail", jsonThumbnail);
+ }
+
+ if (author != null) {
+ JSONObject jsonAuthor = new JSONObject();
+
+ jsonAuthor.put("name", author.getName());
+ jsonAuthor.put("url", author.getUrl());
+ jsonAuthor.put("icon_url", author.getIconUrl());
+ jsonEmbed.put("author", jsonAuthor);
+ }
+
+ List<JSONObject> jsonFields = new ArrayList<>();
+ for (EmbedObject.Field field : fields) {
+ JSONObject jsonField = new JSONObject();
+
+ jsonField.put("name", field.getName());
+ jsonField.put("value", field.getValue());
+ jsonField.put("inline", field.isInline());
+
+ jsonFields.add(jsonField);
+ }
+
+ jsonEmbed.put("fields", jsonFields.toArray());
+ embedObjects.add(jsonEmbed);
+ }
+
+ json.put("embeds", embedObjects.toArray());
+ }
+
+ URL url = new URL(this.url);
+ HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
+ connection.addRequestProperty("Content-Type", "application/json");
+ connection.addRequestProperty("User-Agent", "Java-DiscordWebhook-BY-Gelox_");
+ connection.setDoOutput(true);
+ connection.setRequestMethod("POST");
+
+ OutputStream stream = connection.getOutputStream();
+ stream.write(json.toString().getBytes());
+ stream.flush();
+ stream.close();
+
+ connection.getInputStream().close(); //I'm not sure why but it doesn't work without getting the InputStream
+ connection.disconnect();
+ }
+
+ public static class EmbedObject {
+ private String title;
+ private String description;
+ private String url;
+ private Color color;
+
+ private Footer footer;
+ private Thumbnail thumbnail;
+ private Image image;
+ private Author author;
+ private List<Field> fields = new ArrayList<>();
+
+ public String getTitle() {
+ return title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public Color getColor() {
+ return color;
+ }
+
+ public Footer getFooter() {
+ return footer;
+ }
+
+ public Thumbnail getThumbnail() {
+ return thumbnail;
+ }
+
+ public Image getImage() {
+ return image;
+ }
+
+ public Author getAuthor() {
+ return author;
+ }
+
+ public List<Field> getFields() {
+ return fields;
+ }
+
+ public EmbedObject setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public EmbedObject setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public EmbedObject setUrl(String url) {
+ this.url = url;
+ return this;
+ }
+
+ public EmbedObject setColor(Color color) {
+ this.color = color;
+ return this;
+ }
+
+ public EmbedObject setFooter(String text, String icon) {
+ this.footer = new Footer(text, icon);
+ return this;
+ }
+
+ public EmbedObject setThumbnail(String url) {
+ this.thumbnail = new Thumbnail(url);
+ return this;
+ }
+
+ public EmbedObject setImage(String url) {
+ this.image = new Image(url);
+ return this;
+ }
+
+ public EmbedObject setAuthor(String name, String url, String icon) {
+ this.author = new Author(name, url, icon);
+ return this;
+ }
+
+ public EmbedObject addField(String name, String value, boolean inline) {
+ this.fields.add(new Field(name, value, inline));
+ return this;
+ }
+
+ private class Footer {
+ private String text;
+ private String iconUrl;
+
+ private Footer(String text, String iconUrl) {
+ this.text = text;
+ this.iconUrl = iconUrl;
+ }
+
+ private String getText() {
+ return text;
+ }
+
+ private String getIconUrl() {
+ return iconUrl;
+ }
+ }
+
+ private class Thumbnail {
+ private String url;
+
+ private Thumbnail(String url) {
+ this.url = url;
+ }
+
+ private String getUrl() {
+ return url;
+ }
+ }
+
+ private class Image {
+ private String url;
+
+ private Image(String url) {
+ this.url = url;
+ }
+
+ private String getUrl() {
+ return url;
+ }
+ }
+
+ private class Author {
+ private String name;
+ private String url;
+ private String iconUrl;
+
+ private Author(String name, String url, String iconUrl) {
+ this.name = name;
+ this.url = url;
+ this.iconUrl = iconUrl;
+ }
+
+ private String getName() {
+ return name;
+ }
+
+ private String getUrl() {
+ return url;
+ }
+
+ private String getIconUrl() {
+ return iconUrl;
+ }
+ }
+
+ private class Field {
+ private String name;
+ private String value;
+ private boolean inline;
+
+ private Field(String name, String value, boolean inline) {
+ this.name = name;
+ this.value = value;
+ this.inline = inline;
+ }
+
+ private String getName() {
+ return name;
+ }
+
+ private String getValue() {
+ return value;
+ }
+
+ private boolean isInline() {
+ return inline;
+ }
+ }
+ }
+
+ private class JSONObject {
+
+ private final HashMap<String, Object> map = new HashMap<>();
+
+ void put(String key, Object value) {
+ if (value != null) {
+ map.put(key, value);
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ Set<Map.Entry<String, Object>> entrySet = map.entrySet();
+ builder.append("{");
+
+ int i = 0;
+ for (Map.Entry<String, Object> entry : entrySet) {
+ Object val = entry.getValue();
+ builder.append(quote(entry.getKey())).append(":");
+
+ if (val instanceof String) {
+ builder.append(quote(String.valueOf(val)));
+ } else if (val instanceof Integer) {
+ builder.append(Integer.valueOf(String.valueOf(val)));
+ } else if (val instanceof Boolean) {
+ builder.append(val);
+ } else if (val instanceof JSONObject) {
+ builder.append(val.toString());
+ } else if (val.getClass().isArray()) {
+ builder.append("[");
+ int len = Array.getLength(val);
+ for (int j = 0; j < len; j++) {
+ builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
+ }
+ builder.append("]");
+ }
+
+ builder.append(++i == entrySet.size() ? "}" : ",");
+ }
+
+ return builder.toString();
+ }
+
+ private String quote(String string) {
+ return "\"" + string + "\"";
+ }
+ }
+}
diff --git a/src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java b/src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java
index 51ba356..b0760a0 100644
--- a/src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java
+++ b/src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java
@@ -2,198 +2,97 @@ package rosegoldaddons.utils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.init.Items;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerChest;
import net.minecraft.inventory.Slot;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.StringUtils;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import rosegoldaddons.commands.Backpack;
-import rosegoldaddons.commands.LobbySwap;
+import rosegoldaddons.commands.Rosedrobe;
import rosegoldaddons.commands.Rosepet;
+import scala.Int;
+import tv.twitch.chat.Chat;
import java.util.List;
-import java.util.Locale;
public class OpenSkyblockGui {
- int windowId;
- int windowId2;
- int windowClicks = 0;
- boolean openingWardrobe = false;
- boolean lobbySwapping = false;
- boolean openingBP = false;
- boolean openingPets = false;
+ private static boolean openTrades = false;
@SubscribeEvent
public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) {
- if (!rosegoldaddons.commands.Rosedrobe.openWardrobe || openingWardrobe) return;
- new Thread(() -> {
- try {
- openingWardrobe = true;
- if (event.gui instanceof GuiChest) {
- Container container = ((GuiChest) event.gui).inventorySlots;
- if (container instanceof ContainerChest) {
- String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
- List<Slot> invSlots = container.inventorySlots;
- if (chestName.contains("Pets")) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- String slotName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName());
- //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(slotName));
- if (slotName.equals("Go Back")) {
- clickSlot(invSlots.get(i));
- }
- }
- } else if (chestName.contains("SkyBlock")) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).equals("Wardrobe")) {
- clickSlot(invSlots.get(i));
- if (rosegoldaddons.commands.Rosedrobe.slot == 0)
- rosegoldaddons.commands.Rosedrobe.openWardrobe = false;
- }
- }
- } else if (chestName.contains("Wardrobe")) {
- if (rosegoldaddons.commands.Rosedrobe.slot != 0) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- String slotName = "Slot " + rosegoldaddons.commands.Rosedrobe.slot + ":";
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).contains(slotName)) {
- clickSlot(invSlots.get(i));
- Minecraft.getMinecraft().thePlayer.closeScreen();
- rosegoldaddons.commands.Rosedrobe.openWardrobe = false;
- }
- }
- }
+ if(!Rosedrobe.openWardrobe && !openTrades && !Rosepet.openPetS) return;
+ ChatUtils.sendMessage("OpenSkyblockGui");
+ if (event.gui instanceof GuiChest) {
+ Container container = ((GuiChest) event.gui).inventorySlots;
+ if (container instanceof ContainerChest) {
+ String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
+ if (Rosedrobe.openWardrobe) {
+ if (chestName.contains("Pets")) {
+ clickSlot(48, 0, 0);
+ clickSlot(32, 0, 1);
+ if (Rosedrobe.slot > 0) {
+ clickSlot(Rosedrobe.slot + 35, 0, 2);
+ Minecraft.getMinecraft().thePlayer.closeScreen();
}
+ Rosedrobe.openWardrobe = false;
}
- }
- openingWardrobe = false;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }).start();
- }
-
- @SubscribeEvent
- public void guiDraw2(GuiScreenEvent.BackgroundDrawnEvent event) {
- if (!LobbySwap.swapLobby || lobbySwapping) return;
- new Thread(() -> {
- try {
- lobbySwapping = true;
- if (event.gui instanceof GuiChest) {
- Container container = ((GuiChest) event.gui).inventorySlots;
- if (container instanceof ContainerChest) {
- String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
- List<Slot> invSlots = container.inventorySlots;
- if (chestName.contains("SkyBlock")) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).equals("Enter the Crystal Hollows")) {
- clickSlot(invSlots.get(i));
- }
- }
- } else if (chestName.contains("Enter the")) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).equals("Confirm")) {
- clickSlot(invSlots.get(i));
- LobbySwap.swapLobby = false;
- }
- }
- Thread.sleep(2000);
- Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(Minecraft.getMinecraft().theWorld.getWorldTime() + " ticks"));
- }
+ } else if (openTrades) {
+ if (chestName.contains("Pets")) {
+ clickSlot(48, 0, 0);
+ clickSlot(22, 0, 1);
+ openTrades = false;
}
- }
- lobbySwapping = false;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }).start();
- }
-
- @SubscribeEvent
- public void guiDraw3(GuiScreenEvent.BackgroundDrawnEvent event) {
- if (!Backpack.openBP || openingBP) return;
- new Thread(() -> {
- try {
- openingBP = true;
- if (event.gui instanceof GuiChest) {
- Container container = ((GuiChest) event.gui).inventorySlots;
- if (container instanceof ContainerChest) {
- String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
- List<Slot> invSlots = container.inventorySlots;
- if (chestName.contains("Storage")) {
- if (Backpack.bpSlot != 0) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
- String slotName = "Slot " + Backpack.bpSlot;
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).contains(slotName)) {
- clickSlot(invSlots.get(i));
- Backpack.openBP = false;
- }
- }
- }
+ } else if (Rosepet.openPetS) {
+ if (chestName.contains("Pets")) {
+ int currPage = 1;
+ int lastPage = 1;
+ if(chestName.startsWith("(")) {
+ currPage = Integer.parseInt(chestName.substring(chestName.indexOf("(")+1, chestName.indexOf("/")));
+ lastPage = Integer.parseInt(chestName.substring(chestName.indexOf("/")+1, chestName.indexOf(")")));
}
- }
- }
- openingBP = false;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }).start();
- }
-
- @SubscribeEvent
- public void guiDraw4(GuiScreenEvent.BackgroundDrawnEvent event) {
- if (!Rosepet.openPetS || openingPets) return;
- new Thread(() -> {
- try {
- openingPets = true;
- if (event.gui instanceof GuiChest) {
- Container container = ((GuiChest) event.gui).inventorySlots;
- if (container instanceof ContainerChest) {
- String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
- List<Slot> invSlots = container.inventorySlots;
- if (chestName.contains("Pets")) {
- if (!Rosepet.name.equals("")) {
- int i;
- for (i = 0; i < invSlots.size(); i++) {
- if (!invSlots.get(i).getHasStack()) continue;
-
- if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).toLowerCase().contains(Rosepet.name.toLowerCase())) {
- clickSlot(invSlots.get(i));
- Rosepet.openPetS = false;
- }
+ String petName = Rosepet.name;
+ int petSlot = Rosepet.petSlot;
+ if(petSlot != 0) {
+ clickSlot(petSlot - 1, 0, 0);
+ Rosepet.petSlot = 0;
+ Rosepet.openPetS = false;
+ return;
+ }
+ if (!petName.equals("")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if (slot.getStack().getDisplayName().contains(petName)) {
+ clickSlot(slot.slotNumber, 0, 0);
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ Rosepet.openPetS = false;
+ return;
}
}
+ if (currPage < lastPage) {
+ clickSlot(53, 0, 0);
+ } else {
+ Rosepet.openPetS = false;
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ ChatUtils.sendMessage("No pet named "+petName+" found.");
+ }
+ } else {
+ ChatUtils.sendMessage("Invalid Pet Name");
+ Rosepet.openPetS = false;
}
+
}
}
- openingPets = false;
- } catch (Exception e) {
- e.printStackTrace();
}
- }).start();
+ }
}
- private void clickSlot(Slot slot) {
- windowId = Minecraft.getMinecraft().thePlayer.openContainer.windowId;
- Minecraft.getMinecraft().playerController.windowClick(windowId, slot.slotNumber, 2, 0, Minecraft.getMinecraft().thePlayer);
+ public static void openTradesMenu() {
+ openTrades = true;
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/pets");
}
- private void clickSlot2(Slot slot) {
- if(windowClicks == 0)
- windowId2 = Minecraft.getMinecraft().thePlayer.openContainer.windowId;
- Minecraft.getMinecraft().playerController.windowClick(windowId + windowClicks, slot.slotNumber, 2, 0, Minecraft.getMinecraft().thePlayer);
- windowClicks++;
+ private void clickSlot(int slot, int type, int windowAdd) {
+ Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().thePlayer.openContainer.windowId + windowAdd, slot, type, 0, Minecraft.getMinecraft().thePlayer);
}
}
diff --git a/src/main/java/rosegoldaddons/utils/OutlineUtils.java b/src/main/java/rosegoldaddons/utils/OutlineUtils.java
deleted file mode 100644
index 0b1bde2..0000000
--- a/src/main/java/rosegoldaddons/utils/OutlineUtils.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package rosegoldaddons.utils;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.model.ModelBase;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.OpenGlHelper;
-import net.minecraft.client.shader.Framebuffer;
-import net.minecraft.entity.EntityLivingBase;
-import org.lwjgl.opengl.EXTFramebufferObject;
-import org.lwjgl.opengl.EXTPackedDepthStencil;
-import rosegoldaddons.events.RenderLivingEntityEvent;
-
-import java.awt.*;
-
-import static org.lwjgl.opengl.GL11.*;
-
-public class OutlineUtils {
-
- public static void outlineESP(EntityLivingBase entity, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float scaleFactor, ModelBase modelBase, Color color) {
- Minecraft mc = Minecraft.getMinecraft();
- boolean fancyGraphics = mc.gameSettings.fancyGraphics;
- float gamma = mc.gameSettings.gammaSetting;
- mc.gameSettings.fancyGraphics = false;
- mc.gameSettings.gammaSetting = 100000F;
-
- GlStateManager.resetColor();
- setColor(color);
- renderOne(2);
- modelBase.render(entity, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor);
- setColor(color);
- renderTwo();
- modelBase.render(entity, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor);
- setColor(color);
- renderThree();
- modelBase.render(entity, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor);
- setColor(color);
- renderFour(color);
- modelBase.render(entity, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor);
- setColor(color);
- renderFive();
- setColor(Color.WHITE);
-
- mc.gameSettings.fancyGraphics = fancyGraphics;
- mc.gameSettings.gammaSetting = gamma;
- }
-
- public static void outlineESP(RenderLivingEntityEvent event, Color color) {
- Minecraft mc = Minecraft.getMinecraft();
- boolean fancyGraphics = mc.gameSettings.fancyGraphics;
- float gamma = mc.gameSettings.gammaSetting;
- mc.gameSettings.fancyGraphics = false;
- mc.gameSettings.gammaSetting = 100000F;
-
- GlStateManager.resetColor();
- setColor(color);
- renderOne(2);
- event.modelBase.render(event.entity, event.p_77036_2_, event.p_77036_3_, event.p_77036_4_, event.p_77036_5_, event.p_77036_6_, event.scaleFactor);
- setColor(color);
- renderTwo();
- event.modelBase.render(event.entity, event.p_77036_2_, event.p_77036_3_, event.p_77036_4_, event.p_77036_5_, event.p_77036_6_, event.scaleFactor);
- setColor(color);
- renderThree();
- event.modelBase.render(event.entity, event.p_77036_2_, event.p_77036_3_, event.p_77036_4_, event.p_77036_5_, event.p_77036_6_, event.scaleFactor);
- setColor(color);
- renderFour(color);
- event.modelBase.render(event.entity, event.p_77036_2_, event.p_77036_3_, event.p_77036_4_, event.p_77036_5_, event.p_77036_6_, event.scaleFactor);
- setColor(color);
- renderFive();
- setColor(Color.WHITE);
-
- mc.gameSettings.fancyGraphics = fancyGraphics;
- mc.gameSettings.gammaSetting = gamma;
- }
-
- public static void renderOne(final float lineWidth) {
- checkSetupFBO();
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- glDisable(GL_ALPHA_TEST);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_LIGHTING);
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glLineWidth(lineWidth);
- glEnable(GL_LINE_SMOOTH);
- glEnable(GL_STENCIL_TEST);
- glClear(GL_STENCIL_BUFFER_BIT);
- glClearStencil(0xF);
- glStencilFunc(GL_NEVER, 1, 0xF);
- glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- }
-
- public static void renderTwo() {
- glStencilFunc(GL_NEVER, 0, 0xF);
- glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- }
-
- public static void renderThree() {
- glStencilFunc(GL_EQUAL, 1, 0xF);
- glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- }
-
- public static void renderFour(final Color color) {
- setColor(color);
- glDepthMask(false);
- glDisable(GL_DEPTH_TEST);
- glEnable(GL_POLYGON_OFFSET_LINE);
- glPolygonOffset(1.0F, -2000000F);
- OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
- }
-
- public static void renderFive() {
- glPolygonOffset(1.0F, 2000000F);
- glDisable(GL_POLYGON_OFFSET_LINE);
- glEnable(GL_DEPTH_TEST);
- glDepthMask(true);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_LINE_SMOOTH);
- glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
- glEnable(GL_BLEND);
- glEnable(GL_LIGHTING);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_ALPHA_TEST);
- glPopAttrib();
- }
-
- public static void setColor(final Color color) {
- glColor4d(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, color.getAlpha() / 255F);
- }
-
- public static void checkSetupFBO() {
- final Framebuffer fbo = Minecraft.getMinecraft().getFramebuffer();
- if (fbo != null) {
- if (fbo.depthBuffer > -1) {
- setupFBO(fbo);
- fbo.depthBuffer = -1;
- }
- }
- }
-
- private static void setupFBO(final Framebuffer fbo) {
- EXTFramebufferObject.glDeleteRenderbuffersEXT(fbo.depthBuffer);
- final int stencil_depth_buffer_ID = EXTFramebufferObject.glGenRenderbuffersEXT();
- EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, stencil_depth_buffer_ID);
- EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, EXTPackedDepthStencil.GL_DEPTH_STENCIL_EXT, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight);
- EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_STENCIL_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, stencil_depth_buffer_ID);
- EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, stencil_depth_buffer_ID);
- }
-
-}
diff --git a/src/main/java/rosegoldaddons/utils/PlayerUtils.java b/src/main/java/rosegoldaddons/utils/PlayerUtils.java
new file mode 100644
index 0000000..b41d047
--- /dev/null
+++ b/src/main/java/rosegoldaddons/utils/PlayerUtils.java
@@ -0,0 +1,36 @@
+package rosegoldaddons.utils;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import rosegoldaddons.Main;
+
+public class PlayerUtils {
+ public static boolean pickaxeAbilityReady = false;
+
+ public static void swingItem() {
+ MovingObjectPosition movingObjectPosition = Minecraft.getMinecraft().objectMouseOver;
+ if (movingObjectPosition != null && movingObjectPosition.entityHit == null) {
+ Minecraft.getMinecraft().thePlayer.swingItem();
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ pickaxeAbilityReady = false;
+ }
+
+ @SubscribeEvent
+ public void chat(ClientChatReceivedEvent event) {
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+ if (message.contains(":")) return;
+ if(message.contains("You used your")) {
+ pickaxeAbilityReady = false;
+ } else if(message.contains("is now available!")) {
+ pickaxeAbilityReady = true;
+ }
+ }
+}
diff --git a/src/main/java/rosegoldaddons/utils/RenderUtils.java b/src/main/java/rosegoldaddons/utils/RenderUtils.java
index cfd7d1d..37c6e98 100644
--- a/src/main/java/rosegoldaddons/utils/RenderUtils.java
+++ b/src/main/java/rosegoldaddons/utils/RenderUtils.java
@@ -2,6 +2,7 @@ package rosegoldaddons.utils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
import net.minec