aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe')
-rw-r--r--src/main/kotlin/moe/nea/potatocrime/PotatoCrime.kt56
-rw-r--r--src/main/kotlin/moe/nea/potatocrime/entity/PotatoGuard.kt8
-rw-r--r--src/main/kotlin/moe/nea/potatocrime/events/OnWorldSwap.kt14
-rw-r--r--src/main/kotlin/moe/nea/potatocrime/registry/PotatoTranslations.kt1
4 files changed, 65 insertions, 14 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
diff --git a/src/main/kotlin/moe/nea/potatocrime/entity/PotatoGuard.kt b/src/main/kotlin/moe/nea/potatocrime/entity/PotatoGuard.kt
index 33ea7d1..40e0519 100644
--- a/src/main/kotlin/moe/nea/potatocrime/entity/PotatoGuard.kt
+++ b/src/main/kotlin/moe/nea/potatocrime/entity/PotatoGuard.kt
@@ -1,6 +1,6 @@
package moe.nea.potatocrime.entity
-import moe.nea.potatocrime.registry.PotatoRegistry
+import moe.nea.potatocrime.PotatoCrime
import net.minecraft.entity.EntityType
import net.minecraft.entity.ai.goal.*
import net.minecraft.entity.attribute.DefaultAttributeContainer
@@ -8,6 +8,7 @@ import net.minecraft.entity.attribute.EntityAttributes
import net.minecraft.entity.mob.HostileEntity
import net.minecraft.entity.mob.PathAwareEntity
import net.minecraft.entity.player.PlayerEntity
+import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.world.World
class PotatoGuardEntity(entityType: EntityType<out PotatoGuardEntity>, world: World?) :
@@ -40,10 +41,7 @@ class PotatoGuardEntity(entityType: EntityType<out PotatoGuardEntity>, world: Wo
PlayerEntity::class.java,
true
) { player ->
- (player as PlayerEntity)
- .inventory
- .getMatchingStacks { it.isIn(PotatoRegistry.carrotIshItems) }
- .isNotEmpty()
+ PotatoCrime.hasContraband(player as ServerPlayerEntity)
}
)
}
diff --git a/src/main/kotlin/moe/nea/potatocrime/events/OnWorldSwap.kt b/src/main/kotlin/moe/nea/potatocrime/events/OnWorldSwap.kt
new file mode 100644
index 0000000..135ea51
--- /dev/null
+++ b/src/main/kotlin/moe/nea/potatocrime/events/OnWorldSwap.kt
@@ -0,0 +1,14 @@
+package moe.nea.potatocrime.events
+
+import net.fabricmc.fabric.api.event.EventFactory
+import net.minecraft.entity.Entity
+
+fun interface OnEnterPotatoWorld {
+ fun onEnterPotatoWorld(entity: Entity)
+
+ companion object {
+ val EVENT = EventFactory.createArrayBacked(OnEnterPotatoWorld::class.java) { events ->
+ OnEnterPotatoWorld { entity -> events.forEach { it.onEnterPotatoWorld(entity) } }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/moe/nea/potatocrime/registry/PotatoTranslations.kt b/src/main/kotlin/moe/nea/potatocrime/registry/PotatoTranslations.kt
index 8d7fd19..a2cabf8 100644
--- a/src/main/kotlin/moe/nea/potatocrime/registry/PotatoTranslations.kt
+++ b/src/main/kotlin/moe/nea/potatocrime/registry/PotatoTranslations.kt
@@ -21,5 +21,6 @@ object PotatoTranslations {
val noCarrotsToDeposit = PT("no-carrots", "No carrots to deposit.")
val itemGroup = PT("item-group", "Potato Crimes")
val contrabandFillText = PT("fill-level", "Hidden carrots: %s/1000.")
+ val youBrokeTheLaw = PT("arrest", "You broke the law by bringing carrots into those holy land!")
} \ No newline at end of file