From 6d3ef21444d9b22d925d72e76c0d9b0399202753 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 13 Feb 2017 18:42:33 +0100 Subject: [PATCH] Added infrared goggles --- .../mod/blocks/render/RenderLaserRelay.java | 9 ++- .../mod/creative/CreativeTab.java | 1 + .../mod/items/InitItems.java | 2 + .../mod/items/ItemInfraredGoggles.java | 72 ++++++++++++++++++ .../mod/items/base/ItemArmorAA.java | 4 +- .../mod/material/InitArmorMaterials.java | 4 + .../assets/actuallyadditions/lang/en_US.lang | 1 + .../models/item/item_infrared_goggles.json | 6 ++ .../textures/items/item_infrared_goggles.png | Bin 0 -> 357 bytes .../models/armor/armor_goggles_layer_1.png | Bin 0 -> 526 bytes .../models/armor/armor_goggles_layer_2.png | Bin 0 -> 249 bytes 11 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemInfraredGoggles.java create mode 100644 src/main/resources/assets/actuallyadditions/models/item/item_infrared_goggles.json create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/item_infrared_goggles.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_1.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_2.png diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderLaserRelay.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderLaserRelay.java index 8278a8db3..508d53747 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderLaserRelay.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderLaserRelay.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.laser.IConnectionPair; import de.ellpeck.actuallyadditions.api.laser.LaserType; import de.ellpeck.actuallyadditions.mod.items.InitItems; +import de.ellpeck.actuallyadditions.mod.items.ItemInfraredGoggles; import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelay; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil; @@ -34,12 +35,14 @@ public class RenderLaserRelay extends TileEntitySpecialRenderer{ private static final float[] COLOR = new float[]{1F, 0F, 0F}; private static final float[] COLOR_ITEM = new float[]{0F, 124F/255F, 16F/255F}; private static final float[] COLOR_FLUIDS = new float[]{0F, 97F/255F, 198F/255F}; + private static final float[] COLOR_INFRARED = new float[]{209F/255F, 179F/255F, 239F/255F}; @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float par5, int par6){ if(tile instanceof TileEntityLaserRelay){ TileEntityLaserRelay relay = (TileEntityLaserRelay)tile; boolean hasInvis = false; + boolean hasGoggles = ItemInfraredGoggles.isWearing(Minecraft.getMinecraft().player); ItemStack upgrade = relay.slots.getStackInSlot(0); if(StackUtil.isValid(upgrade)){ @@ -73,10 +76,10 @@ public class RenderLaserRelay extends TileEntitySpecialRenderer{ ItemStack secondUpgrade = ((TileEntityLaserRelay)secondTile).slots.getStackInSlot(0); boolean otherInvis = StackUtil.isValid(secondUpgrade) && secondUpgrade.getItem() == InitItems.itemLaserUpgradeInvisibility; - if(!hasInvis || !otherInvis){ - float[] color = relay.type == LaserType.ITEM ? COLOR_ITEM : (relay.type == LaserType.FLUID ? COLOR_FLUIDS : COLOR); + if(hasGoggles || !hasInvis || !otherInvis){ + float[] color = hasInvis && otherInvis ? COLOR_INFRARED : (relay.type == LaserType.ITEM ? COLOR_ITEM : (relay.type == LaserType.FLUID ? COLOR_FLUIDS : COLOR)); - AssetUtil.renderLaser(first.getX()+0.5, first.getY()+0.5, first.getZ()+0.5, second.getX()+0.5, second.getY()+0.5, second.getZ()+0.5, 120, 0.35F, 0.05, color); + AssetUtil.renderLaser(first.getX()+0.5, first.getY()+0.5, first.getZ()+0.5, second.getX()+0.5, second.getY()+0.5, second.getZ()+0.5, 120, hasInvis && otherInvis ? 0.1F : 0.35F, 0.05, color); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java index 65cd618a0..3e2f2b473 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java @@ -161,6 +161,7 @@ public class CreativeTab extends CreativeTabs{ this.add(InitItems.itemMiningLens); this.add(InitItems.itemLaserWrench); this.add(InitItems.itemLaserUpgradeInvisibility); + this.add(InitItems.itemInfraredGoggles); this.add(InitItems.itemCrateKeeper); this.add(InitItems.itemChestToCrateUpgrade); this.add(InitItems.itemSmallToMediumCrateUpgrade); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java index 2332c6d50..35720e7d5 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java @@ -194,10 +194,12 @@ public final class InitItems{ public static Item itemVoidBag; public static Item itemFillingWand; public static Item itemLaserUpgradeInvisibility; + public static Item itemInfraredGoggles; public static void init(){ ModUtil.LOGGER.info("Initializing Items..."); + itemInfraredGoggles = new ItemInfraredGoggles("item_infrared_goggles"); itemLaserUpgradeInvisibility = new ItemLaserRelayUpgrade("item_laser_upgrade_invisibility"); itemFillingWand = new ItemFillingWand("item_filling_wand"); itemBag = new ItemBag("item_bag", false); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemInfraredGoggles.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemInfraredGoggles.java new file mode 100644 index 000000000..2c245cca5 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemInfraredGoggles.java @@ -0,0 +1,72 @@ +/* + * This file ("ItemInfraredGoggles.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2017 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.items; + +import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import de.ellpeck.actuallyadditions.mod.items.base.ItemArmorAA; +import de.ellpeck.actuallyadditions.mod.material.InitArmorMaterials; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.List; + +public class ItemInfraredGoggles extends ItemArmorAA{ + + public ItemInfraredGoggles(String name){ + super(name, InitArmorMaterials.armorMaterialGoggles, 0, StackUtil.getNull()); + this.setMaxDamage(0); + + MinecraftForge.EVENT_BUS.register(this); + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onClientTick(ClientTickEvent event){ + EntityPlayer player = ActuallyAdditions.proxy.getCurrentPlayer(); + if(player != null && isWearing(player)){ + double innerRange = 8; + double remRange = innerRange+2; + + AxisAlignedBB aabb = new AxisAlignedBB(player.posX-remRange, player.posY-remRange, player.posZ-remRange, player.posX+remRange, player.posY+remRange, player.posZ+remRange); + List entities = player.world.getEntitiesWithinAABB(Entity.class, aabb); + + for(Entity entity : entities){ + if(entity != player){ + if(entity.getDistanceSq(player.posX, player.posY, player.posZ) <= innerRange*innerRange){ + entity.setGlowing(true); + } + else{ + entity.setGlowing(false); + } + } + } + } + } + + public static boolean isWearing(EntityPlayer player){ + ItemStack face = player.inventory.armorInventory.get(3); + return StackUtil.isValid(face) && face.getItem() == InitItems.itemInfraredGoggles; + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.RARE; + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemArmorAA.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemArmorAA.java index 1c3e810a6..253588a73 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemArmorAA.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemArmorAA.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items.base; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.inventory.ContainerEnergizer; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; @@ -54,7 +55,6 @@ public class ItemArmorAA extends ItemArmor{ ActuallyAdditions.proxy.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory"); } - @Override public EnumRarity getRarity(ItemStack stack){ return this.rarity; @@ -62,6 +62,6 @@ public class ItemArmorAA extends ItemArmor{ @Override public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack){ - return ItemUtil.areItemsEqual(this.repairItem, stack, false); + return StackUtil.isValid(this.repairItem) && ItemUtil.areItemsEqual(this.repairItem, stack, false); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/material/InitArmorMaterials.java b/src/main/java/de/ellpeck/actuallyadditions/mod/material/InitArmorMaterials.java index 2108e476a..80be14cb1 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/material/InitArmorMaterials.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/material/InitArmorMaterials.java @@ -31,6 +31,8 @@ public final class InitArmorMaterials{ public static ArmorMaterial armorMaterialCrystalGreen; public static ArmorMaterial armorMaterialCrystalWhite; + public static ArmorMaterial armorMaterialGoggles; + public static void init(){ ModUtil.LOGGER.info("Initializing Armor Materials..."); @@ -44,6 +46,8 @@ public final class InitArmorMaterials{ armorMaterialCrystalBlack = addArmorMaterial("armorMaterialCrystalBlack", ModUtil.MOD_ID+":armor_crystal_black", 12, new int[]{1, 3, 4, 1}, 13, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC); armorMaterialCrystalGreen = addArmorMaterial("armorMaterialCrystalGreen", ModUtil.MOD_ID+":armor_crystal_green", 60, new int[]{6, 9, 9, 4}, 18, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC); armorMaterialCrystalWhite = addArmorMaterial("armorMaterialCrystalWhite", ModUtil.MOD_ID+":armor_crystal_white", 18, new int[]{3, 6, 6, 3}, 11, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC); + + armorMaterialGoggles = addArmorMaterial("armorMaterialGoggles", ModUtil.MOD_ID+":armor_goggles", 0, new int[]{0, 0, 0, 0}, 0, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC); } private static ArmorMaterial addArmorMaterial(String name, String textureName, int durability, int[] reductionAmounts, int enchantability, SoundEvent soundOnEquip){ diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 056992696..08609bef9 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -521,6 +521,7 @@ item.actuallyadditions.item_mining_lens.name=Lens of the Miner item.actuallyadditions.item_more_damage_lens.name=Lens of the Killer item.actuallyadditions.item_filling_wand.name=Handheld Filler item.actuallyadditions.item_laser_upgrade_invisibility.name=Laser Relay Modifier: Invisibility +item.actuallyadditions.item_infrared_goggles.name=Infrared Goggles #Tooltips tooltip.actuallyadditions.onSuffix.desc=On diff --git a/src/main/resources/assets/actuallyadditions/models/item/item_infrared_goggles.json b/src/main/resources/assets/actuallyadditions/models/item/item_infrared_goggles.json new file mode 100644 index 000000000..f76347dad --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/models/item/item_infrared_goggles.json @@ -0,0 +1,6 @@ +{ + "parent": "actuallyadditions:item/standard_item", + "textures": { + "layer0": "actuallyadditions:items/item_infrared_goggles" + } +} diff --git a/src/main/resources/assets/actuallyadditions/textures/items/item_infrared_goggles.png b/src/main/resources/assets/actuallyadditions/textures/items/item_infrared_goggles.png new file mode 100644 index 0000000000000000000000000000000000000000..40c05286bed83548dc956b4d3562cc1212d2300d GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>QK$!8;-MT+OLG}_)Usv`AOrnCOrg|T{Y=J_OC9V-A!TD(= z<%vb93~dIoxiM$RnRZ-9ypdAc};SoojqKh1T>K*064Zd3QK1qZLq zvb(f=mVB{t>C^IEFa2D0s9o&XlKgTLJ73BS>&ZuEiZQr(JF))1+04c3S)?O$bus%I zGv}bC3p4pLja4dTn$}J~p(LO4)am{)=4G!K0$(WKGkS4G{hoXN^r;TjvmVy*Zu}UQ z^^mFmm}~V%#n&=ZAADi@?IQTLz}on+;$schlym3P_#&4*`}ssX$NBZj{3o2@$ID|^ wM?c;7;M1& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_1.png b/src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7a0a40cb3a3564e38cd24d9a48fde4c1036accbd GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQY`6?zK#qG8~eHcB(eheoCO|{ z#S9F5`$3q|f;CtLD9B#o>Fdh=fRS04oz0hBayd{)vcxr_Bsf2(GO33xz=DEvv))M=bQu96H z4@j>Jx10Ne=iV1Tmme|FMpM$b!cO@m@XhHyvwgSm%?ao17@`(R+%XX9I>@UGW>mFH zI|Ui;NK_GNmUeT>e`9_})+s2z;Oy-M<~yEUs%n*1;Q4i8vPAi3p0o>xO?nf4-91|@ zB>i1Rd8?qBa`W$_EGIQw?D+0pdlvcsqIT(J1BnA}&NmDka(+deE1t5`HB>CZKK8-q ztB<}Xop~S?zgq8_zTm2-JgF0RoZflp#Fu~_-Y1S3in+e(%h`7${;SvBEh%mDe091? zdiv9wzaKBY<2U*2>Akjd9#)rjW=-6^Uf%RuYT1nyvWvraFlJ>leV0D7>B!V=Uzh%V zb@l8Vu`6GLUrtS)B_FkU_kWS9r!$_lUwiXz{pY_?w^eooG_#0jO?cqMD-^TBv5DK% rqhKK$r`{EXgRN3{CGT8%`G;ZR36|PdX*+v?5yjx?>gTe~DWM4f_kY`3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_2.png b/src/main/resources/assets/actuallyadditions/textures/models/armor/armor_goggles_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5186182e54458e0f95d458bb46c12a5fc8e6cf GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4uCLY*0oMfpdfpRr>`sf14d?Hb~ayj$>l&H$r9IylHmNb zlJdl&REC1Y%)Ao4ywnl}6FmbxLnCLF>^DF~VV*9IAsNn3PZ%;XFz_5+@YDRRWCt^! xT%NRU@FdNXQ&PN)RA)}|@m!`tJoorJMlt@EQEzjOy#U(4;OXk;vd$@?2>`NmN&o-= literal 0 HcmV?d00001