Infusion starts by placing ingredients at any pedestals.
This commit is contained in:
parent
f62f88e4bd
commit
482dcc1638
3 changed files with 34 additions and 67 deletions
|
@ -38,9 +38,7 @@ public class EternalPedestal extends PedestalBlock {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
ActionResult result = super.onUse(state, world, pos, player, hand, hit);
|
||||
if (result.equals(ActionResult.SUCCESS)) {
|
||||
public void checkRitual(World world, BlockPos pos) {
|
||||
BlockEntity blockEntity = world.getBlockEntity(pos);
|
||||
if (blockEntity instanceof EternalPedestalEntity) {
|
||||
EternalPedestalEntity pedestal = (EternalPedestalEntity) blockEntity;
|
||||
|
@ -65,11 +63,6 @@ public class EternalPedestal extends PedestalBlock {
|
|||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void activate(World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) {}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) {
|
||||
|
|
|
@ -28,27 +28,10 @@ public class InfusionPedestal extends PedestalBlock {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
if (world.isClient || !state.isOf(this)) return ActionResult.CONSUME;
|
||||
public void checkRitual(World world, BlockPos pos) {
|
||||
BlockEntity blockEntity = world.getBlockEntity(pos);
|
||||
InfusionPedestalEntity pedestal = null;
|
||||
if (blockEntity instanceof InfusionPedestalEntity) {
|
||||
pedestal = (InfusionPedestalEntity) blockEntity;
|
||||
if (!pedestal.isEmpty() && pedestal.hasRitual()) {
|
||||
if (pedestal.getRitual().hasRecipe()) {
|
||||
pedestal.getRitual().stop();
|
||||
return ActionResult.SUCCESS;
|
||||
} else if (pedestal.getRitual().checkRecipe()) {
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
ActionResult result = ActionResult.FAIL;
|
||||
if (hand != null) {
|
||||
result = super.onUse(state, world, pos, player, hand, hit);
|
||||
}
|
||||
if (result == ActionResult.SUCCESS) {
|
||||
if (pedestal != null) {
|
||||
InfusionPedestalEntity pedestal = (InfusionPedestalEntity) blockEntity;
|
||||
if (pedestal.hasRitual()) {
|
||||
pedestal.getRitual().checkRecipe();
|
||||
} else {
|
||||
|
@ -58,11 +41,6 @@ public class InfusionPedestal extends PedestalBlock {
|
|||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void activate(World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) {}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockView world) {
|
||||
|
|
|
@ -114,7 +114,7 @@ public class PedestalBlock extends BlockBaseNotFull implements BlockEntityProvid
|
|||
ItemStack itemStack = player.getStackInHand(hand);
|
||||
if (itemStack.isEmpty()) return ActionResult.CONSUME;
|
||||
pedestal.setStack(0, itemStack.split(1));
|
||||
activate(world, pos, player, hit);
|
||||
this.checkRitual(world, pos);
|
||||
return ActionResult.SUCCESS;
|
||||
} else {
|
||||
ItemStack itemStack = pedestal.getStack(0);
|
||||
|
@ -128,17 +128,13 @@ public class PedestalBlock extends BlockBaseNotFull implements BlockEntityProvid
|
|||
return ActionResult.PASS;
|
||||
}
|
||||
|
||||
protected void activate(World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) {
|
||||
Mutable mut = new Mutable();
|
||||
Point[] points = InfusionRitual.getMap();
|
||||
for (Point p: points) {
|
||||
mut.set(pos).move(p.x, 0, p.y);
|
||||
BlockState state = world.getBlockState(mut);
|
||||
public void checkRitual(World world, BlockPos pos) {
|
||||
Mutable posMutable = new Mutable();
|
||||
for (Point point: InfusionRitual.getMap()) {
|
||||
posMutable.set(pos).move(point.x, 0, point.y);
|
||||
BlockState state = world.getBlockState(posMutable);
|
||||
if (state.getBlock() instanceof InfusionPedestal) {
|
||||
ActionResult result = state.getBlock().onUse(state, world, mut, player, null, hit);
|
||||
if (result == ActionResult.SUCCESS) {
|
||||
break;
|
||||
}
|
||||
((InfusionPedestal) state.getBlock()).checkRitual(world, posMutable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue