Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Kill Count Tracking and GUI Updates for TurretBase #9

Merged
merged 7 commits into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ protected void drawGuiContainerForegroundLayer(int param1, int param2) {
targetInfo.add("\u00A77Attack Neutrals: \u00A7b" + base.isAttacksNeutrals());
targetInfo.add("\u00A77Attack Players: \u00A7b" + base.isAttacksPlayers());

targetInfo.add("");
targetInfo.add("\u00A77Kill Count: \u00A7b" + base.getKillCount());

this.drawHoveringText(targetInfo, -128, 17, fontRenderer);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ protected void drawGuiContainerForegroundLayer(int param1, int param2) {
targetInfo.add("\u00A77Attack Mobs: \u00A7b" + base.isAttacksMobs());
targetInfo.add("\u00A77Attack Neutrals: \u00A7b" + base.isAttacksNeutrals());
targetInfo.add("\u00A77Attack Players: \u00A7b" + base.isAttacksPlayers());
targetInfo.add("");
targetInfo.add("\u00A77Kill Count: \u00A7b" + base.getKillCount());

this.drawHoveringText(targetInfo, -128, 17, fontRenderer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ protected void drawGuiContainerForegroundLayer(int param1, int param2) {
targetInfo.add("\u00A77Attack Mobs: \u00A7b" + base.isAttacksMobs());
targetInfo.add("\u00A77Attack Neutrals: \u00A7b" + base.isAttacksNeutrals());
targetInfo.add("\u00A77Attack Players: \u00A7b" + base.isAttacksPlayers());
targetInfo.add("");
targetInfo.add("\u00A77Kill Count: \u00A7b" + base.getKillCount());

this.drawHoveringText(targetInfo, -128, 17, fontRenderer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ protected void drawGuiContainerForegroundLayer(int param1, int param2) {
targetInfo.add("\u00A77Attack Mobs: \u00A7b" + base.isAttacksMobs());
targetInfo.add("\u00A77Attack Neutrals: \u00A7b" + base.isAttacksNeutrals());
targetInfo.add("\u00A77Attack Players: \u00A7b" + base.isAttacksPlayers());
targetInfo.add("");
targetInfo.add("\u00A77Kill Count: \u00A7b" + base.getKillCount());

this.drawHoveringText(targetInfo, -128, 17, fontRenderer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ protected void drawGuiContainerForegroundLayer(int param1, int param2) {
targetInfo.add("\u00A77Attack Mobs: \u00A7b" + base.isAttacksMobs());
targetInfo.add("\u00A77Attack Neutrals: \u00A7b" + base.isAttacksNeutrals());
targetInfo.add("\u00A77Attack Players: \u00A7b" + base.isAttacksPlayers());
targetInfo.add("");
targetInfo.add("\u00A77Kill Count: \u00A7b" + base.getKillCount());

this.drawHoveringText(targetInfo, -128, 17, fontRenderer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,25 +68,44 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {

int damage = ConfigHandler.getIncendiary_turret().getDamage();

if (isAmped) {
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.05 * amp_level));
}
if (isAmped && movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.05 * amp_level));
}

for (Entity mob : targets) {
boolean wasAlive = !mob.isDead;
float healthBefore = 0;

if (mob instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) mob;
healthBefore = elb.getHealth();

if (mob instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) mob)) {
elb.attackEntityFrom(new NormalDamageSource("bullet"), damage);
elb.hurtResistantTime = 0;
elb.setFire(5);
}
} else {
elb.attackEntityFrom(new NormalDamageSource("bullet"), damage);
elb.hurtResistantTime = 0;
elb.setFire(5);
}
mak8427 marked this conversation as resolved.
Show resolved Hide resolved

if (mob instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) mob)) {
mob.attackEntityFrom(new NormalDamageSource("bullet"), damage);
mob.hurtResistantTime = 0;
mob.setFire(5);
float healthAfter = elb.getHealth();
if (wasAlive && healthBefore > 0 && healthAfter <= 0) {
turretBase.onKill(mob);
}
} else {
// Handle non-living base entities
mob.attackEntityFrom(new NormalDamageSource("bullet"), damage);
mob.hurtResistantTime = 0;
mob.setFire(5);

if (wasAlive && mob.isDead) {
turretBase.onKill(mob);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;

Expand Down Expand Up @@ -35,46 +36,60 @@ public void onEntityUpdate() {

@Override
protected void onImpact(MovingObjectPosition movingobjectposition) {
EntityPlayer player = worldObj.getClosestPlayerToEntity(this, 50); // Closest player (if needed)

if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
Block hitBlock = worldObj
.getBlock(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ);
if (hitBlock != null
&& (!hitBlock.getMaterial().isSolid() || hitBlock instanceof BlockAbstractTurretHead)) {
// Go through non-solid block or turrets
return;
if (player != null) {
player.addChatMessage(new ChatComponentText("Hit non-solid block or turret head"));
}
return; // Stop if hitting a non-solid block or turret head
}
}

// Check if we hit an entity and we're on the server side
if (movingobjectposition.entityHit != null && !worldObj.isRemote) {
if (movingobjectposition.typeOfHit.equals(0)) {
if (worldObj.isAirBlock(
movingobjectposition.blockX,
movingobjectposition.blockY,
movingobjectposition.blockZ)) {
// Determine final damage
int damage = ConfigHandler.getGunTurretSettings().getDamage();
if (isAmped && movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.1 * amp_level));
}

// Check if it's a player and if we can damage them
if (movingobjectposition.entityHit instanceof EntityPlayer) {
if (!canDamagePlayer((EntityPlayer) movingobjectposition.entityHit)) {
// If we can't damage the player, exit early
return;
}
}

int damage = ConfigHandler.getGunTurretSettings().getDamage();
// Single damage call
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
// Track health before dealing damage
float healthBefore = elb.getHealth();

if (isAmped) {
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.1 * amp_level));
}
}
// Deal damage once
elb.attackEntityFrom(new NormalDamageSource("bullet"), damage);
elb.hurtResistantTime = 0;

if (movingobjectposition.entityHit instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) movingobjectposition.entityHit)) {
movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("bullet"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;
// Check if the entity was killed
float healthAfter = elb.getHealth();
if (healthBefore > 0 && healthAfter <= 0) {
// If final blow, increment kill count or handle kill logic
turretBase.onKill(elb);
}
} else {
// If the hit entity is not a LivingEntity, just deal damage once
movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("bullet"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;
}
}

// If we didn't hit an entity, play a sound (optional)
if (movingobjectposition.entityHit == null && !worldObj.isRemote) {
Random random = new Random();
worldObj.playSoundEffect(
Expand All @@ -85,6 +100,8 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {
ConfigHandler.getTurretSoundVolume(),
random.nextFloat() + 0.5F);
}

// Destroy the projectile after impact
this.setDead();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
Expand Down Expand Up @@ -58,7 +57,7 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {
}

if (movingobjectposition.entityHit != null && !worldObj.isRemote) {
if (movingobjectposition.typeOfHit.equals(0)) {
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if (worldObj.isAirBlock(
movingobjectposition.blockX,
movingobjectposition.blockY,
Expand All @@ -69,21 +68,29 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {

int damage = ConfigHandler.getDisposableTurretSettings().getDamage();

if (isAmped) {
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.05 * amp_level));
}
if (isAmped && movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.05 * amp_level));
}

if (movingobjectposition.entityHit instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) movingobjectposition.entityHit)) {
movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("disposable"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
float healthBefore = elb.getHealth();

elb.attackEntityFrom(new NormalDamageSource("disposable"), damage);
elb.hurtResistantTime = 0;

float healthAfter = elb.getHealth();
if (healthBefore > 0 && healthAfter <= 0) {
turretBase.onKill(elb);
}
} else {
movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("disposable"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;

if (movingobjectposition.entityHit.isDead) {
mak8427 marked this conversation as resolved.
Show resolved Hide resolved
turretBase.onKill(movingobjectposition.entityHit);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
Expand Down Expand Up @@ -46,7 +45,7 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {
}

if (movingobjectposition.entityHit != null && !worldObj.isRemote) {
if (movingobjectposition.typeOfHit.equals(0)) {
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if (worldObj.isAirBlock(
movingobjectposition.blockX,
movingobjectposition.blockY,
Expand All @@ -57,11 +56,9 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {

int damage = ConfigHandler.getRailgun_turret().getDamage();

if (isAmped) {
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.25 * amp_level));
}
if (isAmped && movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
damage += ((int) elb.getHealth() * (0.25 * amp_level));
}

Random random = new Random();
Expand All @@ -73,14 +70,24 @@ protected void onImpact(MovingObjectPosition movingobjectposition) {
ConfigHandler.getTurretSoundVolume(),
random.nextFloat() + 0.5F);

if (movingobjectposition.entityHit instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) movingobjectposition.entityHit)) {
movingobjectposition.entityHit.attackEntityFrom(new ArmorBypassDamageSource("ferroslug"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;
if (movingobjectposition.entityHit instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) movingobjectposition.entityHit;
float healthBefore = elb.getHealth();

elb.attackEntityFrom(new ArmorBypassDamageSource("ferroslug"), damage);
elb.hurtResistantTime = 0;

float healthAfter = elb.getHealth();
if (healthBefore > 0 && healthAfter <= 0) {
turretBase.onKill(elb);
}
} else {
movingobjectposition.entityHit.attackEntityFrom(new ArmorBypassDamageSource("ferroslug"), damage);
movingobjectposition.entityHit.hurtResistantTime = 0;

if (movingobjectposition.entityHit.isDead) {
mak8427 marked this conversation as resolved.
Show resolved Hide resolved
turretBase.onKill(movingobjectposition.entityHit);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
Expand Down Expand Up @@ -44,28 +43,34 @@ public void onEntityUpdate() {
List<Entity> targets = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axis);

for (Entity mob : targets) {

int damage = ConfigHandler.getGrenadeTurretSettings().getDamage();

if (isAmped) {
if (mob instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) mob;
damage += ((int) elb.getHealth() * (0.25 * amp_level));
}
if (isAmped && mob instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) mob;
damage += ((int) elb.getHealth() * (0.25 * amp_level));
}

if (mob instanceof EntityPlayer) {
if (canDamagePlayer((EntityPlayer) mob)) {
mob.attackEntityFrom(new NormalDamageSource("grenade"), damage * 0.9F);
mob.attackEntityFrom(new ArmorBypassDamageSource("grenade"), damage * 0.1F);
mob.hurtResistantTime = 0;
if (mob instanceof EntityLivingBase) {
EntityLivingBase elb = (EntityLivingBase) mob;
float healthBefore = elb.getHealth();

mob.attackEntityFrom(new NormalDamageSource("grenade"), damage * 0.9F);
mob.attackEntityFrom(new ArmorBypassDamageSource("grenade"), damage * 0.1F);
mob.hurtResistantTime = 0;

float healthAfter = elb.getHealth();
if (healthBefore > 0 && healthAfter <= 0) {
turretBase.onKill(elb);
}
} else {
mob.attackEntityFrom(new NormalDamageSource("grenade"), damage * 0.9F);
mob.attackEntityFrom(new ArmorBypassDamageSource("grenade"), damage * 0.1F);
mob.hurtResistantTime = 0;
}

if (mob.isDead) {
mak8427 marked this conversation as resolved.
Show resolved Hide resolved
turretBase.onKill(mob);
}
}
}
}
this.setDead();
Expand Down
Loading
Loading