Fixed server crashes.

This commit is contained in:
raoulvdberge
2018-07-09 15:32:22 +02:00
parent d4deba9932
commit 5511f00b21
9 changed files with 297 additions and 336 deletions

View File

@@ -15,7 +15,7 @@ import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable
import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.TileCable; import com.raoulvdberge.refinedstorage.tile.TileCable;
import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.CollisionUtils;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
@@ -165,7 +165,7 @@ public class BlockCable extends BlockNode {
for (CollisionGroup group : getCollisions(world.getTileEntity(pos), state)) { for (CollisionGroup group : getCollisions(world.getTileEntity(pos), state)) {
if (group.canAccessGui()) { if (group.canAccessGui()) {
for (AxisAlignedBB aabb : group.getItems()) { for (AxisAlignedBB aabb : group.getItems()) {
if (RenderUtils.isInBounds(aabb, hitX, hitY, hitZ)) { if (CollisionUtils.isInBounds(aabb, hitX, hitY, hitZ)) {
return true; return true;
} }
} }
@@ -221,7 +221,7 @@ public class BlockCable extends BlockNode {
Cover coverDown = coverManager.getCover(EnumFacing.DOWN); Cover coverDown = coverManager.getCover(EnumFacing.DOWN);
if (coverNorth != null) { if (coverNorth != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
coverWest != null ? 2 : 0, coverDown != null ? 2 : 0, 0, coverWest != null ? 2 : 0, coverDown != null ? 2 : 0, 0,
coverEast != null ? 14 : 16, coverUp != null ? 14 : 16, 2 coverEast != null ? 14 : 16, coverUp != null ? 14 : 16, 2
))); )));
@@ -232,7 +232,7 @@ public class BlockCable extends BlockNode {
} }
if (coverEast != null) { if (coverEast != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
14, coverDown != null ? 2 : 0, 0, 14, coverDown != null ? 2 : 0, 0,
16, coverUp != null ? 14 : 16, 16 16, coverUp != null ? 14 : 16, 16
))); )));
@@ -243,7 +243,7 @@ public class BlockCable extends BlockNode {
} }
if (coverSouth != null) { if (coverSouth != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
coverEast != null ? 14 : 16, coverDown != null ? 2 : 0, 16, coverEast != null ? 14 : 16, coverDown != null ? 2 : 0, 16,
coverWest != null ? 2 : 0, coverUp != null ? 14 : 16, 14 coverWest != null ? 2 : 0, coverUp != null ? 14 : 16, 14
))); )));
@@ -254,7 +254,7 @@ public class BlockCable extends BlockNode {
} }
if (coverWest != null) { if (coverWest != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
0, coverDown != null ? 2 : 0, 0, 0, coverDown != null ? 2 : 0, 0,
2, coverUp != null ? 14 : 16, 16 2, coverUp != null ? 14 : 16, 16
))); )));
@@ -265,7 +265,7 @@ public class BlockCable extends BlockNode {
} }
if (coverUp != null) { if (coverUp != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
0, 14, 0, 0, 14, 0,
16, 16, 16 16, 16, 16
))); )));
@@ -276,7 +276,7 @@ public class BlockCable extends BlockNode {
} }
if (coverDown != null) { if (coverDown != null) {
groups.add(new CollisionGroup().addItem(RenderUtils.getBounds( groups.add(new CollisionGroup().addItem(CollisionUtils.getBounds(
0, 0, 0, 0, 0, 0,
16, 2, 16 16, 2, 16
))); )));
@@ -292,7 +292,7 @@ public class BlockCable extends BlockNode {
@Override @Override
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, Entity entityIn, boolean p_185477_7_) { public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, Entity entityIn, boolean isActualState) {
for (CollisionGroup group : getCollisions(world.getTileEntity(pos), this.getActualState(state, world, pos))) { for (CollisionGroup group : getCollisions(world.getTileEntity(pos), this.getActualState(state, world, pos))) {
for (AxisAlignedBB aabb : group.getItems()) { for (AxisAlignedBB aabb : group.getItems()) {
addCollisionBoxToList(pos, entityBox, collidingBoxes, aabb); addCollisionBoxToList(pos, entityBox, collidingBoxes, aabb);

View File

@@ -1,108 +1,69 @@
package com.raoulvdberge.refinedstorage.render.collision.constants; package com.raoulvdberge.refinedstorage.render.collision.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.util.vector.Vector3f; import javax.annotation.Nonnull;
public final class ConstantsCable { public final class ConstantsCable {
public static final CollisionGroup CORE = new CollisionGroup().addItem(RenderUtils.getBounds(6, 6, 6, 10, 10, 10)); public static final CollisionGroup CORE = new CollisionGroup().addItem(getBounds(6, 6, 6, 10, 10, 10));
public static final CollisionGroup NORTH = new CollisionGroup().addItem(RenderUtils.getBounds(6, 6, 0, 10, 10, 6)); public static final CollisionGroup NORTH = new CollisionGroup().addItem(getBounds(6, 6, 0, 10, 10, 6));
public static final CollisionGroup EAST = new CollisionGroup().addItem(RenderUtils.getBounds(10, 6, 6, 16, 10, 10)); public static final CollisionGroup EAST = new CollisionGroup().addItem(getBounds(10, 6, 6, 16, 10, 10));
public static final CollisionGroup SOUTH = new CollisionGroup().addItem(RenderUtils.getBounds(6, 6, 10, 10, 10, 16)); public static final CollisionGroup SOUTH = new CollisionGroup().addItem(getBounds(6, 6, 10, 10, 10, 16));
public static final CollisionGroup WEST = new CollisionGroup().addItem(RenderUtils.getBounds(0, 6, 6, 6, 10, 10)); public static final CollisionGroup WEST = new CollisionGroup().addItem(getBounds(0, 6, 6, 6, 10, 10));
public static final CollisionGroup UP = new CollisionGroup().addItem(RenderUtils.getBounds(6, 10, 6, 10, 16, 10)); public static final CollisionGroup UP = new CollisionGroup().addItem(getBounds(6, 10, 6, 10, 16, 10));
public static final CollisionGroup DOWN = new CollisionGroup().addItem(RenderUtils.getBounds(6, 0, 6, 10, 6, 10)); public static final CollisionGroup DOWN = new CollisionGroup().addItem(getBounds(6, 0, 6, 10, 6, 10));
public static final CollisionGroup HOLDER_NORTH = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.NORTH)); public static final CollisionGroup HOLDER_NORTH = new CollisionGroup().addItem(getHolderBounds(EnumFacing.NORTH));
public static final CollisionGroup HOLDER_EAST = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.EAST)); public static final CollisionGroup HOLDER_EAST = new CollisionGroup().addItem(getHolderBounds(EnumFacing.EAST));
public static final CollisionGroup HOLDER_SOUTH = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.SOUTH)); public static final CollisionGroup HOLDER_SOUTH = new CollisionGroup().addItem(getHolderBounds(EnumFacing.SOUTH));
public static final CollisionGroup HOLDER_WEST = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.WEST)); public static final CollisionGroup HOLDER_WEST = new CollisionGroup().addItem(getHolderBounds(EnumFacing.WEST));
public static final CollisionGroup HOLDER_UP = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.UP)); public static final CollisionGroup HOLDER_UP = new CollisionGroup().addItem(getHolderBounds(EnumFacing.UP));
public static final CollisionGroup HOLDER_DOWN = new CollisionGroup().addItem(getHolderBoundsAabb(EnumFacing.DOWN)); public static final CollisionGroup HOLDER_DOWN = new CollisionGroup().addItem(getHolderBounds(EnumFacing.DOWN));
public static Pair<Vector3f, Vector3f> getCoverBounds(EnumFacing side) {
public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) {
return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F);
}
@Nonnull
public static AxisAlignedBB getCoverBounds(EnumFacing side) {
switch (side) { switch (side) {
case DOWN: case DOWN:
return Pair.of( return getBounds(0, 0, 0, 16, 2, 16);
new Vector3f(0, 0, 0),
new Vector3f(16, 2, 16)
);
case UP: case UP:
return Pair.of( return getBounds(0, 14, 0, 16, 16, 16);
new Vector3f(0, 14, 0),
new Vector3f(16, 16, 16)
);
case NORTH: case NORTH:
return Pair.of( return getBounds(0, 0, 0, 16, 16, 2);
new Vector3f(0, 0, 0),
new Vector3f(16, 16, 2)
);
case SOUTH: case SOUTH:
return Pair.of( return getBounds(0, 0, 14, 16, 16, 16);
new Vector3f(0, 0, 14),
new Vector3f(16, 16, 16)
);
case WEST: case WEST:
return Pair.of( return getBounds(0, 0, 0, 2, 16, 16);
new Vector3f(0, 0, 0),
new Vector3f(2, 16, 16)
);
case EAST: case EAST:
return Pair.of( return getBounds(14, 0, 0, 16, 16, 16);
new Vector3f(14, 0, 0),
new Vector3f(16, 16, 16)
);
default: default:
return null; return null;
} }
} }
public static Pair<Vector3f, Vector3f> getHolderBounds(EnumFacing side) { @Nonnull
public static AxisAlignedBB getHolderBounds(EnumFacing side) {
switch (side) { switch (side) {
case DOWN: case DOWN:
return Pair.of( return getBounds(7, 2, 7, 9, 6, 9);
new Vector3f(7, 2, 7),
new Vector3f(9, 6, 9)
);
case UP: case UP:
return Pair.of( return getBounds(7, 10, 7, 9, 14, 9);
new Vector3f(7, 10, 7),
new Vector3f(9, 14, 9)
);
case NORTH: case NORTH:
return Pair.of( return getBounds(7, 7, 2, 9, 9, 6);
new Vector3f(7, 7, 2),
new Vector3f(9, 9, 6)
);
case SOUTH: case SOUTH:
return Pair.of( return getBounds(7, 7, 10, 9, 9, 14);
new Vector3f(7, 7, 10),
new Vector3f(9, 9, 14)
);
case WEST: case WEST:
return Pair.of( return getBounds(2, 7, 7, 6, 9, 9);
new Vector3f(2, 7, 7),
new Vector3f(6, 9, 9)
);
case EAST: case EAST:
return Pair.of( return getBounds(10, 7, 7, 14, 9, 9);
new Vector3f(10, 7, 7),
new Vector3f(14, 9, 9)
);
default: default:
return null; return null;
} }
} }
private static AxisAlignedBB getHolderBoundsAabb(EnumFacing side) {
Pair<Vector3f, Vector3f> bounds = getHolderBounds(side);
return RenderUtils.getBounds(
(int) bounds.getLeft().getX(), (int) bounds.getLeft().getY(), (int) bounds.getLeft().getZ(),
(int) bounds.getRight().getX(), (int) bounds.getRight().getY(), (int) bounds.getRight().getZ()
);
}
} }

