Merge pull request #53 from TeamHRLive/development

Fix island settings saving, heads in GUI menus, default island schematic
This commit is contained in:
ceze 2024-09-06 11:02:36 +02:00 committed by GitHub
commit 774e5f174f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 38 additions and 15 deletions

View File

@ -934,7 +934,7 @@ public class Island {
for (Entry<IslandRole, List<IslandPermission>> entry : this.islandPermissions.entrySet()) {
for (IslandPermission permission : entry.getValue()) {
configLoad.set("Settings." + entry.getKey().getFriendlyName() + "." + permission.getPermission().getName(), permission.getStatus());
configLoad.set("Settings." + entry.getKey().getFriendlyName().toUpperCase(Locale.US) + "." + permission.getPermission().getName(), permission.getStatus());
}
}

View File

@ -335,13 +335,23 @@ public class BlockListeners implements Listener {
isObstructing = true;
}
// Specific check for beds
if (!isObstructing && event.getBlock().getState().getData() instanceof org.bukkit.material.Bed) {
// Specific check for beds using getBlockData() for versions 1.13 and above
if (!isObstructing && event.getBlock().getBlockData() instanceof org.bukkit.block.data.type.Bed && MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
org.bukkit.block.data.type.Bed bedData = (org.bukkit.block.data.type.Bed) event.getBlock().getBlockData();
BlockFace bedDirection = bedData.getFacing();
org.bukkit.block.Block bedBlock = block.getRelative(bedDirection);
if (LocationUtil.isLocationAffectingIslandSpawn(bedBlock.getLocation(), island, world)) {
isObstructing = true;
}
} // Specific check for beds using getBlockData() for versions 1.12 and below
else if (MajorServerVersion.isServerVersionAtOrBelow(MajorServerVersion.V1_12)) {
if (!isObstructing && event.getBlock().getState().getData() instanceof org.bukkit.material.Bed){
BlockFace bedDirection = ((org.bukkit.material.Bed) event.getBlock().getState().getData()).getFacing();
org.bukkit.block.Block bedBlock = block.getRelative(bedDirection);
if (LocationUtil.isLocationAffectingIslandSpawn(bedBlock.getLocation(), island, world)) {
isObstructing = true;
}
}
}
if (isObstructing) {

View File

@ -582,9 +582,9 @@ public class EntityListeners implements Listener {
EntityEquipment equipment = livingEntity.getEquipment();
if (equipment != null) {
for (ItemStack item : event.getDrops()) {
if (item.equals(equipment.getHelmet()) || item.equals(equipment.getChestplate())
|| item.equals(equipment.getLeggings()) || item.equals(equipment.getBoots())
|| item.equals(equipment.getItemInMainHand()) || item.equals(equipment.getItemInOffHand())) {
if (item.isSimilar(equipment.getHelmet()) || item.isSimilar(equipment.getChestplate())
|| item.isSimilar(equipment.getLeggings()) || item.isSimilar(equipment.getBoots())
|| item.isSimilar(equipment.getItemInMainHand()) || item.isSimilar(equipment.getItemInOffHand())) {
dontMultiply.add(item);
}
}
@ -607,12 +607,18 @@ public class EntityListeners implements Listener {
}
}
for (ItemStack is : event.getDrops()) {
for (ItemStack is2 : dontMultiply) {
if (!is2.isSimilar(is)) {
livingEntity.getWorld().dropItemNaturally(livingEntity.getLocation(), is);
// Only drop items that are not in the dontMultiply set
for (ItemStack item : event.getDrops()) {
boolean shouldDrop = true;
for (ItemStack dontMultiplyItem : dontMultiply) {
if (item.isSimilar(dontMultiplyItem)) {
shouldDrop = false;
break;
}
}
if (shouldDrop) {
livingEntity.getWorld().dropItemNaturally(livingEntity.getLocation(), item);
}
}
}
}

View File

@ -1,5 +1,6 @@
package com.craftaro.skyblock.menus;
import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.NumberUtils;
import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.skyblock.SkyBlock;
@ -11,9 +12,12 @@ import com.craftaro.skyblock.utils.player.OfflinePlayer;
import com.craftaro.skyblock.visit.Visit;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import com.craftaro.third_party.com.cryptomorin.xseries.profiles.builder.XSkull;
import com.craftaro.third_party.com.cryptomorin.xseries.profiles.objects.Profileable;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Skull;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
@ -290,9 +294,9 @@ public class Leaderboard {
ItemStack phead;
if (playerTexture.length >= 1 && playerTexture[0] != null) {
phead = SkullItemCreator.byTextureValue(playerTexture[0]);
phead = XSkull.createItem().profile(new Profileable.PlayerProfileable(player)).apply();
} else {
phead = SkullItemCreator.byUuid(visit.getOwnerUUID());
phead = XSkull.createItem().profile(new Profileable.PlayerProfileable(player)).apply();
}
nInv.addItem(

View File

@ -190,6 +190,7 @@ public class Levelling {
long value = testIslandMaterials.get(materialName);
Optional<XMaterial> materials = CompatibleMaterial.getMaterial(materialName);
if (!materials.isPresent()) {
continue;
}

View File

@ -15,6 +15,8 @@ import com.craftaro.skyblock.playerdata.PlayerDataManager;
import com.craftaro.skyblock.sound.SoundManager;
import com.craftaro.skyblock.utils.item.nInventoryUtil;
import com.craftaro.skyblock.utils.player.OfflinePlayer;
import com.craftaro.third_party.com.cryptomorin.xseries.profiles.builder.XSkull;
import com.craftaro.third_party.com.cryptomorin.xseries.profiles.objects.Profileable;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -228,9 +230,9 @@ public class Ownership {
ItemStack phead;
if (playerTexture.length >= 1 && playerTexture[0] != null) {
phead = SkullItemCreator.byTextureValue(playerTexture[0]);
phead = XSkull.createItem().profile(new Profileable.PlayerProfileable(player)).apply();
} else {
phead = SkullItemCreator.byUuid(originalOwnerUUID);
phead = XSkull.createItem().profile(new Profileable.PlayerProfileable(player)).apply();
}
nInv.addItem(nInv.createItem(XMaterial.OAK_FENCE_GATE.parseItem(),

File diff suppressed because one or more lines are too long