50 lines
2.1 KiB
Java
Raw Normal View History

2023-01-31 13:12:58 +03:00
package ru.magistu.siegemachines.entity.projectile;
import ru.magistu.siegemachines.entity.EntityTypes;
import ru.magistu.siegemachines.item.ModItems;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.projectile.Arrow;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
public class ProjectileBuilder<T extends Projectile>
{
public final static ProjectileBuilder<Stone> NONE = new ProjectileBuilder<>(Items.AIR, EntityTypes.STONE.get(), Stone::new);
public final static ProjectileBuilder[] NO_AMMO = new ProjectileBuilder[]{};
public final static ProjectileBuilder[] CANNON_AMMO = new ProjectileBuilder[]{
new ProjectileBuilder(ModItems.CANNONBALL.get(), EntityTypes.CANNONBALL.get(), Cannonball::new)};
public final static ProjectileBuilder[] THROWING_AMMO = new ProjectileBuilder[]{
new ProjectileBuilder(Items.COBBLESTONE, ModItems.STONE.get(), EntityTypes.STONE.get(), Stone::new)};
public final static ProjectileBuilder[] BALLISTA_AMMO = new ProjectileBuilder[]{
new ProjectileBuilder(ModItems.GIANT_ARROW.get(), EntityTypes.GIANT_ARROW.get(), GiantArrow::new),
new ProjectileBuilder(Items.ARROW, EntityType.ARROW, (entitytype, level, pos, entity, item) ->
{
Arrow arrow = new Arrow(level, entity);
arrow.setPos(pos.x, pos.y, pos.z);
return arrow;
})};
public final Item item;
public final Item projectilitem;
public final EntityType<T> entitytype;
public final IProjectileFactory<T> factory;
public ProjectileBuilder(Item item, EntityType<T> entitytype, IProjectileFactory<T> factory)
{
this(item, item, entitytype, factory);
}
public ProjectileBuilder(Item item, Item projectilitem, EntityType<T> entitytype, IProjectileFactory<T> factory)
{
this.item = item;
this.projectilitem = projectilitem;
this.entitytype = entitytype;
this.factory = factory;
}
}