use of net.minecraft.entity.merchant.villager.VillagerProfession in project Arclight by IzzelAliz.
the class AssignProfessionTaskMixin method startExecuting.
/*
@SuppressWarnings("UnresolvedMixinReference")
@Redirect(method = "*(Lnet/minecraft/entity/merchant/villager/VillagerEntity;Lnet/minecraft/world/server/ServerWorld;Lnet/minecraft/entity/merchant/villager/VillagerProfession;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/merchant/villager/VillagerEntity;setVillagerData(Lnet/minecraft/entity/merchant/villager/VillagerData;)V"))
private void arclight$careerChangeHook(VillagerEntity villagerEntity, VillagerData villagerData) {
VillagerProfession profession = villagerData.getProfession();
VillagerCareerChangeEvent event = CraftEventFactory.callVillagerCareerChangeEvent(villagerEntity, CraftVillager.nmsToBukkitProfession(profession), VillagerCareerChangeEvent.ChangeReason.EMPLOYED);
if (!event.isCancelled()) {
VillagerData newData = villagerEntity.getVillagerData().withProfession(CraftVillager.bukkitToNmsProfession(event.getProfession()));
villagerEntity.setVillagerData(newData);
}
}*/
/**
* @author IzzelAliz
* @reason
*/
@Overwrite
protected void startExecuting(ServerWorld worldIn, VillagerEntity entityIn, long gameTimeIn) {
GlobalPos globalpos = entityIn.getBrain().getMemory(MemoryModuleType.JOB_SITE).get();
MinecraftServer minecraftserver = worldIn.getServer();
minecraftserver.getWorld(globalpos.getDimension()).getPointOfInterestManager().getType(globalpos.getPos()).ifPresent((p_220390_2_) -> {
Registry.VILLAGER_PROFESSION.stream().filter((p_220389_1_) -> {
return p_220389_1_.getPointOfInterest() == p_220390_2_;
}).findFirst().ifPresent((p_220388_2_) -> {
VillagerData villagerData = entityIn.getVillagerData().withProfession(p_220388_2_);
VillagerProfession profession = villagerData.getProfession();
VillagerCareerChangeEvent event = CraftEventFactory.callVillagerCareerChangeEvent(entityIn, CraftVillager.nmsToBukkitProfession(profession), VillagerCareerChangeEvent.ChangeReason.EMPLOYED);
if (!event.isCancelled()) {
VillagerData newData = entityIn.getVillagerData().withProfession(CraftVillager.bukkitToNmsProfession(event.getProfession()));
entityIn.setVillagerData(newData);
entityIn.resetBrain(worldIn);
}
});
});
}
use of net.minecraft.entity.merchant.villager.VillagerProfession in project Arclight by IzzelAliz.
the class BukkitRegistry method loadVillagerProfessions.
private static void loadVillagerProfessions() {
int i = Villager.Profession.values().length;
List<Villager.Profession> newTypes = new ArrayList<>();
Field key = Arrays.stream(Villager.Profession.class.getDeclaredFields()).filter(it -> it.getName().equals("key")).findAny().orElse(null);
long keyOffset = Unsafe.objectFieldOffset(key);
for (VillagerProfession villagerProfession : ForgeRegistries.PROFESSIONS) {
String name = ResourceLocationUtil.standardize(villagerProfession.getRegistryName());
Villager.Profession profession;
try {
profession = Villager.Profession.valueOf(name);
} catch (Throwable t) {
profession = null;
}
if (profession == null) {
profession = EnumHelper.makeEnum(Villager.Profession.class, name, i++, ImmutableList.of(), ImmutableList.of());
newTypes.add(profession);
Unsafe.putObject(profession, keyOffset, CraftNamespacedKey.fromMinecraft(villagerProfession.getRegistryName()));
ArclightMod.LOGGER.debug("Registered {} as villager profession {}", villagerProfession.getRegistryName(), profession);
}
}
EnumHelper.addEnums(Villager.Profession.class, newTypes);
ArclightMod.LOGGER.info("registry.villager-profession", newTypes.size());
}
use of net.minecraft.entity.merchant.villager.VillagerProfession in project Werewolves by TeamLapen.
the class ModVillage method registerProfessions.
static void registerProfessions(IForgeRegistry<VillagerProfession> registry) {
VillagerProfession werewolf_expert = new FactionVillagerProfession("werewolf_expert", werewolf_faction, ImmutableSet.of(), ImmutableSet.of(), null) {
@Override
public IFaction<?> getFaction() {
return WReference.WEREWOLF_FACTION;
}
}.setRegistryName(REFERENCE.MODID, "werewolf_expert");
registry.register(werewolf_expert);
VillagerTrades.TRADES.computeIfAbsent(werewolf_expert, trades -> new Int2ObjectOpenHashMap<>()).putAll(getWerewolfTrades());
}
Aggregations