View File

@@ -1,13 +1,13 @@
package com.raoulvdberge.refinedstorage.render.collision.constants; package com.raoulvdberge.refinedstorage.render.collision.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.CollisionUtils;
public final class ConstantsConstructor { public final class ConstantsConstructor {
public static final CollisionGroup HEAD_NORTH = new CollisionGroup().addItem(RenderUtils.getBounds(2, 2, 0, 14, 14, 2)).setCanAccessGui(true); public static final CollisionGroup HEAD_NORTH = new CollisionGroup().addItem(CollisionUtils.getBounds(2, 2, 0, 14, 14, 2)).setCanAccessGui(true);
public static final CollisionGroup HEAD_EAST = new CollisionGroup().addItem(RenderUtils.getBounds(14, 2, 2, 16, 14, 14)).setCanAccessGui(true); public static final CollisionGroup HEAD_EAST = new CollisionGroup().addItem(CollisionUtils.getBounds(14, 2, 2, 16, 14, 14)).setCanAccessGui(true);
public static final CollisionGroup HEAD_SOUTH = new CollisionGroup().addItem(RenderUtils.getBounds(2, 2, 14, 14, 14, 16)).setCanAccessGui(true); public static final CollisionGroup HEAD_SOUTH = new CollisionGroup().addItem(CollisionUtils.getBounds(2, 2, 14, 14, 14, 16)).setCanAccessGui(true);
public static final CollisionGroup HEAD_WEST = new CollisionGroup().addItem(RenderUtils.getBounds(0, 2, 2, 2, 14, 14)).setCanAccessGui(true); public static final CollisionGroup HEAD_WEST = new CollisionGroup().addItem(CollisionUtils.getBounds(0, 2, 2, 2, 14, 14)).setCanAccessGui(true);
public static final CollisionGroup HEAD_DOWN = new CollisionGroup().addItem(RenderUtils.getBounds(2, 0, 2, 14, 2, 14)).setCanAccessGui(true); public static final CollisionGroup HEAD_DOWN = new CollisionGroup().addItem(CollisionUtils.getBounds(2, 0, 2, 14, 2, 14)).setCanAccessGui(true);
public static final CollisionGroup HEAD_UP = new CollisionGroup().addItem(RenderUtils.getBounds(2, 14, 2, 14, 16, 14)).setCanAccessGui(true); public static final CollisionGroup HEAD_UP = new CollisionGroup().addItem(CollisionUtils.getBounds(2, 14, 2, 14, 16, 14)).setCanAccessGui(true);
} }

