4 Commits

Author SHA1 Message Date
d675832ecb Updated README for 1.4.1 release
All checks were successful
build / build (push) Successful in 1m17s
2025-05-20 12:20:23 +02:00
a6f8645c68 Added toggleable scrollToZoom
All checks were successful
build / build (push) Successful in 1m13s
2025-05-20 12:01:59 +02:00
2be7c16e8b Refactored SFKeyBindings to CameraShortcut 2025-05-20 11:59:51 +02:00
ccbb15f7c4 Fixed bug in Replenish feature
All checks were successful
build / build (push) Successful in 1m43s
2025-05-19 22:23:08 +02:00
6 changed files with 30 additions and 30 deletions

View File

@ -28,9 +28,14 @@ As a challenge I'm trying to make it as user-friendly as possible.
- Open/close EC block while opening/closing SEC
- Play open & close sounds
- Vein miner
- Configurable animation (tick delay)
- Leaves veinmineable using shears
Code inspired by Inferis!
![VeinMiner](https://i.imgur.com/zOXWMNa.gif)
- Chat Calculator
- Check if operator is present before calculating
- Replenish
### Commands
- /spectator | Essentially server-side free-cam, you get put in spectator and are able to fly around, once you use the command again you get put back to where you were.
@ -43,38 +48,26 @@ Code inspired by Inferis!
![Teleportation Keybindings](https://i.imgur.com/gjO1H3d.png)
- Remove game fog (lava, water, etc.)
- All types individually toggleable
- Mod Menu integration
- Automatic config adaption (currently booleans only)
- Remove darkness effect
- Toggleable
- Keybinding for /spectator
# Currently working on
## Server Side
- [x] Chat Calculator
- [x] Check if operator is present before calculating
- Vein Miner
- [x] Configurable animation (tick delay)
- [x] Leaves veinmineable using shears
- [x] Replenish
## Client Side
- [x] Render block entities from a longer range
- [x] Toggleable via GUI
- [x] Configurable value
- [x] In GUI
- [x] Rework Mod Menu integration to be more flexible
- Render block entities from a longer range
- Toggleable via GUI
- Configurable value
- In GUI
- Mod Menu integration
DISCLAIMER: this is NOT perfect and still needs to be reworked, I'm just too lazy right now...
- The following types are accepted:
- String
- Boolean
- Float
- Integer
- [x] Zoom
- [x] Configurable
- Zoom
- Configurable
- Smooth zoom
- Initial zoom value
- Zoom step value
- Scroll to zoom further
# To-do

View File

@ -4,7 +4,7 @@ import net.fabricmc.api.ClientModInitializer;
import wtf.hak.survivalfabric.config.client.ClientConfigManager;
import wtf.hak.survivalfabric.features.AngleViewer;
import wtf.hak.survivalfabric.features.RemoveDarknessEffect;
import wtf.hak.survivalfabric.features.SFKeyBindings;
import wtf.hak.survivalfabric.features.CameraShortcut;
import wtf.hak.survivalfabric.features.Zoom;
public class SurvivalFabricClient implements ClientModInitializer {
@ -18,7 +18,7 @@ public class SurvivalFabricClient implements ClientModInitializer {
// Features
AngleViewer.register();
RemoveDarknessEffect.register();
SFKeyBindings.register();
CameraShortcut.register();
Zoom.register();
}
}

View File

@ -15,5 +15,6 @@ public class ClientConfig {
public int blockEntityRange = 512;
public boolean smoothCamera = true;
public float initialZoom = 20f;
public boolean scrollToZoom = true;
public float zoomStep = 2.5f;
}

View File

@ -6,7 +6,7 @@ import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
import org.lwjgl.glfw.GLFW;
public class SFKeyBindings {
public class CameraShortcut {
private static final KeyBinding CAMERA_BIND = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.survivalfabric.camera", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_PERIOD, "category.survivalfabric.survivalfabric"));

View File

@ -8,6 +8,8 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import wtf.hak.survivalfabric.features.Zoom;
import static wtf.hak.survivalfabric.config.client.ClientConfigManager.getConfig;
@Mixin(Mouse.class)
public class MouseMixin {
@ -16,7 +18,7 @@ public class MouseMixin {
*/
@Inject(method = "onMouseScroll", at = @At("HEAD"), cancellable = true)
private void onMouseScroll(long window, double horizontal, double vertical, CallbackInfo ci) {
if (Zoom.isZooming()) {
if (Zoom.isZooming() && getConfig().scrollToZoom) {
if (MinecraftClient.getInstance().player != null) {
if (vertical > 0)
Zoom.modifyStep(-1);

View File

@ -2,7 +2,9 @@ package wtf.hak.survivalfabric.mixin;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropBlock;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.HoeItem;
import net.minecraft.item.Item;
@ -39,9 +41,11 @@ public abstract class BlockMixin {
for (ItemStack drop : drops) {
Block.dropStack(world, pos, drop);
}
player.incrementStat(Stats.USED.getOrCreateStat(seedItem));
mainHand.damage(1, player, EquipmentSlot.MAINHAND);
}
world.getServer().executeSync(() -> world.setBlockState(pos, seedBlock.getDefaultState()));
player.incrementStat(Stats.USED.getOrCreateStat(seedItem));
cir.setReturnValue(Blocks.AIR.getDefaultState());
cir.cancel();
}
}