ench helper
This commit is contained in:
		
							
								
								
									
										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<LegacyEnchantment> legacy;
 | 
			
		||||
	private final L2Registrate pvd;
 | 
			
		||||
 | 
			
		||||
	private final List<EnchReg> parent = new ArrayList<>();
 | 
			
		||||
	private final List<EnchVal.Impl> list = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
	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) {
 | 
			
		||||
		for (var e : parent) e.build(ctx);
 | 
			
		||||
		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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public DCVal<Float> floatVal(String id) {
 | 
			
		||||
		return reg(id, Codec.FLOAT, ByteBufCodecs.FLOAT, false);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public DCVal<Long> longVal(String id) {
 | 
			
		||||
		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.core.RegistryAccess;
 | 
			
		||||
import net.minecraft.server.MinecraftServer;
 | 
			
		||||
import net.minecraft.world.level.Level;
 | 
			
		||||
import net.neoforged.api.distmarker.Dist;
 | 
			
		||||
import net.neoforged.fml.loading.FMLEnvironment;
 | 
			
		||||
import net.neoforged.neoforge.server.ServerLifecycleHooks;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Nullable;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.function.BiConsumer;
 | 
			
		||||
 | 
			
		||||
public class Proxy {
 | 
			
		||||
 | 
			
		||||
@@ -21,6 +23,14 @@ public class Proxy {
 | 
			
		||||
		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() {
 | 
			
		||||
		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