C_Corp2002

Movecraft Custom Fuel System

May 8th, 2021
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.68 KB | None | 0 0
  1. options:
  2. radon: emerald named "&c&lCrystallized Radon"
  3. resonant_crystal: glowstone dust with name "&4&lResonant Crystal"
  4. minY: 10
  5. maxY: 250
  6. t1Fuel: coal or charcoal
  7. t2Fuel: blaze powder or magma cream
  8. t3Fuel: coal block
  9. fuelBlock: furnace, dropper
  10. craftMan: CraftManager.getInstance()
  11.  
  12. iredstone_cable: mushroom_stem[east=true;down=true;west=true]
  13. composite_block: mushroom_stem[down=true;south=true]
  14.  
  15. chargedMovecraft: &6[&fMovecraft&6]&f
  16.  
  17. import:
  18. #Movecraft Hooks
  19. net.countercraft.movecraft.events.CraftTranslateEvent
  20. net.countercraft.movecraft.events.CraftPreTranslateEvent
  21. net.countercraft.movecraft.events.CraftDetectEvent
  22. net.countercraft.movecraft.events.CraftCollisionEvent
  23. net.countercraft.movecraft.events.CraftEvent
  24. net.countercraft.movecraft.events.CraftRotateEvent
  25. net.countercraft.movecraft.events.CraftPilotEvent
  26. net.countercraft.movecraft.events.FuelBurnEvent
  27. net.countercraft.movecraft.events.CraftReleaseEvent
  28. net.countercraft.movecraft.craft.CraftManager
  29. net.countercraft.movecraft.craft.CraftType
  30. net.countercraft.movecraft.craft.Craft
  31. net.countercraft.movecraft.utils.HitBox
  32. net.countercraft.movecraft.utils.BitmapHitBox
  33. net.countercraft.movecraft.MovecraftLocation
  34. net.countercraft.movecraft.Movecraft
  35. #Bukkit Hooks
  36. org.bukkit.Bukkit
  37. org.bukkit.inventory.Inventory
  38. org.bukkit.inventory.FurnaceInventory
  39. org.bukkit.inventory.InventoryHolder
  40. org.bukkit.inventory.ItemStack as ItemStack
  41. org.bukkit.inventory.meta.ItemMeta as ItemMeta
  42. org.bukkit.block.Container
  43. org.bukkit.block.BlockState
  44. org.bukkit.event.EventHandler
  45. org.bukkit.event.Listener
  46. org.bukkit.block.Block
  47. org.bukkit.block.Dropper
  48. org.bukkit.block.Dispenser
  49. org.bukkit.Material
  50. org.bukkit.Location
  51. org.bukkit.event.player.PlayerInteractEvent
  52. org.bukkit.event.block.Action
  53. org.bukkit.World
  54. #Java Types
  55. java.util.HashMap
  56. java.util.Map
  57. java.lang.String
  58. java.lang.Integer
  59. java.lang.Boolean
  60. java.lang.Long
  61. java.lang.Double
  62. uwu.smsgamer.spygotutils.SpigotLoader
  63. #Bukkit.getScheduler().runTask(SpigotLoader.getInstance(), """your code here""")
  64. #for (MovecraftLocation l : craft.getHitBox()) {
  65. # if (l.toBukkit(craft.getW()).getBlock().getType() == Material.DROPPER) {
  66. # // stuff
  67. # }
  68. #}
  69.  
  70.  
  71. #FUEL TODO
  72. #MAGMA BASED
  73. #BEACON COUNT
  74. #GEARSHIFT
  75. #(Number of magma blocks * 0.001) + (Number of blocks * 0.0001) * (gearshift * 1.2) = coal used per movement + (Number of beacons * 0.01)
  76. function getHitBoxComposition(hitbox: object) :: objects:
  77. set {_blocks::*} to (...{_hitbox})
  78. message "(DBG) {@chargedMovecraft} > Hitbox Composition %{_blocks::*}%" to console
  79. return {_blocks::*}
  80.  
  81. function getCraftFromPilot(player: object) :: object:
  82. return {@craftMan}.getCraftByPlayer({_player})
  83.  
  84. function getPlayerFromCraft(craft: object) :: player:
  85. return {_craft}.getNotificationPlayer()
  86.  
  87. function getBlockInHitBox(hitbox: object, world: world, block: material) :: blocks:
  88. loop ...{_hitbox}:
  89. set {_loopBlockLoc} to loop-value-1
  90. set {_blockOut} to {_loopBlockLoc}.toBukkit({_world}).getBlock()
  91. #message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getType())%" to console
  92. if {_block}'s inventory contains {_blockOut}:
  93. message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getType())%" to console
  94. message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getLocation())%, true" to console
  95. add {_blockOut} to {_blockIter::*}
  96. return ({_blockIter::*})
  97.  
  98.  
  99. function getBlockCountInHitBox(hitbox: object, world: world, block: material) :: number:
  100. set {_number} to 0
  101. loop ...{_hitbox}:
  102. set {_loopBlockLoc} to loop-value-1
  103. set {_blockOut} to {_loopBlockLoc}.toBukkit({_world}).getBlock()
  104. if {_block}.getType() contains {_blockOut}:
  105. message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getBlock().getType())%" to console
  106. message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getBlock().getLocation())%, true" to console
  107. add 1 to {_number}
  108. return ({_number})
  109.  
  110. function getBlockListInHitBox(hitbox: object, world: world, block: materials) :: blocks:
  111. loop ...{_hitbox}:
  112. set {_loopBlockLoc} to loop-value-1
  113. set {_blockOut} to loop-value-1.toBukkit({_world})
  114. if {_block::*} contains {_blockOut}.getBlock():
  115. message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getBlock().getType())%" to console
  116. message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getBlock().getLocation())%, true" to console
  117. add {_blockOut}.getBlock() to {_blockIter::*}
  118. return ({_blockIter::*})
  119.  
  120.  
  121. on FuelBurnEvent:
  122. set {_craft} to getCraftFromPilot(getPlayerFromCraft(event.getCraft()))
  123. set {_craftType} to {_craft}.getType()
  124. set {_craftTypeName} to {_craftType}.getCraftName()
  125. cancel event
  126.  
  127. on CraftTranslateEvent:
  128. set {_craft} to getCraftFromPilot(getPlayerFromCraft(event.getCraft()))
  129. set {_craftType} to {_craft}.getType()
  130. set {_craftTypeName} to {_craftType}.getCraftName()
  131. set {_world} to {_craft}.getWorld()
  132. set {_worldName} to {_craft}.getWorld().getName()
  133. set {_hitboxCurrent} to event.getNewHitBox()
  134. set {_size} to {_hitboxCurrent}.size()
  135. set {_magma} to "MAGMA_BLOCK"
  136. set {_beacon} to "BEACON"
  137. if {_craftTypeName} contains "Turret" or "Torpedo" or "Elevator" or "Door":
  138. stop
  139. else:
  140. set {_MAGMA-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_magma})
  141. set {_BEACON-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world},{_beacon})
  142. #cancel event
  143. set {_hitBoxCoords::*} to (getHitBoxComposition({_hitboxCurrent}))
  144. loop {_hitBoxCoords::*}:
  145. set {_block} to loop-value-1.toBukkit({_world}).getBlock()
  146. if "%{_block}%" contains {_magma}:
  147. set {_MAGMA-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_magma})
  148. if "%{_block}%" contains {_beacon}:
  149. set {_BEACON-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_beacon})
  150. # set {_GEARSHIFT} to {_craft}.getGearShift()
  151. set {_SIZE-FACTOR} to {_size} * 0.0001
  152. message "(DBG) {@chargedMovecraft} > MAGMA COUNT %{_MAGMA-COUNT}%" to console
  153. message "(DBG) {@chargedMovecraft} > BEACON COUNT %{_BEACON-COUNT}%" to console
  154.  
  155. #(Number of magma blocks * 0.001) + (Number of blocks * 0.0001) * (gearshift * 0.25) = coal used per movement + (Number of beacons * 0.01)
  156. set {_fuel} to (({_MAGMA-COUNT} * 0.001) + (({_SIZE-FACTOR})) + ({_BEACON-COUNT} * 0.01))
  157. set {_fuel} to 1
  158. message "(DBG) {@chargedMovecraft} > Craft Size %{_size}%" to console
  159. message "(DBG) {@chargedMovecraft} > Craft Hitbox %{_hitboxCurrent}%" to console
  160. loop {_hitBoxCoords::*}:
  161. set {_block} to loop-value-1.toBukkit({_world}).getBlock()
  162. # message "(DBG) {@chargedMovecraft} > Craft Looped Block-Output %{_block}.getType()%" to console
  163. # message "(DBG) {@chargedMovecraft} > Craft Location Output %{_block}.getLocation()%" to console
  164. if "%{_block}%" contains "FURNACE" or "DROPPER":
  165. message "(DBG) {@chargedMovecraft} > Craft Fuel Input (Blocks) %{_block}%" to console
  166. message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
  167. if "%{_block}%" contains "FURNACE":
  168. message "(DBG) {@chargedMovecraft} > Craft Size Factor (Blocks | %{_varSizeFactor}%)" to console
  169. if {_block}'s inventory contains coal or charcoal:
  170. message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
  171. loop floor({_fuel}) times:
  172. if {_block}'s inventory contains coal or charcoal:
  173. remove coal or charcoal from {_block}'s inventory
  174. wait 1 tick
  175. #uncancel event
  176. stop
  177. else if {_block}'s inventory contains blaze powder or magma cream:
  178. message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
  179. loop floor({_fuel}) times:
  180. if {_block}'s inventory contains blaze powder or magma cream:
  181. remove blaze powder or magma cream from {_block}'s inventory
  182. wait 1 tick
  183. #uncancel event
  184. stop
  185. else if {_block}'s inventory contains coal blocks:
  186. message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
  187. loop floor({_fuel}) times:
  188. if {_block}'s inventory contains coal blocks:
  189. remove coal blocks from {_block}'s inventory
  190. wait 1 tick
  191. #uncancel event
  192. stop
  193. else if "%{_block}%" contains "DROPPER":
  194. if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
  195. if block 1 below {_block}.getLocation() is quartz pillar or chiseled quartz block:
  196. block 1 above {_block}.getLocation() is sea lantern
  197. message "(DBG) {@chargedMovecraft} > Craft Block Output (Blocks) %{_block}%" to console
  198. message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
  199. if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
  200. message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
  201. loop floor({_fuel}) times:
  202. wait 1 tick
  203. if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
  204. remove glowstone dust with name "&4&lResonant Crystal" from {_block}'s inventory
  205. #uncancel event
  206. stop
  207. if block 1 above {_block}.getLocation() is quartz pillar or chiseled quartz block:
  208. block 1 below {_block}.getLocation() is sea lantern
  209. message "(DBG) {@chargedMovecraft} > Craft Block Output (Blocks) %{_block}%" to console
  210. message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
  211. if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
  212. message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
  213. loop floor({_fuel}) times:
  214. wait 1 tick
  215. if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
  216. remove glowstone dust with name "&4&lResonant Crystal" from {_block}'s inventory
  217. #uncancel event
  218. stop
  219. else:
  220. event.setPlayingFailSound(false)
  221. event.setFailMessage("{@chargedMovecraft} > Unable to Move, Out of Fuel.")
  222. event.setCancelled(true)
Advertisement
Add Comment
Please, Sign In to add comment