DamageCommands.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package me.km.snuviscript.commands;
  2. import me.hammerle.snuviscript.code.ScriptManager;
  3. import net.minecraft.entity.Entity;
  4. import net.minecraft.entity.LivingEntity;
  5. import net.minecraft.entity.player.PlayerEntity;
  6. import net.minecraft.util.DamageSource;
  7. public class DamageCommands {
  8. public static void registerFunctions(ScriptManager sm) {
  9. sm.registerFunction("damage.getimmediatesource", (sc, in) -> ((DamageSource) in[0].get(sc)).getImmediateSource());
  10. sm.registerFunction("damage.gettruesource", (sc, in) -> ((DamageSource) in[0].get(sc)).getTrueSource());
  11. sm.registerFunction("damage.iscreativeplayer", (sc, in) -> ((DamageSource) in[0].get(sc)).isCreativePlayer());
  12. sm.registerFunction("damage.isabsolute", (sc, in) -> ((DamageSource) in[0].get(sc)).isDamageAbsolute());
  13. sm.registerFunction("damage.isdifficultyscaled", (sc, in) -> ((DamageSource) in[0].get(sc)).isDifficultyScaled());
  14. sm.registerFunction("damage.isexplosion", (sc, in) -> ((DamageSource) in[0].get(sc)).isExplosion());
  15. sm.registerFunction("damage.isfire", (sc, in) -> ((DamageSource) in[0].get(sc)).isFireDamage());
  16. sm.registerFunction("damage.ismagic", (sc, in) -> ((DamageSource) in[0].get(sc)).isMagicDamage());
  17. sm.registerFunction("damage.isprojectile", (sc, in) -> ((DamageSource) in[0].get(sc)).isProjectile());
  18. sm.registerFunction("damage.isunblockable", (sc, in) -> ((DamageSource) in[0].get(sc)).isUnblockable());
  19. sm.registerFunction("damage.gettype", (sc, in) -> ((DamageSource) in[0].get(sc)).getDamageType());
  20. sm.registerFunction("damage.get", (sc, in) -> {
  21. Object o = in[0].get(sc);
  22. if(o instanceof LivingEntity) {
  23. LivingEntity ent = (LivingEntity) o;
  24. DamageSource ds;
  25. if(ent instanceof PlayerEntity) {
  26. ds = DamageSource.causePlayerDamage((PlayerEntity) ent);
  27. } else {
  28. ds = DamageSource.causeMobDamage(ent);
  29. }
  30. if(in[1].getBoolean(sc)) {
  31. ds.setDamageAllowedInCreativeMode();
  32. }
  33. if(in[2].getBoolean(sc)) {
  34. ds.setDamageBypassesArmor();
  35. }
  36. if(in[3].getBoolean(sc)) {
  37. ds.setDamageIsAbsolute();
  38. }
  39. if(in[4].getBoolean(sc)) {
  40. ds.setExplosion();
  41. }
  42. if(in[5].getBoolean(sc)) {
  43. ds.setFireDamage();
  44. }
  45. if(in[6].getBoolean(sc)) {
  46. ds.setMagicDamage();
  47. }
  48. if(in[7].getBoolean(sc)) {
  49. ds.setProjectile();
  50. }
  51. return ds;
  52. }
  53. switch(o.toString()) {
  54. case "inFire":
  55. return DamageSource.IN_FIRE;
  56. case "lightningBolt":
  57. return DamageSource.LIGHTNING_BOLT;
  58. case "onFire":
  59. return DamageSource.ON_FIRE;
  60. case "lava":
  61. return DamageSource.LAVA;
  62. case "hotFloor":
  63. return DamageSource.HOT_FLOOR;
  64. case "inWall":
  65. return DamageSource.IN_WALL;
  66. case "cramming":
  67. return DamageSource.CRAMMING;
  68. case "drown":
  69. return DamageSource.DROWN;
  70. case "starve":
  71. return DamageSource.STARVE;
  72. case "cactus":
  73. return DamageSource.CACTUS;
  74. case "fall":
  75. return DamageSource.FALL;
  76. case "flyIntoWall":
  77. return DamageSource.FLY_INTO_WALL;
  78. case "outOfWorld":
  79. return DamageSource.OUT_OF_WORLD;
  80. case "generic":
  81. return DamageSource.GENERIC;
  82. case "magic":
  83. return DamageSource.MAGIC;
  84. case "wither":
  85. return DamageSource.WITHER;
  86. case "anvil":
  87. return DamageSource.ANVIL;
  88. case "fallingBlock":
  89. return DamageSource.FALLING_BLOCK;
  90. case "dragonBreath":
  91. return DamageSource.DRAGON_BREATH;
  92. case "fireworks":
  93. return DamageSource.FIREWORKS;
  94. case "dryout":
  95. return DamageSource.DRYOUT;
  96. case "sweetBerryBush":
  97. return DamageSource.SWEET_BERRY_BUSH;
  98. case "thorns":
  99. return DamageSource.causeThornsDamage((Entity) in[1].get(sc));
  100. }
  101. return DamageSource.GENERIC;
  102. });
  103. }
  104. }