summaryrefslogtreecommitdiff
path: root/src/main/java/luckyblock/action/triggers
diff options
context:
space:
mode:
authorketsuban_152 <webmaster@dangofacotry.net>2026-07-04 21:59:07 +0900
committerketsuban_152 <webmaster@dangofacotry.net>2026-07-04 21:59:07 +0900
commit8354ed6c09e960d2f48d7bc40b7c7978947524eb (patch)
treeeba1dfff5d762cb6c991e93f27c8d2cae5e6a57f /src/main/java/luckyblock/action/triggers
downloadLuckyBlock-master.tar.gz
LuckyBlock-master.tar.bz2
LuckyBlock-master.zip
Initial commitHEADmaster
Diffstat (limited to 'src/main/java/luckyblock/action/triggers')
-rw-r--r--src/main/java/luckyblock/action/triggers/BroadcastTrigger.java33
-rw-r--r--src/main/java/luckyblock/action/triggers/ILuckyTrigger.java12
-rw-r--r--src/main/java/luckyblock/action/triggers/SummonItemTrigger.java34
-rw-r--r--src/main/java/luckyblock/action/triggers/SummonTrigger.java72
-rw-r--r--src/main/java/luckyblock/action/triggers/TrappedRoomTrigger.java38
5 files changed, 189 insertions, 0 deletions
diff --git a/src/main/java/luckyblock/action/triggers/BroadcastTrigger.java b/src/main/java/luckyblock/action/triggers/BroadcastTrigger.java
new file mode 100644
index 0000000..fae58f0
--- /dev/null
+++ b/src/main/java/luckyblock/action/triggers/BroadcastTrigger.java
@@ -0,0 +1,33 @@
+package luckyblock.action.triggers;
+
+
+import luckyblock.action.LuckyActionHolder;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.Component;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.RandomSource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BroadcastTrigger implements ILuckyTrigger {
+ @Override
+ public String getName() {
+ return "broadcast";
+ }
+
+ @Override
+ public void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random) {
+ if (holder.json != null) {
+ List<String> messages = new ArrayList<>();
+ if (holder.json.isJsonArray()) {
+ holder.json.getAsJsonArray().forEach(e -> messages.add(e.getAsString()));
+ } else if (holder.json.isJsonPrimitive()) {
+ messages.add(holder.json.getAsString());
+ }
+ for (String msg : messages) {
+ level.getServer().getPlayerList().broadcastSystemMessage(Component.literal(msg), false);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/luckyblock/action/triggers/ILuckyTrigger.java b/src/main/java/luckyblock/action/triggers/ILuckyTrigger.java
new file mode 100644
index 0000000..6e42d01
--- /dev/null
+++ b/src/main/java/luckyblock/action/triggers/ILuckyTrigger.java
@@ -0,0 +1,12 @@
+package luckyblock.action.triggers;
+
+import luckyblock.action.LuckyActionHolder;
+import net.minecraft.core.BlockPos;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.RandomSource;
+
+public interface ILuckyTrigger {
+ String getName();
+
+ void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random);
+}
diff --git a/src/main/java/luckyblock/action/triggers/SummonItemTrigger.java b/src/main/java/luckyblock/action/triggers/SummonItemTrigger.java
new file mode 100644
index 0000000..fbf44ff
--- /dev/null
+++ b/src/main/java/luckyblock/action/triggers/SummonItemTrigger.java
@@ -0,0 +1,34 @@
+package luckyblock.action.triggers;
+
+
+import luckyblock.action.LuckyActionHolder;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.RandomSource;
+import net.minecraft.world.entity.item.ItemEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.Blocks;
+
+public class SummonItemTrigger implements ILuckyTrigger {
+ @Override
+ public String getName() {
+ return "summon_item";
+ }
+
+ @Override
+ public void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random) {
+ if (holder.items != null) {
+ for (String itemId : holder.items) {
+ var item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId));
+ if (item != Blocks.AIR.asItem()) {
+ for (int i = 0; i < holder.count; i++) {
+ ItemEntity entity = new ItemEntity(level, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, new ItemStack(item));
+ level.addFreshEntity(entity);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/luckyblock/action/triggers/SummonTrigger.java b/src/main/java/luckyblock/action/triggers/SummonTrigger.java
new file mode 100644
index 0000000..54103f5
--- /dev/null
+++ b/src/main/java/luckyblock/action/triggers/SummonTrigger.java
@@ -0,0 +1,72 @@
+package luckyblock.action.triggers;
+
+
+import luckyblock.action.LuckyActionHolder;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.RandomSource;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.item.FallingBlockEntity;
+import net.minecraft.world.entity.item.PrimedTnt;
+import net.minecraft.world.entity.monster.Creeper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.state.BlockState;
+
+public class SummonTrigger implements ILuckyTrigger {
+ @Override
+ public String getName() {
+ return "summon";
+ }
+
+ @Override
+ public void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random) {
+ if (holder.items != null) {
+ for (String itemId : holder.items) {
+ if (itemId.equals("minecraft:tnt")) {
+ for (int i = 0; i < holder.count; i++) {
+ PrimedTnt tnt = new PrimedTnt(EntityType.TNT, level);
+ double rx = pos.getX() + 0.5 + (random.nextDouble() - 0.5) * 4;
+ double rz = pos.getZ() + 0.5 + (random.nextDouble() - 0.5) * 4;
+ double ry = pos.getY() + holder.height;
+ tnt.moveTo(rx, ry, rz, 0.0F, 0.0F);
+ tnt.setFuse(holder.height > 0 ? 40 + random.nextInt(20) : 60 + random.nextInt(20));
+ level.addFreshEntity(tnt);
+ }
+ } else {
+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(itemId));
+ if (block != Blocks.AIR) {
+ BlockState blockState = block.defaultBlockState();
+ for (int i = 0; i < holder.count; i++) {
+ BlockPos spawnPos = pos.above(holder.height + i);
+ FallingBlockEntity falling = FallingBlockEntity.fall(level, spawnPos, blockState);
+ level.addFreshEntity(falling);
+ }
+ }
+ }
+ }
+ }
+ if (holder.mobs != null) {
+ for (String mobId : holder.mobs) {
+ EntityType<?> entityType = BuiltInRegistries.ENTITY_TYPE.get(new ResourceLocation(mobId));
+ if (entityType != null) {
+ for (int i = 0; i < holder.count; i++) {
+ BlockPos spawnPos = pos.above(holder.height > 0 ? holder.height : 1);
+ var entity = entityType.spawn(level, spawnPos, MobSpawnType.COMMAND);
+ if (entity instanceof Creeper creeper && holder.is_powered) {
+ CompoundTag nbt = new CompoundTag();
+ creeper.saveWithoutId(nbt);
+ nbt.putBoolean("powered", true);
+ creeper.load(nbt);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
diff --git a/src/main/java/luckyblock/action/triggers/TrappedRoomTrigger.java b/src/main/java/luckyblock/action/triggers/TrappedRoomTrigger.java
new file mode 100644
index 0000000..818fb07
--- /dev/null
+++ b/src/main/java/luckyblock/action/triggers/TrappedRoomTrigger.java
@@ -0,0 +1,38 @@
+package luckyblock.action.triggers;
+
+
+import luckyblock.action.LuckyActionHolder;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.RandomSource;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.state.BlockState;
+
+public class TrappedRoomTrigger implements ILuckyTrigger {
+ @Override
+ public String getName() {
+ return "trapped_room";
+ }
+
+ @Override
+ public void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random) {
+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(holder.wall_block));
+ BlockState wallState = (block != null) ? block.defaultBlockState() : Blocks.STONE_BRICKS.defaultBlockState();
+ int r = holder.radius;
+ for (int x = -r; x <= r; x++) {
+ for (int y = 0; y <= r * 2; y++) {
+ for (int z = -r; z <= r; z++) {
+ BlockPos targetPos = pos.offset(x, y, z);
+ if (Math.abs(x) == r || Math.abs(z) == r || y == 0 || y == r * 2) {
+ level.setBlock(targetPos, wallState, 3);
+ } else {
+ level.setBlock(targetPos, Blocks.AIR.defaultBlockState(), 3);
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file