diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt index 67bb3819f..80accaab6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt @@ -15,6 +15,7 @@ import net.minecraft.nbt.ListTag import net.minecraft.nbt.LongArrayTag import net.minecraft.nbt.Tag import net.minecraft.world.Container +import net.minecraft.world.entity.Entity import net.minecraft.world.entity.LivingEntity import net.minecraft.world.item.ItemStack import net.minecraft.world.phys.Vec3 @@ -162,3 +163,7 @@ inline fun LazyOptional.ifPresentK(lambda: (T) -> Unit) { } val ItemStack.tagNotNull get() = orCreateTag + +inline var Entity.position: Vec3 + get() = position() + set(value) { setPos(value) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt index 0208cc993..0fa000786 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt @@ -12,13 +12,19 @@ import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.EntityHitResult import net.minecraft.world.phys.HitResult import net.minecraftforge.event.ForgeEventFactory +import ru.dbotthepony.mc.otm.core.Vector +import ru.dbotthepony.mc.otm.registry.MEntityTypes import ru.dbotthepony.mc.otm.registry.PlasmaDamageSource -class PlasmaProjectile(type: EntityType, level: Level) : Projectile(type, level) { +class PlasmaProjectile(level: Level) : Projectile(MEntityTypes.PLASMA as EntityType, level) { var inflictor: ItemStack? = null var damage = 6.0f var ttl = 200 + init { + deltaMovement = Vector(1.0, 0.0, 0.0) + } + override fun defineSynchedData() { } @@ -46,7 +52,7 @@ class PlasmaProjectile(type: EntityType, level: Level) : P } override fun tick() { - if (ttl-- <= 0) { + if (--ttl <= 0) { discard() return } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaRifleItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaRifleItem.kt index e89e1aee5..01fe13ef5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaRifleItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaRifleItem.kt @@ -4,6 +4,8 @@ import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.projectile.Arrow import net.minecraft.world.item.ItemStack import ru.dbotthepony.mc.otm.core.ImpreciseFraction +import ru.dbotthepony.mc.otm.entity.PlasmaProjectile +import ru.dbotthepony.mc.otm.position class PlasmaRifleItem : PlasmaWeaponItem(WeaponDataTable::class, ImpreciseFraction(200_000)) { override val roundsPerMinute: Int = 400 @@ -18,6 +20,10 @@ class PlasmaRifleItem : PlasmaWeaponItem(WeaponDataTable::class arrow.shootFromRotation(player, player.xRot, player.yRot, 0f, 2f, 0f) player.level.addFreshEntity(arrow) + + //val arrow = PlasmaProjectile(player.level) + //arrow.position = player.position + //player.level.addFreshEntity(arrow) } return true diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt index c0e3b2a89..768e7b073 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt @@ -11,7 +11,9 @@ import ru.dbotthepony.mc.otm.entity.PlasmaProjectile object MEntityTypes { private val registry: DeferredRegister> = DeferredRegister.create(ForgeRegistries.ENTITIES, OverdriveThatMatters.MOD_ID) - val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) { EntityType.Builder.of(::PlasmaProjectile, MobCategory.MISC).build(MNames.PLASMA) } + val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) { + EntityType.Builder.of({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).build(MNames.PLASMA) + } internal fun register() { registry.register(FMLJavaModLoadingContext.get().modEventBus)