Skip to content

Commit

Permalink
Moved method to set item unbreakable to VersionUtils.
Browse files Browse the repository at this point in the history
  • Loading branch information
PdeBot committed Apr 23, 2020
1 parent 21f240e commit 83403ed
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.gmail.val59000mc.exceptions.UhcPlayerNotOnlineException;
import com.gmail.val59000mc.players.UhcPlayer;
import com.gmail.val59000mc.scenarios.ScenarioListener;
import com.gmail.val59000mc.utils.VersionUtils;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
Expand All @@ -18,20 +19,21 @@ public void onGameStarted(UhcStartedEvent e){
ItemStack rod = new ItemStack(Material.FISHING_ROD);
rod.addUnsafeEnchantment(Enchantment.LURE, 8);
rod.addUnsafeEnchantment(Enchantment.LUCK, 255);

ItemMeta meta = rod.getItemMeta();
// Set item unbreakable code change in 1.15 and older versions
if(UhcCore.getVersion() < 15){
meta.spigot().setUnbreakable(true);
}else{
meta.setUnbreakable(true);
}
VersionUtils.getVersionUtils().setItemUnbreakable(meta, true);
rod.setItemMeta(meta);

ItemStack anvils = new ItemStack(Material.ANVIL, 64);

for (UhcPlayer uhcPlayer : e.getPlayersManager().getOnlinePlayingPlayers()){
try {
// Give the rod
uhcPlayer.getPlayer().getInventory().addItem(rod);

// Give player 10000 xl levels
uhcPlayer.getPlayer().setLevel(10000);

// Give player 64 anvils
uhcPlayer.getPlayer().getInventory().addItem(anvils);
}catch (UhcPlayerNotOnlineException ex){
Expand All @@ -40,4 +42,4 @@ public void onGameStarted(UhcStartedEvent e){
}
}

}
}
2 changes: 2 additions & 0 deletions src/main/java/com/gmail/val59000mc/utils/VersionUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,6 @@ public static VersionUtils getVersionUtils(){

public abstract ItemMeta applySuspiciousStewEffects(ItemMeta meta, JsonArray effects) throws ParseException;

public abstract void setItemUnbreakable(ItemMeta meta, boolean b);

}
Original file line number Diff line number Diff line change
Expand Up @@ -330,4 +330,9 @@ public ItemMeta applySuspiciousStewEffects(ItemMeta meta, JsonArray effects){
return meta;
}

@Override
public void setItemUnbreakable(ItemMeta meta, boolean b){
meta.setUnbreakable(b);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -315,4 +315,9 @@ public ItemMeta applySuspiciousStewEffects(ItemMeta meta, JsonArray effects) thr
return meta;
}

@Override
public void setItemUnbreakable(ItemMeta meta, boolean b){
meta.setUnbreakable(b);
}

}
16 changes: 16 additions & 0 deletions src/main/java/com/gmail/val59000mc/utils/VersionUtils_1_8.java
Original file line number Diff line number Diff line change
Expand Up @@ -317,4 +317,20 @@ public ItemMeta applySuspiciousStewEffects(ItemMeta meta, JsonArray effects){
return meta;
}

@Override
public void setItemUnbreakable(ItemMeta meta, boolean b){
if (!SpigotUtils.isSpigotServer()){
return; // Unable to set item as unbreakable on a none spigot server.
}

try {
Method spigot = NMSUtils.getMethod(meta.getClass(), "spigot");
Object spigotInstance = spigot.invoke(meta);
Method setUnbreakable = NMSUtils.getMethod(spigotInstance.getClass(), "setUnbreakable", boolean.class);
setUnbreakable.invoke(spigotInstance, b);
}catch (ReflectiveOperationException ex){
ex.printStackTrace();
}
}

}

0 comments on commit 83403ed

Please sign in to comment.