Skip to content

Commit

Permalink
feat: make Unknown Item Namespace IDs remappable (config/wayf.cfg)
Browse files Browse the repository at this point in the history
  • Loading branch information
CamperSamu committed Dec 22, 2023
1 parent c6d600b commit 75ce5ca
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 16 deletions.
44 changes: 44 additions & 0 deletions src/main/java/com/campersamu/shoutout/Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.campersamu.shoutout;

import net.fabricmc.loader.api.FabricLoader;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;

public final class Config {
private Config(){}

private static final Path FILE = FabricLoader.getInstance().getConfigDir().resolve("wayf.cfg");
private static final Properties MAPPED_MODS = new Properties();

static {
load();
}

private static void save() {
try (final OutputStream out = Files.newOutputStream(FILE)) {
MAPPED_MODS.store(out, """
Remap Unknown Item IDs to Mod IDs.
Format:
item_id_namespace = mod_id
Example:
gofish = go-fish""");
} catch (IOException ignored) {}

}
private static void load() {
try (final InputStream in = Files.newInputStream(FILE)) {
MAPPED_MODS.load(in);
} catch (IOException ignored) {
save();
}
}

public static String getMappedId(String itemNamespaceId) {
return MAPPED_MODS.getProperty(itemNamespaceId, itemNamespaceId);
}
}
4 changes: 3 additions & 1 deletion src/main/java/com/campersamu/shoutout/Init.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

import java.util.Optional;

import static com.campersamu.shoutout.Config.getMappedId;

public class Init implements DedicatedServerModInitializer {
// This logger is used to write text to the console and the log file.
// It is considered best practice to use your mod id as the logger's name.
Expand All @@ -25,7 +27,7 @@ public void onInitializeServer() {
public static @NotNull String getModName(Item item) {
String modName = "Unknown";

Optional<ModContainer> mod = FabricLoader.getInstance().getModContainer(Registries.ITEM.getId(item).getNamespace());
Optional<ModContainer> mod = FabricLoader.getInstance().getModContainer(getMappedId(Registries.ITEM.getId(item).getNamespace()));
if (mod.isPresent()) {
modName = mod.get().getMetadata().getName();
}
Expand Down
12 changes: 0 additions & 12 deletions src/main/java/com/campersamu/shoutout/Util.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.campersamu.shoutout.mixin;

import com.campersamu.shoutout.duck.OriginalItemDuck;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
Expand All @@ -25,11 +26,9 @@

@Mixin(value = PacketByteBuf.class, priority = 5000)
public class AppendModNameToPacketBuffer {
@Unique ItemStack toAlter;

@ModifyVariable(method = "writeItemStack(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/network/PacketByteBuf;", at = @At("HEAD"), argsOnly = true)
private ItemStack alterLore(ItemStack inStack) {
toAlter = inStack;
return inStack;
}

Expand All @@ -43,7 +42,7 @@ private ItemStack alterLore(ItemStack inStack) {
private PacketByteBuf appendModNameToNBT(PacketByteBuf instance, NbtElement nbt){
if (nbt == null) nbt = new NbtCompound();
if (nbt instanceof NbtCompound compound)
return instance.writeNbt(appendModName(compound, toAlter.getItem()));
return instance.writeNbt(appendModName(compound, ((OriginalItemDuck)this).whereAreYouFrom$getOgItemStack().getItem()));
return instance;
}

Expand Down

0 comments on commit 75ce5ca

Please sign in to comment.