diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java index 97eee070b..9476bfe96 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/TranslatorsInit.java @@ -26,6 +26,7 @@ package org.geysermc.connector.network.translators; import com.github.steveice10.mc.protocol.data.game.world.effect.SoundEffect; +import com.github.steveice10.mc.protocol.data.game.world.sound.BuiltinSound; import com.github.steveice10.mc.protocol.packet.ingame.server.*; import com.github.steveice10.mc.protocol.packet.ingame.server.entity.*; import com.github.steveice10.mc.protocol.packet.ingame.server.entity.player.ServerPlayerActionAckPacket; @@ -49,6 +50,8 @@ import com.nukkitx.protocol.bedrock.packet.*; import lombok.Getter; import org.geysermc.connector.network.translators.bedrock.*; import org.geysermc.connector.network.translators.block.BlockTranslator; +import org.geysermc.connector.network.translators.effect.Sound; +import org.geysermc.connector.network.translators.effect.SoundTranslator; import org.geysermc.connector.network.translators.inventory.GenericInventoryTranslator; import org.geysermc.connector.network.translators.inventory.InventoryTranslator; import org.geysermc.connector.network.translators.item.ItemTranslator; @@ -62,6 +65,7 @@ import org.geysermc.connector.network.translators.java.scoreboard.JavaScoreboard import org.geysermc.connector.network.translators.java.scoreboard.JavaTeamTranslator; import org.geysermc.connector.network.translators.java.scoreboard.JavaUpdateScoreTranslator; import org.geysermc.connector.network.translators.java.visual.JavaBlockBreakAnimationPacketTranslator; +import org.geysermc.connector.network.translators.java.visual.JavaBuiltinSoundPacketTranslator; import org.geysermc.connector.network.translators.java.visual.JavaPlayEffectPacketTranslator; import org.geysermc.connector.network.translators.java.window.JavaOpenWindowTranslator; import org.geysermc.connector.network.translators.java.window.JavaSetSlotTranslator; @@ -70,6 +74,7 @@ import org.geysermc.connector.network.translators.java.world.*; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -87,7 +92,7 @@ public class TranslatorsInit { private static final CompoundTag EMPTY_TAG = CompoundTagBuilder.builder().buildRootTag(); public static final byte[] EMPTY_LEVEL_CHUNK_DATA; - public static final Map SOUNDS = new HashMap<>(); + public static final Map SOUNDS = new HashMap<>(); static { try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { @@ -104,6 +109,7 @@ public class TranslatorsInit { } public static void start() { + //Packets Registry.registerJava(ServerJoinGamePacket.class, new JavaJoinGameTranslator()); Registry.registerJava(ServerChatPacket.class, new JavaChatTranslator()); Registry.registerJava(ServerTitlePacket.class, new JavaTitleTranslator()); @@ -153,6 +159,7 @@ public class TranslatorsInit { Registry.registerJava(ServerPlayEffectPacket.class, new JavaPlayEffectPacketTranslator()); Registry.registerJava(ServerBlockBreakAnimPacket.class, new JavaBlockBreakAnimationPacketTranslator()); + Registry.registerJava(ServerPlayBuiltinSoundPacket.class, new JavaBuiltinSoundPacketTranslator()); Registry.registerBedrock(AnimatePacket.class, new BedrockAnimateTranslator()); Registry.registerBedrock(CommandRequestPacket.class, new BedrockCommandRequestTranslator()); @@ -168,7 +175,19 @@ public class TranslatorsInit { blockTranslator = new BlockTranslator(); registerInventoryTranslators(); - registerVisuals(); + + SoundTranslator.translate(); + + /*System.out.println(SOUNDS.toString()); + System.out.println(SOUNDS.size()); + System.out.println(Sound.values().length); + System.out.println(BuiltinSound.values().length); + + for(Sound sound : Sound.values()) { + if(!SOUNDS.containsValue(sound)) { + System.out.println(sound); + } + }*/ } private static void registerInventoryTranslators() { @@ -179,19 +198,4 @@ public class TranslatorsInit { inventoryTranslators.put(WindowType.GENERIC_9X5, new GenericInventoryTranslator()); inventoryTranslators.put(WindowType.GENERIC_9X6, new GenericInventoryTranslator());*/ } - - private static void registerVisuals() { - //TODO: add more sounds - SOUNDS.put(SoundEffect.BLOCK_ANVIL_DESTROY, LevelEventPacket.Event.SOUND_ANVIL_BREAK); - SOUNDS.put(SoundEffect.BLOCK_ANVIL_LAND, LevelEventPacket.Event.SOUND_ANVIL_FALL); - SOUNDS.put(SoundEffect.BLOCK_ANVIL_USE, LevelEventPacket.Event.SOUND_ANVIL_USE); - SOUNDS.put(SoundEffect.BLOCK_DISPENSER_DISPENSE, LevelEventPacket.Event.SOUND_CLICK); - SOUNDS.put(SoundEffect.BLOCK_DISPENSER_FAIL, LevelEventPacket.Event.SOUND_CLICK_FAIL); - SOUNDS.put(SoundEffect.BLOCK_DISPENSER_LAUNCH, LevelEventPacket.Event.SOUND_SHOOT); - SOUNDS.put(SoundEffect.ENTITY_GHAST_WARN, LevelEventPacket.Event.SOUND_GHAST); - SOUNDS.put(SoundEffect.ENTITY_GHAST_SHOOT, LevelEventPacket.Event.SOUND_GHAST_SHOOT); - SOUNDS.put(SoundEffect.BLOCK_BREWING_STAND_BREW, LevelEventPacket.Event.SOUND_FIZZ); - - //TODO: not hard coded particles - } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/effect/Sound.java b/connector/src/main/java/org/geysermc/connector/network/translators/effect/Sound.java new file mode 100644 index 000000000..bc574a3fe --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/network/translators/effect/Sound.java @@ -0,0 +1,569 @@ +package org.geysermc.connector.network.translators.effect; + +/** + * @author CreeperFace + */ +public enum Sound { + AMBIENT_WEATHER_THUNDER("ambient.weather.thunder"), + AMBIENT_WEATHER_LIGHTNING_IMPACT("ambient.weather.lightning.impact"), + AMBIENT_WEATHER_RAIN("ambient.weather.rain"), + BEACON_ACTIVATE("beacon.activate"), + BEACON_AMBIENT("beacon.ambient"), + BEACON_DEACTIVATE("beacon.deactivate"), + BEACON_POWER("beacon.power"), + BLOCK_LANTERN_BREAK("block.lantern.break"), + BLOCK_LANTERN_FALL("block.lantern.fall"), + BLOCK_LANTERN_HIT("block.lantern.hit"), + BLOCK_LANTERN_PLACE("block.lantern.place"), + BLOCK_LANTERN_STEP("block.lantern.step"), + BLOCK_BAMBOO_BREAK("block.bamboo.break"), + BLOCK_BAMBOO_FALL("block.bamboo.fall"), + BLOCK_BAMBOO_HIT("block.bamboo.hit"), + BLOCK_BAMBOO_PLACE("block.bamboo.place"), + BLOCK_BAMBOO_STEP("block.bamboo.step"), + BLOCK_BAMBOO_SAPLING_PLACE("block.bamboo_sapling.place"), + BLOCK_BAMBOO_SAPLING_BREAK("block.bamboo_sapling.break"), + BLOCK_CAMPFIRE_CRACKLE("block.campfire.crackle"), + BLOCK_BARREL_CLOSE("block.barrel.close"), + BLOCK_BARREL_OPEN("block.barrel.open"), + BLOCK_FALSE_PERMISSIONS("block.false_permissions"), + BLOCK_END_PORTAL_SPAWN("block.end_portal.spawn"), + BLOCK_END_PORTAL_FRAME_FILL("block.end_portal_frame.fill"), + BLOCK_ITEMFRAME_ADD_ITEM("block.itemframe.add_item"), + BLOCK_ITEMFRAME_BREAK("block.itemframe.break"), + BLOCK_ITEMFRAME_PLACE("block.itemframe.place"), + BLOCK_ITEMFRAME_REMOVE_ITEM("block.itemframe.remove_item"), + BLOCK_ITEMFRAME_ROTATE_ITEM("block.itemframe.rotate_item"), + BLOCK_CHORUSFLOWER_DEATH("block.chorusflower.death"), + BLOCK_CHORUSFLOWER_GROW("block.chorusflower.grow"), + BLOCK_COMPOSTER_FILL("block.composter.fill"), + BLOCK_COMPOSTER_FILL_SUCCESS("block.composter.fill_success"), + BLOCK_COMPOSTER_EMPTY("block.composter.empty"), + BLOCK_COMPOSTER_READY("block.composter.ready"), + BLOCK_LOOM_USE("block.loom.use"), + UI_LOOM_TAKE_RESULT("ui.loom.take_result"), + UI_CARTOGRAPHY_TABLE_TAKE_RESULT("ui.cartography_table.take_result"), + UI_LOOM_SELECT_PATTERN("ui.loom.select_pattern"), + BLOCK_STONECUTTER_USE("block.stonecutter.use"), + UI_STONECUTTER_TAKE_RESULT("ui.stonecutter.take_result"), + BLOCK_CARTOGRAPHY_TABLE_USE("block.cartography_table.use"), + BLOCK_GRINDSTONE_USE("block.grindstone.use"), + BLOCK_TURTLE_EGG_DROP("block.turtle_egg.drop"), + BLOCK_TURTLE_EGG_BREAK("block.turtle_egg.break"), + BLOCK_TURTLE_EGG_CRACK("block.turtle_egg.crack"), + BLOCK_SCAFFOLDING_BREAK("block.scaffolding.break"), + BLOCK_SCAFFOLDING_FALL("block.scaffolding.fall"), + BLOCK_SCAFFOLDING_HIT("block.scaffolding.hit"), + BLOCK_SCAFFOLDING_PLACE("block.scaffolding.place"), + BLOCK_SCAFFOLDING_STEP("block.scaffolding.step"), + BLOCK_SCAFFOLDING_CLIMB("block.scaffolding.climb"), + BLOCK_SWEET_BERRY_BUSH_BREAK("block.sweet_berry_bush.break"), + BLOCK_SWEET_BERRY_BUSH_PLACE("block.sweet_berry_bush.place"), + BLOCK_SWEET_BERRY_BUSH_HURT("block.sweet_berry_bush.hurt"), + BLOCK_SWEET_BERRY_BUSH_PICK("block.sweet_berry_bush.pick"), + BUCKET_EMPTY_LAVA("bucket.empty_lava"), + BUCKET_EMPTY_WATER("bucket.empty_water"), + BUCKET_FILL_LAVA("bucket.fill_lava"), + BUCKET_FILL_WATER("bucket.fill_water"), + BUCKET_FILL_FISH("bucket.fill_fish"), + BUCKET_EMPTY_FISH("bucket.empty_fish"), + BOTTLE_DRAGONBREATH("bottle.dragonbreath"), + CAULDRON_EXPLODE("cauldron.explode"), + CAULDRON_DYEARMOR("cauldron.dyearmor"), + CAULDRON_CLEANARMOR("cauldron.cleanarmor"), + CAULDRON_CLEANBANNER("cauldron.cleanbanner"), + CAULDRON_FILLPOTION("cauldron.fillpotion"), + CAULDRON_TAKEPOTION("cauldron.takepotion"), + CAULDRON_FILLWATER("cauldron.fillwater"), + CAULDRON_TAKEWATER("cauldron.takewater"), + CAULDRON_ADDDYE("cauldron.adddye"), + CONDUIT_ACTIVATE("conduit.activate"), + CONDUIT_AMBIENT("conduit.ambient"), + CONDUIT_ATTACK("conduit.attack"), + CONDUIT_DEACTIVATE("conduit.deactivate"), + CONDUIT_SHORT("conduit.short"), + CROSSBOW_LOADING_START("crossbow.loading.start"), + CROSSBOW_LOADING_MIDDLE("crossbow.loading.middle"), + CROSSBOW_LOADING_END("crossbow.loading.end"), + CROSSBOW_SHOOT("crossbow.shoot"), + CROSSBOW_QUICK_CHARGE_START("crossbow.quick_charge.start"), + CROSSBOW_QUICK_CHARGE_MIDDLE("crossbow.quick_charge.middle"), + CROSSBOW_QUICK_CHARGE_END("crossbow.quick_charge.end"), + DAMAGE_FALLBIG("damage.fallbig"), + DAMAGE_FALLSMALL("damage.fallsmall"), + ELYTRA_LOOP("elytra.loop"), + GAME_PLAYER_ATTACK_NODAMAGE("game.player.attack.nodamage"), + GAME_PLAYER_ATTACK_STRONG("game.player.attack.strong"), + GAME_PLAYER_HURT("game.player.hurt"), + GAME_PLAYER_DIE("game.player.die"), + DIG_CLOTH("dig.cloth"), + DIG_GRASS("dig.grass"), + DIG_GRAVEL("dig.gravel"), + DIG_SAND("dig.sand"), + DIG_SNOW("dig.snow"), + DIG_STONE("dig.stone"), + DIG_WOOD("dig.wood"), + TILE_PISTON_IN("tile.piston.in"), + TILE_PISTON_OUT("tile.piston.out"), + FIRE_FIRE("fire.fire"), + FIRE_IGNITE("fire.ignite"), + LEASHKNOT_BREAK("leashknot.break"), + LEASHKNOT_PLACE("leashknot.place"), + FIREWORK_BLAST("firework.blast"), + FIREWORK_LARGE_BLAST("firework.large_blast"), + FIREWORK_LAUNCH("firework.launch"), + FIREWORK_SHOOT("firework.shoot"), + FIREWORK_TWINKLE("firework.twinkle"), + ARMOR_EQUIP_CHAIN("armor.equip_chain"), + ARMOR_EQUIP_DIAMOND("armor.equip_diamond"), + ARMOR_EQUIP_GENERIC("armor.equip_generic"), + ARMOR_EQUIP_GOLD("armor.equip_gold"), + ARMOR_EQUIP_IRON("armor.equip_iron"), + ARMOR_EQUIP_LEATHER("armor.equip_leather"), + LIQUID_LAVA("liquid.lava"), + LIQUID_LAVAPOP("liquid.lavapop"), + LIQUID_WATER("liquid.water"), + BUBBLE_POP("bubble.pop"), + BUBBLE_UP("bubble.up"), + BUBBLE_UPINSIDE("bubble.upinside"), + BUBBLE_DOWN("bubble.down"), + BUBBLE_DOWNINSIDE("bubble.downinside"), + MINECART_BASE("minecart.base"), + MINECART_INSIDE("minecart.inside"), + FURNACE_LIT("furnace.lit"), + BLOCK_BLASTFURNACE_FIRE_CRACKLE("block.blastfurnace.fire_crackle"), + BLOCK_SMOKER_SMOKE("block.smoker.smoke"), + MOB_AGENT_SPAWN("mob.agent.spawn"), + MOB_ARMOR_STAND_BREAK("mob.armor_stand.break"), + MOB_ARMOR_STAND_HIT("mob.armor_stand.hit"), + MOB_ARMOR_STAND_LAND("mob.armor_stand.land"), + MOB_ARMOR_STAND_PLACE("mob.armor_stand.place"), + MOB_BAT_DEATH("mob.bat.death"), + MOB_BAT_HURT("mob.bat.hurt"), + MOB_BAT_IDLE("mob.bat.idle"), + MOB_BAT_TAKEOFF("mob.bat.takeoff"), + MOB_BLAZE_BREATHE("mob.blaze.breathe"), + MOB_BLAZE_DEATH("mob.blaze.death"), + MOB_BLAZE_HIT("mob.blaze.hit"), + MOB_BLAZE_SHOOT("mob.blaze.shoot"), + MOB_CHICKEN_HURT("mob.chicken.hurt"), + MOB_CHICKEN_PLOP("mob.chicken.plop"), + MOB_CHICKEN_SAY("mob.chicken.say"), + MOB_CHICKEN_STEP("mob.chicken.step"), + MOB_COW_HURT("mob.cow.hurt"), + MOB_COW_SAY("mob.cow.say"), + MOB_COW_STEP("mob.cow.step"), + MOB_COW_MILK("mob.cow.milk"), + MOB_CREEPER_DEATH("mob.creeper.death"), + MOB_CREEPER_SAY("mob.creeper.say"), + MOB_DOLPHIN_IDLE_WATER("mob.dolphin.idle_water"), + MOB_DOLPHIN_ATTACK("mob.dolphin.attack"), + MOB_DOLPHIN_BLOWHOLE("mob.dolphin.blowhole"), + MOB_DOLPHIN_DEATH("mob.dolphin.death"), + MOB_DOLPHIN_EAT("mob.dolphin.eat"), + MOB_DOLPHIN_HURT("mob.dolphin.hurt"), + MOB_DOLPHIN_IDLE("mob.dolphin.idle"), + MOB_DOLPHIN_JUMP("mob.dolphin.jump"), + MOB_DOLPHIN_PLAY("mob.dolphin.play"), + MOB_DOLPHIN_SPLASH("mob.dolphin.splash"), + MOB_DOLPHIN_SWIM("mob.dolphin.swim"), + MOB_DROWNED_SAY_WATER("mob.drowned.say_water"), + MOB_DROWNED_DEATH_WATER("mob.drowned.death_water"), + MOB_DROWNED_HURT_WATER("mob.drowned.hurt_water"), + MOB_DROWNED_SAY("mob.drowned.say"), + MOB_DROWNED_DEATH("mob.drowned.death"), + MOB_DROWNED_HURT("mob.drowned.hurt"), + MOB_DROWNED_SHOOT("mob.drowned.shoot"), + MOB_DROWNED_STEP("mob.drowned.step"), + MOB_DROWNED_SWIM("mob.drowned.swim"), + ENTITY_ZOMBIE_CONVERTED_TO_DROWNED("entity.zombie.converted_to_drowned"), + MOB_ENDERMEN_DEATH("mob.endermen.death"), + MOB_ENDERMEN_HIT("mob.endermen.hit"), + MOB_ENDERMEN_IDLE("mob.endermen.idle"), + MOB_ENDERMEN_PORTAL("mob.endermen.portal"), + MOB_ENDERMEN_SCREAM("mob.endermen.scream"), + MOB_ENDERMEN_STARE("mob.endermen.stare"), + MOB_ENDERDRAGON_DEATH("mob.enderdragon.death"), + MOB_ENDERDRAGON_HIT("mob.enderdragon.hit"), + MOB_ENDERDRAGON_FLAP("mob.enderdragon.flap"), + MOB_ENDERDRAGON_GROWL("mob.enderdragon.growl"), + MOB_GHAST_AFFECTIONATE_SCREAM("mob.ghast.affectionate_scream"), + MOB_GHAST_CHARGE("mob.ghast.charge"), + MOB_GHAST_DEATH("mob.ghast.death"), + MOB_GHAST_FIREBALL("mob.ghast.fireball"), + MOB_GHAST_MOAN("mob.ghast.moan"), + MOB_GHAST_SCREAM("mob.ghast.scream"), + MOB_GUARDIAN_AMBIENT("mob.guardian.ambient"), + MOB_GUARDIAN_ATTACK_LOOP("mob.guardian.attack_loop"), + MOB_ELDERGUARDIAN_CURSE("mob.elderguardian.curse"), + MOB_ELDERGUARDIAN_DEATH("mob.elderguardian.death"), + MOB_ELDERGUARDIAN_HIT("mob.elderguardian.hit"), + MOB_ELDERGUARDIAN_IDLE("mob.elderguardian.idle"), + MOB_GUARDIAN_FLOP("mob.guardian.flop"), + MOB_GUARDIAN_DEATH("mob.guardian.death"), + MOB_GUARDIAN_HIT("mob.guardian.hit"), + MOB_GUARDIAN_LAND_DEATH("mob.guardian.land_death"), + MOB_GUARDIAN_LAND_HIT("mob.guardian.land_hit"), + MOB_GUARDIAN_LAND_IDLE("mob.guardian.land_idle"), + MOB_FISH_FLOP("mob.fish.flop"), + MOB_FISH_HURT("mob.fish.hurt"), + MOB_FISH_STEP("mob.fish.step"), + MOB_LLAMA_ANGRY("mob.llama.angry"), + MOB_LLAMA_DEATH("mob.llama.death"), + MOB_LLAMA_IDLE("mob.llama.idle"), + MOB_LLAMA_SPIT("mob.llama.spit"), + MOB_LLAMA_HURT("mob.llama.hurt"), + MOB_LLAMA_EAT("mob.llama.eat"), + MOB_LLAMA_STEP("mob.llama.step"), + MOB_LLAMA_SWAG("mob.llama.swag"), + MOB_HORSE_ANGRY("mob.horse.angry"), + MOB_HORSE_ARMOR("mob.horse.armor"), + MOB_HORSE_BREATHE("mob.horse.breathe"), + MOB_HORSE_DEATH("mob.horse.death"), + MOB_HORSE_DONKEY_ANGRY("mob.horse.donkey.angry"), + MOB_HORSE_DONKEY_DEATH("mob.horse.donkey.death"), + MOB_HORSE_DONKEY_HIT("mob.horse.donkey.hit"), + MOB_HORSE_DONKEY_IDLE("mob.horse.donkey.idle"), + MOB_HORSE_EAT("mob.horse.eat"), + MOB_HORSE_GALLOP("mob.horse.gallop"), + MOB_HORSE_HIT("mob.horse.hit"), + MOB_HORSE_IDLE("mob.horse.idle"), + MOB_HORSE_JUMP("mob.horse.jump"), + MOB_HORSE_LAND("mob.horse.land"), + MOB_HORSE_LEATHER("mob.horse.leather"), + MOB_HORSE_SKELETON_DEATH("mob.horse.skeleton.death"), + MOB_HORSE_SKELETON_HIT("mob.horse.skeleton.hit"), + MOB_HORSE_SKELETON_IDLE("mob.horse.skeleton.idle"), + MOB_HORSE_SOFT("mob.horse.soft"), + MOB_HORSE_WOOD("mob.horse.wood"), + MOB_HORSE_ZOMBIE_DEATH("mob.horse.zombie.death"), + MOB_HORSE_ZOMBIE_HIT("mob.horse.zombie.hit"), + MOB_HORSE_ZOMBIE_IDLE("mob.horse.zombie.idle"), + MOB_HUSK_AMBIENT("mob.husk.ambient"), + MOB_HUSK_DEATH("mob.husk.death"), + MOB_HUSK_HURT("mob.husk.hurt"), + MOB_HUSK_STEP("mob.husk.step"), + MOB_RAVAGER_AMBIENT("mob.ravager.ambient"), + MOB_RAVAGER_BITE("mob.ravager.bite"), + MOB_RAVAGER_DEATH("mob.ravager.death"), + MOB_RAVAGER_HURT("mob.ravager.hurt"), + MOB_RAVAGER_ROAR("mob.ravager.roar"), + MOB_RAVAGER_STEP("mob.ravager.step"), + MOB_RAVAGER_STUN("mob.ravager.stun"), + MOB_IRONGOLEM_THROW("mob.irongolem.throw"), + MOB_IRONGOLEM_DEATH("mob.irongolem.death"), + MOB_IRONGOLEM_HIT("mob.irongolem.hit"), + MOB_IRONGOLEM_WALK("mob.irongolem.walk"), + MOB_SHULKER_AMBIENT("mob.shulker.ambient"), + MOB_SHULKER_CLOSE("mob.shulker.close"), + MOB_SHULKER_DEATH("mob.shulker.death"), + MOB_SHULKER_CLOSE_HURT("mob.shulker.close.hurt"), + MOB_SHULKER_HURT("mob.shulker.hurt"), + MOB_SHULKER_OPEN("mob.shulker.open"), + MOB_SHULKER_SHOOT("mob.shulker.shoot"), + MOB_SHULKER_TELEPORT("mob.shulker.teleport"), + MOB_SHULKER_BULLET_HIT("mob.shulker.bullet.hit"), + MOB_MAGMACUBE_BIG("mob.magmacube.big"), + MOB_MAGMACUBE_JUMP("mob.magmacube.jump"), + MOB_MAGMACUBE_SMALL("mob.magmacube.small"), + MOB_PARROT_IDLE("mob.parrot.idle"), + MOB_PARROT_HURT("mob.parrot.hurt"), + MOB_PARROT_DEATH("mob.parrot.death"), + MOB_PARROT_STEP("mob.parrot.step"), + MOB_PARROT_EAT("mob.parrot.eat"), + MOB_PARROT_FLY("mob.parrot.fly"), + MOB_PHANTOM_BITE("mob.phantom.bite"), + MOB_PHANTOM_DEATH("mob.phantom.death"), + MOB_PHANTOM_HURT("mob.phantom.hurt"), + MOB_PHANTOM_IDLE("mob.phantom.idle"), + MOB_PHANTOM_SWOOP("mob.phantom.swoop"), + MOB_PIG_DEATH("mob.pig.death"), + MOB_PIG_BOOST("mob.pig.boost"), + MOB_PIG_SAY("mob.pig.say"), + MOB_PIG_STEP("mob.pig.step"), + MOB_PILLAGER_DEATH("mob.pillager.death"), + MOB_PILLAGER_HURT("mob.pillager.hurt"), + MOB_PILLAGER_IDLE("mob.pillager.idle"), + MOB_RABBIT_HURT("mob.rabbit.hurt"), + MOB_RABBIT_IDLE("mob.rabbit.idle"), + MOB_RABBIT_HOP("mob.rabbit.hop"), + MOB_RABBIT_DEATH("mob.rabbit.death"), + MOB_SHEEP_SAY("mob.sheep.say"), + MOB_SHEEP_SHEAR("mob.sheep.shear"), + MOB_SHEEP_STEP("mob.sheep.step"), + MOB_SILVERFISH_HIT("mob.silverfish.hit"), + MOB_SILVERFISH_KILL("mob.silverfish.kill"), + MOB_SILVERFISH_SAY("mob.silverfish.say"), + MOB_SILVERFISH_STEP("mob.silverfish.step"), + MOB_ENDERMITE_HIT("mob.endermite.hit"), + MOB_ENDERMITE_KILL("mob.endermite.kill"), + MOB_ENDERMITE_SAY("mob.endermite.say"), + MOB_ENDERMITE_STEP("mob.endermite.step"), + MOB_SKELETON_DEATH("mob.skeleton.death"), + MOB_SKELETON_HURT("mob.skeleton.hurt"), + MOB_SKELETON_SAY("mob.skeleton.say"), + MOB_SKELETON_STEP("mob.skeleton.step"), + MOB_SLIME_BIG("mob.slime.big"), + MOB_SLIME_SMALL("mob.slime.small"), + MOB_SLIME_ATTACK("mob.slime.attack"), + MOB_SLIME_DEATH("mob.slime.death"), + MOB_SLIME_HURT("mob.slime.hurt"), + MOB_SLIME_JUMP("mob.slime.jump"), + MOB_SLIME_SQUISH("mob.slime.squish"), + MOB_SNOWGOLEM_DEATH("mob.snowgolem.death"), + MOB_SNOWGOLEM_HURT("mob.snowgolem.hurt"), + MOB_SNOWGOLEM_SHOOT("mob.snowgolem.shoot"), + MOB_SPIDER_DEATH("mob.spider.death"), + MOB_SPIDER_SAY("mob.spider.say"), + MOB_SPIDER_STEP("mob.spider.step"), + MOB_SQUID_AMBIENT("mob.squid.ambient"), + MOB_SQUID_DEATH("mob.squid.death"), + MOB_SQUID_HURT("mob.squid.hurt"), + MOB_TURTLE_AMBIENT("mob.turtle.ambient"), + MOB_TURTLE_BABY_BORN("mob.turtle_baby.born"), + MOB_TURTLE_DEATH("mob.turtle.death"), + MOB_TURTLE_BABY_DEATH("mob.turtle_baby.death"), + MOB_TURTLE_HURT("mob.turtle.hurt"), + MOB_TURTLE_BABY_HURT("mob.turtle_baby.hurt"), + MOB_TURTLE_STEP("mob.turtle.step"), + MOB_TURTLE_BABY_STEP("mob.turtle_baby.step"), + MOB_TURTLE_SWIM("mob.turtle.swim"), + MOB_STRAY_AMBIENT("mob.stray.ambient"), + MOB_STRAY_DEATH("mob.stray.death"), + MOB_STRAY_HURT("mob.stray.hurt"), + MOB_STRAY_STEP("mob.stray.step"), + MOB_VILLAGER_DEATH("mob.villager.death"), + MOB_VILLAGER_HAGGLE("mob.villager.haggle"), + MOB_VILLAGER_HIT("mob.villager.hit"), + MOB_VILLAGER_IDLE("mob.villager.idle"), + MOB_VILLAGER_NO("mob.villager.no"), + MOB_VILLAGER_YES("mob.villager.yes"), + MOB_VINDICATOR_DEATH("mob.vindicator.death"), + MOB_VINDICATOR_HURT("mob.vindicator.hurt"), + MOB_VINDICATOR_IDLE("mob.vindicator.idle"), + MOB_EVOCATION_FANGS_ATTACK("mob.evocation_fangs.attack"), + MOB_EVOCATION_ILLAGER_AMBIENT("mob.evocation_illager.ambient"), + MOB_EVOCATION_ILLAGER_CAST_SPELL("mob.evocation_illager.cast_spell"), + MOB_EVOCATION_ILLAGER_DEATH("mob.evocation_illager.death"), + MOB_EVOCATION_ILLAGER_HURT("mob.evocation_illager.hurt"), + MOB_EVOCATION_ILLAGER_PREPARE_ATTACK("mob.evocation_illager.prepare_attack"), + MOB_EVOCATION_ILLAGER_PREPARE_SUMMON("mob.evocation_illager.prepare_summon"), + MOB_EVOCATION_ILLAGER_PREPARE_WOLOLO("mob.evocation_illager.prepare_wololo"), + MOB_VEX_AMBIENT("mob.vex.ambient"), + MOB_VEX_DEATH("mob.vex.death"), + MOB_VEX_HURT("mob.vex.hurt"), + MOB_VEX_CHARGE("mob.vex.charge"), + ITEM_BOOK_PAGE_TURN("item.book.page_turn"), + ITEM_BOOK_PUT("item.book.put"), + BLOCK_BELL_HIT("block.bell.hit"), + ITEM_TRIDENT_HIT_GROUND("item.trident.hit_ground"), + ITEM_TRIDENT_HIT("item.trident.hit"), + ITEM_TRIDENT_RETURN("item.trident.return"), + ITEM_TRIDENT_RIPTIDE_1("item.trident.riptide_1"), + ITEM_TRIDENT_RIPTIDE_2("item.trident.riptide_2"), + ITEM_TRIDENT_RIPTIDE_3("item.trident.riptide_3"), + ITEM_TRIDENT_THROW("item.trident.throw"), + ITEM_TRIDENT_THUNDER("item.trident.thunder"), + ITEM_SHIELD_BLOCK("item.shield.block"), + MOB_WANDERINGTRADER_IDLE("mob.wanderingtrader.idle"), + MOB_WANDERINGTRADER_DEATH("mob.wanderingtrader.death"), + MOB_WANDERINGTRADER_DISAPPEARED("mob.wanderingtrader.disappeared"), + MOB_WANDERINGTRADER_DRINK_MILK("mob.wanderingtrader.drink_milk"), + MOB_WANDERINGTRADER_DRINK_POTION("mob.wanderingtrader.drink_potion"), + MOB_WANDERINGTRADER_HAGGLE("mob.wanderingtrader.haggle"), + MOB_WANDERINGTRADER_YES("mob.wanderingtrader.yes"), + MOB_WANDERINGTRADER_NO("mob.wanderingtrader.no"), + MOB_WANDERINGTRADER_HURT("mob.wanderingtrader.hurt"), + MOB_WANDERINGTRADER_REAPPEARED("mob.wanderingtrader.reappeared"), + MOB_WITCH_AMBIENT("mob.witch.ambient"), + MOB_WITCH_DEATH("mob.witch.death"), + MOB_WITCH_HURT("mob.witch.hurt"), + MOB_WITCH_DRINK("mob.witch.drink"), + MOB_WITCH_THROW("mob.witch.throw"), + MOB_WITHER_AMBIENT("mob.wither.ambient"), + MOB_WITHER_BREAK_BLOCK("mob.wither.break_block"), + MOB_WITHER_DEATH("mob.wither.death"), + MOB_WITHER_HURT("mob.wither.hurt"), + MOB_WITHER_SHOOT("mob.wither.shoot"), + MOB_WITHER_SPAWN("mob.wither.spawn"), + MOB_WOLF_BARK("mob.wolf.bark"), + MOB_WOLF_DEATH("mob.wolf.death"), + MOB_WOLF_GROWL("mob.wolf.growl"), + MOB_WOLF_HURT("mob.wolf.hurt"), + MOB_WOLF_PANTING("mob.wolf.panting"), + MOB_WOLF_SHAKE("mob.wolf.shake"), + MOB_WOLF_STEP("mob.wolf.step"), + MOB_WOLF_WHINE("mob.wolf.whine"), + MOB_OCELOT_IDLE("mob.ocelot.idle"), + MOB_OCELOT_DEATH("mob.ocelot.death"), + MOB_CAT_EAT("mob.cat.eat"), + MOB_CAT_HISS("mob.cat.hiss"), + MOB_CAT_HIT("mob.cat.hit"), + MOB_CAT_MEOW("mob.cat.meow"), + MOB_CAT_BEG("mob.cat.beg"), + MOB_CAT_STRAYMEOW("mob.cat.straymeow"), + MOB_CAT_PURR("mob.cat.purr"), + MOB_CAT_PURREOW("mob.cat.purreow"), + MOB_POLARBEAR_BABY_IDLE("mob.polarbear_baby.idle"), + MOB_POLARBEAR_IDLE("mob.polarbear.idle"), + MOB_POLARBEAR_STEP("mob.polarbear.step"), + MOB_POLARBEAR_WARNING("mob.polarbear.warning"), + MOB_POLARBEAR_HURT("mob.polarbear.hurt"), + MOB_POLARBEAR_DEATH("mob.polarbear.death"), + MOB_PANDA_BABY_IDLE("mob.panda_baby.idle"), + MOB_PANDA_IDLE("mob.panda.idle"), + MOB_PANDA_IDLE_AGGRESSIVE("mob.panda.idle.aggressive"), + MOB_PANDA_IDLE_WORRIED("mob.panda.idle.worried"), + MOB_PANDA_STEP("mob.panda.step"), + MOB_PANDA_PRESNEEZE("mob.panda.presneeze"), + MOB_PANDA_SNEEZE("mob.panda.sneeze"), + MOB_PANDA_HURT("mob.panda.hurt"), + MOB_PANDA_DEATH("mob.panda.death"), + MOB_PANDA_BITE("mob.panda.bite"), + MOB_PANDA_EAT("mob.panda.eat"), + MOB_PANDA_CANT_BREED("mob.panda.cant_breed"), + MOB_ZOMBIE_DEATH("mob.zombie.death"), + MOB_ZOMBIE_HURT("mob.zombie.hurt"), + MOB_ZOMBIE_REMEDY("mob.zombie.remedy"), + MOB_ZOMBIE_UNFECT("mob.zombie.unfect"), + MOB_ZOMBIE_SAY("mob.zombie.say"), + MOB_ZOMBIE_STEP("mob.zombie.step"), + MOB_ZOMBIE_WOOD("mob.zombie.wood"), + MOB_ZOMBIE_WOODBREAK("mob.zombie.woodbreak"), + MOB_ZOMBIEPIG_ZPIG("mob.zombiepig.zpig"), + MOB_ZOMBIEPIG_ZPIGANGRY("mob.zombiepig.zpigangry"), + MOB_ZOMBIEPIG_ZPIGDEATH("mob.zombiepig.zpigdeath"), + MOB_ZOMBIEPIG_ZPIGHURT("mob.zombiepig.zpighurt"), + MOB_ZOMBIE_VILLAGER_SAY("mob.zombie_villager.say"), + MOB_ZOMBIE_VILLAGER_DEATH("mob.zombie_villager.death"), + MOB_ZOMBIE_VILLAGER_HURT("mob.zombie_villager.hurt"), + NOTE_BASS("note.bass"), + NOTE_BASSATTACK("note.bassattack"), + NOTE_BD("note.bd"), + NOTE_HARP("note.harp"), + NOTE_HAT("note.hat"), + NOTE_PLING("note.pling"), + NOTE_SNARE("note.snare"), + PORTAL_PORTAL("portal.portal"), + PORTAL_TRAVEL("portal.travel"), + PORTAL_TRIGGER("portal.trigger"), + RANDOM_ANVIL_BREAK("random.anvil_break"), + RANDOM_ANVIL_LAND("random.anvil_land"), + RANDOM_ANVIL_USE("random.anvil_use"), + RANDOM_BOW("random.bow"), + RANDOM_BOWHIT("random.bowhit"), + RANDOM_BREAK("random.break"), + RANDOM_BURP("random.burp"), + RANDOM_CHESTCLOSED("random.chestclosed"), + RANDOM_CHESTOPEN("random.chestopen"), + RANDOM_SHULKERBOXCLOSED("random.shulkerboxclosed"), + RANDOM_SHULKERBOXOPEN("random.shulkerboxopen"), + RANDOM_ENDERCHESTOPEN("random.enderchestopen"), + RANDOM_ENDERCHESTCLOSED("random.enderchestclosed"), + RANDOM_POTION_BREWED("random.potion.brewed"), + RANDOM_CLICK("random.click"), + RANDOM_DOOR_CLOSE("random.door_close"), + RANDOM_DOOR_OPEN("random.door_open"), + RANDOM_DRINK("random.drink"), + RANDOM_EAT("random.eat"), + RANDOM_EXPLODE("random.explode"), + RANDOM_FIZZ("random.fizz"), + RANDOM_FUSE("random.fuse"), + RANDOM_GLASS("random.glass"), + RANDOM_LEVELUP("random.levelup"), + RANDOM_ORB("random.orb"), + RANDOM_POP("random.pop"), + RANDOM_POP2("random.pop2"), + RANDOM_SCREENSHOT("random.screenshot"), + RANDOM_SPLASH("random.splash"), + RANDOM_SWIM("random.swim"), + RANDOM_HURT("random.hurt"), + RANDOM_TOAST("random.toast"), + RANDOM_TOTEM("random.totem"), + CAMERA_TAKE_PICTURE("camera.take_picture"), + USE_LADDER("use.ladder"), + HIT_LADDER("hit.ladder"), + FALL_LADDER("fall.ladder"), + STEP_LADDER("step.ladder"), + USE_CLOTH("use.cloth"), + HIT_CLOTH("hit.cloth"), + FALL_CLOTH("fall.cloth"), + STEP_CLOTH("step.cloth"), + USE_GRASS("use.grass"), + HIT_GRASS("hit.grass"), + FALL_GRASS("fall.grass"), + STEP_GRASS("step.grass"), + USE_GRAVEL("use.gravel"), + HIT_GRAVEL("hit.gravel"), + FALL_GRAVEL("fall.gravel"), + STEP_GRAVEL("step.gravel"), + USE_SAND("use.sand"), + HIT_SAND("hit.sand"), + FALL_SAND("fall.sand"), + STEP_SAND("step.sand"), + USE_SLIME("use.slime"), + HIT_SLIME("hit.slime"), + FALL_SLIME("fall.slime"), + STEP_SLIME("step.slime"), + USE_SNOW("use.snow"), + HIT_SNOW("hit.snow"), + FALL_SNOW("fall.snow"), + STEP_SNOW("step.snow"), + USE_STONE("use.stone"), + HIT_STONE("hit.stone"), + FALL_STONE("fall.stone"), + FALL_EGG("fall.egg"), + STEP_STONE("step.stone"), + USE_WOOD("use.wood"), + HIT_WOOD("hit.wood"), + FALL_WOOD("fall.wood"), + STEP_WOOD("step.wood"), + JUMP_CLOTH("jump.cloth"), + JUMP_GRASS("jump.grass"), + JUMP_GRAVEL("jump.gravel"), + JUMP_SAND("jump.sand"), + JUMP_SNOW("jump.snow"), + JUMP_STONE("jump.stone"), + JUMP_WOOD("jump.wood"), + JUMP_SLIME("jump.slime"), + LAND_CLOTH("land.cloth"), + LAND_GRASS("land.grass"), + LAND_GRAVEL("land.gravel"), + LAND_SAND("land.sand"), + LAND_SNOW("land.snow"), + LAND_STONE("land.stone"), + LAND_WOOD("land.wood"), + LAND_SLIME("land.slime"), + VR_STUTTERTURN("vr.stutterturn"), + RECORD_13("record.13"), + RECORD_CAT("record.cat"), + RECORD_BLOCKS("record.blocks"), + RECORD_CHIRP("record.chirp"), + RECORD_FAR("record.far"), + RECORD_MALL("record.mall"), + RECORD_MELLOHI("record.mellohi"), + RECORD_STAL("record.stal"), + RECORD_STRAD("record.strad"), + RECORD_WARD("record.ward"), + RECORD_11("record.11"), + RECORD_WAIT("record.wait"), + RAID_HORN("raid.horn"), + MUSIC_MENU("music.menu"), + MUSIC_GAME("music.game"), + MUSIC_GAME_CREATIVE("music.game.creative"), + MUSIC_GAME_END("music.game.end"), + MUSIC_GAME_ENDBOSS("music.game.endboss"), + MUSIC_GAME_NETHER("music.game.nether"), + MUSIC_GAME_CREDITS("music.game.credits"); + + private final String sound; + + Sound(String sound) { + this.sound = sound; + } + + public String getSound() { + return this.sound; + } +} + diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/effect/SoundTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/effect/SoundTranslator.java new file mode 100644 index 000000000..4ca011f2e --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/network/translators/effect/SoundTranslator.java @@ -0,0 +1,56 @@ +package org.geysermc.connector.network.translators.effect; + +import com.github.steveice10.mc.protocol.data.game.world.sound.BuiltinSound; +import org.geysermc.connector.network.translators.TranslatorsInit; + +public class SoundTranslator { + private static final String[] BLOCK_OPS = {"BREAK", "HIT", "USE", "STEP", "FALL"}; + + public static void translate() { + for(BuiltinSound jSound : BuiltinSound.values()) { + try { + for(Sound bSound : Sound.values()) { + if(converted(jSound.name(), true).equalsIgnoreCase(converted(bSound.name(), false))) { + TranslatorsInit.SOUNDS.put(jSound, bSound); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private static String converted(String string, boolean java) { + if(java && string.contains("BLOCK")) { + for (String blockOp : BLOCK_OPS) { + if (string.endsWith(blockOp)) { + string = blockOp + string.replace(blockOp, ""); + System.out.println(string); + } + } + } + + string = string.replaceAll("_", "") + .replaceAll("RANDOM", "") + .replaceAll("MUSICDISC", "RECORD") + .replaceAll("BLOCK", "") + .replaceAll("ENTITY", "") + .replaceAll("EVENT", "") + .replaceAll("GAME", "") + .replaceAll("EVOCATIONILLAGER", "EVOKER") + .replaceAll("MOB", "") + .replaceAll("BREAK", "DIG") + .replaceAll("WOOL", "CLOTH") + .replaceAll("FALL", "LAND") + .replaceAll("IDLE", "AMBIENT") + .replaceAll("HURT", "HIT") + .replaceAll("ENDERMEN", "ENDERMAN") + .replaceAll("KILL", "DEATH") + .replaceAll("ITEM", "") + .replaceAll("HORSEDONKEY", "DONKEY") + .replaceAll("HORSESKELETON", "SKELETONHORSE") + .replaceAll("HORSEZOMBIE", "ZOMBIEHORSE"); + + return string; + } +} diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java index b8d56ccff..9954bde90 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java @@ -51,6 +51,18 @@ import java.util.List; import java.util.Map; public class ItemTranslator { + public static final byte TAG_End = 0; + public static final byte TAG_Byte = 1; + public static final byte TAG_Short = 2; + public static final byte TAG_Int = 3; + public static final byte TAG_Long = 4; + public static final byte TAG_Float = 5; + public static final byte TAG_Double = 6; + public static final byte TAG_Byte_Array = 7; + public static final byte TAG_String = 8; + public static final byte TAG_List = 9; + public static final byte TAG_Compound = 10; + public static final byte TAG_Int_Array = 11; public ItemStack translateToJava(ItemData data) { ItemEntry javaItem = getItem(data); @@ -89,7 +101,7 @@ public class ItemTranslator { return ItemEntry.AIR; } - private CompoundTag translateToJavaNBT(com.nukkitx.nbt.tag.CompoundTag tag) { + public CompoundTag translateToJavaNBT(com.nukkitx.nbt.tag.CompoundTag tag) { CompoundTag javaTag = new CompoundTag(tag.getName()); Map javaValue = javaTag.getValue(); if (tag.getValue() != null && !tag.getValue().isEmpty()) { @@ -106,7 +118,7 @@ public class ItemTranslator { return javaTag; } - private Tag translateToJavaNBT(com.nukkitx.nbt.tag.Tag tag) { + public Tag translateToJavaNBT(com.nukkitx.nbt.tag.Tag tag) { if (tag instanceof com.nukkitx.nbt.tag.ByteArrayTag) { com.nukkitx.nbt.tag.ByteArrayTag byteArrayTag = (com.nukkitx.nbt.tag.ByteArrayTag) tag; return new ByteArrayTag(byteArrayTag.getName(), byteArrayTag.getValue()); @@ -180,7 +192,7 @@ public class ItemTranslator { return null; } - private com.nukkitx.nbt.tag.CompoundTag translateToBedrockNBT(CompoundTag tag) { + public com.nukkitx.nbt.tag.CompoundTag translateToBedrockNBT(CompoundTag tag) { Map> javaValue = new HashMap>(); if (tag.getValue() != null && !tag.getValue().isEmpty()) { for (String str : tag.getValue().keySet()) { @@ -197,7 +209,7 @@ public class ItemTranslator { return bedrockTag; } - private com.nukkitx.nbt.tag.Tag translateToBedrockNBT(Tag tag) { + public com.nukkitx.nbt.tag.Tag translateToBedrockNBT(Tag tag) { if (tag instanceof ByteArrayTag) { ByteArrayTag byteArrayTag = (ByteArrayTag) tag; return new com.nukkitx.nbt.tag.ByteArrayTag(byteArrayTag.getName(), byteArrayTag.getValue()); @@ -270,4 +282,41 @@ public class ItemTranslator { return null; } + + public byte getType(com.nukkitx.nbt.tag.Tag tag) { + if (tag instanceof com.nukkitx.nbt.tag.ByteArrayTag) { + return TAG_Byte_Array; + } + if (tag instanceof com.nukkitx.nbt.tag.ByteTag) { + return TAG_Byte; + } + if (tag instanceof com.nukkitx.nbt.tag.DoubleTag) { + return TAG_Double; + } + if (tag instanceof com.nukkitx.nbt.tag.FloatTag) { + return TAG_Float; + } + if (tag instanceof com.nukkitx.nbt.tag.IntArrayTag) { + return TAG_Int_Array; + } + if (tag instanceof com.nukkitx.nbt.tag.IntTag) { + return TAG_Int; + } + if (tag instanceof com.nukkitx.nbt.tag.LongTag) { + return TAG_Long; + } + if (tag instanceof com.nukkitx.nbt.tag.ShortTag) { + return TAG_Short; + } + if (tag instanceof com.nukkitx.nbt.tag.StringTag) { + return TAG_String; + } + if (tag instanceof com.nukkitx.nbt.tag.ListTag) { + return TAG_List; + } + if (tag instanceof com.nukkitx.nbt.tag.CompoundTag) { + return TAG_Compound; + } + return 0; + } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaBlockBreakAnimationPacketTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaBlockBreakAnimationPacketTranslator.java index 72cbfc563..3ea4f4e57 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaBlockBreakAnimationPacketTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaBlockBreakAnimationPacketTranslator.java @@ -17,12 +17,9 @@ public class JavaBlockBreakAnimationPacketTranslator extends PacketTranslator { + @Override + public void translate(ServerPlayBuiltinSoundPacket packet, GeyserSession session) { + PlaySoundPacket packet1 = new PlaySoundPacket(); + + packet1.setPitch(packet.getPitch()); + packet1.setVolume(packet.getVolume()); + packet1.setPosition(Vector3f.from(packet.getX(), packet.getY(), packet.getZ())); + packet1.setSound(TranslatorsInit.SOUNDS.get(packet.getSound()).getSound()); + + session.getUpstream().sendPacketImmediately(packet1); + } +} diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaPlayEffectPacketTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaPlayEffectPacketTranslator.java index 51e2b72b2..7cfe2f124 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaPlayEffectPacketTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/visual/JavaPlayEffectPacketTranslator.java @@ -16,48 +16,6 @@ public class JavaPlayEffectPacketTranslator extends PacketTranslator