Skip to content

Commit 8ebe8fd

Browse files
committed
tweak IBlockInfoProvider api
1 parent 9187d9e commit 8ebe8fd

4 files changed

Lines changed: 32 additions & 44 deletions

File tree

src/main/java/com/gtnewhorizon/structurelib/alignment/constructable/ConstructableUtility.java

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@
55
import com.gtnewhorizon.structurelib.alignment.IAlignment;
66
import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing;
77
import com.gtnewhorizon.structurelib.events.SurvivalConstructionEvent;
8-
import com.gtnewhorizon.structurelib.item.BasicBlockInfoProvider;
8+
import com.gtnewhorizon.structurelib.item.ItemBlockInfoProvider;
99
import com.gtnewhorizon.structurelib.item.IBlockInfoProvider;
1010
import com.gtnewhorizon.structurelib.structure.BlockInfo;
1111
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
1212
import com.gtnewhorizon.structurelib.structure.IStructureElement;
1313
import com.gtnewhorizon.structurelib.util.Vec3Impl;
1414
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
15-
import it.unimi.dsi.fastutil.objects.ObjectSet;
16-
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
1715
import lombok.RequiredArgsConstructor;
1816
import lombok.val;
1917
import lombok.var;
2018

21-
import net.minecraft.block.Block;
2219
import net.minecraft.entity.player.EntityPlayer;
2320
import net.minecraft.entity.player.EntityPlayerMP;
2421
import net.minecraft.item.ItemBlock;
@@ -29,17 +26,9 @@
2926
import net.minecraftforge.common.util.FakePlayer;
3027
import net.minecraftforge.common.util.ForgeDirection;
3128

32-
import cpw.mods.fml.common.FMLCommonHandler;
33-
import cpw.mods.fml.common.registry.GameRegistry;
34-
3529
import java.util.ArrayDeque;
36-
import java.util.ArrayList;
37-
import java.util.HashSet;
38-
import java.util.Iterator;
39-
import java.util.List;
4030
import java.util.Map;
4131
import java.util.Queue;
42-
import java.util.Set;
4332

4433
public class ConstructableUtility {
4534
private static final int LIMIT = 16;
@@ -112,9 +101,7 @@ private static boolean handle0(ItemStack aStack, EntityPlayer aPlayer, World aWo
112101
if (itemstack.getItem() instanceof IBlockInfoProvider) {
113102
blockInfoProvider = ((IBlockInfoProvider) itemstack.getItem());
114103
} else if (itemstack.getItem() != null && ItemBlock.class.equals(itemstack.getItem().getClass())) {
115-
val itemBlock = (ItemBlock) itemstack.getItem();
116-
117-
blockInfoProvider = new BasicBlockInfoProvider(itemBlock.field_150939_a);
104+
blockInfoProvider = new ItemBlockInfoProvider(itemstack);
118105
}
119106

120107
if (blockInfoProvider == null) {
@@ -123,12 +110,15 @@ private static boolean handle0(ItemStack aStack, EntityPlayer aPlayer, World aWo
123110

124111
val blockInfoSet = callback.blocksToPlace.keySet();
125112
for (var iterator = blockInfoSet.iterator(); placedBlocks < LIMIT && iterator.hasNext(); ) {
126-
val blockInfo = iterator.next();
127-
if (!blockInfoProvider.matches(blockInfo)) {
113+
val blockInfoToCheck = iterator.next();
114+
if (!blockInfoProvider.matches(itemstack, blockInfoToCheck)) {
128115
continue;
129116
}
130117

131-
val positions = callback.blocksToPlace.get(blockInfo);
118+
val blockInfoToUse = blockInfoProvider.getBlockInfo(itemstack);
119+
120+
// blockInfoToUse might not be *exactly* the same as blockInfoToCheck
121+
val positions = callback.blocksToPlace.get(blockInfoToCheck);
132122

133123
if (positions.isEmpty()) {
134124
continue;
@@ -142,7 +132,7 @@ private static boolean handle0(ItemStack aStack, EntityPlayer aPlayer, World aWo
142132
val z = position.get2();
143133

144134
if (aWorld.isAirBlock(x, y, z) && aPlayer.inventory.mainInventory[i] != null) {
145-
val didPlace = aWorld.setBlock(x, y, z, blockInfo.block, blockInfo.meta, 3);
135+
val didPlace = aWorld.setBlock(x, y, z, blockInfoToUse.block, blockInfoToUse.meta, 3);
146136

147137
if (didPlace) {
148138
aPlayer.inventory.decrStackSize(i, 1);

src/main/java/com/gtnewhorizon/structurelib/item/BasicBlockInfoProvider.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/main/java/com/gtnewhorizon/structurelib/item/IBlockInfoProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66
public interface IBlockInfoProvider {
77
BlockInfo getBlockInfo(ItemStack itemStack);
88

9-
boolean matches(BlockInfo other);
9+
default boolean matches(ItemStack itemStack, BlockInfo other) {
10+
return this.getBlockInfo(itemStack).equals(other);
11+
}
1012
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.gtnewhorizon.structurelib.item;
2+
3+
import com.gtnewhorizon.structurelib.structure.BlockInfo;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
import net.minecraft.item.ItemBlock;
7+
import net.minecraft.item.ItemStack;
8+
9+
public class ItemBlockInfoProvider implements IBlockInfoProvider {
10+
BlockInfo blockInfo;
11+
12+
public ItemBlockInfoProvider(@NotNull ItemStack itemStack) {
13+
this.blockInfo = new BlockInfo(((ItemBlock) itemStack.getItem()).field_150939_a, itemStack.getItemDamage());
14+
}
15+
16+
@Override
17+
public BlockInfo getBlockInfo(ItemStack itemStack) {
18+
return this.blockInfo;
19+
}
20+
}

0 commit comments

Comments
 (0)