diff --git a/src/main/java/net/silentclient/client/cosmetics/Cosmetics.java b/src/main/java/net/silentclient/client/cosmetics/Cosmetics.java index 97eaf22..6085d4f 100644 --- a/src/main/java/net/silentclient/client/cosmetics/Cosmetics.java +++ b/src/main/java/net/silentclient/client/cosmetics/Cosmetics.java @@ -30,6 +30,7 @@ public class Cosmetics { public Map hats = new HashMap<>(); public Map shields = new HashMap<>(); public Map icons = new HashMap<>(); + public Map emotes = new HashMap<>(); public ArrayList myIcons = new ArrayList(); public ArrayList myWings = new ArrayList(); @@ -37,6 +38,7 @@ public class Cosmetics { public ArrayList myBandanas = new ArrayList(); public ArrayList myHats = new ArrayList(); public ArrayList myShields = new ArrayList(); + public ArrayList myEmotes = new ArrayList(); public StaticResourceLocation defaultIcon; @@ -132,6 +134,14 @@ public class Cosmetics { }); } + Client.logger.info("STARTING > cosmeitcs > emotes"); + emotes.clear(); + if(allCosmetics != null && allCosmetics.getEmotes() != null) { + allCosmetics.getEmotes().forEach((emote) -> { + emotes.put(emote.getId(), emote); + }); + } + Client.logger.info("STARTING > cosmeitcs > outfits"); Outfits.loadOutfits(); } @@ -157,7 +167,8 @@ public class Cosmetics { Client.getInstance().getCosmetics().setMyBandanas(cosmetics.getAccount().getCosmetics().getBandanas()); Client.getInstance().getCosmetics().setMyHats(cosmetics.getAccount().getCosmetics().getHats()); Client.getInstance().getCosmetics().setMyShields(cosmetics.getAccount().getCosmetics().getShields()); - Client.getInstance().getSettingsManager().getSettingByClass(CosmeticsMod.class, "Cape Shoulders").setValBoolean(cosmetics.getAccount().getCapeShoulders()); + Client.getInstance().getCosmetics().setMyEmotes(cosmetics.getAccount().getCosmetics().getEmotes()); + Client.getInstance().getSettingsManager().getSettingByClass(CosmeticsMod.class, "Cape Shoulders").setValBoolean(cosmetics.getAccount().getCapeShoulders()); Client.getInstance().getSettingsManager().getSettingByClass(CosmeticsMod.class, "Cape Type").setValString(cosmetics.getAccount().getCapeType().equals("dynamic_curved") ? "Dynamic Curved" : cosmetics.getAccount().getCapeType().equals("curved_rectangle") ? "Curved Rectangle" : "Rectangle"); if(Minecraft.getMinecraft().thePlayer != null) { ((AbstractClientPlayerExt) Minecraft.getMinecraft().thePlayer).silent$setCapeType(cosmetics.getAccount().getCapeType()); @@ -178,6 +189,7 @@ public class Cosmetics { Client.getInstance().getCosmetics().setMyBandanas(cosmetics.getAccount().getCosmetics().getBandanas()); Client.getInstance().getCosmetics().setMyHats(cosmetics.getAccount().getCosmetics().getHats()); Client.getInstance().getCosmetics().setMyShields(cosmetics.getAccount().getCosmetics().getShields()); + Client.getInstance().getCosmetics().setMyEmotes(cosmetics.getAccount().getCosmetics().getEmotes()); Client.getInstance().getSettingsManager().getSettingByClass(CosmeticsMod.class, "Cape Shoulders").setValBoolean(cosmetics.getAccount().getCapeShoulders()); Client.getInstance().getSettingsManager().getSettingByClass(CosmeticsMod.class, "Cape Type").setValString(cosmetics.getAccount().getCapeType().equals("dynamic_curved") ? "Dynamic Curved" : cosmetics.getAccount().getCapeType().equals("curved_rectangle") ? "Curved Rectangle" : "Rectangle"); if(Minecraft.getMinecraft().thePlayer != null) { @@ -222,6 +234,14 @@ public class Cosmetics { return myShields; } + public ArrayList getMyEmotes() { + return myEmotes; + } + + public void setMyEmotes(ArrayList myEmotes) { + this.myEmotes = myEmotes; + } + public static PlayerResponse.Account.Cosmetics getAllCosmetics() { try { InputStream in = Client.getInstance().getClass().getResourceAsStream("/assets/minecraft/silentclient/cosmetics.json"); diff --git a/src/main/java/net/silentclient/client/emotes/EmotesMod.java b/src/main/java/net/silentclient/client/emotes/EmotesMod.java index 97a62a1..24eb013 100644 --- a/src/main/java/net/silentclient/client/emotes/EmotesMod.java +++ b/src/main/java/net/silentclient/client/emotes/EmotesMod.java @@ -1,7 +1,10 @@ package net.silentclient.client.emotes; +import net.silentclient.client.Client; +import net.silentclient.client.emotes.socket.EmoteSocket; import net.silentclient.client.mods.Mod; import net.silentclient.client.mods.ModCategory; +import net.silentclient.client.mods.Setting; import org.lwjgl.input.Keyboard; public class EmotesMod extends Mod { @@ -14,4 +17,26 @@ public class EmotesMod extends Mod { this.addBooleanSetting("Emotes", this, true); this.addKeybindSetting("Emote Wheel Keybind", this, Keyboard.KEY_B); } + + @Override + public void onEnable() { + super.onEnable(); + if(Client.getInstance().getSettingsManager().getSettingByClass(EmotesMod.class, "Emotes").getValBoolean()) { + EmoteSocket.get().connect(); + } else { + EmoteSocket.get().disconnect(); + } + } + + @Override + public void onChangeSettingValue(Setting setting) { + super.onChangeSettingValue(setting); + if(setting.getName().equals("Emotes")) { + if(setting.getValBoolean()) { + EmoteSocket.get().connect(); + } else { + EmoteSocket.get().disconnect(); + } + } + } } diff --git a/src/main/java/net/silentclient/client/emotes/PlayerModelManager.java b/src/main/java/net/silentclient/client/emotes/PlayerModelManager.java index 4741890..70c703b 100644 --- a/src/main/java/net/silentclient/client/emotes/PlayerModelManager.java +++ b/src/main/java/net/silentclient/client/emotes/PlayerModelManager.java @@ -156,17 +156,17 @@ public class PlayerModelManager { this.registerEmote(new IcebergEmote("iceberg", "Iceberg")); this.registerEmote(new PresentEmote("present", "Present")); this.registerEmote(new ChampagneEmote("champagne", "Champagne")); - this.map.put(1, "best_mates"); - this.map.put(2, "boneless"); - this.map.put(3, "bow"); - this.map.put(4, "boy"); - this.map.put(5, "calculated"); - this.map.put(6, "chicken"); - this.map.put(7, "clapping"); - this.map.put(8, "confused"); - this.map.put(9, "crying"); - this.map.put(10, "dab"); - this.map.put(11, "default"); + this.map.put(1, "default"); + this.map.put(2, "best_mates"); + this.map.put(3, "boneless"); + this.map.put(4, "bow"); + this.map.put(5, "boy"); + this.map.put(6, "calculated"); + this.map.put(7, "chicken"); + this.map.put(8, "clapping"); + this.map.put(9, "confused"); + this.map.put(10, "crying"); + this.map.put(11, "dab"); this.map.put(12, "disco_fever"); this.map.put(13, "electro_shuffle"); this.map.put(14, "facepalm"); diff --git a/src/main/java/net/silentclient/client/emotes/socket/EmoteSocket.java b/src/main/java/net/silentclient/client/emotes/socket/EmoteSocket.java new file mode 100644 index 0000000..27ccc70 --- /dev/null +++ b/src/main/java/net/silentclient/client/emotes/socket/EmoteSocket.java @@ -0,0 +1,78 @@ +package net.silentclient.client.emotes.socket; + +import io.socket.client.IO; +import io.socket.client.Socket; +import net.silentclient.client.Client; +import net.silentclient.client.emotes.EmoteManager; +import net.silentclient.client.utils.NotificationUtils; +import org.json.JSONObject; + +import java.net.URI; + +public class EmoteSocket { + public static EmoteSocket instance; + + public static EmoteSocket get() { + if(instance == null) { + instance = new EmoteSocket(); + return instance; + } + return instance; + } + + private Socket socket; + + public EmoteSocket() { + try { + this.socket = IO.socket(new URI("https://emotes.silentclient.net:443")); + } catch (Exception err) { + Client.logger.catching(err); + } + + this.socket.on(Socket.EVENT_CONNECT, (Object... arg0) -> { + Client.logger.info("Connected to Emotes Socket"); + }).on(Socket.EVENT_DISCONNECT, (Object... arg0) -> { + Client.logger.info("Disconnected from Emotes Socket"); + }).on("error", (Object... arg0) -> { + SocketError error = Client.getInstance().getGson().fromJson((String)arg0[0], SocketError.class); + NotificationUtils.showNotification("Error", error.getError()); + }).on("startEmote", (Object... arg0) -> { + Client.logger.info((String)arg0[0]); + SocketShowEmote data = Client.getInstance().getGson().fromJson((String)arg0[0], SocketShowEmote.class); + EmoteManager.sendEmote(data.username, data.emoteId); + }); + } + + public void startEmote(int id) { + this.socket.emit("startEmote", new JSONObject().put("accessToken", Client.getInstance().getUserData().getAccessToken()).put("emoteId", id).toString()); + } + + public void connect() { + this.socket.connect(); + } + + public void disconnect() { + this.socket.disconnect(); + } + + public static class SocketError { + public String error; + + public String getError() { + return error; + } + } + + public static class SocketShowEmote { + public String username; + public int emoteId; + + public String getUsername() { + return username; + } + + public int getEmoteId() { + return emoteId; + } + } +} diff --git a/src/main/java/net/silentclient/client/emotes/ui/ScreenEmoteWheel.java b/src/main/java/net/silentclient/client/emotes/ui/ScreenEmoteWheel.java index f3cfa0f..a910967 100644 --- a/src/main/java/net/silentclient/client/emotes/ui/ScreenEmoteWheel.java +++ b/src/main/java/net/silentclient/client/emotes/ui/ScreenEmoteWheel.java @@ -1,11 +1,12 @@ package net.silentclient.client.emotes.ui; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.MathHelper; -import net.silentclient.client.emotes.EmoteManager; +import net.silentclient.client.Client; +import net.silentclient.client.emotes.socket.EmoteSocket; import net.silentclient.client.gui.SilentScreen; +import net.silentclient.client.utils.types.PlayerResponse; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; @@ -24,12 +25,15 @@ public class ScreenEmoteWheel extends SilentScreen { private int page = 1; private void handleScroll() { + int maxPage = (int) Math.ceil((double) Client.getInstance().getCosmetics().getMyEmotes().size() / 6); int scroll = Mouse.getEventDWheel(); if (scroll > 0 && this.page > 1) { + this.initGui(); --this.page; } - if (scroll < 0 && this.page < 12) { + if (scroll < 0 && this.page < maxPage) { + this.initGui(); ++this.page; } } @@ -52,89 +56,16 @@ public class ScreenEmoteWheel extends SilentScreen { @Override public void initGui() { this.handlers.clear(); - switch(this.page) { - case 1: - this.handlers.put("Default", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 11)); - this.handlers.put("Boneless", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 2)); - this.handlers.put("Bow", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 3)); - this.handlers.put("Boyy", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 4)); - this.handlers.put("Calculated", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 5)); - break; - case 2: - this.handlers.put("Chicken", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 6)); - this.handlers.put("Clapping", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 7)); - this.handlers.put("Confused", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 8)); - this.handlers.put("Crying", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 9)); - this.handlers.put("Dab", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 10)); - break; - case 3: - this.handlers.put("Best Mates", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 1)); - this.handlers.put("Disco Fever", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 12)); - this.handlers.put("Electro Shuffle", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 13)); - this.handlers.put("Facepalm", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 14)); - this.handlers.put("Fist", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 15)); - break; - case 4: - this.handlers.put("Floss", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 16)); - this.handlers.put("Free Flow", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 17)); - this.handlers.put("Fresh", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 18)); - this.handlers.put("Gangnam Style", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 19)); - this.handlers.put("Get Funky", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 20)); - break; - case 5: - this.handlers.put("Hype", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 21)); - this.handlers.put("Infinite Dab", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 22)); - this.handlers.put("Laughing", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 23)); - this.handlers.put("No", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 24)); - this.handlers.put("Orange Justice", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 25)); - break; - case 6: - this.handlers.put("Pointing", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 26)); - this.handlers.put("Salute", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 27)); - this.handlers.put("Shimmer", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 28)); - this.handlers.put("Shrug", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 29)); - this.handlers.put("Skibidi", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 30)); - break; - case 7: - this.handlers.put("Squat Kick", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 31)); - this.handlers.put("Star Power", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 32)); - this.handlers.put("T Pose", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 33)); - this.handlers.put("Take The L", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 34)); - this.handlers.put("Thinking", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 35)); - break; - case 8: - this.handlers.put("Tidy", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 36)); - this.handlers.put("Wave", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 37)); - this.handlers.put("Yes", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 38)); - this.handlers.put("Rising From Dead", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 39)); - this.handlers.put("Pumpkin", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 40)); - break; - case 9: - this.handlers.put("Trick or Treat", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 41)); - this.handlers.put("Blow kiss", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 42)); - this.handlers.put("Twerk", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 43)); - this.handlers.put("Club", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 44)); - this.handlers.put("Sneeze", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 45)); - break; - case 10: - this.handlers.put("Punch", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 46)); - this.handlers.put("Bongo Cat", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 47)); - this.handlers.put("Exhausted", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 48)); - this.handlers.put("Disgusted", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 49)); - this.handlers.put("Bitch Slap", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 50)); - break; - case 11: - this.handlers.put("Threatening", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 51)); - this.handlers.put("Woah!", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 52)); - this.handlers.put("Breathtaking", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 53)); - this.handlers.put("Bunny Hop", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 54)); - this.handlers.put("Chicken Dance", emote -> EmoteManager.sendEmote(this.mc.thePlayer.getGameProfile().getName(), 55)); - break; - case 12: - this.handlers.put("Broom", hello -> EmoteManager.sendEmote(Minecraft.getMinecraft().getSession().getUsername(), 56)); - this.handlers.put("Iceberg", hello -> EmoteManager.sendEmote(Minecraft.getMinecraft().getSession().getUsername(), 57)); - this.handlers.put("Present", hello -> EmoteManager.sendEmote(Minecraft.getMinecraft().getSession().getUsername(), 58)); - this.handlers.put("Champagne", hello -> EmoteManager.sendEmote(Minecraft.getMinecraft().getSession().getUsername(), 59)); + int index = page - 1; + int currentIndex = 0; + for(PlayerResponse.Account.Cosmetics.CosmeticItem item : Client.getInstance().getCosmetics().getMyEmotes()) { + if(currentIndex >= index) { + this.handlers.put(item.getName(), (emote) -> EmoteSocket.get().startEmote(item.getId())); + if(this.handlers.size() == 6) { + break; + } + } + currentIndex++; } } @@ -145,7 +76,6 @@ public class ScreenEmoteWheel extends SilentScreen { int centerX = resolution.getScaledWidth() / 2; super.drawScreen(mouseX, mouseY, partialTicks); this.foc = null; - this.initGui(); int count = this.handlers.size(); float radius = (float)resolution.getScaledHeight() * 2.0F / 5.0F; float i = 0.0F; diff --git a/src/main/java/net/silentclient/client/utils/types/PlayerResponse.java b/src/main/java/net/silentclient/client/utils/types/PlayerResponse.java index 05fccf0..6399af0 100644 --- a/src/main/java/net/silentclient/client/utils/types/PlayerResponse.java +++ b/src/main/java/net/silentclient/client/utils/types/PlayerResponse.java @@ -440,6 +440,7 @@ public class PlayerResponse extends AbstractReply { public ArrayList bandanas = new ArrayList(); public ArrayList hats = new ArrayList(); public ArrayList shields = new ArrayList(); + public ArrayList emotes = new ArrayList(); public ArrayList getCapes() { return capes; @@ -465,6 +466,10 @@ public class PlayerResponse extends AbstractReply { return shields; } + public ArrayList getEmotes() { + return emotes; + } + public class CosmeticItem { public int id; public String name; diff --git a/src/main/resources/assets/emoticons/models/props/basket.png b/src/main/resources/assets/emoticons/models/props/basket.png new file mode 100755 index 0000000..061ca47 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/basket.png differ diff --git a/src/main/resources/assets/emoticons/models/props/broom.png b/src/main/resources/assets/emoticons/models/props/broom.png new file mode 100755 index 0000000..76ad051 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/broom.png differ diff --git a/src/main/resources/assets/emoticons/models/props/candy_bag.png b/src/main/resources/assets/emoticons/models/props/candy_bag.png new file mode 100755 index 0000000..5f2ab01 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/candy_bag.png differ diff --git a/src/main/resources/assets/emoticons/models/props/chimney.png b/src/main/resources/assets/emoticons/models/props/chimney.png new file mode 100755 index 0000000..eec1a40 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/chimney.png differ diff --git a/src/main/resources/assets/emoticons/models/props/cloud.png b/src/main/resources/assets/emoticons/models/props/cloud.png new file mode 100755 index 0000000..e92e8c8 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/cloud.png differ diff --git a/src/main/resources/assets/emoticons/models/props/coffin.png b/src/main/resources/assets/emoticons/models/props/coffin.png new file mode 100755 index 0000000..1530b37 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/coffin.png differ diff --git a/src/main/resources/assets/emoticons/models/props/egg_bottom.png b/src/main/resources/assets/emoticons/models/props/egg_bottom.png new file mode 100755 index 0000000..be66dd8 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/egg_bottom.png differ diff --git a/src/main/resources/assets/emoticons/models/props/egg_top.png b/src/main/resources/assets/emoticons/models/props/egg_top.png new file mode 100755 index 0000000..ab20b7f Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/egg_top.png differ diff --git a/src/main/resources/assets/emoticons/models/props/football.png b/src/main/resources/assets/emoticons/models/props/football.png new file mode 100755 index 0000000..4af5946 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/football.png differ diff --git a/src/main/resources/assets/emoticons/models/props/grave.png b/src/main/resources/assets/emoticons/models/props/grave.png new file mode 100755 index 0000000..dd12158 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/grave.png differ diff --git a/src/main/resources/assets/emoticons/models/props/heart.png b/src/main/resources/assets/emoticons/models/props/heart.png new file mode 100755 index 0000000..c017b27 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/heart.png differ diff --git a/src/main/resources/assets/emoticons/models/props/hunt_gun.png b/src/main/resources/assets/emoticons/models/props/hunt_gun.png new file mode 100755 index 0000000..bf85e39 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/hunt_gun.png differ diff --git a/src/main/resources/assets/emoticons/models/props/l.png b/src/main/resources/assets/emoticons/models/props/l.png new file mode 100755 index 0000000..a38d26e Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/l.png differ diff --git a/src/main/resources/assets/emoticons/models/props/palette.png b/src/main/resources/assets/emoticons/models/props/palette.png new file mode 100755 index 0000000..fec5c3d Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/palette.png differ diff --git a/src/main/resources/assets/emoticons/models/props/party_popper_top.png b/src/main/resources/assets/emoticons/models/props/party_popper_top.png new file mode 100755 index 0000000..52ea0a6 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/party_popper_top.png differ diff --git a/src/main/resources/assets/emoticons/models/props/popcorn.png b/src/main/resources/assets/emoticons/models/props/popcorn.png new file mode 100755 index 0000000..aa46997 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/popcorn.png differ diff --git a/src/main/resources/assets/emoticons/models/props/present.png b/src/main/resources/assets/emoticons/models/props/present.png new file mode 100755 index 0000000..f5f78f6 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/present.png differ diff --git a/src/main/resources/assets/emoticons/models/props/rose.png b/src/main/resources/assets/emoticons/models/props/rose.png new file mode 100755 index 0000000..c017b27 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/rose.png differ diff --git a/src/main/resources/assets/emoticons/models/props/skates.png b/src/main/resources/assets/emoticons/models/props/skates.png new file mode 100755 index 0000000..917ad2d Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/skates.png differ diff --git a/src/main/resources/assets/emoticons/models/props/turkey.png b/src/main/resources/assets/emoticons/models/props/turkey.png new file mode 100755 index 0000000..6dd5586 Binary files /dev/null and b/src/main/resources/assets/emoticons/models/props/turkey.png differ