View File

@@ -1,37 +1,37 @@
package com.raoulvdberge.refinedstorage.render.collision.constants; package com.raoulvdberge.refinedstorage.render.collision.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.CollisionUtils;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
public final class ConstantsExporter { public final class ConstantsExporter {
public static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 0, 10, 10, 2); public static final AxisAlignedBB LINE_NORTH_1_AABB = CollisionUtils.getBounds(6, 6, 0, 10, 10, 2);
public static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4); public static final AxisAlignedBB LINE_NORTH_2_AABB = CollisionUtils.getBounds(5, 5, 2, 11, 11, 4);
public static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 4, 13, 13, 6); public static final AxisAlignedBB LINE_NORTH_3_AABB = CollisionUtils.getBounds(3, 3, 4, 13, 13, 6);
public static final CollisionGroup LINE_NORTH = new CollisionGroup().addItem(LINE_NORTH_1_AABB).addItem(LINE_NORTH_2_AABB).addItem(LINE_NORTH_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_NORTH = new CollisionGroup().addItem(LINE_NORTH_1_AABB).addItem(LINE_NORTH_2_AABB).addItem(LINE_NORTH_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(14, 6, 6, 16, 10, 10); public static final AxisAlignedBB LINE_EAST_1_AABB = CollisionUtils.getBounds(14, 6, 6, 16, 10, 10);
public static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11); public static final AxisAlignedBB LINE_EAST_2_AABB = CollisionUtils.getBounds(12, 5, 5, 14, 11, 11);
public static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(10, 3, 3, 12, 13, 13); public static final AxisAlignedBB LINE_EAST_3_AABB = CollisionUtils.getBounds(10, 3, 3, 12, 13, 13);
public static final CollisionGroup LINE_EAST = new CollisionGroup().addItem(LINE_EAST_1_AABB).addItem(LINE_EAST_2_AABB).addItem(LINE_EAST_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_EAST = new CollisionGroup().addItem(LINE_EAST_1_AABB).addItem(LINE_EAST_2_AABB).addItem(LINE_EAST_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 14, 10, 10, 16); public static final AxisAlignedBB LINE_SOUTH_1_AABB = CollisionUtils.getBounds(6, 6, 14, 10, 10, 16);
public static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14); public static final AxisAlignedBB LINE_SOUTH_2_AABB = CollisionUtils.getBounds(5, 5, 12, 11, 11, 14);
public static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 10, 13, 13, 12); public static final AxisAlignedBB LINE_SOUTH_3_AABB = CollisionUtils.getBounds(3, 3, 10, 13, 13, 12);
public static final CollisionGroup LINE_SOUTH = new CollisionGroup().addItem(LINE_SOUTH_1_AABB).addItem(LINE_SOUTH_2_AABB).addItem(LINE_SOUTH_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_SOUTH = new CollisionGroup().addItem(LINE_SOUTH_1_AABB).addItem(LINE_SOUTH_2_AABB).addItem(LINE_SOUTH_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(0, 6, 6, 2, 10, 10); public static final AxisAlignedBB LINE_WEST_1_AABB = CollisionUtils.getBounds(0, 6, 6, 2, 10, 10);
public static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11); public static final AxisAlignedBB LINE_WEST_2_AABB = CollisionUtils.getBounds(2, 5, 5, 4, 11, 11);
public static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(4, 3, 3, 6, 13, 13); public static final AxisAlignedBB LINE_WEST_3_AABB = CollisionUtils.getBounds(4, 3, 3, 6, 13, 13);
public static final CollisionGroup LINE_WEST = new CollisionGroup().addItem(LINE_WEST_1_AABB).addItem(LINE_WEST_2_AABB).addItem(LINE_WEST_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_WEST = new CollisionGroup().addItem(LINE_WEST_1_AABB).addItem(LINE_WEST_2_AABB).addItem(LINE_WEST_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 14, 6, 10, 16, 10); public static final AxisAlignedBB LINE_UP_1_AABB = CollisionUtils.getBounds(6, 14, 6, 10, 16, 10);
public static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11); public static final AxisAlignedBB LINE_UP_2_AABB = CollisionUtils.getBounds(5, 12, 5, 11, 14, 11);
public static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 10, 3, 13, 12, 13); public static final AxisAlignedBB LINE_UP_3_AABB = CollisionUtils.getBounds(3, 10, 3, 13, 12, 13);
public static final CollisionGroup LINE_UP = new CollisionGroup().addItem(LINE_UP_1_AABB).addItem(LINE_UP_2_AABB).addItem(LINE_UP_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_UP = new CollisionGroup().addItem(LINE_UP_1_AABB).addItem(LINE_UP_2_AABB).addItem(LINE_UP_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 0, 6, 10, 2, 10); public static final AxisAlignedBB LINE_DOWN_1_AABB = CollisionUtils.getBounds(6, 0, 6, 10, 2, 10);
public static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11); public static final AxisAlignedBB LINE_DOWN_2_AABB = CollisionUtils.getBounds(5, 2, 5, 11, 4, 11);
public static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 4, 3, 13, 6, 13); public static final AxisAlignedBB LINE_DOWN_3_AABB = CollisionUtils.getBounds(3, 4, 3, 13, 6, 13);
public static final CollisionGroup LINE_DOWN = new CollisionGroup().addItem(LINE_DOWN_1_AABB).addItem(LINE_DOWN_2_AABB).addItem(LINE_DOWN_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_DOWN = new CollisionGroup().addItem(LINE_DOWN_1_AABB).addItem(LINE_DOWN_2_AABB).addItem(LINE_DOWN_3_AABB).setCanAccessGui(true);
} }

