@@ -563,7 +563,7 @@ private boolean setReplace(BlockState state, BlockPos pos, @Nullable MinerFilter
563563 missingStack = new ItemStack (replaceTarget );
564564 return false ;
565565 }
566- BlockState newState = withFakePlayer ( fakePlayer -> StackUtils . getStateForPlacement (stack , pos , fakePlayer ) );
566+ BlockState newState = getStateForPlacement (stack , pos );
567567 if (newState == null || !newState .canSurvive (level , pos )) {
568568 //If the spot is not a valid position for the block, then we return that we were unsuccessful
569569 return false ;
@@ -576,14 +576,19 @@ private boolean setReplace(BlockState state, BlockPos pos, @Nullable MinerFilter
576576 }
577577
578578 private boolean canMine (BlockState state , BlockPos pos ) {
579- return withFakePlayer (dummy -> !NeoForge .EVENT_BUS .post (new BlockEvent .BreakEvent (level , pos , state , dummy )).isCanceled ());
579+ MekFakePlayer dummy = MekFakePlayer .setupFakePlayer ((ServerLevel ) level , this .worldPosition .getX (), this .worldPosition .getY (), this .worldPosition .getZ ())
580+ dummy .setEmulatingUUID (getOwnerUUID ());//pretend to be the owner
581+ boolean canMine = !NeoForge .EVENT_BUS .post (new BlockEvent .BreakEvent (level , pos , state , dummy )).isCanceled ();
582+ dummy .cleanupFakePlayer ((ServerLevel ) level );
583+ return canMine ;
580584 }
581585
582- private <R > R withFakePlayer (Function <MekFakePlayer , R > fakePlayerConsumer ) {
583- return MekFakePlayer .withFakePlayer ((ServerLevel ) level , this .worldPosition .getX (), this .worldPosition .getY (), this .worldPosition .getZ (), dummy -> {
584- dummy .setEmulatingUUID (getOwnerUUID ());//pretend to be the owner
585- return fakePlayerConsumer .apply (dummy );
586- });
586+ private BlockState getStateForPlacement (ItemStack stack , BlockPos pos ) {
587+ MekFakePlayer dummy = MekFakePlayer .setupFakePlayer ((ServerLevel ) level , this .worldPosition .getX (), this .worldPosition .getY (), this .worldPosition .getZ ())
588+ dummy .setEmulatingUUID (getOwnerUUID ());//pretend to be the owner
589+ BlockState result = StackUtils .getStateForPlacement (stack , pos , dummy );
590+ dummy .cleanupFakePlayer ((ServerLevel ) level );
591+ return result ;
587592 }
588593
589594 private ItemStack getReplace (Item replaceTarget , Predicate <Item > replaceStackMatches ) {
@@ -1283,7 +1288,11 @@ private List<ItemStack> getDrops(BlockState state, BlockPos pos) {
12831288 stack .enchant (Enchantments .SILK_TOUCH , 1 );
12841289 }
12851290 ServerLevel level = (ServerLevel ) getWorldNN ();
1286- return withFakePlayer (fakePlayer -> Block .getDrops (state , level , pos , WorldUtils .getTileEntity (level , pos ), fakePlayer , stack ));
1291+ MekFakePlayer dummy = MekFakePlayer .setupFakePlayer (level , this .worldPosition .getX (), this .worldPosition .getY (), this .worldPosition .getZ ())
1292+ dummy .setEmulatingUUID (getOwnerUUID ());//pretend to be the owner
1293+ List <ItemStack > drops = Block .getDrops (state , level , pos , WorldUtils .getTileEntity (level , pos ), dummy , stack );
1294+ dummy .cleanupFakePlayer (level );
1295+ return drops ;
12871296 }
12881297
12891298 //Methods relating to IComputerTile
0 commit comments