Compare commits

...

4 Commits

5 changed files with 37 additions and 19 deletions
+2 -2
View File
@@ -90,11 +90,11 @@ public final class AppEng {
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, AEConfig.CLIENT_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, AEConfig.CLIENT_SPEC);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, AEConfig.COMMON_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, AEConfig.COMMON_SPEC);
proxy = DistExecutor.safeRunForDist(() -> ClientHelper::new, () -> ServerHelper::new);
CreativeTab.init(); CreativeTab.init();
new FacadeItemGroup(); // This call has a side-effect (adding it to the creative screen) new FacadeItemGroup(); // This call has a side-effect (adding it to the creative screen)
proxy = DistExecutor.safeRunForDist(() -> ClientHelper::new, () -> ServerHelper::new);
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
registration = new Registration(); registration = new Registration();
modEventBus.addGenericListener(Block.class, registration::registerBlocks); modEventBus.addGenericListener(Block.class, registration::registerBlocks);
@@ -28,6 +28,7 @@ import appeng.api.events.LocatableEventAnnounce;
import appeng.api.events.LocatableEventAnnounce.LocatableEvent; import appeng.api.events.LocatableEventAnnounce.LocatableEvent;
import appeng.api.features.ILocatable; import appeng.api.features.ILocatable;
import appeng.api.features.ILocatableRegistry; import appeng.api.features.ILocatableRegistry;
import appeng.core.AELog;
import appeng.util.Platform; import appeng.util.Platform;
public final class LocatableRegistry implements ILocatableRegistry { public final class LocatableRegistry implements ILocatableRegistry {
@@ -45,8 +46,10 @@ public final class LocatableRegistry implements ILocatableRegistry {
} }
if (e.change == LocatableEvent.REGISTER) { if (e.change == LocatableEvent.REGISTER) {
AELog.debug("Registering locatable %s: %s", e.target.getLocatableSerial(), e.target);
this.set.put(e.target.getLocatableSerial(), e.target); this.set.put(e.target.getLocatableSerial(), e.target);
} else if (e.change == LocatableEvent.UNREGISTER) { } else if (e.change == LocatableEvent.UNREGISTER) {
AELog.debug("Unregistering locatable %s: %s", e.target.getLocatableSerial(), e.target);
this.set.remove(e.target.getLocatableSerial()); this.set.remove(e.target.getLocatableSerial());
} }
} }
@@ -96,16 +96,15 @@ public class FluidImportBusPart extends SharedFluidBusPart {
} }
final TileEntity te = this.getConnectedTE(); final TileEntity te = this.getConnectedTE();
LazyOptional<IFluidHandler> fhOpt = LazyOptional.empty();
if (te != null) { if (te != null) {
te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, this.getSide().getFacing().getOpposite()); LazyOptional<IFluidHandler> fhOpt = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY,
} this.getSide().getFacing().getOpposite());
if (fhOpt.isPresent()) {
try { if (fhOpt.isPresent()) {
final IFluidHandler fh = fhOpt.orElse(null); try {
final IMEMonitor<IAEFluidStack> inv = this.getProxy().getStorage().getInventory(this.getChannel()); final IFluidHandler fh = fhOpt.orElseThrow(() -> new IllegalStateException());
final IMEMonitor<IAEFluidStack> inv = this.getProxy().getStorage().getInventory(this.getChannel());
if (fh != null) {
final FluidStack fluidStack = fh.drain(this.calculateAmountToSend(), FluidAction.SIMULATE); final FluidStack fluidStack = fh.drain(this.calculateAmountToSend(), FluidAction.SIMULATE);
if (this.filterEnabled() && !this.isInFilter(fluidStack)) { if (this.filterEnabled() && !this.isInFilter(fluidStack)) {
@@ -128,12 +127,11 @@ public class FluidImportBusPart extends SharedFluidBusPart {
} }
return TickRateModulation.IDLE; return TickRateModulation.IDLE;
} catch (GridAccessException e) {
// skip
} }
} catch (GridAccessException e) {
e.printStackTrace();
} }
} }
return TickRateModulation.SLEEP; return TickRateModulation.SLEEP;
} }
@@ -22,7 +22,6 @@ import java.util.Iterator;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@@ -160,13 +159,17 @@ public class QuantumCluster implements ILocatable, IAECluster {
if (qc != null) { if (qc != null) {
final World theWorld = qc.center.getWorld(); final World theWorld = qc.center.getWorld();
if (!qc.isDestroyed) { if (!qc.isDestroyed) {
ChunkPos cPos = new ChunkPos(qc.center.getPos()); // In future versions, we might actually want to delay the entire registration
if (theWorld.getChunkProvider().isChunkLoaded(cPos)) { // until the center
// tile begins ticking normally.
if (theWorld.isBlockLoaded(qc.center.getPos())) {
final DimensionType id = theWorld.dimension.getType(); final DimensionType id = theWorld.dimension.getType();
final World cur = theWorld.getServer().getWorld(id); final World cur = theWorld.getServer().getWorld(id);
final TileEntity te = theWorld.getTileEntity(qc.center.getPos()); final TileEntity te = theWorld.getTileEntity(qc.center.getPos());
return te != qc.center || theWorld != cur; return te != qc.center || theWorld != cur;
} else {
AELog.warn("Found a registered QNB with serial %s whose chunk seems to be unloaded: %s", qe, qc);
} }
} }
} }
@@ -277,4 +280,17 @@ public class QuantumCluster implements ILocatable, IAECluster {
private void setRing(final QuantumBridgeTileEntity[] ring) { private void setRing(final QuantumBridgeTileEntity[] ring) {
this.Ring = ring; this.Ring = ring;
} }
@Override
public String toString() {
if (center == null) {
return "QuantumCluster{no-center}";
}
World world = center.getWorld();
BlockPos pos = center.getPos();
return "QuantumCluster{" + world + "," + pos + "}";
}
} }
@@ -253,9 +253,11 @@ public class AEBaseTileEntity extends TileEntity implements IOrientable, ICommon
if (this.renderFragment > 0) { if (this.renderFragment > 0) {
this.renderFragment |= 1; this.renderFragment |= 1;
} else { } else {
// Clearing the cached model-data is always harmless regardless of status
this.requestModelDataUpdate();
// TODO: Optimize Network Load // TODO: Optimize Network Load
if (this.world != null) { if (this.world != null && !this.isRemoved() && !notLoaded()) {
this.requestModelDataUpdate();
boolean alreadyUpdated = false; boolean alreadyUpdated = false;
// Let the block update it's own state with our internal state changes // Let the block update it's own state with our internal state changes
@@ -367,7 +369,6 @@ public class AEBaseTileEntity extends TileEntity implements IOrientable, ICommon
* null means nothing to store... * null means nothing to store...
* *
* @param from source of settings * @param from source of settings
*
* @return compound of source * @return compound of source
*/ */
public CompoundNBT downloadSettings(final SettingsFrom from) { public CompoundNBT downloadSettings(final SettingsFrom from) {