Skip to content

Commit

Permalink
add speed on client side, and add api
Browse files Browse the repository at this point in the history
  • Loading branch information
nosqd committed Aug 16, 2024
1 parent 1bfc8bc commit e46fd07
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 54 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ loom {
splitEnvironmentSourceSets()

mods {
"modid" {
"no-limit-minecarts" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ minecraft_version=24w33a
yarn_mappings=24w33a+build.7
loader_version=0.15.11

mod_version=1.0.0
mod_version=1.1.0
maven_group=ru.nosqd.nlm
archives_base_name=no-limit-minecarts
20 changes: 0 additions & 20 deletions remappedSrc/ru/nosqd/nlm/NoLimitMinecartsMod.java

This file was deleted.

30 changes: 0 additions & 30 deletions remappedSrc/ru/nosqd/nlm/mixin/IntRuleMixin.java

This file was deleted.

13 changes: 13 additions & 0 deletions src/client/java/ru/nosqd/nlm/client/NoLimitMinecartsModClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ru.nosqd.nlm.client;

import net.fabricmc.api.ClientModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class NoLimitMinecartsModClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("no-limit-minecarts-client");

@Override
public void onInitializeClient() {
}
}
43 changes: 43 additions & 0 deletions src/client/java/ru/nosqd/nlm/client/mixin/DebugHudMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ru.nosqd.nlm.client.mixin;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.DebugHud;
import net.minecraft.util.Formatting;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.nosqd.nlm.NoLimitMinecartsMod;
import ru.nosqd.nlm.api.NoLimitMinecartsApi;

import java.util.List;


@Mixin(DebugHud.class)
public class DebugHudMixin {
@Inject(method = "getLeftText", at = @At("RETURN"), cancellable = true)
private void getLeftText(CallbackInfoReturnable<List<String>> cir) {
var lines = cir.getReturnValue();
var nlmApi = NoLimitMinecartsApi.getInstance();
var player = MinecraftClient.getInstance().player;

lines.add("");

lines.add(Formatting.GREEN + "[No Limit Minecarts]");
lines.add(Formatting.AQUA + "Version: " + Formatting.GOLD + NoLimitMinecartsMod.VERSION);
if (player != null) {
if (nlmApi.isPlayerRiding(player)) {
var vehicle = nlmApi.getPlayerVehicle(player);
lines.add(Formatting.YELLOW + "Speed: " + Formatting.LIGHT_PURPLE + String.format("%.3f", nlmApi.getVehicleSpeed(vehicle)));
}
else {
lines.add(Formatting.YELLOW + "Player is not riding a vehicle.");
}
}
else {
lines.add(Formatting.RED + "Player is null.");
}

cir.setReturnValue(lines);
}
}
11 changes: 11 additions & 0 deletions src/client/resources/nlm.client.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"required": true,
"package": "ru.nosqd.nlm.client.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"DebugHudMixin"
],
"injectors": {
"defaultRequire": 1
}
}
11 changes: 10 additions & 1 deletion src/main/java/ru/nosqd/nlm/NoLimitMinecartsMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,27 @@
import net.fabricmc.api.DedicatedServerModInitializer;

import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.nosqd.nlm.api.NoLimitMinecartsApi;

// TODO: maybe add F3 line
// TODO: maybe add when you set value greater than 1000 show message like "Your gamerules are boosted by no limit minecarts"
// TODO: add notification when you join world without minecart feature flag like "this world can't be boosted by no limit minecarts"

public class NoLimitMinecartsMod implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("no-limit-minecarts");
public static final String VERSION;

static {
ModContainer mod = FabricLoader.getInstance().getModContainer("no-limit-minecarts").orElseThrow();
VERSION = mod.getMetadata().getVersion().getFriendlyString();
}

@Override
public void onInitialize() {
LOGGER.info("Starting No Limit Minecarts mod");
NoLimitMinecartsApi.initialize();
}
}
36 changes: 36 additions & 0 deletions src/main/java/ru/nosqd/nlm/api/NoLimitMinecartsApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package ru.nosqd.nlm.api;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import ru.nosqd.nlm.NoLimitMinecartsMod;

public class NoLimitMinecartsApi {
private static NoLimitMinecartsApi instance;

public static void initialize() {
if (instance != null) {
NoLimitMinecartsMod.LOGGER.warn("Some function tried to reinitialize nlm api, nothing will be done");
return;
}
instance = new NoLimitMinecartsApi();
}

public static NoLimitMinecartsApi getInstance() {
return instance;
}

public boolean isPlayerRiding(PlayerEntity player) {
return player.hasVehicle();
}

public Entity getPlayerVehicle(PlayerEntity player) {
return player.getVehicle();
}

public double getVehicleSpeed(Entity entity) {
var velocity = entity.getVelocity();

double speedInBlocksPerTick = Math.sqrt(velocity.x * velocity.x + velocity.y * velocity.y + velocity.z * velocity.z);
return speedInBlocksPerTick * 20;
}
}
9 changes: 8 additions & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,17 @@
"entrypoints": {
"main": [
"ru.nosqd.nlm.NoLimitMinecartsMod"
],
"client": [
"ru.nosqd.nlm.client.NoLimitMinecartsModClient"
]
},
"mixins": [
"nlm.mixins.json"
"nlm.mixins.json",
{
"config": "nlm.client.mixins.json",
"environment": "client"
}
],
"depends": {
"fabricloader": ">=0.15.11",
Expand Down

0 comments on commit e46fd07

Please sign in to comment.