diff --git a/.gitignore b/.gitignore
index 09cd281..b47e808 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,8 +10,6 @@ classes/
*.launch
# idea
-
-.idea/
*.iml
*.ipr
*.iws
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b589d56
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..592fdc7
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..a2c3b2b
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5cbe6ea
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..797acea
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Client.xml b/.idea/runConfigurations/Minecraft_Client.xml
new file mode 100644
index 0000000..440487e
--- /dev/null
+++ b/.idea/runConfigurations/Minecraft_Client.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index c7467e9..f5b657b 100644
--- a/README.md
+++ b/README.md
@@ -96,7 +96,6 @@
- "Meteor Rounded" theme (Taken from an [unmerged PR](https://github.com/MeteorDevelopment/meteor-client/pull/619))
## HUD
-- Baritone process HUD
- Radar HUD
## Config
diff --git a/src/main/java/anticope/rejects/MeteorRejectsAddon.java b/src/main/java/anticope/rejects/MeteorRejectsAddon.java
index c9ef155..6421e64 100644
--- a/src/main/java/anticope/rejects/MeteorRejectsAddon.java
+++ b/src/main/java/anticope/rejects/MeteorRejectsAddon.java
@@ -13,7 +13,8 @@ import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.gui.GuiThemes;
import meteordevelopment.meteorclient.systems.Systems;
import meteordevelopment.meteorclient.systems.commands.Commands;
-import meteordevelopment.meteorclient.systems.hud.HUD;
+import meteordevelopment.meteorclient.systems.hud.Hud;
+import meteordevelopment.meteorclient.systems.hud.HudGroup;
import meteordevelopment.meteorclient.systems.modules.Category;
import meteordevelopment.meteorclient.systems.modules.Modules;
import net.fabricmc.loader.api.FabricLoader;
@@ -27,6 +28,7 @@ import java.lang.invoke.MethodHandles;
public class MeteorRejectsAddon extends MeteorAddon {
public static final Logger LOG = LoggerFactory.getLogger("Rejects");
public static final Category CATEGORY = new Category("Rejects", Items.BARRIER.getDefaultStack());
+ public static final HudGroup HUD_GROUP = new HudGroup("Rejects");
@Override
public void onInitialize() {
@@ -94,9 +96,8 @@ public class MeteorRejectsAddon extends MeteorAddon {
commands.add(new TerrainExport());
// HUD
- HUD hud = Systems.get(HUD.class);
- hud.elements.add(new BaritoneHud(hud));
- hud.elements.add(new RadarHud(hud));
+ Hud hud = Systems.get(Hud.class);
+ hud.register(RadarHud.INFO);
// Themes
GuiThemes.add(new MeteorRoundedGuiTheme());
diff --git a/src/main/java/anticope/rejects/gui/hud/BaritoneHud.java b/src/main/java/anticope/rejects/gui/hud/BaritoneHud.java
deleted file mode 100644
index 4873f07..0000000
--- a/src/main/java/anticope/rejects/gui/hud/BaritoneHud.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package anticope.rejects.gui.hud;
-
-import baritone.api.BaritoneAPI;
-import baritone.api.process.IBaritoneProcess;
-import meteordevelopment.meteorclient.systems.hud.HUD;
-import meteordevelopment.meteorclient.systems.hud.modules.DoubleTextHudElement;
-
-public class BaritoneHud extends DoubleTextHudElement {
- public BaritoneHud(HUD hud) {
- super(hud, "Baritone", "Displays what baritone is doing.", "Baritone: ");
- }
-
- @Override
- protected String getRight() {
- IBaritoneProcess process = BaritoneAPI.getProvider().getPrimaryBaritone().getPathingControlManager().mostRecentInControl().orElse(null);
-
- if (process == null) return "-";
-
- return process.displayName();
-
-
- }
-}
diff --git a/src/main/java/anticope/rejects/gui/hud/RadarHud.java b/src/main/java/anticope/rejects/gui/hud/RadarHud.java
index 17684d0..b73911b 100644
--- a/src/main/java/anticope/rejects/gui/hud/RadarHud.java
+++ b/src/main/java/anticope/rejects/gui/hud/RadarHud.java
@@ -2,11 +2,13 @@ package anticope.rejects.gui.hud;
import java.util.Iterator;
+import anticope.rejects.MeteorRejectsAddon;
+import meteordevelopment.meteorclient.systems.hud.Hud;
+import meteordevelopment.meteorclient.systems.hud.HudElementInfo;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.util.math.Vec3d;
-import anticope.rejects.MeteorRejectsAddon;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import meteordevelopment.meteorclient.renderer.Renderer2D;
import meteordevelopment.meteorclient.settings.BoolSetting;
@@ -15,9 +17,8 @@ import meteordevelopment.meteorclient.settings.DoubleSetting;
import meteordevelopment.meteorclient.settings.EntityTypeListSetting;
import meteordevelopment.meteorclient.settings.Setting;
import meteordevelopment.meteorclient.settings.SettingGroup;
-import meteordevelopment.meteorclient.systems.hud.HUD;
import meteordevelopment.meteorclient.systems.hud.HudRenderer;
-import meteordevelopment.meteorclient.systems.hud.modules.HudElement;
+import meteordevelopment.meteorclient.systems.hud.HudElement;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.render.ESP;
import meteordevelopment.meteorclient.systems.waypoints.Waypoint;
@@ -25,23 +26,26 @@ import meteordevelopment.meteorclient.systems.waypoints.Waypoints;
import meteordevelopment.meteorclient.utils.misc.Vec3;
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
+import static meteordevelopment.meteorclient.MeteorClient.mc;
+
public class RadarHud extends HudElement {
+ public static final HudElementInfo INFO = new HudElementInfo<>(MeteorRejectsAddon.HUD_GROUP, "radar", "Draws a Radar on your HUD telling you where entities are.", RadarHud::new);
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting backgroundColor = sgGeneral.add(new ColorSetting.Builder()
- .name("background-color")
- .description("Color of background.")
- .defaultValue(new SettingColor(0, 0, 0, 64))
- .build()
+ .name("background-color")
+ .description("Color of background.")
+ .defaultValue(new SettingColor(0, 0, 0, 64))
+ .build()
);
private final Setting>> entities = sgGeneral.add(new EntityTypeListSetting.Builder()
- .name("entities")
- .description("Select specific entities.")
- .defaultValue(EntityType.PLAYER)
- .build()
+ .name("entities")
+ .description("Select specific entities.")
+ .defaultValue(EntityType.PLAYER)
+ .build()
);
private final Setting letters = sgGeneral.add(new BoolSetting.Builder()
@@ -59,11 +63,12 @@ public class RadarHud extends HudElement {
);
private final Setting scale = sgGeneral.add(new DoubleSetting.Builder()
- .name("scale")
- .description("The scale.")
- .defaultValue(1)
- .min(1)
- .sliderRange(0.01, 5)
+ .name("scale")
+ .description("The scale.")
+ .defaultValue(1)
+ .min(1)
+ .sliderRange(0.01, 5)
+ .onChanged(aDouble -> calculateSize())
.build()
);
@@ -76,36 +81,36 @@ public class RadarHud extends HudElement {
.build()
);
- public RadarHud(HUD hud) {
- super(hud, "Radar", "Draws a Radar on your HUD telling you where entities are");
+ public RadarHud() {
+ super(INFO);
+ calculateSize();
}
- @Override
- public void update(HudRenderer renderer) {
- box.setSize(100 * scale.get(), 100 * scale.get());
+ public void calculateSize() {
+ setSize(200 * scale.get(), 200 * scale.get());
}
@Override
public void render(HudRenderer renderer) {
ESP esp = Modules.get().get(ESP.class);
if (esp == null) return;
- renderer.addPostTask(() -> {
- double x = box.getX();
- double y = box.getY();
-
+ renderer.post(() -> {
+ if (mc.player == null) return;
+ double width = getWidth();
+ double height = getHeight();
Renderer2D.COLOR.begin();
- Renderer2D.COLOR.quad(x, y, box.width, box.height, backgroundColor.get());
+ Renderer2D.COLOR.quad(x, y, width, height, backgroundColor.get());
Renderer2D.COLOR.render(null);
if (mc.world != null) {
for (Entity entity : mc.world.getEntities()) {
if (!entities.get().getBoolean(entity.getType())) return;
- double xPos = ((entity.getX() - mc.player.getX()) * scale.get() * zoom.get() + box.width/2);
- double yPos = ((entity.getZ() - mc.player.getZ()) * scale.get() * zoom.get() + box.height/2);
- if (xPos < 0 || yPos < 0 || xPos > box.width - scale.get() || yPos > box.height - scale.get()) continue;
+ double xPos = ((entity.getX() - mc.player.getX()) * scale.get() * zoom.get() + width/2);
+ double yPos = ((entity.getZ() - mc.player.getZ()) * scale.get() * zoom.get() + height/2);
+ if (xPos < 0 || yPos < 0 || xPos > width - scale.get() || yPos > height - scale.get()) continue;
String icon = "*";
if (letters.get())
icon = entity.getType().getUntranslatedName().substring(0,1).toUpperCase();
- renderer.text(icon, xPos + x, yPos + y, esp.getColor(entity));
+ renderer.text(icon, xPos + x, yPos + y, esp.getColor(entity), false);
}
}
if (showWaypoints.get()) {
@@ -114,13 +119,13 @@ public class RadarHud extends HudElement {
Waypoint waypoint = waypoints.next();
Vec3 c = waypoint.getCoords();
Vec3d coords = new Vec3d(c.x, c.y, c.z);
- double xPos = ((coords.getX() - mc.player.getX()) * scale.get() * zoom.get() + box.width/2);
- double yPos = ((coords.getZ() - mc.player.getZ()) * scale.get() * zoom.get() + box.height/2);
- if (xPos < 0 || yPos < 0 || xPos > box.width - scale.get() || yPos > box.height - scale.get()) continue;
+ double xPos = ((coords.getX() - mc.player.getX()) * scale.get() * zoom.get() + width/2);
+ double yPos = ((coords.getZ() - mc.player.getZ()) * scale.get() * zoom.get() + height/2);
+ if (xPos < 0 || yPos < 0 || xPos > width - scale.get() || yPos > height - scale.get()) continue;
String icon = "*";
if (letters.get() && waypoint.name.length() > 0)
icon = waypoint.name.substring(0, 1);
- renderer.text(icon, xPos + x, yPos + y, waypoint.color);
+ renderer.text(icon, xPos + x, yPos + y, waypoint.color, false);
}
}
Renderer2D.COLOR.render(null);
diff --git a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
index f2167b0..7cb800c 100644
--- a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
+++ b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
@@ -91,9 +91,7 @@ public class InteractionScreen extends Screen {
closeScreen();
client.setScreen(new InventoryScreen((PlayerEntity) e));
});
- }
-
- else if (entity instanceof AbstractHorseEntity) {
+ } else if (entity instanceof AbstractHorseEntity) {
functions.put("Open Inventory", (Entity e) -> {
closeScreen();
if (client.player.isRiding()) {
@@ -102,14 +100,12 @@ public class InteractionScreen extends Screen {
client.player.networkHandler.sendPacket(PlayerInteractEntityC2SPacket.interact(entity, true, Hand.MAIN_HAND));
client.player.setSneaking(false);
});
- }
- else if (entity instanceof StorageMinecartEntity) {
+ } else if (entity instanceof StorageMinecartEntity) {
functions.put("Open Inventory", (Entity e) -> {
closeScreen();
client.player.networkHandler.sendPacket(PlayerInteractEntityC2SPacket.interact(entity, true, Hand.MAIN_HAND));
});
- }
- else {
+ } else {
functions.put("Open Inventory", (Entity e) -> {
closeScreen();
ItemStack container = new ItemStack(Items.CHEST);
@@ -128,13 +124,13 @@ public class InteractionScreen extends Screen {
if (entity.isGlowing()) {
functions.put("Remove glow", (Entity e) -> {
e.setGlowing(false);
- ((EntityAccessor)e).invokeSetFlag(6, false);
+ ((EntityAccessor) e).invokeSetFlag(6, false);
closeScreen();
});
} else {
functions.put("Glow", (Entity e) -> {
e.setGlowing(true);
- ((EntityAccessor)e).invokeSetFlag(6, true);
+ ((EntityAccessor) e).invokeSetFlag(6, true);
closeScreen();
});
}
@@ -161,16 +157,17 @@ public class InteractionScreen extends Screen {
}
var script = Compiler.compile(result);
try {
- client.setScreen(new ChatScreen(MeteorStarscript.ss.run(script)));
+ var section = MeteorStarscript.ss.run(script);
+ client.setScreen(new ChatScreen(section.text));
} catch (StarscriptError err) {
MeteorStarscript.printChatError(err);
- return;
}
-
});
-
+
+ });
+ functions.put("Cancel", (Entity e) -> {
+ closeScreen();
});
- functions.put("Cancel", (Entity e) -> {closeScreen();});
}
private ItemStack[] getInventory(Entity e) {
@@ -178,31 +175,31 @@ public class InteractionScreen extends Screen {
final int[] index = {0};
if (e instanceof EndermanEntity) {
try {
- stack[index[0]] = ((EndermanEntity)e).getCarriedBlock().getBlock().asItem().getDefaultStack();
+ stack[index[0]] = ((EndermanEntity) e).getCarriedBlock().getBlock().asItem().getDefaultStack();
index[0]++;
+ } catch (NullPointerException ex) {
}
- catch (NullPointerException ex) {}
}
if (Saddleable.class.isInstance(e)) {
- if (((Saddleable)e).isSaddled()){
+ if (((Saddleable) e).isSaddled()) {
stack[index[0]] = Items.SADDLE.getDefaultStack();
index[0]++;
}
}
e.getItemsHand().forEach(itemStack -> {
- if (itemStack!=null) {
+ if (itemStack != null) {
stack[index[0]] = itemStack;
index[0]++;
}
});
e.getArmorItems().forEach(itemStack -> {
- if (itemStack!=null) {
+ if (itemStack != null) {
stack[index[0]] = itemStack;
index[0]++;
}
});
for (int i = index[0]; i < 27; i++) stack[i] = Items.AIR.getDefaultStack();
- return stack;
+ return stack;
}
public void init() {
@@ -214,8 +211,8 @@ public class InteractionScreen extends Screen {
private void cursorMode(int mode) {
KeyBinding.unpressAll();
- double x = (double)(this.client.getWindow().getWidth() / 2);
- double y = (double)(this.client.getWindow().getHeight() / 2);
+ double x = (double) (this.client.getWindow().getWidth() / 2);
+ double y = (double) (this.client.getWindow().getHeight() / 2);
InputUtil.setCursorParameters(this.client.getWindow().getHandle(), mode, x, y);
}
@@ -253,7 +250,7 @@ public class InteractionScreen extends Screen {
drawTexture(matrix, crosshairX - 8, crosshairY - 8, 0, 0, 15, 15);
drawDots(matrix, (int) (Math.min(height, width) / 2 * 0.75), mouseX, mouseY);
- matrix.scale (2f, 2f, 1f);
+ matrix.scale(2f, 2f, 1f);
drawCenteredText(matrix, textRenderer, entity.getName(), width / 4, 6, 0xFFFFFFFF);
int scale = client.options.getGuiScale().getValue();
@@ -275,20 +272,19 @@ public class InteractionScreen extends Screen {
this.crosshairX = (int) mouse.x + width / 2;
this.crosshairY = (int) mouse.y + height / 2;
- client.player.setYaw( yaw + cross.x / 3);
+ client.player.setYaw(yaw + cross.x / 3);
client.player.setPitch(MathHelper.clamp(pitch + cross.y / 3, -90f, 90f));
super.render(matrix, mouseX, mouseY, delta);
}
-
private void drawDots(MatrixStack matrix, int radius, int mouseX, int mouseY) {
ArrayList pointList = new ArrayList();
String cache[] = new String[functions.size()];
double lowestDistance = Double.MAX_VALUE;
int i = 0;
- for (String string: functions.keySet()) {
+ for (String string : functions.keySet()) {
// Just some fancy calculations to get the positions of the dots
double s = (double) i / functions.size() * 2 * Math.PI;
int x = (int) Math.round(radius * Math.cos(s) + width / 2);
@@ -312,13 +308,12 @@ public class InteractionScreen extends Screen {
if (pointList.get(focusedDot) == point) {
drawDot(matrix, point.x - 4, point.y - 4, selectedDotColor);
this.focusedString = cache[focusedDot];
- }
- else
+ } else
drawDot(matrix, point.x - 4, point.y - 4, dotColor);
}
}
- private void drawRect(MatrixStack matrix, int startX, int startY, int width, int height, int colorInner,int colorOuter) {
+ private void drawRect(MatrixStack matrix, int startX, int startY, int width, int height, int colorInner, int colorOuter) {
drawHorizontalLine(matrix, startX, startX + width, startY, colorOuter);
drawHorizontalLine(matrix, startX, startX + width, startY + height, colorOuter);
drawVerticalLine(matrix, startX, startY, startY + height, colorOuter);
@@ -370,7 +365,7 @@ public class InteractionScreen extends Screen {
class Vector2 {
float x, y;
- Vector2 (float x, float y) {
+ Vector2(float x, float y) {
this.x = x;
this.y = y;
}
@@ -381,7 +376,7 @@ class Vector2 {
divide(mag);
}
- void subtract (Vector2 vec) {
+ void subtract(Vector2 vec) {
this.x -= vec.x;
this.y -= vec.y;
}
diff --git a/src/main/java/anticope/rejects/gui/themes/rounded/MeteorRoundedGuiTheme.java b/src/main/java/anticope/rejects/gui/themes/rounded/MeteorRoundedGuiTheme.java
index 3a45ef6..824d88d 100644
--- a/src/main/java/anticope/rejects/gui/themes/rounded/MeteorRoundedGuiTheme.java
+++ b/src/main/java/anticope/rejects/gui/themes/rounded/MeteorRoundedGuiTheme.java
@@ -37,6 +37,7 @@ public class MeteorRoundedGuiTheme extends GuiTheme {
private final SettingGroup sgSeparator = settings.createGroup("Separator");
private final SettingGroup sgScrollbar = settings.createGroup("Scrollbar");
private final SettingGroup sgSlider = settings.createGroup("Slider");
+ private final SettingGroup sgStarscript = settings.createGroup("Starscript");
// General
@@ -156,6 +157,19 @@ public class MeteorRoundedGuiTheme extends GuiTheme {
public final Setting sliderLeft = color(sgSlider, "slider-left", "Color of slider left part.", new SettingColor(0, 150, 80));
public final Setting sliderRight = color(sgSlider, "slider-right", "Color of slider right part.", new SettingColor(50, 50, 50));
+ // Starscript
+
+ private final Setting starscriptText = color(sgStarscript, "starscript-text", "Color of text in Starscript code.", new SettingColor(169, 183, 198));
+ private final Setting starscriptBraces = color(sgStarscript, "starscript-braces", "Color of braces in Starscript code.", new SettingColor(150, 150, 150));
+ private final Setting starscriptParenthesis = color(sgStarscript, "starscript-parenthesis", "Color of parenthesis in Starscript code.", new SettingColor(169, 183, 198));
+ private final Setting starscriptDots = color(sgStarscript, "starscript-dots", "Color of dots in starscript code.", new SettingColor(169, 183, 198));
+ private final Setting starscriptCommas = color(sgStarscript, "starscript-commas", "Color of commas in starscript code.", new SettingColor(169, 183, 198));
+ private final Setting starscriptOperators = color(sgStarscript, "starscript-operators", "Color of operators in Starscript code.", new SettingColor(169, 183, 198));
+ private final Setting starscriptStrings = color(sgStarscript, "starscript-strings", "Color of strings in Starscript code.", new SettingColor(106, 135, 89));
+ private final Setting starscriptNumbers = color(sgStarscript, "starscript-numbers", "Color of numbers in Starscript code.", new SettingColor(104, 141, 187));
+ private final Setting starscriptKeywords = color(sgStarscript, "starscript-keywords", "Color of keywords in Starscript code.", new SettingColor(204, 120, 50));
+ private final Setting starscriptAccessedObjects = color(sgStarscript, "starscript-accessed-objects", "Color of accessed objects (before a dot) in Starscript code.", new SettingColor(152, 118, 170));
+
public MeteorRoundedGuiTheme() {
super("Meteor Rounded");
@@ -222,8 +236,8 @@ public class MeteorRoundedGuiTheme extends GuiTheme {
}
@Override
- public WTextBox textBox(String text, CharFilter filter) {
- return w(new WMeteorTextBox(text, filter));
+ public WTextBox textBox(String text, CharFilter filter, Class extends WTextBox.Renderer> renderer) {
+ return w(new WMeteorTextBox(text, filter, renderer));
}
@Override
@@ -288,6 +302,58 @@ public class MeteorRoundedGuiTheme extends GuiTheme {
return textSecondaryColor.get();
}
+ // Starscript
+
+ @Override
+ public Color starscriptTextColor() {
+ return starscriptText.get();
+ }
+
+ @Override
+ public Color starscriptBraceColor() {
+ return starscriptBraces.get();
+ }
+
+ @Override
+ public Color starscriptParenthesisColor() {
+ return starscriptParenthesis.get();
+ }
+
+ @Override
+ public Color starscriptDotColor() {
+ return starscriptDots.get();
+ }
+
+ @Override
+ public Color starscriptCommaColor() {
+ return starscriptCommas.get();
+ }
+
+ @Override
+ public Color starscriptOperatorColor() {
+ return starscriptOperators.get();
+ }
+
+ @Override
+ public Color starscriptStringColor() {
+ return starscriptStrings.get();
+ }
+
+ @Override
+ public Color starscriptNumberColor() {
+ return starscriptNumbers.get();
+ }
+
+ @Override
+ public Color starscriptKeywordColor() {
+ return starscriptKeywords.get();
+ }
+
+ @Override
+ public Color starscriptAccessedObjectColor() {
+ return starscriptAccessedObjects.get();
+ }
+
// Other
@Override
diff --git a/src/main/java/anticope/rejects/gui/themes/rounded/widgets/input/WMeteorTextBox.java b/src/main/java/anticope/rejects/gui/themes/rounded/widgets/input/WMeteorTextBox.java
index 62c3f0a..6ff302d 100644
--- a/src/main/java/anticope/rejects/gui/themes/rounded/widgets/input/WMeteorTextBox.java
+++ b/src/main/java/anticope/rejects/gui/themes/rounded/widgets/input/WMeteorTextBox.java
@@ -8,9 +8,14 @@ package anticope.rejects.gui.themes.rounded.widgets.input;
import meteordevelopment.meteorclient.gui.renderer.GuiRenderer;
import anticope.rejects.gui.themes.rounded.MeteorRoundedGuiTheme;
import anticope.rejects.gui.themes.rounded.MeteorWidget;
+import anticope.rejects.gui.themes.rounded.widgets.WMeteorLabel;
import meteordevelopment.meteorclient.gui.utils.CharFilter;
import meteordevelopment.meteorclient.gui.widgets.input.WTextBox;
+import meteordevelopment.meteorclient.gui.widgets.WWidget;
+import meteordevelopment.meteorclient.gui.widgets.containers.WContainer;
+import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList;
import meteordevelopment.meteorclient.utils.Utils;
+import meteordevelopment.meteorclient.utils.render.color.Color;
public class WMeteorTextBox extends WTextBox implements MeteorWidget {
private boolean cursorVisible;
@@ -18,8 +23,8 @@ public class WMeteorTextBox extends WTextBox implements MeteorWidget {
private double animProgress;
- public WMeteorTextBox(String text, CharFilter filter) {
- super(text, filter);
+ public WMeteorTextBox(String text, CharFilter filter, Class extends Renderer> renderer) {
+ super(text, filter, renderer);
}
@Override
@@ -33,13 +38,12 @@ public class WMeteorTextBox extends WTextBox implements MeteorWidget {
if (cursorTimer >= 1) {
cursorVisible = !cursorVisible;
cursorTimer = 0;
- }
- else {
+ } else {
cursorTimer += delta * 1.75;
}
renderBackground(renderer, this, false, false);
-
+
MeteorRoundedGuiTheme theme = theme();
double pad = pad();
double overflowWidth = getOverflowWidthForRender();
@@ -72,4 +76,66 @@ public class WMeteorTextBox extends WTextBox implements MeteorWidget {
renderer.scissorEnd();
}
+ @Override
+ protected WContainer createCompletionsRootWidget() {
+ return new WVerticalList() {
+ @Override
+ protected void onRender(GuiRenderer renderer1, double mouseX, double mouseY, double delta) {
+ MeteorRoundedGuiTheme theme1 = theme();
+ double s = theme1.scale(2);
+ Color c = theme1.outlineColor.get();
+
+ Color col = theme1.backgroundColor.get();
+ int preA = col.a;
+ col.a += col.a / 2;
+ col.validate();
+ renderer1.quad(this, col);
+ col.a = preA;
+
+ renderer1.quad(x, y + height - s, width, s, c);
+ renderer1.quad(x, y, s, height - s, c);
+ renderer1.quad(x + width - s, y, s, height - s, c);
+ }
+ };
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected T createCompletionsValueWidth(String completion, boolean selected) {
+ return (T) new CompletionItem(completion, false, selected);
+ }
+
+ private static class CompletionItem extends WMeteorLabel implements ICompletionItem {
+ private static final Color SELECTED_COLOR = new Color(255, 255, 255, 15);
+
+ private boolean selected;
+
+ public CompletionItem(String text, boolean title, boolean selected) {
+ super(text, title);
+ this.selected = selected;
+ }
+
+ @Override
+ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) {
+ super.onRender(renderer, mouseX, mouseY, delta);
+
+ if (selected) renderer.quad(this, SELECTED_COLOR);
+ }
+
+ @Override
+ public boolean isSelected() {
+ return selected;
+ }
+
+ @Override
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ }
+
+ @Override
+ public String getCompletion() {
+ return text;
+ }
+ }
+
}
diff --git a/src/main/java/anticope/rejects/modules/ChatBot.java b/src/main/java/anticope/rejects/modules/ChatBot.java
index 792ef83..0122ebc 100644
--- a/src/main/java/anticope/rejects/modules/ChatBot.java
+++ b/src/main/java/anticope/rejects/modules/ChatBot.java
@@ -3,6 +3,7 @@ package anticope.rejects.modules;
import java.util.HashMap;
import anticope.rejects.MeteorRejectsAddon;
+import meteordevelopment.meteorclient.gui.utils.StarscriptTextBoxRenderer;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtString;
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
@@ -71,7 +72,8 @@ public class ChatBot extends Module {
Script script = compile(commands.get(cmd));
if (script == null) mc.player.sendChatMessage("An error occurred");
try {
- mc.player.sendChatMessage(MeteorStarscript.ss.run(script));
+ var section = MeteorStarscript.ss.run(script);
+ mc.player.sendChatMessage(section.text);
} catch (StarscriptError e) {
MeteorStarscript.printChatError(e);
mc.player.sendChatMessage("An error occurred");
@@ -104,7 +106,7 @@ public class ChatBot extends Module {
textBoxK.action = () -> {
currMsgK = textBoxK.get();
};
- WTextBox textBoxV = table.add(theme.textBox(currMsgV)).minWidth(100).expandX().widget();
+ WTextBox textBoxV = table.add(theme.textBox(currMsgV, (text1, c) -> true, StarscriptTextBoxRenderer.class)).minWidth(100).expandX().widget();
textBoxV.action = () -> {
currMsgV = textBoxV.get();
};
diff --git a/src/main/java/anticope/rejects/modules/InteractionMenu.java b/src/main/java/anticope/rejects/modules/InteractionMenu.java
index 2980452..42b9c72 100644
--- a/src/main/java/anticope/rejects/modules/InteractionMenu.java
+++ b/src/main/java/anticope/rejects/modules/InteractionMenu.java
@@ -4,6 +4,8 @@ import anticope.rejects.MeteorRejectsAddon;
import anticope.rejects.gui.screens.InteractionScreen;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import meteordevelopment.meteorclient.gui.GuiTheme;
+import meteordevelopment.meteorclient.gui.utils.CharFilter;
+import meteordevelopment.meteorclient.gui.utils.StarscriptTextBoxRenderer;
import meteordevelopment.meteorclient.gui.widgets.WWidget;
import meteordevelopment.meteorclient.gui.widgets.containers.WTable;
import meteordevelopment.meteorclient.gui.widgets.input.WTextBox;
@@ -120,7 +122,7 @@ public class InteractionMenu extends Module {
textBoxK.action = () -> {
currMsgK = textBoxK.get();
};
- WTextBox textBoxV = table.add(theme.textBox(currMsgV)).minWidth(100).expandX().widget();
+ WTextBox textBoxV = table.add(theme.textBox(currMsgV, (text1, c) -> true, StarscriptTextBoxRenderer.class)).minWidth(100).expandX().widget();
textBoxV.action = () -> {
currMsgV = textBoxV.get();
};
@@ -163,6 +165,19 @@ public class InteractionMenu extends Module {
}
private static Value wrap(Entity entity) {
+ if (entity == null) {
+ return Value.map(new ValueMap()
+ .set("_toString", Value.null_())
+ .set("health", Value.null_())
+ .set("pos", Value.map(new ValueMap()
+ .set("_toString", Value.null_())
+ .set("x", Value.null_())
+ .set("y", Value.null_())
+ .set("z", Value.null_())
+ ))
+ .set("uuid", Value.null_())
+ );
+ }
return Value.map(new ValueMap()
.set("_toString", Value.string(entity.getName().getString()))
.set("health", Value.number(entity instanceof LivingEntity e ? e.getHealth() : 0))