prepare for l2h
This commit is contained in:
@@ -18,7 +18,7 @@ loader_version_range=[2,)
|
||||
mod_id=l2core
|
||||
mod_name=L2Core
|
||||
mod_license=LGPL-2.1
|
||||
mod_version=3.0.7+45
|
||||
mod_version=3.0.8+1
|
||||
mod_group_id=dev.xkmc
|
||||
mod_authors=lcy0x1
|
||||
mod_description=Core Library mod for all L2 mods
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
package dev.xkmc.l2core.base.worldgen;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import dev.xkmc.l2core.init.L2LibReg;
|
||||
import dev.xkmc.l2core.serial.configval.DoubleConfigValue;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
|
||||
import net.minecraft.world.level.levelgen.placement.RepeatingPlacement;
|
||||
|
||||
import java.util.function.DoubleSupplier;
|
||||
|
||||
public class ConfigChancePlacement extends RepeatingPlacement {
|
||||
public static final MapCodec<ConfigChancePlacement> CODEC = DoubleConfigValue.CODEC.fieldOf("chance").xmap(ConfigChancePlacement::new, e -> e.chance);
|
||||
private final DoubleSupplier chance;
|
||||
|
||||
private ConfigChancePlacement(DoubleSupplier chance) {
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
public static ConfigChancePlacement of(DoubleSupplier count) {
|
||||
return new ConfigChancePlacement(count);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int count(RandomSource random, BlockPos pos) {
|
||||
double val = chance.getAsDouble();
|
||||
int ans = (int) val;
|
||||
return ans + (random.nextFloat() < val - ans ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlacementModifierType<?> type() {
|
||||
return L2LibReg.PM_CHANCE.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
package dev.xkmc.l2core.base.worldgen;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import dev.xkmc.l2core.init.L2LibReg;
|
||||
import dev.xkmc.l2core.serial.configval.DoubleConfigValue;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementContext;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementFilter;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
|
||||
|
||||
import java.util.function.DoubleSupplier;
|
||||
|
||||
public class ConfigRarityFilter extends PlacementFilter {
|
||||
|
||||
public static final MapCodec<ConfigRarityFilter> CODEC =
|
||||
DoubleConfigValue.CODEC.fieldOf("chance").xmap(ConfigRarityFilter::new, e -> e.chance);
|
||||
|
||||
private final DoubleSupplier chance;
|
||||
|
||||
private ConfigRarityFilter(DoubleSupplier chance) {
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
public static ConfigRarityFilter of(DoubleSupplier chance) {
|
||||
return new ConfigRarityFilter(chance);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldPlace(PlacementContext context, RandomSource random, BlockPos pos) {
|
||||
return random.nextFloat() < this.chance.getAsDouble();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlacementModifierType<?> type() {
|
||||
return L2LibReg.PM_RARITY.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
@MethodsReturnNonnullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
|
||||
package dev.xkmc.l2core.base.worldgen;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -1,28 +1,23 @@
|
||||
package dev.xkmc.l2core.events;
|
||||
|
||||
import dev.xkmc.l2core.capability.attachment.GeneralCapabilityHolder;
|
||||
import dev.xkmc.l2core.capability.player.PlayerCapabilityHolder;
|
||||
import dev.xkmc.l2core.init.L2Core;
|
||||
import dev.xkmc.l2serial.util.Wrappers;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.neoforged.bus.api.EventPriority;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.fml.common.EventBusSubscriber;
|
||||
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
|
||||
import net.neoforged.neoforge.event.tick.EntityTickEvent;
|
||||
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
|
||||
|
||||
@EventBusSubscriber(modid = L2Core.MODID, bus = EventBusSubscriber.Bus.GAME)
|
||||
public class BaseCapabilityEvents {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onLivingTick(EntityTickEvent.Post event) {
|
||||
if (event.getEntity() instanceof LivingEntity le && le.isAlive()) {
|
||||
for (GeneralCapabilityHolder<?, ?> holder : GeneralCapabilityHolder.INTERNAL_MAP.values()) {
|
||||
if (holder.isFor(event.getEntity()))
|
||||
holder.getOrCreate(Wrappers.cast(event.getEntity())).tick(Wrappers.cast(event.getEntity()));
|
||||
public static void onPlayerTick(PlayerTickEvent.Post event) {
|
||||
if (event.getEntity().isAlive())
|
||||
for (PlayerCapabilityHolder<?> holder : PlayerCapabilityHolder.INTERNAL_MAP.values()) {
|
||||
holder.getOrCreate(event.getEntity()).tick(event.getEntity());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
|
||||
@@ -76,6 +76,10 @@ public class ClientEffectRenderEvents {
|
||||
.createCompositeState(false)
|
||||
));
|
||||
|
||||
public static RenderType get2DIcon(ResourceLocation id) {
|
||||
return ICON_TYPE.apply(id);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void levelRenderLast(RenderLevelStageEvent event) {
|
||||
if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_WEATHER) return;
|
||||
|
||||
@@ -2,6 +2,8 @@ package dev.xkmc.l2core.init;
|
||||
|
||||
import dev.xkmc.l2core.base.effects.ClientEffectCap;
|
||||
import dev.xkmc.l2core.base.menu.base.MenuLayoutConfig;
|
||||
import dev.xkmc.l2core.base.worldgen.ConfigChancePlacement;
|
||||
import dev.xkmc.l2core.base.worldgen.ConfigRarityFilter;
|
||||
import dev.xkmc.l2core.capability.conditionals.ConditionalData;
|
||||
import dev.xkmc.l2core.capability.conditionals.PlayerFlagData;
|
||||
import dev.xkmc.l2core.capability.player.PlayerCapabilityNetworkHandler;
|
||||
@@ -21,6 +23,7 @@ import dev.xkmc.l2core.serial.loot.PlayerFlagCondition;
|
||||
import dev.xkmc.l2serial.serialization.codec.MapCodecAdaptor;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType;
|
||||
import net.neoforged.neoforge.common.conditions.ICondition;
|
||||
import net.neoforged.neoforge.common.loot.IGlobalLootModifier;
|
||||
@@ -73,6 +76,10 @@ public class L2LibReg {
|
||||
public static final EECVal.Special<EnchColor> COLOR = ENCH_REG.special("color", EnchColor.CODEC);
|
||||
public static final EECVal.Special<LegacyEnchantment> LEGACY = ENCH_REG.special("legacy", ENCH.reg().byNameCodec());
|
||||
|
||||
public static final SR<PlacementModifierType<?>> PM = SR.of(REG, BuiltInRegistries.PLACEMENT_MODIFIER_TYPE);
|
||||
public static final Val<PlacementModifierType<ConfigRarityFilter>> PM_RARITY = PM.reg("rarity", () -> () -> ConfigRarityFilter.CODEC);
|
||||
public static final Val<PlacementModifierType<ConfigChancePlacement>> PM_CHANCE = PM.reg("chance", () -> () -> ConfigChancePlacement.CODEC);
|
||||
|
||||
public static void register() {
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import dev.xkmc.l2core.capability.player.PlayerCapabilityTemplate;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.neoforged.neoforge.attachment.AttachmentHolder;
|
||||
import net.neoforged.neoforge.attachment.AttachmentType;
|
||||
import net.neoforged.neoforge.attachment.IAttachmentHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
import net.neoforged.neoforge.registries.NeoForgeRegistries;
|
||||
@@ -32,7 +33,7 @@ public record AttReg(DeferredRegister<AttachmentType<?>> att) {
|
||||
return reg(id, type);
|
||||
}
|
||||
|
||||
public <E extends GeneralCapabilityTemplate<H, E>, H extends AttachmentHolder> AttVal.CapVal<H, E>
|
||||
public <E extends GeneralCapabilityTemplate<H, E>, H extends IAttachmentHolder> AttVal.CapVal<H, E>
|
||||
entity(String id, Class<E> holder_class, Supplier<E> sup, Class<H> entity_class, Predicate<H> pred) {
|
||||
ResourceLocation rl = ResourceLocation.fromNamespaceAndPath(att.getNamespace(), id);
|
||||
var type = new GeneralCapabilityHolder<>(rl, holder_class, sup, entity_class, pred);
|
||||
@@ -62,7 +63,7 @@ public record AttReg(DeferredRegister<AttachmentType<?>> att) {
|
||||
|
||||
}
|
||||
|
||||
private record CapValImpl<E extends AttachmentHolder, T extends GeneralCapabilityTemplate<E, T>>(
|
||||
private record CapValImpl<E extends IAttachmentHolder, T extends GeneralCapabilityTemplate<E, T>>(
|
||||
DeferredHolder<AttachmentType<?>, AttachmentType<T>> val, GeneralCapabilityHolder<E, T> type
|
||||
) implements AttVal.CapVal<E, T> {
|
||||
|
||||
|
||||
@@ -7,12 +7,13 @@ import dev.xkmc.l2core.capability.player.PlayerCapabilityHolder;
|
||||
import dev.xkmc.l2core.capability.player.PlayerCapabilityTemplate;
|
||||
import net.neoforged.neoforge.attachment.AttachmentHolder;
|
||||
import net.neoforged.neoforge.attachment.AttachmentType;
|
||||
import net.neoforged.neoforge.attachment.IAttachmentHolder;
|
||||
|
||||
public interface AttVal<T, H extends AttachmentDef<T>> extends Val<AttachmentType<T>> {
|
||||
|
||||
H type();
|
||||
|
||||
interface CapVal<E extends AttachmentHolder, T extends GeneralCapabilityTemplate<E, T>>
|
||||
interface CapVal<E extends IAttachmentHolder, T extends GeneralCapabilityTemplate<E, T>>
|
||||
extends AttVal<T, GeneralCapabilityHolder<E, T>> {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user