added New Year Firework #15
No files matched your search
+43
@@ -0,0 +1,43 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.newYearFirework;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.entity.Firework;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.inventory.meta.FireworkMeta;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
public class NewYearFirework extends Appliance {
|
||||||
|
private static final String namespace = NewYearFirework.class.getSimpleName().toLowerCase(Locale.ROOT);
|
||||||
|
public static NamespacedKey fireworkKey = new NamespacedKey(namespace, "newyear_firework".toLowerCase());
|
||||||
|
|
||||||
|
public void spawnFirework(Player player) {
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
Firework firework = player.getWorld().spawn(player.getLocation(), Firework.class);
|
||||||
|
firework.getPersistentDataContainer().set(fireworkKey, PersistentDataType.BOOLEAN, true);
|
||||||
|
FireworkMeta fireworkMeta = firework.getFireworkMeta();
|
||||||
|
fireworkMeta.addEffect(FireworkEffect.builder()
|
||||||
|
.with(FireworkEffect.Type.BALL)
|
||||||
|
.withColor(Color.AQUA, Color.RED, Color.LIME, Color.ORANGE, Color.YELLOW)
|
||||||
|
.withFade(Color.FUCHSIA, Color.WHITE)
|
||||||
|
.trail(true)
|
||||||
|
.flicker(true)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
fireworkMeta.setPower((int) (i % 3 + 0.25));
|
||||||
|
firework.setFireworkMeta(fireworkMeta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull List<Listener> listeners() {
|
||||||
|
return List.of(new NewYearFireworkListener());
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.newYearFirework;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
|
||||||
|
import org.bukkit.entity.Firework;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public class NewYearFireworkListener extends ApplianceListener<NewYearFirework> {
|
||||||
|
MineTec marked this conversation as resolved
|
|||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
if(LocalDate.now().getDayOfYear() != 1) return;
|
||||||
|
MineTec marked this conversation as resolved
MineTec
commented
der Check, ob heute Neujahr ist, gilt als Logik, und sollte daher in die Appliance ausgelagert werden. Einfach eine Methode, die der Check, ob heute Neujahr ist, gilt als Logik, und sollte daher in die Appliance ausgelagert werden. Einfach eine Methode, die `true` zurück gibt, wenn Feuerwerk kommen soll. Und hier dann einfach `(!Appliance#shouldSpawnFirework) return`
|
|||||||
|
this.getAppliance().spawnFirework(event.getPlayer());
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void onDamage(EntityDamageByEntityEvent event) {
|
||||||
|
if(!(event.getDamager() instanceof Firework firework)) return;
|
||||||
|
if(!firework.getPersistentDataContainer().has(NewYearFirework.fireworkKey)) return;
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user
package private