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 ItemGravitationalDisruptor GRAVITATIONAL_DISRUPTOR = new ItemGravitationalDisruptor();
|
||||||
|
|
||||||
public static final ItemPill PILL_ANDROID = new ItemPill(ItemPill.PillType.BECOME_ANDROID);
|
public static final ItemPill PILL_ANDROID = new ItemPill(PillType.BECOME_ANDROID);
|
||||||
public static final ItemPill PILL_HUMANE = new ItemPill(ItemPill.PillType.BECOME_HUMANE);
|
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_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));
|
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.ChatFormatting
|
||||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.TranslatableComponent
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.world.InteractionHand
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionResultHolder
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.item.*
|
||||||
import net.minecraft.world.item.*;
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraftforge.common.util.FakePlayer
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer;
|
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer
|
||||||
import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability;
|
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
enum class PillType {
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
BECOME_ANDROID, BECOME_HUMANE
|
||||||
import java.util.List;
|
}
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@ParametersAreNonnullByDefault
|
class ItemPill(val pillType: PillType) :
|
||||||
@MethodsReturnNonnullByDefault
|
Item(Properties().stacksTo(64).rarity(Rarity.UNCOMMON).tab(OverdriveThatMatters.CREATIVE_TAB)) {
|
||||||
public class ItemPill extends Item {
|
|
||||||
public enum PillType {
|
override fun getUseDuration(p_41454_: ItemStack): Int {
|
||||||
BECOME_ANDROID,
|
return 32
|
||||||
BECOME_HUMANE
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
if (pillType == PillType.BECOME_ANDROID) {
|
||||||
super(new Properties().stacksTo(64).rarity(Rarity.UNCOMMON).tab(OverdriveThatMatters.CREATIVE_TAB));
|
p_41423_.add(TranslatableComponent("otm.pill.android").withStyle(ChatFormatting.GRAY))
|
||||||
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));
|
|
||||||
} else {
|
} else {
|
||||||
p_41423_.add(new TranslatableComponent("otm.pill.humane").withStyle(ChatFormatting.GRAY));
|
p_41423_.add(TranslatableComponent("otm.pill.humane").withStyle(ChatFormatting.GRAY))
|
||||||
p_41423_.add(new TranslatableComponent("otm.pill.warning").withStyle(ChatFormatting.RED));
|
p_41423_.add(TranslatableComponent("otm.pill.warning").withStyle(ChatFormatting.RED))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
override fun use(level: Level, ply: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||||
public InteractionResultHolder<ItemStack> use(Level level, Player ply, InteractionHand hand) {
|
if (ply is FakePlayer)
|
||||||
if (ply instanceof FakePlayer)
|
return super.use(level, ply, hand)
|
||||||
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))
|
if (resolver.isEmpty || resolver.get() !is AndroidCapabilityPlayer)
|
||||||
return super.use(level, ply, hand);
|
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()) {
|
val cap = resolver.get() as AndroidCapabilityPlayer
|
||||||
ply.startUsingItem(hand);
|
|
||||||
return InteractionResultHolder.consume(ply.getItemInHand(hand));
|
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
|
override fun finishUsingItem(stack: ItemStack, level: Level, ent: LivingEntity): ItemStack {
|
||||||
public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity ent) {
|
if (ent is FakePlayer)
|
||||||
if (ent instanceof FakePlayer)
|
super.finishUsingItem(stack, level, ent)
|
||||||
super.finishUsingItem(stack, level, ent);
|
|
||||||
|
|
||||||
if (ent instanceof Player ply) {
|
if (ent is Player) {
|
||||||
Optional<IAndroidCapability> resolver = ply.getCapability(MatteryCapability.ANDROID).resolve();
|
val resolver = ent.getCapability(MatteryCapability.ANDROID).resolve()
|
||||||
|
|
||||||
if (resolver.isEmpty() || !(resolver.get() instanceof AndroidCapabilityPlayer))
|
if (resolver.isEmpty || resolver.get() !is AndroidCapabilityPlayer)
|
||||||
return super.finishUsingItem(stack, level, ply);
|
return super.finishUsingItem(stack, level, ent);
|
||||||
|
|
||||||
if (this.pill_type == PillType.BECOME_ANDROID && !((AndroidCapabilityPlayer) resolver.get()).isEverAndroid()) {
|
val cap = resolver.get() as AndroidCapabilityPlayer
|
||||||
if (!ply.getAbilities().instabuild)
|
|
||||||
stack.shrink(1);
|
|
||||||
|
|
||||||
if (ply instanceof ServerPlayer)
|
if (pillType == PillType.BECOME_ANDROID && !cap.isEverAndroid) {
|
||||||
((AndroidCapabilityPlayer) resolver.get()).becomeAndroidSoft();
|
if (ent.abilities.instabuild) {
|
||||||
} else if (this.pill_type == PillType.BECOME_HUMANE && ((AndroidCapabilityPlayer) resolver.get()).isEverAndroid()) {
|
if (ent is ServerPlayer) {
|
||||||
if (!ply.getAbilities().instabuild)
|
cap.becomeAndroid()
|
||||||
stack.shrink(1);
|
}
|
||||||
|
} else {
|
||||||
|
stack.shrink(1)
|
||||||
|
|
||||||
if (ply instanceof ServerPlayer)
|
if (ent is ServerPlayer) {
|
||||||
((AndroidCapabilityPlayer) resolver.get()).becomeHumaneAndKill();
|
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 stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.finishUsingItem(stack, level, ent);
|
return super.finishUsingItem(stack, level, ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
override fun getUseAnimation(p_41452_: ItemStack): UseAnim = UseAnim.EAT
|
||||||
public UseAnim getUseAnimation(ItemStack p_41452_) {
|
}
|
||||||
return UseAnim.EAT;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user