|
27 | 27 |
|
28 | 28 | import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack; |
29 | 29 | import org.geysermc.mcprotocollib.protocol.data.game.level.particle.BlockParticleData; |
| 30 | +import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ColorParticleData; |
30 | 31 | import org.geysermc.mcprotocollib.protocol.data.game.level.particle.DustParticleData; |
31 | 32 | import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ItemParticleData; |
32 | 33 | import org.geysermc.mcprotocollib.protocol.data.game.level.particle.Particle; |
@@ -174,6 +175,33 @@ public void translate(GeyserSession session, ClientboundLevelParticlesPacket pac |
174 | 175 | return packet; |
175 | 176 | }; |
176 | 177 | } |
| 178 | + case FIREWORK -> { |
| 179 | + int dimensionId = DimensionUtils.javaToBedrock(session); |
| 180 | + return (position) -> { |
| 181 | + SpawnParticleEffectPacket particlePacket = new SpawnParticleEffectPacket(); |
| 182 | + particlePacket.setIdentifier("minecraft:sparkler_emitter"); |
| 183 | + particlePacket.setDimensionId(dimensionId); |
| 184 | + particlePacket.setPosition(position); |
| 185 | + particlePacket.setMolangVariablesJson(Optional.of("[{ \"name\": \"variable.color\", \"value\": { \"type\": \"member_array\", \"value\": [{\"name\": \".r\", \"value\": { \"type\": \"float\", \"value\": 1.0}},{\"name\": \".g\", \"value\": {\"type\": \"float\", \"value\": 1.0}},{\"name\": \".b\", \"value\": {\"type\": \"float\", \"value\": 1.0}},{\"name\": \".a\", \"value\": {\"type\": \"float\", \"value\": 1.0}}]}}]")); |
| 186 | + return particlePacket; |
| 187 | + }; |
| 188 | + } |
| 189 | + case TINTED_LEAVES -> { |
| 190 | + int dimensionId = DimensionUtils.javaToBedrock(session); |
| 191 | + ColorParticleData data = (ColorParticleData) particle.getData(); |
| 192 | + int rgbData = data.getColor(); |
| 193 | + float red = ((rgbData >> 16) & 0xFF) / 255f; |
| 194 | + float green = ((rgbData >> 8) & 0xFF) / 255f; |
| 195 | + float blue = (rgbData & 0xFF) / 255f; |
| 196 | + return (position) -> { |
| 197 | + SpawnParticleEffectPacket particlePacket = new SpawnParticleEffectPacket(); |
| 198 | + particlePacket.setIdentifier("minecraft:biome_tinted_leaves_particle"); |
| 199 | + particlePacket.setDimensionId(dimensionId); |
| 200 | + particlePacket.setPosition(position); |
| 201 | + particlePacket.setMolangVariablesJson(Optional.of("[{ \"name\": \"variable.color\", \"value\": { \"type\": \"member_array\", \"value\": [{\"name\": \".r\", \"value\": { \"type\": \"float\", \"value\": " + red + "}},{\"name\": \".g\", \"value\": {\"type\": \"float\", \"value\": " + green + "}},{\"name\": \".b\", \"value\": {\"type\": \"float\", \"value\": " + blue + "}}]}}]")); |
| 202 | + return particlePacket; |
| 203 | + }; |
| 204 | + } |
177 | 205 | default -> { |
178 | 206 | ParticleMapping particleMapping = Registries.PARTICLES.get(particle.getType()); |
179 | 207 | if (particleMapping == null) { //TODO ensure no particle can be null |
|
0 commit comments