Added partial Galacticraft compatibility for 1.12.2

This commit is contained in:
Unknown 2019-01-02 19:10:36 +01:00 committed by unknown
parent 266b863417
commit 46f8ce5aba
4 changed files with 421 additions and 9 deletions

View file

@ -0,0 +1,376 @@
package cr0s.warpdrive.compat;
import cr0s.warpdrive.WarpDrive;
import cr0s.warpdrive.api.IBlockTransformer;
import cr0s.warpdrive.api.ITransformation;
import cr0s.warpdrive.api.WarpDriveText;
import cr0s.warpdrive.config.WarpDriveConfig;
import net.minecraft.block.Block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class CompatGalacticraft implements IBlockTransformer {
private static Class<?> classBlockAdvanced;
private static Class<?> classBlockConcealedDetector;
private static Class<?> classBlockParaChest;
private static Class<?> classBlockTier1TreasureChest;
private static Class<?> classBlockTorchBase;
public static void register() {
try {
classBlockAdvanced = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockAdvanced");
classBlockConcealedDetector = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockConcealedDetector");
classBlockParaChest = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockParaChest");
classBlockTier1TreasureChest = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest");
classBlockTorchBase = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase");
WarpDriveConfig.registerBlockTransformer("Galacticraft", new CompatGalacticraft());
} catch(final ClassNotFoundException exception) {
exception.printStackTrace();
}
}
@Override
public boolean isApplicable(final Block block, final int metadata, final TileEntity tileEntity) {
return classBlockAdvanced.isInstance(block)
|| classBlockConcealedDetector.isInstance(block)
|| classBlockParaChest.isInstance(block)
|| classBlockTier1TreasureChest.isInstance(block)
|| classBlockTorchBase.isInstance(block);
}
@Override
public boolean isJumpReady(final Block block, final int metadata, final TileEntity tileEntity, final WarpDriveText reason) {
return true;
}
@Override
public NBTBase saveExternals(final World world, final int x, final int y, final int z,
final Block block, final int blockMeta, final TileEntity tileEntity) {
// nothing to do
return null;
}
@Override
public void removeExternals(final World world, final int x, final int y, final int z,
final Block block, final int blockMeta, final TileEntity tileEntity) {
// nothing to do
}
/*
As of Galacticraft 1.12.2-4.0.1.184
- = detected by instanceof micdoodle8.mods.galacticraft.core.blocks.BlockAdvanced (derived in BlockAdvancedTile, BlockTransmitter, BlockTileGC)
+ = not detected but no impact or already handled by vanilla compatibility
# = needs explicit detection
micdoodle8.mods.galacticraft.core.blocks.BlockParaChest
micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest
micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase
D = handled through dictionary
- micdoodle8.mods.galacticraft.core.blocks.BlockAirLockFrame gc air lock frame (meta 0) / gc air lock controller (meta 1)
frame = no impact
controller = no impact
+ micdoodle8.mods.galacticraft.core.blocks.BlockAirLockWall air lock seal extends BlockBreakable
- micdoodle8.mods.galacticraft.core.blocks.BlockAluminumWire gc aluminum wire
+ micdoodle8.mods.galacticraft.core.blocks.BlockBasic tin decoration, ores, etc.
+ micdoodle8.mods.galacticraft.core.blocks.BlockBasicMoon
+ micdoodle8.mods.galacticraft.core.blocks.BlockCheese
- micdoodle8.mods.galacticraft.core.blocks.BlockEmergencyBox
+ micdoodle8.mods.galacticraft.core.blocks.BlockEnclosed gc aluminum wire extends Block
+ micdoodle8.mods.galacticraft.core.blocks.BlockFallenMeteor ? extends Block
- micdoodle8.mods.galacticraft.core.blocks.BlockFluidPipe gc oxygen pipe
+ micdoodle8.mods.galacticraft.core.blocks.BlockGrating n/a extends Block
- micdoodle8.mods.galacticraft.core.blocks.BlockLandingPad
- micdoodle8.mods.galacticraft.core.blocks.BlockLandingPadFull
+ micdoodle8.mods.galacticraft.core.blocks.BlockNasaWorkbench gc nasa workbench extends BlockContainer
+ micdoodle8.mods.galacticraft.core.blocks.BlockOxygenDetector ? extends BlockContainer
+ micdoodle8.mods.galacticraft.core.blocks.BlockSpaceGlass n/a (glass windows) extends Block
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockShortRangeTelepad gc short range telepad
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockWalkway
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockBasicMars n/a extends Block
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockConcealedRedstone n/a extends Block
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockConcealedRepeater n/a extends BlockRedstoneRepeater
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockFluidTank gc fluid tank extends Block
- micdoodle8.mods.galacticraft.planets.venus.blocks.BlockCrashedProbe gc crashed probe
no impact
- micdoodle8.mods.galacticraft.core.blocks.BlockCargoLoader gc cargo loader / gc cargo unloader
- micdoodle8.mods.galacticraft.core.blocks.BlockDish gc radio telescope
- micdoodle8.mods.galacticraft.core.blocks.BlockFuelLoader gc fuel loader
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine coal generation / ingot compressor
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine2 gc electric ingot compressor / gc circuit fabricator / gc oxygen storage module / gc deconstructor
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine3 gc painter
- micdoodle8.mods.galacticraft.core.blocks.BlockMachineTiered gc energy storage module / gc electric furnace / gc energy storage module / gc electric furnace
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenCollector gc air collector
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenCompressor gc air compressor / gc oxygen decompressor
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenDistributor gc air distributor
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenSealer gc air sealer
- micdoodle8.mods.galacticraft.core.blocks.BlockRefinery gc refinery
- micdoodle8.mods.galacticraft.core.blocks.BlockSolar gc solar panel
- micdoodle8.mods.galacticraft.core.blocks.BlockSpinThruster gc space station thruster
- micdoodle8.mods.galacticraft.planets.mars.blocks.BlockMachineMarsT2 gc gas liquefier / gc methane synthesizer / gc water electrolyzer
- micdoodle8.mods.galacticraft.planets.venus.blocks.BlockGeothermalGenerator gc geothermal generator
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15
- micdoodle8.mods.galacticraft.core.blocks.BlockCrafting gc magnetic crafting table
# micdoodle8.mods.galacticraft.core.blocks.BlockParaChest gc parachest tile extends BlockContainer
# micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest ? (including Moon/Mars/Venus) extends BlockContainer
metadata 0 / 1 / 2 5 3 4
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockBeamReceiver gc beam receiver
FacingSide int 0 / 1 / 2 5 3 4
metadata 0 / 1 / 2 5 3 4
- micdoodle8.mods.galacticraft.planets.mars.BlockScreen gc view screen
metadata 0 / 1 / 2 5 3 4
is it fully implemented yet?
- micdoodle8.mods.galacticraft.core.BlockPanelLighting gc panel lighting
metadata 0 / 1 / 2 / 3 / 4
meta int 0 / 1 / 2 5 3 4 if metadata = 0 or 1
meta int 0 8 / 1 9 / 2 5 3 4 / 10 13 11 12 if metadata = 2 or 3
meta int 0 8 16 24 / 1 25 17 9 / 2 21 19 4 / 3 20 18 5 / 10 29 27 12 / 11 28 26 13 if metadata = 4
- micdoodle8.mods.galacticraft.core.blocks.BlockPlatform (lift) gc platform
metadata 0 / 1 3 4 2
oc int 0 / 1 3 4 2 (same as metadata?)
# micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase n/a (including unlit and glowstone torches) extends Block
metadata 1 3 2 4 / 5
# micdoodle8.mods.galacticraft.core.blocks.BlockConcealedDetector gc player detector (player detector, creative only) extends Block
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15 (not EnumFacing)
- micdoodle8.mods.galacticraft.planets.mars.blocks.BlockMachineMars gc cryogenic chamber / gc planet terraformer / gc launch controller
mainBlockPosition.x/y/z int absolute coordinates (optional, see cryogenic chamber)
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15
- micdoodle8.mods.galacticraft.core.blocks.BlockMulti gc dummy block
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockTelepadFake gc fake short range telepad
mainBlockPosition.x/y/z int absolute coordinates
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockBeamReflector gc beam reflector
HasTarget boolean 1 when targeting?
TargetX/Y/Z int absolute coordinates
D- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockMinerBase gc astro miner base builder
D- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockMinerBaseFull gc astro miner base
facing int 0 1 2 3 ? (only relevant on master tile?)
masterpos.x/y/z absolute coordinates
TargetPoints list TabCompound
x/y/z absolute coordinates
=> anchor
D micdoodle8.mods.galacticraft.planets.mars.BlockBossSpawner minecraft:gc dungeon boss spawner (including Moon/Mars/Venus) extends Block
chestX/Y/Z int absolute coordinates
roomCoordsX/Y/Z int absolute coordinates
roomSizeX/Y/Z int
=> anchor
D- micdoodle8.mods.galacticraft.planets.mars.BlockBrightLamp gc arc lamp
metadata 0 / 1 / 2 5 3 4
Facing int if 0 or 1, 0 3 1 2; otherwise, no change
AirBlocks list TagCompound
x/y/z absolute coordinates
=> anchor
D micdoodle8.mods.galacticraft.planets.mars.BlockBreathableAir n/a extends BlockAir
=> ignored
D micdoodle8.mods.galacticraft.planets.mars.BlockSpaceStationBase gc space station extends BlockContainer
mainBlockPosition.x/y/z
=> anchor
D- micdoodle8.mods.galacticraft.planets.mars.BlockTelemetry gc telemetry unit
is it fully implemented yet?
=> anchor
*/
// ----------------------------------------- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
private static final int[] rotFacing = { 0, 1, 5, 4, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
private static final int[] rotDetector = { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12 };
private static final int[] rotLighting23 = { 0, 9, 5, 4, 2, 3, 6, 7, 0, 1, 13, 12, 10, 11, 14, 15 };
private static final int[] rotLighting4 = { 8, 25, 21, 20, 2, 3, 6, 7, 16, 1, 29, 28, 10, 11, 14, 15,
24, 9, 5, 4, 18, 19, 22, 23, 0, 17, 13, 12, 26, 27, 30, 31 };
@SuppressWarnings({"unchecked", "deprecation"})
@Override
public int rotate(final Block block, final int metadata, final NBTTagCompound nbtTileEntity, final ITransformation transformation) {
final byte rotationSteps = transformation.getRotationSteps();
// multiblock
if ( nbtTileEntity != null
&& nbtTileEntity.hasKey("mainBlockPosition") ) {
final NBTTagCompound tagCompoundMainBlockPosition = nbtTileEntity.getCompoundTag("mainBlockPosition");
if ( tagCompoundMainBlockPosition.hasKey("x")
&& tagCompoundMainBlockPosition.hasKey("y")
&& tagCompoundMainBlockPosition.hasKey("z") ) {
final int x = nbtTileEntity.getInteger("x");
final int y = nbtTileEntity.getInteger("y");
final int z = nbtTileEntity.getInteger("z");
final BlockPos blockPosMain = transformation.apply(x, y, z);
tagCompoundMainBlockPosition.setInteger("x", blockPosMain.getX());
tagCompoundMainBlockPosition.setInteger("y", blockPosMain.getY());
tagCompoundMainBlockPosition.setInteger("z", blockPosMain.getZ());
}
}
// target for Beam reflector
if ( nbtTileEntity != null
&& nbtTileEntity.getBoolean("HasTarget") ) {
if ( nbtTileEntity.hasKey("TargetX")
&& nbtTileEntity.hasKey("TargetY")
&& nbtTileEntity.hasKey("TargetZ") ) {
final int x = nbtTileEntity.getInteger("TargetX");
final int y = nbtTileEntity.getInteger("TargetY");
final int z = nbtTileEntity.getInteger("TargetZ");
if (transformation.isInside(x, y, z)) {
final BlockPos blockPosTarget = transformation.apply(x, y, z);
nbtTileEntity.setInteger("TargetX", blockPosTarget.getX());
nbtTileEntity.setInteger("TargetY", blockPosTarget.getY());
nbtTileEntity.setInteger("TargetZ", blockPosTarget.getZ());
} else {
nbtTileEntity.setBoolean("HasTarget", false);
}
}
}
// beam receiver
if ( nbtTileEntity != null
&& nbtTileEntity.getString("id").contains("beam receiver")
&& nbtTileEntity.hasKey("FacingSide") ) {
final int facingSide = nbtTileEntity.getInteger("FacingSide");
switch (rotationSteps) {
case 1:
nbtTileEntity.setInteger("FacingSide", rotFacing[facingSide]);
break;
case 2:
nbtTileEntity.setInteger("FacingSide", rotFacing[rotFacing[facingSide]]);
break;
case 3:
nbtTileEntity.setInteger("FacingSide", rotFacing[rotFacing[rotFacing[facingSide]]]);
break;
default:
break;
}
}
// panel lighting
if ( nbtTileEntity != null
&& nbtTileEntity.getString("id").contains("panel lighting")
&& nbtTileEntity.hasKey("meta") ) {
final int meta = nbtTileEntity.getInteger("meta");
if ( metadata == 0
|| metadata == 1 ) {
switch (rotationSteps) {
case 1:
nbtTileEntity.setInteger("meta", rotFacing[meta]);
break;
case 2:
nbtTileEntity.setInteger("meta", rotFacing[rotFacing[meta]]);
break;
case 3:
nbtTileEntity.setInteger("meta", rotFacing[rotFacing[rotFacing[meta]]]);
break;
default:
break;
}
} else if ( metadata == 2
|| metadata == 3 ) {
switch (rotationSteps) {
case 1:
nbtTileEntity.setInteger("meta", rotLighting23[meta]);
break;
case 2:
nbtTileEntity.setInteger("meta", rotLighting23[rotLighting23[meta]]);
break;
case 3:
nbtTileEntity.setInteger("meta", rotLighting23[rotLighting23[rotLighting23[meta]]]);
break;
default:
break;
}
} else if (metadata == 4) {
switch (rotationSteps) {
case 1:
nbtTileEntity.setInteger("meta", rotLighting4[meta]);
break;
case 2:
nbtTileEntity.setInteger("meta", rotLighting4[rotLighting4[meta]]);
break;
case 3:
nbtTileEntity.setInteger("meta", rotLighting4[rotLighting4[rotLighting4[meta]]]);
break;
default:
break;
}
} else {
WarpDrive.logger.error(String.format("Unsupported Galacticraft lighting panel %s:%d with nbt %s",
block, metadata, nbtTileEntity));
}
}
// specific rotation for Concealed detector blocks
if (classBlockConcealedDetector.isInstance(block)) {
switch (rotationSteps) {
case 1:
return rotDetector[metadata];
case 2:
return rotDetector[rotDetector[metadata]];
case 3:
return rotDetector[rotDetector[rotDetector[metadata]]];
default:
return metadata;
}
}
// generic rotation based on EnumFacing properties
final IBlockState blockState = block.getStateFromMeta(metadata);
PropertyEnum<EnumFacing> propertyFacing = null;
for (final IProperty<?> propertyKey : blockState.getPropertyKeys()) {
if ( propertyKey instanceof PropertyEnum<?>
&& propertyKey.getValueClass() == EnumFacing.class ) {
propertyFacing = (PropertyEnum<EnumFacing>) propertyKey;
break;
}
}
if (propertyFacing != null) {
final EnumFacing facingOld = blockState.getValue(propertyFacing);
// skip vertical facings
if ( facingOld == EnumFacing.DOWN
|| facingOld == EnumFacing.UP ) {
return metadata;
}
// turn horizontal facings
final EnumFacing facingNew;
switch (rotationSteps) {
case 1:
facingNew = facingOld.rotateY();
break;
case 2:
facingNew = facingOld.rotateY().rotateY();
break;
case 3:
facingNew = facingOld.rotateY().rotateY().rotateY();
break;
default:
facingNew = facingOld;
break;
}
final IBlockState blockStateNew = blockState.withProperty(propertyFacing, facingNew);
return block.getMetaFromState(blockStateNew);
}
return metadata;
}
@Override
public void restoreExternals(final World world, final BlockPos blockPos,
final IBlockState blockState, final TileEntity tileEntity,
final ITransformation transformation, final NBTBase nbtBase) {
// nothing to do
}
}

View file

@ -118,6 +118,33 @@ public class Dictionary {
config.get("block_tags", "minecraft:structure_block" , "Anchor StopMining").getString();
config.get("block_tags", "computercraft:command_computer" , "Anchor SkipMining").getString();
// @TODO MC1.12 config.get("block_tags", "ic2:blockPersonal" , "Anchor SkipMining").getString(); // IC2 personal chest, need property filtering
config.get("block_tags", "galacticraftcore:arclamp" , "Anchor").getString(); // includes hard links to its fake air lights
config.get("block_tags", "galacticraftcore:boss_spawner" , "Anchor StopMining").getString(); // includes hard links to the boss room
config.get("block_tags", "galacticraftcore:grating" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating1" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating2" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating3" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating4" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating5" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating6" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating7" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating8" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating9" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating10" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating11" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating12" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating13" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:grating14" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftcore:space_station_base" , "Anchor StopMining").getString(); // unbreakable
config.get("block_tags", "galacticraftcore:telemetry" , "Anchor").getString(); // can't make it work, is it fully implemented yet?
config.get("block_tags", "galacticraftcore:view_screen" , "Anchor StopMining").getString(); // unable to break block without spamming console
config.get("block_tags", "galacticraftplanets:beam_receiver" , "Anchor StopMining").getString(); // spamming console during jump
config.get("block_tags", "galacticraftplanets:boss_spawner_mars" , "Anchor StopMining").getString(); // includes hard links to the boss room
config.get("block_tags", "galacticraftplanets:boss_spawner_venus" , "Anchor StopMining").getString(); // includes hard links to the boss room
config.get("block_tags", "galacticraftplanets:miner_base" , "Anchor StopMining").getString(); // too complex, no reason to support
config.get("block_tags", "galacticraftplanets:miner_base_full" , "Anchor StopMining").getString(); // too complex, no reason to support
config.get("block_tags", "galacticraftplanets:telepad_fake" , "PlaceLater").getString(); // glitch after movement (no more collision?)
config.get("block_tags", "galacticraftplanets:telepad_short" , "PlaceNormal").getString(); // glitch after movement (no more collision?)
// @TODO MC1.12 config.get("block_tags", "malisisdoors:null" , "Anchor").getString(); // improper registration of block causing NPE
config.get("block_tags", "malisisdoors:rustyhatch" , "Anchor").getString();
config.get("block_tags", "rangedpumps:pump" , "Anchor").getString(); // need to reset its search area after each jump
@ -140,6 +167,11 @@ public class Dictionary {
config.get("block_tags", "warpdrive:force_field.advanced" , "PlaceLatest StopMining NoMass").getString();
config.get("block_tags", "warpdrive:force_field.superior" , "PlaceLatest StopMining NoMass").getString();
config.get("block_tags", "embers:caminite_lever" , "PlaceLatest").getString();
config.get("block_tags", "galacticraftcore:glowstone_torch" , "PlaceLatest").getString();
config.get("block_tags", "galacticraftcore:unlit_torch" , "PlaceLatest").getString();
config.get("block_tags", "galacticraftcore:unlit_torch_lit" , "PlaceLatest").getString();
config.get("block_tags", "galacticraftplanets:telepad_fake" , "PlaceLatest").getString();
config.get("block_tags", "galacticraftplanets:web_torch" , "PlaceLatest").getString();
config.get("block_tags", "ic2:foam" , "PlaceEarliest StopMining").getString();
// @TODO MC1.12 config.get("block_tags", "ic2:blockAlloy" , "PlaceEarliest StopMining").getString();
config.get("block_tags", "ic2:glass" , "PlaceEarliest StopMining").getString();
@ -183,6 +215,9 @@ public class Dictionary {
config.get("block_tags", "warpdrive:air_source" , "NoMass Expandable PlaceLatest").getString();
config.get("block_tags", "buildcraftcore:marker_path" , "NoMass LeftBehind Expandable").getString(); // depends on an unsupported separate cache
config.get("block_tags", "buildcraftcore:marker_volume" , "NoMass LeftBehind Expandable").getString(); // depends on an unsupported separate cache
config.get("block_tags", "galacticraftcore:bright_air" , "NoMass Expandable").getString();
config.get("block_tags", "galacticraftcore:breatheable_air" , "NoMass Expandable").getString();
config.get("block_tags", "galacticraftcore:bright_breathable_air" , "NoMass Expandable").getString();
// mining a mineshaft...
config.get("block_tags", "minecraft:web" , "Mining").getString();
@ -223,8 +258,8 @@ public class Dictionary {
+ "Most entities are already supported automatically. Only modify this section when something doesn't work!\n" + "\n"
+ "Tags shall be separated by at least one space, comma or tabulation.\n" + "Invalid tags will be ignored silently. Tags and block names are case sensitive.\n"
+ "In case of conflicts, the latest tag overwrite the previous ones.\n" + "- Anchor: ship can't move with this entity aboard (default: none).\n"
+ "- NoMass: this entity doesn't count when calculating ship volume/mass (default: Galacticraft air bubble).\n"
+ "- LeftBehind: this entity won't move with your ship nor transporter (default: Galacticraft air bubble).\n"
+ "- NoMass: this entity doesn't count when calculating ship volume/mass (default: boats, frames, carts).\n"
+ "- LeftBehind: this entity won't move with your ship nor transporter (default: particle effects).\n"
// + "- NoTransport: this entity is ignored by the transporter (default: -none-).\n"
+ "- NonLivingTarget: this non-living entity can be targeted/removed by weapons (default: ItemFrame, Painting).\n"
+ "- LivingWithoutAir: this living entity doesn't need air to live (default: vanilla zombies and skeletons).");
@ -232,7 +267,6 @@ public class Dictionary {
final ConfigCategory categoryEntityTags = config.getCategory("entity_tags");
String[] taggedEntitiesName = categoryEntityTags.getValues().keySet().toArray(new String[0]);
if (taggedEntitiesName.length == 0) {
config.get("entity_tags", "GalacticraftCore.OxygenBubble" , "NoMass LeftBehind").getString(); // Still needs fixing
config.get("entity_tags", "minecraft:item_frame" , "NoMass NonLivingTarget").getString();
config.get("entity_tags", "minecraft:painting" , "NoMass NonLivingTarget").getString();
config.get("entity_tags", "minecraft:leash_knot" , "NoMass NonLivingTarget").getString();

View file

@ -21,6 +21,7 @@ import cr0s.warpdrive.compat.CompatEnvironmentalTech;
import cr0s.warpdrive.compat.CompatEvilCraft;
import cr0s.warpdrive.compat.CompatExtraUtilities2;
import cr0s.warpdrive.compat.CompatForgeMultipart;
import cr0s.warpdrive.compat.CompatGalacticraft;
import cr0s.warpdrive.compat.CompatGregTech;
import cr0s.warpdrive.compat.CompatImmersiveEngineering;
import cr0s.warpdrive.compat.CompatIndustrialCraft2;
@ -1323,6 +1324,11 @@ public class WarpDriveConfig {
CompatEvilCraft.register();
}
final boolean isGalacticraftCoreLoaded = Loader.isModLoaded("galacticraftcore");
if (isGalacticraftCoreLoaded) {
CompatGalacticraft.register();
}
// final boolean isGregTechLoaded = Loader.isModLoaded("gregtech");
if (isGregTechLoaded) {
CompatGregTech.register();

View file

@ -320,11 +320,6 @@ public class JumpBlock {
}
}
if (nbtToDeploy.hasKey("hasValidBubble")) {// Galacticraft 3.0.11.333
nbtToDeploy.setBoolean("hasValidBubble", false);
// old bubble will die naturally due to missing tile entity, new one will be spawned
}
TileEntity newTileEntity = null;
boolean isForgeMultipart = false;
if ( WarpDriveConfig.isForgeMultipartLoaded
@ -406,7 +401,8 @@ public class JumpBlock {
}
// not needed: if ic2.core.block.machine.tileentity.TileEntityMatter then updated "state"
}
} else if (!superClassName.startsWith("mekanism.")) {// IC2 extensions without network optimization (transferring all fields)
} else if ( !superClassName.startsWith("mekanism.")
&& !superClassName.startsWith("micdoodle8.") ) {// IC2 extensions without network optimization (transferring all fields)
try {
final Method getNetworkedFields = teClass.getMethod("getNetworkedFields");
@SuppressWarnings("unchecked")