Skip to content

Commit 1669432

Browse files
Merge branch 'master' into 2.7.x
2 parents 3cfe760 + e4bcb9f commit 1669432

File tree

8 files changed

+142
-17
lines changed

8 files changed

+142
-17
lines changed

dependencies.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies {
5656
compileOnly("com.github.GTNewHorizons:NotEnoughItems:2.7.18-GTNH:dev") { transitive = false }
5757
compileOnly("com.github.GTNewHorizons:OpenComputers:1.11.4-GTNH:dev") { transitive = false }
5858
compileOnly("com.github.GTNewHorizons:waila:1.8.2:dev") { transitive = false }
59+
compileOnly("com.github.GTNewHorizons:FloodLights:1.4.5:dev") { transitive = false }
5960

6061
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-521-GTNH:dev")
6162
runtimeOnlyNonPublishable("com.github.GTNewHorizons:GT5-Unofficial:5.09.51.63:dev")
@@ -64,6 +65,7 @@ dependencies {
6465
runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.7.18-GTNH:dev")
6566
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Hodgepodge:2.6.15:dev")
6667
runtimeOnlyNonPublishable("com.github.GTNewHorizons:ForgeMultipart:1.6.2:dev")
68+
runtimeOnlyNonPublishable("com.github.GTNewHorizons:FloodLights:1.4.5:dev")
6769

6870
compileOnly deobf("https://www.immibis.com/mcmoddl/files/immibis-microblocks-59.1.2.jar", "immibis-microblocks-59.1.2")
6971
compileOnly deobf("https://www.immibis.com/mcmoddl/files/immibis-core-59.1.4.jar", "immibis-core-59.1.4")

src/main/java/com/recursive_pineapple/matter_manipulator/common/building/AbstractBuildable.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import appeng.helpers.ICustomNameObject;
4848
import appeng.parts.AEBasePart;
4949

50-
import com.recursive_pineapple.matter_manipulator.MMMod;
5150
import com.recursive_pineapple.matter_manipulator.asm.Optional;
5251
import com.recursive_pineapple.matter_manipulator.common.items.manipulator.ItemMatterManipulator;
5352
import com.recursive_pineapple.matter_manipulator.common.items.manipulator.ItemMatterManipulator.ManipulatorTier;
@@ -82,13 +81,9 @@ public AbstractBuildable(EntityPlayer player, MMState state, ManipulatorTier tie
8281
public boolean tryConsumePower(ItemStack stack, World world, int x, int y, int z, ImmutableBlockSpec spec) {
8382
double euUsage = EU_PER_BLOCK * spec.getBlock().getBlockHardness(world, x, y, z);
8483

85-
try {
86-
Block block = spec.getBlock();
87-
if (block.isBlockContainer) {
88-
euUsage *= TE_PENALTY;
89-
}
90-
} catch (Throwable e) {
91-
MMMod.LOG.error("Could not get Block.isBlockContainer field", e);
84+
Block block = spec.getBlock();
85+
if (block.hasTileEntity(spec.getBlockMeta())) {
86+
euUsage *= TE_PENALTY;
9287
}
9388

9489
return tryConsumePower(stack, x, y, z, euUsage);

src/main/java/com/recursive_pineapple/matter_manipulator/common/building/CopyableProperty.java

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ public enum CopyableProperty {
1414
TEXT,
1515
ORIENTATION,
1616
DELAY,
17+
INVERTED,
18+
COLOR,
19+
ROTATION_STATE,
1720
;
1821

1922
public static final ImmutableList<CopyableProperty> VALUES = ImmutableList.copyOf(values());

src/main/java/com/recursive_pineapple/matter_manipulator/common/compat/BlockPropertyRegistry.java

+130-4
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@
4646
import com.recursive_pineapple.matter_manipulator.common.utils.Mods;
4747
import com.recursive_pineapple.matter_manipulator.common.utils.Mods.Names;
4848

49+
import de.keridos.floodlights.tileentity.TileEntityMetaFloodlight;
50+
import de.keridos.floodlights.tileentity.TileEntitySmallFloodlight;
4951
import gcewing.architecture.common.tile.TileArchitecture;
5052
import ic2.api.tile.IWrenchable;
5153
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
5254
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
53-
import scala.tools.nsc.typechecker.MethodSynthesis.MethodSynth.Getter;
54-
import scala.tools.nsc.typechecker.MethodSynthesis.MethodSynth.Setter;
5555

5656
public class BlockPropertyRegistry {
5757

@@ -131,7 +131,7 @@ public static void getProperties(World world, int x, int y, int z, Map<String, B
131131

132132
properties.putAll(props);
133133

134-
if (block.isBlockContainer) {
134+
if (block.hasTileEntity(world.getBlockMetadata(x, y, z))) {
135135
TileEntity tile = world.getTileEntity(x, y, z);
136136

137137
if (tile != null) {
@@ -154,7 +154,7 @@ public static BlockProperty<?> getProperty(World world, int x, int y, int z, Str
154154
BlockProperty<?> prop = props.get(name);
155155
if (prop != null) return prop;
156156

157-
if (block.isBlockContainer) {
157+
if (block.hasTileEntity(world.getBlockMetadata(x, y, z))) {
158158
TileEntity tile = world.getTileEntity(x, y, z);
159159

160160
if (tile != null) {
@@ -176,6 +176,7 @@ public static void init() {
176176
if (Mods.StorageDrawers.isModLoaded()) initStorageDrawers();
177177
if (Mods.IndustrialCraft2.isModLoaded()) initIC2();
178178
if (Mods.ArchitectureCraft.isModLoaded()) initArch();
179+
if (Mods.FloodLights.isModLoaded()) initFloodLights();
179180
}
180181

181182
// #region Vanilla
@@ -848,6 +849,131 @@ public void setValue(World world, int x, int y, int z, Orientation value) {
848849

849850
// #endregion
850851

852+
// #region FloodLights
853+
854+
private static void initFloodLights() {
855+
registerTileEntityInterfaceProperty(TileEntityMetaFloodlight.class, new AbstractDirectionBlockProperty("facing") {
856+
857+
@Override
858+
public ForgeDirection getValue(World world, int x, int y, int z) {
859+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return UNKNOWN;
860+
861+
return floodlight.getOrientation();
862+
}
863+
864+
@Override
865+
public void setValue(World world, int x, int y, int z, ForgeDirection forgeDirection) {
866+
// Do the same thing FloodLights do in `onBlockPlacedBy`
867+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return;
868+
869+
floodlight.setOrientation(forgeDirection);
870+
871+
if (!(floodlight instanceof TileEntitySmallFloodlight)) {
872+
// copy rotation info into metadata because FloodLights does it too
873+
world.setBlockMetadataWithNotify(x, y, z, forgeDirection.ordinal(), 2);
874+
} else {
875+
// NB: small electric light does not use metadata for rotation
876+
// instead, it uses it to discern normal/small floodlights
877+
// so don't modify metadata, just update it
878+
world.markBlockForUpdate(x, y, z);
879+
}
880+
}
881+
});
882+
883+
registerTileEntityInterfaceProperty(TileEntityMetaFloodlight.class, new BooleanProperty() {
884+
885+
@Override
886+
public String getName() {
887+
return "inverted";
888+
}
889+
890+
@Override
891+
public boolean getBoolean(World world, int x, int y, int z) {
892+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return false;
893+
894+
return floodlight.getInverted();
895+
}
896+
897+
@Override
898+
public void setBoolean(World world, int x, int y, int z, boolean value) {
899+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return;
900+
901+
if (floodlight.getInverted() != value) {
902+
floodlight.toggleInverted();
903+
}
904+
}
905+
});
906+
907+
registerTileEntityInterfaceProperty(TileEntityMetaFloodlight.class, new IntegerProperty() {
908+
909+
@Override
910+
public String getName() {
911+
return "mode";
912+
}
913+
914+
@Override
915+
public int getInt(World world, int x, int y, int z) {
916+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return 0;
917+
918+
return floodlight.getMode();
919+
}
920+
921+
@Override
922+
public void setInt(World world, int x, int y, int z, int value) {
923+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return;
924+
925+
floodlight.setMode(value);
926+
}
927+
});
928+
929+
registerTileEntityInterfaceProperty(TileEntityMetaFloodlight.class, new IntegerProperty() {
930+
931+
@Override
932+
public String getName() {
933+
return "color";
934+
}
935+
936+
@Override
937+
public int getInt(World world, int x, int y, int z) {
938+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return 0;
939+
940+
return floodlight.getColor();
941+
}
942+
943+
@Override
944+
public void setInt(World world, int x, int y, int z, int value) {
945+
if (!(world.getTileEntity(x, y, z) instanceof TileEntityMetaFloodlight floodlight)) return;
946+
947+
floodlight.setColor(value);
948+
}
949+
});
950+
951+
registerTileEntityInterfaceProperty(TileEntitySmallFloodlight.class, new BooleanProperty() {
952+
953+
@Override
954+
public String getName() {
955+
return "rotation_state";
956+
}
957+
958+
@Override
959+
public boolean getBoolean(World world, int x, int y, int z) {
960+
if (!(world.getTileEntity(x, y, z) instanceof TileEntitySmallFloodlight floodlight)) return false;
961+
962+
return floodlight.getRotationState();
963+
}
964+
965+
@Override
966+
public void setBoolean(World world, int x, int y, int z, boolean value) {
967+
if (!(world.getTileEntity(x, y, z) instanceof TileEntitySmallFloodlight floodlight)) return;
968+
969+
floodlight.setRotationState(value);
970+
world.markBlockForUpdate(x, y, z);
971+
}
972+
});
973+
}
974+
975+
// #endregion
976+
851977
public static DirectionBlockProperty methodIntDirectionTile(Class<?> clazz, String getterName, String setterName) {
852978
try {
853979
Method getter = clazz.getDeclaredMethod(getterName);

src/main/java/com/recursive_pineapple/matter_manipulator/common/structure/StructureWrapperInstanceInfo.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import gregtech.api.metatileentity.implementations.MTEEnhancedMultiBlockBase;
1212

1313
import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
14-
import com.gtnewhorizons.modularui.api.drawable.TextRenderer;
1514

1615
import it.unimi.dsi.fastutil.chars.Char2IntArrayMap;
1716

@@ -27,8 +26,6 @@ public StructureWrapperInstanceInfo(StructureWrapper<MTE> structure) {
2726
this.structure = structure;
2827
}
2928

30-
private static final int ERROR_WRAP_WIDTH = 180;
31-
3229
public String getErrors() {
3330
List<String> lines = new ArrayList<>();
3431

@@ -48,7 +45,7 @@ public String getErrors() {
4845
RESET
4946
);
5047

51-
lines.addAll(TextRenderer.getFontRenderer().listFormattedStringToWidth(error, ERROR_WRAP_WIDTH));
48+
lines.add(error);
5249
}
5350
}
5451

src/main/java/com/recursive_pineapple/matter_manipulator/common/uplink/MTEMMUplink.java

+1
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inve
186186
),
187187
TextWidget.dynamicString(() -> structureInstanceInfo.getErrors())
188188
.setTextAlignment(Alignment.CenterLeft)
189+
.setMaxWidth(179)
189190
.setEnabled(structureInstanceInfo.hasErrors)
190191
);
191192
}

src/main/java/com/recursive_pineapple/matter_manipulator/common/utils/Mods.java

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public enum Mods {
1919
ForgeMicroblocks(Names.FORGE_MICROBLOCKS),
2020
/** The forge multipart library. */
2121
ForgeMultipart(Names.FORGE_MULTIPART),
22+
FloodLights(Names.FLOOD_LIGHTS),
2223
GregTech(Names.GREG_TECH),
2324
GTPlusPlus(Names.G_T_PLUS_PLUS),
2425
GraviSuite(Names.GRAVI_SUITE),
@@ -51,6 +52,7 @@ public static class Names {
5152
public static final String ENDER_I_O = "EnderIO";
5253
public static final String FORGE_MICROBLOCKS = "ForgeMicroblock";
5354
public static final String FORGE_MULTIPART = "ForgeMultipart";
55+
public static final String FLOOD_LIGHTS = "FloodLights";
5456
public static final String GREG_TECH = "gregtech";
5557
public static final String GRAVI_SUITE = "GraviSuite";
5658
public static final String G_T_PLUS_PLUS = "miscutils";

src/main/resources/META-INF/mm_at.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
public net.minecraft.nbt.NBTTagList field_74747_a # tagList
22
public net.minecraft.nbt.NBTTagCompound field_74784_a # tagMap
33

4-
public net.minecraft.block.Block field_149758_A # isBlockContainer
54
public net.minecraft.item.ItemReed field_150935_a # the block this fancy item places
65
public net.minecraft.block.BlockSlab field_150004_a # whether the slab is a full block
76

0 commit comments

Comments
 (0)