diff --git a/src/main/java/com/alttd/ctf/game_class/GameClass.java b/src/main/java/com/alttd/ctf/game_class/GameClass.java index c4822c4..4df498b 100644 --- a/src/main/java/com/alttd/ctf/game_class/GameClass.java +++ b/src/main/java/com/alttd/ctf/game_class/GameClass.java @@ -25,6 +25,8 @@ import java.util.List; @Slf4j public abstract class GameClass { + //TODO simple class that does powedered snow + //TODO mage uses up more snowballs shot gun style immediately spawn them when thrown 5 sec or so cooldown? mayb 3 private static final MiniMessage miniMessage = MiniMessage.miniMessage(); private final List armor; diff --git a/src/main/java/com/alttd/ctf/game_class/GameClassRetrieval.java b/src/main/java/com/alttd/ctf/game_class/GameClassRetrieval.java index 6e66d2c..897687e 100644 --- a/src/main/java/com/alttd/ctf/game_class/GameClassRetrieval.java +++ b/src/main/java/com/alttd/ctf/game_class/GameClassRetrieval.java @@ -4,6 +4,7 @@ import com.alttd.ctf.game.GameManager; import com.alttd.ctf.game_class.creation.EngineerCreator; import com.alttd.ctf.game_class.creation.FighterCreator; import com.alttd.ctf.game_class.creation.TankCreator; +import com.alttd.ctf.game_class.creation.TrapperCreator; import com.alttd.ctf.team.Team; import java.util.ArrayList; @@ -24,6 +25,7 @@ public class GameClassRetrieval { final List gameClasses = new ArrayList<>(); gameClasses.add(FighterCreator.createFighter(team.getColor())); gameClasses.add(TankCreator.createTank(team.getColor())); + gameClasses.add(TrapperCreator.createTrapper(team.getColor())); gameClasses.add(EngineerCreator.createEngineer(team.getColor())); return gameClasses; } diff --git a/src/main/java/com/alttd/ctf/game_class/creation/TrapperCreator.java b/src/main/java/com/alttd/ctf/game_class/creation/TrapperCreator.java new file mode 100644 index 0000000..1866dfa --- /dev/null +++ b/src/main/java/com/alttd/ctf/game_class/creation/TrapperCreator.java @@ -0,0 +1,68 @@ +package com.alttd.ctf.game_class.creation; + +import com.alttd.ctf.game_class.GameClass; +import com.alttd.ctf.game_class.implementations.Tank; +import com.alttd.ctf.team.TeamColor; +import lombok.extern.slf4j.Slf4j; +import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Unmodifiable; + +import java.util.List; + +@Slf4j +public class TrapperCreator { + + private static final MiniMessage miniMessage = MiniMessage.miniMessage(); + + @Contract("_ -> new") + public static @NotNull GameClass createTrapper(@NotNull TeamColor teamColor) {//TODO add ability to become temp invulnerable (with some particle effects mayb?) + return new Tank(getArmor(), getTools(teamColor), getDisplayItem(teamColor), + 20, 7, 4); + } + + @Contract(value = " -> new", pure = true) + private static @Unmodifiable List getArmor() { + return (List.of(Material.LEATHER_BOOTS, Material.LEATHER_LEGGINGS, Material.LEATHER_CHESTPLATE, Material.AIR)); + } + + @Contract("_ -> new") + private static @NotNull @Unmodifiable List getTools(TeamColor teamColor) { + return (List.of(getShovel(teamColor), getPowderedSnow(teamColor))); + } + + private static @NotNull ItemStack getPowderedSnow(@NotNull TeamColor teamColor) { + ItemStack powderedSnow = new ItemStack(Material.POWDER_SNOW_BUCKET); + powderedSnow.setAmount(16); + ItemMeta itemMeta = powderedSnow.getItemMeta(); + itemMeta.itemName(MiniMessage.miniMessage().deserialize( + String.format("Snow Trap", teamColor.hex()))); + powderedSnow.setItemMeta(itemMeta); + return powderedSnow; + } + + private static @NotNull ItemStack getShovel(@NotNull TeamColor teamColor) { + ItemStack shovel = new ItemStack(Material.WOODEN_SHOVEL); + ItemMeta meta = shovel.getItemMeta(); + meta.setUnbreakable(true); + meta.itemName(miniMessage.deserialize(String.format("Snow shovel", teamColor.hex()))); + shovel.setItemMeta(meta); + return shovel; + } + + private static @NotNull ItemStack getDisplayItem(@NotNull TeamColor teamColor) { + ItemStack itemStack = new ItemStack(Material.POWDER_SNOW_BUCKET); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.displayName(miniMessage.deserialize(String.format("Trapper", teamColor.hex()))); + itemMeta.lore(List.of( + miniMessage.deserialize("The Trapper is a normal class, but it has a trick up it's sleeve"), + miniMessage.deserialize("They can place their powdered snow to trap the enemy team.") + )); + itemStack.setItemMeta(itemMeta); + return itemStack; + } +} diff --git a/src/main/java/com/alttd/ctf/game_class/implementations/Trapper.java b/src/main/java/com/alttd/ctf/game_class/implementations/Trapper.java new file mode 100644 index 0000000..6144800 --- /dev/null +++ b/src/main/java/com/alttd/ctf/game_class/implementations/Trapper.java @@ -0,0 +1,15 @@ +package com.alttd.ctf.game_class.implementations; + +import com.alttd.ctf.game_class.GameClass; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class Trapper extends GameClass { + protected Trapper(@NotNull List armor, @NotNull List tools, @NotNull ItemStack displayItem, + double health, int throwTickSpeed, int damage) { + super(armor, tools, displayItem, health, throwTickSpeed, damage); + } +}