Skip to content

Commit 783bc7a

Browse files
Merge pull request #1080 from Jishuna/main
Add override for Block.entityInside
2 parents e1775f5 + c74c9fc commit 783bc7a

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

src/main/java/dev/latvian/mods/kubejs/block/BlockBuilder.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import dev.latvian.mods.kubejs.block.callback.BlockStateRotateCallback;
99
import dev.latvian.mods.kubejs.block.callback.CanBeReplacedCallback;
1010
import dev.latvian.mods.kubejs.block.callback.EntityFallenOnBlockCallback;
11-
import dev.latvian.mods.kubejs.block.callback.EntitySteppedOnBlockCallback;
11+
import dev.latvian.mods.kubejs.block.callback.EntityBlockCallback;
1212
import dev.latvian.mods.kubejs.block.callback.RandomTickCallback;
1313
import dev.latvian.mods.kubejs.block.drop.BlockDropSupplier;
1414
import dev.latvian.mods.kubejs.block.drop.BlockDrops;
@@ -101,7 +101,8 @@ public abstract class BlockBuilder extends ModelledBuilderBase<Block> {
101101
public transient Consumer<BlockStateModifyCallback> defaultStateModification;
102102
public transient Consumer<BlockStateModifyPlacementCallback> placementStateModification;
103103
public transient Predicate<CanBeReplacedCallback> canBeReplacedFunction;
104-
public transient Consumer<EntitySteppedOnBlockCallback> stepOnCallback;
104+
public transient Consumer<EntityBlockCallback> insideCallback;
105+
public transient Consumer<EntityBlockCallback> stepOnCallback;
105106
public transient Consumer<EntityFallenOnBlockCallback> fallOnCallback;
106107
public transient Consumer<AfterEntityFallenOnBlockCallback> afterFallenOnCallback;
107108
public transient Consumer<BlockExplodedCallback> explodedCallback;
@@ -683,11 +684,21 @@ public BlockBuilder canBeReplaced(Predicate<CanBeReplacedCallback> callbackJS) {
683684
return this;
684685
}
685686

687+
@Info("""
688+
Set what happens when an entity is inside the block
689+
This is called every tick for every entity inside the block, so be careful what you do here.
690+
This will only be called if the entity's bounding box overlaps with the block's collision.
691+
""")
692+
public BlockBuilder entityInside(Consumer<EntityBlockCallback> callbackJS) {
693+
insideCallback = callbackJS;
694+
return this;
695+
}
696+
686697
@Info("""
687698
Set what happens when an entity steps on the block
688699
This is called every tick for every entity standing on the block, so be careful what you do here.
689700
""")
690-
public BlockBuilder steppedOn(Consumer<EntitySteppedOnBlockCallback> callbackJS) {
701+
public BlockBuilder steppedOn(Consumer<EntityBlockCallback> callbackJS) {
691702
stepOnCallback = callbackJS;
692703
return this;
693704
}

src/main/java/dev/latvian/mods/kubejs/block/callback/AfterEntityFallenOnBlockCallback.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import net.minecraft.world.level.BlockGetter;
77
import net.minecraft.world.phys.Vec3;
88

9-
public class AfterEntityFallenOnBlockCallback extends EntitySteppedOnBlockCallback {
9+
public class AfterEntityFallenOnBlockCallback extends EntityBlockCallback {
1010
private boolean hasChangedVelocity;
1111

1212
public AfterEntityFallenOnBlockCallback(BlockGetter blockGetter, Entity entity) {

src/main/java/dev/latvian/mods/kubejs/block/callback/EntitySteppedOnBlockCallback.java renamed to src/main/java/dev/latvian/mods/kubejs/block/callback/EntityBlockCallback.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
import net.minecraft.world.level.Level;
88
import net.minecraft.world.level.block.state.BlockState;
99

10-
public class EntitySteppedOnBlockCallback {
10+
public class EntityBlockCallback {
1111
protected final Level level;
1212
protected final Entity entity;
1313
protected final LevelBlock block;
1414
protected final BlockState state;
1515

16-
public EntitySteppedOnBlockCallback(Level level, Entity entity, BlockPos pos, BlockState state) {
16+
public EntityBlockCallback(Level level, Entity entity, BlockPos pos, BlockState state) {
1717
this.level = level;
1818
this.entity = entity;
1919
this.block = level.kjs$getBlock(pos);

src/main/java/dev/latvian/mods/kubejs/block/callback/EntityFallenOnBlockCallback.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import net.minecraft.world.level.Level;
88
import net.minecraft.world.level.block.state.BlockState;
99

10-
public class EntityFallenOnBlockCallback extends EntitySteppedOnBlockCallback {
10+
public class EntityFallenOnBlockCallback extends EntityBlockCallback {
1111
private final float fallHeight;
1212

1313
public EntityFallenOnBlockCallback(Level level, Entity entity, BlockPos pos, BlockState state, float fallHeight) {

src/main/java/dev/latvian/mods/kubejs/block/custom/BasicKubeBlock.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import dev.latvian.mods.kubejs.block.callback.BlockStateRotateCallback;
1212
import dev.latvian.mods.kubejs.block.callback.CanBeReplacedCallback;
1313
import dev.latvian.mods.kubejs.block.callback.EntityFallenOnBlockCallback;
14-
import dev.latvian.mods.kubejs.block.callback.EntitySteppedOnBlockCallback;
14+
import dev.latvian.mods.kubejs.block.callback.EntityBlockCallback;
1515
import dev.latvian.mods.kubejs.block.callback.RandomTickCallback;
1616
import dev.latvian.mods.kubejs.block.entity.KubeBlockEntity;
1717
import dev.latvian.mods.kubejs.script.ScriptType;
@@ -254,10 +254,20 @@ public Optional<SoundEvent> getPickupSound() {
254254
return Optional.empty();
255255
}
256256

257+
@Override
258+
protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) {
259+
if (blockBuilder.insideCallback != null) {
260+
var callbackJS = new EntityBlockCallback(level, entity, pos, state);
261+
safeCallback(level, blockBuilder.insideCallback, callbackJS, "Error while an entity was inside a custom block ");
262+
} else {
263+
super.entityInside(state, level, pos, entity);
264+
}
265+
}
266+
257267
@Override
258268
public void stepOn(Level level, BlockPos blockPos, BlockState blockState, Entity entity) {
259269
if (blockBuilder.stepOnCallback != null) {
260-
var callbackJS = new EntitySteppedOnBlockCallback(level, entity, blockPos, blockState);
270+
var callbackJS = new EntityBlockCallback(level, entity, blockPos, blockState);
261271
safeCallback(level, blockBuilder.stepOnCallback, callbackJS, "Error while an entity stepped on custom block ");
262272
} else {
263273
super.stepOn(level, blockPos, blockState, entity);

0 commit comments

Comments
 (0)