View File

@@ -1,13 +1,13 @@
package com.raoulvdberge.refinedstorage.render.collision.constants; package com.raoulvdberge.refinedstorage.render.collision.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.CollisionUtils;
public final class ConstantsExternalStorage { public final class ConstantsExternalStorage {
public static final CollisionGroup HEAD_NORTH = new CollisionGroup().addItem(RenderUtils.getBounds(3, 3, 0, 13, 13, 2)).setCanAccessGui(true); public static final CollisionGroup HEAD_NORTH = new CollisionGroup().addItem(CollisionUtils.getBounds(3, 3, 0, 13, 13, 2)).setCanAccessGui(true);
public static final CollisionGroup HEAD_EAST = new CollisionGroup().addItem(RenderUtils.getBounds(14, 3, 3, 16, 13, 13)).setCanAccessGui(true); public static final CollisionGroup HEAD_EAST = new CollisionGroup().addItem(CollisionUtils.getBounds(14, 3, 3, 16, 13, 13)).setCanAccessGui(true);
public static final CollisionGroup HEAD_SOUTH = new CollisionGroup().addItem(RenderUtils.getBounds(3, 3, 14, 13, 13, 16)).setCanAccessGui(true); public static final CollisionGroup HEAD_SOUTH = new CollisionGroup().addItem(CollisionUtils.getBounds(3, 3, 14, 13, 13, 16)).setCanAccessGui(true);
public static final CollisionGroup HEAD_WEST = new CollisionGroup().addItem(RenderUtils.getBounds(0, 3, 3, 2, 13, 13)).setCanAccessGui(true); public static final CollisionGroup HEAD_WEST = new CollisionGroup().addItem(CollisionUtils.getBounds(0, 3, 3, 2, 13, 13)).setCanAccessGui(true);
public static final CollisionGroup HEAD_UP = new CollisionGroup().addItem(RenderUtils.getBounds(3, 14, 3, 13, 16, 13)).setCanAccessGui(true); public static final CollisionGroup HEAD_UP = new CollisionGroup().addItem(CollisionUtils.getBounds(3, 14, 3, 13, 16, 13)).setCanAccessGui(true);
public static final CollisionGroup HEAD_DOWN = new CollisionGroup().addItem(RenderUtils.getBounds(3, 0, 3, 13, 2, 13)).setCanAccessGui(true); public static final CollisionGroup HEAD_DOWN = new CollisionGroup().addItem(CollisionUtils.getBounds(3, 0, 3, 13, 2, 13)).setCanAccessGui(true);
} }

