added strong towers
This commit is contained in:
@ -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.StatelessGame;
|
||||||
import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.enemies.WaveGenerator;
|
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.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.*;
|
||||||
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.score.LastWinsScore;
|
import eu.mhsl.minenet.minigames.score.LastWinsScore;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.coordinate.Pos;
|
import net.minestom.server.coordinate.Pos;
|
||||||
@ -33,12 +30,20 @@ public class Towerdefense extends StatelessGame {
|
|||||||
private final Map<Material, Class<? extends Tower>> availableTowers = Map.of(
|
private final Map<Material, Class<? extends Tower>> availableTowers = Map.of(
|
||||||
Material.SKELETON_SPAWN_EGG, SkeletonTower.class,
|
Material.SKELETON_SPAWN_EGG, SkeletonTower.class,
|
||||||
Material.ZOMBIE_SPAWN_EGG, ZombieTower.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<Class<? extends Tower>, Integer> prices = Map.of(
|
private final Map<Class<? extends Tower>, Integer> prices = Map.of(
|
||||||
ZombieTower.class, 4,
|
ZombieTower.class, 4,
|
||||||
SkeletonTower.class, 3,
|
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;
|
private static final int pathLength = 10;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user