Instantly become android in creative
This commit is contained in:
parent
0a72458e91
commit
d923cff3f1
@ -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));
|
||||
|
@ -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<Component>,
|
||||
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<Component> 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<ItemStack> 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<ItemStack> {
|
||||
if (ply is FakePlayer)
|
||||
return super.use(level, ply, hand)
|
||||
|
||||
Optional<IAndroidCapability> 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<IAndroidCapability> 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user