Solved 1.12.2 Modifying Item Attributes

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

Status
Not open for further replies.

Flajakay

Active Member
Jul 29, 2018
55
1
8
Dnepr, Ukraine
How can I modify item attributes using skript-mirror?
[doublepost=1560507623,1560407153][/doublepost]Solved by myself.

Code:
import:
    java.lang.Object
    java.util.List
    java.util.Arrays
    java.util.ArrayList
    org.bukkit.inventory.ItemFlag
    org.bukkit.enchantments.Enchantment
    org.bukkit.inventory.meta.ItemMeta

import:

    java.lang.String
    java.util.regex.Pattern

    org.bukkit.Bukkit
    org.bukkit.entity.Entity
    org.bukkit.inventory.ItemStack

    ch.njol.skript.Skript
    ch.njol.skript.util.Version
    ch.njol.skript.aliases.ItemType


option nms-version:
    get:
        return Bukkit.getServer().getClass().getPackage().getName().split("\.")[3]


import:
 
    org.bukkit.craftbukkit.{@nms-version}.inventory.CraftItemStack
    org.bukkit.craftbukkit.{@nms-version}.block.CraftBlock
 
    net.minecraft.server.{@nms-version}.ItemStack as NMSItemStack
    net.minecraft.server.{@nms-version}.NBTTagCompound
    net.minecraft.server.{@nms-version}.NBTTagList
    net.minecraft.server.{@nms-version}.MojangsonParser
    net.minecraft.server.{@nms-version}.BlockPosition
    net.minecraft.server.{@nms-version}.NBTTagString
    net.minecraft.server.{@nms-version}.Item
    net.minecraft.server.{@nms-version}.Items 

local itemtypes property item NBT:
  get:
    set {_item} to CraftItemStack.asNMSCopy(expression-1.getRandom())
    set {_nbt} to {_item}.getTag() if {_item}.hasTag() is true, else new NBTTagCompound()
    return {_nbt}

  add string:
    set {_appended-nbt} to MojangsonParser.parse(change value)
 
    loop expressions-1:
      set {_item} to CraftItemStack.asNMSCopy(loop-value.getRandom())
 
      if {_appended-nbt} is set:

        if {_item}.hasTag() is true:
          {_item}.a({_appended-nbt})
        else:
          {_item}.setTag({_appended-nbt})

        set {_meta} to CraftItemStack.getItemMeta({_item})
        loop-value.setItemMeta({_meta})
    
  remove string:
    set {_removed-nbt} to MojangsonParser.parse(change value)
 
    loop expressions-1:
      set {_item} to CraftItemStack.asNMSCopy(expression-1.getRandom())

      if {_removed-nbt} is set:
        {_item}.hasTag() is true
        {_item}.remove({_removed-nbt})

        set {_meta} to CraftItemStack.getItemMeta({_item})
        loop-value.setItemMeta({_meta})

  set string:
    set {_new-nbt} to MojangsonParser.parse(change value)
 
    loop expressions-1:
      set {_item} to CraftItemStack.asNMSCopy(loop-value.getRandom())

      if {_new-nbt} is set:
        {_item}.setTag({_new-nbt})

        set {_meta} to CraftItemStack.getItemMeta({_item})
        loop-value.setItemMeta({_meta})


expression %itemtype% with nbt %string%:
  get:
    set {_item} to expression-1
    set item nbt of {_item} to expression-2
    return {_item}
 
command /adt:
    trigger:
        set player's tool to player's tool with nbt "{AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:999999,AttributeName:generic.attackDamage,Name:Barrier}]}"
 
Status
Not open for further replies.