diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b2bb8..ca2c195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,2 @@ -## Delete Current Config For This Mod Before Running This Update - -[Fixed] - - - Fixed Custom Spawn Dimension player events firing even when disabled \ No newline at end of file +**[Added]** + - Configurable Dimensions players can breathe in without oxygen gear \ No newline at end of file diff --git a/src/main/java/net/romvoid95/gctweaks/gc/GalacticraftModule.java b/src/main/java/net/romvoid95/gctweaks/gc/GalacticraftModule.java index e8ffc91..3ebeea4 100644 --- a/src/main/java/net/romvoid95/gctweaks/gc/GalacticraftModule.java +++ b/src/main/java/net/romvoid95/gctweaks/gc/GalacticraftModule.java @@ -7,6 +7,7 @@ import net.romvoid95.gctweaks.gc.features.MobsBreatheInSpace; import net.romvoid95.gctweaks.gc.features.NoSpaceMusic; import net.romvoid95.gctweaks.gc.features.SpawnDimension; +import net.romvoid95.gctweaks.gc.features.breathable.OxygenPlanets; import net.romvoid95.gctweaks.gc.features.galaxy.SeperateAddonPlanets; import net.romvoid95.gctweaks.gc.features.schematic.UnlockSchematics; import net.romvoid95.gctweaks.gc.features.spacerace.SpaceRaceFeature; @@ -30,6 +31,7 @@ public void addFeatures() { registerFeature(new DimensionalComets()); registerFeature(new UnlockSchematics()); registerFeature(new SpawnDimension()); + registerFeature(new OxygenPlanets()); } } diff --git a/src/main/java/net/romvoid95/gctweaks/gc/features/breathable/OxygenPlanets.java b/src/main/java/net/romvoid95/gctweaks/gc/features/breathable/OxygenPlanets.java new file mode 100644 index 0000000..933e7e4 --- /dev/null +++ b/src/main/java/net/romvoid95/gctweaks/gc/features/breathable/OxygenPlanets.java @@ -0,0 +1,45 @@ +package net.romvoid95.gctweaks.gc.features.breathable; + +import micdoodle8.mods.galacticraft.api.event.oxygen.GCCoreOxygenSuffocationEvent; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.romvoid95.gctweaks.base.Feature; + +public class OxygenPlanets extends Feature { + + private static boolean breatheablePlanets; + private int[] dimIds; + + @Override + public String comment() { + return "Define dimensions Players will be able to breathe in"; + } + + @Override + public String category() { + return "breatheOnPlanets"; + } + + @Override + public void syncConfig(String category) { + breatheablePlanets = set(category, "enableFeature", false); + dimIds = set(category, "dimIds", "Data consisting of which Dimensions Players can breahte in",new int[] {-29, -31}); + } + + @Override + public boolean usesEvents() { + return true; + } + + @SubscribeEvent + public void GCCoreOxygenSuffocationEvent(GCCoreOxygenSuffocationEvent.Pre event) { + if (breatheablePlanets) { + EntityPlayer player = (EntityPlayer) event.getEntityLiving(); + for(int dimId : dimIds) { + if(player.world.provider.getDimensionType().getId() == dimId) { + event.setCanceled(true); + } + } + } + } +}