Add minumum version requirements to mutations

This commit is contained in:
Austin Mayes 2019-06-19 11:13:47 -05:00
parent c4b22575f9
commit 45d0ff46ae
No known key found for this signature in database
GPG Key ID: 72C78ABE045D34F6
1 changed files with 28 additions and 6 deletions

View File

@ -7,8 +7,11 @@ import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TranslatableComponent; import net.md_5.bungee.api.chat.TranslatableComponent;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player;
import tc.oc.commons.core.chat.Component; import tc.oc.commons.core.chat.Component;
import tc.oc.minecraft.protocol.MinecraftVersion;
import tc.oc.pgm.PGM; import tc.oc.pgm.PGM;
import tc.oc.pgm.mutation.types.MutationModule; import tc.oc.pgm.mutation.types.MutationModule;
import tc.oc.pgm.mutation.types.kit.*; import tc.oc.pgm.mutation.types.kit.*;
@ -27,22 +30,22 @@ public enum Mutation {
HARDCORE (HardcoreMutation.class, Material.GOLDEN_APPLE), HARDCORE (HardcoreMutation.class, Material.GOLDEN_APPLE),
JUMP (JumpMutation.class, Material.FEATHER), JUMP (JumpMutation.class, Material.FEATHER),
EXPLOSIVE (ExplosiveMutation.class, Material.FLINT_AND_STEEL), EXPLOSIVE (ExplosiveMutation.class, Material.FLINT_AND_STEEL),
ELYTRA (ElytraMutation.class, Material.ELYTRA), ELYTRA (ElytraMutation.class, Material.ELYTRA, MinecraftVersion.MINECRAFT_1_9),
PROJECTILE (ProjectileMutation.class, Material.TIPPED_ARROW), PROJECTILE (ProjectileMutation.class, Material.TIPPED_ARROW),
ENCHANTMENT(EnchantmentMutation.class, Material.ENCHANTMENT_TABLE), ENCHANTMENT(EnchantmentMutation.class, Material.ENCHANTMENT_TABLE),
POTION (PotionMutation.class, Material.POTION), POTION (PotionMutation.class, Material.POTION),
EQUESTRIAN (EquestrianMutation.class, Material.SADDLE), EQUESTRIAN (EquestrianMutation.class, Material.SADDLE, MinecraftVersion.MINECRAFT_1_9),
HEALTH (HealthMutation.class, Material.COOKED_BEEF), HEALTH (HealthMutation.class, Material.COOKED_BEEF),
GLOW (GlowMutation.class, Material.GLOWSTONE_DUST, false), GLOW (GlowMutation.class, Material.GLOWSTONE_DUST, MinecraftVersion.MINECRAFT_1_9),
STEALTH (StealthMutation.class, Material.THIN_GLASS), STEALTH (StealthMutation.class, Material.THIN_GLASS),
ARMOR (ArmorMutation.class, Material.DIAMOND_CHESTPLATE), ARMOR (ArmorMutation.class, Material.DIAMOND_CHESTPLATE),
MOBS (MobsMutation.class, Material.MONSTER_EGG), MOBS (MobsMutation.class, Material.MONSTER_EGG),
LIGHTNING (LightningMutation.class, Material.JACK_O_LANTERN), LIGHTNING (LightningMutation.class, Material.JACK_O_LANTERN),
BOMBER (BomberMutation.class, Material.TNT), BOMBER (BomberMutation.class, Material.TNT),
BREAD (BreadMutation.class, Material.BREAD), BREAD (BreadMutation.class, Material.BREAD),
BOAT (BoatMutation.class, Material.BOAT, false), BOAT (BoatMutation.class, Material.BOAT, MinecraftVersion.MINECRAFT_1_9),
TOOLS (ToolsMutation.class, Material.DIAMOND_PICKAXE), TOOLS (ToolsMutation.class, Material.DIAMOND_PICKAXE),
APOCALYPSE (ApocalypseMutation.class, Material.NETHER_STAR); APOCALYPSE (ApocalypseMutation.class, Material.NETHER_STAR, false);
public static final String TYPE_KEY = "mutation.type."; public static final String TYPE_KEY = "mutation.type.";
public static final String DESCRIPTION_KEY = ".desc"; public static final String DESCRIPTION_KEY = ".desc";
@ -50,15 +53,25 @@ public enum Mutation {
private final @Nullable Class<? extends MutationModule> loader; private final @Nullable Class<? extends MutationModule> loader;
private final Material guiDisplay; private final Material guiDisplay;
private final boolean pollable; private final boolean pollable;
private final MinecraftVersion minimumVersion;
Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay, MinecraftVersion minimumVersion) {
this(loader, guiDisplay, true, minimumVersion);
}
Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay) { Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay) {
this(loader, guiDisplay, true); this(loader, guiDisplay, true);
} }
Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay, boolean pollable) { Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay, boolean pollable) {
this(loader, guiDisplay, pollable, MinecraftVersion.MINECRAFT_1_4_7);
}
Mutation(@Nullable Class<? extends MutationModule> loader, Material guiDisplay, boolean pollable, MinecraftVersion minimumVersion) {
this.loader = loader; this.loader = loader;
this.guiDisplay = guiDisplay; this.guiDisplay = guiDisplay;
this.pollable = pollable; this.pollable = pollable;
this.minimumVersion = minimumVersion;
} }
public Class<? extends MutationModule> loader() { public Class<? extends MutationModule> loader() {
@ -70,7 +83,16 @@ public enum Mutation {
} }
public boolean isPollable() { public boolean isPollable() {
return pollable; if (!pollable) return false;
double total = Bukkit.getOnlinePlayers().size();
double withSupport = 0;
for (Player player : Bukkit.getOnlinePlayers()) {
if (MinecraftVersion.atLeast(minimumVersion, player.getProtocolVersion()))
withSupport++;
}
return (withSupport / total) > .75;
} }
public String getName() { public String getName() {