diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/particle/DustParticle.java b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/DustParticle.java
new file mode 100644
index 000000000..88cd04c2f
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/DustParticle.java
@@ -0,0 +1,48 @@
+/*
+ * Codename Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.game.datatypes.particle;
+
+public class DustParticle implements Particle {
+ final float red;
+ final float green;
+ final float blue;
+ final float scale;
+
+ public DustParticle(float red, float green, float blue, float scale) {
+ this.red = red;
+ this.green = green;
+ this.blue = blue;
+ this.scale = scale;
+ }
+
+ public Particles getParticle() {
+ return Particles.DUST;
+ }
+
+ public float getRed() {
+ return red;
+ }
+
+ public float getGreen() {
+ return green;
+ }
+
+ public float getBlue() {
+ return blue;
+ }
+
+ public float getScale() {
+ return scale;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/particle/FallingDustParticle.java b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/FallingDustParticle.java
new file mode 100644
index 000000000..e2ef6af3a
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/FallingDustParticle.java
@@ -0,0 +1,30 @@
+/*
+ * Codename Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.game.datatypes.particle;
+
+public class FallingDustParticle implements Particle {
+ final int blockState;
+
+ public FallingDustParticle(int blockState) {
+ this.blockState = blockState;
+ }
+
+ public Particles getParticle() {
+ return Particles.FALLING_DUST;
+ }
+
+ public int getBlockState() {
+ return this.blockState;
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/particle/ItemParticle.java b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/ItemParticle.java
new file mode 100644
index 000000000..e82954d6b
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/ItemParticle.java
@@ -0,0 +1,32 @@
+/*
+ * Codename Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.game.datatypes.particle;
+
+import de.bixilon.minosoft.game.datatypes.Slot;
+
+public class ItemParticle implements Particle {
+ final Slot slot;
+
+ public ItemParticle(Slot slot) {
+ this.slot = slot;
+ }
+
+ public Particles getParticle() {
+ return Particles.ITEM;
+ }
+
+ public Slot getSlot() {
+ return slot;
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/particle/Particles.java b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/Particles.java
index 911e0869b..b5ffbbbec 100644
--- a/src/main/java/de/bixilon/minosoft/game/datatypes/particle/Particles.java
+++ b/src/main/java/de/bixilon/minosoft/game/datatypes/particle/Particles.java
@@ -16,11 +16,68 @@ package de.bixilon.minosoft.game.datatypes.particle;
import de.bixilon.minosoft.game.datatypes.Identifier;
public enum Particles {
- AMBIENT_ENTITY_EFFECT(new Identifier("ambient_entity_effect"), 0),
- ANGRY_VILLAGER(new Identifier("angry_villager"), 1),
+ AMBIENT_ENTITY_EFFECT(new Identifier("ambient_entity_effect", "ambiententityeffect"), 0),
+ ANGRY_VILLAGER(new Identifier("angry_villager", "angryvillager"), 1),
BARRIER(new Identifier("barrier"), 2),
- BLOCK(new Identifier("block"), 3, BlockParticle.class);
- // ToDo other particles
+ BLOCK(new Identifier("block"), 3, BlockParticle.class),
+ BUBBLE(new Identifier("barrier"), 4),
+ CLOUD(new Identifier("cloud"), 5),
+ CRIT(new Identifier("crit"), 6),
+ DAMAGE_INDICATOR(new Identifier("damageindicator", "damage_indicator"), 7),
+ DRAGON_BREATH(new Identifier("dragonbreath", "dragon_breath"), 8),
+ DRIPPING_LAVA(new Identifier("drippinglava", "dripping_lava"), 9),
+ FALLING_LAVA(new Identifier("fallinglava", "falling_lava"), 10),
+ LANDING_LAVA(new Identifier("landinglava", "landing_lava"), 11),
+ DRIPPING_WATER(new Identifier("drippingwater", "dripping_water"), 12),
+ FALLING_WATER(new Identifier("fallingwater", "falling_water"), 13),
+ DUST(new Identifier("dust"), 14, DustParticle.class),
+ EFFECT(new Identifier("effect"), 15),
+ ELDER_GUARDIAN(new Identifier("elderguardian", "elder_guardian"), 16),
+ ENCHANTED_HIT(new Identifier("enchantedhit", "enchanted_hit"), 17),
+ ENCHANT(new Identifier("enchant"), 18),
+ END_ROD(new Identifier("endrod", "end_rod"), 19),
+ ENTITY_EFFECT(new Identifier("entityeffect", "entity_effect"), 20),
+ EXPLOSION_EMITTER(new Identifier("explosionemitter", "explosion_emitter"), 21),
+ EXPLOSION(new Identifier("explosion"), 22),
+ FALLING_DUST(new Identifier("fallingdust", "falling_dust"), 14, FallingDustParticle.class),
+ FIREWORK(new Identifier("firework"), 24),
+ FISHING(new Identifier("fishing"), 25),
+ FLAME(new Identifier("flame"), 26),
+ FLASH(new Identifier("flash"), 27),
+ HAPPY_VILLAGER(new Identifier("happyvillager", "happy_villager"), 28),
+ COMPOSTER(new Identifier("composter"), 29),
+ HEART(new Identifier("heart"), 30),
+ INSTANT_EFFECT(new Identifier("instanteffect", "instant_effect"), 31),
+ ITEM(new Identifier("item"), 32, ItemParticle.class),
+ ITEM_SLIME(new Identifier("itemslime", "item_slime"), 33),
+ ITEM_SNOWBALL(new Identifier("itemsnowball", "item_snowball"), 34),
+ LARGE_SMOKE(new Identifier("largesmoke", "large_smoke"), 35),
+ LAVA(new Identifier("lava"), 36),
+ MYCELIUM(new Identifier("mycelium"), 37),
+ NOTE(new Identifier("note"), 38),
+ POOF(new Identifier("poof"), 39),
+ PORTAL(new Identifier("portal"), 40),
+ RAIN(new Identifier("rain"), 41),
+ SMOKE(new Identifier("smoke"), 42),
+ SNEEZE(new Identifier("sneeze"), 43),
+ SPIT(new Identifier("spit"), 44),
+ SQUID_INK(new Identifier("squidink", "squid_ink"), 45),
+ SWEEP_ATTACK(new Identifier("sweepattack", "sweep_attack"), 46),
+ TOTEM_OF_UNDYING(new Identifier("totemofundying", "totem_of_undying"), 47),
+ UNDERWATER(new Identifier("underwater"), 48),
+ SPLASH(new Identifier("splash"), 49),
+ WITCH(new Identifier("witch"), 50),
+ BUBBLE_POP(new Identifier(null, "bubble_pop"), 51),
+ CURRENT_DOWN(new Identifier(null, "current_down"), 52),
+ BUBBLE_COLUMN_UP(new Identifier(null, "bubble_column_up"), 53),
+ NAUTILUS(new Identifier(null, "nautilus"), 54),
+ DOLPHIN(new Identifier(null, "dolphin"), 55),
+ CAMPFIRE_COSY_SMOKE(new Identifier(null, "campfire_cosy_smoke"), 56),
+ CAMPFIRE_SIGNAL_SMOKE(new Identifier(null, "campfire_signal_smoke"), 57),
+ DRIPPING_HONEY(new Identifier(null, "dripping_honey"), 58),
+ FALLING_HONEY(new Identifier(null, "falling_honey"), 59),
+ LANDING_HONEY(new Identifier(null, "landing_honey"), 60),
+ FALLING_NECTAR(new Identifier(null, "falling_nectar"), 61);
final Identifier identifier;
final int id;