diff --git a/src/main/java/com/volmit/iris/core/service/VillageSVC.java b/src/main/java/com/volmit/iris/core/service/VillageSVC.java index 9c567257c..e40d41d9f 100644 --- a/src/main/java/com/volmit/iris/core/service/VillageSVC.java +++ b/src/main/java/com/volmit/iris/core/service/VillageSVC.java @@ -24,8 +24,10 @@ import com.volmit.iris.engine.object.IrisVillagerOverride; import com.volmit.iris.engine.object.IrisVillagerTrade; import com.volmit.iris.util.plugin.IrisService; import org.bukkit.Material; +import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.VillagerAcquireTradeEvent; +import org.bukkit.event.entity.VillagerCareerChangeEvent; public class VillageSVC implements IrisService { @Override @@ -38,9 +40,28 @@ public class VillageSVC implements IrisService { } - /** + @EventHandler + public void on(VillagerCareerChangeEvent event) { + if (!IrisToolbelt.isIrisWorld(event.getEntity().getWorld())) { + return; + } + + if (!IrisToolbelt.access(event.getEntity().getWorld()) + .getEngine().getDimension().isRemoveCartographersDueToCrash()) { + return; + } + + if (event.getProfession().equals(Villager.Profession.CARTOGRAPHER)) { + event.setCancelled(true); + Iris.info("Cancelled Cartographer Villager to prevent server crash!"); + } + } + + /* * Replace or disable villager trade add event to prevent explorer map */ + /* Removed due to MC breaking stuff again. This event is now called after the cartographer maps are made, + so it can fuck right off. @EventHandler public void on(VillagerAcquireTradeEvent event) { if(!IrisToolbelt.isIrisWorld((event.getEntity().getWorld()))) { @@ -71,4 +92,5 @@ public class VillageSVC implements IrisService { event.setRecipe(trade.convert()); Iris.debug("Overrode cartographer trade with: " + trade + " to prevent allowing cartography map trades"); } + */ } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimension.java b/src/main/java/com/volmit/iris/engine/object/IrisDimension.java index b99aa71fc..677409c0e 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisDimension.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisDimension.java @@ -223,8 +223,10 @@ public class IrisDimension extends IrisRegistrant { private IrisMaterialPalette rockPalette = new IrisMaterialPalette().qclear().qadd("stone"); @Desc("The palette of blocks for 'water'") private IrisMaterialPalette fluidPalette = new IrisMaterialPalette().qclear().qadd("water"); - @Desc("Cartographer map trade overrides") - private IrisVillagerOverride patchCartographers = new IrisVillagerOverride().setDisableTrade(false); +// @Desc("Cartographer map trade overrides") +// private IrisVillagerOverride patchCartographers = new IrisVillagerOverride().setDisableTrade(false); + @Desc("Remove cartographers so they do not crash the server (Iris worlds only)") + private boolean removeCartographersDueToCrash = true; @Desc("Collection of ores to be generated") @ArrayType(type = IrisOreGenerator.class, min = 1) private KList ores = new KList<>();