feat: 文档更新,代码导入调整

This commit is contained in:
叁玖领域 2026-03-14 23:55:41 +08:00
parent 7a7eee8abf
commit 2e4bd500f2
13 changed files with 31 additions and 37 deletions

View File

@ -14,7 +14,7 @@
repositories {
maven {
name = "LTD Maven"
url = "https://maven.sighs.cc/repository/maven-public/"
url = "https://nexus.bot.leisuretimedock.top/repository/maven-public/"
}
}
```

View File

@ -184,7 +184,6 @@ void onlyInData(Runnable action) {
}
dependencies {
implementation(jarJar("io.github.llamalad7:mixinextras-forge:[0.4.1,)"))
modCompileOnly("blank:freecam-1.20.1:1.2.1")
modCompileOnly("curse.maven:real-camera-851574:7082366")
modCompileOnly("blank:firstperson-1.20.1:2.6.2")

View File

@ -17,15 +17,11 @@
package top.r3944realms.eroticdungeongame.api;
import net.minecraft.world.entity.Entity;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.CapabilityToken;
import net.minecraftforge.eventbus.api.IEventBus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import top.r3944realms.eroticdungeongame.api.capability.IPlayerDungeonData;
import top.r3944realms.eroticdungeongame.api.workspace.Services;
import top.r3944realms.eroticdungeongame.content.capability.AbstractPlayerDungeonData;
import java.util.function.Consumer;
import java.util.function.Function;
@ -43,10 +39,6 @@ public class EroticDungeonGameApi {
* The constant MOD_ID.
*/
public static final String MOD_ID = "eroticdungeongame"; //Erotic Dungeon Game
/**
* The constant PLAYER_DUNGEON_DATA_CAP.
*/
public static final Capability<AbstractPlayerDungeonData> PLAYER_DUNGEON_DATA_CAP = CapabilityManager.get(new CapabilityToken<>() {});
/**
* Gets mod event bus.

View File

@ -33,10 +33,10 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
import top.r3944realms.eroticdungeongame.content.block.AbstractSeatBlock;
import top.r3944realms.eroticdungeongame.content.entity.SeatEntity;
import top.r3944realms.eroticdungeongame.content.util.FurnitureHelper;
import top.r3944realms.eroticdungeongame.core.capability.PlayerDungeonDataProvider;
import top.r3944realms.eroticdungeongame.core.device.ISeatType;
import top.r3944realms.eroticdungeongame.core.service.SeatService;
import top.r3944realms.lib39.util.nbt.NBTReader;
@ -146,7 +146,7 @@ public abstract class BaseSeatBlockEntity extends BlockEntity {
Player playerByUUID = level.getPlayerByUUID(boundPlayerUUID);
// 更新实体朝向
if (playerByUUID != null) {
playerByUUID.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).ifPresent(cap -> {
playerByUUID.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).ifPresent(cap -> {
BlockPos deviceMainBlockPos = cap.getDeviceMainBlockPos();
if (playerByUUID.isPassenger() || deviceMainBlockPos != null) {
Entity vehicle = playerByUUID.getVehicle();

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package top.r3944realms.eroticdungeongame.content.capability;
package top.r3944realms.eroticdungeongame.core.capability;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package top.r3944realms.eroticdungeongame.content.capability;
package top.r3944realms.eroticdungeongame.core.capability;
import net.minecraft.world.entity.EntityDimensions;
import net.minecraft.world.entity.player.Player;
@ -23,7 +23,6 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
import top.r3944realms.eroticdungeongame.content.animation.IEDGAnimation;
import top.r3944realms.eroticdungeongame.content.block.ISeatBlock;
import top.r3944realms.eroticdungeongame.content.block.blockentity.BaseSeatBlockEntity;
@ -48,7 +47,7 @@ public class DungeonDataSyncManager extends CachedSyncManager<UUID, AbstractPlay
}
public static void tick(@NotNull Player player) {
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).ifPresent(
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).ifPresent(
cap -> {
if (player.level().isClientSide) {
clientTick(player);
@ -69,7 +68,7 @@ public class DungeonDataSyncManager extends CachedSyncManager<UUID, AbstractPlay
}
public static void login(@NotNull Player player) {
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).ifPresent(
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).ifPresent(
cap -> {
if (cap.getDeviceMainBlockPos() != null) {
BlockState blockState = player.level().getBlockState(cap.getDeviceMainBlockPos());
@ -85,7 +84,7 @@ public class DungeonDataSyncManager extends CachedSyncManager<UUID, AbstractPlay
}
public static void logout(@NotNull Player player) {
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).ifPresent(
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).ifPresent(
cap -> {
if (cap.getDeviceMainBlockPos() != null && player.level().getBlockEntity(cap.getDeviceMainBlockPos()) instanceof BaseSeatBlockEntity seat) {
((IEDGEntity)player).releaseEntityFromEDGDevice(true);

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package top.r3944realms.eroticdungeongame.content.capability;
package top.r3944realms.eroticdungeongame.core.capability;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;

View File

@ -14,19 +14,24 @@
* limitations under the License.
*/
package top.r3944realms.eroticdungeongame.content.capability;
package top.r3944realms.eroticdungeongame.core.capability;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.CapabilityToken;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.common.util.LazyOptional;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
public class PlayerDungeonDataProvider implements ICapabilitySerializable<CompoundTag> {
/**
* The constant PLAYER_DUNGEON_DATA_CAP.
*/
public static final Capability<AbstractPlayerDungeonData> PLAYER_DUNGEON_DATA_CAP = CapabilityManager.get(new CapabilityToken<>() {});
private final AbstractPlayerDungeonData instance;
private final LazyOptional<AbstractPlayerDungeonData> optional;
@ -37,7 +42,7 @@ public class PlayerDungeonDataProvider implements ICapabilitySerializable<Compou
@Override
public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> capability, @Nullable Direction direction) {
return EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP.orEmpty(capability, this.optional);
return PLAYER_DUNGEON_DATA_CAP.orEmpty(capability, this.optional);
}
@Override

View File

@ -18,7 +18,6 @@ package top.r3944realms.eroticdungeongame.core.compat.jei;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.registration.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.RecipeManager;
import net.minecraft.world.level.Level;

View File

@ -37,14 +37,14 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import top.r3944realms.eroticdungeongame.EroticDungeon;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
import top.r3944realms.eroticdungeongame.content.EDGVillagerTrades;
import top.r3944realms.eroticdungeongame.content.capability.DungeonDataSyncManager;
import top.r3944realms.eroticdungeongame.content.command.EDGCommand;
import top.r3944realms.eroticdungeongame.content.recipe.DungeonCraftingBookCategory;
import top.r3944realms.eroticdungeongame.content.recipe.DungeonRecipe;
import top.r3944realms.eroticdungeongame.content.recipe.EDGRecipeBookTypes;
import top.r3944realms.eroticdungeongame.content.recipe.EDGRecipeTypeCategories;
import top.r3944realms.eroticdungeongame.core.capability.DungeonDataSyncManager;
import top.r3944realms.eroticdungeongame.core.capability.PlayerDungeonDataProvider;
import top.r3944realms.eroticdungeongame.core.compat.*;
import top.r3944realms.eroticdungeongame.core.register.EDGCapabilities;
import top.r3944realms.eroticdungeongame.core.register.EDGRecipeTypes;
@ -68,7 +68,7 @@ public class CommonHandler {
@SubscribeEvent
public static void syncCapabilities(SyncManagerRegisterEvent event) {
dungeonDataSyncManager = new DungeonDataSyncManager();
event.registerSyncManager(DUNGEON_SYNC, dungeonDataSyncManager, EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP);
event.registerSyncManager(DUNGEON_SYNC, dungeonDataSyncManager, PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP);
}
private static char ticks = 0;
@SubscribeEvent

View File

@ -21,8 +21,8 @@ import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import org.jetbrains.annotations.NotNull;
import top.r3944realms.eroticdungeongame.EroticDungeon;
import top.r3944realms.eroticdungeongame.content.capability.AbstractPlayerDungeonData;
import top.r3944realms.eroticdungeongame.content.capability.PlayerDungeonDataProvider;
import top.r3944realms.eroticdungeongame.core.capability.AbstractPlayerDungeonData;
import top.r3944realms.eroticdungeongame.core.capability.PlayerDungeonDataProvider;
public class EDGCapabilities {

View File

@ -29,7 +29,6 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import top.r3944realms.eroticdungeongame.EroticDungeon;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
import top.r3944realms.eroticdungeongame.api.event.RideDeviceEvent;
import top.r3944realms.eroticdungeongame.api.event.UnRideDeviceEvent;
import top.r3944realms.eroticdungeongame.content.animation.IEDGAnimation;
@ -41,6 +40,7 @@ import top.r3944realms.eroticdungeongame.content.block.part.SeatPart;
import top.r3944realms.eroticdungeongame.content.block.type.PilloryBlock;
import top.r3944realms.eroticdungeongame.content.entity.SeatEntity;
import top.r3944realms.eroticdungeongame.content.util.FurnitureHelper;
import top.r3944realms.eroticdungeongame.core.capability.PlayerDungeonDataProvider;
import top.r3944realms.eroticdungeongame.core.device.ISeatType;
import top.r3944realms.eroticdungeongame.core.register.EDGEntities;
import top.r3944realms.eroticdungeongame.util.IEDGEntity;
@ -126,7 +126,7 @@ public class SeatService {
}
public static @NotNull Optional<SeatEntity> getPlayerSeat(@NotNull Player player) {
return player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).resolve().map(cap -> {
return player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).resolve().map(cap -> {
BlockPos deviceMainBlockPos = cap.getDeviceMainBlockPos();
if (player.isPassenger() || deviceMainBlockPos != null) {
Entity vehicle = player.getVehicle();
@ -142,7 +142,7 @@ public class SeatService {
}
public static @NotNull Optional<SeatEntity> getOrCreatePlayerSeat(@NotNull Player player) {
return player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).resolve().map(cap -> {
return player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).resolve().map(cap -> {
BlockPos deviceMainBlockPos = cap.getDeviceMainBlockPos();
if (player.isPassenger() && deviceMainBlockPos != null) {
Entity vehicle = player.getVehicle();
@ -208,7 +208,7 @@ public class SeatService {
player.setYBodyRot(seatEntity.getYRot());
// 设置玩家cap
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP).resolve()
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP).resolve()
.ifPresent(cap -> cap.setDungeonData(ISeatType, varNumber, seatEntity));
}
@ -263,7 +263,7 @@ public class SeatService {
isCancelled = EroticDungeon.EVENT_BUS.post(new UnRideDeviceEvent.Pre(playerByUUID, blockPos, blockState, be, seat));
if (!isCancelled) {
if(seat != null) ((IEDGEntity)(playerByUUID)).releaseEntityFromEDGDevice(true);
playerByUUID.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP)
playerByUUID.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP)
.ifPresent(i -> i.clearDungeonData(playerByUUID));
} else {
bindPlayerToSeat(playerByUUID, blockPos);

View File

@ -20,10 +20,10 @@ import net.minecraft.world.entity.Entity;
import net.minecraftforge.eventbus.api.IEventBus;
import org.jetbrains.annotations.NotNull;
import top.r3944realms.eroticdungeongame.EroticDungeon;
import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi;
import top.r3944realms.eroticdungeongame.api.capability.IPlayerDungeonData;
import top.r3944realms.eroticdungeongame.api.workspace.IWorkSpaceHelper;
import top.r3944realms.eroticdungeongame.content.entity.SeatEntity;
import top.r3944realms.eroticdungeongame.core.capability.PlayerDungeonDataProvider;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
@ -37,7 +37,7 @@ public class WorkSpaceHelper implements IWorkSpaceHelper {
public boolean isInDevice(@NotNull Entity player) {
if (checkIsPlayer(player) && player.isPassenger() && player.getVehicle() instanceof SeatEntity) {
AtomicBoolean hasSeat = new AtomicBoolean(false);
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP)
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP)
.ifPresent(i->{
if (i.getDeviceMainBlockPos() != null) {
hasSeat.set(true);
@ -51,7 +51,7 @@ public class WorkSpaceHelper implements IWorkSpaceHelper {
@Override
public void tryToDoIfInDevice(@NotNull Entity player, Consumer<IPlayerDungeonData> action, Runnable fallback) {
if (checkIsPlayer(player) && player.isPassenger() && player.getVehicle() instanceof SeatEntity) {
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP)
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP)
.ifPresent(i->{
if (i.getDeviceMainBlockPos() != null) {
action.accept(i);
@ -66,7 +66,7 @@ public class WorkSpaceHelper implements IWorkSpaceHelper {
public <T> T tryToDoIfInDeviceAndRet(@NotNull Entity player, Function<IPlayerDungeonData, T> action, Supplier<T> fallback) {
if (checkIsPlayer(player) && player.isPassenger() && player.getVehicle() instanceof SeatEntity) {
AtomicReference<T> ret = new AtomicReference<>();
player.getCapability(EroticDungeonGameApi.PLAYER_DUNGEON_DATA_CAP)
player.getCapability(PlayerDungeonDataProvider.PLAYER_DUNGEON_DATA_CAP)
.ifPresent(i->{
if (i.getDeviceMainBlockPos() != null) {
ret.set(action.apply(i));