View File

@@ -1,37 +1,37 @@
package com.raoulvdberge.refinedstorage.render.collision.constants; package com.raoulvdberge.refinedstorage.render.collision.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.CollisionUtils;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
public final class ConstantsImporter { public final class ConstantsImporter {
public static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 4, 10, 10, 6); public static final AxisAlignedBB LINE_NORTH_1_AABB = CollisionUtils.getBounds(6, 6, 4, 10, 10, 6);
public static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4); public static final AxisAlignedBB LINE_NORTH_2_AABB = CollisionUtils.getBounds(5, 5, 2, 11, 11, 4);
public static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 0, 13, 13, 2); public static final AxisAlignedBB LINE_NORTH_3_AABB = CollisionUtils.getBounds(3, 3, 0, 13, 13, 2);
public static final CollisionGroup LINE_NORTH = new CollisionGroup().addItem(LINE_NORTH_1_AABB).addItem(LINE_NORTH_2_AABB).addItem(LINE_NORTH_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_NORTH = new CollisionGroup().addItem(LINE_NORTH_1_AABB).addItem(LINE_NORTH_2_AABB).addItem(LINE_NORTH_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(10, 6, 6, 12, 10, 10); public static final AxisAlignedBB LINE_EAST_1_AABB = CollisionUtils.getBounds(10, 6, 6, 12, 10, 10);
public static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11); public static final AxisAlignedBB LINE_EAST_2_AABB = CollisionUtils.getBounds(12, 5, 5, 14, 11, 11);
public static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(14, 3, 3, 16, 13, 13); public static final AxisAlignedBB LINE_EAST_3_AABB = CollisionUtils.getBounds(14, 3, 3, 16, 13, 13);
public static final CollisionGroup LINE_EAST = new CollisionGroup().addItem(LINE_EAST_1_AABB).addItem(LINE_EAST_2_AABB).addItem(LINE_EAST_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_EAST = new CollisionGroup().addItem(LINE_EAST_1_AABB).addItem(LINE_EAST_2_AABB).addItem(LINE_EAST_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 10, 10, 10, 12); public static final AxisAlignedBB LINE_SOUTH_1_AABB = CollisionUtils.getBounds(6, 6, 10, 10, 10, 12);
public static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14); public static final AxisAlignedBB LINE_SOUTH_2_AABB = CollisionUtils.getBounds(5, 5, 12, 11, 11, 14);
public static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 14, 13, 13, 16); public static final AxisAlignedBB LINE_SOUTH_3_AABB = CollisionUtils.getBounds(3, 3, 14, 13, 13, 16);
public static final CollisionGroup LINE_SOUTH = new CollisionGroup().addItem(LINE_SOUTH_1_AABB).addItem(LINE_SOUTH_2_AABB).addItem(LINE_SOUTH_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_SOUTH = new CollisionGroup().addItem(LINE_SOUTH_1_AABB).addItem(LINE_SOUTH_2_AABB).addItem(LINE_SOUTH_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(4, 6, 6, 6, 10, 10); public static final AxisAlignedBB LINE_WEST_1_AABB = CollisionUtils.getBounds(4, 6, 6, 6, 10, 10);
public static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11); public static final AxisAlignedBB LINE_WEST_2_AABB = CollisionUtils.getBounds(2, 5, 5, 4, 11, 11);
public static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(0, 3, 3, 2, 13, 13); public static final AxisAlignedBB LINE_WEST_3_AABB = CollisionUtils.getBounds(0, 3, 3, 2, 13, 13);
public static final CollisionGroup LINE_WEST = new CollisionGroup().addItem(LINE_WEST_1_AABB).addItem(LINE_WEST_2_AABB).addItem(LINE_WEST_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_WEST = new CollisionGroup().addItem(LINE_WEST_1_AABB).addItem(LINE_WEST_2_AABB).addItem(LINE_WEST_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 10, 6, 10, 12, 10); public static final AxisAlignedBB LINE_UP_1_AABB = CollisionUtils.getBounds(6, 10, 6, 10, 12, 10);
public static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11); public static final AxisAlignedBB LINE_UP_2_AABB = CollisionUtils.getBounds(5, 12, 5, 11, 14, 11);
public static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 14, 3, 13, 16, 13); public static final AxisAlignedBB LINE_UP_3_AABB = CollisionUtils.getBounds(3, 14, 3, 13, 16, 13);
public static final CollisionGroup LINE_UP = new CollisionGroup().addItem(LINE_UP_1_AABB).addItem(LINE_UP_2_AABB).addItem(LINE_UP_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_UP = new CollisionGroup().addItem(LINE_UP_1_AABB).addItem(LINE_UP_2_AABB).addItem(LINE_UP_3_AABB).setCanAccessGui(true);
public static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 4, 6, 10, 6, 10); public static final AxisAlignedBB LINE_DOWN_1_AABB = CollisionUtils.getBounds(6, 4, 6, 10, 6, 10);
public static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11); public static final AxisAlignedBB LINE_DOWN_2_AABB = CollisionUtils.getBounds(5, 2, 5, 11, 4, 11);
public static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 0, 3, 13, 2, 13); public static final AxisAlignedBB LINE_DOWN_3_AABB = CollisionUtils.getBounds(3, 0, 3, 13, 2, 13);
public static final CollisionGroup LINE_DOWN = new CollisionGroup().addItem(LINE_DOWN_1_AABB).addItem(LINE_DOWN_2_AABB).addItem(LINE_DOWN_3_AABB).setCanAccessGui(true); public static final CollisionGroup LINE_DOWN = new CollisionGroup().addItem(LINE_DOWN_1_AABB).addItem(LINE_DOWN_2_AABB).addItem(LINE_DOWN_3_AABB).setCanAccessGui(true);
} }

