This commit is contained in:
EOT3000 2019-11-10 12:35:07 -05:00
parent 5f3476172e
commit 27a73cfcde
8 changed files with 766 additions and 74 deletions

View file

@ -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<SoundEffect, LevelEventPacket.Event> SOUNDS = new HashMap<>();
public static final Map<BuiltinSound, Sound> 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
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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<String, Tag> 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<String, com.nukkitx.nbt.tag.Tag<?>> javaValue = new HashMap<String, com.nukkitx.nbt.tag.Tag<?>>();
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;
}
}

View file

@ -17,12 +17,9 @@ public class JavaBlockBreakAnimationPacketTranslator extends PacketTranslator<Se
levelEventPacket.setPosition(Vector3f.from(position.getX(), position.getY(), position.getZ()));
System.out.println(packet.getStage());
switch (packet.getStage()) {
case STAGE_1:
levelEventPacket.setEvent(LevelEventPacket.Event.BLOCK_START_BREAK);
break;
case RESET:
@ -33,12 +30,10 @@ public class JavaBlockBreakAnimationPacketTranslator extends PacketTranslator<Se
levelEventPacket.setEvent(LevelEventPacket.Event.BLOCK_CONTINUE_BREAK);
break;
}
if(packet.getStage() != BlockBreakStage.RESET) {
levelEventPacket.setData(packet.getStage().ordinal());
}
session.getUpstream().sendPacket(levelEventPacket);
}
}

View file

@ -0,0 +1,22 @@
package org.geysermc.connector.network.translators.java.visual;
import com.github.steveice10.mc.protocol.packet.ingame.server.world.ServerPlayBuiltinSoundPacket;
import com.nukkitx.math.vector.Vector3f;
import com.nukkitx.protocol.bedrock.packet.PlaySoundPacket;
import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.network.translators.PacketTranslator;
import org.geysermc.connector.network.translators.TranslatorsInit;
public class JavaBuiltinSoundPacketTranslator extends PacketTranslator<ServerPlayBuiltinSoundPacket> {
@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);
}
}

View file

@ -16,48 +16,6 @@ public class JavaPlayEffectPacketTranslator extends PacketTranslator<ServerPlayE
public void translate(ServerPlayEffectPacket packet, GeyserSession session) {
LevelEventPacket levelEventPacket = new LevelEventPacket();
if(packet.getEffect() instanceof ParticleEffect) {
ParticleEffect particleEffect = (ParticleEffect) packet.getEffect();
levelEventPacket.setEvent(LevelEventPacket.Event.PARTICLE_SPAWN);
Position pos = packet.getPosition();
levelEventPacket.setPosition(Vector3f.from(pos.getX(), pos.getY(), pos.getZ()));
//System.out.println(particleEffect);
//TODO: Not hard coded
switch (particleEffect) {
case SMOKE:
levelEventPacket.setData(Particle.SMOKE);
break;
case EXPLOSION:
levelEventPacket.setData(Particle.EXPLODE);
break;
case ENDERDRAGON_FIREBALL_EXPLODE:
levelEventPacket.setData(Particle.DRAGONS_BREATH);
break;
}
}
if(packet.getEffect() instanceof SoundEffect) {
SoundEffect soundEffect = (SoundEffect) packet.getEffect();
Position pos = packet.getPosition();
levelEventPacket.setPosition(Vector3f.from(pos.getX(), pos.getY(), pos.getZ()));
levelEventPacket.setEvent(TranslatorsInit.SOUNDS.get(soundEffect));
if(levelEventPacket.getEvent() == null) {
levelEventPacket.setData(5);
levelEventPacket.setEvent(LevelEventPacket.Event.BLOCK_START_BREAK);
}
}
session.getUpstream().sendPacketImmediately(levelEventPacket);
//session.getUpstream().sendPacketImmediately(levelEventPacket);
}
}

View file

@ -4,11 +4,24 @@ import com.github.steveice10.mc.protocol.data.game.chunk.Chunk;
import com.github.steveice10.mc.protocol.data.game.chunk.Column;
import com.github.steveice10.mc.protocol.data.game.world.block.BlockState;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.nukkitx.nbt.NbtUtils;
import com.nukkitx.nbt.stream.NBTOutputStream;
import com.nukkitx.nbt.tag.Tag;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import it.unimi.dsi.fastutil.io.FastByteArrayInputStream;
import org.geysermc.connector.network.translators.TranslatorsInit;
import org.geysermc.connector.network.translators.block.BlockEntry;
import org.geysermc.connector.network.translators.item.ItemEntry;
import org.geysermc.connector.network.translators.item.ItemTranslator;
import org.geysermc.connector.world.BiomePalette;
import org.geysermc.connector.world.chunk.ChunkSection;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class ChunkUtils {
public static ChunkData translateToBedrock(Column column) {
@ -23,6 +36,7 @@ public class ChunkUtils {
int[] biomesConverted = new int[256];
try {
System.out.println(column.getTileEntities()[0]);
for (int biomeX = 0; biomeX < 16; biomeX++) {
for (int biomeZ = 0; biomeZ < 16; biomeZ++) {
biomesConverted[(biomeX << 4) | biomeZ] = column.getBiomeData()[(biomeZ * 4) | biomeX];
@ -36,13 +50,24 @@ public class ChunkUtils {
chunkData.biomes[(biomeX << 4) | biomeZ] = (byte) (palette.get(biomeX, biomeZ));
}
}
} catch (Exception e) {}
for(CompoundTag tag : column.getTileEntities()) {
//TODO: Tiles
//System.out.println(tag.toString());
} catch (Exception e) {
//Means there is no chunk data. Was creating the problem of empty chunks, so...
}
/*ByteBuf buf = Unpooled.buffer();
for(CompoundTag tag : column.getTileEntities()) {
ItemTranslator translator = TranslatorsInit.getItemTranslator();
try {
writeNamedTag(translator.translateToBedrockNBT(tag), buf);
} catch (IOException e) {
e.printStackTrace();
}
}
buf.release();*/
//chunkData.blockEntities = blockEntities;
for (int chunkY = 0; chunkY < chunkSectionCount; chunkY++) {
chunkData.sections[chunkY] = new ChunkSection();
Chunk chunk = chunks[chunkY];
@ -72,6 +97,20 @@ public class ChunkUtils {
return chunkData;
}
private static ByteBuf writeNamedTag(Tag tag, ByteBuf buf) throws IOException {
NBTOutputStream stream = NbtUtils.createNetworkWriter(new OutputStream() {
@Override
public void write(int b) {
buf.writeByte(b);
}
});
stream.write(tag);
stream.close();
return buf;
}
public static final class ChunkData {
public ChunkSection[] sections;