diff options
| author | ketsuban_152 <webmaster@dangofacotry.net> | 2026-07-04 21:59:07 +0900 |
|---|---|---|
| committer | ketsuban_152 <webmaster@dangofacotry.net> | 2026-07-04 21:59:07 +0900 |
| commit | 8354ed6c09e960d2f48d7bc40b7c7978947524eb (patch) | |
| tree | eba1dfff5d762cb6c991e93f27c8d2cae5e6a57f /src/main/java/luckyblock/action/triggers/SummonTrigger.java | |
| download | LuckyBlock-master.tar.gz LuckyBlock-master.tar.bz2 LuckyBlock-master.zip | |
Diffstat (limited to 'src/main/java/luckyblock/action/triggers/SummonTrigger.java')
| -rw-r--r-- | src/main/java/luckyblock/action/triggers/SummonTrigger.java | 72 |
1 files changed, 72 insertions, 0 deletions
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); + } + } + } + } + } + } +} + |
