Skip to content

Commit

Permalink
Should fix 1.7 Heads bug, but may spam console in errors
Browse files Browse the repository at this point in the history
i cant do much about the errors tho so i cant help it
  • Loading branch information
AndyReckt committed Jan 16, 2023
1 parent a136435 commit 11d55b1
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.andyreckt.holiday.bukkit.server.nms;

import me.andyreckt.holiday.bukkit.util.item.ItemBuilder;
import me.andyreckt.holiday.core.user.disguise.Disguise;
import org.bukkit.entity.Player;

Expand All @@ -20,4 +21,6 @@ public interface INMS {
void disguise(Disguise disguise);

void unDisguise(Disguise disguise);

ItemBuilder insertSkinPropertyFromHash(String hash, ItemBuilder builder);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@

import lombok.SneakyThrows;
import me.andyreckt.holiday.bukkit.server.nms.INMS;
import me.andyreckt.holiday.bukkit.util.item.ItemBuilder;
import me.andyreckt.holiday.core.user.disguise.Disguise;
import me.andyreckt.holiday.bukkit.util.other.Tasks;
import me.andyreckt.holiday.core.util.http.Skin;
import net.minecraft.server.v1_7_R4.*;
import net.minecraft.util.com.mojang.authlib.GameProfile;
import net.minecraft.util.com.mojang.authlib.properties.Property;
import net.minecraft.util.com.mojang.authlib.properties.PropertyMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.SkullMeta;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
Expand Down Expand Up @@ -165,4 +168,24 @@ private void sendPlayerUpdate(Player player, String name) {
});
}

@Override
public ItemBuilder insertSkinPropertyFromHash(String hash, ItemBuilder builder) {
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
PropertyMap propertyMap = profile.getProperties();
propertyMap.put("textures", new Property("textures", hash));
SkullMeta skullMeta = (SkullMeta) builder.item.getItemMeta();
Class<?> c_skullMeta = skullMeta.getClass();
try {
Field f_profile = c_skullMeta.getDeclaredField("profile");
f_profile.setAccessible(true);
f_profile.set(skullMeta, profile);
f_profile.setAccessible(false);
builder.item.setItemMeta(skullMeta);
return builder;
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
return builder;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
import lombok.SneakyThrows;
import me.andyreckt.holiday.bukkit.server.nms.INMS;
import me.andyreckt.holiday.bukkit.util.item.ItemBuilder;
import me.andyreckt.holiday.core.user.disguise.Disguise;
import me.andyreckt.holiday.bukkit.util.other.Tasks;
import me.andyreckt.holiday.core.util.http.Skin;
Expand All @@ -13,6 +15,7 @@
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.SkullMeta;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
Expand Down Expand Up @@ -168,5 +171,23 @@ private void sendPlayerUpdate(Player player, String name) {
});
}


@Override
public ItemBuilder insertSkinPropertyFromHash(String hash, ItemBuilder builder) {
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
PropertyMap propertyMap = profile.getProperties();
propertyMap.put("textures", new Property("textures", hash));
SkullMeta skullMeta = (SkullMeta) builder.item.getItemMeta();
Class<?> c_skullMeta = skullMeta.getClass();
try {
Field f_profile = c_skullMeta.getDeclaredField("profile");
f_profile.setAccessible(true);
f_profile.set(skullMeta, profile);
f_profile.setAccessible(false);
builder.item.setItemMeta(skullMeta);
return builder;
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
return builder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@
package me.andyreckt.holiday.bukkit.util.item;

import com.google.gson.Gson;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
import me.andyreckt.holiday.bukkit.Holiday;
import me.andyreckt.holiday.bukkit.server.nms.impl.NMS_v1_8_R3;
import me.andyreckt.holiday.bukkit.util.text.CC;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
Expand All @@ -44,7 +43,7 @@
*/
public class ItemBuilder {

private ItemStack item;
public ItemStack item;
private ItemMeta meta;
private Material material = Material.STONE;
private int amount = 1;
Expand Down Expand Up @@ -107,7 +106,9 @@ public ItemBuilder addAllItemFlags() {
return new ItemBuilder(this.item);
}


private boolean is1_8() {
return Holiday.getInstance().getNms() instanceof NMS_v1_8_R3;
}

/** Initalizes the ItemBuilder with a {@link ItemStack} */
public ItemBuilder(ItemStack item) {
Expand All @@ -124,8 +125,7 @@ public ItemBuilder(ItemStack item) {
this.displayname = item.getItemMeta().getDisplayName();
if(item.hasItemMeta())
this.lore = item.getItemMeta().getLore();
if(item.hasItemMeta())
flags.addAll(item.getItemMeta().getItemFlags());
if(item.hasItemMeta() && is1_8()) flags.addAll(item.getItemMeta().getItemFlags());
}

/** Initalizes the ItemBuilder with a {@link FileConfiguration} ItemStack in Path */
Expand Down Expand Up @@ -371,22 +371,7 @@ public ItemBuilder owner(String user) {
* @param hash the head hash
*/
public ItemBuilder texture(String hash) {
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
PropertyMap propertyMap = profile.getProperties();
propertyMap.put("textures", new Property("textures", hash));
SkullMeta skullMeta = (SkullMeta) this.item.getItemMeta();
Class<?> c_skullMeta = skullMeta.getClass();
try {
Field f_profile = c_skullMeta.getDeclaredField("profile");
f_profile.setAccessible(true);
f_profile.set(skullMeta, profile);
f_profile.setAccessible(false);
this.item.setItemMeta(skullMeta);
return this;
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
return this;
return Holiday.getInstance().getNms().insertSkinPropertyFromHash(hash, this);
}


Expand Down

0 comments on commit 11d55b1

Please sign in to comment.