/* * This file is a part of the SteamWar software. * * Copyright (C) 2026 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package de.steamwar.lobby.particle.elements.touch; import de.steamwar.lobby.particle.ParticleElement; import de.steamwar.lobby.particle.ParticleTickData; import de.steamwar.lobby.particle.elements.DelegatingParticleElement; import org.bukkit.Location; // A flat ring of points around the location, all at once, for bursts public class Ring extends DelegatingParticleElement { private final double radius; private final int points; public Ring(ParticleElement particleElement, double radius, int points) { super(particleElement); this.radius = radius; this.points = points; } @Override public void tick(ParticleTickData particleTickData) { Location center = particleTickData.getLocation(); for (int i = 0; i < points; i++) { double angle = 2 * Math.PI * i / points; particleElement.tick(particleTickData.withLocation(center.clone().add(Math.cos(angle) * radius, 0, Math.sin(angle) * radius))); } } }