From e859b933501098263f0e0cba4a49210c4b69dce2 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 31 Dec 2021 18:24:05 +0700 Subject: [PATCH] Update android capability stuff --- .../dbotthepony/mc/otm/client/AndroidGui.java | 7 +- .../network/android/AndroidStatusPacket.java | 4 +- .../capability/android/AndroidCapability.kt | 115 +++++++++--------- .../android/AndroidCapabilityPlayer.kt | 72 +++++------ .../capability/android/IAndroidCapability.kt | 6 +- 5 files changed, 100 insertions(+), 104 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java b/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java index 319465991..86a5b839d 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java +++ b/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java @@ -5,7 +5,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.DeathScreen; import net.minecraft.client.gui.screens.InBedChatScreen; -import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; @@ -16,7 +15,6 @@ import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.client.event.ScreenOpenEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.gui.ForgeIngameGui; -import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import org.apache.logging.log4j.LogManager; @@ -27,7 +25,6 @@ import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability; import ru.dbotthepony.mc.otm.capability.MatteryCapability; import ru.dbotthepony.mc.otm.core.Fraction; -import java.math.BigDecimal; import java.util.Optional; import java.util.Random; @@ -75,7 +72,7 @@ public class AndroidGui { } mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { - if (!((AndroidCapabilityPlayer) cap).will_become_android) { + if (!((AndroidCapabilityPlayer) cap).willBecomeAndroid) { known_button.x = known_button_x; known_button.y = known_button_y; known_button_x = -1; @@ -114,7 +111,7 @@ public class AndroidGui { known_button_screen = screen; mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { - if (((AndroidCapabilityPlayer) cap).will_become_android) { + if (((AndroidCapabilityPlayer) cap).willBecomeAndroid) { known_button_screen = screen; } }); diff --git a/src/main/java/ru/dbotthepony/mc/otm/network/android/AndroidStatusPacket.java b/src/main/java/ru/dbotthepony/mc/otm/network/android/AndroidStatusPacket.java index 15ba5eb12..010251fe3 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/network/android/AndroidStatusPacket.java +++ b/src/main/java/ru/dbotthepony/mc/otm/network/android/AndroidStatusPacket.java @@ -35,9 +35,9 @@ public record AndroidStatusPacket(Type type, boolean status) { ply.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { if (cap instanceof AndroidCapabilityPlayer pcap) { if (type == Type.IS_ANDROID) - pcap.is_android = status; + pcap.isAndroid = status; else if (type == Type.WILL_BECOME_ANDROID) - pcap.will_become_android = status; + pcap.willBecomeAndroid = status; } }); } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt index c07f12793..f411d9ffb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt @@ -43,27 +43,26 @@ import java.util.* @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapabilityProvider, IAndroidCapability, INBTSerializable { - @JvmField - protected var energy_stored = Fraction.ZERO - @JvmField - protected var energy_stored_max = Fraction(60000) + @JvmField protected var battery = Fraction.ZERO + @JvmField protected var maxBattery = Fraction(60000) override var batteryItemStack = ItemStack.EMPTY - private var network_energy = Fraction(-1) - private var network_energy_max = Fraction(-1) - private var network_battery = ItemStack.EMPTY + private var remoteBattery = Fraction(-1) + private var remoteMaxBattery = Fraction(-1) + private var remoteBatteryStack = ItemStack.EMPTY @JvmField protected val features: MutableMap?, AndroidFeature> = HashMap() - @JvmField protected val network_queue = ArrayList() - @JvmField protected val delayed_tick_server = ArrayList() - @JvmField protected var network_first = false + @JvmField protected val networkQueue = ArrayList() + @JvmField protected val queuedTicks = ArrayList() + @JvmField protected var networkFirst = false protected fun addFeature(feature: AndroidFeature): Boolean { if (features.containsKey(feature.type)) return false features[feature.type] = feature + if (!ent.level.isClientSide) { - delayed_tick_server.add(Runnable { feature.applyModifiers() }) + queuedTicks.add(Runnable { feature.applyModifiers() }) } if (ent is ServerPlayer) { sendNetwork(AndroidFeaturePacket(true, feature)) @@ -80,7 +79,7 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab features[feature] = factory if (!ent.level.isClientSide) { - delayed_tick_server.add(Runnable { factory!!.applyModifiers() }) + queuedTicks.add(Runnable { factory!!.applyModifiers() }) } if (ent is ServerPlayer) { @@ -95,7 +94,7 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab if (removed != null) { if (!ent.level.isClientSide) { - delayed_tick_server.add { removed.removeModifiers() } + queuedTicks.add { removed.removeModifiers() } } if (ent is ServerPlayer) { @@ -122,9 +121,9 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab } override fun invalidateNetworkState() { - network_energy = Fraction.MINUS_ONE - network_energy_max = Fraction.MINUS_ONE - network_battery = ItemStack.EMPTY + remoteBattery = Fraction.MINUS_ONE + remoteMaxBattery = Fraction.MINUS_ONE + remoteBatteryStack = ItemStack.EMPTY if (ent is ServerPlayer) { for (feature in features.values) { @@ -134,15 +133,15 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab } } - override fun setEnergy(value: Fraction?) { - energy_stored = value!! + override fun setEnergy(value: Fraction) { + battery = value } - override fun setMaxEnergy(value: Fraction?) { - energy_stored_max = value!! + override fun setMaxEnergy(value: Fraction) { + maxBattery = value } - override fun onHurt(event: LivingHurtEvent?) { + override fun onHurt(event: LivingHurtEvent) { for (feature in features.values) { feature.onHurt(event) } @@ -151,8 +150,8 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab override fun serializeNBT(): CompoundTag { val tag = CompoundTag() - tag["energy_stored"] = energy_stored.serializeNBT() - tag["energy_stored_max"] = energy_stored_max.serializeNBT() + tag["energy_stored"] = battery.serializeNBT() + tag["energy_stored_max"] = maxBattery.serializeNBT() tag["battery"] = batteryItemStack.serializeNBT() val featureList = ListTag() @@ -173,11 +172,11 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab compound!! compound.ifHas("energy_stored") { - energy_stored = Fraction.deserializeNBT(it) + battery = Fraction.deserializeNBT(it) } compound.ifHas("energy_stored_max") { - energy_stored_max = Fraction.deserializeNBT(it) + maxBattery = Fraction.deserializeNBT(it) } compound.ifHas("battery", CompoundTag::class.java) { @@ -199,7 +198,7 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab addFeature(feature) if (!ent.level.isClientSide) { - delayed_tick_server.add(Runnable { feature.applyModifiers() }) + queuedTicks.add(Runnable { feature.applyModifiers() }) } } } @@ -214,39 +213,39 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab protected fun sendNetwork(packet: Any) { if (ent is ServerPlayer) { - if (network_first) { + if (networkFirst) { MatteryNetworking.CHANNEL.send(PacketDistributor.PLAYER.with { ent }, packet) } else { - network_queue.add(packet) + networkQueue.add(packet) } } } protected open fun tickNetwork() { - network_first = true + networkFirst = true if (ent is ServerPlayer) { - if (energy_stored != network_energy) { - network_energy = energy_stored - sendNetwork(AndroidEnergyPacket(false, energy_stored)) + if (battery != remoteBattery) { + remoteBattery = battery + sendNetwork(AndroidEnergyPacket(false, battery)) } - if (energy_stored_max != network_energy_max) { - network_energy_max = energy_stored_max - sendNetwork(AndroidEnergyPacket(true, energy_stored_max)) + if (maxBattery != remoteMaxBattery) { + remoteMaxBattery = maxBattery + sendNetwork(AndroidEnergyPacket(true, maxBattery)) } - if (!network_battery.equals(batteryItemStack, false)) { - network_battery = batteryItemStack.copy() + if (!remoteBatteryStack.equals(batteryItemStack, false)) { + remoteBatteryStack = batteryItemStack.copy() sendNetwork(AndroidBatteryPacket(batteryItemStack)) } - if (network_queue.size != 0) { - for (packet in network_queue) { + if (networkQueue.size != 0) { + for (packet in networkQueue) { MatteryNetworking.CHANNEL.send(PacketDistributor.PLAYER.with {ent}, packet) } - network_queue.clear() + networkQueue.clear() } } } @@ -255,7 +254,7 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab protected open fun tickInnerClientAlways() {} override fun tickClient() { - delayed_tick_server.clear() + queuedTicks.clear() if (!ent.isAlive) return tickInnerClientAlways() if (isAndroid()) { @@ -275,10 +274,10 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab feature.tickServer() } } - for (runnable in delayed_tick_server) { + for (runnable in queuedTicks) { runnable.run() } - delayed_tick_server.clear() + queuedTicks.clear() tickNetwork() } @@ -292,12 +291,12 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab if (ent.hasEffect(effect)) ent.removeEffect(effect) - if (!batteryItemStack.isEmpty && energy_stored < energy_stored_max) { + if (!batteryItemStack.isEmpty && battery < maxBattery) { batteryItemStack.getCapability(CapabilityEnergy.ENERGY).ifPresent { if (it is IMatteryEnergyStorage) { - energy_stored += it.extractEnergyInner(energy_stored_max - energy_stored, false) + battery += it.extractEnergyInner(maxBattery - battery, false) } else { - energy_stored += it.extractEnergy(energy_stored_max - energy_stored, false) + battery += it.extractEnergy(maxBattery - battery, false) } } } @@ -333,11 +332,11 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab } } - val new = (energy_stored - howMuch).moreThanZero() - drained += energy_stored - new + val new = (battery - howMuch).moreThanZero() + drained += battery - new if (!simulate) { - energy_stored = new + battery = new if (ent is ServerPlayer) { ent.awardStat(Registry.Names.POWER_CONSUMED, drained.toInt() * 10) @@ -369,11 +368,11 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab } } - val new = (energy_stored + howMuch).min(energy_stored_max) - received += new - energy_stored + val new = (battery + howMuch).min(maxBattery) + received += new - battery if (!simulate) { - energy_stored = new + battery = new } return received @@ -395,14 +394,14 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab val it = resolver.get() if (it is IMatteryEnergyStorage) { - return energy_stored + it.batteryLevel + return battery + it.batteryLevel } else { - return energy_stored + it.energyStored + return battery + it.energyStored } } } - return energy_stored + return battery } override fun getMaxBatteryLevel(): Fraction { @@ -413,14 +412,14 @@ open class AndroidCapability(@JvmField protected val ent: LivingEntity) : ICapab val it = resolver.get() if (it is IMatteryEnergyStorage) { - return energy_stored_max + it.maxBatteryLevel + return maxBattery + it.maxBatteryLevel } else { - return energy_stored_max + it.maxEnergyStored + return maxBattery + it.maxEnergyStored } } } - return energy_stored_max + return maxBattery } private val resolver = LazyOptional.of { this } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt index 3713aa97e..1ecb5c139 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt @@ -25,63 +25,63 @@ import java.util.* class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply) { @JvmField - var is_android = false - private var network_is_android = false + var isAndroid = false + private var isAndroidNetwork = false @JvmField - var will_become_android = false - private var network_will_become_android = false + var willBecomeAndroid = false + private var willBecomeAndroidNetwork = false private val research = ArrayList() override fun invalidateNetworkState() { super.invalidateNetworkState() - network_is_android = false - network_will_become_android = false + isAndroidNetwork = false + willBecomeAndroidNetwork = false for (instance in research) { instance.dirty = true } } - override fun isAndroid(): Boolean = is_android - fun isEverAndroid(): Boolean = is_android || will_become_android + override fun isAndroid(): Boolean = isAndroid + fun isEverAndroid(): Boolean = isAndroid || willBecomeAndroid fun becomeAndroidSoft() { - if (is_android || will_become_android) return - will_become_android = true + if (isAndroid || willBecomeAndroid) return + willBecomeAndroid = true (ply as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message").withStyle(ChatFormatting.GRAY), false) } fun becomeAndroid() { - if (is_android) return + if (isAndroid) return - is_android = true - will_become_android = false - energy_stored = Fraction(60000) - energy_stored_max = Fraction(60000) + isAndroid = true + willBecomeAndroid = false + battery = Fraction(60000) + maxBattery = Fraction(60000) } fun becomeAndroidAndKill() { - if (is_android) return + if (isAndroid) return becomeAndroid() ply.hurt(Registry.DAMAGE_BECOME_ANDROID, ply.maxHealth * 2) } fun becomeHumane() { - if (will_become_android) will_become_android = false - if (!is_android) return + if (willBecomeAndroid) willBecomeAndroid = false + if (!isAndroid) return - is_android = false - energy_stored = Fraction(0) - energy_stored_max = Fraction(60000) + isAndroid = false + battery = Fraction(0) + maxBattery = Fraction(60000) dropBattery() } fun becomeHumaneAndKill() { - if (will_become_android) will_become_android = false - if (!is_android) return + if (willBecomeAndroid) willBecomeAndroid = false + if (!isAndroid) return becomeHumane() ply.hurt(Registry.DAMAGE_BECOME_HUMANE, ply.maxHealth * 2) @@ -90,8 +90,8 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply override fun deserializeNBT(compound: CompoundTag?) { super.deserializeNBT(compound!!) - is_android = compound.getBoolean("is_android") - will_become_android = compound.getBoolean("will_become_android") + isAndroid = compound.getBoolean("is_android") + willBecomeAndroid = compound.getBoolean("will_become_android") research.clear() val list = compound.getList("research", Tag.TAG_COMPOUND.toInt()) @@ -112,8 +112,8 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply override fun serializeNBT(): CompoundTag { val tag = super.serializeNBT() - tag["is_android"] = is_android - tag["will_become_android"] = will_become_android + tag["is_android"] = isAndroid + tag["will_become_android"] = willBecomeAndroid val list = ListTag() @@ -146,14 +146,14 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply override fun tickNetwork() { super.tickNetwork() - if (is_android != network_is_android) { - network_is_android = is_android - sendNetwork(AndroidStatusPacket(AndroidStatusPacket.Type.IS_ANDROID, is_android)) + if (isAndroid != isAndroidNetwork) { + isAndroidNetwork = isAndroid + sendNetwork(AndroidStatusPacket(AndroidStatusPacket.Type.IS_ANDROID, isAndroid)) } - if (will_become_android != network_will_become_android) { - network_will_become_android = will_become_android - sendNetwork(AndroidStatusPacket(AndroidStatusPacket.Type.WILL_BECOME_ANDROID, will_become_android)) + if (willBecomeAndroid != willBecomeAndroidNetwork) { + willBecomeAndroidNetwork = willBecomeAndroid + sendNetwork(AndroidStatusPacket(AndroidStatusPacket.Type.WILL_BECOME_ANDROID, willBecomeAndroid)) } for (instance in research) { @@ -170,7 +170,7 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply override fun tickInnerClientAlways() { super.tickInnerClientAlways() - if (will_become_android) { + if (willBecomeAndroid) { if (ply.isSleeping) { sleep_ticks++ } else { @@ -182,7 +182,7 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply override fun tickServerAlways() { super.tickServerAlways() - if (will_become_android) { + if (willBecomeAndroid) { if (ply.isSleeping) { sleep_ticks++ @@ -268,7 +268,7 @@ class AndroidCapabilityPlayer(@JvmField val ply: Player) : AndroidCapability(ply val original = resolver.resolve().get() as AndroidCapabilityPlayer - if (original.will_become_android && event.isWasDeath) { + if (original.willBecomeAndroid && event.isWasDeath) { original.becomeAndroid() (event.player as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/IAndroidCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/IAndroidCapability.kt index ed16ea726..03c697fbb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/IAndroidCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/IAndroidCapability.kt @@ -37,9 +37,9 @@ interface IAndroidCapability : IMatteryEnergyStorage, INBTSerializable