From d923cff3f17e7fa5fcd514c1536db057124633bc Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 31 Dec 2021 14:03:36 +0700 Subject: [PATCH] Instantly become android in creative --- .../java/ru/dbotthepony/mc/otm/Registry.java | 4 +- .../ru/dbotthepony/mc/otm/item/ItemPill.kt | 161 +++++++++--------- 2 files changed, 82 insertions(+), 83 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/Registry.java b/src/main/java/ru/dbotthepony/mc/otm/Registry.java index fcde7cba3..048188500 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/Registry.java +++ b/src/main/java/ru/dbotthepony/mc/otm/Registry.java @@ -413,8 +413,8 @@ public class Registry { public static final ItemGravitationalDisruptor GRAVITATIONAL_DISRUPTOR = new ItemGravitationalDisruptor(); - public static final ItemPill PILL_ANDROID = new ItemPill(ItemPill.PillType.BECOME_ANDROID); - public static final ItemPill PILL_HUMANE = new ItemPill(ItemPill.PillType.BECOME_HUMANE); + public static final ItemPill PILL_ANDROID = new ItemPill(PillType.BECOME_ANDROID); + public static final ItemPill PILL_HUMANE = new ItemPill(PillType.BECOME_HUMANE); public static final ItemBattery BATTERY_CRUDE = new ItemBattery(new Fraction(30_000), new Fraction(150), new Fraction(150)); public static final ItemBattery BATTERY_BASIC = new ItemBattery(new Fraction(60_000), new Fraction(300), new Fraction(300)); diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ItemPill.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ItemPill.kt index c4d6d1574..6845ac40f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ItemPill.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ItemPill.kt @@ -1,110 +1,109 @@ -package ru.dbotthepony.mc.otm.item; +package ru.dbotthepony.mc.otm.item -import net.minecraft.ChatFormatting; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; -import net.minecraft.world.level.Level; -import net.minecraftforge.common.util.FakePlayer; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; -import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer; -import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability; -import ru.dbotthepony.mc.otm.capability.MatteryCapability; +import net.minecraft.ChatFormatting +import net.minecraft.network.chat.Component +import net.minecraft.network.chat.TranslatableComponent +import net.minecraft.server.level.ServerPlayer +import net.minecraft.world.InteractionHand +import net.minecraft.world.InteractionResultHolder +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.* +import net.minecraft.world.level.Level +import net.minecraftforge.common.util.FakePlayer +import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.capability.MatteryCapability +import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; -import java.util.List; -import java.util.Optional; +enum class PillType { + BECOME_ANDROID, BECOME_HUMANE +} -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class ItemPill extends Item { - public enum PillType { - BECOME_ANDROID, - BECOME_HUMANE +class ItemPill(val pillType: PillType) : + Item(Properties().stacksTo(64).rarity(Rarity.UNCOMMON).tab(OverdriveThatMatters.CREATIVE_TAB)) { + + override fun getUseDuration(p_41454_: ItemStack): Int { + return 32 } - public final PillType pill_type; + override fun appendHoverText( + p_41421_: ItemStack, + p_41422_: Level?, + p_41423_: MutableList, + p_41424_: TooltipFlag + ) { + super.appendHoverText(p_41421_, p_41422_, p_41423_, p_41424_) - public ItemPill(PillType type) { - super(new Properties().stacksTo(64).rarity(Rarity.UNCOMMON).tab(OverdriveThatMatters.CREATIVE_TAB)); - this.pill_type = type; - } - - @Override - public int getUseDuration(ItemStack p_41454_) { - return 32; - } - - @Override - public void appendHoverText(ItemStack p_41421_, @Nullable Level p_41422_, List p_41423_, TooltipFlag p_41424_) { - super.appendHoverText(p_41421_, p_41422_, p_41423_, p_41424_); - - if (this.pill_type == PillType.BECOME_ANDROID) { - p_41423_.add(new TranslatableComponent("otm.pill.android").withStyle(ChatFormatting.GRAY)); + if (pillType == PillType.BECOME_ANDROID) { + p_41423_.add(TranslatableComponent("otm.pill.android").withStyle(ChatFormatting.GRAY)) } else { - p_41423_.add(new TranslatableComponent("otm.pill.humane").withStyle(ChatFormatting.GRAY)); - p_41423_.add(new TranslatableComponent("otm.pill.warning").withStyle(ChatFormatting.RED)); + p_41423_.add(TranslatableComponent("otm.pill.humane").withStyle(ChatFormatting.GRAY)) + p_41423_.add(TranslatableComponent("otm.pill.warning").withStyle(ChatFormatting.RED)) } } - @Override - public InteractionResultHolder use(Level level, Player ply, InteractionHand hand) { - if (ply instanceof FakePlayer) - return super.use(level, ply, hand); + override fun use(level: Level, ply: Player, hand: InteractionHand): InteractionResultHolder { + if (ply is FakePlayer) + return super.use(level, ply, hand) - Optional resolver = ply.getCapability(MatteryCapability.ANDROID).resolve(); + val resolver = ply.getCapability(MatteryCapability.ANDROID).resolve() - if (resolver.isEmpty() || !(resolver.get() instanceof AndroidCapabilityPlayer)) - return super.use(level, ply, hand); + if (resolver.isEmpty || resolver.get() !is AndroidCapabilityPlayer) + return super.use(level, ply, hand) - if (this.pill_type == PillType.BECOME_ANDROID && !((AndroidCapabilityPlayer) resolver.get()).isEverAndroid() || this.pill_type == PillType.BECOME_HUMANE && ((AndroidCapabilityPlayer) resolver.get()).isEverAndroid()) { - ply.startUsingItem(hand); - return InteractionResultHolder.consume(ply.getItemInHand(hand)); + val cap = resolver.get() as AndroidCapabilityPlayer + + if (pillType == PillType.BECOME_ANDROID && !cap.isEverAndroid || pillType == PillType.BECOME_HUMANE && cap.isEverAndroid) { + ply.startUsingItem(hand) + return InteractionResultHolder.consume(ply.getItemInHand(hand)) } - return super.use(level, ply, hand); + return super.use(level, ply, hand) } - @Override - public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity ent) { - if (ent instanceof FakePlayer) - super.finishUsingItem(stack, level, ent); + override fun finishUsingItem(stack: ItemStack, level: Level, ent: LivingEntity): ItemStack { + if (ent is FakePlayer) + super.finishUsingItem(stack, level, ent) - if (ent instanceof Player ply) { - Optional resolver = ply.getCapability(MatteryCapability.ANDROID).resolve(); + if (ent is Player) { + val resolver = ent.getCapability(MatteryCapability.ANDROID).resolve() - if (resolver.isEmpty() || !(resolver.get() instanceof AndroidCapabilityPlayer)) - return super.finishUsingItem(stack, level, ply); + if (resolver.isEmpty || resolver.get() !is AndroidCapabilityPlayer) + return super.finishUsingItem(stack, level, ent); - if (this.pill_type == PillType.BECOME_ANDROID && !((AndroidCapabilityPlayer) resolver.get()).isEverAndroid()) { - if (!ply.getAbilities().instabuild) - stack.shrink(1); + val cap = resolver.get() as AndroidCapabilityPlayer - if (ply instanceof ServerPlayer) - ((AndroidCapabilityPlayer) resolver.get()).becomeAndroidSoft(); - } else if (this.pill_type == PillType.BECOME_HUMANE && ((AndroidCapabilityPlayer) resolver.get()).isEverAndroid()) { - if (!ply.getAbilities().instabuild) - stack.shrink(1); + if (pillType == PillType.BECOME_ANDROID && !cap.isEverAndroid) { + if (ent.abilities.instabuild) { + if (ent is ServerPlayer) { + cap.becomeAndroid() + } + } else { + stack.shrink(1) - if (ply instanceof ServerPlayer) - ((AndroidCapabilityPlayer) resolver.get()).becomeHumaneAndKill(); + if (ent is ServerPlayer) { + cap.becomeAndroidSoft() + } + } + } else if (pillType == PillType.BECOME_HUMANE && cap.isEverAndroid) { + if (ent.abilities.instabuild) { + if (ent is ServerPlayer) { + cap.becomeHumane() + } + } else { + stack.shrink(1) + + if (ent is ServerPlayer) { + cap.becomeHumaneAndKill() + } + } } return stack; } - return super.finishUsingItem(stack, level, ent); + return super.finishUsingItem(stack, level, ent) } - @Override - public UseAnim getUseAnimation(ItemStack p_41452_) { - return UseAnim.EAT; - } -} + override fun getUseAnimation(p_41452_: ItemStack): UseAnim = UseAnim.EAT +} \ No newline at end of file