From acdf7a768a33b1517b24095a02390ffb46b0c8ba Mon Sep 17 00:00:00 2001 From: Sekwah Date: Thu, 28 Nov 2024 00:58:45 +0000 Subject: [PATCH] wip: try switching over to particles --- .../core/connector/containers/WorldContainer.java | 4 ++++ .../com/sekwah/advancedportals/core/util/Debug.java | 2 ++ .../spigot/AdvancedPortalsPlugin.java | 3 +++ .../connector/container/SpigotWorldContainer.java | 13 +++++++++++++ .../spigot/reflection/MinecraftCustomPayload.java | 7 +++++++ .../spigot/warpeffects/EnderWarpEffect.java | 4 ++++ 6 files changed, 33 insertions(+) diff --git a/core/src/main/java/com/sekwah/advancedportals/core/connector/containers/WorldContainer.java b/core/src/main/java/com/sekwah/advancedportals/core/connector/containers/WorldContainer.java index 4416e2c8..e22caedb 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/connector/containers/WorldContainer.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/connector/containers/WorldContainer.java @@ -4,6 +4,8 @@ import com.sekwah.advancedportals.core.data.BlockAxis; import com.sekwah.advancedportals.core.portal.AdvancedPortal; import com.sekwah.advancedportals.core.serializeddata.BlockLocation; +import java.awt.*; + public interface WorldContainer { void setBlock(BlockLocation location, String material); @@ -16,4 +18,6 @@ public interface WorldContainer { void setBlockAxis(BlockLocation location, BlockAxis axis); void disableBeacon(AdvancedPortal portal); + + void spawnColoredDust(BlockLocation blockPos, double xSpread, double ySpread, double zSpread, int count, Color color); } diff --git a/core/src/main/java/com/sekwah/advancedportals/core/util/Debug.java b/core/src/main/java/com/sekwah/advancedportals/core/util/Debug.java index 63bb426f..73f06db7 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/util/Debug.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/util/Debug.java @@ -8,6 +8,8 @@ public class Debug { public static boolean addMarker(PlayerContainer player, BlockLocation blockPos, String name, Color color, int milliseconds) { + player.getWorld().spawnColoredDust(blockPos, 1, 1, 1, 20, color); + FriendlyDataOutput out = new FriendlyDataOutput(); out.writeBlock(blockPos); out.writeInt(color(color)); diff --git a/spigot/src/main/java/com/sekwah/advancedportals/spigot/AdvancedPortalsPlugin.java b/spigot/src/main/java/com/sekwah/advancedportals/spigot/AdvancedPortalsPlugin.java index ba3e1aa7..e5cf32f8 100644 --- a/spigot/src/main/java/com/sekwah/advancedportals/spigot/AdvancedPortalsPlugin.java +++ b/spigot/src/main/java/com/sekwah/advancedportals/spigot/AdvancedPortalsPlugin.java @@ -14,6 +14,7 @@ import com.sekwah.advancedportals.spigot.connector.command.SpigotCommandRegister import com.sekwah.advancedportals.spigot.connector.container.SpigotServerContainer; import com.sekwah.advancedportals.spigot.importer.LegacyImporter; import com.sekwah.advancedportals.spigot.metrics.Metrics; +import com.sekwah.advancedportals.spigot.reflection.MinecraftCustomPayload; import com.sekwah.advancedportals.spigot.warpeffects.SpigotWarpEffects; import java.io.File; import java.util.regex.Matcher; @@ -59,6 +60,8 @@ public class AdvancedPortalsPlugin extends JavaPlugin { Injector injector = module.getInjector(); + MinecraftCustomPayload.attemptFindData(); + injector.injectMembers(this); injector.injectMembers(this.portalsCore); injector.injectMembers(serverContainer); diff --git a/spigot/src/main/java/com/sekwah/advancedportals/spigot/connector/container/SpigotWorldContainer.java b/spigot/src/main/java/com/sekwah/advancedportals/spigot/connector/container/SpigotWorldContainer.java index a0506988..983fc2ca 100644 --- a/spigot/src/main/java/com/sekwah/advancedportals/spigot/connector/container/SpigotWorldContainer.java +++ b/spigot/src/main/java/com/sekwah/advancedportals/spigot/connector/container/SpigotWorldContainer.java @@ -6,11 +6,14 @@ import com.sekwah.advancedportals.core.portal.AdvancedPortal; import com.sekwah.advancedportals.core.serializeddata.BlockLocation; import org.bukkit.Axis; import org.bukkit.Material; +import org.bukkit.Particle; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.EndGateway; import org.bukkit.block.data.Orientable; +import java.awt.*; + public class SpigotWorldContainer implements WorldContainer { private final World world; @@ -108,4 +111,14 @@ public class SpigotWorldContainer implements WorldContainer { } } } + + @Override + public void spawnColoredDust(BlockLocation blockPos, double xSpread, double ySpread, double zSpread, int count, Color color) { + Particle.DustOptions dustOptions = new Particle.DustOptions( + org.bukkit.Color.fromRGB(color.getRed(), color.getGreen(), + color.getBlue()), 1); + this.world.spawnParticle(Particle.REDSTONE, blockPos.getPosX(), + blockPos.getPosY(), blockPos.getPosZ(), 1, + xSpread, ySpread, zSpread, count, dustOptions); + } } diff --git a/spigot/src/main/java/com/sekwah/advancedportals/spigot/reflection/MinecraftCustomPayload.java b/spigot/src/main/java/com/sekwah/advancedportals/spigot/reflection/MinecraftCustomPayload.java index b1d781ea..7fc18e7e 100644 --- a/spigot/src/main/java/com/sekwah/advancedportals/spigot/reflection/MinecraftCustomPayload.java +++ b/spigot/src/main/java/com/sekwah/advancedportals/spigot/reflection/MinecraftCustomPayload.java @@ -34,6 +34,13 @@ public class MinecraftCustomPayload { throw new NoSuchFieldException("Field with type " + fieldType + " not found in object"); } + /** + * Attempt to find the methods and classes needed. + */ + public static void attemptFindData() { + + } + private static void outputAllMethodsToFile(Class clazz) throws IOException { var pluginInstance = AdvancedPortalsPlugin.getInstance(); var dataFolder = pluginInstance.getDataFolder(); diff --git a/spigot/src/main/java/com/sekwah/advancedportals/spigot/warpeffects/EnderWarpEffect.java b/spigot/src/main/java/com/sekwah/advancedportals/spigot/warpeffects/EnderWarpEffect.java index ede414f0..c4e3aff2 100644 --- a/spigot/src/main/java/com/sekwah/advancedportals/spigot/warpeffects/EnderWarpEffect.java +++ b/spigot/src/main/java/com/sekwah/advancedportals/spigot/warpeffects/EnderWarpEffect.java @@ -3,7 +3,9 @@ package com.sekwah.advancedportals.spigot.warpeffects; import com.sekwah.advancedportals.core.connector.containers.PlayerContainer; import com.sekwah.advancedportals.core.effect.WarpEffect; import com.sekwah.advancedportals.spigot.connector.container.SpigotPlayerContainer; +import org.bukkit.Color; import org.bukkit.Effect; +import org.bukkit.Particle; public class EnderWarpEffect implements WarpEffect.Visual, WarpEffect.Sound { @Override @@ -15,6 +17,8 @@ public class EnderWarpEffect implements WarpEffect.Visual, WarpEffect.Sound { player.getWorld().playSound(player.getLocation(), "entity.enderman.teleport", 1, 1); + + Particle.DustOptions dustOptions = new Particle.DustOptions(Color.RED, 1); } }