Skip to content

Commit

Permalink
Updated
Browse files Browse the repository at this point in the history
  • Loading branch information
sddsd2332 committed Jan 9, 2025
1 parent 0b2c515 commit 560c494
Show file tree
Hide file tree
Showing 7 changed files with 198 additions and 37 deletions.
5 changes: 4 additions & 1 deletion src/main/java/mekanism/common/Mekanism.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import mekanism.common.integration.IMCHandler;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.integration.multipart.MultipartMekanism;
import mekanism.common.item.armor.ItemMekaSuitArmor;
import mekanism.common.multiblock.MultiblockManager;
import mekanism.common.network.PacketDataRequest.DataRequestMessage;
import mekanism.common.network.PacketSimpleGui;
Expand Down Expand Up @@ -83,6 +84,7 @@
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.entity.item.ItemTossEvent;
import net.minecraftforge.event.world.ChunkDataEvent;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
Expand Down Expand Up @@ -709,9 +711,10 @@ public void onWorldUnload(WorldEvent.Unload event) {
}

@SubscribeEvent
public void onDrawScreenPre(RenderGameOverlayEvent.Post event) {
public void onDrawScreenPre(RenderGameOverlayEvent.Post event) {
MekaSuitEnergyLevel.onDrawScreenPre(event);
MekanismHUD.onDrawScreenPre(event);
}


}
105 changes: 105 additions & 0 deletions src/main/java/mekanism/common/entity/EntityMekaSuitArmor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package mekanism.common.entity;

import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.MoverType;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

public class EntityMekaSuitArmor extends EntityItem {

public EntityMekaSuitArmor(World world, Entity original, ItemStack stack) {
this(world, original.posX, original.posY, original.posZ, stack);
setPickupDelay(40);
motionX = original.motionX;
motionY = original.motionY;
motionZ = original.motionZ;
setItem(stack);
}

public EntityMekaSuitArmor(World world, double x, double y, double z, ItemStack stack) {
super(world, x, y, z);
setItem(stack);
}

@Override
protected void dealFireDamage(int damage) {
}

@Override
public boolean attackEntityFrom(DamageSource source, float damage) {
return source.getDamageType().equals("outOfWorld");
}

@Override
public void onUpdate() {
ItemStack stack = getDataManager().get(ITEM);
if (!stack.isEmpty()) {
if (stack.getItem().onEntityItemUpdate(this)) {
return;
}
}
if (getItem().isEmpty()) {
setDead();
} else {
super.onUpdate();

if (pickupDelay > 0) {
--pickupDelay;
}

prevPosX = posX;
prevPosY = posY;
prevPosZ = posZ;
motionY -= 0.03999999910593033D;
noClip = pushOutOfBlocks(posX, (getEntityBoundingBox().minY + getEntityBoundingBox().maxY) / 2.0D, posZ);
move(MoverType.SELF, motionX, motionY, motionZ);
boolean flag = (int) prevPosX != (int) posX || (int) prevPosY != (int) posY || (int) prevPosZ != (int) posZ;

if (flag || ticksExisted % 25 == 0) {
if (world.getBlockState(new BlockPos(posX, posY, posZ)).getMaterial() == Material.LAVA) {
motionY = 0.20000000298023224D;
motionX = (rand.nextFloat() - rand.nextFloat()) * 0.2F;
motionZ = (rand.nextFloat() - rand.nextFloat()) * 0.2F;
//this.playSound("random.fizz", 0.4F, 2.0F + this.rand.nextFloat() * 0.4F);
}

if (!world.isRemote) {
searchForOtherItemsNearby();
}
}

float f = 0.98F;

if (onGround) {
f = world.getBlockState(new BlockPos(posX, getEntityBoundingBox().minY - 1, posZ)).getBlock().slipperiness * 0.98F;
}

motionX *= f;
motionY *= 0.9800000190734863D;
motionZ *= f;

if (onGround) {
motionY *= -0.5D;
}

++age;

ItemStack item = getDataManager().get(ITEM);

if (!world.isRemote && age >= lifespan) {
if (item.isEmpty()) {
setDead();
}

}

if (!item.isEmpty() && item.getCount() <= 0) {
setDead();
}
}
}
}
26 changes: 21 additions & 5 deletions src/main/java/mekanism/common/item/ItemModuleUpgrade.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,21 @@

