damage.txt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. event.load("living_tame");
  2. event.load("entity_damage");
  3. event.load("entity_heal");
  4. event.load("entity_spawn");
  5. entities_list = list.new();
  6. permanent_name = set.new();
  7. set.add(permanent_name, "villager");
  8. set.add(permanent_name, "wandering_trader");
  9. permanent_tamed_name = set.new();
  10. set.add(permanent_tamed_name, "wolf");
  11. set.add(permanent_tamed_name, "cat");
  12. set.add(permanent_tamed_name, "horse");
  13. set.add(permanent_tamed_name, "donkey");
  14. set.add(permanent_tamed_name, "mule");
  15. set.add(permanent_tamed_name, "skeleton_horse");
  16. set.add(permanent_tamed_name, "zombie_horse");
  17. set.add(permanent_tamed_name, "parrot");
  18. msg.string("dev", "§bDamage §rloaded.");
  19. @wait
  20. wait();
  21. ignoreGoto(event);
  22. goto("wait");
  23. @living_tame
  24. if(!isPlayer(living_entity)) {
  25. if(list.getSize(entities_list) == 0) {
  26. sgoto(2, "sgoto_updateEntityName");
  27. }
  28. list.add(entities_list, living_entity);
  29. }
  30. goto("wait");
  31. @entity_spawn
  32. if(isLiving(entity) && !isPlayer(entity)) {
  33. updateEntityName(entity);
  34. }
  35. goto("wait");
  36. @entity_heal
  37. if(isPlayer(entity) || !isLiving(entity)) {
  38. goto("wait");
  39. }
  40. if(list.getSize(entities_list) == 0) {
  41. sgoto(2, "sgoto_updateEntityName");
  42. }
  43. list.add(entities_list, entity);
  44. goto("wait");
  45. @entity_damage
  46. if(isPlayer(entity) || !isLiving(entity)) {
  47. goto("wait");
  48. }
  49. if(list.getSize(entities_list) == 0) {
  50. sgoto(2, "sgoto_updateEntityName");
  51. }
  52. list.add(entities_list, entity);
  53. goto("wait");
  54. @sgoto_updateEntityName
  55. iter = iterator(entities_list);
  56. while(hasNext(iter)) {
  57. updateEntityName(next(iter));
  58. }
  59. list.clear(entities_list);
  60. goto("wait");
  61. function updateEntityName(entity) {
  62. if(!isLiving(entity)) {
  63. return;
  64. }
  65. living_entity = entity;
  66. entity_type = entity.getType(living_entity);
  67. if(entity_type == "armor_stand" || isCitizen(entity)) {
  68. return;
  69. }
  70. entity_name = entity.getName(living_entity);
  71. if(entity_name == null) {
  72. string_name = "";
  73. } else {
  74. string_name = string.text(entity_name);
  75. }
  76. max_health = living.getMaxHealth(living_entity);
  77. health = string.number(math.round(living.getHealth(living_entity)));
  78. max_health = string.number(math.roundComma(max_health, 1));
  79. heart_index = string.indexOf(string_name, "❤", 0);
  80. if(heart_index == -1) {
  81. //Kein Herz gefunden
  82. setEntityName(living_entity, health, max_health, string_name);
  83. return;
  84. }
  85. if(heart_index == 2) {
  86. //Links vom Herz kein Name
  87. setEntityName(living_entity, health, max_health, null);
  88. return;
  89. }
  90. if(heart_index < 2) {
  91. return;
  92. }
  93. string_name = string.subString(string_name, 0, heart_index - 2);
  94. setEntityName(living_entity, health, max_health, string_name);
  95. }
  96. function setEntityName(living_entity, health, max_health, string_name) {
  97. entity_type = entity.getType(living_entity);
  98. permanent = false;
  99. if(set.contains($permanent_name, entity_type)) {
  100. permanent = true;
  101. } elseif(set.contains($permanent_tamed_name, entity_type)) {
  102. if(pet.isTamed(living_entity)) {
  103. permanent = true;
  104. }
  105. }
  106. if(string_name == null || string_name == "") {
  107. entity.setName(living_entity, text.new(string.concat("§c❤§r", health)), permanent);
  108. return;
  109. }
  110. if(string.contains(string_name, "Boss")) {
  111. permanent = true;
  112. }
  113. entity.setName(living_entity, text.merge(text.new(string.trim(string_name)), text.new(string.concat(" §c❤§r", health))), permanent);
  114. }