filler

Trapper Crossbow

Box enemies up and taunt them

← Back to main

Code Block:


function check_item(item, item_name, custom_name, customId){
  return (
    item &&
    item.name === item_name &&
    item.attributes.customDisplayName === custom_name &&
    item.attributes.customAttributes.weaponId === customId
  );
}

api.giveItem(myId, "Gold Crossbow", 1, {customDisplayName: "Trapper Crossbow",customDescription: "Traps enemies on hit", customAttributes: {weaponId: 1, "enchantmentTier":"Tier 5", enchantments: {"Arrow Speed":2, "Arrow Damage":1}}})

function onPlayerDamagingOtherPlayerTrap(aId, eId, damage, item){
  pos = api.getPosition(eId)
  pos1 = [pos[0] - 3,pos[1],pos[2] - 3]
  pos2 = [pos[0] + 3,pos[1]+3,pos[2] + 3]
  if(item !== "Arrow"){return}
  if(api.getHeldItem(aId).name === "Arrow"){return}
  if(api.getEffects(aId).includes("Trap")){
    api.removeEffect(aId,"Trap")
    api.applyEffect(aId, "Trap Cooldown", 45000, {icon: "Net"})
    api.setPosition(eId, [pos[0],pos[1]+1,pos[2]])
    api.applyEffect(eId, "Slowness", 5000, {inbuiltLevel: 2})
    api.setBlockWalls(pos1, pos2, "Extra Compressed Messy Stone", true, true)
    api.setBlockRect([pos[0] - 3,pos[1]+1,pos[2] - 3], [pos[0] + 3,pos[1]+1,pos[2] + 3], "Air")
    api.setBlockRect([pos[0] - 2,pos[1]+1,pos[2] - 2], [pos[0] + 2,pos[1]+1,pos[2] + 2], "Stone Spikes")
  }
}

function shotTrap(aId){
  held = api.getHeldItem(aId)
  if(check_item(held,"Gold Crossbow","Trapper Crossbow",1) && !api.getEffects(aId).includes("Trap Cooldown")){
    api.applyEffect(aId, "Trap", 4000, {icon: "Brown Wool"})
  } else {
    return
  }
}
      

World Code:




// Handle attack logic
onPlayerDamagingOtherPlayer = (attackingPlayer, damagedPlayer, damageDealt, withItem, bodyPartHit, damagerDbId)=> {
  onPlayerDamagingOtherPlayerTrap(attackingPlayer, damagedPlayer, damageDealt, withItem)
};

onPlayerUsedThrowable = (playerId, throwableName, thrownEntityId) => {
  shotTrap(playerId)
}