ench helper
This commit is contained in:
@@ -18,7 +18,7 @@ loader_version_range=[2,)
|
|||||||
mod_id=l2core
|
mod_id=l2core
|
||||||
mod_name=L2Core
|
mod_name=L2Core
|
||||||
mod_license=LGPL-2.1
|
mod_license=LGPL-2.1
|
||||||
mod_version=3.0.7-pre9
|
mod_version=3.0.7+6
|
||||||
mod_group_id=dev.xkmc
|
mod_group_id=dev.xkmc
|
||||||
mod_authors=lcy0x1
|
mod_authors=lcy0x1
|
||||||
mod_description=Core Library mod for all L2 mods
|
mod_description=Core Library mod for all L2 mods
|
||||||
|
|||||||
18
src/main/java/dev/xkmc/l2core/init/reg/ench/EnchHelper.java
Normal file
18
src/main/java/dev/xkmc/l2core/init/reg/ench/EnchHelper.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package dev.xkmc.l2core.init.reg.ench;
|
||||||
|
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.enchantment.Enchantment;
|
||||||
|
import net.neoforged.neoforge.common.CommonHooks;
|
||||||
|
|
||||||
|
public class EnchHelper {
|
||||||
|
|
||||||
|
public static int getLv(ItemStack stack, ResourceKey<Enchantment> key) {
|
||||||
|
var reg = CommonHooks.resolveLookup(Registries.ENCHANTMENT);
|
||||||
|
if (reg == null) return 0;
|
||||||
|
var holder = reg.get(key);
|
||||||
|
return holder.map(stack::getEnchantmentLevel).orElse(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -38,7 +38,7 @@ public class EnchReg {
|
|||||||
private final DeferredRegister<DataComponentType<?>> reg;
|
private final DeferredRegister<DataComponentType<?>> reg;
|
||||||
private final DeferredRegister<LegacyEnchantment> legacy;
|
private final DeferredRegister<LegacyEnchantment> legacy;
|
||||||
private final L2Registrate pvd;
|
private final L2Registrate pvd;
|
||||||
|
private final List<EnchReg> parent = new ArrayList<>();
|
||||||
private final List<EnchVal.Impl> list = new ArrayList<>();
|
private final List<EnchVal.Impl> list = new ArrayList<>();
|
||||||
|
|
||||||
private EnchReg(Reg reg, L2Registrate pvd) {
|
private EnchReg(Reg reg, L2Registrate pvd) {
|
||||||
@@ -103,7 +103,12 @@ public class EnchReg {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addParent(EnchReg reg) {
|
||||||
|
parent.add(reg);
|
||||||
|
}
|
||||||
|
|
||||||
public void build(BootstrapContext<Enchantment> ctx) {
|
public void build(BootstrapContext<Enchantment> ctx) {
|
||||||
|
for (var e : parent) e.build(ctx);
|
||||||
for (var e : list) ctx.register(e.id(), e.builder().get().build(ctx, e.id().location()));
|
for (var e : list) ctx.register(e.id(), e.builder().get().build(ctx, e.id().location()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ public record DCReg(DeferredRegister<DataComponentType<?>> reg) {
|
|||||||
return reg(id, Codec.DOUBLE, ByteBufCodecs.DOUBLE, false);
|
return reg(id, Codec.DOUBLE, ByteBufCodecs.DOUBLE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DCVal<Float> floatVal(String id) {
|
||||||
|
return reg(id, Codec.FLOAT, ByteBufCodecs.FLOAT, false);
|
||||||
|
}
|
||||||
|
|
||||||
public DCVal<Long> longVal(String id) {
|
public DCVal<Long> longVal(String id) {
|
||||||
return reg(id, Codec.LONG, ByteBufCodecs.VAR_LONG, false);
|
return reg(id, Codec.LONG, ByteBufCodecs.VAR_LONG, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,14 @@ import net.minecraft.client.Minecraft;
|
|||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
import net.neoforged.fml.loading.FMLEnvironment;
|
import net.neoforged.fml.loading.FMLEnvironment;
|
||||||
import net.neoforged.neoforge.server.ServerLifecycleHooks;
|
import net.neoforged.neoforge.server.ServerLifecycleHooks;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
public class Proxy {
|
public class Proxy {
|
||||||
|
|
||||||
@@ -21,6 +23,14 @@ public class Proxy {
|
|||||||
return ServerLifecycleHooks.getCurrentServer().registryAccess();
|
return ServerLifecycleHooks.getCurrentServer().registryAccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Level getLevel() {
|
||||||
|
if (FMLEnvironment.dist == Dist.CLIENT) {
|
||||||
|
return Minecraft.getInstance().level;
|
||||||
|
}
|
||||||
|
return ServerLifecycleHooks.getCurrentServer().overworld();
|
||||||
|
}
|
||||||
|
|
||||||
public static Optional<MinecraftServer> getServer() {
|
public static Optional<MinecraftServer> getServer() {
|
||||||
return Optional.ofNullable(ServerLifecycleHooks.getCurrentServer());
|
return Optional.ofNullable(ServerLifecycleHooks.getCurrentServer());
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/main/java/dev/xkmc/l2core/util/TooltipHelper.java
Normal file
22
src/main/java/dev/xkmc/l2core/util/TooltipHelper.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package dev.xkmc.l2core.util;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.screens.Screen;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.neoforged.fml.loading.FMLEnvironment;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public record TooltipHelper(Level level, boolean shift, boolean alt) {
|
||||||
|
|
||||||
|
public static void addClient(Item.TooltipContext ctx, TooltipFlag flag, Consumer<TooltipHelper> action) {
|
||||||
|
if (!FMLEnvironment.dist.isClient()) return;
|
||||||
|
if (ctx.registries() == null) return;
|
||||||
|
var level = Minecraft.getInstance().level;
|
||||||
|
if (level == null) return;
|
||||||
|
action.accept(new TooltipHelper(level, Screen.hasShiftDown(), Screen.hasAltDown()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user