View File

@@ -15,6 +15,7 @@ import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IExtendedBlockState;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.util.vector.Vector3f; import org.lwjgl.util.vector.Vector3f;
@@ -84,42 +85,40 @@ public class BakedModelCableCover implements IBakedModel {
} }
private static void addNormalCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) { private static void addNormalCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) {
Pair<Vector3f, Vector3f> bounds = ConstantsCable.getCoverBounds(coverSide); AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} }
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} }
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} }
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} }
} }
if (coverSide.getAxis() != EnumFacing.Axis.Y) { if (coverSide.getAxis() != EnumFacing.Axis.Y) {
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} }
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} }
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, sprite)).bake());
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
if (handle) { if (handle) {
if (GREY_SPRITE == null) { if (GREY_SPRITE == null) {
@@ -128,61 +127,60 @@ public class BakedModelCableCover implements IBakedModel {
bounds = ConstantsCable.getHolderBounds(coverSide); bounds = ConstantsCable.getHolderBounds(coverSide);
quads.addAll(new CubeBuilder() from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
.addFaces(face -> new CubeBuilder.Face(face, GREY_SPRITE)) quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, GREY_SPRITE)).bake());
.bake()
);
} }
} }
private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
Pair<Vector3f, Vector3f> bounds = ConstantsCable.getCoverBounds(coverSide); AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide.getAxis() != EnumFacing.Axis.Y) { if (coverSide.getAxis() != EnumFacing.Axis.Y) {
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} }
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} }
} }
// Right // Right
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} else { } else {
bounds.getLeft().setX(0); from.setX(0);
} }
bounds.getRight().setX(6); to.setX(6);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} else { } else {
bounds.getRight().setX(16); to.setX(16);
} }
bounds.getLeft().setX(10); from.setX(10);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(6); to.setZ(6);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(10); from.setZ(10);
bounds.getRight().setZ(16); to.setZ(16);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(10); from.setZ(10);
bounds.getRight().setZ(16); to.setZ(16);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
@@ -190,203 +188,206 @@ public class BakedModelCableCover implements IBakedModel {
// Left // Left
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} else { } else {
bounds.getRight().setX(16); to.setX(16);
} }
bounds.getLeft().setX(10); from.setX(10);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} else { } else {
bounds.getLeft().setX(0); from.setX(0);
} }
bounds.getRight().setX(6); to.setX(6);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getRight().setZ(16); to.setZ(16);
bounds.getLeft().setZ(10); from.setZ(10);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(6); to.setZ(6);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(6); to.setZ(6);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
// Bottom // Bottom
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
bounds.getLeft().setX(6); from.setX(6);
bounds.getRight().setX(10); to.setX(10);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(6); to.setY(6);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
bounds.getLeft().setX(6); from.setX(6);
bounds.getRight().setX(10); to.setX(10);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(6); to.setY(6);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(6); to.setY(6);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(6); to.setY(6);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
bounds.getLeft().setX(0); from.setX(0);
bounds.getRight().setX(6); to.setX(6);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
// Up // Up
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
bounds.getLeft().setX(6); from.setX(6);
bounds.getRight().setX(10); to.setX(10);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(10); from.setY(10);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
bounds.getLeft().setX(6); from.setX(6);
bounds.getRight().setX(10); to.setX(10);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(10); from.setY(10);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(10); from.setY(10);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(10); from.setY(10);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(6); from.setZ(6);
bounds.getRight().setZ(10); to.setZ(10);
bounds.getLeft().setX(10); from.setX(10);
bounds.getRight().setX(16); to.setX(16);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
} }
private static void addHollowWideCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { private static void addHollowWideCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
Pair<Vector3f, Vector3f> bounds = ConstantsCable.getCoverBounds(coverSide); AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide.getAxis() != EnumFacing.Axis.Y) { if (coverSide.getAxis() != EnumFacing.Axis.Y) {
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} }
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} }
} }
// Right // Right
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} else { } else {
bounds.getLeft().setX(0); from.setX(0);
} }
bounds.getRight().setX(3); to.setX(3);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} else { } else {
bounds.getRight().setX(16); to.setX(16);
} }
bounds.getLeft().setX(13); from.setX(13);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(3); to.setZ(3);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(13); from.setZ(13);
bounds.getRight().setZ(16); to.setZ(16);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(13); from.setZ(13);
bounds.getRight().setZ(16); to.setZ(16);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
@@ -394,154 +395,154 @@ public class BakedModelCableCover implements IBakedModel {
// Left // Left
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
if (hasEast) { if (hasEast) {
bounds.getRight().setX(14); to.setX(14);
} else { } else {
bounds.getRight().setX(16); to.setX(16);
} }
bounds.getLeft().setX(13); from.setX(13);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
if (hasWest) { if (hasWest) {
bounds.getLeft().setX(2); from.setX(2);
} else { } else {
bounds.getLeft().setX(0); from.setX(0);
} }
bounds.getRight().setX(3); to.setX(3);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getRight().setZ(16); to.setZ(16);
bounds.getLeft().setZ(13); from.setZ(13);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(3); to.setZ(3);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(0); from.setZ(0);
bounds.getRight().setZ(3); to.setZ(3);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
// Bottom // Bottom
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
bounds.getLeft().setX(3); from.setX(3);
bounds.getRight().setX(13); to.setX(13);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(3); to.setY(3);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
bounds.getLeft().setX(3); from.setX(3);
bounds.getRight().setX(13); to.setX(13);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(3); to.setY(3);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(3); to.setY(3);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
if (hasDown) { if (hasDown) {
bounds.getLeft().setY(2); from.setY(2);
} else { } else {
bounds.getLeft().setY(0); from.setY(0);
} }
bounds.getRight().setY(3); to.setY(3);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
bounds.getLeft().setX(0); from.setX(0);
bounds.getRight().setX(3); to.setX(3);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );
// Up // Up
if (coverSide == EnumFacing.NORTH) { if (coverSide == EnumFacing.NORTH) {
bounds.getLeft().setX(3); from.setX(3);
bounds.getRight().setX(13); to.setX(13);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(13); from.setY(13);
} else if (coverSide == EnumFacing.SOUTH) { } else if (coverSide == EnumFacing.SOUTH) {
bounds.getLeft().setX(3); from.setX(3);
bounds.getRight().setX(13); to.setX(13);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(13); from.setY(13);
} else if (coverSide == EnumFacing.EAST) { } else if (coverSide == EnumFacing.EAST) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(13); from.setY(13);
} else if (coverSide == EnumFacing.WEST) { } else if (coverSide == EnumFacing.WEST) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
if (hasUp) { if (hasUp) {
bounds.getRight().setY(14); to.setY(14);
} else { } else {
bounds.getRight().setY(16); to.setY(16);
} }
bounds.getLeft().setY(13); from.setY(13);
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) { } else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
bounds.getLeft().setZ(3); from.setZ(3);
bounds.getRight().setZ(13); to.setZ(13);
bounds.getLeft().setX(13); from.setX(13);
bounds.getRight().setX(16); to.setX(16);
} }
quads.addAll(new CubeBuilder() quads.addAll(new CubeBuilder()
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ()) .from(from.getX(), from.getY(), from.getZ())
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ()) .to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite)) .addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake() .bake()
); );

