9
0
mirror of https://github.com/GeyserExtensionists/GeyserUtils.git synced 2025-12-19 15:09:24 +00:00
This commit is contained in:
zimzaza4
2023-12-30 11:04:02 +08:00
parent 1ffcfd3c8c
commit de2c5a4230
8 changed files with 73 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ package me.zimzaza4.geyserutils.common.camera.data;
import lombok.Builder;
import lombok.Getter;
import me.zimzaza4.geyserutils.common.util.Pos;
import org.jetbrains.annotations.Nullable;
import java.util.Map;

View File

@@ -3,7 +3,7 @@ package me.zimzaza4.geyserutils.common.camera.instruction;
import lombok.*;
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
import me.zimzaza4.geyserutils.common.camera.data.Ease;
import me.zimzaza4.geyserutils.common.camera.data.Pos;
import me.zimzaza4.geyserutils.common.util.Pos;
import me.zimzaza4.geyserutils.common.camera.data.Rot;
import org.jetbrains.annotations.Nullable;

View File

@@ -0,0 +1,22 @@
package me.zimzaza4.geyserutils.common.packet;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.animation.Animation;
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
import me.zimzaza4.geyserutils.common.particle.CustomParticle;
import me.zimzaza4.geyserutils.common.util.Pos;
import org.jetbrains.annotations.Nullable;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class CustomParticleEffectPayloadPacket extends CustomPayloadPacket {
private CustomParticle particle;
private Pos pos;
}

View File

@@ -0,0 +1,21 @@
package me.zimzaza4.geyserutils.common.particle;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import me.zimzaza4.geyserutils.common.util.Pos;
import org.jetbrains.annotations.Nullable;
@AllArgsConstructor
@NoArgsConstructor
@Accessors(fluent = true)
@Getter
@Setter
public class CustomParticle {
private Pos position;
private String identifier;
@Nullable
private String molangVariablesJson;
}

View File

@@ -1,4 +1,4 @@
package me.zimzaza4.geyserutils.common.camera.data;
package me.zimzaza4.geyserutils.common.util;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -14,17 +14,15 @@ import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
import me.zimzaza4.geyserutils.common.form.element.NpcDialogueButton;
import me.zimzaza4.geyserutils.common.manager.PacketManager;
import me.zimzaza4.geyserutils.common.packet.*;
import me.zimzaza4.geyserutils.common.packet.CustomParticleEffectPayloadPacket;
import me.zimzaza4.geyserutils.geyser.camera.CameraPresetDefinition;
import me.zimzaza4.geyserutils.geyser.camera.Converter;
import me.zimzaza4.geyserutils.geyser.util.Converter;
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.translator.NPCFormResponseTranslator;
import org.cloudburstmc.nbt.NbtMap;
import org.cloudburstmc.protocol.bedrock.packet.AnimateEntityPacket;
import org.cloudburstmc.protocol.bedrock.packet.CameraInstructionPacket;
import org.cloudburstmc.protocol.bedrock.packet.CameraPresetsPacket;
import org.cloudburstmc.protocol.bedrock.packet.NpcRequestPacket;
import org.cloudburstmc.protocol.bedrock.packet.*;
import org.cloudburstmc.protocol.common.DefinitionRegistry;
import org.cloudburstmc.protocol.common.NamedDefinition;
import org.geysermc.event.subscribe.Subscribe;
@@ -36,9 +34,11 @@ import org.geysermc.geyser.api.extension.Extension;
import org.geysermc.geyser.entity.type.Entity;
import org.geysermc.geyser.registry.Registries;
import org.geysermc.geyser.session.GeyserSession;
import org.geysermc.geyser.util.DimensionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -147,6 +147,13 @@ public class GeyserUtils implements Extension {
bedrockPacket.setClear(true);
}
session.sendUpstreamPacket(bedrockPacket);
} else if (customPacket instanceof CustomParticleEffectPayloadPacket customParticleEffectPacket) {
SpawnParticleEffectPacket spawnParticleEffectPacket = new SpawnParticleEffectPacket();
spawnParticleEffectPacket.setDimensionId(DimensionUtils.javaToBedrock(session.getDimension()));
spawnParticleEffectPacket.setPosition(Converter.serializePos(customParticleEffectPacket.getPos()));
spawnParticleEffectPacket.setIdentifier(customParticleEffectPacket.getParticle().identifier());
spawnParticleEffectPacket.setMolangVariablesJson(Optional.ofNullable(customParticleEffectPacket.getParticle().molangVariablesJson()));
session.sendUpstreamPacket(spawnParticleEffectPacket);
}
}
}

View File

@@ -1,8 +1,10 @@
package me.zimzaza4.geyserutils.geyser.camera;
package me.zimzaza4.geyserutils.geyser.util;
import me.zimzaza4.geyserutils.common.camera.data.*;
import me.zimzaza4.geyserutils.common.camera.instruction.FadeInstruction;
import me.zimzaza4.geyserutils.common.camera.instruction.SetInstruction;
import me.zimzaza4.geyserutils.common.util.Pos;
import me.zimzaza4.geyserutils.geyser.camera.CameraPresetDefinition;
import org.cloudburstmc.math.vector.Vector2f;
import org.cloudburstmc.math.vector.Vector3f;
import org.cloudburstmc.protocol.bedrock.data.camera.CameraAudioListener;

View File

@@ -6,8 +6,11 @@ import me.zimzaza4.geyserutils.common.channel.GeyserUtilsChannels;
import me.zimzaza4.geyserutils.common.packet.AnimateEntityCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.packet.CameraInstructionCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.packet.CameraShakeCustomPayloadPacket;
import me.zimzaza4.geyserutils.common.util.CustomPayloadPacketUtils;
import me.zimzaza4.geyserutils.common.packet.CustomParticleEffectPayloadPacket;
import me.zimzaza4.geyserutils.common.particle.CustomParticle;
import me.zimzaza4.geyserutils.common.util.Pos;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
@@ -44,4 +47,12 @@ public class PlayerUtils {
player.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(packet));
}
public static void sendCustomParticle(Player player, Location location, CustomParticle particle) {
CustomParticleEffectPayloadPacket packet = new CustomParticleEffectPayloadPacket();
packet.setParticle(particle);
packet.setPos(new Pos((float) location.getX(), (float) location.getY(), (float) location.getZ()));
player.sendPluginMessage(GeyserUtils.getInstance(), GeyserUtilsChannels.MAIN, GeyserUtils.getPacketManager().encodePacket(packet));
}
}