Fixed goggles being a little broken

This commit is contained in:
Ellpeck 2017-02-13 20:12:47 +01:00
parent 9b21323c4f
commit bdabd081be

View file

@ -14,6 +14,7 @@ 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 io.netty.util.internal.ConcurrentSet;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
@ -26,9 +27,12 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
import java.util.Set;
public class ItemInfraredGoggles extends ItemArmorAA{
private final Set<Entity> cachedGlowingEntities = new ConcurrentSet<Entity>();
public ItemInfraredGoggles(String name){
super(name, InitArmorMaterials.armorMaterialGoggles, 0, StackUtil.getNull());
this.setMaxDamage(0);
@ -41,21 +45,34 @@ public class ItemInfraredGoggles extends ItemArmorAA{
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);
double range = 8;
AxisAlignedBB aabb = new AxisAlignedBB(player.posX-range, player.posY-range, player.posZ-range, player.posX+range, player.posY+range, player.posZ+range);
List<Entity> entities = player.world.getEntitiesWithinAABB(Entity.class, aabb);
if(entities != null && !entities.isEmpty()){
this.cachedGlowingEntities.addAll(entities);
}
for(Entity entity : entities){
if(entity != player){
if(entity.getDistanceSq(player.posX, player.posY, player.posZ) <= innerRange*innerRange){
entity.setGlowing(true);
if(!this.cachedGlowingEntities.isEmpty()){
for(Entity entity : this.cachedGlowingEntities){
if(entity.getDistanceSq(player.posX, player.posY, player.posZ) > range*range){
entity.setGlowing(false);
this.cachedGlowingEntities.remove(entity);
}
else{
entity.setGlowing(true);
}
}
}
}
else{
if(!this.cachedGlowingEntities.isEmpty()){
for(Entity entity : this.cachedGlowingEntities){
if(!entity.isDead){
entity.setGlowing(false);
}
}
this.cachedGlowingEntities.clear();
}
}
}