import mekanism.api.EnumColor;
import mekanism.common.Mekanism;
import mekanism.common.MekanismLang;
import mekanism.common.base.IMetaItem;
import mekanism.common.base.IModuleUpgrade;
import mekanism.common.base.IModuleUpgradeItem;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.moduleUpgrade;
import mekanism.common.util.LangUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.input.Keyboard;
Expand Down Expand Up @@ -50,15 +54,21 @@ public void getSubItems(@Nonnull CreativeTabs tabs, @Nonnull NonNullList<ItemSta

@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, World world, List<String> list, ITooltipFlag flag) {
public void addInformation(ItemStack stack, World world, List<String> list, ITooltipFlag flag) {
if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
list.add(LangUtils.localize("tooltip.hold") + " " + EnumColor.AQUA + "shift" + EnumColor.GREY + " " + LangUtils.localize("tooltip.forDetails"));
} else {
list.addAll(MekanismUtils.splitTooltip(moduleUpgrade.values()[itemstack.getItemDamage()].getDescription(), itemstack));
if (!Mekanism.hooks.DraconicEvolution && moduleUpgrade.values()[itemstack.getItemDamage()] == moduleUpgrade.ENERGY_SHIELD_UNIT){
list.addAll(MekanismUtils.splitTooltip(moduleUpgrade.values()[stack.getItemDamage()].getDescription(), stack));
list.add(MekanismLang.MODULE_SUPPORTED.translateColored(EnumColor.BRIGHT_GREEN).getFormattedText());
for (Item item : ForgeRegistries.ITEMS) {
if (item instanceof IModuleUpgrade upgrade && upgrade.getValidModule(new ItemStack(item)).contains(moduleUpgrade.values()[stack.getItemDamage()])) {
list.add("- " + item.getItemStackDisplayName(new ItemStack(item)));
}
}
if (!Mekanism.hooks.DraconicEvolution && moduleUpgrade.values()[stack.getItemDamage()] == moduleUpgrade.ENERGY_SHIELD_UNIT) {
list.add(EnumColor.AQUA + LangUtils.localize("tooltip.install.DR"));
}
if (!Mekanism.hooks.DraconicEvolution && !Mekanism.hooks.DraconicAdditions && moduleUpgrade.values()[itemstack.getItemDamage()] == moduleUpgrade.ADVANCED_INTERCEPTION_SYSTEM_UNIT){
if (!Mekanism.hooks.DraconicEvolution && !Mekanism.hooks.DraconicAdditions && moduleUpgrade.values()[stack.getItemDamage()] == moduleUpgrade.ADVANCED_INTERCEPTION_SYSTEM_UNIT) {
list.add(EnumColor.AQUA + LangUtils.localize("tooltip.install.DR"));
list.add(EnumColor.AQUA + LangUtils.localize("tooltip.install.DR2"));
}
Expand All @@ -75,4 +85,10 @@ public String getTranslationKey(ItemStack item) {
public moduleUpgrade getmoduleUpgrade(ItemStack stack) {
return moduleUpgrade.values()[stack.getItemDamage()];
}

@Override
public EnumRarity getRarity(ItemStack stack) {
return moduleUpgrade.values()[stack.getItemDamage()].getRarity();
}

}
33 changes: 26 additions & 7 deletions src/main/java/mekanism/common/item/armor/ItemMekaSuitArmor.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import mekanism.common.base.IModuleUpgrade;
import mekanism.common.capabilities.ItemCapabilityWrapper;
import mekanism.common.config.MekanismConfig;
import mekanism.common.entity.EntityMekaSuitArmor;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.integration.forgeenergy.ForgeEnergyItemWrapper;
import mekanism.common.integration.ic2.IC2ItemManager;
Expand All @@ -28,9 +29,11 @@
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
Expand Down Expand Up @@ -60,7 +63,7 @@
@Optional.Interface(iface = "com.brandon3055.draconicevolution.api.itemconfig.ToolConfigHelper", modid = MekanismHooks.DraconicEvolution_MOD_ID)
})
public abstract class ItemMekaSuitArmor extends ItemArmor implements IEnergizedItem,
ISpecialElectricItem, IEnergyContainerItem, ISpecialArmor, IModuleUpgrade, IHazmatLike, ICustomArmor, IConfigurableItem, Magnetic , IItemHUDProvider {
ISpecialElectricItem, IEnergyContainerItem, ISpecialArmor, IModuleUpgrade, IHazmatLike, ICustomArmor, IConfigurableItem, Magnetic, IItemHUDProvider {

private final float absorption;

Expand Down Expand Up @@ -415,12 +418,6 @@ public void damageArmor(EntityLivingBase entity, @Nonnull ItemStack stack, Damag
}
}

@Nonnull
@Override
public String getItemStackDisplayName(@Nonnull ItemStack itemstack) {
return EnumColor.ORANGE + super.getItemStackDisplayName(itemstack);
}

@Override
@Optional.Method(modid = MekanismHooks.DraconicEvolution_MOD_ID)
public float getProtectionPoints(ItemStack stack) {
Expand Down Expand Up @@ -606,4 +603,26 @@ public boolean isMagnetic(ItemStack stack) {
return UpgradeHelper.isUpgradeInstalled(stack, moduleUpgrade.MAGNETIZER) && getMagnetic(stack);
}

@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.EPIC;
}


@Override
public boolean hasCustomEntity(ItemStack stack) {
return true;
}

@Override
public Entity createEntity(World world, Entity location, ItemStack itemstack) {
EntityItem item = new EntityMekaSuitArmor(world, location, itemstack);
item.isImmuneToFire = true;
if (UpgradeHelper.isUpgradeInstalled(itemstack, moduleUpgrade.MAGNETIZER) && getMagnetic(itemstack)) {
item.setNoPickupDelay();
}
return item;
}


}
59 changes: 37 additions & 22 deletions src/main/java/mekanism/common/moduleUpgrade.java
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
package mekanism.common;

import mekanism.common.util.LangUtils;
import net.minecraft.item.EnumRarity;

import java.util.Locale;

import static net.minecraft.item.EnumRarity.*;

public enum moduleUpgrade {

//EMPTY("base",1,),
EnergyUnit("EnergyUnit", 8),
ATTACK_AMPLIFICATION_UNIT("attack_damage", 4),
RADIATION_SHIELDING_UNIT("radiation_shielding_unit", 1),
EnergyUnit("EnergyUnit", 8, UNCOMMON),
ATTACK_AMPLIFICATION_UNIT("attack_damage", 4, UNCOMMON),
RADIATION_SHIELDING_UNIT("radiation_shielding_unit", 1, UNCOMMON),
//head
SolarRechargingUnit("SolarRechargingUnit", 8),
ElectrolyticBreathingUnit("ElectrolyticBreathingUnit", 4),
VisionEnhancementUnit("VisionEnhancementUnit", 4),
InhalationPurificationUnit("InhalationPurificationUnit", 1),
NutritionalInjectionUnit("NutritionalInjectionUnit", 1),
SolarRechargingUnit("SolarRechargingUnit", 8, RARE),
ElectrolyticBreathingUnit("ElectrolyticBreathingUnit", 4, UNCOMMON),
VisionEnhancementUnit("VisionEnhancementUnit", 4, RARE),
InhalationPurificationUnit("InhalationPurificationUnit", 1, RARE),
NutritionalInjectionUnit("NutritionalInjectionUnit", 1, RARE),
//Body
JETPACK_UNIT("jetpack_unit", 1),
CHARGE_DISTRIBUTION_UNIT("charge_distribution_unit", 1),
JETPACK_UNIT("jetpack_unit", 1, RARE),
CHARGE_DISTRIBUTION_UNIT("charge_distribution_unit", 1, RARE),
//legs
GYROSCOPIC_STABILIZATION_UNIT("gyroscopic_stabilization_unit", 1),
GEOTHERMAL_GENERATOR_UNIT("geothermal_generator_unit", 8),
HYDROSTATIC_REPULSOR_UNIT("hydrostatic_repulsor_unit", 4),
LOCOMOTIVE_BOOSTING_UNIT("locomotive_boosting_unit", 4),
GYROSCOPIC_STABILIZATION_UNIT("gyroscopic_stabilization_unit", 1, RARE),
GEOTHERMAL_GENERATOR_UNIT("geothermal_generator_unit", 8, RARE),
HYDROSTATIC_REPULSOR_UNIT("hydrostatic_repulsor_unit", 4, RARE),
LOCOMOTIVE_BOOSTING_UNIT("locomotive_boosting_unit", 4, RARE),
//feet
HYDRAULIC_PROPULSION_UNIT("hydraulic_propulsion_unit", 4),
FROST_WALKER_UNIT("frost_walker_unit", 2),
HYDRAULIC_PROPULSION_UNIT("hydraulic_propulsion_unit", 4, RARE),
FROST_WALKER_UNIT("frost_walker_unit", 2, RARE),

//mekaBow
ARROWENERGY_UNIT("arrowenergy_unit", 1),
Expand All @@ -35,21 +38,29 @@ public enum moduleUpgrade {
DRAWSPEED_UNIT("drawspeed_unit", 3),
MultipleArrowsUnit("MultiplearrowsUnit", 4),
//Body
GRAVITATIONAL_MODULATING_UNIT("gravitational_modulating_unit", 1),
HEALTH_REGENERATION("Health_regeneration", 10),
GRAVITATIONAL_MODULATING_UNIT("gravitational_modulating_unit", 1, EPIC),
HEALTH_REGENERATION("Health_regeneration", 10, RARE),
//head
EMERGENCY_RESCUE("Emergency_rescue", 10),
EMERGENCY_RESCUE("Emergency_rescue", 10, EPIC),
//ALL
ENERGY_SHIELD_UNIT("Energy_shield_unit", 10),
ADVANCED_INTERCEPTION_SYSTEM_UNIT("Advanced_interception_system_unit",1),
MAGNETIZER("Magnetizer_unit",1);
ENERGY_SHIELD_UNIT("Energy_shield_unit", 10, RARE),
ADVANCED_INTERCEPTION_SYSTEM_UNIT("Advanced_interception_system_unit", 1,EPIC),
MAGNETIZER("Magnetizer_unit", 1,UNCOMMON);

private String name;
private int maxStack;
private EnumRarity rarity;

moduleUpgrade(String s, int max) {
name = s;
maxStack = max;
rarity = EnumRarity.COMMON;
}

moduleUpgrade(String s, int max, EnumRarity rarity) {
name = s;
maxStack = max;
this.rarity = rarity;
}


Expand All @@ -69,6 +80,10 @@ public int getMax() {
return maxStack;
}

public EnumRarity getRarity(){
return rarity;
}

public boolean canMultiply() {
return getMax() > 1;
}
Expand Down
4 changes: 3 additions & 1 deletion src/main/resources/assets/mekanism/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -1822,4 +1822,6 @@ direction.west.short=W
direction.east.short=E
generic.mekanism.percent=%
gui.on_caps=ON
gui.off_caps=OFF
gui.off_caps=OFF

generic.mekanism.list= -
3 changes: 2 additions & 1 deletion src/main/resources/assets/mekanism/lang/zh_cn.lang
Original file line number Diff line number Diff line change
Expand Up @@ -1799,4 +1799,5 @@ direction.west.short=W
direction.east.short=E
generic.mekanism.percent=%
gui.on_caps=开启
gui.off_caps=关闭
gui.off_caps=关闭
generic.mekanism.list=

0 comments on commit 560c494

Please sign in to comment.