Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- options:
- radon: emerald named "&c&lCrystallized Radon"
- resonant_crystal: glowstone dust with name "&4&lResonant Crystal"
- minY: 10
- maxY: 250
- t1Fuel: coal or charcoal
- t2Fuel: blaze powder or magma cream
- t3Fuel: coal block
- fuelBlock: furnace, dropper
- craftMan: CraftManager.getInstance()
- iredstone_cable: mushroom_stem[east=true;down=true;west=true]
- composite_block: mushroom_stem[down=true;south=true]
- chargedMovecraft: &6[&fMovecraft&6]&f
- import:
- #Movecraft Hooks
- net.countercraft.movecraft.events.CraftTranslateEvent
- net.countercraft.movecraft.events.CraftPreTranslateEvent
- net.countercraft.movecraft.events.CraftDetectEvent
- net.countercraft.movecraft.events.CraftCollisionEvent
- net.countercraft.movecraft.events.CraftEvent
- net.countercraft.movecraft.events.CraftRotateEvent
- net.countercraft.movecraft.events.CraftPilotEvent
- net.countercraft.movecraft.events.FuelBurnEvent
- net.countercraft.movecraft.events.CraftReleaseEvent
- net.countercraft.movecraft.craft.CraftManager
- net.countercraft.movecraft.craft.CraftType
- net.countercraft.movecraft.craft.Craft
- net.countercraft.movecraft.utils.HitBox
- net.countercraft.movecraft.utils.BitmapHitBox
- net.countercraft.movecraft.MovecraftLocation
- net.countercraft.movecraft.Movecraft
- #Bukkit Hooks
- org.bukkit.Bukkit
- org.bukkit.inventory.Inventory
- org.bukkit.inventory.FurnaceInventory
- org.bukkit.inventory.InventoryHolder
- org.bukkit.inventory.ItemStack as ItemStack
- org.bukkit.inventory.meta.ItemMeta as ItemMeta
- org.bukkit.block.Container
- org.bukkit.block.BlockState
- org.bukkit.event.EventHandler
- org.bukkit.event.Listener
- org.bukkit.block.Block
- org.bukkit.block.Dropper
- org.bukkit.block.Dispenser
- org.bukkit.Material
- org.bukkit.Location
- org.bukkit.event.player.PlayerInteractEvent
- org.bukkit.event.block.Action
- org.bukkit.World
- #Java Types
- java.util.HashMap
- java.util.Map
- java.lang.String
- java.lang.Integer
- java.lang.Boolean
- java.lang.Long
- java.lang.Double
- uwu.smsgamer.spygotutils.SpigotLoader
- #Bukkit.getScheduler().runTask(SpigotLoader.getInstance(), """your code here""")
- #for (MovecraftLocation l : craft.getHitBox()) {
- # if (l.toBukkit(craft.getW()).getBlock().getType() == Material.DROPPER) {
- # // stuff
- # }
- #}
- #FUEL TODO
- #MAGMA BASED
- #BEACON COUNT
- #GEARSHIFT
- #(Number of magma blocks * 0.001) + (Number of blocks * 0.0001) * (gearshift * 1.2) = coal used per movement + (Number of beacons * 0.01)
- function getHitBoxComposition(hitbox: object) :: objects:
- set {_blocks::*} to (...{_hitbox})
- message "(DBG) {@chargedMovecraft} > Hitbox Composition %{_blocks::*}%" to console
- return {_blocks::*}
- function getCraftFromPilot(player: object) :: object:
- return {@craftMan}.getCraftByPlayer({_player})
- function getPlayerFromCraft(craft: object) :: player:
- return {_craft}.getNotificationPlayer()
- function getBlockInHitBox(hitbox: object, world: world, block: material) :: blocks:
- loop ...{_hitbox}:
- set {_loopBlockLoc} to loop-value-1
- set {_blockOut} to {_loopBlockLoc}.toBukkit({_world}).getBlock()
- #message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getType())%" to console
- if {_block}'s inventory contains {_blockOut}:
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getType())%" to console
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getLocation())%, true" to console
- add {_blockOut} to {_blockIter::*}
- return ({_blockIter::*})
- function getBlockCountInHitBox(hitbox: object, world: world, block: material) :: number:
- set {_number} to 0
- loop ...{_hitbox}:
- set {_loopBlockLoc} to loop-value-1
- set {_blockOut} to {_loopBlockLoc}.toBukkit({_world}).getBlock()
- if {_block}.getType() contains {_blockOut}:
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getBlock().getType())%" to console
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getBlock().getLocation())%, true" to console
- add 1 to {_number}
- return ({_number})
- function getBlockListInHitBox(hitbox: object, world: world, block: materials) :: blocks:
- loop ...{_hitbox}:
- set {_loopBlockLoc} to loop-value-1
- set {_blockOut} to loop-value-1.toBukkit({_world})
- if {_block::*} contains {_blockOut}.getBlock():
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Block - Found %({_blockOut}.getBlock().getType())%" to console
- message "(DBG) {@chargedMovecraft} > Craft Hitbox Coords - Found %({_blockOut}.getBlock().getLocation())%, true" to console
- add {_blockOut}.getBlock() to {_blockIter::*}
- return ({_blockIter::*})
- on FuelBurnEvent:
- set {_craft} to getCraftFromPilot(getPlayerFromCraft(event.getCraft()))
- set {_craftType} to {_craft}.getType()
- set {_craftTypeName} to {_craftType}.getCraftName()
- cancel event
- on CraftTranslateEvent:
- set {_craft} to getCraftFromPilot(getPlayerFromCraft(event.getCraft()))
- set {_craftType} to {_craft}.getType()
- set {_craftTypeName} to {_craftType}.getCraftName()
- set {_world} to {_craft}.getWorld()
- set {_worldName} to {_craft}.getWorld().getName()
- set {_hitboxCurrent} to event.getNewHitBox()
- set {_size} to {_hitboxCurrent}.size()
- set {_magma} to "MAGMA_BLOCK"
- set {_beacon} to "BEACON"
- if {_craftTypeName} contains "Turret" or "Torpedo" or "Elevator" or "Door":
- stop
- else:
- set {_MAGMA-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_magma})
- set {_BEACON-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world},{_beacon})
- #cancel event
- set {_hitBoxCoords::*} to (getHitBoxComposition({_hitboxCurrent}))
- loop {_hitBoxCoords::*}:
- set {_block} to loop-value-1.toBukkit({_world}).getBlock()
- if "%{_block}%" contains {_magma}:
- set {_MAGMA-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_magma})
- if "%{_block}%" contains {_beacon}:
- set {_BEACON-COUNT} to getBlockCountInHitBox({_hitboxCurrent},{_world}, {_beacon})
- # set {_GEARSHIFT} to {_craft}.getGearShift()
- set {_SIZE-FACTOR} to {_size} * 0.0001
- message "(DBG) {@chargedMovecraft} > MAGMA COUNT %{_MAGMA-COUNT}%" to console
- message "(DBG) {@chargedMovecraft} > BEACON COUNT %{_BEACON-COUNT}%" to console
- #(Number of magma blocks * 0.001) + (Number of blocks * 0.0001) * (gearshift * 0.25) = coal used per movement + (Number of beacons * 0.01)
- set {_fuel} to (({_MAGMA-COUNT} * 0.001) + (({_SIZE-FACTOR})) + ({_BEACON-COUNT} * 0.01))
- set {_fuel} to 1
- message "(DBG) {@chargedMovecraft} > Craft Size %{_size}%" to console
- message "(DBG) {@chargedMovecraft} > Craft Hitbox %{_hitboxCurrent}%" to console
- loop {_hitBoxCoords::*}:
- set {_block} to loop-value-1.toBukkit({_world}).getBlock()
- # message "(DBG) {@chargedMovecraft} > Craft Looped Block-Output %{_block}.getType()%" to console
- # message "(DBG) {@chargedMovecraft} > Craft Location Output %{_block}.getLocation()%" to console
- if "%{_block}%" contains "FURNACE" or "DROPPER":
- message "(DBG) {@chargedMovecraft} > Craft Fuel Input (Blocks) %{_block}%" to console
- message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
- if "%{_block}%" contains "FURNACE":
- message "(DBG) {@chargedMovecraft} > Craft Size Factor (Blocks | %{_varSizeFactor}%)" to console
- if {_block}'s inventory contains coal or charcoal:
- message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
- loop floor({_fuel}) times:
- if {_block}'s inventory contains coal or charcoal:
- remove coal or charcoal from {_block}'s inventory
- wait 1 tick
- #uncancel event
- stop
- else if {_block}'s inventory contains blaze powder or magma cream:
- message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
- loop floor({_fuel}) times:
- if {_block}'s inventory contains blaze powder or magma cream:
- remove blaze powder or magma cream from {_block}'s inventory
- wait 1 tick
- #uncancel event
- stop
- else if {_block}'s inventory contains coal blocks:
- message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
- loop floor({_fuel}) times:
- if {_block}'s inventory contains coal blocks:
- remove coal blocks from {_block}'s inventory
- wait 1 tick
- #uncancel event
- stop
- else if "%{_block}%" contains "DROPPER":
- if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
- if block 1 below {_block}.getLocation() is quartz pillar or chiseled quartz block:
- block 1 above {_block}.getLocation() is sea lantern
- message "(DBG) {@chargedMovecraft} > Craft Block Output (Blocks) %{_block}%" to console
- message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
- if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
- message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
- loop floor({_fuel}) times:
- wait 1 tick
- if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
- remove glowstone dust with name "&4&lResonant Crystal" from {_block}'s inventory
- #uncancel event
- stop
- if block 1 above {_block}.getLocation() is quartz pillar or chiseled quartz block:
- block 1 below {_block}.getLocation() is sea lantern
- message "(DBG) {@chargedMovecraft} > Craft Block Output (Blocks) %{_block}%" to console
- message "(DBG) {@chargedMovecraft} > Craft FuelBlock Found" to console
- if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
- message "(DBG) {@chargedMovecraft} > Craft Fuel Cost (Blocks | %{_fuel}%)" to console
- loop floor({_fuel}) times:
- wait 1 tick
- if {_block}'s inventory contains glowstone dust with name "&4&lResonant Crystal":
- remove glowstone dust with name "&4&lResonant Crystal" from {_block}'s inventory
- #uncancel event
- stop
- else:
- event.setPlayingFailSound(false)
- event.setFailMessage("{@chargedMovecraft} > Unable to Move, Out of Fuel.")
- event.setCancelled(true)
Advertisement
Add Comment
Please, Sign In to add comment