initial commit

This commit is contained in:
Sen 2025-03-11 00:23:54 +01:00 committed by Sen
parent 3c9ee26b06
commit 22186c33b9
1458 changed files with 282792 additions and 0 deletions

View file

@ -0,0 +1,249 @@
package game.entity;
import game.color.TextColor;
import game.entity.projectile.EntityProjectile;
import game.entity.types.EntityLiving;
import game.world.Explosion;
public class DamageSource
{
public static final DamageSource inFire =
(new DamageSource(TextColor.ORANGE, "%s ging in Flammen auf", "%s lief ins Feuer, während er mit %s kämpfte", "%s ins Feuer gelaufen")).setFireDamage();
public static final DamageSource onFire =
(new DamageSource(TextColor.ORANGE, "%s wurde zu heiß und verbrannte", "%s wurde während des Kampfes mit %s geröstet", "%s geröstet")).setDamageBypassesArmor().setFireDamage();
public static final DamageSource hotLiquid =
(new DamageSource(TextColor.ORANGE, "%s versuchte in einer unangenehm brennenden Flüssigkeit zu schwimmen", "%s fiel beim Versuch %s zu entkommen in eine unangenehm brennende Flüssigkeit", "%s in unangenehm brennender Flüssigkeit gelandet")).setFireDamage();
public static final DamageSource molten =
(new DamageSource(TextColor.ORANGE, "%s versuchte dem Magmaregen zu trotzen", "%s geriet beim Versuch %s zu entkommen in Magmaregen", "%s in Magmaregen geraten")).setFireDamage();
public static final DamageSource inWall =
(new DamageSource(TextColor.GRAY, "%s wurde lebendig begraben")).setDamageBypassesArmor();
public static final DamageSource dry =
(new DamageSource(TextColor.GRAY, "%s ist vertrocknet", "%s ist beim Versuch %s zu entkommen vertrocknet", "%s vertrocknet")).setDamageBypassesArmor();
public static final DamageSource cactus =
new DamageSource(TextColor.ORK, "%s wurde zu Tode gestochen", "%s rannte beim Versuch %s zu entkommen in einen Kaktus", "%s in Kaktus gerannt");
public static final DamageSource fall =
(new DamageSource(TextColor.NEON, "%s fiel der Schwerkraft zum Opfer")).setDamageBypassesArmor();
public static final DamageSource outOfWorld =
(new DamageSource(TextColor.DGRAY, "%s fiel aus der Welt")).setDamageBypassesArmor();
public static final DamageSource generic =
(new DamageSource(TextColor.LGRAY, "%s starb")).setDamageBypassesArmor();
public static final DamageSource magic =
(new DamageSource(TextColor.DMAGENTA, "%s wurde durch Magie getötet")).setDamageBypassesArmor().setMagicDamage();
public static final DamageSource anvil =
new DamageSource(TextColor.DRED, "%s wurde von einem fallenden Amboss zerquetscht");
public static final DamageSource fallingBlock =
new DamageSource(TextColor.GRAY, "%s wurde von einem fallenden Block zerquetscht");
public static final DamageSource radiation =
(new DamageSource(TextColor.GREEN, "%s hat seine Halbwertszeit nicht rechtzeitig erreicht")).setDamageBypassesArmor();
protected final String display;
protected final String displayExtra;
protected final String displayKill;
protected final TextColor color;
private boolean isUnblockable;
private boolean fireDamage;
private boolean projectile;
private boolean magicDamage;
private boolean explosion;
public static DamageSource causeMobDamage(EntityLiving mob)
{
return new EntityDamageSource(TextColor.CRIMSON, "%s wurde von %s erschlagen", "%s wurde von %s mit %s erschlagen",
"%s erschlagen", "%s mit %s erschlagen", mob);
}
public static DamageSource causeLightningDamage(EntityLiving mob)
{
return mob == null ? new DamageSource(TextColor.YELLOW, "%s wurde vom Blitz getroffen und gegrillt") :
new EntityDamageSource(TextColor.YELLOW, "%s wurde von %s gegrillt", "%s wurde von %s mit %s gegrillt",
"%s gegrillt", "%s mit %s gegrillt", mob);
}
public static DamageSource causeExterminatusDamage(EntityLiving mob)
{
return mob == null ? new DamageSource(TextColor.DRED, "%s wurde vernichtet") :
new EntityDamageSource(TextColor.DRED, "%s wurde von %s vernichtet", "%s wurde von %s mit %s vernichtet",
"%s vernichtet", "%s mit %s vernichtet", mob);
}
public static DamageSource causeShotDamage(Entity projectile, Entity shooter)
{
return (new EntityDamageSourceIndirect(TextColor.RED, "%s wurde von %s erschossen", "%s wurde von %s mit %s erschossen", "%s erschossen", "%s mit %s erschossen", projectile, shooter)).setProjectile();
}
public static DamageSource causeFireballDamage(EntityProjectile fireball, Entity shooter)
{
return shooter == null ? (new EntityDamageSourceIndirect(TextColor.YELLOW, "%s wurde von %s flambiert", fireball)).setFireDamage().setProjectile() : (new EntityDamageSourceIndirect(TextColor.YELLOW, "%s wurde von %s flambiert", "%s wurde von %s mit %s flambiert", "%s flambiert", "%s mit %s flambiert", fireball, shooter)).setFireDamage().setProjectile();
}
public static DamageSource causeThrownDamage(Entity source, Entity thrower)
{
return (new EntityDamageSourceIndirect(TextColor.DGREEN, "%s wurde von %s zu Tode geprügelt", "%s wurde von %s mit %s zu Tode geprügelt", "%s zu Tode geprügelt", "%s mit %s zu Tode geprügelt", source, thrower)).setProjectile();
}
public static DamageSource causeTeleFragDamage(Entity source, Entity replacer)
{
return (new EntityDamageSourceIndirect(TextColor.MAGENTA, "%s wurde von %s verdrängt", "%s wurde von %s mit %s verdrängt", "%s verdrängt", "%s mit %s verdrängt", source, replacer)).setDamageBypassesArmor();
}
public static DamageSource causeIndirectMagicDamage(Entity source, Entity mage)
{
return (new EntityDamageSourceIndirect(TextColor.DMAGENTA, "%s wurde von %s mit Magie getötet", "%s wurde von %s mit %s getötet", "%s mit Magie getötet", "%s mit %s getötet", source, mage)).setDamageBypassesArmor().setMagicDamage();
}
public static DamageSource causeThornsDamage(Entity source)
{
return (new EntityDamageSource(TextColor.ORK, "%s wurde beim Versuch %s zu verletzen getötet", "%s durch Dornen getötet", source)).setIsThornsDamage().setMagicDamage();
}
public static DamageSource causeExplosionDamage(Explosion explosion)
{
return explosion != null && explosion.getExplosivePlacedBy() != null ? (new EntityDamageSource(TextColor.YELLOW, "%s wurde durch %s in die Luft gesprengt", "%s in die Luft gesprengt", explosion.getExplosivePlacedBy())).setExplosion() : (new DamageSource(TextColor.YELLOW, "%s wurde in die Luft gesprengt")).setExplosion();
}
/**
* Returns true if the damage is projectile based.
*/
public boolean isProjectile()
{
return this.projectile;
}
/**
* Define the damage type as projectile based.
*/
public DamageSource setProjectile()
{
this.projectile = true;
return this;
}
public boolean isExplosion()
{
return this.explosion;
}
public DamageSource setExplosion()
{
this.explosion = true;
return this;
}
public boolean isUnblockable()
{
return this.isUnblockable;
}
protected DamageSource(TextColor color, String display, String extra, String kill)
{
this.color = color;
this.display = this.color + display;
this.displayExtra = this.color + extra;
this.displayKill = this.color + "* " + kill;
}
protected DamageSource(TextColor color, String display)
{
this(color, display, display, "");
}
public Entity getSourceOfDamage()
{
return this.getEntity();
}
public Entity getEntity()
{
return null;
}
protected DamageSource setDamageBypassesArmor()
{
this.isUnblockable = true;
return this;
}
/**
* Define the damage type as fire based.
*/
protected DamageSource setFireDamage()
{
this.fireDamage = true;
return this;
}
/**
* Gets the death message that is displayed when the player dies
*
* @param victim The EntityLivingBase that died
*/
public String getDeathMessage(EntityLiving victim)
{
EntityLiving killer = victim.getAttackingEntity();
// String s = this.display;
// String s1 = s + "Player";
return killer != null ? String.format(this.displayExtra, victim.getColoredName(this.color), killer.getColoredName(this.color)) : String.format(this.display, victim.getColoredName(this.color));
}
public String getKillMessage(EntityLiving victim)
{
return String.format(this.displayKill, victim.getColoredName(this.color));
}
/**
* Returns true if the damage is fire based.
*/
public boolean isFireDamage()
{
return this.fireDamage;
}
// /**
// * Return the name of damage type.
// */
// public String getDamageType()
// {
// return this.damageType;
// }
// /**
// * Set whether this damage source will have its damage amount scaled based on the current difficulty.
// */
// public DamageSource setDifficultyScaled()
// {
// this.difficultyScaled = true;
// return this;
// }
// /**
// * Return whether this damage source will have its damage amount scaled based on the current difficulty.
// */
// public boolean isDifficultyScaled()
// {
// return this.difficultyScaled;
// }
/**
* Returns true if the damage is magic based.
*/
public boolean isMagicDamage()
{
return this.magicDamage;
}
/**
* Define the damage type as magic based.
*/
public DamageSource setMagicDamage()
{
this.magicDamage = true;
return this;
}
// public boolean isCreativePlayer()
// {
// Entity entity = this.getEntity();
// return entity.isPlayer() && ((EntityNPC)entity).creative;
// }
}