From d70038b77f17360f088c4ba6236401b2aa54dd25 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 26 Apr 2015 16:05:44 +0100 Subject: [PATCH] Fixed placing parts inside other parts --- src/main/java/techreborn/partSystem/ModPartItem.java | 11 +++++++++++ .../techreborn/partSystem/QLib/QModPartFactory.java | 8 ++++---- .../java/techreborn/partSystem/fmp/FMPFactory.java | 5 +---- .../techreborn/partSystem/fmp/FakeFMPPlacerItem.java | 1 + 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/techreborn/partSystem/ModPartItem.java b/src/main/java/techreborn/partSystem/ModPartItem.java index 25e942f69..0fc3110ba 100644 --- a/src/main/java/techreborn/partSystem/ModPartItem.java +++ b/src/main/java/techreborn/partSystem/ModPartItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import techreborn.partSystem.parts.CablePart; import uk.co.qmunity.lib.ref.Names; @@ -25,6 +26,16 @@ public class ModPartItem extends Item { @Override public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int face, float x_, float y_, float z_) { + System.out.println(ModPartUtils.hasPart(world, x, y, z, modPart.getName())); + ForgeDirection dir = ForgeDirection.getOrientation(face); + if(ModPartUtils.hasPart(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, modPart.getName())){ + x = x + dir.offsetX; + y = y + dir.offsetY; + z = z + dir.offsetZ; + } + if(ModPartUtils.hasPart(world, x, y, z, modPart.getName())){ + return false; + } if (ModPartRegistry.masterProvider != null) { try { if(modPart instanceof CablePart){ diff --git a/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java b/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java index 8f2a7f507..b2c2261f5 100644 --- a/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java +++ b/src/main/java/techreborn/partSystem/QLib/QModPartFactory.java @@ -13,10 +13,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import techreborn.lib.Location; import techreborn.lib.vecmath.Vecs3dCube; -import techreborn.partSystem.IModPart; -import techreborn.partSystem.IPartProvider; -import techreborn.partSystem.ModPart; -import techreborn.partSystem.ModPartRegistry; +import techreborn.partSystem.*; import techreborn.partSystem.parts.CablePart; import uk.co.qmunity.lib.QLModInfo; import uk.co.qmunity.lib.part.IPart; @@ -123,6 +120,9 @@ public class QModPartFactory implements IPartFactory, IPartProvider { @Override public boolean hasPart(World world, Location location, String name) { + if(MultipartCompatibility.getPartHolder(world, location.getX(), location.getY(), location.getZ()) == null){ + return false; + } return MultipartCompatibility.getPart(world, location.getX(), location.getY(), location.getZ(), name) == null; } } diff --git a/src/main/java/techreborn/partSystem/fmp/FMPFactory.java b/src/main/java/techreborn/partSystem/fmp/FMPFactory.java index 7b0791432..b38599a09 100644 --- a/src/main/java/techreborn/partSystem/fmp/FMPFactory.java +++ b/src/main/java/techreborn/partSystem/fmp/FMPFactory.java @@ -16,10 +16,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import techreborn.lib.Location; import techreborn.lib.vecmath.Vecs3dCube; -import techreborn.partSystem.IModPart; -import techreborn.partSystem.IPartProvider; -import techreborn.partSystem.ModPart; -import techreborn.partSystem.ModPartRegistry; +import techreborn.partSystem.*; import techreborn.partSystem.parts.CablePart; import java.lang.reflect.InvocationTargetException; diff --git a/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java b/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java index 8a4c7d482..8d3c039e2 100644 --- a/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java +++ b/src/main/java/techreborn/partSystem/fmp/FakeFMPPlacerItem.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import techreborn.partSystem.ModPart; +import techreborn.partSystem.ModPartUtils; /** * This item is never added into the game, it is only used to add the part to