Fix villager level not working, added villager biome & level randomization

This commit is contained in:
libraryaddict 2023-05-20 16:58:06 +12:00
parent 32d1b7a972
commit a1dde894f7
9 changed files with 22 additions and 15 deletions

View File

@ -375,11 +375,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -375,11 +375,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -376,11 +376,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -382,11 +382,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -432,11 +432,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = BuiltInRegistries.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = BuiltInRegistries.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -427,11 +427,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack);
}
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level) {
VillagerType nmsVillagerType = BuiltInRegistries.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = BuiltInRegistries.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, level);
}
public VillagerType getVillagerType(Villager.Type type) {

View File

@ -16,8 +16,15 @@ public class VillagerWatcher extends AbstractVillagerWatcher {
public VillagerWatcher(Disguise disguise) {
super(disguise);
setLevel(5);
if (DisguiseConfig.isRandomDisguises()) {
setProfession(Profession.values()[DisguiseUtilities.random.nextInt(Profession.values().length)]);
if (NmsVersion.v1_14.isSupported()) {
setBiome(Villager.Type.values()[DisguiseUtilities.random.nextInt(Villager.Type.values().length)]);
setLevel(DisguiseUtilities.random.nextInt(5) + 1);
}
}
}
@ -79,6 +86,6 @@ public class VillagerWatcher extends AbstractVillagerWatcher {
@NmsAddedIn(NmsVersion.v1_14)
public void setLevel(int level) {
setVillagerData(new VillagerData(getType(), getProfession(), level));
setVillagerData(new VillagerData(getType(), getProfession(), Math.max(1, Math.min(5, level))));
}
}

View File

@ -1693,7 +1693,7 @@ public class ReflectionManager {
public static Object getNmsVillagerData(VillagerData data) {
if (nmsReflection != null) {
return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession());
return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession(), data.getLevel());
}
Object type = getVillagerType(data.getType());

View File

@ -108,7 +108,7 @@ public interface ReflectionManagerAbstract {
Object getNmsItem(ItemStack itemStack);
Object getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession);
Object getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession, int level);
Object getVillagerType(Villager.Type type);