Compare commits
No commits in common. "a9851e08b3b75a21ce75a5378a83cb38f8ef6266" and "7a7139c48c64129737ecae2de9f4d3883bddad35" have entirely different histories.
a9851e08b3
...
7a7139c48c
@ -134,11 +134,6 @@ object DataGen {
|
||||
blockStateProvider.simplePillar(block)
|
||||
}
|
||||
|
||||
fun decorativeLadder(block: Block){
|
||||
blockModelProvider.decorativeLadder(block)
|
||||
blockStateProvider.simpleLadder(block)
|
||||
}
|
||||
|
||||
fun stairs(block: StairBlock, side: String, top: String) {
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.stairsBlock(block, modLocation(side), modLocation(top), modLocation(top))
|
||||
|
@ -38,8 +38,6 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
DataGen.decorativeCubeAllCutout(MBlocks.METAL_MESH)
|
||||
DataGen.decorativePillar(MBlocks.TIRE_BLOCK, "carbon_fibre_block", "tire")
|
||||
|
||||
DataGen.decorativeLadder(MBlocks.INDUSTRIAL_LADDER)
|
||||
|
||||
DataGen.decoratives(MRegistry.TRITANIUM_BLOCK)
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
@ -262,10 +260,6 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
itemModelProvider.block(MItems.LABORATORY_LAMP_INVERTED, MItems.LABORATORY_LAMP.registryName!!.path + "_unlit")
|
||||
itemModelProvider.block(MItems.DANGER_STRIPE_BLOCK, MItems.DANGER_STRIPE_BLOCK.registryName!!.path + "_0")
|
||||
itemModelProvider.block(MItems.METAL_BEAM)
|
||||
|
||||
itemModelProvider.generatedBlockDecorative(MItems.INDUSTRIAL_LADDER)
|
||||
|
||||
|
||||
itemModelProvider.block(MItems.TIRE_BLOCK)
|
||||
|
||||
blockStateProvider.block(MBlocks.METAL_BEAM_CENTER)
|
||||
|
@ -3,13 +3,11 @@ package ru.dbotthepony.mc.otm.datagen.blocks
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock
|
||||
import net.minecraft.world.level.block.RotatedPillarBlock
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.neoforged.neoforge.client.model.generators.BlockStateProvider
|
||||
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||
import ru.dbotthepony.mc.otm.core.getValueNullable
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
@ -121,28 +119,6 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve
|
||||
return this
|
||||
}
|
||||
|
||||
fun simpleLadder(vararg blocks: Block): MatteryBlockStateProvider {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
|
||||
getVariantBuilder(block)
|
||||
.partialState().with(HorizontalDirectionalBlock.FACING, Direction.NORTH)
|
||||
.modelForState().modelFile(models().getExistingFile(modLocation("block/decorative/${block.registryName!!.path}"))).addModel()
|
||||
|
||||
.partialState().with(HorizontalDirectionalBlock.FACING, Direction.SOUTH)
|
||||
.modelForState().modelFile(models().getExistingFile(modLocation("block/decorative/${block.registryName!!.path}"))).rotationY(180).addModel()
|
||||
|
||||
.partialState().with(HorizontalDirectionalBlock.FACING, Direction.WEST)
|
||||
.modelForState().modelFile(models().getExistingFile(modLocation("block/decorative/${block.registryName!!.path}"))).rotationY(270).addModel()
|
||||
|
||||
.partialState().with(HorizontalDirectionalBlock.FACING, Direction.EAST)
|
||||
.modelForState().modelFile(models().getExistingFile(modLocation("block/decorative/${block.registryName!!.path}"))).rotationY(90).addModel()
|
||||
}
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
fun simpleBlockM(blocks: Collection<Block>): MatteryBlockStateProvider {
|
||||
blocks.forEach(this::simpleBlockM)
|
||||
return this
|
||||
|
@ -5,7 +5,6 @@ import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.WaterloggedTransparentBlock
|
||||
import net.neoforged.neoforge.client.model.generators.BlockModelProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
@ -52,12 +51,6 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeLadder(block: Block) {
|
||||
withExistingParent(block.registryName!!.path, ResourceLocation("minecraft", "block/ladder"))
|
||||
.texture("texture", modLocation("block/decorative/${block.registryName!!.path}"))
|
||||
.renderType("cutout")
|
||||
}
|
||||
|
||||
fun decorativeGlassAll(blocks: Collection<Block>) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
|
@ -82,8 +82,6 @@ fun addTags(tagsProvider: TagsProvider) {
|
||||
|
||||
tagsProvider.impermeable.add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.CLIMBABLE).add(MBlocks.INDUSTRIAL_LADDER)
|
||||
|
||||
tagsProvider.androidImmuneEffects.add(
|
||||
MobEffects.CONDUIT_POWER,
|
||||
MobEffects.HEAL,
|
||||
|
@ -6,7 +6,6 @@ import net.minecraft.network.syncher.EntityDataSerializers
|
||||
import net.minecraft.network.syncher.SynchedEntityData
|
||||
import net.minecraft.server.level.ServerBossEvent
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
import net.minecraft.sounds.SoundEvents
|
||||
import net.minecraft.sounds.SoundSource
|
||||
@ -34,9 +33,12 @@ import net.minecraft.world.entity.projectile.SmallFireball
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.isFire
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
||||
import java.util.*
|
||||
import kotlin.math.cos
|
||||
import kotlin.math.sin
|
||||
|
||||
class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
val idleState = AnimationState()
|
||||
@ -73,6 +75,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
return entityData.get(IS_CHARGING)
|
||||
}
|
||||
|
||||
|
||||
override fun registerGoals() {
|
||||
goalSelector.addGoal(7, LookAtPlayerGoal(this, Player::class.java, 8f))
|
||||
goalSelector.addGoal(3, NearestAttackableTargetGoal(this, LivingEntity::class.java, 10, true, true) { entity ->
|
||||
@ -86,7 +89,6 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
goalSelector.addGoal(2, RammingGoal(this))
|
||||
goalSelector.addGoal(2, StayNearGoal(this))
|
||||
goalSelector.addGoal(2, BlazeFireballGoal(this))
|
||||
|
||||
targetSelector.addGoal(1, HurtByTargetGoal(this))
|
||||
}
|
||||
|
||||
@ -96,7 +98,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun getHurtSound(damageSource: DamageSource): SoundEvent {
|
||||
override fun getHurtSound(damageSource: net.minecraft.world.damagesource.DamageSource): SoundEvent {
|
||||
return SoundEvents.HEAVY_CORE_BREAK
|
||||
}
|
||||
|
||||
@ -106,20 +108,25 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
|
||||
//fire inv
|
||||
//there should be a better way
|
||||
override fun fireImmune(): Boolean {
|
||||
return true
|
||||
override fun isInvulnerableTo(source: DamageSource): Boolean {
|
||||
return source.isFire || super.isInvulnerableTo(source)
|
||||
}
|
||||
|
||||
override fun hurt(source: DamageSource, amount: Float): Boolean {
|
||||
if (source.isFire) return false
|
||||
return super.hurt(source, amount)
|
||||
}
|
||||
|
||||
///boss healthbar
|
||||
private val bossEvent: ServerBossEvent =
|
||||
ServerBossEvent(TranslatableComponent(MNames.ENFORCER), BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.PROGRESS)
|
||||
|
||||
override fun startSeenByPlayer(player: ServerPlayer) {
|
||||
override fun startSeenByPlayer(player: net.minecraft.server.level.ServerPlayer) {
|
||||
super.startSeenByPlayer(player)
|
||||
bossEvent.addPlayer(player)
|
||||
}
|
||||
|
||||
override fun stopSeenByPlayer(player: ServerPlayer) {
|
||||
override fun stopSeenByPlayer(player: net.minecraft.server.level.ServerPlayer) {
|
||||
super.stopSeenByPlayer(player)
|
||||
bossEvent.removePlayer(player)
|
||||
}
|
||||
@ -127,13 +134,9 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
override fun aiStep() {
|
||||
super.aiStep()
|
||||
bossEvent.progress = this.health / this.maxHealth
|
||||
|
||||
if (!this.isOnFire) {
|
||||
this.clearFire()
|
||||
}
|
||||
}
|
||||
|
||||
override fun die(cause: DamageSource) {
|
||||
override fun die(cause: net.minecraft.world.damagesource.DamageSource) {
|
||||
super.die(cause)
|
||||
bossEvent.removeAllPlayers()
|
||||
}
|
||||
@ -195,7 +198,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
level().addFreshEntity(fireball)
|
||||
}
|
||||
|
||||
//charge attack
|
||||
//charge attack, could possibly leave a smoke trail too idk
|
||||
class RammingGoal(private val mob: Enforcer) : Goal() {
|
||||
private var target: LivingEntity? = null
|
||||
|
||||
@ -208,7 +211,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
private val maxChargeTime = 40
|
||||
private var chargeDir: Vec3? = null
|
||||
private var cooldown = 0
|
||||
private val minCooldown = 35
|
||||
private val minCooldown = 20
|
||||
private val maxCooldown = 60
|
||||
private var isCharging = false
|
||||
|
||||
@ -278,7 +281,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
stop()
|
||||
return
|
||||
}
|
||||
mob.playSound(MSoundEvents.ENFORCER_CHARGE, 1.0f, 1.0f)
|
||||
mob.playSound(MSoundEvents.ANDROID_JUMP_BOOST, 1.0f, 1.0f)
|
||||
}
|
||||
|
||||
val dir = chargeDir ?: return
|
||||
@ -307,7 +310,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
|
||||
target.push(knockback.x, 0.5, knockback.z)
|
||||
|
||||
val damageAmount = 14.0f
|
||||
val damageAmount = 10.0f
|
||||
target.hurt(mob.damageSources().mobAttack(mob), damageAmount)
|
||||
|
||||
stop()
|
||||
@ -343,7 +346,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
}
|
||||
|
||||
override fun tick() {
|
||||
target?.let { mob.lookControl.setLookAt(it, 30.0f, 30.0f) }
|
||||
mob.lookControl.setLookAt(target, 30.0f, 30.0f)
|
||||
val target = mob.target ?: return
|
||||
|
||||
if (moveCD > 0) {
|
||||
@ -397,12 +400,6 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
||||
if (fireTick > 0){
|
||||
fireTick --
|
||||
|
||||
|
||||
if (fireTick >= 19){
|
||||
mob.playSound(MSoundEvents.ENFORCER_BEEP, 1.0f, 1.0f)
|
||||
}
|
||||
|
||||
|
||||
if (fireTick == 15){
|
||||
mob.shootFireball(0.5f)
|
||||
//could have a better firing sound
|
||||
|
@ -122,8 +122,6 @@ object MNames {
|
||||
const val TRITANIUM_BARS = "tritanium_bars"
|
||||
const val METAL_RAILING = "metal_railing"
|
||||
|
||||
const val INDUSTRIAL_LADDER = "industrial_ladder"
|
||||
|
||||
// items
|
||||
const val GRAVITATIONAL_DISRUPTOR = "gravitational_disruptor"
|
||||
const val MATTER_DUST = "matter_dust"
|
||||
|
@ -10,7 +10,6 @@ import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import net.minecraft.world.level.block.DropExperienceBlock
|
||||
import net.minecraft.world.level.block.IronBarsBlock
|
||||
import net.minecraft.world.level.block.LadderBlock
|
||||
import net.minecraft.world.level.block.LiquidBlock
|
||||
import net.minecraft.world.level.block.RedstoneLampBlock
|
||||
import net.minecraft.world.level.block.RotatedPillarBlock
|
||||
@ -296,17 +295,6 @@ object MBlocks {
|
||||
.requiresCorrectToolForDrops())
|
||||
}
|
||||
|
||||
val INDUSTRIAL_LADDER: LadderBlock by registry.register(MNames.INDUSTRIAL_LADDER){
|
||||
LadderBlock(BlockBehaviour.Properties.of()
|
||||
.mapColor(MapColor.COLOR_GRAY)
|
||||
.sound(SoundType.COPPER_GRATE)
|
||||
.explosionResistance(30f)
|
||||
.noOcclusion()
|
||||
.destroyTime(2f)
|
||||
.requiresCorrectToolForDrops()
|
||||
)
|
||||
}
|
||||
|
||||
val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { DropExperienceBlock(
|
||||
UniformInt.of(0, 3),
|
||||
BlockBehaviour.Properties.of()
|
||||
|
@ -516,7 +516,6 @@ object MItems {
|
||||
val METAL_BEAM_CENTER: Item by registry.register(MNames.METAL_BEAM_CENTER) { BlockItem(MBlocks.METAL_BEAM_CENTER, DEFAULT_PROPERTIES) }
|
||||
val ENGINE: Item by registry.register(MNames.ENGINE) { BlockItem(MBlocks.ENGINE, DEFAULT_PROPERTIES) }
|
||||
val HOLO_SIGN: Item by registry.register(MNames.HOLO_SIGN) { BlockItem(MBlocks.HOLO_SIGN, DEFAULT_PROPERTIES) }
|
||||
val INDUSTRIAL_LADDER: Item by registry.register(MNames.INDUSTRIAL_LADDER) { BlockItem(MBlocks.INDUSTRIAL_LADDER, DEFAULT_PROPERTIES) }
|
||||
|
||||
val TRITANIUM_DOOR = register(MNames.TRITANIUM_DOOR, MBlocks.TRITANIUM_DOOR)
|
||||
val TRITANIUM_TRAPDOOR = register(MNames.TRITANIUM_TRAPDOOR, MBlocks.TRITANIUM_TRAPDOOR)
|
||||
|
@ -28,8 +28,6 @@ object MSoundEvents {
|
||||
val LOADER_AMBIENT by make("loader_ambient")
|
||||
|
||||
val ENFORCER_ALERT by make("enforcer_alert")
|
||||
val ENFORCER_CHARGE by make("enforcer_charge")
|
||||
val ENFORCER_BEEP by make("enforcer_beep")
|
||||
|
||||
fun register(bus: IEventBus) {
|
||||
registry.register(bus)
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 449 B |
Loading…
Reference in New Issue
Block a user