|
20 | 20 | import net.neoforged.neoforge.common.util.TriState; |
21 | 21 |
|
22 | 22 | import java.util.Collection; |
| 23 | +import java.util.List; |
23 | 24 | import java.util.Objects; |
24 | | -import java.util.UUID; |
25 | 25 |
|
26 | 26 | public class AbyssMobEvent { |
27 | 27 | private static final short CHUNK_RADIUS = 28; |
| 28 | + private static final List<EntityType<? extends Mob>> riderTypes = List.of( |
| 29 | + EntityType.SKELETON, |
| 30 | + EntityType.BOGGED |
| 31 | + ); |
28 | 32 |
|
29 | 33 | public static void onCheckSpawn(Mob mob, ServerLevelAccessor level, MobSpawnType type) { |
30 | 34 | if (!MiaConfig.abyssMobLevelSwitch) return; |
@@ -115,21 +119,13 @@ private static int calculateMobLevel(double euclideanDistance, boolean reverse) |
115 | 119 | } |
116 | 120 |
|
117 | 121 | private static void createRidingSkeleton(ServerLevel serverLevel, Mob mob) { |
118 | | - EntityType<?>[] riderTypes = {EntityType.SKELETON, EntityType.BOGGED}; |
119 | | - var random = serverLevel.getRandom().nextInt(riderTypes.length); |
| 122 | + var type = riderTypes.get(serverLevel.getRandom().nextInt(riderTypes.size())); |
| 123 | + var rider = type.create(serverLevel, null, mob.blockPosition(), MobSpawnType.EVENT, false, false); |
120 | 124 |
|
121 | | - EntityType<?> riders = riderTypes[random]; |
122 | | - var rider = riders.create(serverLevel); |
| 125 | + if (!(rider instanceof LivingEntity entity)) |
| 126 | + return; |
123 | 127 |
|
124 | | - if (rider != null) { |
125 | | - rider.setUUID(UUID.randomUUID()); |
126 | | - rider.moveTo(mob.position()); |
127 | | - serverLevel.addFreshEntityWithPassengers(rider); |
128 | | - |
129 | | - if (rider instanceof LivingEntity entity) { |
130 | | - entity.setItemSlot(EquipmentSlot.MAINHAND, Items.BOW.getDefaultInstance()); |
131 | | - } |
132 | | - rider.startRiding(mob); |
133 | | - } |
| 128 | + entity.setItemSlot(EquipmentSlot.MAINHAND, Items.BOW.getDefaultInstance()); |
| 129 | + rider.startRiding(mob, true); |
134 | 130 | } |
135 | 131 | } |
0 commit comments