Skip to content

Commit

Permalink
Updated MekaSuit Armour
Browse files Browse the repository at this point in the history
Complete the Gui configuration for all MekaSuit Armour using DE
  • Loading branch information
sddsd2332 committed Nov 29, 2024
1 parent d9cd322 commit d4fe003
Show file tree
Hide file tree
Showing 9 changed files with 267 additions and 26 deletions.
4 changes: 2 additions & 2 deletions src/main/java/mekanism/client/MekanismKeyHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public void keyDown(KeyBinding kb, boolean isRepeat) {
}
Mekanism.packetHandler.sendToServer(new FreeRunnerDataMessage(PacketFreeRunnerData.FreeRunnerPacket.MODE, null, player.isSneaking()));
SoundHandler.playSound(MekanismSounds.HYDRAULIC);
} else if (feetStack.getItem() instanceof ItemMekAsuitFeetArmour freeArmour && UpgradeHelper.isUpgradeInstalled(feetStack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
} else if (feetStack.getItem() instanceof ItemMekAsuitFeetArmour freeArmour && UpgradeHelper.isUpgradeInstalled(feetStack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT) && !Mekanism.hooks.DraconicEvolution) {
if (player.isSneaking()) {
freeArmour.setJumpBoostMode(feetStack, ItemMekAsuitFeetArmour.JumpBoost.OFF);
} else {
Expand All @@ -168,7 +168,7 @@ public void keyDown(KeyBinding kb, boolean isRepeat) {
}
} else if (kb == MekAsuitFeetModeSwitchKey) {
ItemStack feetStack = player.getItemStackFromSlot(EntityEquipmentSlot.FEET);
if (feetStack.getItem() instanceof ItemMekAsuitFeetArmour freeArmour && UpgradeHelper.isUpgradeInstalled(feetStack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
if (feetStack.getItem() instanceof ItemMekAsuitFeetArmour freeArmour && UpgradeHelper.isUpgradeInstalled(feetStack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT) && !Mekanism.hooks.DraconicEvolution) {
if (player.isSneaking()) {
freeArmour.setStepAssistMode(feetStack, ItemMekAsuitFeetArmour.StepAssist.OFF);
} else {
Expand Down
16 changes: 9 additions & 7 deletions src/main/java/mekanism/common/CommonPlayerTickHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public static float getStepBoost(EntityPlayer player) {
if (!stack.isEmpty() && stack.getItem() instanceof ItemFreeRunners freeRunners && freeRunners.getMode(stack).providesStepBoost() && !player.isSpectator()) {
return 1.002F;
} else if (!stack.isEmpty() && stack.getItem() instanceof ItemMekAsuitFeetArmour feetArmour && !player.isSpectator()) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT) && !Mekanism.hooks.DraconicEvolution) {
float height = feetArmour.getStepAssistMode(stack).getHeight();
if (height == 0.5F) {
return 1.002F;
Expand Down Expand Up @@ -110,7 +110,9 @@ public void onTick(PlayerTickEvent event) {
tickEnd(event.player);
}
if (event.phase == Phase.START) {
isMekAsuitArmorFlying(event.player);
if (!Mekanism.hooks.DraconicEvolution){
isMekAsuitArmorFlying(event.player);
}
}
}

Expand Down Expand Up @@ -358,13 +360,13 @@ public void onLivingJump(LivingJumpEvent event) {
if (event.getEntity() instanceof EntityPlayer player) {
ItemStack feet = player.getItemStackFromSlot(EntityEquipmentSlot.FEET);
if (!feet.isEmpty() && feet.getItem() instanceof ItemMekAsuitFeetArmour feetArmor) {
if (UpgradeHelper.isUpgradeInstalled(feet, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
if (UpgradeHelper.isUpgradeInstalled(feet, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT) && !Mekanism.hooks.DraconicEvolution) {
float boost = feetArmor.getJumpBoostMode(feet).getBoost();
double usage = MekanismConfig.current().meka.mekaSuitBaseJumpEnergyUsage.val() * (boost / 0.1F);
if (feetArmor.getEnergy(feet) > usage) {
ItemStack leg = player.getItemStackFromSlot(EntityEquipmentSlot.LEGS);
if (!leg.isEmpty() && leg.getItem() instanceof ItemMekAsuitLegsArmour) {
if (UpgradeHelper.isUpgradeInstalled(leg, moduleUpgrade.LOCOMOTIVE_BOOSTING_UNIT)) {
if (!leg.isEmpty() && leg.getItem() instanceof ItemMekAsuitLegsArmour armour) {
if (UpgradeHelper.isUpgradeInstalled(leg, moduleUpgrade.LOCOMOTIVE_BOOSTING_UNIT) && armour.getLocomotive(leg)) {
boost = (float) Math.sqrt(boost);
}
}
Expand All @@ -380,7 +382,7 @@ public void onLivingJump(LivingJumpEvent event) {
public void getBreakSpeed(PlayerEvent.BreakSpeed event) {
EntityPlayer player = event.getEntityPlayer();
float speed = event.getNewSpeed();
BlockPos position = event.getPos();
// BlockPos position = event.getPos();
/*
if (position!=null){
BlockPos pos = position;
Expand All @@ -389,7 +391,7 @@ public void getBreakSpeed(PlayerEvent.BreakSpeed event) {
}
*/
ItemStack legs = player.getItemStackFromSlot(EntityEquipmentSlot.LEGS);
if (!legs.isEmpty() && legs.getItem() instanceof ItemMekaSuitArmor && UpgradeHelper.isUpgradeInstalled(legs, moduleUpgrade.GYROSCOPIC_STABILIZATION_UNIT)) {
if (!legs.isEmpty() && legs.getItem() instanceof ItemMekAsuitLegsArmour armour && UpgradeHelper.isUpgradeInstalled(legs, moduleUpgrade.GYROSCOPIC_STABILIZATION_UNIT) && armour.getGyroscopic(legs)) {
if (player.isInsideOfMaterial(Material.WATER) && !EnchantmentHelper.getAquaAffinityModifier(player)) {
speed *= 5.0F;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package mekanism.common.item.armor;

import codechicken.lib.math.MathHelper;
import com.brandon3055.draconicevolution.DEConfig;
import com.brandon3055.draconicevolution.api.itemconfig.BooleanConfigField;
import com.brandon3055.draconicevolution.api.itemconfig.IntegerConfigField;
import com.brandon3055.draconicevolution.api.itemconfig.ItemConfigFieldRegistry;
import com.brandon3055.draconicevolution.api.itemconfig.ToolConfigHelper;
import com.google.common.collect.Multimap;
import mekanism.api.EnumColor;
import mekanism.api.gas.Gas;
Expand All @@ -13,6 +18,7 @@
import mekanism.common.MekanismFluids;
import mekanism.common.MekanismItems;
import mekanism.common.config.MekanismConfig;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.item.interfaces.IItemHUDProvider;
import mekanism.common.item.interfaces.IJetpackItem;
import mekanism.common.moduleUpgrade;
Expand All @@ -31,13 +37,16 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.Optional;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.UUID;

import static com.brandon3055.draconicevolution.api.itemconfig.IItemConfigField.EnumControlType.SLIDER;

public class ItemMekAsuitBodyArmour extends ItemMekaSuitArmor implements IGasItem, IJetpackItem, IItemHUDProvider {

public ItemMekAsuitBodyArmour() {
Expand Down Expand Up @@ -86,7 +95,7 @@ public ArmorProperties getProperties(EntityLivingBase player, @NotNull ItemStack
ArmorProperties properties = new ArmorProperties(0, 0, 0);
if (this == MekanismItems.MekAsuitChestplate) {
properties = new ArmorProperties(1, MekanismConfig.current().meka.MekaSuitBodyarmorDamageRatio.val(), MekanismConfig.current().meka.MekaSuitBodyarmorDamageMax.val());
properties.Toughness = MekanismConfig.current().meka.mekaSuitToughness.val();;
properties.Toughness = MekanismConfig.current().meka.mekaSuitToughness.val();
}

return properties;
Expand Down Expand Up @@ -255,14 +264,14 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST);
ItemStack headStack = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
boolean isHealth = false;
if (headStack.getItem() instanceof ItemMekAsuitHeadArmour armour){
if (headStack.getItem() instanceof ItemMekAsuitHeadArmour armour) {
isHealth = UpgradeHelper.isUpgradeInstalled(headStack, moduleUpgrade.ADVANCED_INTERCEPTION_SYSTEM_UNIT) && armour.getInterception(headStack);
}
if (chestStack.getItem() instanceof ItemMekAsuitBodyArmour) {
if (UpgradeHelper.isUpgradeInstalled(chestStack, moduleUpgrade.CHARGE_DISTRIBUTION_UNIT)) {
if (UpgradeHelper.isUpgradeInstalled(chestStack, moduleUpgrade.CHARGE_DISTRIBUTION_UNIT) && getCharge(chestStack)) {
chargeSuit(player);
}
if (UpgradeHelper.isUpgradeInstalled(chestStack, moduleUpgrade.HEALTH_REGENERATION)) {
if (UpgradeHelper.isUpgradeInstalled(chestStack, moduleUpgrade.HEALTH_REGENERATION) && gethealth(chestStack)) {
if (isHealth) {
ArmourTick++;
if (player.getHealth() < player.getMaxHealth() && ArmourTick % 20 == 0) {
Expand All @@ -287,7 +296,7 @@ public double getShieldingByArmor() {
@Override
public void addHUDStrings(List<String> list, EntityPlayer player, ItemStack stack, EntityEquipmentSlot slotType) {
if (slotType == getEquipmentSlot()) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.JETPACK_UNIT)) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.JETPACK_UNIT) && getJetpackMode(stack) != JetpackMode.DISABLED) {
list.add(LangUtils.localize("tooltip.jetpack.mode") + " " + getMode(stack).getName());
list.add(LangUtils.localize("tooltip.jetpack.stored") + " " + EnumColor.ORANGE + (getStored(stack) > 0 ? getStored(stack) : LangUtils.localize("tooltip.noGas")));
}
Expand All @@ -297,5 +306,79 @@ public void addHUDStrings(List<String> list, EntityPlayer player, ItemStack stac
}
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public ItemConfigFieldRegistry getFields(ItemStack stack, ItemConfigFieldRegistry registry) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.CHARGE_DISTRIBUTION_UNIT)) {
registry.register(stack, new BooleanConfigField("Charge", true, "config.field.Charge.description"));
}
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HEALTH_REGENERATION)) {
registry.register(stack, new BooleanConfigField("health", true, "config.field.health.description"));
}
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.GRAVITATIONAL_MODULATING_UNIT)) {
int speedLimit = MathHelper.clip(DEConfig.flightSpeedLimit != -1 ? DEConfig.flightSpeedLimit : 600, 0, 1200);
registry.register(stack, new IntegerConfigField("armorFSpeedModifier", 0, 0, getJetpackMode(stack) != JetpackMode.DISABLED ? 0 : speedLimit, "config.field.armorFSpeedModifier.description", SLIDER).setPrefix("+").setExtension("%"));
registry.register(stack, new IntegerConfigField("armorVFSpeedModifier", 0, 0, getJetpackMode(stack) != JetpackMode.DISABLED ? 0 : speedLimit, "config.field.armorVFSpeedModifier.description", SLIDER).setPrefix("+").setExtension("%"));
registry.register(stack, new BooleanConfigField("armorInertiaCancel", false, "config.field.armorInertiaCancel.description"));
registry.register(stack, new BooleanConfigField("armorFlightLock", false, "config.field.armorFlightLock.description"));
}
super.getFields(stack, registry);
return registry;
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public float getFlightSpeedModifier(ItemStack stack, EntityPlayer player) {
if (getJetpackMode(stack) != JetpackMode.DISABLED) {
return 0;
}
int value = ToolConfigHelper.getIntegerField("armorFSpeedModifier", stack);
if (DEConfig.flightSpeedLimit > -1 && value > DEConfig.flightSpeedLimit) {
value = DEConfig.flightSpeedLimit;
}
float modifier = value / 100F;
return modifier;
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public float getFlightVModifier(ItemStack stack, EntityPlayer player) {
if (getJetpackMode(stack) != JetpackMode.DISABLED) {
return 0;
}
return ToolConfigHelper.getIntegerField("armorVFSpeedModifier", stack) / 100F;
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public boolean[] hasFlight(ItemStack stack) {
return new boolean[]{getJetpackMode(stack) == JetpackMode.DISABLED, ToolConfigHelper.getBooleanField("armorFlightLock", stack) && getJetpackMode(stack) == JetpackMode.DISABLED, ToolConfigHelper.getBooleanField("armorInertiaCancel", stack) && getJetpackMode(stack) == JetpackMode.DISABLED};
}

public boolean getCharge(ItemStack stack) {
if (Mekanism.hooks.DraconicEvolution) {
return getDECharge(stack);
} else {
return true;
}
}

@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public boolean getDECharge(ItemStack stack) {
return ToolConfigHelper.getBooleanField("Charge", stack);
}

public boolean gethealth(ItemStack stack) {
if (Mekanism.hooks.DraconicEvolution) {
return getDEhealth(stack);
} else {
return true;
}
}

@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public boolean getDEhealth(ItemStack stack) {
return ToolConfigHelper.getBooleanField("health", stack);
}

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package mekanism.common.item.armor;

import com.brandon3055.draconicevolution.api.itemconfig.BooleanConfigField;
import com.brandon3055.draconicevolution.api.itemconfig.IntegerConfigField;
import com.brandon3055.draconicevolution.api.itemconfig.ItemConfigFieldRegistry;
import com.brandon3055.draconicevolution.api.itemconfig.ToolConfigHelper;
import com.google.common.collect.Multimap;
import mekanism.client.model.mekasuitarmour.ModelMekAsuitBoot;
import mekanism.common.Mekanism;
import mekanism.common.MekanismItems;
import mekanism.common.config.MekanismConfig;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.item.interfaces.IItemHUDProvider;
import mekanism.common.moduleUpgrade;
import mekanism.common.util.ItemDataUtils;
Expand All @@ -26,13 +31,16 @@
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.Optional;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.UUID;

import static com.brandon3055.draconicevolution.api.itemconfig.IItemConfigField.EnumControlType.SLIDER;

public class ItemMekAsuitFeetArmour extends ItemMekaSuitArmor implements IItemHUDProvider {

public ItemMekAsuitFeetArmour() {
Expand All @@ -47,8 +55,7 @@ public boolean isValidArmor(ItemStack stack, EntityEquipmentSlot armorType, Enti
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped _default) {
ModelMekAsuitBoot armorModel = ModelMekAsuitBoot.boot;
return armorModel;
return ModelMekAsuitBoot.boot;
}

@Override
Expand Down Expand Up @@ -97,7 +104,7 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
ItemStack feetStack = player.getItemStackFromSlot(EntityEquipmentSlot.FEET);
if (feetStack.getItem() instanceof ItemMekAsuitFeetArmour armour) {
if (UpgradeHelper.isUpgradeInstalled(feetStack, moduleUpgrade.FROST_WALKER_UNIT)) {
if (armour.getEnergy(feetStack) > 500D) {
if (armour.getEnergy(feetStack) > 500D && getFrost(feetStack)) {
if (EnchantmentHelper.getEnchantmentLevel(Enchantments.FROST_WALKER, feetStack) == 0) {
feetStack.addEnchantment(Enchantments.FROST_WALKER, UpgradeHelper.getUpgradeLevel(feetStack, moduleUpgrade.FROST_WALKER_UNIT));
armour.setEnergy(feetStack, armour.getEnergy(feetStack) - 500D);
Expand Down Expand Up @@ -156,7 +163,7 @@ public void incrementStepAssistMode(ItemStack itemStack) {
@Override
public void addHUDStrings(List<String> list, EntityPlayer player, ItemStack stack, EntityEquipmentSlot slotType) {
if (slotType == getEquipmentSlot()) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT) && !Mekanism.hooks.DraconicEvolution) {
list.add(LangUtils.localize("tooltip.module.jump_boost.name") + " " + getJumpBoostMode(stack).getBoost());
list.add(LangUtils.localize("tooltip.module.step_assist.name") + " " + getStepAssistMode(stack).getHeight());
}
Expand Down Expand Up @@ -221,5 +228,50 @@ public StepAssist increment() {
}
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public ItemConfigFieldRegistry getFields(ItemStack stack, ItemConfigFieldRegistry registry) {
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT)) {
int u = UpgradeHelper.getUpgradeLevel(stack, moduleUpgrade.HYDRAULIC_PROPULSION_UNIT);
int i = 200 + (100 * u) + (Math.max(u - 1, 0) * 100) + (Math.max(u - 2, 0) * 100);
registry.register(stack, new IntegerConfigField("armorSpeedModifier", 0, 0 , i, "config.field.armorSpeedModifier.description", SLIDER).setPrefix("+").setExtension("%"));
registry.register(stack, new IntegerConfigField("armorJumpModifier", 0, 0, i, "config.field.armorSpeedModifier.description", SLIDER).setPrefix("+").setExtension("%"));
registry.register(stack, new BooleanConfigField("armorHillStep", true, "config.field.armorHillStep.description"));
}
if (UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.FROST_WALKER_UNIT)) {
registry.register(stack, new BooleanConfigField("frost", true, "config.field.frost.description"));
}
super.getFields(stack, registry);
return registry;
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public float getSpeedModifier(ItemStack stack, EntityPlayer player) {
return ToolConfigHelper.getIntegerField("armorSpeedModifier", stack) / 100F;
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public float getJumpModifier(ItemStack stack, EntityPlayer player) {
return ToolConfigHelper.getIntegerField("armorJumpModifier", stack) / 100F;
}

@Override
public boolean hasHillStep(ItemStack stack, EntityPlayer player) {
return ToolConfigHelper.getBooleanField("armorHillStep", stack);
}

public boolean getFrost(ItemStack stack) {
if (Mekanism.hooks.DraconicEvolution) {
return getDEFrost(stack);
} else {
return true;
}
}

@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public boolean getDEFrost(ItemStack stack) {
return ToolConfigHelper.getBooleanField("frost", stack);
}
}
Loading

0 comments on commit d4fe003

Please sign in to comment.