From 9e537f464aaf4113b6e6b5a3d35b9f0104ce27b5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 9 Aug 2021 12:13:43 +0700 Subject: [PATCH] Move capability registry --- .../dbotthepony/mc/otm/OverdriveThatMatters.java | 3 ++- .../block/entity/BlockEntityAndroidStation.java | 7 +++---- .../mc/otm/capability/AndroidCapability.java | 16 +++------------- .../mc/otm/capability/IMatteryEnergyStorage.java | 15 +++++---------- ...rgyCapability.java => MatteryCapability.java} | 7 +++++-- .../capability/MatteryMachineEnergyStorage.java | 5 ++--- 6 files changed, 20 insertions(+), 33 deletions(-) rename src/main/java/ru/dbotthepony/mc/otm/capability/{MatteryEnergyCapability.java => MatteryCapability.java} (78%) diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index dc7eac171..81afae2b7 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -30,6 +30,7 @@ import ru.dbotthepony.mc.otm.block.BlockAndroidStation; import ru.dbotthepony.mc.otm.block.entity.BlockEntityAndroidStation; import ru.dbotthepony.mc.otm.capability.AndroidCapability; import ru.dbotthepony.mc.otm.capability.IAndroidCapability; +import ru.dbotthepony.mc.otm.capability.MatteryCapability; import ru.dbotthepony.mc.otm.menu.AndroidStationMenu; import ru.dbotthepony.mc.otm.screen.AndroidStationScreen; @@ -104,7 +105,7 @@ public class OverdriveThatMatters { @SubscribeEvent public void onLivingTick(LivingEvent.LivingUpdateEvent event) { if (event.getEntity() instanceof ServerPlayer ply) { - LazyOptional capability = ply.getCapability(AndroidCapability.CAPABILITY); + LazyOptional capability = ply.getCapability(MatteryCapability.ANDROID); if (!capability.isPresent()) { return; diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java index e02b7c9dc..e4d38ddda 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java @@ -18,9 +18,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.CapabilityEnergy; import ru.dbotthepony.mc.otm.OverdriveThatMatters; -import ru.dbotthepony.mc.otm.capability.AndroidCapability; import ru.dbotthepony.mc.otm.capability.IAndroidCapability; -import ru.dbotthepony.mc.otm.capability.MatteryEnergyCapability; +import ru.dbotthepony.mc.otm.capability.MatteryCapability; import ru.dbotthepony.mc.otm.capability.MatteryMachineEnergyStorage; import ru.dbotthepony.mc.otm.menu.AndroidStationMenu; @@ -50,7 +49,7 @@ public class BlockEntityAndroidStation extends BlockEntity implements MenuProvid @Nonnull public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == MatteryEnergyCapability.CAPABILITY || cap == CapabilityEnergy.ENERGY) { + if (cap == MatteryCapability.ENERGY || cap == CapabilityEnergy.ENERGY) { return LazyOptional.of(() -> energy).cast(); } @@ -81,7 +80,7 @@ public class BlockEntityAndroidStation extends BlockEntity implements MenuProvid List entities = getLevel().getEntitiesOfClass(LivingEntity.class, new AABB(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 2, pos.getZ() + 1)); for (LivingEntity ent : entities) { - LazyOptional resolver = ent.getCapability(AndroidCapability.CAPABILITY); + LazyOptional resolver = ent.getCapability(MatteryCapability.ANDROID); if (resolver.isPresent()) { IAndroidCapability capability = resolver.resolve().get(); diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/AndroidCapability.java b/src/main/java/ru/dbotthepony/mc/otm/capability/AndroidCapability.java index 142f8814b..d1738f192 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/AndroidCapability.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/AndroidCapability.java @@ -1,17 +1,11 @@ package ru.dbotthepony.mc.otm.capability; -import com.google.common.collect.ImmutableMap; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.LongTag; -import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.food.FoodData; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; @@ -20,7 +14,6 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.math.BigDecimal; -import java.util.function.Function; public class AndroidCapability implements ICapabilityProvider, IAndroidCapability, INBTSerializable { private final LivingEntity ent; @@ -33,9 +26,6 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit this.ent = ent; } - @CapabilityInject(IAndroidCapability.class) - public static Capability CAPABILITY = null; - @Override @Nonnull public CompoundTag serializeNBT() { @@ -107,7 +97,7 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit @Nonnull @Override public BigDecimal extractEnergyInner(BigDecimal howMuch, boolean simulate) { - BigDecimal new_energy = energy_stored.subtract(howMuch, MatteryEnergyCapability.ROUND_RULES).max(BigDecimal.ZERO); + BigDecimal new_energy = energy_stored.subtract(howMuch, MatteryCapability.ROUND_RULES).max(BigDecimal.ZERO); BigDecimal diff = energy_stored.subtract(new_energy); if (!simulate) { @@ -120,7 +110,7 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit @Nonnull @Override public BigDecimal receiveEnergyOuter(BigDecimal howMuch, boolean simulate) { - BigDecimal new_energy = energy_stored.add(howMuch, MatteryEnergyCapability.ROUND_RULES).min(energy_stored_max); + BigDecimal new_energy = energy_stored.add(howMuch, MatteryCapability.ROUND_RULES).min(energy_stored_max); BigDecimal diff = new_energy.subtract(energy_stored); if (!simulate) { @@ -156,7 +146,7 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit @Nonnull @Override public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == AndroidCapability.CAPABILITY) { + if (cap == MatteryCapability.ANDROID) { return LazyOptional.of(() -> this).cast(); } diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/IMatteryEnergyStorage.java b/src/main/java/ru/dbotthepony/mc/otm/capability/IMatteryEnergyStorage.java index 32c6d905d..46c2ddddf 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/IMatteryEnergyStorage.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/IMatteryEnergyStorage.java @@ -1,14 +1,9 @@ package ru.dbotthepony.mc.otm.capability; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.math.BigDecimal; -import java.math.BigInteger; // IEnergyStorage for direct compat with Forge Energy public interface IMatteryEnergyStorage extends IEnergyStorage { @@ -77,7 +72,7 @@ public interface IMatteryEnergyStorage extends IEnergyStorage { BigDecimal getMaxBatteryLevel(); default BigDecimal getMissingPower() { - return getMaxBatteryLevel().subtract(getBatteryLevel(), MatteryEnergyCapability.ROUND_RULES); + return getMaxBatteryLevel().subtract(getBatteryLevel(), MatteryCapability.ROUND_RULES); } @Override @@ -90,7 +85,7 @@ public interface IMatteryEnergyStorage extends IEnergyStorage { return 0; } - return receiveEnergyOuter(received.round(MatteryEnergyCapability.ROUND_RULES), simulate).intValue(); + return receiveEnergyOuter(received.round(MatteryCapability.ROUND_RULES), simulate).intValue(); } @Override @@ -103,14 +98,14 @@ public interface IMatteryEnergyStorage extends IEnergyStorage { return 0; } - return extractEnergyOuter(extracted.round(MatteryEnergyCapability.ROUND_RULES), simulate).intValue(); + return extractEnergyOuter(extracted.round(MatteryCapability.ROUND_RULES), simulate).intValue(); } @Override default int getEnergyStored() { BigDecimal level = getBatteryLevel(); - if (level.compareTo(MatteryEnergyCapability.INT_MAX_VALUE) == -1) { + if (level.compareTo(MatteryCapability.INT_MAX_VALUE) == -1) { return level.intValue(); } @@ -121,7 +116,7 @@ public interface IMatteryEnergyStorage extends IEnergyStorage { default int getMaxEnergyStored() { BigDecimal level = getMaxBatteryLevel(); - if (level.compareTo(MatteryEnergyCapability.INT_MAX_VALUE) == -1) { + if (level.compareTo(MatteryCapability.INT_MAX_VALUE) == -1) { return level.intValue(); } diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryEnergyCapability.java b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java similarity index 78% rename from src/main/java/ru/dbotthepony/mc/otm/capability/MatteryEnergyCapability.java rename to src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java index d5f6156f6..e21fabfaf 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryEnergyCapability.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java @@ -7,9 +7,12 @@ import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; -public class MatteryEnergyCapability { +public class MatteryCapability { @CapabilityInject(IMatteryEnergyStorage.class) - public static Capability CAPABILITY = null; + public static Capability ENERGY = null; + + @CapabilityInject(IAndroidCapability.class) + public static Capability ANDROID = null; public static final MathContext ROUND_RULES = new MathContext(0, RoundingMode.HALF_UP); diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryMachineEnergyStorage.java b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryMachineEnergyStorage.java index e982a4125..dc7db58a6 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryMachineEnergyStorage.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryMachineEnergyStorage.java @@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.capability; import net.minecraft.nbt.CompoundTag; import net.minecraftforge.common.util.INBTSerializable; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; import javax.annotation.Nonnull; import java.math.BigDecimal; @@ -52,7 +51,7 @@ public class MatteryMachineEnergyStorage implements IMatteryEnergyStorage, INBTS @Nonnull @Override public BigDecimal extractEnergyInner(BigDecimal howMuch, boolean simulate) { - BigDecimal new_energy = energy_stored.subtract(howMuch.min(max_output), MatteryEnergyCapability.ROUND_RULES).max(BigDecimal.ZERO); + BigDecimal new_energy = energy_stored.subtract(howMuch.min(max_output), MatteryCapability.ROUND_RULES).max(BigDecimal.ZERO); BigDecimal diff = energy_stored.subtract(new_energy); if (!simulate) { @@ -75,7 +74,7 @@ public class MatteryMachineEnergyStorage implements IMatteryEnergyStorage, INBTS @Nonnull @Override public BigDecimal receiveEnergyInner(BigDecimal howMuch, boolean simulate) { - BigDecimal new_energy = energy_stored.add(howMuch.min(max_input), MatteryEnergyCapability.ROUND_RULES).min(energy_stored_max); + BigDecimal new_energy = energy_stored.add(howMuch.min(max_input), MatteryCapability.ROUND_RULES).min(energy_stored_max); BigDecimal diff = new_energy.subtract(energy_stored); if (!simulate) {