Config for Quantum Armor flight and speed. Closes #2362, #2011

This commit is contained in:
drcrazy 2021-03-19 14:09:32 +03:00
parent 28392cd682
commit 82d04496f7
2 changed files with 23 additions and 11 deletions

View file

@ -292,6 +292,12 @@ public class TechRebornConfig {
@Config(config = "items", category = "power", key = "quantumSuitFireExtinguishCost", comment = "Quantum Suit Cost for Fire Extinguish") @Config(config = "items", category = "power", key = "quantumSuitFireExtinguishCost", comment = "Quantum Suit Cost for Fire Extinguish")
public static double fireExtinguishCost = 50; public static double fireExtinguishCost = 50;
@Config(config = "items", category = "power", key = "quantumSuitEnableSprint", comment = "Enable Sprint Speed increase for Quantum Legs")
public static boolean quantumSuitEnableSprint = true;
@Config(config = "items", category = "power", key = "quantumSuitEnableFlight", comment = "Enable Flight for Quantum Chest")
public static boolean quantumSuitEnableFlight = true;
@Config(config = "items", category = "power", key = "quantumSuitDamageAbsorbCost", comment = "Quantum Suit Cost for Damage Absorbed") @Config(config = "items", category = "power", key = "quantumSuitDamageAbsorbCost", comment = "Quantum Suit Cost for Damage Absorbed")
public static double damageAbsorbCost = 10; public static double damageAbsorbCost = 10;

View file

@ -60,6 +60,10 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
public final double sprintingCost = TechRebornConfig.quantumSuitSprintingCost; public final double sprintingCost = TechRebornConfig.quantumSuitSprintingCost;
public final double fireExtinguishCost = TechRebornConfig.fireExtinguishCost; public final double fireExtinguishCost = TechRebornConfig.fireExtinguishCost;
public final boolean enableSprint = TechRebornConfig.quantumSuitEnableSprint;
public final boolean enableFlight = TechRebornConfig.quantumSuitEnableFlight;
public QuantumSuitItem(ArmorMaterial material, EquipmentSlot slot) { public QuantumSuitItem(ArmorMaterial material, EquipmentSlot slot) {
super(material, slot, new Item.Settings().group(TechReborn.ITEMGROUP).maxDamage(-1).maxCount(1)); super(material, slot, new Item.Settings().group(TechReborn.ITEMGROUP).maxDamage(-1).maxCount(1));
} }
@ -68,7 +72,7 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
public void getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack, Multimap<EntityAttribute, EntityAttributeModifier> attributes) { public void getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack, Multimap<EntityAttribute, EntityAttributeModifier> attributes) {
attributes.removeAll(EntityAttributes.GENERIC_MOVEMENT_SPEED); attributes.removeAll(EntityAttributes.GENERIC_MOVEMENT_SPEED);
if (this.slot == EquipmentSlot.LEGS && equipmentSlot == EquipmentSlot.LEGS) { if (this.slot == EquipmentSlot.LEGS && equipmentSlot == EquipmentSlot.LEGS && enableSprint) {
if (Energy.of(stack).getEnergy() > sprintingCost) { if (Energy.of(stack).getEnergy() > sprintingCost) {
attributes.put(EntityAttributes.GENERIC_MOVEMENT_SPEED, new EntityAttributeModifier(MODIFIERS[equipmentSlot.getEntitySlotId()], "Movement Speed", 0.15, EntityAttributeModifier.Operation.ADDITION)); attributes.put(EntityAttributes.GENERIC_MOVEMENT_SPEED, new EntityAttributeModifier(MODIFIERS[equipmentSlot.getEntitySlotId()], "Movement Speed", 0.15, EntityAttributeModifier.Operation.ADDITION));
} }
@ -91,22 +95,24 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
} }
break; break;
case CHEST: case CHEST:
if (Energy.of(stack).getEnergy() > flyCost && !TechReborn.elytraPredicate.test(playerEntity)) { if (enableFlight){
playerEntity.abilities.allowFlying = true; if (Energy.of(stack).getEnergy() > flyCost && !TechReborn.elytraPredicate.test(playerEntity)) {
if (playerEntity.abilities.flying) { playerEntity.abilities.allowFlying = true;
Energy.of(stack).use(flyCost); if (playerEntity.abilities.flying) {
Energy.of(stack).use(flyCost);
}
playerEntity.setOnGround(true);
} else {
playerEntity.abilities.allowFlying = false;
playerEntity.abilities.flying = false;
} }
playerEntity.setOnGround(true);
} else {
playerEntity.abilities.allowFlying = false;
playerEntity.abilities.flying = false;
} }
if (playerEntity.isOnFire() && Energy.of(stack).getEnergy() > fireExtinguishCost) { if (playerEntity.isOnFire() && Energy.of(stack).getEnergy() > fireExtinguishCost) {
playerEntity.extinguish(); playerEntity.extinguish();
} }
break; break;
case LEGS: case LEGS:
if (playerEntity.isSprinting()) { if (playerEntity.isSprinting() && enableSprint) {
Energy.of(stack).use(sprintingCost); Energy.of(stack).use(sprintingCost);
} }
break; break;
@ -129,7 +135,7 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
@Override @Override
public void onRemoved(PlayerEntity playerEntity) { public void onRemoved(PlayerEntity playerEntity) {
if (this.slot == EquipmentSlot.CHEST) { if (this.slot == EquipmentSlot.CHEST && enableFlight) {
if (!playerEntity.isCreative() && !playerEntity.isSpectator()) { if (!playerEntity.isCreative() && !playerEntity.isSpectator()) {
playerEntity.abilities.allowFlying = false; playerEntity.abilities.allowFlying = false;
playerEntity.abilities.flying = false; playerEntity.abilities.flying = false;