diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java index fc4f180..b35f0c7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java @@ -4,10 +4,7 @@ import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.enemies.WaveGenerator; import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.generator.MazeGenerator; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers.BlazeTower; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers.SkeletonTower; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers.Tower; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers.ZombieTower; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers.*; import eu.mhsl.minenet.minigames.score.LastWinsScore; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; @@ -33,12 +30,20 @@ public class Towerdefense extends StatelessGame { private final Map> availableTowers = Map.of( Material.SKELETON_SPAWN_EGG, SkeletonTower.class, Material.ZOMBIE_SPAWN_EGG, ZombieTower.class, - Material.BLAZE_SPAWN_EGG, BlazeTower.class + Material.BLAZE_SPAWN_EGG, BlazeTower.class, + Material.ENDERMAN_SPAWN_EGG, EndermanTower.class, + Material.PIGLIN_BRUTE_SPAWN_EGG, BruteTower.class, + Material.WITHER_SPAWN_EGG, WitherTower.class, + Material.ENDER_DRAGON_SPAWN_EGG, EnderDragonTower.class ); private final Map, Integer> prices = Map.of( ZombieTower.class, 4, SkeletonTower.class, 3, - BlazeTower.class, 8 + BlazeTower.class, 8, + EndermanTower.class, 20, + BruteTower.class, 27, + WitherTower.class, 40, + EnderDragonTower.class, 200 ); private static final int pathLength = 10; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/BruteTower.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/BruteTower.java new file mode 100644 index 0000000..eadfb2c --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/BruteTower.java @@ -0,0 +1,19 @@ +package eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.item.ItemStack; +import net.minestom.server.item.Material; + +public class BruteTower extends Tower { + public BruteTower() { + super(EntityType.PIGLIN_BRUTE, 20, 2, 4); + this.setItemInMainHand(ItemStack.of(Material.GOLDEN_AXE)); + } + + @Override + protected void attack(EntityCreature enemy) { + this.swingMainHand(); + this.causeDamage(enemy); + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EnderDragonTower.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EnderDragonTower.java new file mode 100644 index 0000000..12e3f96 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EnderDragonTower.java @@ -0,0 +1,20 @@ +package eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; + +public class EnderDragonTower extends ShootingTower{ + public EnderDragonTower() { + super(EntityType.ENDER_DRAGON, 40, 7, 20); + } + + @Override + protected void attack(EntityCreature enemy) { + this.shootProjectile(enemy, EntityType.DRAGON_FIREBALL, 2, 0); + } + + @Override + protected void onProjectileHit(EntityCreature enemy) { + super.onProjectileHit(enemy); + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EndermanTower.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EndermanTower.java new file mode 100644 index 0000000..5b057f8 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/EndermanTower.java @@ -0,0 +1,16 @@ +package eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; + +public class EndermanTower extends Tower { + public EndermanTower() { + super(EntityType.ENDERMAN, 12, 1, 6); + } + + @Override + protected void attack(EntityCreature enemy) { + this.swingMainHand(); + this.causeDamage(enemy); + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/WitherTower.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/WitherTower.java new file mode 100644 index 0000000..7eaab2d --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/towers/WitherTower.java @@ -0,0 +1,20 @@ +package eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.towers; + +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; + +public class WitherTower extends ShootingTower { + public WitherTower() { + super(EntityType.WITHER, 18, 4, 13); + } + + @Override + protected void attack(EntityCreature enemy) { + this.shootProjectile(enemy, EntityType.WITHER_SKULL, 2, 0); + } + + @Override + protected void onProjectileHit(EntityCreature enemy) { + super.onProjectileHit(enemy); + } +}