Skip to content

Commit 6b41b4b

Browse files
committed
Add platform specific EnderDragonPart access
1 parent be847f2 commit 6b41b4b

File tree

5 files changed

+71
-0
lines changed

5 files changed

+71
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package net.caffeinemc.mods.lithium.common.services;
2+
3+
import net.minecraft.world.entity.Entity;
4+
import net.minecraft.world.level.Level;
5+
import net.minecraft.world.phys.AABB;
6+
7+
import java.util.ArrayList;
8+
import java.util.function.Predicate;
9+
10+
public interface PlatformEntityAccess {
11+
PlatformEntityAccess INSTANCE = Services.load(PlatformEntityAccess.class);
12+
13+
void addEnderDragonParts(Level level, Entity excludedEntity, AABB box, Predicate<? super Entity> entityFilter, ArrayList<Entity> entities);
14+
15+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.caffeinemc.mods.lithium.fabric;
2+
3+
import net.caffeinemc.mods.lithium.common.services.PlatformEntityAccess;
4+
import net.minecraft.world.entity.Entity;
5+
import net.minecraft.world.entity.boss.EnderDragonPart;
6+
import net.minecraft.world.level.Level;
7+
import net.minecraft.world.phys.AABB;
8+
9+
import java.util.ArrayList;
10+
import java.util.function.Predicate;
11+
12+
public class FabricEntityAccess implements PlatformEntityAccess {
13+
14+
15+
@Override
16+
public void addEnderDragonParts(Level level, Entity excludedEntity, AABB box, Predicate<? super Entity> entityFilter, ArrayList<Entity> entities) {
17+
for (EnderDragonPart enderDragonPart : level.dragonParts()) {
18+
if (enderDragonPart != excludedEntity
19+
&& enderDragonPart.parentMob != excludedEntity
20+
&& entityFilter.test(enderDragonPart) &&
21+
box.intersects(enderDragonPart.getBoundingBox())
22+
) {
23+
entities.add(enderDragonPart);
24+
}
25+
}
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
net.caffeinemc.mods.lithium.fabric.FabricEntityAccess
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.caffeinemc.mods.lithium.neoforge;
2+
3+
import net.caffeinemc.mods.lithium.common.services.PlatformEntityAccess;
4+
import net.minecraft.world.entity.Entity;
5+
import net.minecraft.world.level.Level;
6+
import net.minecraft.world.phys.AABB;
7+
import net.neoforged.neoforge.entity.PartEntity;
8+
9+
import java.util.ArrayList;
10+
import java.util.function.Predicate;
11+
12+
public class NeoForgeEntityAccess implements PlatformEntityAccess {
13+
14+
@Override
15+
public void addEnderDragonParts(Level level, Entity excludedEntity, AABB box, Predicate<? super Entity> entityFilter, ArrayList<Entity> entities) {
16+
// [NeoForge Copy] Support for dragon parts and neoforge part entities
17+
for (PartEntity<?> partEntity : level.dragonParts()) {
18+
if (partEntity != excludedEntity
19+
&& partEntity.getParent() != excludedEntity
20+
&& entityFilter.test(partEntity)
21+
&& box.intersects(partEntity.getBoundingBox())
22+
) {
23+
entities.add(partEntity);
24+
}
25+
}
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
net.caffeinemc.mods.lithium.neoforge.NeoForgeEntityAccess

0 commit comments

Comments
 (0)