Persistent android capability
This commit is contained in:
parent
7087705f22
commit
5c8657f5b3
@ -128,7 +128,7 @@ dependencies {
|
||||
// Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed
|
||||
// that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied.
|
||||
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
|
||||
minecraft 'net.minecraftforge:forge:1.17.1-37.0.27'
|
||||
minecraft 'net.minecraftforge:forge:1.17.1-37.0.32'
|
||||
|
||||
// Real mod deobf dependency examples - these get remapped to your current mappings
|
||||
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency
|
||||
|
@ -18,10 +18,14 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.gui.ForgeIngameGui;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.INBTSerializable;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.InterModComms;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
@ -114,13 +118,6 @@ public class OverdriveThatMatters {
|
||||
event.addCapability(android_cap_location, new AndroidCapabilityPlayer((Player) event.getObject()));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPostTick(TickEvent.ServerTickEvent event) {
|
||||
if (event.phase == TickEvent.Phase.END) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onLivingTick(LivingEvent.LivingUpdateEvent event) {
|
||||
if (event.getEntity() instanceof ServerPlayer ply) {
|
||||
@ -130,6 +127,27 @@ public class OverdriveThatMatters {
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPlayerCloneEvent(PlayerEvent.Clone event) {
|
||||
event.getPlayer().getCapability(MatteryCapability.ANDROID).ifPresent((cap) -> {
|
||||
LazyOptional<IAndroidCapability> resolver = event.getOriginal().getCapability(MatteryCapability.ANDROID);
|
||||
|
||||
if (!resolver.isPresent() || resolver.resolve().isEmpty()) {
|
||||
event.getOriginal().reviveCaps();
|
||||
resolver = event.getOriginal().getCapability(MatteryCapability.ANDROID);
|
||||
LOGGER.info("revived cap {}", resolver.resolve());
|
||||
}
|
||||
|
||||
if (!resolver.isPresent() || resolver.resolve().isEmpty()) {
|
||||
event.getOriginal().invalidateCaps();
|
||||
return;
|
||||
}
|
||||
|
||||
cap.deserializeNBT(resolver.resolve().get().serializeNBT());
|
||||
event.getOriginal().invalidateCaps();
|
||||
});
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onLayerRenderEvent(RenderGameOverlayEvent.PreLayer event) {
|
||||
if (event.getOverlay() != ForgeIngameGui.FOOD_LEVEL_ELEMENT)
|
||||
|
@ -37,7 +37,7 @@ public class BlockEntityAndroidStation extends BlockEntityMatteryPoweredMachine
|
||||
|
||||
public BlockEntityAndroidStation(BlockPos p_155229_, BlockState p_155230_) {
|
||||
super(OverdriveThatMatters.ANDROID_STATION_FACTORY, p_155229_, p_155230_);
|
||||
energy = new MatteryMachineEnergyStorage(MatteryMachineEnergyStorage.MachineType.WORKER, new BigDecimal(128_000));
|
||||
energy = new MatteryMachineEnergyStorage(MatteryMachineEnergyStorage.MachineType.WORKER, new BigDecimal(128_000), new BigDecimal(4096), new BigDecimal(256));
|
||||
energy_resolver = LazyOptional.of(() -> energy);
|
||||
}
|
||||
|
||||
|
@ -69,8 +69,6 @@ public class AndroidCapabilityPlayer extends AndroidCapability {
|
||||
if (saturation_changed) {
|
||||
stats.setSaturation(20F - saturation_points_missing);
|
||||
}
|
||||
|
||||
OverdriveThatMatters.LOGGER.info("New power level {}", getBatteryLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
package ru.dbotthepony.mc.otm.capability;
|
||||
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
import net.minecraftforge.common.util.INBTSerializable;
|
||||
import ru.dbotthepony.mc.otm.network.AndroidCapabilityChangePacket;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface IAndroidCapability extends IMatteryEnergyStorage {
|
||||
public interface IAndroidCapability extends IMatteryEnergyStorage, INBTSerializable<CompoundTag> {
|
||||
void tick();
|
||||
void tickClient();
|
||||
LivingEntity getEntity();
|
||||
|
Loading…
Reference in New Issue
Block a user