View File

@@ -0,0 +1,13 @@
package com.raoulvdberge.refinedstorage.util;
import net.minecraft.util.math.AxisAlignedBB;
public final class CollisionUtils {
public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) {
return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F);
}
public static boolean isInBounds(AxisAlignedBB aabb, float hitX, float hitY, float hitZ) {
return hitX >= aabb.minX && hitX <= aabb.maxX && hitY >= aabb.minY && hitY <= aabb.maxY && hitZ >= aabb.minZ && hitZ <= aabb.maxZ;
}
}

View File

@@ -21,7 +21,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.MinecraftForgeClient;
@@ -33,8 +32,6 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.client.config.GuiUtils; import net.minecraftforge.fml.client.config.GuiUtils;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.vecmath.Matrix4f; import javax.vecmath.Matrix4f;
@@ -54,14 +51,6 @@ public final class RenderUtils {
private static final VertexFormat ITEM_FORMAT_WITH_LIGHTMAP = new VertexFormat(DefaultVertexFormats.ITEM).addElement(DefaultVertexFormats.TEX_2S); private static final VertexFormat ITEM_FORMAT_WITH_LIGHTMAP = new VertexFormat(DefaultVertexFormats.ITEM).addElement(DefaultVertexFormats.TEX_2S);
public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) {
return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F);
}
public static boolean isInBounds(AxisAlignedBB aabb, float hitX, float hitY, float hitZ) {
return hitX >= aabb.minX && hitX <= aabb.maxX && hitY >= aabb.minY && hitY <= aabb.maxY && hitZ >= aabb.minZ && hitZ <= aabb.maxZ;
}
public static String shorten(String text, int length) { public static String shorten(String text, int length) {
if (text.length() > length) { if (text.length() > length) {
text = text.substring(0, length) + "..."; text = text.substring(0, length) + "...";
@@ -400,7 +389,6 @@ public final class RenderUtils {
} }
} }
@SideOnly(Side.CLIENT)
public static List<String> getItemTooltip(ItemStack stack) { public static List<String> getItemTooltip(ItemStack stack) {
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL); List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
@@ -416,7 +404,6 @@ public final class RenderUtils {
return lines; return lines;
} }
@SideOnly(Side.CLIENT)
public static VertexFormat getFormatWithLightMap(VertexFormat format) { public static VertexFormat getFormatWithLightMap(VertexFormat format) {
if (FMLClientHandler.instance().hasOptifine() || !ForgeModContainer.forgeLightPipelineEnabled) { if (FMLClientHandler.instance().hasOptifine() || !ForgeModContainer.forgeLightPipelineEnabled) {
return format; return format;
@@ -437,7 +424,6 @@ public final class RenderUtils {
return format; return format;
} }
@SideOnly(Side.CLIENT)
public static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) { public static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) {
TextureAtlasSprite sprite = null; TextureAtlasSprite sprite = null;