Skip to content

Commit

Permalink
More stable mouse movement calculation and no block repair (#60)
Browse files Browse the repository at this point in the history
  • Loading branch information
capsey committed Feb 13, 2023
1 parent 1291bd5 commit fe6cfae
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 9 deletions.
14 changes: 12 additions & 2 deletions src/main/java/net/capsey/archeology/ModConfig.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.capsey.archeology;

import eu.midnightdust.lib.config.MidnightConfig;
import net.minecraft.util.math.MathHelper;

public class ModConfig extends MidnightConfig {

Expand All @@ -10,8 +11,17 @@ public class ModConfig extends MidnightConfig {
@Entry(min=0.0F, max=1.0F) public static float brushingLayerChance = 0.35F;

@Client @Entry(min=0.0F, max=1.0F) public static float brushingLowerThreshold = 0.02F;
@Client @Entry public static float brushingBreakingSpeed = 3.0F;
@Client @Entry public static float brushingRepairSpeed = 1.0F;
@Client @Entry(min=0.0F) public static float brushingBreakingSpeed = 3.0F;
@Client @Entry public static boolean enableMojangBrushingStyle = false;

public static float getBrushingDelta(float mouseMovement) {
mouseMovement -= brushingLowerThreshold * (!enableMojangBrushingStyle ? 1.0F : 0.1F);
float delta = mouseMovement * brushingBreakingSpeed * (!enableMojangBrushingStyle ? 1.0F : 1.5F);

// XOR operator inverts the boolean expression
// in case `enableMojangBrushingStyle` is true
return (mouseMovement < 0) ^ enableMojangBrushingStyle ? MathHelper.abs(delta) : 0;
}

// Displaying
@Comment public static Comment displayingSection;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package net.capsey.archeology.mixin.entity;

import net.capsey.archeology.ArcheologyMod;
import net.capsey.archeology.ModConfig;
import net.capsey.archeology.main.BlockEntities;
import net.capsey.archeology.blocks.excavation_block.ExcavationBlockEntity;
Expand All @@ -19,14 +18,18 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.lang.ref.WeakReference;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;

@Mixin(ClientPlayerEntity.class)
public class ClientPlayerEntityMixin implements BrushingPlayerEntity, BrushingPlayerEntity.Client {

private WeakReference<ExcavationBlockEntity> brushingEntity = new WeakReference<>(null);
@Nullable private BlockPos breakingPos;
private float breakingProgress;
private float facingDelta;
private final float[] facingDeltas = new float[5];
private int facingIndex = 0;

@Override
public void startBrushing(BlockPos pos) {
Expand All @@ -46,9 +49,12 @@ public void startBrushing(BlockPos pos) {
@Inject(method = "tick()V", at = @At("TAIL"))
public void tick(CallbackInfo info) {
PlayerEntity player = (PlayerEntity) (Object) this;

Vec3d lookDir = Vec3d.fromPolar(player.getPitch(), player.getHeadYaw());
Vec3d prevLookDir = Vec3d.fromPolar(player.prevPitch, player.prevHeadYaw);
facingDelta = (float) prevLookDir.distanceTo(lookDir);

facingDeltas[facingIndex] = (float) prevLookDir.distanceTo(lookDir);
facingIndex = (facingIndex + 1) % facingDeltas.length;
}

@Inject(method = "clearActiveItem()V", at = @At("HEAD"))
Expand All @@ -72,16 +78,20 @@ private void clearActiveItem(CallbackInfo ci) {

@Override
public boolean tick() {
float delta = ModConfig.brushingLowerThreshold - facingDelta;
delta *= delta < 0 ? ModConfig.brushingRepairSpeed : ModConfig.brushingBreakingSpeed;
float facingDelta = 0;

breakingProgress = Math.max(breakingProgress + delta, 0);
int i = Math.round(breakingProgress * 10) - 2;
for (float delta : facingDeltas) {
facingDelta += delta;
}

breakingProgress += ModConfig.getBrushingDelta(facingDelta / facingDeltas.length);

if (breakingProgress > 1.0F || breakingPos == null) {
return false;
}

int i = Math.round(breakingProgress * 10) - 2;

PlayerEntity player = (PlayerEntity) (Object) this;
player.world.setBlockBreakingInfo(player.getId(), breakingPos, i);
return true;
Expand Down

0 comments on commit fe6cfae

Please sign in to comment.