diff --git a/geyser/libs/Geyser-Standalone.jar b/geyser/libs/Geyser-Standalone.jar
index fc031fb..341c3a6 100644
Binary files a/geyser/libs/Geyser-Standalone.jar and b/geyser/libs/Geyser-Standalone.jar differ
diff --git a/geyser/pom.xml b/geyser/pom.xml
index 1ebb7b4..8d631a8 100644
--- a/geyser/pom.xml
+++ b/geyser/pom.xml
@@ -79,7 +79,7 @@
org.geysermc.geyser
core
- 2.4.4-SNAPSHOT
+ 2.6.0-SNAPSHOT
system
${project.basedir}/libs/Geyser-Standalone.jar
diff --git a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
index 9e31eaa..bcb8ed7 100644
--- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
+++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java
@@ -16,13 +16,11 @@ import me.zimzaza4.geyserutils.common.packet.*;
import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForm;
import me.zimzaza4.geyserutils.geyser.form.NpcDialogueForms;
import me.zimzaza4.geyserutils.geyser.form.element.Button;
-import me.zimzaza4.geyserutils.geyser.mappings.ItemParticlesMappings;
import me.zimzaza4.geyserutils.geyser.replace.JavaAddEntityTranslatorReplace;
import me.zimzaza4.geyserutils.geyser.translator.NPCFormResponseTranslator;
import me.zimzaza4.geyserutils.geyser.util.Converter;
import me.zimzaza4.geyserutils.geyser.util.DeltaUtils;
import me.zimzaza4.geyserutils.geyser.util.ReflectionUtils;
-import org.cloudburstmc.math.vector.Vector3f;
import org.cloudburstmc.nbt.NbtMap;
import org.cloudburstmc.nbt.NbtType;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
@@ -46,7 +44,6 @@ import org.geysermc.geyser.entity.EntityDefinition;
import org.geysermc.geyser.entity.properties.GeyserEntityProperties;
import org.geysermc.geyser.entity.type.Entity;
import org.geysermc.geyser.entity.type.player.PlayerEntity;
-import org.geysermc.geyser.inventory.GeyserItemStack;
import org.geysermc.geyser.registry.Registries;
import org.geysermc.geyser.session.GeyserSession;
import org.geysermc.geyser.util.DimensionUtils;
@@ -54,12 +51,9 @@ import org.geysermc.mcprotocollib.network.Session;
import org.geysermc.mcprotocollib.network.event.session.PacketSendingEvent;
import org.geysermc.mcprotocollib.network.event.session.SessionAdapter;
import org.geysermc.mcprotocollib.network.packet.Packet;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ItemParticleData;
import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundCustomPayloadPacket;
import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundCustomPayloadPacket;
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundLevelParticlesPacket;
import org.jetbrains.annotations.NotNull;
import javax.imageio.ImageIO;
@@ -70,7 +64,10 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.*;
-import java.util.concurrent.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
public class GeyserUtils implements Extension {
@@ -93,7 +90,6 @@ public class GeyserUtils implements Extension {
@Getter
public static Map> CUSTOM_ENTITIES = new ConcurrentHashMap<>();
- public static ItemParticlesMappings particlesMappings = new ItemParticlesMappings();
static Cape EMPTY_CAPE = new Cape("", "no-cape", new byte[0], true);
public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
@@ -123,7 +119,6 @@ public class GeyserUtils implements Extension {
registerPropertiesForGeyser(id);
}
logger().info("Defined " + LOADED_ENTITY_DEFINITIONS.size() + " entities");
- particlesMappings.read(dataFolder().resolve("item_particles_mappings.json"));
MountFix.start();
}
@@ -330,45 +325,8 @@ public class GeyserUtils implements Extension {
CustomPayloadPacket customPacket = packetManager.decodePacket(payloadPacket.getData());
handleCustomPacket(session, customPacket);
}
- } else if (packet instanceof ClientboundLevelParticlesPacket particlesPacket) {
- if (particlesPacket.getParticle().getData() instanceof ItemParticleData data) {
- GeyserItemStack itemStack = GeyserItemStack.from(data.getItemStack());
- Map map = particlesMappings.getMappings().get(itemStack.asItem().javaIdentifier());
- if (map != null) {
- int id = itemStack.getOrCreateComponents().getOrDefault(DataComponentType.CUSTOM_MODEL_DATA, -1);
- String particle = map.get(id);
- if (particle != null) {
-
- int dimensionId = DimensionUtils.javaToBedrock(session);
-
- SpawnParticleEffectPacket stringPacket = new SpawnParticleEffectPacket();
- stringPacket.setIdentifier(particle);
- stringPacket.setDimensionId(dimensionId);
- stringPacket.setMolangVariablesJson(Optional.empty());
- session.sendUpstreamPacket(stringPacket);
-
- if (particlesPacket.getAmount() == 0) {
- // 0 means don't apply the offset
- Vector3f position = Vector3f.from(particlesPacket.getX(), particlesPacket.getY(), particlesPacket.getZ());
- stringPacket.setPosition(position);
- } else {
- Random random = ThreadLocalRandom.current();
- for (int i = 0; i < particlesPacket.getAmount(); i++) {
- double offsetX = random.nextGaussian() * (double) particlesPacket.getOffsetX();
- double offsetY = random.nextGaussian() * (double) particlesPacket.getOffsetY();
- double offsetZ = random.nextGaussian() * (double) particlesPacket.getOffsetZ();
- Vector3f position = Vector3f.from(particlesPacket.getX() + offsetX, particlesPacket.getY() + offsetY, particlesPacket.getZ() + offsetZ);
- stringPacket.setPosition(position);
- }
- }
- session.sendUpstreamPacket(stringPacket);
- }
- }
- }
}
}
-
-
});
}, 80, TimeUnit.MILLISECONDS);
}
diff --git a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/mappings/ItemParticlesMappings.java b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/mappings/ItemParticlesMappings.java
deleted file mode 100644
index 0b2050d..0000000
--- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/mappings/ItemParticlesMappings.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package me.zimzaza4.geyserutils.geyser.mappings;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import it.unimi.dsi.fastutil.Pair;
-import lombok.Getter;
-import me.zimzaza4.geyserutils.geyser.GeyserUtils;
-import org.geysermc.geyser.GeyserImpl;
-import org.geysermc.geyser.item.GeyserCustomItemOptions;
-import org.geysermc.geyser.registry.mappings.MappingsConfigReader;
-import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
-
-import java.io.*;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.util.HashMap;
-import java.util.Map;
-
-@Getter
-public class ItemParticlesMappings {
-
- Map> mappings;
- public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
- public void read(Path file) {
- if (!file.toFile().exists()) {
- mappings = new HashMap<>();
- mappings.put("minecraft:stone", Map.of(10001, "custom:test"));
-
- try (FileWriter writer = new FileWriter(file.toFile())){
- file.toFile().createNewFile();
- String json = GSON.toJson(mappings);
- writer.write(json);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- try {
- mappings = GSON.fromJson(new FileReader(file.toFile()), new TypeToken