aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/ob
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-12-30 20:32:05 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-12-30 20:32:42 +0000
commita3777ddeab2cce237cf9a4a3891483c3aaf08d3d (patch)
treebb9ba0131dfeed4706a8f47f9ee9dde9380fe85e /src/Java/gtPlusPlus/xmod/ob
parent894e4f5598957d2befd672944436f353410bb2af (diff)
downloadGT5-Unofficial-a3777ddeab2cce237cf9a4a3891483c3aaf08d3d.tar.gz
GT5-Unofficial-a3777ddeab2cce237cf9a4a3891483c3aaf08d3d.tar.bz2
GT5-Unofficial-a3777ddeab2cce237cf9a4a3891483c3aaf08d3d.zip
+ Implemented Blacklist for OB Glider. Closes #584.
+ Added default versioning file.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/ob')
-rw-r--r--src/Java/gtPlusPlus/xmod/ob/GliderHandler.java102
-rw-r--r--src/Java/gtPlusPlus/xmod/ob/HANDLER_OpenBlocks.java38
2 files changed, 140 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/xmod/ob/GliderHandler.java b/src/Java/gtPlusPlus/xmod/ob/GliderHandler.java
new file mode 100644
index 0000000000..b1874b7ed2
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/ob/GliderHandler.java
@@ -0,0 +1,102 @@
+package gtPlusPlus.xmod.ob;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.event.entity.player.PlayerUseItemEvent;
+
+public class GliderHandler {
+
+ private static final AutoMap<Integer> mDimensionalBlacklist = new AutoMap<Integer>();
+
+ @SubscribeEvent
+ public void onItemUsage(final PlayerUseItemEvent event) {
+ if (event != null) {
+ ItemStack aItem = event.item;
+ if (ItemUtils.checkForInvalidItems(aItem)) {
+ Class aItemGliderClass = ReflectionUtils.getClass("openblocks.common.item.ItemHangGlider");
+ if (aItemGliderClass.isInstance(aItem.getItem())) {
+ if (!canPlayerGlideInThisDimension(event.entityPlayer)){
+ event.setCanceled(true);
+ }
+ }
+ }
+ }
+ }
+
+ private static final boolean canPlayerGlideInThisDimension(EntityPlayer aPlayer) {
+ World aWorld = aPlayer.worldObj;
+ if (aWorld == null) {
+ return false;
+ }
+ else {
+ if (aWorld.provider == null) {
+ return false;
+ }
+ else {
+ int aDimID = aWorld.provider.dimensionId;
+ for (int i : mDimensionalBlacklist) {
+ if (i == aDimID) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ static final void populateBlacklist() {
+ if (!mDimensionalBlacklist.isEmpty()) {
+ return;
+ }
+ File aBlacklist = gtPlusPlus.core.util.data.FileUtils.getFile("config/GTplusplus/", "GliderBlacklist", "cfg");
+ List<String> lines = new ArrayList<String>();
+ try {
+ lines = org.apache.commons.io.FileUtils.readLines(aBlacklist, "utf-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ if (lines.isEmpty()) {
+ FileWriter fw;
+ try {
+ String aInfoTip = "# Add one dimension ID per line. Lines with a # are comments and are ignored.";
+ fw = new FileWriter(aBlacklist);
+ fw.write(aInfoTip);
+ fw.close();
+ lines.add(aInfoTip);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (!lines.isEmpty()) {
+ for (String s : lines) {
+ if (s != null && !s.equals("") && !s.contains("#")) {
+ s = StringUtils.remove(s, " ");
+ s = StringUtils.trim(s);
+ s = StringUtils.remove(s, ",");
+ Integer g = Integer.decode(s);
+ if (g != null) {
+ mDimensionalBlacklist.add(g);
+ Logger.INFO("[OpenBlocks] Added Dimension with ID '"+g+"' to Blacklist for Glider.");
+ }
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/ob/HANDLER_OpenBlocks.java b/src/Java/gtPlusPlus/xmod/ob/HANDLER_OpenBlocks.java
new file mode 100644
index 0000000000..c1b678f5ee
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/ob/HANDLER_OpenBlocks.java
@@ -0,0 +1,38 @@
+package gtPlusPlus.xmod.ob;
+
+import static gtPlusPlus.core.creative.AddToCreativeTab.tabMisc;
+
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.base.BaseItemBurnable;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.railcraft.utils.RailcraftUtils;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+public class HANDLER_OpenBlocks {
+
+ public static void preInit() {
+ if (LoadedMods.OpenBlocks) {
+
+ }
+ }
+
+ public static void init() {
+ if (LoadedMods.OpenBlocks) {
+ GliderHandler.populateBlacklist();
+ }
+ }
+
+ public static void postInit() {
+ if (LoadedMods.OpenBlocks) {
+ Utils.registerEvent(new GliderHandler());
+ }
+ }
+
+}