(ui) new emotes gui

This commit is contained in:
kirillsaint 2024-02-08 17:49:19 +06:00
parent 53b70833bf
commit d40779c555
37 changed files with 231 additions and 56 deletions

View File

@ -59,11 +59,11 @@ public class PlayerModelManager {
gsonbuilder.registerTypeAdapter(AnimatorHeldItemConfig.class, new AnimatorHeldItemConfigAdapter()); gsonbuilder.registerTypeAdapter(AnimatorHeldItemConfig.class, new AnimatorHeldItemConfigAdapter());
Gson gson = gsonbuilder.create(); Gson gson = gsonbuilder.create();
Class<?> oclass = this.getClass(); Class<?> oclass = this.getClass();
BOBJLoader.BOBJData bobjloader$bobjdata1 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/emoticons/models/armor.bobj")); BOBJLoader.BOBJData bobjloader$bobjdata1 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/armor.bobj"));
BOBJLoader.BOBJData bobjloader$bobjdata2 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/emoticons/models/default.bobj")); BOBJLoader.BOBJData bobjloader$bobjdata2 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/default.bobj"));
BOBJLoader.BOBJData bobjloader$bobjdata3 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/emoticons/models/slim.bobj")); BOBJLoader.BOBJData bobjloader$bobjdata3 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/slim.bobj"));
BOBJLoader.BOBJData bobjloader$bobjdata4 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/emoticons/models/actions.bobj")); BOBJLoader.BOBJData bobjloader$bobjdata4 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/actions.bobj"));
BOBJLoader.BOBJData bobjloader$bobjdata5 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/emoticons/models/props.bobj")); BOBJLoader.BOBJData bobjloader$bobjdata5 = BOBJLoader.readData(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/props.bobj"));
BOBJLoader.merge(bobjloader$bobjdata2, bobjloader$bobjdata1); BOBJLoader.merge(bobjloader$bobjdata2, bobjloader$bobjdata1);
BOBJLoader.merge(bobjloader$bobjdata3, bobjloader$bobjdata1); BOBJLoader.merge(bobjloader$bobjdata3, bobjloader$bobjdata1);
BOBJLoader.merge(bobjloader$bobjdata2, bobjloader$bobjdata5); BOBJLoader.merge(bobjloader$bobjdata2, bobjloader$bobjdata5);
@ -75,10 +75,10 @@ public class PlayerModelManager {
this.steve.init(); this.steve.init();
this.alex.init(); this.alex.init();
this.steveConfig = gson.fromJson( this.steveConfig = gson.fromJson(
IOUtils.toString(Objects.requireNonNull(oclass.getResourceAsStream("/assets/emoticons/models/default.json"))), AnimatorConfig.class IOUtils.toString(Objects.requireNonNull(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/default.json"))), AnimatorConfig.class
); );
this.alexConfig = gson.fromJson( this.alexConfig = gson.fromJson(
IOUtils.toString(Objects.requireNonNull(oclass.getResourceAsStream("/assets/emoticons/models/slim.json"))), AnimatorConfig.class IOUtils.toString(Objects.requireNonNull(oclass.getResourceAsStream("/assets/minecraft/silentclient/emotes/models/slim.json"))), AnimatorConfig.class
); );
this.steve.data.armatures.get("Armature").enabled = true; this.steve.data.armatures.get("Armature").enabled = true;
this.alex.data.armatures.get("Armature").enabled = true; this.alex.data.armatures.get("Armature").enabled = true;

View File

@ -8,7 +8,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ParticleEndRod extends EntityFX { public class ParticleEndRod extends EntityFX {
public static final ResourceLocation TEXTURE = new ResourceLocation("emoticons:particles/mc-particles.png"); public static final ResourceLocation TEXTURE = new ResourceLocation("silentclient/emotes/particles/mc-particles.png");
private final int numAgingFrames = 8; private final int numAgingFrames = 8;
public ParticleEndRod(World world, double d0, double d1, double d2, double d3, double d4, double d5) { public ParticleEndRod(World world, double d0, double d1, double d2, double d3, double d4, double d5) {

View File

@ -0,0 +1,167 @@
package net.silentclient.client.emotes.ui;
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.emotes.EmoteManager;
import net.silentclient.client.gui.SilentScreen;
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.utils.MenuBlurUtils;
import net.silentclient.client.utils.MouseCursorHandler;
import net.silentclient.client.utils.ScrollHelper;
import net.silentclient.client.utils.types.PlayerResponse;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import java.awt.*;
import java.io.IOException;
import java.util.ArrayList;
public class EmoteMenuGui extends SilentScreen {
private ScrollHelper scrollHelper = new ScrollHelper();
@Override
public void initGui() {
super.initGui();
defaultCursor = false;
MenuBlurUtils.loadBlur();
int width = 255;
int height = 200;
int x = this.width / 2 - (width / 2);
int y = this.height / 2 - (height / 2);
this.buttonList.add(new IconButton(0, x + width - 14 - 3, y + 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);
int width = 255;
int height = 200;
int x = this.width / 2 - (width / 2);
int y = this.height / 2 - (height / 2);
scrollHelper.setStep(5);
scrollHelper.setElementsHeight((float) Math.ceil((Client.getInstance().getCosmetics().getMyEmotes().size() + 3) / 3) * 85);
scrollHelper.setMaxScroll(height - 20);
scrollHelper.setSpeed(100);
scrollHelper.setFlag(true);
float scrollY = scrollHelper.getScroll();
RenderUtil.drawRoundedRect(x, y, width, height, 4, Theme.backgroundColor().getRGB());
Client.getInstance().getSilentFontRenderer().drawString(x + 3, y + 3, "Emotes", 14, SilentFontRenderer.FontType.TITLE);
super.drawScreen(mouseX, mouseY, partialTicks);
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_SCISSOR_TEST);
ScaledResolution r = new ScaledResolution(Minecraft.getMinecraft());
int s = r.getScaleFactor();
int listHeight = height - 20;
int translatedY = r.getScaledHeight() - y - 20 - listHeight;
GL11.glScissor(0 * s, translatedY * s, this.width * s, listHeight * s);
int emoteX = x + 3;
float emoteY = y + 20 + scrollY;
int emoteIndex = 0;
for(PlayerResponse.Account.Cosmetics.CosmeticItem emote : Client.getInstance().getCosmetics().getMyEmotes()) {
boolean isHovered = MouseUtils.isInside(mouseX, mouseY, emoteX, emoteY, 80, 80) && !MouseUtils.isInside(mouseX, mouseY, emoteX + 80 - 3 - 10, emoteY + 3, 10, 10);
if(isHovered) {
cursorType = MouseCursorHandler.CursorType.POINTER;
RenderUtil.drawRoundedRect(emoteX, emoteY, 80, 80, 3, new Color(255, 255, 255, 30).getRGB());
}
if(MouseUtils.isInside(mouseX, mouseY, emoteX + 80 - 3 - 10, emoteY + 3, 10, 10)) {
cursorType = MouseCursorHandler.CursorType.POINTER;
}
RenderUtil.drawRoundedOutline(emoteX, emoteY, 80, 80, 3, 1, Theme.borderColor().getRGB());
Client.getInstance().getSilentFontRenderer().drawString(emote.getName(), emoteX + 3, (int) (emoteY + 3), 12, SilentFontRenderer.FontType.TITLE, 64);
boolean favorite = false;
for(Number i : Client.getInstance().getAccount().getFavoriteCosmetics().emotes == null ? new ArrayList<Number>() : Client.getInstance().getAccount().getFavoriteCosmetics().emotes) {
if(i.intValue() == emote.getId()) {
favorite = true;
}
}
RenderUtil.drawImage(new ResourceLocation(favorite ? "silentclient/icons/star.png" : "silentclient/icons/star_outline.png"), emoteX + 80 - 3 - 10, emoteY + 3, 10, 10);
emoteIndex += 1;
if(emoteIndex == 3) {
emoteIndex = 0;
emoteX = x + 3;
emoteY += 85;
} else {
emoteX += 83;
}
}
Client.getInstance().getMouseCursorHandler().enableCursor(cursorType);
GL11.glDisable(GL11.GL_SCISSOR_TEST);
GL11.glPopMatrix();
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if(button.id == 0) {
mc.displayGuiScreen(null);
}
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
super.mouseClicked(mouseX, mouseY, mouseButton);
int width = 255;
int height = 200;
int x = this.width / 2 - (width / 2);
int y = this.height / 2 - (height / 2);
int emoteX = x + 3;
float emoteY = (int) (y + 20 + scrollHelper.getScroll());
int emoteIndex = 0;
for(PlayerResponse.Account.Cosmetics.CosmeticItem emote : Client.getInstance().getCosmetics().getMyEmotes()) {
boolean isHovered = MouseUtils.isInside(mouseX, mouseY, emoteX, emoteY, 80, 80) && !MouseUtils.isInside(mouseX, mouseY, emoteX + 80 - 3 - 10, emoteY + 3, 10, 10);
if(isHovered) {
EmoteManager.sendEmote(mc.thePlayer.getName(), emote.getId());
mc.displayGuiScreen(null);
break;
}
if(MouseUtils.isInside(mouseX, mouseY, emoteX + 80 - 3 - 10, emoteY + 3, 10, 10)) {
Client.getInstance().getAccount().updateFavorite(emote.getId(), "emotes");
break;
}
emoteIndex += 1;
if(emoteIndex == 3) {
emoteIndex = 0;
emoteX = x + 3;
emoteY += 85;
} else {
emoteX += 83;
}
}
}
@Override
public void updateScreen() {
super.updateScreen();
if(mc.thePlayer == null) {
Client.backgroundPanorama.tickPanorama();
}
}
@Override
protected void keyTyped(char typedChar, int keyCode) throws IOException {
if (keyCode == Keyboard.KEY_ESCAPE) {
mc.displayGuiScreen(null);
}
}
@Override
public void onGuiClosed() {
super.onGuiClosed();
MenuBlurUtils.unloadBlur();
}
}

View File

@ -6,6 +6,8 @@ import net.minecraft.util.MathHelper;
import net.silentclient.client.Client; import net.silentclient.client.Client;
import net.silentclient.client.emotes.socket.EmoteSocket; import net.silentclient.client.emotes.socket.EmoteSocket;
import net.silentclient.client.gui.SilentScreen; import net.silentclient.client.gui.SilentScreen;
import net.silentclient.client.gui.font.SilentFontRenderer;
import net.silentclient.client.utils.MouseCursorHandler;
import net.silentclient.client.utils.types.PlayerResponse; import net.silentclient.client.utils.types.PlayerResponse;
import org.lwjgl.input.Mouse; import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -67,6 +69,7 @@ public class ScreenEmoteWheel extends SilentScreen {
} }
currentIndex++; currentIndex++;
} }
this.defaultCursor = false;
} }
@Override @Override
@ -79,7 +82,8 @@ public class ScreenEmoteWheel extends SilentScreen {
int count = this.handlers.size(); int count = this.handlers.size();
float radius = (float)resolution.getScaledHeight() * 2.0F / 5.0F; float radius = (float)resolution.getScaledHeight() * 2.0F / 5.0F;
float i = 0.0F; float i = 0.0F;
this.drawString(this.fontRendererObj, "Scroll to view more.", 1, 1, -1); MouseCursorHandler.CursorType cursorType = getCursor(this.silentInputs, this.buttonList);
Client.getInstance().getSilentFontRenderer().drawString("Scroll to view more.", 1, 1, 14, SilentFontRenderer.FontType.TITLE);
for(String s : this.handlers.keySet()) { for(String s : this.handlers.keySet()) {
GL11.glPushMatrix(); GL11.glPushMatrix();
@ -105,6 +109,7 @@ public class ScreenEmoteWheel extends SilentScreen {
if (mouseTheta > (double)startTheta && mouseTheta < (double)endTheta) { if (mouseTheta > (double)startTheta && mouseTheta < (double)endTheta) {
this.foc = s; this.foc = s;
hovered = true; hovered = true;
cursorType = MouseCursorHandler.CursorType.POINTER;
} }
} }
@ -130,12 +135,14 @@ public class ScreenEmoteWheel extends SilentScreen {
for(String string : strings) { for(String string : strings) {
textCenterY += 15; textCenterY += 15;
this.drawScaledText(string, textCenterX, textCenterY, Color.WHITE.getRGB()); this.drawScaledText(string, textCenterX, textCenterY, -1);
} }
GL11.glPopMatrix(); GL11.glPopMatrix();
++i; ++i;
} }
Client.getInstance().getMouseCursorHandler().enableCursor(cursorType);
} }
protected void drawScaledText(String text, int trueX, int trueY, int color) { protected void drawScaledText(String text, int trueX, int trueY, int color) {

View File

@ -112,7 +112,7 @@ public abstract class AbstractClientPlayerMixin implements AbstractClientPlayerE
(new Thread("CustomSkinThread") { (new Thread("CustomSkinThread") {
public void run() { public void run() {
Client.logger.info(String.format("Downloading Custom Skin (%s)", silent$nameClear)); Client.logger.info(String.format("Downloading Custom Skin (%s)", silent$nameClear));
customSkin.setImage(SCTextureManager.getImage("https://cdn.silentclient.net/skins/" + silent$nameClear.toLowerCase() + ".png")); customSkin.setImage(SCTextureManager.getImage("https://cdn-test.silentclient.net/file/silentclient/skins/" + silent$nameClear.toLowerCase() + ".png"));
CustomSkin.loading = false; CustomSkin.loading = false;
customSkin.setLoaded(true); customSkin.setLoaded(true);
Client.logger.info(String.format("Custom Skin downloaded! (%s)", silent$nameClear)); Client.logger.info(String.format("Custom Skin downloaded! (%s)", silent$nameClear));

View File

@ -1,10 +1,10 @@
package net.silentclient.client.mixin.mixins.emotes; package net.silentclient.client.mixin.mixins.emotes;
import net.minecraft.client.Minecraft;
import net.silentclient.client.Client; import net.silentclient.client.Client;
import net.silentclient.client.emotes.EmotesMod; import net.silentclient.client.emotes.EmotesMod;
import net.silentclient.client.emotes.PlayerModelManager; import net.silentclient.client.emotes.PlayerModelManager;
import net.silentclient.client.emotes.ui.ScreenEmoteWheel; import net.silentclient.client.emotes.ui.EmoteMenuGui;
import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
@ -21,7 +21,7 @@ public class MinecraftMixin {
return; return;
} }
if(Client.getInstance().getSettingsManager().getSettingByClass(EmotesMod.class, "Emote Wheel Keybind").isKeyDown()) { if(Client.getInstance().getSettingsManager().getSettingByClass(EmotesMod.class, "Emote Wheel Keybind").isKeyDown()) {
Minecraft.getMinecraft().displayGuiScreen(new ScreenEmoteWheel()); Minecraft.getMinecraft().displayGuiScreen(new EmoteMenuGui());
} }
} }

View File

@ -520,6 +520,7 @@ public class PlayerResponse extends AbstractReply {
public ArrayList<Number> bandanas = new ArrayList<Number>(); public ArrayList<Number> bandanas = new ArrayList<Number>();
public ArrayList<Number> hats = new ArrayList<Number>(); public ArrayList<Number> hats = new ArrayList<Number>();
public ArrayList<Number> shields = new ArrayList<Number>(); public ArrayList<Number> shields = new ArrayList<Number>();
public ArrayList<Number> emotes = new ArrayList<Number>();
} }
public class BanInfo { public class BanInfo {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -27,12 +27,12 @@
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/popcorn.png" "texture": "silentclient/emotes/models/props/popcorn.png"
}, },
"prop_grave": { "prop_grave": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/grave.png" "texture": "silentclient/emotes/models/props/grave.png"
}, },
"prop_grave_base": { "prop_grave_base": {
"visible": false, "visible": false,
@ -42,45 +42,45 @@
"prop_coffin": { "prop_coffin": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/coffin.png" "texture": "silentclient/emotes/models/props/coffin.png"
}, },
"prop_broom": { "prop_broom": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/broom.png" "texture": "silentclient/emotes/models/props/broom.png"
}, },
"prop_candy_bag": { "prop_candy_bag": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/candy_bag.png" "texture": "silentclient/emotes/models/props/candy_bag.png"
}, },
"prop_football": { "prop_football": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/football.png" "texture": "silentclient/emotes/models/props/football.png"
}, },
"prop_turkey": { "prop_turkey": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/turkey.png" "texture": "silentclient/emotes/models/props/turkey.png"
}, },
"prop_hunt_gun": { "prop_hunt_gun": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/hunt_gun.png" "texture": "silentclient/emotes/models/props/hunt_gun.png"
}, },
"prop_cloud": { "prop_cloud": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/cloud.png" "texture": "silentclient/emotes/models/props/cloud.png"
}, },
"prop_present": { "prop_present": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/present.png" "texture": "silentclient/emotes/models/props/present.png"
}, },
"prop_iceberg": { "prop_iceberg": {
"visible": false, "visible": false,
@ -90,7 +90,7 @@
"prop_chimney": { "prop_chimney": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/chimney.png" "texture": "silentclient/emotes/models/props/chimney.png"
}, },
"prop_snowman_head": { "prop_snowman_head": {
"visible": false, "visible": false,
@ -110,52 +110,52 @@
"prop_skates": { "prop_skates": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/skates.png" "texture": "silentclient/emotes/models/props/skates.png"
}, },
"prop_champagne_bottle": { "prop_champagne_bottle": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_champagne_cork": { "prop_champagne_cork": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_champagne_flying_cork": { "prop_champagne_flying_cork": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_rocket": { "prop_rocket": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_rocket_base": { "prop_rocket_base": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_heart": { "prop_heart": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_heart_1": { "prop_heart_1": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_heart_2": { "prop_heart_2": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_rose": { "prop_rose": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/rose.png" "texture": "silentclient/emotes/models/props/rose.png"
}, },
"body": { "body": {
"normals": true, "normals": true,

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 403 KiB

After

Width:  |  Height:  |  Size: 403 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 154 KiB

View File

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 163 B

After

Width:  |  Height:  |  Size: 163 B

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -27,12 +27,12 @@
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/popcorn.png" "texture": "silentclient/emotes/models/props/popcorn.png"
}, },
"prop_grave": { "prop_grave": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/grave.png" "texture": "silentclient/emotes/models/props/grave.png"
}, },
"prop_grave_base": { "prop_grave_base": {
"visible": false, "visible": false,
@ -42,45 +42,45 @@
"prop_coffin": { "prop_coffin": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/coffin.png" "texture": "silentclient/emotes/models/props/coffin.png"
}, },
"prop_broom": { "prop_broom": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/broom.png" "texture": "silentclient/emotes/models/props/broom.png"
}, },
"prop_candy_bag": { "prop_candy_bag": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/candy_bag.png" "texture": "silentclient/emotes/models/props/candy_bag.png"
}, },
"prop_football": { "prop_football": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/football.png" "texture": "silentclient/emotes/models/props/football.png"
}, },
"prop_turkey": { "prop_turkey": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/turkey.png" "texture": "silentclient/emotes/models/props/turkey.png"
}, },
"prop_hunt_gun": { "prop_hunt_gun": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/hunt_gun.png" "texture": "silentclient/emotes/models/props/hunt_gun.png"
}, },
"prop_cloud": { "prop_cloud": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"smooth": true, "smooth": true,
"texture": "emoticons:models/props/cloud.png" "texture": "silentclient/emotes/models/props/cloud.png"
}, },
"prop_present": { "prop_present": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/present.png" "texture": "silentclient/emotes/models/props/present.png"
}, },
"prop_iceberg": { "prop_iceberg": {
"visible": false, "visible": false,
@ -90,7 +90,7 @@
"prop_chimney": { "prop_chimney": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/chimney.png" "texture": "silentclient/emotes/models/props/chimney.png"
}, },
"prop_snowman_head": { "prop_snowman_head": {
"visible": false, "visible": false,
@ -110,52 +110,52 @@
"prop_skates": { "prop_skates": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/skates.png" "texture": "silentclient/emotes/models/props/skates.png"
}, },
"prop_champagne_bottle": { "prop_champagne_bottle": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_champagne_cork": { "prop_champagne_cork": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_champagne_flying_cork": { "prop_champagne_flying_cork": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_rocket": { "prop_rocket": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_rocket_base": { "prop_rocket_base": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/palette.png" "texture": "silentclient/emotes/models/props/palette.png"
}, },
"prop_heart": { "prop_heart": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_heart_1": { "prop_heart_1": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_heart_2": { "prop_heart_2": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/heart.png" "texture": "silentclient/emotes/models/props/heart.png"
}, },
"prop_rose": { "prop_rose": {
"visible": false, "visible": false,
"normals": true, "normals": true,
"texture": "emoticons:models/props/rose.png" "texture": "silentclient/emotes/models/props/rose.png"
}, },
"body": { "body": {
"normals": true, "normals": true,