4 Commits

10 changed files with 122 additions and 36 deletions

View File

@ -18,6 +18,18 @@ repositories {
// for more information about repositories. // for more information about repositories.
} }
loom {
splitEnvironmentSourceSets()
mods {
"survivalfabric" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}
}
fabricApi { fabricApi {
configureDataGeneration { configureDataGeneration {
client = true client = true
@ -26,7 +38,7 @@ fabricApi {
dependencies { dependencies {
// To change the versions see the gradle.properties file // To change the versions see the gradle.properties file
minecraft "net.minecraft:minecraft:${project.minecraft_version}" minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

0
gradlew vendored Normal file → Executable file
View File

View File

@ -0,0 +1,39 @@
package wtf.hak.survivalfabric;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
import net.minecraft.text.Text;
import org.lwjgl.glfw.GLFW;
import java.awt.*;
public class SurvivalFabricClient implements ClientModInitializer {
public static boolean SHOULD_SHOW_FPS = false;
KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding(
"key.survivalfabric.fps", // The translation key of the keybinding's name
InputUtil.Type.KEYSYM, // The type of the keybinding, KEYSYM for keyboard, MOUSE for mouse.
GLFW.GLFW_KEY_PERIOD, // The keycode of the key
"category.survivalfabric.utils" // The translation key of the keybinding's category.
));
@Override
public void onInitializeClient() {
ClientTickEvents.END_CLIENT_TICK.register(client -> {
while (keyBinding.wasPressed()) {
MinecraftClient mc = MinecraftClient.getInstance();
SHOULD_SHOW_FPS = !SHOULD_SHOW_FPS;
if(SHOULD_SHOW_FPS) {
mc.player.sendMessage(Text.literal("FPS Counter is now on").withColor(Color.GREEN.getRGB()), true);
} else
mc.player.sendMessage(Text.literal("FPS Counter is now off").withColor(Color.RED.getRGB()), true);
}
});
}
}

View File

@ -0,0 +1,11 @@
package wtf.hak.survivalfabric;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
public class SurvivalFabricDataGenerator implements DataGeneratorEntrypoint {
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
}
}

View File

@ -0,0 +1,28 @@
package wtf.hak.survivalfabric.mixin.client;
import net.minecraft.client.MinecraftClient;
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.CallbackInfo;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.render.RenderTickCounter;
import wtf.hak.survivalfabric.SurvivalFabricClient;
import java.awt.*;
@Mixin(InGameHud.class)
public class InGameHudMixin {
private final int TEXT_COLOR = Color.GRAY.getRGB();
@Inject(method = "render", at = @At("RETURN"))
private void renderFPS(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
if(SurvivalFabricClient.SHOULD_SHOW_FPS) {
MinecraftClient client = MinecraftClient.getInstance();
context.drawTextWithShadow(client.textRenderer, client.getCurrentFps() + " FPS", 5, 5, TEXT_COLOR);
}
}
}

View File

@ -0,0 +1,11 @@
{
"required": true,
"package": "wtf.hak.survivalfabric.mixin.client",
"compatibilityLevel": "JAVA_21",
"client": [
"InGameHudMixin"
],
"injectors": {
"defaultRequire": 1
}
}

View File

@ -1,8 +1,10 @@
package wtf.hak.survivalfabric.mixin; package wtf.hak.survivalfabric.mixin;
import com.mojang.authlib.minecraft.client.MinecraftClient;
import net.minecraft.network.ClientConnection; import net.minecraft.network.ClientConnection;
import net.minecraft.network.message.MessageType; import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SignedMessage; import net.minecraft.network.message.SignedMessage;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.PlayerManager; import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ConnectedClientData; import net.minecraft.server.network.ConnectedClientData;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
@ -24,7 +26,7 @@ public abstract class PlayerManagerMixin {
@Inject(method = {"onPlayerConnect"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Z)V")}) @Inject(method = {"onPlayerConnect"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Z)V")})
public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) { public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) {
if(ConfigManager.getConfig().joinMessageEnabled) { if(ConfigManager.getConfig().joinMessageEnabled && !player.getServer().isSingleplayer()) {
Text text = Text.literal(String.format(ConfigManager.getConfig().joinMessage, player.getName().getString())); Text text = Text.literal(String.format(ConfigManager.getConfig().joinMessage, player.getName().getString()));
player.sendMessage(text, false); player.sendMessage(text, false);
} }

View File

@ -1,12 +1,11 @@
package wtf.hak.survivalfabric.sharedenderchest; package wtf.hak.survivalfabric.sharedenderchest;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.Inventories; import net.minecraft.inventory.Inventories;
import net.minecraft.inventory.Inventory; import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.collection.DefaultedList;
import java.util.Iterator;
public class SharedInventory implements Inventory { public class SharedInventory implements Inventory {
private final DefaultedList<ItemStack> stacks; private final DefaultedList<ItemStack> stacks;
@ -19,28 +18,6 @@ public class SharedInventory implements Inventory {
this.stacks = dl; this.stacks = dl;
} }
/*
@Override
public void onClose(PlayerEntity player) {
Inventory.super.onClose(player);
EnderChestBlockEntity blockEntity = enderChests.remove(player);
if (blockEntity != null)
blockEntity.onClose(player);
}
@Override
public void onOpen(PlayerEntity player) {
Inventory.super.onOpen(player);
EnderChestBlockEntity blockEntity = enderChests.get(player);
if (blockEntity != null)
blockEntity.onOpen(player);
}
public void setBlockEntity(PlayerEntity player, EnderChestBlockEntity be) {
enderChests.put(player, be);
}
*/
public DefaultedList<ItemStack> getList(DefaultedList<ItemStack> dl) { public DefaultedList<ItemStack> getList(DefaultedList<ItemStack> dl) {
dl = stacks; dl = stacks;
@ -54,7 +31,7 @@ public class SharedInventory implements Inventory {
@Override @Override
public boolean isEmpty() { public boolean isEmpty() {
Iterator<ItemStack> var1 = this.stacks.iterator(); var var1 = this.stacks.iterator();
ItemStack itemStack_1; ItemStack itemStack_1;
do { do {
@ -62,7 +39,7 @@ public class SharedInventory implements Inventory {
return true; return true;
} }
itemStack_1 = (ItemStack)var1.next(); itemStack_1 = var1.next();
} while(itemStack_1.isEmpty()); } while(itemStack_1.isEmpty());
return false; return false;
@ -76,10 +53,6 @@ public class SharedInventory implements Inventory {
@Override @Override
public ItemStack removeStack(int int_1, int int_2) { public ItemStack removeStack(int int_1, int int_2) {
ItemStack itemStack_1 = Inventories.splitStack(this.stacks, int_1, int_2); ItemStack itemStack_1 = Inventories.splitStack(this.stacks, int_1, int_2);
if (!itemStack_1.isEmpty()) {
//this.container.onContentChanged(this);
}
return itemStack_1; return itemStack_1;
} }
@ -91,7 +64,6 @@ public class SharedInventory implements Inventory {
@Override @Override
public void setStack(int i, ItemStack itemStack) { public void setStack(int i, ItemStack itemStack) {
this.stacks.set(i, itemStack); this.stacks.set(i, itemStack);
//this.container.onContentChanged(this);
} }
@Override @Override

View File

@ -0,0 +1,4 @@
{
"category.survivalfabric.utils": "ChirpClient",
"key.survivalfabric.fps": "Toggle FPS"
}

View File

@ -18,20 +18,27 @@
"main": [ "main": [
"wtf.hak.survivalfabric.SurvivalFabric" "wtf.hak.survivalfabric.SurvivalFabric"
], ],
"client": [
"wtf.hak.survivalfabric.SurvivalFabricClient"
],
"fabric-datagen": [ "fabric-datagen": [
"wtf.hak.survivalfabric.SurvivalFabricDataGenerator" "wtf.hak.survivalfabric.SurvivalFabricDataGenerator"
] ]
}, },
"mixins": [ "mixins": [
"survivalfabric.mixins.json" "survivalfabric.mixins.json",
{
"config": "survivalfabric.client.mixins.json",
"environment": "client"
}
], ],
"depends": { "depends": {
"fabricloader": ">=0.16.10", "fabricloader": ">=0.16.10",
"minecraft": "~1.21.4", "minecraft": "~1.21.5",
"java": ">=21", "java": ">=21",
"fabric-api": "*" "fabric-api": "*"
}, },
"suggests": { "suggests": {
"another-mod": "*"
} }
} }