Quickplay (Hypixel)
@ -87,18 +87,18 @@ public class Input {
|
||||
ColorUtils.setColor(theme.getBorderColor().getRGB());
|
||||
if(value.length() != 0) {
|
||||
renderText = value;
|
||||
ColorUtils.setColor(theme.getFocusedBorderColor().getRGB());
|
||||
}
|
||||
if(keyValue) {
|
||||
if(key != -1) {
|
||||
renderText = Keyboard.getKeyName(key);
|
||||
ColorUtils.setColor(theme.getFocusedBorderColor().getRGB());
|
||||
} else {
|
||||
renderText = "NONE";
|
||||
}
|
||||
if(isFocused) {
|
||||
renderText = "...";
|
||||
ColorUtils.setColor(theme.getFocusedBorderColor().getRGB());
|
||||
}
|
||||
}
|
||||
ColorUtils.setColor(theme.getFocusedBorderColor().getRGB());
|
||||
float textX = x + 2;
|
||||
if(center) {
|
||||
textX = x + (width / 2) - (Client.getInstance().getSilentFontRenderer().getStringWidth(renderText, small ? 12 : 14, SilentFontRenderer.FontType.TITLE) / 2);
|
||||
@ -129,10 +129,19 @@ public class Input {
|
||||
public void onKeyTyped(char typedChar, int keyCode) {
|
||||
if(isFocused) {
|
||||
if(keyValue) {
|
||||
if(keyCode == Keyboard.KEY_ESCAPE) {
|
||||
key = -1;
|
||||
isFocused = false;
|
||||
return;
|
||||
}
|
||||
key = keyCode;
|
||||
isFocused = false;
|
||||
return;
|
||||
}
|
||||
if(keyCode == Keyboard.KEY_ESCAPE) {
|
||||
isFocused = false;
|
||||
return;
|
||||
}
|
||||
if(keyCode == Keyboard.KEY_BACK) {
|
||||
if (value != null || value.length() != 0 || value != "") {
|
||||
this.value = StringUtils.chop(this.value);
|
||||
|
@ -67,7 +67,7 @@ public class ModSettings extends SilentScreen {
|
||||
this.silentInputs.add(new Input(setting.getName(), setting.getValString()));
|
||||
}
|
||||
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
this.silentInputs.add(new Input(setting.getName(), setting.getKeybind()));
|
||||
}
|
||||
}
|
||||
@ -87,7 +87,7 @@ public class ModSettings extends SilentScreen {
|
||||
setting.setValString(this.silentInputs.get(inputIndex).getValue().length() != 0 ? this.silentInputs.get(inputIndex).getValue() : setting.defaultsval);
|
||||
inputIndex++;
|
||||
}
|
||||
if (setting.isKeybind()) {
|
||||
if (setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
setting.setKeybind(this.silentInputs.get(inputIndex).getKey() != 0 ? this.silentInputs.get(inputIndex).getKey() : setting.defaultkval);
|
||||
inputIndex++;
|
||||
}
|
||||
@ -170,7 +170,7 @@ public class ModSettings extends SilentScreen {
|
||||
inputIndex++;
|
||||
}
|
||||
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
Client.getInstance().getSilentFontRenderer().drawString(setting.getName() + ":", x + 100, settingY + 1, 12, SilentFontRenderer.FontType.TITLE);
|
||||
this.silentInputs.get(inputIndex).render(mouseX, mouseY, x + width - 50 - 5, settingY, 50, true, new DefaultInputTheme(), true);
|
||||
ColorUtils.setColor(-1);
|
||||
@ -349,7 +349,7 @@ public class ModSettings extends SilentScreen {
|
||||
inputIndex++;
|
||||
}
|
||||
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
this.silentInputs.get(inputIndex).onClick(mouseX, mouseY, x + width - 50 - 5, settingY, 50, true);
|
||||
settingY += 5;
|
||||
inputIndex++;
|
||||
@ -429,7 +429,7 @@ public class ModSettings extends SilentScreen {
|
||||
setting.setValString(this.silentInputs.get(inputIndex).getValue());
|
||||
inputIndex++;
|
||||
}
|
||||
if (setting.isKeybind()) {
|
||||
if (setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
this.silentInputs.get(inputIndex).onKeyTyped(typedChar, keyCode);
|
||||
setting.setKeybind(this.silentInputs.get(inputIndex).getKey());
|
||||
inputIndex++;
|
||||
|
@ -159,6 +159,17 @@ public class ModMenu extends SilentScreen {
|
||||
|
||||
Client.getInstance().getSilentFontRenderer().drawString(mod.getName(), modX, modY + 10 - 6, 12, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
if(mod.isUpdated() || mod.isNew()) {
|
||||
String status = "UPDATED";
|
||||
if(mod.isNew()) {
|
||||
status = "NEW";
|
||||
}
|
||||
float badgeX = modX + Client.getInstance().getSilentFontRenderer().getStringWidth(mod.getName(), 12, SilentFontRenderer.FontType.TITLE) + 2;
|
||||
float badgeY = modY + 6;
|
||||
RenderUtil.drawRoundedRect(badgeX, badgeY, Client.getInstance().getSilentFontRenderer().getStringWidth(status, 6, SilentFontRenderer.FontType.HEADER) + 4, 8, 8, Color.RED.getRGB());
|
||||
Client.getInstance().getSilentFontRenderer().drawString(status, badgeX + 2, badgeY + 1, 6, SilentFontRenderer.FontType.HEADER);
|
||||
}
|
||||
|
||||
if(modCategory == ModCategory.MODS) {
|
||||
Switch.render(mouseX, mouseY, 129, modY + 10 - 4, mod.switchAniamation, mod.isEnabled(), mod.isForceDisabled(), mod.isForceDisabled() ? "Force disabled" : null);
|
||||
if(Switch.isHovered(mouseX, mouseY, 129, modY + 10 - 4)) {
|
||||
|
@ -69,7 +69,7 @@ public class ModSettings extends SilentScreen {
|
||||
this.silentInputs.add(new Input(setting.getName(), setting.getValString()));
|
||||
}
|
||||
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
this.silentInputs.add(new Input(setting.getName(), setting.getKeybind()));
|
||||
}
|
||||
}
|
||||
@ -117,7 +117,7 @@ public class ModSettings extends SilentScreen {
|
||||
settingY += 5;
|
||||
inputIndex++;
|
||||
}
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
Client.getInstance().getSilentFontRenderer().drawString(setting.getName(), 3, settingY, 12, SilentFontRenderer.FontType.TITLE);
|
||||
this.silentInputs.get(inputIndex).render(mouseX, mouseY, 150 - 50 - 3, settingY, 50, true, new DefaultInputTheme(), true);
|
||||
settingY += 5;
|
||||
@ -247,7 +247,7 @@ public class ModSettings extends SilentScreen {
|
||||
settingY += 5;
|
||||
inputIndex++;
|
||||
}
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
Client.getInstance().getSilentFontRenderer().drawString(setting.getName(), 3, settingY, 12, SilentFontRenderer.FontType.TITLE);
|
||||
this.silentInputs.get(inputIndex).onClick(mouseX, mouseY, 150 - 50 - 3, (int) settingY, 50, true);
|
||||
settingY += 5;
|
||||
@ -351,7 +351,7 @@ public class ModSettings extends SilentScreen {
|
||||
inputIndex++;
|
||||
}
|
||||
|
||||
if (setting.isKeybind()) {
|
||||
if (setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
this.silentInputs.get(inputIndex).onKeyTyped(typedChar, keyCode);
|
||||
setting.setKeybind(this.silentInputs.get(inputIndex).getKey());
|
||||
inputIndex++;
|
||||
@ -372,7 +372,7 @@ public class ModSettings extends SilentScreen {
|
||||
setting.setValString(this.silentInputs.get(inputIndex).getValue().length() != 0 ? this.silentInputs.get(inputIndex).getValue() : setting.defaultsval);
|
||||
inputIndex++;
|
||||
}
|
||||
if (setting.isKeybind()) {
|
||||
if (setting.isKeybind() && !setting.getName().startsWith("Quickplay Mode")) {
|
||||
setting.setKeybind(this.silentInputs.get(inputIndex).getKey() != 0 ? this.silentInputs.get(inputIndex).getKey() : setting.defaultkval);
|
||||
inputIndex++;
|
||||
}
|
||||
|
@ -0,0 +1,152 @@
|
||||
package net.silentclient.client.gui.quickplay;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.silentclient.client.Client;
|
||||
import net.silentclient.client.gui.SilentScreen;
|
||||
import net.silentclient.client.gui.animation.SimpleAnimation;
|
||||
import net.silentclient.client.gui.elements.IconButton;
|
||||
import net.silentclient.client.gui.font.SilentFontRenderer;
|
||||
import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils;
|
||||
import net.silentclient.client.gui.theme.Theme;
|
||||
import net.silentclient.client.gui.util.RenderUtil;
|
||||
import net.silentclient.client.mods.hypixel.QuickPlayMod;
|
||||
import net.silentclient.client.utils.MenuBlurUtils;
|
||||
import net.silentclient.client.utils.MouseCursorHandler;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class QuickplayGui extends SilentScreen {
|
||||
private SimpleAnimation scrollAnimation = new SimpleAnimation(0.0F);
|
||||
private float scrollY = 0;
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
MenuBlurUtils.loadBlur();
|
||||
defaultCursor = false;
|
||||
this.scrollY = 0;
|
||||
this.buttonList.clear();
|
||||
this.buttonList.add(new IconButton(0, this.width - 14 - 3, 3, 14, 14, 8, 8, new ResourceLocation("silentclient/icons/exit.png")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
MouseCursorHandler.CursorType cursorType = getCursor(silentInputs, buttonList);
|
||||
MenuBlurUtils.renderBackground(this);
|
||||
|
||||
Client.getInstance().getSilentFontRenderer().drawString("Quickplay",3, 3, 14, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||
|
||||
int modeBaseX = this.width / 2;
|
||||
|
||||
int column = 1;
|
||||
float modeY = 24 - scrollAnimation.getValue();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_SCISSOR_TEST);
|
||||
ScaledResolution r = new ScaledResolution(Minecraft.getMinecraft());
|
||||
int s = r.getScaleFactor();
|
||||
int listHeight = height - 24;
|
||||
int translatedY = r.getScaledHeight() - 24 - listHeight;
|
||||
GL11.glScissor(0 * s, translatedY * s, this.width * s, listHeight * s);
|
||||
|
||||
for(QuickPlayMod.QuickplayModeType quickplayMode : QuickPlayMod.hypixelQuickplayModes) {
|
||||
int modeX = column == 1 ? modeBaseX - 155 : modeBaseX + 5;
|
||||
boolean isHovered = MouseUtils.isInside(mouseX, mouseY, modeX, modeY, 150, 30);
|
||||
if(isHovered) {
|
||||
cursorType = MouseCursorHandler.CursorType.POINTER;
|
||||
RenderUtil.drawRoundedRect(modeX, modeY, 150, 30, 3, new Color(255, 255, 255, 30).getRGB());
|
||||
}
|
||||
RenderUtil.drawRoundedOutline(modeX, modeY, 150, 30, 3, 1, Theme.borderColor().getRGB());
|
||||
RenderUtil.drawImage(new ResourceLocation("silentclient/mods/quickplay/"+quickplayMode.icon+".png"), modeX + 2, modeY + 2, 26, 26);
|
||||
Client.getInstance().getSilentFontRenderer().drawString(quickplayMode.name, modeX + 32, modeY + 8, 14, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
if(column == 1) {
|
||||
column = 2;
|
||||
} else {
|
||||
column = 1;
|
||||
modeY += 40;
|
||||
}
|
||||
}
|
||||
|
||||
GL11.glDisable(GL11.GL_SCISSOR_TEST);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
Client.getInstance().getMouseCursorHandler().enableCursor(cursorType);
|
||||
|
||||
scrollAnimation.setAnimation(scrollY, 12);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMouseInput() throws IOException {
|
||||
super.handleMouseInput();
|
||||
int dw = Mouse.getEventDWheel();
|
||||
double newScrollY = this.scrollY;
|
||||
int height = this.height;
|
||||
if(dw != 0) {
|
||||
if (dw > 0) {
|
||||
dw = -1;
|
||||
} else {
|
||||
dw = 1;
|
||||
}
|
||||
float amountScrolled = (float) (dw * 10);
|
||||
if (newScrollY + amountScrolled > 0)
|
||||
newScrollY += amountScrolled;
|
||||
else
|
||||
newScrollY = 0;
|
||||
if((newScrollY < ((Math.ceil(QuickPlayMod.hypixelQuickplayModes.size() / 2) + 1) * 30) && (((Math.ceil(QuickPlayMod.hypixelQuickplayModes.size() / 2) + 1) * 30) + 24) > height) || amountScrolled < 0) {
|
||||
this.scrollY = (float) newScrollY;
|
||||
if(this.scrollY < 0) {
|
||||
this.scrollY = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
|
||||
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
int modeBaseX = this.width / 2;
|
||||
|
||||
int column = 1;
|
||||
float modeY = 24 - scrollAnimation.getValue();
|
||||
|
||||
for(QuickPlayMod.QuickplayModeType quickplayMode : QuickPlayMod.hypixelQuickplayModes) {
|
||||
int modeX = column == 1 ? modeBaseX - 155 : modeBaseX + 5;
|
||||
boolean isHovered = MouseUtils.isInside(mouseX, mouseY, modeX, modeY, 150, 30);
|
||||
if(isHovered) {
|
||||
mc.displayGuiScreen(new QuickplayModeGui(quickplayMode));
|
||||
break;
|
||||
}
|
||||
|
||||
if(column == 1) {
|
||||
column = 2;
|
||||
} else {
|
||||
column = 1;
|
||||
modeY += 40;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button) throws IOException {
|
||||
super.actionPerformed(button);
|
||||
switch (button.id) {
|
||||
case 0:
|
||||
mc.displayGuiScreen(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
MenuBlurUtils.unloadBlur();
|
||||
}
|
||||
}
|
@ -0,0 +1,200 @@
|
||||
package net.silentclient.client.gui.quickplay;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.silentclient.client.Client;
|
||||
import net.silentclient.client.gui.SilentScreen;
|
||||
import net.silentclient.client.gui.animation.SimpleAnimation;
|
||||
import net.silentclient.client.gui.elements.IconButton;
|
||||
import net.silentclient.client.gui.elements.Input;
|
||||
import net.silentclient.client.gui.font.SilentFontRenderer;
|
||||
import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils;
|
||||
import net.silentclient.client.gui.theme.Theme;
|
||||
import net.silentclient.client.gui.theme.input.DefaultInputTheme;
|
||||
import net.silentclient.client.gui.util.RenderUtil;
|
||||
import net.silentclient.client.mods.hypixel.QuickPlayMod;
|
||||
import net.silentclient.client.utils.MenuBlurUtils;
|
||||
import net.silentclient.client.utils.MouseCursorHandler;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class QuickplayModeGui extends SilentScreen {
|
||||
private final QuickPlayMod.QuickplayModeType quickplayMode;
|
||||
private SimpleAnimation scrollAnimation = new SimpleAnimation(0.0F);
|
||||
private float scrollY = 0;
|
||||
|
||||
public QuickplayModeGui(QuickPlayMod.QuickplayModeType quickplayMode) {
|
||||
this.quickplayMode = quickplayMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.scrollY = 0;
|
||||
MenuBlurUtils.loadBlur();
|
||||
defaultCursor = false;
|
||||
this.buttonList.clear();
|
||||
this.silentInputs.clear();
|
||||
this.buttonList.add(new IconButton(0, this.width - 14 - 3, 3, 14, 14, 8, 8, new ResourceLocation("silentclient/icons/exit.png")));
|
||||
for(QuickPlayMod.QuickplayCommandType quickplayMode : quickplayMode.modes) {
|
||||
this.silentInputs.add(new Input(quickplayMode.name, Client.getInstance().getSettingsManager().getSettingByClass(QuickPlayMod.class, "Quickplay Mode:Hypixel:"+quickplayMode.command).getKeybind()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
MouseCursorHandler.CursorType cursorType = getCursor(silentInputs, buttonList);
|
||||
MenuBlurUtils.renderBackground(this);
|
||||
|
||||
Client.getInstance().getSilentFontRenderer().drawString("Quickplay",3, 3, 14, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||
|
||||
int modeBaseX = this.width / 2;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_SCISSOR_TEST);
|
||||
ScaledResolution r = new ScaledResolution(Minecraft.getMinecraft());
|
||||
int s = r.getScaleFactor();
|
||||
int listHeight = height - 24;
|
||||
int translatedY = r.getScaledHeight() - 24 - listHeight;
|
||||
GL11.glScissor(0 * s, translatedY * s, this.width * s, listHeight * s);
|
||||
|
||||
RenderUtil.drawRoundedOutline(modeBaseX - 205, 24 - scrollAnimation.getValue(), 410, 30, 3, 1, Theme.borderColor().getRGB());
|
||||
RenderUtil.drawImage(new ResourceLocation("silentclient/mods/quickplay/"+quickplayMode.icon+".png"), modeBaseX - 205 + 2, 24 + 2 - scrollAnimation.getValue(), 26, 26);
|
||||
Client.getInstance().getSilentFontRenderer().drawString(quickplayMode.name, modeBaseX - 205 + 32, 24 + 8 - scrollAnimation.getValue(), 14, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
int column = 1;
|
||||
float modeY = 24 + 40 - scrollAnimation.getValue();
|
||||
int inputIndex = 0;
|
||||
|
||||
for(QuickPlayMod.QuickplayCommandType quickplayMode : quickplayMode.modes) {
|
||||
int modeX = column == 1 ? modeBaseX - 205 : modeBaseX + 5;
|
||||
boolean isCommandHovered = MouseUtils.isInside(mouseX, mouseY, modeX, modeY, 140, 20);
|
||||
if(isCommandHovered) {
|
||||
cursorType = MouseCursorHandler.CursorType.POINTER;
|
||||
RenderUtil.drawRoundedRect(modeX, modeY, 140, 20, 3, new Color(255, 255, 255, 30).getRGB());
|
||||
}
|
||||
RenderUtil.drawRoundedOutline(modeX, modeY, 140, 20, 3, 1, Theme.borderColor().getRGB());
|
||||
Client.getInstance().getSilentFontRenderer().drawString(quickplayMode.name, modeX + 3, modeY + 3, 14, SilentFontRenderer.FontType.TITLE, 140);
|
||||
|
||||
this.silentInputs.get(inputIndex).render(mouseX, mouseY, modeX + 145, modeY, 55, false, new DefaultInputTheme(), true);
|
||||
|
||||
if(column == 1) {
|
||||
column = 2;
|
||||
} else {
|
||||
column = 1;
|
||||
modeY += 30;
|
||||
}
|
||||
inputIndex++;
|
||||
}
|
||||
|
||||
GL11.glDisable(GL11.GL_SCISSOR_TEST);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
Client.getInstance().getMouseCursorHandler().enableCursor(cursorType);
|
||||
scrollAnimation.setAnimation(scrollY, 12);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMouseInput() throws IOException {
|
||||
super.handleMouseInput();
|
||||
int dw = Mouse.getEventDWheel();
|
||||
double newScrollY = this.scrollY;
|
||||
int height = this.height;
|
||||
if(dw != 0) {
|
||||
if (dw > 0) {
|
||||
dw = -1;
|
||||
} else {
|
||||
dw = 1;
|
||||
}
|
||||
float amountScrolled = (float) (dw * 10);
|
||||
if (newScrollY + amountScrolled > 0)
|
||||
newScrollY += amountScrolled;
|
||||
else
|
||||
newScrollY = 0;
|
||||
if((newScrollY < ((Math.ceil(quickplayMode.modes.size() / 2) + 1) * 20) && (((Math.ceil(quickplayMode.modes.size() / 2) + 1) * 20) + 24 + 40) > height) || amountScrolled < 0) {
|
||||
this.scrollY = (float) newScrollY;
|
||||
if(this.scrollY < 0) {
|
||||
this.scrollY = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
|
||||
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
int modeBaseX = this.width / 2;
|
||||
|
||||
RenderUtil.drawRoundedOutline(modeBaseX - 205, 24, 410, 30, 3, 1, Theme.borderColor().getRGB());
|
||||
RenderUtil.drawImage(new ResourceLocation("silentclient/mods/quickplay/"+quickplayMode.icon+".png"), modeBaseX - 205 + 2, 24 + 2, 26, 26);
|
||||
Client.getInstance().getSilentFontRenderer().drawString(quickplayMode.name, modeBaseX - 205 + 32, 24 + 8, 14, SilentFontRenderer.FontType.TITLE);
|
||||
|
||||
int column = 1;
|
||||
float modeY = 24 + 40 - scrollAnimation.getValue();
|
||||
int inputIndex = 0;
|
||||
|
||||
for(QuickPlayMod.QuickplayCommandType quickplayMode : quickplayMode.modes) {
|
||||
int modeX = column == 1 ? modeBaseX - 205 : modeBaseX + 5;
|
||||
boolean isCommandHovered = MouseUtils.isInside(mouseX, mouseY, modeX, modeY, 140, 20);
|
||||
if(isCommandHovered) {
|
||||
QuickPlayMod.runCommand(quickplayMode.command);
|
||||
mc.displayGuiScreen(null);
|
||||
}
|
||||
|
||||
this.silentInputs.get(inputIndex).onClick(mouseX, mouseY, modeX + 145, (int) modeY, 55, false);
|
||||
|
||||
if(column == 1) {
|
||||
column = 2;
|
||||
} else {
|
||||
column = 1;
|
||||
modeY += 30;
|
||||
}
|
||||
inputIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button) throws IOException {
|
||||
super.actionPerformed(button);
|
||||
switch (button.id) {
|
||||
case 0:
|
||||
mc.displayGuiScreen(new QuickplayGui());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char typedChar, int keyCode) throws IOException {
|
||||
int inputIndex = 0;
|
||||
boolean neededKeyCheck = true;
|
||||
|
||||
for(QuickPlayMod.QuickplayCommandType quickplayMode : quickplayMode.modes) {
|
||||
if(silentInputs.get(inputIndex).isFocused()) {
|
||||
this.silentInputs.get(inputIndex).onKeyTyped(typedChar, keyCode);
|
||||
Client.getInstance().getSettingsManager().getSettingByClass(QuickPlayMod.class, "Quickplay Mode:Hypixel:"+quickplayMode.command).setKeybind(this.silentInputs.get(inputIndex).getKey());
|
||||
if(keyCode == Keyboard.KEY_ESCAPE) {
|
||||
neededKeyCheck = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
inputIndex++;
|
||||
}
|
||||
|
||||
if (neededKeyCheck && keyCode == Keyboard.KEY_ESCAPE) {
|
||||
mc.displayGuiScreen(null);
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
MenuBlurUtils.unloadBlur();
|
||||
}
|
||||
}
|
@ -1,59 +1,14 @@
|
||||
package net.silentclient.client.mods;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import net.silentclient.client.Client;
|
||||
import net.silentclient.client.mods.hud.ArmorStatusMod;
|
||||
import net.silentclient.client.mods.hud.BlockInfoMod;
|
||||
import net.silentclient.client.mods.hud.BossBarMod;
|
||||
import net.silentclient.client.mods.hud.CPSMod;
|
||||
import net.silentclient.client.mods.hud.ClockMod;
|
||||
import net.silentclient.client.mods.hud.ComboCounterMod;
|
||||
import net.silentclient.client.mods.hud.CoordinatesMod;
|
||||
import net.silentclient.client.mods.hud.DayCounterMod;
|
||||
import net.silentclient.client.mods.hud.FPSMod;
|
||||
import net.silentclient.client.mods.hud.KeystrokesMod;
|
||||
import net.silentclient.client.mods.hud.MemoryMod;
|
||||
import net.silentclient.client.mods.hud.PackDisplayMod;
|
||||
import net.silentclient.client.mods.hud.PingMod;
|
||||
import net.silentclient.client.mods.hud.PotionHudMod;
|
||||
import net.silentclient.client.mods.hud.ReachDisplayMod;
|
||||
import net.silentclient.client.mods.hud.ScoreboardMod;
|
||||
import net.silentclient.client.mods.hud.ServerAddressMod;
|
||||
import net.silentclient.client.mods.hud.SpeedometerMod;
|
||||
import net.silentclient.client.mods.hud.*;
|
||||
import net.silentclient.client.mods.hypixel.AutoGGMod;
|
||||
import net.silentclient.client.mods.hypixel.AutoTipMod;
|
||||
import net.silentclient.client.mods.hypixel.LevelHeadMod;
|
||||
import net.silentclient.client.mods.hypixel.QuickPlayMod;
|
||||
import net.silentclient.client.mods.hypixel.togglechat.ToggleChatMod;
|
||||
import net.silentclient.client.mods.player.AutoSprintMod;
|
||||
import net.silentclient.client.mods.player.AutoTextMod;
|
||||
import net.silentclient.client.mods.player.DonationsAlertsMod;
|
||||
import net.silentclient.client.mods.player.NickHiderMod;
|
||||
import net.silentclient.client.mods.player.PerspectiveMod;
|
||||
import net.silentclient.client.mods.player.ZoomMod;
|
||||
import net.silentclient.client.mods.render.AnimationsMod;
|
||||
import net.silentclient.client.mods.render.BlockOverlayMod;
|
||||
import net.silentclient.client.mods.render.ChatMod;
|
||||
import net.silentclient.client.mods.render.ChunkBordersMod;
|
||||
import net.silentclient.client.mods.render.ClearGlassMod;
|
||||
import net.silentclient.client.mods.render.ColorSaturationMod;
|
||||
import net.silentclient.client.mods.render.CrosshairMod;
|
||||
import net.silentclient.client.mods.render.DamageTintMod;
|
||||
import net.silentclient.client.mods.render.HitColorMod;
|
||||
import net.silentclient.client.mods.render.HitboxesMod;
|
||||
import net.silentclient.client.mods.render.InventoryBlurMod;
|
||||
import net.silentclient.client.mods.render.ItemPhysicsMod;
|
||||
import net.silentclient.client.mods.render.NametagsMod;
|
||||
import net.silentclient.client.mods.render.NewMotionBlurMod;
|
||||
import net.silentclient.client.mods.render.PackTweaksMod;
|
||||
import net.silentclient.client.mods.render.ParticlesMod;
|
||||
import net.silentclient.client.mods.render.TNTTimerMod;
|
||||
import net.silentclient.client.mods.render.TabMod;
|
||||
import net.silentclient.client.mods.render.TitlesMod;
|
||||
import net.silentclient.client.mods.render.UhcOverlayMod;
|
||||
import net.silentclient.client.mods.player.*;
|
||||
import net.silentclient.client.mods.render.*;
|
||||
import net.silentclient.client.mods.settings.CosmeticsMod;
|
||||
import net.silentclient.client.mods.settings.FPSBoostMod;
|
||||
import net.silentclient.client.mods.settings.GeneralMod;
|
||||
@ -67,6 +22,11 @@ import net.silentclient.client.mods.world.PlayerCounterMod;
|
||||
import net.silentclient.client.mods.world.TimeChangerMod;
|
||||
import net.silentclient.client.mods.world.WeatherChangerMod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
public class ModInstances {
|
||||
private ArrayList<Mod> mods = new ArrayList<Mod>();
|
||||
|
||||
@ -227,6 +187,7 @@ public class ModInstances {
|
||||
if(Client.getInstance().getBuildData().getBranch().equals("fushka")) {
|
||||
mods.add(new DonationsAlertsMod());
|
||||
}
|
||||
mods.add(new QuickPlayMod());
|
||||
}
|
||||
|
||||
public void postInit() {
|
||||
|
@ -160,7 +160,7 @@ public class Setting implements Comparable<Setting> {
|
||||
}
|
||||
|
||||
public boolean isKeyDown() {
|
||||
if(!isKeybind()) {
|
||||
if(!isKeybind() || kval == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,111 @@
|
||||
package net.silentclient.client.mods.hypixel;
|
||||
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.silentclient.client.Client;
|
||||
import net.silentclient.client.event.EventTarget;
|
||||
import net.silentclient.client.event.impl.KeyEvent;
|
||||
import net.silentclient.client.gui.quickplay.QuickplayGui;
|
||||
import net.silentclient.client.mods.Mod;
|
||||
import net.silentclient.client.mods.ModCategory;
|
||||
import net.silentclient.client.mods.Setting;
|
||||
import net.silentclient.client.mods.util.Server;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class QuickPlayMod extends Mod {
|
||||
public static ArrayList<QuickplayModeType> hypixelQuickplayModes;
|
||||
public static boolean sending = false;
|
||||
|
||||
public QuickPlayMod() {
|
||||
super("Quickplay", ModCategory.MODS, "silentclient/icons/mods/quickplay.png");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
super.setup();
|
||||
setNewMod(true);
|
||||
this.addKeybindSetting("Open Menu", this, Keyboard.KEY_MINUS);
|
||||
try {
|
||||
Client.logger.info("Initialising Quickplay Modes");
|
||||
InputStream in = getClass().getResourceAsStream("/assets/minecraft/silentclient/mods/quickplay/modes_hypixel.json");
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
StringBuffer content = new StringBuffer();
|
||||
String inputLine;
|
||||
while ((inputLine = reader.readLine()) != null) {
|
||||
content.append(inputLine);
|
||||
}
|
||||
|
||||
Type listType = new TypeToken<ArrayList<QuickplayModeType>>(){}.getType();
|
||||
hypixelQuickplayModes = Client.getInstance().getGson().fromJson(content.toString(), listType);
|
||||
|
||||
for(QuickplayModeType mode : hypixelQuickplayModes) {
|
||||
Client.logger.info(String.format("Initialising Quickplay Mode (%s)", mode.name));
|
||||
mode.modes.forEach((command) -> {
|
||||
Client.logger.info(String.format("Initialising Quickplay Mode (%s) Command (%s)", mode.name, command.name));
|
||||
this.addKeybindSetting("Quickplay Mode:Hypixel:"+command.command, this, -1);
|
||||
});
|
||||
}
|
||||
} catch (Exception err) {
|
||||
Client.logger.catching(err);
|
||||
}
|
||||
}
|
||||
|
||||
public static void runCommand(String command) {
|
||||
if(sending) {
|
||||
return;
|
||||
}
|
||||
sending = true;
|
||||
(new Thread("QPM: " + command) {
|
||||
public void run() {
|
||||
Minecraft.getMinecraft().thePlayer.sendChatMessage(command);
|
||||
try {
|
||||
Thread.sleep(2000L);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
sending = false;
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
@EventTarget
|
||||
public void onClick(KeyEvent event) {
|
||||
if(mc.thePlayer != null && mc.theWorld != null && mc.currentScreen == null) {
|
||||
for(Setting setting : Client.getInstance().getSettingsManager().getSettingByMod(this)) {
|
||||
if(setting.isKeybind()) {
|
||||
if(setting.getName().equals("Open Menu")) {
|
||||
// Open Menu
|
||||
if(setting.isKeyDown() && (Server.isHypixel() || Server.isRuHypixel())) {
|
||||
mc.displayGuiScreen(new QuickplayGui());
|
||||
}
|
||||
} else {
|
||||
if(sending) {
|
||||
return;
|
||||
}
|
||||
String[] args = setting.getName().split(":");
|
||||
if(((args[1].equals("Hypixel") && Server.isHypixel()) || (args[1].equals("RuHypixel") && Server.isRuHypixel())) && setting.isKeyDown()) {
|
||||
runCommand(args[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class QuickplayModeType {
|
||||
public String name;
|
||||
public String icon;
|
||||
public ArrayList<QuickplayCommandType> modes;
|
||||
}
|
||||
|
||||
public class QuickplayCommandType {
|
||||
public String name;
|
||||
public String command;
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package net.silentclient.client.mods.hypixel.bedwarsbeds;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.lwjgl.opengl.GLContext;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ChunkRenderContainer;
|
||||
import net.minecraft.client.renderer.RenderList;
|
||||
import net.minecraft.client.renderer.VboRenderList;
|
||||
import net.silentclient.client.event.EventTarget;
|
||||
import net.silentclient.client.event.impl.RenderTickEvent;
|
||||
import net.silentclient.client.mods.Mod;
|
||||
import net.silentclient.client.mods.ModCategory;
|
||||
|
||||
public class BedwarsBedsMod extends Mod {
|
||||
public BedwarsBedsMod() {
|
||||
super("Bedwars Beds", ModCategory.MODS, "silentclient/icons/mods/bedwarsbeds.png");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isForceDisabled() {
|
||||
return !GLContext.getCapabilities().OpenGL32;
|
||||
}
|
||||
|
||||
@EventTarget
|
||||
public void onTick(RenderTickEvent event) {
|
||||
if(isForceDisabled()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
Field e = Minecraft.getMinecraft().renderGlobal.getClass().getDeclaredField("renderContainer");
|
||||
|
||||
e.setAccessible(true);
|
||||
ChunkRenderContainer renderContainer = (ChunkRenderContainer) e.get(Minecraft.getMinecraft().renderGlobal);
|
||||
|
||||
if (renderContainer instanceof VboRenderList) {
|
||||
e.set(Minecraft.getMinecraft().renderGlobal, new HookedVboRenderList());
|
||||
} else if (renderContainer instanceof RenderList) {
|
||||
e.set(Minecraft.getMinecraft().renderGlobal, new HookedRenderList());
|
||||
}
|
||||
} catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException nosuchfieldexception) {
|
||||
nosuchfieldexception.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,365 +0,0 @@
|
||||
package net.silentclient.client.mods.hypixel.bedwarsbeds;
|
||||
|
||||
import java.util.HashMap;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import org.lwjgl.util.vector.Vector3f;
|
||||
|
||||
public class BedwarsData {
|
||||
private static HashMap<String, String> heightsMap = new HashMap<String, String>();
|
||||
private static int[] cachedBedColourSegments = null;
|
||||
private static long timeOfLastCache;
|
||||
|
||||
public static int getLowestBlock(int x, int z) {
|
||||
for (int i = 0; i < 100; ++i) {
|
||||
if (!Minecraft.getMinecraft().theWorld.getBlockState(new BlockPos(x, i, z)).getBlock().getDefaultState().equals(Blocks.air.getDefaultState())) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static String getHeightsString() {
|
||||
StringBuilder b = new StringBuilder();
|
||||
|
||||
for (int i = -2; i <= 2; ++i) {
|
||||
for (int j = -2; j <= 2; ++j) {
|
||||
b.append(getLowestBlock(i * 5, j * 5)).append(",");
|
||||
}
|
||||
}
|
||||
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
public static String getCurrentMapName() {
|
||||
String heights = getHeightsString();
|
||||
String mapName = (String) BedwarsData.heightsMap.get(heights);
|
||||
|
||||
return mapName == null ? "UNKNOWN" : mapName;
|
||||
}
|
||||
|
||||
public static int getColourIdForPos(BlockPos pos) {
|
||||
return getBedColourSegments()[getSegmentNumForPos(pos)];
|
||||
}
|
||||
|
||||
public static Vector3f getColourForPos(BlockPos pos) {
|
||||
int id = getColourIdForPos(pos);
|
||||
|
||||
switch (id) {
|
||||
case 0:
|
||||
return new Vector3f(43.0F, 0.0F, 45.0F);
|
||||
|
||||
case 1:
|
||||
return new Vector3f(189.0F, -6.0F, 0.0F);
|
||||
|
||||
case 2:
|
||||
return new Vector3f(190.0F, -87.0F, 33.0F);
|
||||
|
||||
case 3:
|
||||
return new Vector3f(338.0F, -40.0F, 36.0F);
|
||||
|
||||
case 4:
|
||||
return new Vector3f(214.0F, -78.0F, -29.0F);
|
||||
|
||||
case 5:
|
||||
return new Vector3f(0.0F, 0.0F, 0.0F);
|
||||
|
||||
case 6:
|
||||
return new Vector3f(238.0F, -20.0F, 1.0F);
|
||||
|
||||
case 7:
|
||||
return new Vector3f(91.0F, -5.0F, 15.0F);
|
||||
|
||||
default:
|
||||
return new Vector3f(0.0F, 0.0F, 0.0F);
|
||||
}
|
||||
}
|
||||
|
||||
public static int[] getBedColourSegments() {
|
||||
if (System.currentTimeMillis() - BedwarsData.timeOfLastCache < 3000L && BedwarsData.cachedBedColourSegments != null) {
|
||||
return BedwarsData.cachedBedColourSegments;
|
||||
} else {
|
||||
BedwarsData.timeOfLastCache = System.currentTimeMillis();
|
||||
String s = getCurrentMapName();
|
||||
byte b0 = -1;
|
||||
|
||||
switch (s.hashCode()) {
|
||||
case -2127832817:
|
||||
if (s.equals("Hollow")) {
|
||||
b0 = 12;
|
||||
}
|
||||
break;
|
||||
|
||||
case -2066516632:
|
||||
if (s.equals("Speedway")) {
|
||||
b0 = 11;
|
||||
}
|
||||
break;
|
||||
|
||||
case -2030051349:
|
||||
if (s.equals("Aquarium")) {
|
||||
b0 = 18;
|
||||
}
|
||||
break;
|
||||
|
||||
case -2022811672:
|
||||
if (s.equals("Lectus")) {
|
||||
b0 = 28;
|
||||
}
|
||||
break;
|
||||
|
||||
case -1946685265:
|
||||
if (s.equals("Pernicious")) {
|
||||
b0 = 14;
|
||||
}
|
||||
break;
|
||||
|
||||
case -1891512576:
|
||||
if (s.equals("Chained")) {
|
||||
b0 = 25;
|
||||
}
|
||||
break;
|
||||
|
||||
case -1793484691:
|
||||
if (s.equals("Temple")) {
|
||||
b0 = 15;
|
||||
}
|
||||
break;
|
||||
|
||||
case -1362593870:
|
||||
if (s.equals("Steampunk")) {
|
||||
b0 = 13;
|
||||
}
|
||||
break;
|
||||
|
||||
case -1250609183:
|
||||
if (s.equals("Rooftop")) {
|
||||
b0 = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case -712865462:
|
||||
if (s.equals("Stonekeep")) {
|
||||
b0 = 22;
|
||||
}
|
||||
break;
|
||||
|
||||
case -708491190:
|
||||
if (s.equals("Eastwood")) {
|
||||
b0 = 21;
|
||||
}
|
||||
break;
|
||||
|
||||
case -675209562:
|
||||
if (s.equals("Swashbuckle")) {
|
||||
b0 = 23;
|
||||
}
|
||||
break;
|
||||
|
||||
case -147584549:
|
||||
if (s.equals("Playground")) {
|
||||
b0 = 6;
|
||||
}
|
||||
break;
|
||||
|
||||
case -60461228:
|
||||
if (s.equals("Jurassic")) {
|
||||
b0 = 27;
|
||||
}
|
||||
break;
|
||||
|
||||
case 65391950:
|
||||
if (s.equals("Crypt")) {
|
||||
b0 = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 73609615:
|
||||
if (s.equals("Lotus")) {
|
||||
b0 = 8;
|
||||
}
|
||||
break;
|
||||
|
||||
case 601014429:
|
||||
if (s.equals("Treenan")) {
|
||||
b0 = 20;
|
||||
}
|
||||
break;
|
||||
|
||||
case 673068839:
|
||||
if (s.equals("Airshow")) {
|
||||
b0 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 688644453:
|
||||
if (s.equals("Invasion")) {
|
||||
b0 = 16;
|
||||
}
|
||||
break;
|
||||
|
||||
case 799700365:
|
||||
if (s.equals("Orchestra")) {
|
||||
b0 = 9;
|
||||
}
|
||||
break;
|
||||
|
||||
case 916564665:
|
||||
if (s.equals("Archway")) {
|
||||
b0 = 24;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1386045189:
|
||||
if (s.equals("Dragonstar")) {
|
||||
b0 = 7;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1558896284:
|
||||
if (s.equals("Sandcastle")) {
|
||||
b0 = 26;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1726400934:
|
||||
if (s.equals("Boletum")) {
|
||||
b0 = 19;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1772835215:
|
||||
if (s.equals("Glacier")) {
|
||||
b0 = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1790335218:
|
||||
if (s.equals("Waterfall")) {
|
||||
b0 = 10;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1793076202:
|
||||
if (s.equals("Lighthouse")) {
|
||||
b0 = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1964569124:
|
||||
if (s.equals("Amazon")) {
|
||||
b0 = 5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1970308300:
|
||||
if (s.equals("Ashore")) {
|
||||
b0 = 17;
|
||||
}
|
||||
}
|
||||
|
||||
switch (b0) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 0, 1, 2, 3, 4, 5, 6, 7};
|
||||
break;
|
||||
|
||||
case 13:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 2, 1, 0, 7, 6, 5, 4, 3};
|
||||
break;
|
||||
|
||||
case 14:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 4, 5, 6, 7, 0, 1, 2, 3};
|
||||
break;
|
||||
|
||||
case 15:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 0, 6, 6, 7, 7, 5, 5, 0};
|
||||
break;
|
||||
|
||||
case 16:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 7, 7, 0, 0, 5, 5, 6, 6};
|
||||
break;
|
||||
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
case 20:
|
||||
case 21:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 5, 6, 6, 7, 7, 0, 0, 5};
|
||||
break;
|
||||
|
||||
case 22:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 7, 0, 0, 5, 5, 6, 6, 7};
|
||||
break;
|
||||
|
||||
case 23:
|
||||
case 24:
|
||||
case 25:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 6, 7, 7, 0, 0, 5, 5, 6};
|
||||
break;
|
||||
|
||||
case 26:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 7, 6, 6, 0, 0, 5, 5, 7};
|
||||
break;
|
||||
|
||||
case 27:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 0, 7, 7, 6, 6, 5, 5, 0};
|
||||
break;
|
||||
|
||||
case 28:
|
||||
BedwarsData.cachedBedColourSegments = new int[] { 0, 0, 7, 7, 5, 5, 6, 6};
|
||||
}
|
||||
|
||||
return BedwarsData.cachedBedColourSegments == null ? new int[] { 5, 5, 5, 5, 5, 5, 5, 5} : BedwarsData.cachedBedColourSegments;
|
||||
}
|
||||
}
|
||||
|
||||
public static int getSegmentNumForPos(BlockPos pos) {
|
||||
return pos.getX() > 0 ? (pos.getZ() > 0 ? (Math.abs(pos.getX()) > Math.abs(pos.getZ()) ? 0 : 1) : (Math.abs(pos.getX()) > Math.abs(pos.getZ()) ? 7 : 6)) : (pos.getZ() > 0 ? (Math.abs(pos.getX()) > Math.abs(pos.getZ()) ? 3 : 2) : (Math.abs(pos.getX()) > Math.abs(pos.getZ()) ? 4 : 5));
|
||||
}
|
||||
|
||||
static {
|
||||
BedwarsData.heightsMap.put("60,60,-1,64,64,60,61,-1,65,64,-1,-1,-1,-1,-1,64,65,-1,61,60,64,64,-1,60,60,", "Airshow");
|
||||
BedwarsData.heightsMap.put("62,61,62,61,61,61,62,62,62,62,62,62,-1,63,62,62,62,62,62,-1,62,61,62,62,61,", "Crypt");
|
||||
BedwarsData.heightsMap.put("56,56,-1,56,56,56,-1,-1,-1,56,-1,-1,-1,-1,-1,56,-1,-1,-1,56,56,56,-1,56,56,", "Glacier");
|
||||
BedwarsData.heightsMap.put("55,55,58,56,55,50,51,53,52,53,53,51,51,51,55,54,51,50,51,53,54,52,51,51,55,", "Lighthouse");
|
||||
BedwarsData.heightsMap.put("20,20,-1,-1,20,20,20,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,20,20,20,-1,-1,20,20,", "Rooftop");
|
||||
BedwarsData.heightsMap.put("60,60,60,60,60,60,60,63,60,60,60,60,-1,60,60,60,60,63,60,60,60,60,60,60,60,", "Amazon");
|
||||
BedwarsData.heightsMap.put("65,65,65,65,65,65,65,65,65,65,65,65,107,65,65,65,65,65,65,65,65,65,65,65,65,", "Playground");
|
||||
BedwarsData.heightsMap.put("63,63,56,63,63,63,56,56,56,63,56,56,48,56,56,63,56,56,56,63,63,63,56,63,63,", "Steampunk");
|
||||
BedwarsData.heightsMap.put("65,68,65,67,65,67,65,65,65,68,65,65,65,65,65,68,65,65,65,67,65,67,65,68,65,", "Dragonstar");
|
||||
BedwarsData.heightsMap.put("57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,", "Lotus");
|
||||
BedwarsData.heightsMap.put("-1,66,63,66,-1,66,49,50,49,66,63,50,50,50,63,66,49,50,49,66,-1,66,63,66,-1,", "Orchestra");
|
||||
BedwarsData.heightsMap.put("58,59,59,58,58,58,-1,-1,-1,59,59,-1,-1,-1,59,59,-1,-1,-1,58,58,58,59,59,58,", "Waterfall");
|
||||
BedwarsData.heightsMap.put("-1,61,57,56,64,56,76,57,54,54,54,54,64,54,54,54,54,57,76,56,64,56,57,61,-1,", "Speedway");
|
||||
BedwarsData.heightsMap.put("57,55,55,56,57,56,57,-1,58,55,55,-1,-1,-1,55,55,56,-1,56,56,55,56,55,55,55,", "Hollow");
|
||||
BedwarsData.heightsMap.put("-1,68,60,65,-1,65,-1,66,-1,68,60,66,-1,66,63,68,-1,66,-1,65,-1,65,60,68,-1,", "Pernicious");
|
||||
BedwarsData.heightsMap.put("48,49,54,52,49,51,49,49,49,50,52,49,48,49,52,52,49,49,49,51,54,51,52,51,48,", "Ashore");
|
||||
BedwarsData.heightsMap.put("62,59,57,59,-1,58,62,60,-1,59,57,59,-1,59,57,59,-1,60,62,58,-1,59,57,59,62,", "Swashbuckle");
|
||||
BedwarsData.heightsMap.put("76,76,88,-1,-1,77,87,-1,-1,-1,87,-1,-1,-1,84,88,-1,-1,85,76,-1,87,87,76,76,", "Boletum");
|
||||
BedwarsData.heightsMap.put("52,50,50,51,51,51,55,-1,63,-1,55,-1,79,-1,55,-1,63,-1,55,51,51,51,50,50,52,", "Chained");
|
||||
BedwarsData.heightsMap.put("71,81,81,81,81,80,77,83,70,81,71,71,-1,-1,71,81,75,81,77,74,81,69,81,81,77,", "Aquarium");
|
||||
BedwarsData.heightsMap.put("58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,", "Archway");
|
||||
BedwarsData.heightsMap.put("36,35,35,35,36,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,35,35,35,36,", "Stonekeep");
|
||||
BedwarsData.heightsMap.put("-1,-1,84,-1,-1,-1,84,80,83,88,84,81,79,82,79,84,86,80,82,-1,77,77,98,-1,-1,", "Invasion");
|
||||
BedwarsData.heightsMap.put("55,54,53,53,54,53,52,52,52,54,53,51,51,52,54,53,53,52,53,54,55,53,53,53,55,", "Treenan");
|
||||
BedwarsData.heightsMap.put("53,53,53,53,53,53,55,77,55,53,53,77,59,77,53,53,55,77,55,53,53,53,53,53,53,", "Eastwood");
|
||||
BedwarsData.heightsMap.put("55,51,52,52,53,52,50,51,52,54,52,51,50,49,51,51,52,51,52,52,53,52,53,52,52,", "Lectus");
|
||||
BedwarsData.heightsMap.put("58,56,56,56,58,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,56,56,58,", "Jurassic");
|
||||
BedwarsData.heightsMap.put("52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,", "Temple");
|
||||
BedwarsData.heightsMap.put("57,60,59,59,59,59,58,58,58,59,59,58,58,58,59,59,58,58,58,59,59,59,59,59,59,", "Sandcastle");
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
package net.silentclient.client.mods.hypixel.bedwarsbeds;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ChunkRenderContainer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.chunk.ListedRenderChunk;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.util.EnumWorldBlockLayer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.util.vector.Vector3f;
|
||||
import org.lwjgl.util.vector.Vector4f;
|
||||
|
||||
public class HookedRenderList extends ChunkRenderContainer {
|
||||
public void renderChunkLayer(EnumWorldBlockLayer layer) {
|
||||
if (this.initialized) {
|
||||
Iterator<RenderChunk> iterator = this.renderChunks.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
RenderChunk renderchunk = (RenderChunk) iterator.next();
|
||||
ListedRenderChunk listedrenderchunk = (ListedRenderChunk) renderchunk;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
this.preRenderChunk(renderchunk);
|
||||
HashMap<String, Serializable> data = new HashMap<String, Serializable>();
|
||||
|
||||
data.put("bed_colour_enabled", Integer.valueOf(1));
|
||||
Vector3f colour = BedwarsData.getColourForPos(renderchunk.getPosition().add(8, 0, 8));
|
||||
|
||||
data.put("bed_colour", Integer.valueOf((int) colour.x));
|
||||
data.put("bed_colour_s", Integer.valueOf((int) colour.y));
|
||||
data.put("bed_colour_v", Integer.valueOf((int) colour.z));
|
||||
String[] sprites = new String[] { "bed_feet_end", "bed_feet_side", "bed_feet_top", "bed_head_end", "bed_head_side", "bed_head_top"};
|
||||
String[] astring = sprites;
|
||||
int i = sprites.length;
|
||||
|
||||
for (int j = 0; j < i; ++j) {
|
||||
String s = astring[j];
|
||||
TextureAtlasSprite sprite = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("minecraft:blocks/" + s);
|
||||
|
||||
data.put(s, new Vector4f(sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()));
|
||||
ShaderManager.getShaderManager().putShaderData(ShaderManager.Shader.WORLD, data);
|
||||
}
|
||||
|
||||
ShaderManager.getShaderManager().enableShader(ShaderManager.Shader.WORLD);
|
||||
GL11.glCallList(listedrenderchunk.getDisplayList(layer, listedrenderchunk.getCompiledChunk()));
|
||||
ShaderManager.getShaderManager().disableShader();
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
GlStateManager.resetColor();
|
||||
this.renderChunks.clear();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
package net.silentclient.client.mods.hypixel.bedwarsbeds;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ChunkRenderContainer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.vertex.VertexBuffer;
|
||||
import net.minecraft.util.EnumWorldBlockLayer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.util.vector.Vector3f;
|
||||
import org.lwjgl.util.vector.Vector4f;
|
||||
|
||||
public class HookedVboRenderList extends ChunkRenderContainer {
|
||||
|
||||
public void renderChunkLayer(EnumWorldBlockLayer layer) {
|
||||
if (this.initialized) {
|
||||
Iterator<?> iterator = this.renderChunks.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
RenderChunk renderchunk = (RenderChunk) iterator.next();
|
||||
VertexBuffer vertexbuffer = renderchunk.getVertexBufferByLayer(layer.ordinal());
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
this.preRenderChunk(renderchunk);
|
||||
renderchunk.multModelviewMatrix();
|
||||
vertexbuffer.bindBuffer();
|
||||
this.setupArrayPointers();
|
||||
HashMap<String, Serializable> data = new HashMap<String, Serializable>();
|
||||
|
||||
data.put("bed_colour_enabled", Integer.valueOf(1));
|
||||
Vector3f colour = BedwarsData.getColourForPos(renderchunk.getPosition().add(8, 0, 8));
|
||||
|
||||
data.put("bed_colour", Integer.valueOf((int) colour.x));
|
||||
data.put("bed_colour_s", Integer.valueOf((int) colour.y));
|
||||
data.put("bed_colour_v", Integer.valueOf((int) colour.z));
|
||||
String[] sprites = new String[] { "bed_feet_end", "bed_feet_side", "bed_feet_top", "bed_head_end", "bed_head_side", "bed_head_top"};
|
||||
String[] astring = sprites;
|
||||
int i = sprites.length;
|
||||
|
||||
for (int j = 0; j < i; ++j) {
|
||||
String s = astring[j];
|
||||
TextureAtlasSprite sprite = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("minecraft:blocks/" + s);
|
||||
|
||||
data.put(s, new Vector4f(sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()));
|
||||
ShaderManager.getShaderManager().putShaderData(ShaderManager.Shader.WORLD, data);
|
||||
}
|
||||
|
||||
ShaderManager.getShaderManager().enableShader(ShaderManager.Shader.WORLD);
|
||||
vertexbuffer.drawArrays(7);
|
||||
ShaderManager.getShaderManager().disableShader();
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
OpenGlHelper.glBindBuffer(OpenGlHelper.GL_ARRAY_BUFFER, 0);
|
||||
GlStateManager.resetColor();
|
||||
this.renderChunks.clear();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setupArrayPointers() {
|
||||
GL11.glVertexPointer(3, 5126, 28, 0L);
|
||||
GL11.glColorPointer(4, 5121, 28, 12L);
|
||||
GL11.glTexCoordPointer(2, 5126, 28, 16L);
|
||||
OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
|
||||
GL11.glTexCoordPointer(2, 5122, 28, 24L);
|
||||
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
|
||||
}
|
||||
}
|
@ -1,169 +0,0 @@
|
||||
package net.silentclient.client.mods.hypixel.bedwarsbeds;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.lwjgl.opengl.GL20;
|
||||
import org.lwjgl.util.vector.Vector3f;
|
||||
import org.lwjgl.util.vector.Vector4f;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class ShaderManager {
|
||||
|
||||
private static ShaderManager INSTANCE = new ShaderManager();
|
||||
private HashMap<Shader, int[]> shaderMap = new HashMap<Shader, int[]>();
|
||||
private HashMap<Shader, HashMap<?, ?>> shaderData = new HashMap<Shader, HashMap<?, ?>>();
|
||||
|
||||
public static ShaderManager getShaderManager() {
|
||||
return ShaderManager.INSTANCE;
|
||||
}
|
||||
|
||||
public void putShaderData(ShaderManager.Shader type, HashMap<?, ?> data) {
|
||||
this.shaderData.put(type, data);
|
||||
}
|
||||
|
||||
public void disableShader() {
|
||||
GL20.glUseProgram(0);
|
||||
}
|
||||
|
||||
public void enableShader(ShaderManager.Shader type) {
|
||||
if (!this.shaderMap.containsKey(type)) {
|
||||
this.loadProgram(type);
|
||||
}
|
||||
|
||||
GL20.glUseProgram(((int[]) this.shaderMap.get(type))[2]);
|
||||
this.loadData(type);
|
||||
}
|
||||
|
||||
private void loadData(ShaderManager.Shader type) {
|
||||
HashMap<?, ?> map = (HashMap<?, ?>) this.shaderData.get(type);
|
||||
|
||||
if (map != null) {
|
||||
Iterator<?> iterator = map.keySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
String key = (String) iterator.next();
|
||||
int location = GL20.glGetUniformLocation(((int[]) this.shaderMap.get(type))[2], key);
|
||||
Object data = map.get(key);
|
||||
|
||||
if (data instanceof Integer) {
|
||||
GL20.glUniform1i(location, ((Integer) data).intValue());
|
||||
} else if (data instanceof Float) {
|
||||
GL20.glUniform1f(location, ((Float) data).floatValue());
|
||||
} else if (data instanceof Vector3f) {
|
||||
Vector3f vec = (Vector3f) data;
|
||||
|
||||
GL20.glUniform3f(location, vec.x, vec.y, vec.z);
|
||||
} else {
|
||||
if (!(data instanceof Vector4f)) {
|
||||
throw new UnsupportedOperationException("Failed to load data into shader: Unsupported data type.");
|
||||
}
|
||||
|
||||
Vector4f vec1 = (Vector4f) data;
|
||||
|
||||
GL20.glUniform4f(location, vec1.x, vec1.y, vec1.z, vec1.w);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void loadProgram(ShaderManager.Shader type) {
|
||||
int vertShader = this.createShader('謱', this.getShaderSource('謱', type));
|
||||
|
||||
if (vertShader != -1) {
|
||||
int fragShader = this.createShader('謰', this.getShaderSource('謰', type));
|
||||
|
||||
if (fragShader != -1) {
|
||||
int program = GL20.glCreateProgram();
|
||||
|
||||
GL20.glAttachShader(program, vertShader);
|
||||
GL20.glAttachShader(program, fragShader);
|
||||
GL20.glLinkProgram(program);
|
||||
if (GL20.glGetProgrami(program, '讂') == 0) {
|
||||
System.err.println(GL20.glGetProgramInfoLog(program, 100));
|
||||
} else {
|
||||
GL20.glValidateProgram(program);
|
||||
if (GL20.glGetProgrami(program, '讃') == 0) {
|
||||
System.err.println(GL20.glGetProgramInfoLog(program, 100));
|
||||
} else {
|
||||
this.shaderMap.put(type, new int[] { vertShader, fragShader, program});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getShaderSource(int shaderType, ShaderManager.Shader shaderName) {
|
||||
ResourceLocation loc = new ResourceLocation("silentclient/shaders/" + shaderName.toString().toLowerCase() + ".shd");
|
||||
InputStream is = null;
|
||||
|
||||
try {
|
||||
is = Minecraft.getMinecraft().getResourceManager().getResource(loc).getInputStream();
|
||||
} catch (IOException ioexception) {
|
||||
ioexception.printStackTrace();
|
||||
}
|
||||
|
||||
try {
|
||||
BufferedReader e = new BufferedReader(new InputStreamReader(is));
|
||||
Throwable throwable = null;
|
||||
|
||||
try {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
String line;
|
||||
|
||||
while ((line = e.readLine()) != null) {
|
||||
builder.append(line).append("\n");
|
||||
}
|
||||
|
||||
String source = builder.toString();
|
||||
|
||||
return shaderType == '謱' ? source.split("###FRAGMENT SHADER")[0].split("###VERTEX SHADER")[1].trim() : (shaderType == '謰' ? source.split("###FRAGMENT SHADER")[1].trim() : null);
|
||||
} catch (Throwable throwable1) {
|
||||
throwable = throwable1;
|
||||
throw throwable1;
|
||||
} finally {
|
||||
if (e != null) {
|
||||
if (throwable != null) {
|
||||
try {
|
||||
e.close();
|
||||
} catch (Throwable throwable2) {
|
||||
throwable.addSuppressed(throwable2);
|
||||
}
|
||||
} else {
|
||||
e.close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} catch (IOException ioexception1) {
|
||||
ioexception1.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private int createShader(int programType, String source) {
|
||||
int shader = GL20.glCreateShader(programType);
|
||||
|
||||
GL20.glShaderSource(shader, source);
|
||||
GL20.glCompileShader(shader);
|
||||
if (GL20.glGetShaderi(shader, '讁') == 0) {
|
||||
System.err.println(GL20.glGetShaderInfoLog(shader, 100));
|
||||
return -1;
|
||||
} else {
|
||||
return shader;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum Shader {
|
||||
|
||||
WORLD, HUD;
|
||||
}
|
||||
}
|
BIN
src/main/resources/assets/minecraft/silentclient/icons/mods/quickplay.png
Executable file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/arcade.png
Executable file
After Width: | Height: | Size: 5.9 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/bedwars.png
Executable file
After Width: | Height: | Size: 9.1 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/blitz.png
Executable file
After Width: | Height: | Size: 6.6 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/build_battle.png
Executable file
After Width: | Height: | Size: 12 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/classic.png
Executable file
After Width: | Height: | Size: 9.2 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/cvc.png
Executable file
After Width: | Height: | Size: 6.6 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/duels.png
Executable file
After Width: | Height: | Size: 9.9 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/housing.png
Executable file
After Width: | Height: | Size: 7.4 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/main_lobby.png
Executable file
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,609 @@
|
||||
[
|
||||
{
|
||||
"name": "Main Lobby",
|
||||
"icon": "main_lobby",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby main"
|
||||
},
|
||||
{
|
||||
"name": "Run Lobby Command",
|
||||
"command": "/lobby"
|
||||
},
|
||||
{
|
||||
"name": "Run /stuck",
|
||||
"command": "/stuck"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Arcade",
|
||||
"icon": "arcade",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby arcade"
|
||||
},
|
||||
{
|
||||
"name": "Blocking Dead",
|
||||
"command": "/play arcade_day_one"
|
||||
},
|
||||
{
|
||||
"name": "Bounty Hunters",
|
||||
"command": "/play arcade_bounty_hunters"
|
||||
},
|
||||
{
|
||||
"name": "Capture The Wool",
|
||||
"command": "/play arcade_pvp_ctw"
|
||||
},
|
||||
{
|
||||
"name": "Creeper Attack",
|
||||
"command": "/play arcade_creeper_attack"
|
||||
},
|
||||
{
|
||||
"name": "Dragon Wars",
|
||||
"command": "/play arcade_dragon_wars"
|
||||
},
|
||||
{
|
||||
"name": "Ender Spleef",
|
||||
"command": "/play arcade_ender_spleef"
|
||||
},
|
||||
{
|
||||
"name": "Farm Hunt",
|
||||
"command": "/play arcade_farm_hunt"
|
||||
},
|
||||
{
|
||||
"name": "Football",
|
||||
"command": "/play arcade_soccer"
|
||||
},
|
||||
{
|
||||
"name": "Galaxy Wars",
|
||||
"command": "/play arcade_starwars"
|
||||
},
|
||||
{
|
||||
"name": "Hide and Seek - Party Pooper",
|
||||
"command": "/play arcade_hide_and_seek_party_pooper"
|
||||
},
|
||||
{
|
||||
"name": "Hide and Seek - Prop Hunt",
|
||||
"command": "/play arcade_hide_and_seek_prop_hunt"
|
||||
},
|
||||
{
|
||||
"name": "Hole in the Wall",
|
||||
"command": "/play arcade_hole_in_the_wall"
|
||||
},
|
||||
{
|
||||
"name": "Hypixel Says",
|
||||
"command": "/play arcade_simon_says"
|
||||
},
|
||||
{
|
||||
"name": "Santa Says",
|
||||
"command": "/play arcade_santa_says"
|
||||
},
|
||||
{
|
||||
"name": "Mini Walls",
|
||||
"command": "/play arcade_mini_walls"
|
||||
},
|
||||
{
|
||||
"name": "Party Games",
|
||||
"command": "/play arcade_party_games_1"
|
||||
},
|
||||
{
|
||||
"name": "Pixel Painters",
|
||||
"command": "/play arcade_pixel_painters"
|
||||
},
|
||||
{
|
||||
"name": "Throw Out",
|
||||
"command": "/play arcade_throw_out"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Dead End",
|
||||
"command": "/play arcade_zombies_dead_end"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Bad Blood",
|
||||
"command": "/play arcade_zombies_bad_blood"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Alien Arcadium",
|
||||
"command": "/play arcade_zombies_alien_arcadium"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bed Wars",
|
||||
"icon": "bedwars",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby bedwars"
|
||||
},
|
||||
{
|
||||
"name": "Solo",
|
||||
"command": "/play bedwars_eight_one"
|
||||
},
|
||||
{
|
||||
"name": "Doubles",
|
||||
"command": "/play bedwars_eight_two"
|
||||
},
|
||||
{
|
||||
"name": "3v3v3v3",
|
||||
"command": "/play bedwars_four_three"
|
||||
},
|
||||
{
|
||||
"name": "4v4v4v4",
|
||||
"command": "/play bedwars_four_four"
|
||||
},
|
||||
{
|
||||
"name": "4v4",
|
||||
"command": "/play bedwars_two_four"
|
||||
},
|
||||
{
|
||||
"name": "Capture",
|
||||
"command": "/play bedwars_capture"
|
||||
},
|
||||
{
|
||||
"name": "Rush Doubles",
|
||||
"command": "/play bedwars_eight_two_rush"
|
||||
},
|
||||
{
|
||||
"name": "Rush 4v4",
|
||||
"command": "/play bedwars_four_four_rush"
|
||||
},
|
||||
{
|
||||
"name": "Ultimate Doubles",
|
||||
"command": "/play bedwars_eight_two_ultimate"
|
||||
},
|
||||
{
|
||||
"name": "Ultimate 4v4",
|
||||
"command": "/play bedwars_four_four_ultimate"
|
||||
},
|
||||
{
|
||||
"name": "Castles",
|
||||
"command": "/play bedwars_castle"
|
||||
},
|
||||
{
|
||||
"name": "Voidless Doubles",
|
||||
"command": "/play bedwars_eight_two_voidless"
|
||||
},
|
||||
{
|
||||
"name": "Voidless 4v4",
|
||||
"command": "/play bedwars_four_four_voidless"
|
||||
},
|
||||
{
|
||||
"name": "Armed Doubles",
|
||||
"command": "/play bedwars_eight two_armed"
|
||||
},
|
||||
{
|
||||
"name": "Armed 4v4",
|
||||
"command": "/play bedwars_four_four_armed"
|
||||
},
|
||||
{
|
||||
"name": "Lucky Blocks Doubles",
|
||||
"command": "/play bedwars_eight two_lucky"
|
||||
},
|
||||
{
|
||||
"name": "Lucky Blocks 4v4",
|
||||
"command": "/play bedwars_four_four_lucky"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Blitz SG",
|
||||
"icon": "blitz",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby blitz"
|
||||
},
|
||||
{
|
||||
"name": "Solo",
|
||||
"command": "/play blitz_solo_normal"
|
||||
},
|
||||
{
|
||||
"name": "Teams",
|
||||
"command": "/play blitz_teams_normal"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Build Battle",
|
||||
"icon": "build_battle",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby buildbattle"
|
||||
},
|
||||
{
|
||||
"name": "Solo",
|
||||
"command": "/play build_battle_solo_normal"
|
||||
},
|
||||
{
|
||||
"name": "Teams",
|
||||
"command": "/play build_battle_teams_normal"
|
||||
},
|
||||
{
|
||||
"name": "Pro Mode",
|
||||
"command": "/play build_battle_solo_pro"
|
||||
},
|
||||
{
|
||||
"name": "Guess The Build",
|
||||
"command": "/play build_battle_guess_the_build"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Classic Games",
|
||||
"icon": "classic",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby classic"
|
||||
},
|
||||
{
|
||||
"name": "Vampirez",
|
||||
"command": "/play vampirez"
|
||||
},
|
||||
{
|
||||
"name": "Quakecraft Solo",
|
||||
"command": "/play quake_solo"
|
||||
},
|
||||
{
|
||||
"name": "Quakecraft Teams",
|
||||
"command": "/play quake_teams"
|
||||
},
|
||||
{
|
||||
"name": "Paintball",
|
||||
"command": "/play paintball"
|
||||
},
|
||||
{
|
||||
"name": "Arena Brawl 1v1",
|
||||
"command": "/play arena_1v1"
|
||||
},
|
||||
{
|
||||
"name": "Arena Brawl 2v2",
|
||||
"command": "/play arena_2v2"
|
||||
},
|
||||
{
|
||||
"name": "Arena Brawl 4v4",
|
||||
"command": "/play arena_4v4"
|
||||
},
|
||||
{
|
||||
"name": "The Walls",
|
||||
"command": "/play walls"
|
||||
},
|
||||
{
|
||||
"name": "Turbo Kart Racers",
|
||||
"command": "/play tkr"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cops and Crims",
|
||||
"icon": "cvc",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby cops"
|
||||
},
|
||||
{
|
||||
"name": "Defusal",
|
||||
"command": "/play mcgo_normal"
|
||||
},
|
||||
{
|
||||
"name": "Team Deathmatch",
|
||||
"command": "/play mcgo_deathmatch"
|
||||
},
|
||||
{
|
||||
"name": "Defusal Party",
|
||||
"command": "/play mcgo_normal_party"
|
||||
},
|
||||
{
|
||||
"name": "Team Deathmatch Party",
|
||||
"command": "/play mcgo_deathmatch_party"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Duels",
|
||||
"icon": "duels",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby duels"
|
||||
},
|
||||
{
|
||||
"name": "Blitz 1v1",
|
||||
"command": "/play duels_blitz_duel"
|
||||
},
|
||||
{
|
||||
"name": "Bow 1v1",
|
||||
"command": "/play duels_bow_duel"
|
||||
},
|
||||
{
|
||||
"name": "Bow Spleef 1v1",
|
||||
"command": "/play duels_bowspleef_duel"
|
||||
},
|
||||
{
|
||||
"name": "Boxing",
|
||||
"command": "/play duels_boxing_duel"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 1v1",
|
||||
"command": "/play duels_bridge_duel"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 2v2",
|
||||
"command": "/play duels_bridge_doubles"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 2v2v2v2",
|
||||
"command": "/play duels_bridge_2v2v2v2"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 3v3",
|
||||
"command": "/play duels_bridge_threes"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 3v3v3v3",
|
||||
"command": "/play duels_bridge_3v3v3v3"
|
||||
},
|
||||
{
|
||||
"name": "Bridge 4v4",
|
||||
"command": "/play duels_bridge_four"
|
||||
},
|
||||
{
|
||||
"name": "Bridge CTF",
|
||||
"command": "/play duels_capture_threes"
|
||||
},{
|
||||
"name": "Classic 1v1",
|
||||
"command": "/play duels_classic_duel"
|
||||
},
|
||||
{
|
||||
"name": "Combo 1v1",
|
||||
"command": "/play duels_combo_duel"
|
||||
},
|
||||
{
|
||||
"name": "MegaWalls 1v1",
|
||||
"command": "/play duels_mw_duel"
|
||||
},
|
||||
{
|
||||
"name": "MegaWalls 2v2",
|
||||
"command": "/play duels_mw_doubles"
|
||||
},
|
||||
{
|
||||
"name": "NoDebuff 1v1",
|
||||
"command": "/play duels_potion_duel"
|
||||
},
|
||||
{
|
||||
"name": "OP 1v1",
|
||||
"command": "/play duels_op_duel"
|
||||
},
|
||||
{
|
||||
"name": "OP 2v2",
|
||||
"command": "/play duels_op_doubles"
|
||||
},
|
||||
{
|
||||
"name": "Parkour",
|
||||
"command": "/play duels_parkour_eight"
|
||||
},
|
||||
{
|
||||
"name": "SkyWars 1v1",
|
||||
"command": "/play duels_sw_duel"
|
||||
},
|
||||
{
|
||||
"name": "SkyWars 2v2",
|
||||
"command": "/play duels_sw_doubles"
|
||||
},
|
||||
{
|
||||
"name": "Sumo",
|
||||
"command": "/play duels_sumo_duel"
|
||||
},
|
||||
{
|
||||
"name": "UHC 1v1",
|
||||
"command": "/play duels_uhc_duel"
|
||||
},
|
||||
{
|
||||
"name": "UHC 2v2",
|
||||
"command": "/play duels_uhc_doubles"
|
||||
},
|
||||
{
|
||||
"name": "UHC 4v4",
|
||||
"command": "/play arena_4v4"
|
||||
},
|
||||
{
|
||||
"name": "UHC Deathmatch",
|
||||
"command": "/play duels_uhc_meetup"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Murder Mystery",
|
||||
"icon": "murder",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby murder"
|
||||
},
|
||||
{
|
||||
"name": "Classic",
|
||||
"command": "/play murder_classic"
|
||||
},
|
||||
{
|
||||
"name": "Assassins",
|
||||
"command": "/play murder_assassins"
|
||||
},
|
||||
{
|
||||
"name": "Infection V2",
|
||||
"command": "/play murder_infection"
|
||||
},
|
||||
{
|
||||
"name": "Double Up!",
|
||||
"command": "/play murder_double_up"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "SkyWars",
|
||||
"icon": "skywars",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby skywars"
|
||||
},
|
||||
{
|
||||
"name": "Solo Normal",
|
||||
"command": "/play solo_normal"
|
||||
},
|
||||
{
|
||||
"name": "Solo Insane",
|
||||
"command": "/play solo_insane"
|
||||
},
|
||||
{
|
||||
"name": "Doubles Normal",
|
||||
"command": "/play teams_normal"
|
||||
},
|
||||
{
|
||||
"name": "Doubles Insane",
|
||||
"command": "/play teams_insane"
|
||||
},
|
||||
{
|
||||
"name": "Mega Normal",
|
||||
"command": "/play mega_normal"
|
||||
},
|
||||
{
|
||||
"name": "Mega Doubles",
|
||||
"command": "/play mega_doubles"
|
||||
},
|
||||
{
|
||||
"name": "Solo TNT Madness",
|
||||
"command": "/play solo_insane_tnt_madness"
|
||||
},
|
||||
{
|
||||
"name": "Doubles TNT Madness",
|
||||
"command": "/play teams_insane_tnt_madness"
|
||||
},
|
||||
{
|
||||
"name": "Solo Rush",
|
||||
"command": "/play solo_insane_rush"
|
||||
},
|
||||
{
|
||||
"name": "Doubles Rush",
|
||||
"command": "/play teams_insane_rush"
|
||||
},
|
||||
{
|
||||
"name": "Solo Slime",
|
||||
"command": "/play solo_insane_slime"
|
||||
},
|
||||
{
|
||||
"name": "Doubles Slime",
|
||||
"command": "/play teams_insane_slime"
|
||||
},
|
||||
{
|
||||
"name": "Solo Lucky Blocks",
|
||||
"command": "/play solo_insane_lucky"
|
||||
},
|
||||
{
|
||||
"name": "Doubles Lucky Blocks",
|
||||
"command": "/play teams_insane_lucky"
|
||||
},
|
||||
{
|
||||
"name": "Hunter vs. Beasts",
|
||||
"command": "/play solo_insane_hunters_vs_beasts"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Smash Heroes",
|
||||
"icon": "smash_heroes",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Solo",
|
||||
"command": "/play super_smash_solo_normal"
|
||||
},
|
||||
{
|
||||
"name": "2v2",
|
||||
"command": "/play super_smash_2v2_normal"
|
||||
},
|
||||
{
|
||||
"name": "2v2v2",
|
||||
"command": "/play super_smash_teams_normal"
|
||||
},
|
||||
{
|
||||
"name": "Friends",
|
||||
"command": "/play super_smash_friends_normal"
|
||||
},
|
||||
{
|
||||
"name": "1v1",
|
||||
"command": "/play super_smash_1v1_normal"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "TNT Games",
|
||||
"icon": "tnt",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby tnt"
|
||||
},
|
||||
{
|
||||
"name": "TNT Run",
|
||||
"command": "/play tnt_tntrun"
|
||||
},
|
||||
{
|
||||
"name": "PVP Run",
|
||||
"command": "/play tnt_pvprun"
|
||||
},
|
||||
{
|
||||
"name": "Bow Spleef",
|
||||
"command": "/play tnt_bowspleef"
|
||||
},
|
||||
{
|
||||
"name": "TNT Tag",
|
||||
"command": "/play tnt_tntag"
|
||||
},
|
||||
{
|
||||
"name": "Wizards",
|
||||
"command": "/play tnt_capture"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Warlords",
|
||||
"icon": "warlords",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby warlords"
|
||||
},
|
||||
{
|
||||
"name": "Capture the Flag",
|
||||
"command": "/play warlords_ctf_mini"
|
||||
},
|
||||
{
|
||||
"name": "Domination",
|
||||
"command": "/play warlords_domination"
|
||||
},
|
||||
{
|
||||
"name": "Team Deathmatch",
|
||||
"command": "/play warlords_team_deathmatch"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wool Wars",
|
||||
"icon": "woolwars",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby woolwars"
|
||||
},
|
||||
{
|
||||
"name": "4v4",
|
||||
"command": "/play wool_wool_wars_two_four"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/murder.png
Executable file
After Width: | Height: | Size: 7.9 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/mw.png
Executable file
After Width: | Height: | Size: 7.0 KiB |
@ -0,0 +1,108 @@
|
||||
// Вид объекта с мини-режимом
|
||||
{
|
||||
"name": "Название режима",
|
||||
"icon": "оставь пустым",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Название режима",
|
||||
"command": "команда для входа в режима"
|
||||
}
|
||||
]
|
||||
}
|
||||
// Так же нужно указывать команду для входа в лобби с названием "Go to Lobby One" (если у мини-режима есть лобби)
|
||||
|
||||
// Пример
|
||||
{
|
||||
"name": "Arcade",
|
||||
"icon": "arcade",
|
||||
"modes": [
|
||||
{
|
||||
"name": "Go to Lobby One",
|
||||
"command": "/lobby arcade"
|
||||
},
|
||||
{
|
||||
"name": "Blocking Dead",
|
||||
"command": "/play arcade_day_one"
|
||||
},
|
||||
{
|
||||
"name": "Bounty Hunters",
|
||||
"command": "/play arcade_bounty_hunters"
|
||||
},
|
||||
{
|
||||
"name": "Capture The Wool",
|
||||
"command": "/play arcade_pvp_ctw"
|
||||
},
|
||||
{
|
||||
"name": "Creeper Attack",
|
||||
"command": "/play arcade_creeper_attack"
|
||||
},
|
||||
{
|
||||
"name": "Dragon Wars",
|
||||
"command": "/play arcade_dragon_wars"
|
||||
},
|
||||
{
|
||||
"name": "Ender Spleef",
|
||||
"command": "/play arcade_ender_spleef"
|
||||
},
|
||||
{
|
||||
"name": "Farm Hunt",
|
||||
"command": "/play arcade_farm_hunt"
|
||||
},
|
||||
{
|
||||
"name": "Football",
|
||||
"command": "/play arcade_soccer"
|
||||
},
|
||||
{
|
||||
"name": "Galaxy Wars",
|
||||
"command": "/play arcade_starwars"
|
||||
},
|
||||
{
|
||||
"name": "Hide and Seek - Party Pooper",
|
||||
"command": "/play arcade_hide_and_seek_party_pooper"
|
||||
},
|
||||
{
|
||||
"name": "Hide and Seek - Prop Hunt",
|
||||
"command": "/play arcade_hide_and_seek_prop_hunt"
|
||||
},
|
||||
{
|
||||
"name": "Hole in the Wall",
|
||||
"command": "/play arcade_hole_in_the_wall"
|
||||
},
|
||||
{
|
||||
"name": "Hypixel Says",
|
||||
"command": "/play arcade_simon_says"
|
||||
},
|
||||
{
|
||||
"name": "Santa Says",
|
||||
"command": "/play arcade_santa_says"
|
||||
},
|
||||
{
|
||||
"name": "Mini Walls",
|
||||
"command": "/play arcade_mini_walls"
|
||||
},
|
||||
{
|
||||
"name": "Party Games",
|
||||
"command": "/play arcade_party_games_1"
|
||||
},
|
||||
{
|
||||
"name": "Pixel Painters",
|
||||
"command": "/play arcade_pixel_painters"
|
||||
},
|
||||
{
|
||||
"name": "Throw Out",
|
||||
"command": "/play arcade_throw_out"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Dead End",
|
||||
"command": "/play arcade_zombies_dead_end"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Bad Blood",
|
||||
"command": "/play arcade_zombies_bad_blood"
|
||||
},
|
||||
{
|
||||
"name": "Zombies - Alien Arcadium",
|
||||
"command": "/play arcade_zombies_alien_arcadium"
|
||||
}
|
||||
]
|
||||
}
|
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/partymode.png
Executable file
After Width: | Height: | Size: 9.0 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/prototype.png
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/skyblock.png
Executable file
After Width: | Height: | Size: 14 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/skywars.png
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/smash_heroes.png
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/the_pit.png
Executable file
After Width: | Height: | Size: 16 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/tnt.png
Executable file
After Width: | Height: | Size: 7.5 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/uhc.png
Executable file
After Width: | Height: | Size: 8.3 KiB |
BIN
src/main/resources/assets/minecraft/silentclient/mods/quickplay/warlords.png
Executable file
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.7 KiB |