blob: b6ac78dbe844d96f8e5f1c7346d34fea756c2c40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package moe.nea.potatocrime
import moe.nea.potatocrime.entity.PotatoGuardEntity
import moe.nea.potatocrime.events.OnEnterPotatoWorld
import moe.nea.potatocrime.registry.PotatoRegistry
import moe.nea.potatocrime.registry.PotatoTranslations
import net.fabricmc.api.ModInitializer
import net.fabricmc.fabric.api.`object`.builder.v1.entity.FabricDefaultAttributeRegistry
import net.minecraft.entity.SpawnReason
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.server.world.ServerWorld
import net.minecraft.util.math.Direction
import net.minecraft.world.dimension.DimensionTypes
import org.slf4j.LoggerFactory
object PotatoCrime : ModInitializer {
val modId = "potato-crime"
private val logger = LoggerFactory.getLogger("potato-crime")
override fun onInitialize() {
// This code runs as soon as Minecraft is in a mod-load-ready state.
// However, some things (like resources) may still be uninitialized.
// Proceed with mild caution.
logger.info("Hello Fabric world!")
PotatoRegistry.registerAll()
FabricDefaultAttributeRegistry.register(PotatoRegistry.potatoGuard, PotatoGuardEntity.createMobAttributes())
OnEnterPotatoWorld.EVENT.register(OnEnterPotatoWorld { player ->
if (player is ServerPlayerEntity
&& player.world.dimensionEntry.matchesKey(DimensionTypes.POTATO)
&& hasContraband(player)
) {
player.sendMessage(PotatoTranslations.youBrokeTheLaw.format())
repeat(player.random.nextBetween(2, 4)) {
val randomOffsetPosition =
player.blockPos
.offset(Direction.Axis.X, player.random.nextBetween(-10, 10))
.offset(Direction.Axis.Z, player.random.nextBetween(-10, 10))
player.world.spawnEntity(
PotatoRegistry.potatoGuard.create(
player.world as ServerWorld,
null,
randomOffsetPosition,
SpawnReason.EVENT,
false,
false
)
)
}
}
})
}
fun hasContraband(entity: ServerPlayerEntity): Boolean {
return entity.inventory
.getMatchingStacks { it.isIn(PotatoRegistry.carrotIshItems) }
.isNotEmpty()
}
}
|