aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt')
-rw-r--r--src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt56
1 files changed, 47 insertions, 9 deletions
diff --git a/src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt b/src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt
index 5d0cddc..b6ac78d 100644
--- a/src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt
+++ b/src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt
@@ -1,22 +1,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"
+ 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())
- }
+ 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()
+
+ }
} \ No newline at end of file