DamageCommands.java 4.7 KB

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