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); 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())); VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -375,11 +375,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack); 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())); VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -376,11 +376,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack); 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())); VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -382,11 +382,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack); 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())); VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -432,11 +432,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack); 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())); VillagerType nmsVillagerType = BuiltInRegistries.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = BuiltInRegistries.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -427,11 +427,11 @@ public class ReflectionManager implements ReflectionManagerAbstract {
return CraftItemStack.asNMSCopy(itemStack); 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())); VillagerType nmsVillagerType = BuiltInRegistries.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
VillagerProfession nmsVillagerProfession = BuiltInRegistries.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.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) { public VillagerType getVillagerType(Villager.Type type) {

View File

@ -16,8 +16,15 @@ public class VillagerWatcher extends AbstractVillagerWatcher {
public VillagerWatcher(Disguise disguise) { public VillagerWatcher(Disguise disguise) {
super(disguise); super(disguise);
setLevel(5);
if (DisguiseConfig.isRandomDisguises()) { if (DisguiseConfig.isRandomDisguises()) {
setProfession(Profession.values()[DisguiseUtilities.random.nextInt(Profession.values().length)]); 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) @NmsAddedIn(NmsVersion.v1_14)
public void setLevel(int level) { 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) { public static Object getNmsVillagerData(VillagerData data) {
if (nmsReflection != null) { if (nmsReflection != null) {
return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession()); return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession(), data.getLevel());
} }
Object type = getVillagerType(data.getType()); Object type = getVillagerType(data.getType());

View File

@ -108,7 +108,7 @@ public interface ReflectionManagerAbstract {
Object getNmsItem(ItemStack itemStack); 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); Object getVillagerType(Villager.Type type);