diff --git a/LobbySystem/src/de/steamwar/lobby/LobbySystem.properties b/LobbySystem/src/de/steamwar/lobby/LobbySystem.properties index 2d80d7f9..702e340e 100644 --- a/LobbySystem/src/de/steamwar/lobby/LobbySystem.properties +++ b/LobbySystem/src/de/steamwar/lobby/LobbySystem.properties @@ -49,38 +49,18 @@ PORTAL_NO_WORLDEDIT_SELECTION = §cNo WorldEdit selection PARTICLE_INVENTORY = §0Particle PARTICLE_DESELECT = §8No particle -PARTICLE_SHOW_HAS_ALL = §8You have all particles -PARTICLE_SHOW_ALL = §aShow all -PARTICLE_SHOW_UNLOCKED = §cShow unlocked - PARTICLE_UNLOCKED_BY = §eUnlocked by PARTICLE_UNLOCKED_BY_TEAM = §fJoin a team PARTICLE_UNLOCKED_BY_SPECIFIC_TEAM = §fTeam {0} PARTICLE_UNLOCKED_BY_SPECIFIC_TEAM_EASTER = §fTeam {0} (Easter Egg Hunt) PARTICLE_UNLOCKED_BY_SPECIFIC_USER = §fUser {0} PARTICLE_UNLOCKED_BY_SPECIFIC_USER_EASTER = §fUser {0} (Easter Egg Hunt) -PARTICLE_UNLOCKED_BY_EVENT = §fEvent participation PARTICLE_UNLOCKED_BY_SERVER_TEAM = §fServer Team PARTICLE_UNLOCKED_BY_EVENT_PLACEMENT = §f{0} 1., 2. or 3. Place PARTICLE_UNLOCKED_BY_EVENT_PARTICIPATION = §f{0} PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_HALF = §fFind 45 Easter Eggs PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_DIFFICULTY = §fFind all Easter Eggs with difficulty {0} -PARTICLE_ATTRIBUTE = §eAttributes§7: -PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring -PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Double ring -PARTICLE_ATTRIBUTE_TRI_CIRCLE = §8-§f Tripple ring -PARTICLE_ATTRIBUTE_CLOUD = §8-§f Cloud -PARTICLE_ATTRIBUTE_TICK = §8-§f Always active -PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In air -PARTICLE_ATTRIBUTE_FLOOR = §8-§f On ground -PARTICLE_ATTRIBUTE_NON_FLYING = §8-§f Not flying -PARTICLE_ATTRIBUTE_FLYING = §8-§f Flying -PARTICLE_ATTRIBUTE_WING = §8-§f Wings -PARTICLE_ATTRIBUTE_SNEAKING = §8-§f Sneaking -PARTICLE_ATTRIBUTE_NON_MOVING = §8-§f Not moving -PARTICLE_ATTRIBUTE_SEPARATOR = §f - PARTICLE_SELECT = §eClick to select PARTICLE_LOCKED = §c§lLocked PARTICLE_DEACTIVATED = §cThere are too many players online, particles are deactivated @@ -184,41 +164,6 @@ PARTICLE_CHOICE_IMAGE_SIMPLE = §fSimple PARTICLE_CHOICE_IMAGE_COMPLEX = §fComplex PARTICLE_CHOICE_IMAGE_SWORD = §fSword -PARTICLE_SNEEZE = §aSneeze -PARTICLE_SMOKE = §7Smoke -PARTICLE_FIRE = §cFire -PARTICLE_WATER = §bWater -PARTICLE_HEART = §cHearts -PARTICLE_NOTES = §eNotes -PARTICLE_NAUTILUS = §aNautilus -PARTICLE_SNOWBALL = §fSnowball -PARTICLE_EFFECT = §5Effect -PARTICLE_CAMPFIRE = §7Smoke -PARTICLE_MAGIC = §5Magic -PARTICLE_ANGRY = §4Angry -PARTICLE_SLIME = §aSlime -PARTICLE_MOB = §7Mob -PARTICLE_SQUID = §8Squid -PARTICLE_BUBBLE = §aBubbles -PARTICLE_HONEY = §6Honey -PARTICLE_NECTAR = §6Nectar -PARTICLE_FIREWORK = §7Firework -PARTICLE_DRAGON_BREATH = §5Dragon breath -PARTICLE_DAMAGE = §5Damage -PARTICLE_DOLPHIN = §dDolphin -PARTICLE_WITCH = §5Witch -PARTICLE_ENCHANTING = §eEnchantment -PARTICLE_HAPPY = §2Joy -PARTICLE_FLAME = §7Flames -PARTICLE_END_ROD = §fEnd Rod -PARTICLE_CLOUD = §7Cloud -PARTICLE_TOTEM = §aTotem -PARTICLE_TOWN = §5Town -PARTICLE_ENCHANTING_CIRCLE = §fEnchanted -PARTICLE_WATER_FIRE = §bWater§7/§cFire -PARTICLE_MAGIC_ENCHANTING = §5Magic/Enchantment -PARTICLE_WINGS_EVIL = §5Purple wings - PARTICLE_PLAYER_HAYLIM_AURA = §fHaylim\'s Aura PARTICLE_PLAYER_1063 = §7Circling Circle PARTICLE_PLAYER_10916_AURA = §7Tornado @@ -235,19 +180,6 @@ PARTICLE_TEAM_PULSE_AURA_3 = §fPulse Aura §fEnchanted PARTICLE_TEAM_PULSE_LOGO = §fPulse Logo PARTICLE_TEAM_PULSE_HEART_BEAT = §cHeart Beat -PARTICLE_RAINCLOUD_NORMAL = §fRaincloud -PARTICLE_RAINCLOUD_RED = §fLava cloud -PARTICLE_RAINCLOUD_YELLOW = §fNectar cloud -PARTICLE_RAINCLOUD_ORANGE = §fHoney cloud -PARTICLE_RAINCLOUD_GREEN = §fSpore Blossom cloud -PARTICLE_RAINCLOUD_PURPLE = §fObsidian Tears cloud -PARTICLE_RAINCLOUD_NAUTILUS = §fNautilus cloud -PARTICLE_RAINCLOUD_ENCHANTMENT = §fEnchantment cloud -PARTICLE_RAINCLOUD_SLIME = §fSlime cloud -PARTICLE_RAINCLOUD_HAIL = §fHail cloud -PARTICLE_RAINCLOUD_SNOW = §fSnow cloud -PARTICLE_RAINCLOUD_TOTEM = §fTotem cloud - PARTICLE_EVENT_ENCHANTING = §cEnchantment PARTICLE_EVENT_CLOUD = §fClouds PARTICLE_EVENT_SMOKE = §7Smoke diff --git a/LobbySystem/src/de/steamwar/lobby/LobbySystem_de.properties b/LobbySystem/src/de/steamwar/lobby/LobbySystem_de.properties index 6c01a373..59647e67 100644 --- a/LobbySystem/src/de/steamwar/lobby/LobbySystem_de.properties +++ b/LobbySystem/src/de/steamwar/lobby/LobbySystem_de.properties @@ -49,37 +49,18 @@ PORTAL_NO_WORLDEDIT_SELECTION = §cKeine WorldEdit Selection PARTICLE_INVENTORY = §0Partikel PARTICLE_DESELECT = §8Keine Partikel -PARTICLE_SHOW_HAS_ALL = §8Du hast alle Partikel -PARTICLE_SHOW_ALL = §aZeige alle -PARTICLE_SHOW_UNLOCKED = §cZeige freigeschaltete - PARTICLE_UNLOCKED_BY = §eFreigeschaltet durch PARTICLE_UNLOCKED_BY_TEAM = §fTeambeitritt PARTICLE_UNLOCKED_BY_SPECIFIC_TEAM = §fTeam {0} PARTICLE_UNLOCKED_BY_SPECIFIC_TEAM_EASTER = §fTeam {0} (Oster-Eierer-Suche) PARTICLE_UNLOCKED_BY_SPECIFIC_USER = §fUser {0} PARTICLE_UNLOCKED_BY_SPECIFIC_USER_EASTER = §fUser {0} (Oster-Eierer-Suche) -PARTICLE_UNLOCKED_BY_EVENT = §fEventteilnahme PARTICLE_UNLOCKED_BY_SERVER_TEAM = §fServerteam PARTICLE_UNLOCKED_BY_EVENT_PLACEMENT = §f{0} 1., 2. oder 3. Platz PARTICLE_UNLOCKED_BY_EVENT_PARTICIPATION = §f{0} PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_HALF = §fFinde 45 Oster-Eierer PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_DIFFICULTY = §fAlle Eierer mit Schwierigkeit {0} finden -PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring -PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Doppelring -PARTICLE_ATTRIBUTE_TRI_CIRCLE = §8-§f Dreifachring -PARTICLE_ATTRIBUTE_CLOUD = §8-§f Wolke -PARTICLE_ATTRIBUTE_TICK = §8-§f Immer aktiv -PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In der Luft -PARTICLE_ATTRIBUTE_FLOOR = §8-§f Auf dem Boden -PARTICLE_ATTRIBUTE_NON_FLYING = §8-§f Nicht am Fliegen -PARTICLE_ATTRIBUTE_FLYING = §8-§f Am Fliegen -PARTICLE_ATTRIBUTE_WING = §8-§f Flügel -PARTICLE_ATTRIBUTE_SNEAKING = §8-§f Ducken -PARTICLE_ATTRIBUTE_NON_MOVING = §8-§f Beim Stehen -PARTICLE_ATTRIBUTE = §eAttribute§7: - PARTICLE_SELECT = §eZum Auswählen klicken PARTICLE_LOCKED = §c§lGesperrt PARTICLE_DEACTIVATED = §cEs sind zu viele Spieler online! Partikel sind deaktiviert. @@ -183,59 +164,11 @@ PARTICLE_CHOICE_IMAGE_SIMPLE = §fEinfach PARTICLE_CHOICE_IMAGE_COMPLEX = §fKomplex PARTICLE_CHOICE_IMAGE_SWORD = §fSchwert -PARTICLE_SNEEZE = §aSneeze -PARTICLE_SMOKE = §7Rauch -PARTICLE_FIRE = §cFeuer -PARTICLE_WATER = §bWasser -PARTICLE_HEART = §cHerzen -PARTICLE_NOTES = §eNoten -PARTICLE_NAUTILUS = §aNautilus -PARTICLE_SNOWBALL = §fSchneeball -PARTICLE_EFFECT = §5Effekt -PARTICLE_CAMPFIRE = §7Rauch -PARTICLE_MAGIC = §5Magie -PARTICLE_ANGRY = §4Wut -PARTICLE_SLIME = §aSchleim -PARTICLE_MOB = §7Mob -PARTICLE_SQUID = §8Tintenfisch -PARTICLE_BUBBLE = §aBlasen -PARTICLE_HONEY = §6Honig -PARTICLE_NECTAR = §6Nektar -PARTICLE_FIREWORK = §7Feuerwerk -PARTICLE_DRAGON_BREATH = §5Drachenatem -PARTICLE_DAMAGE = §5Schaden -PARTICLE_DOLPHIN = §dDelphin -PARTICLE_WITCH = §5Hexe -PARTICLE_ENCHANTING = §eZauber -PARTICLE_HAPPY = §2Freude -PARTICLE_FLAME = §7Flammen -PARTICLE_END_ROD = §fEnd Rod -PARTICLE_CLOUD = §7Wolke -PARTICLE_TOTEM = §aTotem -PARTICLE_TOWN = §5Town -PARTICLE_ENCHANTING_CIRCLE = §fVerzaubert -PARTICLE_WATER_FIRE = §bWasser§7/§cFeuer -PARTICLE_MAGIC_ENCHANTING = §5Magie§7/§eZauber -PARTICLE_WINGS_EVIL = §5Lila Flügel - PARTICLE_PLAYER_1063 = §7Kreisende Kreise PARTICLE_PLAYER_10697_AURA = §7Rauchgranate PARTICLE_TEAM_PULSE_HEART_BEAT = §cHerzschlag -PARTICLE_RAINCLOUD_NORMAL = §fRegenwolke -PARTICLE_RAINCLOUD_RED = §fLavawolke -PARTICLE_RAINCLOUD_YELLOW = §fNektarwolke -PARTICLE_RAINCLOUD_ORANGE = §fHonigwolke -PARTICLE_RAINCLOUD_GREEN = §fSporenwolke -PARTICLE_RAINCLOUD_PURPLE = §fObsidanwolke -PARTICLE_RAINCLOUD_NAUTILUS = §fNautiluswolke -PARTICLE_RAINCLOUD_ENCHANTMENT = §fVerzauberungswolke -PARTICLE_RAINCLOUD_SLIME = §fSchleimwolke -PARTICLE_RAINCLOUD_HAIL = §fHagelwolke -PARTICLE_RAINCLOUD_SNOW = §fSchneewolke -PARTICLE_RAINCLOUD_TOTEM = §fTotemwolke - PARTICLE_EVENT_ENCHANTING = §cVerzaubert PARTICLE_EVENT_CLOUD = §fWolken PARTICLE_EVENT_SMOKE = §7Rauch diff --git a/LobbySystem/src/de/steamwar/lobby/particle/ParticleRequirement.java b/LobbySystem/src/de/steamwar/lobby/particle/ParticleRequirement.java index f5e29349..4d5c3fc3 100644 --- a/LobbySystem/src/de/steamwar/lobby/particle/ParticleRequirement.java +++ b/LobbySystem/src/de/steamwar/lobby/particle/ParticleRequirement.java @@ -39,11 +39,7 @@ public interface ParticleRequirement { String getRequirementName(Player player); - boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig); - - default boolean test(UnlockContext context) { - return test(context.getUser(), context.getEvents(), context.getEggHuntConfig()); - } + boolean test(UnlockContext context); ParticleRequirement SERVER_TEAM = new ParticleRequirement() { @Override @@ -51,11 +47,6 @@ public interface ParticleRequirement { return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_SERVER_TEAM", player); } - @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.hasPerm(UserPerm.TEAM); - } - @Override public boolean test(UnlockContext context) { return context.getUser().hasPerm(UserPerm.TEAM); @@ -68,56 +59,24 @@ public interface ParticleRequirement { return null; } - @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return true; - } - @Override public boolean test(UnlockContext context) { return true; } }; - // Unlike HAS_TEAM this does not also pass for the server team + // Does not also pass for the server team ParticleRequirement TEAM_MEMBER = new ParticleRequirement() { @Override public String getRequirementName(Player player) { return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_TEAM", player); } - @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getTeam() != 0; - } - @Override public boolean test(UnlockContext context) { return context.getUser().getTeam() != 0; } }; - ParticleRequirement HAS_TEAM = new ParticleRequirement() { - @Override - public String getRequirementName(Player player) { - return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_TEAM", player); - } - - @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getTeam() != 0; - } - }.or(SERVER_TEAM); - ParticleRequirement EVENT_PARTICIPATION = new ParticleRequirement() { - @Override - public String getRequirementName(Player player) { - return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_EVENT", player); - } - - @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return !eventTeilname.isEmpty(); - } - }.or(SERVER_TEAM); ParticleRequirement EGG_HUNT_EASY = _easterEggHuntDifficulty(EggDifficulty.EASY); ParticleRequirement EGG_HUNT_MEDIUM = _easterEggHuntDifficulty(EggDifficulty.MEDIUM); ParticleRequirement EGG_HUNT_HARD = _easterEggHuntDifficulty(EggDifficulty.HARD); @@ -130,7 +89,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { + public boolean test(UnlockContext context) { + String eggHuntConfig = context.getEggHuntConfig(); if (eggHuntConfig == null) return false; int count = 0; for (int i = 0; i < eggHuntConfig.length(); i++) { @@ -152,8 +112,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getTeam() == teamId; + public boolean test(UnlockContext context) { + return context.getUser().getTeam() == teamId; } }.or(SERVER_TEAM); } @@ -167,8 +127,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return eventTeilname.contains(eventId); + public boolean test(UnlockContext context) { + return context.getEvents().contains(eventId); } }.or(SERVER_TEAM); } @@ -184,9 +144,9 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - if (!eventTeilname.contains(eventId)) return false; - return teams.contains(user.getTeam()); + public boolean test(UnlockContext context) { + if (!teams.contains(context.getUser().getTeam())) return false; + return context.getEvents().contains(eventId); } }.or(SERVER_TEAM); } @@ -213,7 +173,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { + public boolean test(UnlockContext context) { + String eggHuntConfig = context.getEggHuntConfig(); if (eggHuntConfig == null) return false; return eggs.stream().allMatch(id -> eggHuntConfig.length() > id && eggHuntConfig.charAt(id) == '1'); } @@ -229,8 +190,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getId() == userId; + public boolean test(UnlockContext context) { + return context.getUser().getId() == userId; } }.or(SERVER_TEAM); } @@ -244,8 +205,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getId() == userId; + public boolean test(UnlockContext context) { + return context.getUser().getId() == userId; } }.or(SERVER_TEAM); } @@ -260,12 +221,13 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return user.getTeam() == teamId; + public boolean test(UnlockContext context) { + return context.getUser().getTeam() == teamId; } }.or(SERVER_TEAM); } + // The alternative is checked first, as it is usually the cheap server team check default ParticleRequirement or(ParticleRequirement particleRequirement) { return new ParticleRequirement() { @Override @@ -274,8 +236,8 @@ public interface ParticleRequirement { } @Override - public boolean test(SteamwarUser user, Set eventTeilname, String eggHuntConfig) { - return ParticleRequirement.this.test(user, eventTeilname, eggHuntConfig) || particleRequirement.test(user, eventTeilname, eggHuntConfig); + public boolean test(UnlockContext context) { + return particleRequirement.test(context) || ParticleRequirement.this.test(context); } }; } diff --git a/LobbySystem/src/de/steamwar/lobby/particle/design/RewardDesigns.java b/LobbySystem/src/de/steamwar/lobby/particle/design/RewardDesigns.java index 6a85b03d..921dd571 100644 --- a/LobbySystem/src/de/steamwar/lobby/particle/design/RewardDesigns.java +++ b/LobbySystem/src/de/steamwar/lobby/particle/design/RewardDesigns.java @@ -47,19 +47,19 @@ public class RewardDesigns { .set(GLIDING, Gliding.NOT_GLIDING); public final ParticleDesign EVENT_PLACEMENT_WARGEAR_SEASON = new FixedDesign("event_placement_wargear_season", Material.ENCHANTING_TABLE, "PARTICLE_EVENT_ENCHANTING", - ParticleRequirement.eventPlacement(22, 12, 285, 54), 1, MOVE, + ParticleRequirement.eventPlacement(22, 12, 285, 54), 5, MOVE, () -> new Cloud(new Circle(new LocationMutator(new SimpleParticle(Particle.ENCHANT, 0, 0, 0, 0.01), 0, 1.1, 0)))); public final ParticleDesign EVENT_PLACEMENT_AIRSHIP = new FixedDesign("event_placement_airship", Material.SNOWBALL, "PARTICLE_EVENT_CLOUD", - ParticleRequirement.eventPlacement(26, 205, 9, 54, 120, 292), 1, MOVE, + ParticleRequirement.eventPlacement(26, 205, 9, 54, 120, 292), 5, MOVE, () -> new Circle(new LocationMutator(new SimpleParticle(Particle.CLOUD, 0, 0, 0, 0.01), 0, 2.2, 0))); public final ParticleDesign EVENT_PLACEMENT_HELLS_BELLS = new FixedDesign("event_placement_hells_bells", Material.TNT_MINECART, "PARTICLE_EVENT_SMOKE", - ParticleRequirement.eventPlacement(28, 205, 9, 11), 1, MOVE, + ParticleRequirement.eventPlacement(28, 205, 9, 11), 5, MOVE, () -> new Cloud(new Circle(new LocationMutator(new SimpleParticle(Particle.CAMPFIRE_COSY_SMOKE, 0, 0, 0, 0.01), 0, 2.2, 0)))); public final ParticleDesign EVENT_PLACEMENT_UNDERWATER = new FixedDesign("event_placement_underwater", Material.PRISMARINE_SHARD, "PARTICLE_EVENT_WATER", - ParticleRequirement.eventPlacement(31, 9, 210, 520), 1, MOVE, + ParticleRequirement.eventPlacement(31, 9, 210, 520), 5, MOVE, () -> new Cloud(new SimpleParticle(Particle.DRIPPING_WATER))); public final ParticleDesign EVENT_PLACEMENT_ADVENT_WAR_SHIP = new FixedDesign("event_placement_advent_war_ship", Material.PRISMARINE_CRYSTALS, "PARTICLE_EVENT_WATER", - ParticleRequirement.eventPlacement(32, 9, 205, 210), 2, ALWAYS, + ParticleRequirement.eventPlacement(32, 9, 205, 210), 10, ALWAYS, () -> new LocationMutator(new Circle(new Group(new SimpleParticle(Particle.DRIPPING_WATER), new SimpleParticle(Particle.UNDERWATER, 0.2F, 0.2F, 0.2F, 0.01))), 0, 1.1, 0)); public final ParticleDesign EVENT_PLACEMENT_MINI_WARGEAR_LIGA = wings("event_placement_mini_wargear_liga", Material.IRON_SWORD, "PARTICLE_EVENT_WINGS", ParticleRequirement.eventPlacement(33, 9, 34, 205), Particle.UNDERWATER, 0.15, WingDesign.MWGL); @@ -73,25 +73,25 @@ public class RewardDesigns { ParticleRequirement.eventPlacement(38, 210, 158, 167, 286), Particle.CRIT, 0.1, WingDesign.SWORD_CROSSED); public final ParticleDesign EVENT_PARTICIPATION_WARGEAR_SEASON = new FixedDesign("event_participation_wargear_season", Material.BOOK, "PARTICLE_EVENT_ENCHANTING", - ParticleRequirement.eventParticipation(22), 1, MOVE, + ParticleRequirement.eventParticipation(22), 5, MOVE, () -> new SimpleParticle(Particle.ENCHANT)); public final ParticleDesign EVENT_PARTICIPATION_AIRSHIP = new FixedDesign("event_participation_airship", Material.SNOW_BLOCK, "PARTICLE_EVENT_CLOUD", - ParticleRequirement.eventParticipation(26), 1, MOVE, + ParticleRequirement.eventParticipation(26), 5, MOVE, () -> new SimpleParticle(Particle.CLOUD)); public final ParticleDesign EVENT_PARTICIPATION_HELLS_BELLS = new FixedDesign("event_participation_hells_bells", Material.TNT, "PARTICLE_EVENT_SMOKE", - ParticleRequirement.eventParticipation(28), 1, MOVE, + ParticleRequirement.eventParticipation(28), 5, MOVE, () -> new Circle(new SimpleParticle(Particle.CAMPFIRE_COSY_SMOKE, 0, 0, 0, 0.01))); public final ParticleDesign EVENT_PARTICIPATION_UNDERWATER = new FixedDesign("event_participation_underwater", Material.PRISMARINE_BRICKS, "PARTICLE_EVENT_WATER", - ParticleRequirement.eventParticipation(31), 1, MOVE, + ParticleRequirement.eventParticipation(31), 5, MOVE, () -> new SimpleParticle(Particle.DRIPPING_WATER)); public final ParticleDesign EVENT_PARTICIPATION_ADVENT_WAR_SHIP = new FixedDesign("event_participation_advent_war_ship", Material.PRISMARINE_WALL, "PARTICLE_EVENT_WATER", - ParticleRequirement.eventParticipation(32), 2, MOVE, + ParticleRequirement.eventParticipation(32), 10, MOVE, () -> new Group(new SimpleParticle(Particle.DRIPPING_WATER), new SimpleParticle(Particle.UNDERWATER, 0.2F, 0.2F, 0.2F, 0.01))); public final ParticleDesign EVENT_PARTICIPATION_MINI_WARGEAR_LIGA = new FixedDesign("event_participation_mini_wargear_liga", Material.PRISMARINE_SLAB, "PARTICLE_EVENT_WATER", - ParticleRequirement.eventParticipation(33), 1, MOVE, + ParticleRequirement.eventParticipation(33), 5, MOVE, () -> new Circle(new SimpleParticle(Particle.UNDERWATER, 0, 0, 0, 0))); public final ParticleDesign EVENT_PARTICIPATION_UNDERWATER_MWG = new FixedDesign("event_participation_underwater_mwg", Material.BLUE_CARPET, "PARTICLE_EVENT_RAIN_CLOUD", - ParticleRequirement.eventParticipation(35), 3, ALWAYS, + ParticleRequirement.eventParticipation(35), 15, ALWAYS, () -> new RandomParticle( rainCloud(Particle.RAIN, Particle.DRIPPING_WATER, 5), rainCloud(null, Particle.DRIPPING_LAVA, 5), @@ -113,7 +113,7 @@ public class RewardDesigns { ParticleRequirement.EGG_HUNT_EASY, 1, ALWAYS, () -> new LocationMutator(new SimpleParticle(Particle.FALLING_SPORE_BLOSSOM, 0.5F, 0.1f, 0.5F, 1, 1), 0, 2.2, 0)); public final ParticleDesign EGG_HUNT_MEDIUM = new FixedDesign("egg_hunt_medium", Material.YELLOW_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_MEDIUM", - ParticleRequirement.EGG_HUNT_MEDIUM, 1, ALWAYS.andThen(values -> values.set(GROUND, Ground.ON_GROUND).set(SNEAK, Sneak.SNEAKING)), + ParticleRequirement.EGG_HUNT_MEDIUM, 5, ALWAYS.andThen(values -> values.set(GROUND, Ground.ON_GROUND).set(SNEAK, Sneak.SNEAKING)), () -> new SimpleParticle(Particle.GLOW_SQUID_INK, 0.4F, 0.9F, 0.4F, 0.01)); public final ParticleDesign EGG_HUNT_HARD = new FixedDesign("egg_hunt_hard", Material.RED_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_HARD", ParticleRequirement.EGG_HUNT_HARD, 2, ALWAYS, @@ -133,7 +133,7 @@ public class RewardDesigns { ), 0, -0.2, 0)); // Hearts above the head while sneaking on the ground, a heart cloud ring while in the air public final ParticleDesign EGG_HUNT_HALF = new FixedDesign("egg_hunt_half", Material.EGG, "PARTICLE_EGG_HUNT_HALF", - ParticleRequirement.EGG_HUNT_FOUND_HALF, 1, ALWAYS, + ParticleRequirement.EGG_HUNT_FOUND_HALF, 5, ALWAYS, () -> new Group( new Sneaking(new Floor(new LocationMutator(new SimpleParticle(Particle.HEART, 0, 0, 0, 0.01), 0, 1.7, 0))), new NonFloor(new NonFlying(new LocationMutator(new Cloud(new Circle(new SimpleParticle(Particle.HEART, 0, 0, 0, 0.01))), 0, 0.5, 0))) diff --git a/LobbySystem/src/de/steamwar/lobby/particle/slot/ParticleSlots.java b/LobbySystem/src/de/steamwar/lobby/particle/slot/ParticleSlots.java index 47e254bd..d047f25c 100644 --- a/LobbySystem/src/de/steamwar/lobby/particle/slot/ParticleSlots.java +++ b/LobbySystem/src/de/steamwar/lobby/particle/slot/ParticleSlots.java @@ -36,9 +36,9 @@ public class ParticleSlots { public final int MAX_ENTRIES = 10; private final String KEY_PREFIX = "lobby-particle-slot-"; - // Particle positions per tick a slot may spawn + // Particles per tick a slot may spawn. A default entry costs 5; the largest preset costs 38. public double maxCost(SteamwarUser user) { - return user.hasPerm(UserPerm.TEAM) ? 80 : 40; + return user.hasPerm(UserPerm.TEAM) ? 60 : 30; } // Slots 1-3 for everyone, 4-5 for team members, 6-7 for the server team diff --git a/Packet.md b/Packet.md new file mode 100644 index 00000000..e69de29b