Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/content/Modpacks/Changes/v8.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,5 @@ A large number of machine feature interfaces have been removed, and have had the
- Item behaviors have been moved to `common/item/behavior`, and some items have been moved from `api/item` to `common/item`.
- Changed the minimum value of the `compat.minimap.surfaceRockProspectRange` and `compat.minimap.oreBlockProspectRange` configs from -1 to 0. The behavior is still disabled with 0.
- `ChargerMachine` has been merged into `BatteryBufferMachine`.
- Calling the battery buffer constructor with the following args gives the same behaviour as a charger machine: `(info, tier, inventorySize, BatteryBufferMachine.AMPS_PER_BATTERY_CHARGER, 0)`
- Calling the battery buffer constructor with the following args gives the same behaviour as a charger machine: `(info, tier, inventorySize, BatteryBufferMachine.AMPS_PER_BATTERY_CHARGER, 0)`
- Refactored Jade provider code. Use the `MachineInfoProvider` class for jade providers for a specific machine type, and `MachineTraitProvider` for providers for a specific machine trait.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import lombok.Getter;
import lombok.Setter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
Expand All @@ -33,7 +32,6 @@
@MethodsReturnNonnullByDefault
public abstract class LongDistanceEndpointMachine extends MetaMachine implements ILDEndpoint, IDataInfoProvider {

@NotNull
@Getter
private final LongDistancePipeType pipeType;
@SaveField
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.gregtechceu.gtceu.integration.jade;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.block.MetaMachineBlock;
import com.gregtechceu.gtceu.api.machine.MetaMachine;
import com.gregtechceu.gtceu.common.blockentity.FluidPipeBlockEntity;
import com.gregtechceu.gtceu.common.data.GTMaterialItems;
Expand All @@ -13,10 +14,7 @@
import com.tterrag.registrate.util.entry.ItemProviderEntry;
import snownee.jade.addon.harvest.HarvestToolProvider;
import snownee.jade.addon.harvest.SimpleToolHandler;
import snownee.jade.api.IWailaClientRegistration;
import snownee.jade.api.IWailaCommonRegistration;
import snownee.jade.api.IWailaPlugin;
import snownee.jade.api.WailaPlugin;
import snownee.jade.api.*;

import java.util.Objects;

Expand All @@ -25,30 +23,30 @@ public class GTJadePlugin implements IWailaPlugin {

@Override
public void register(IWailaCommonRegistration registration) {
registration.registerBlockDataProvider(new ElectricContainerBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new WorkableBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new ControllableBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new RecipeLogicProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new ParallelProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new RecipeOutputProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new MultiblockStructureProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new MaintenanceBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new ExhaustVentBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new SteamBoilerBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new AutoOutputBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new CableBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new MachineModeProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new StainedColorProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new HazardCleanerBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new TransformerBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new PrimitivePumpBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new DataBankBlockProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new EnergyConverterModeProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new BatteryStorageInfoProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new LDPEndpointProvider(), BlockEntity.class);
register(registration, new ElectricContainerBlockProvider(),
new WorkableBlockProvider(),
new ControllableBlockProvider(),
new RecipeLogicProvider(),
new ParallelProvider(),
new RecipeOutputProvider(),
new MultiblockStructureProvider(),
new MaintenanceBlockProvider(),
new ExhaustVentBlockProvider(),
new SteamBoilerBlockProvider(),
new AutoOutputBlockProvider(),
new CableBlockProvider(),
new MachineModeProvider(),
new StainedColorProvider(),
new HazardCleanerBlockProvider(),
new TransformerBlockProvider(),
new PrimitivePumpBlockProvider(),
new DataBankBlockProvider(),
new EnergyConverterModeProvider(),
new BatteryStorageInfoProvider(),
new LDPEndpointProvider());

if (GTCEu.Mods.isAE2Loaded()) {
registration.registerBlockDataProvider(new MEPatternBufferProvider(), BlockEntity.class);
registration.registerBlockDataProvider(new MEPatternBufferProxyProvider(), BlockEntity.class);
register(registration, new MEPatternBufferProvider(), new MEPatternBufferProxyProvider());
}

registration.registerItemStorage(GTItemStorageProvider.INSTANCE, MetaMachine.class);
Expand All @@ -58,37 +56,61 @@ public void register(IWailaCommonRegistration registration) {

@Override
public void registerClient(IWailaClientRegistration registration) {
registration.registerBlockComponent(new ElectricContainerBlockProvider(), Block.class);
registration.registerBlockComponent(new WorkableBlockProvider(), Block.class);
registration.registerBlockComponent(new ControllableBlockProvider(), Block.class);
registration.registerBlockComponent(new RecipeLogicProvider(), Block.class);
registration.registerBlockComponent(new ParallelProvider(), Block.class);
registration.registerBlockComponent(new RecipeOutputProvider(), Block.class);
registration.registerBlockComponent(new MultiblockStructureProvider(), Block.class);
registration.registerBlockComponent(new MaintenanceBlockProvider(), Block.class);
registration.registerBlockComponent(new ExhaustVentBlockProvider(), Block.class);
registration.registerBlockComponent(new SteamBoilerBlockProvider(), Block.class);
registration.registerBlockComponent(new AutoOutputBlockProvider(), Block.class);
registration.registerBlockComponent(new CableBlockProvider(), Block.class);
registration.registerBlockComponent(new MachineModeProvider(), Block.class);
registration.registerBlockComponent(new StainedColorProvider(), Block.class);
registration.registerBlockComponent(new HazardCleanerBlockProvider(), Block.class);
registration.registerBlockComponent(new TransformerBlockProvider(), Block.class);
registration.registerBlockComponent(new PrimitivePumpBlockProvider(), Block.class);
registration.registerBlockComponent(new DataBankBlockProvider(), Block.class);
registration.registerBlockComponent(new LDPEndpointProvider(), Block.class);
registration.registerBlockComponent(new EnergyConverterModeProvider(), Block.class);
registration.registerBlockComponent(new BatteryStorageInfoProvider(), Block.class);
register(registration,
new ElectricContainerBlockProvider(),
new WorkableBlockProvider(),
new ControllableBlockProvider(),
new RecipeLogicProvider(),
new ParallelProvider(),
new RecipeOutputProvider(),
new MultiblockStructureProvider(),
new MaintenanceBlockProvider(),
new ExhaustVentBlockProvider(),
new SteamBoilerBlockProvider(),
new AutoOutputBlockProvider(),
new MachineModeProvider(),
new StainedColorProvider(),
new HazardCleanerBlockProvider(),
new TransformerBlockProvider(),
new PrimitivePumpBlockProvider(),
new DataBankBlockProvider(),
new LDPEndpointProvider(),
new EnergyConverterModeProvider(),
new BatteryStorageInfoProvider(),
new CableBlockProvider());

if (GTCEu.Mods.isAE2Loaded()) {
registration.registerBlockComponent(new MEPatternBufferProvider(), Block.class);
registration.registerBlockComponent(new MEPatternBufferProxyProvider(), Block.class);
register(registration, new MEPatternBufferProvider(), new MEPatternBufferProxyProvider());
}

registration.registerItemStorageClient(GTItemStorageProvider.INSTANCE);
registration.registerFluidStorageClient(GTFluidStorageProvider.INSTANCE);
registration.registerFluidStorageClient(FluidPipeStorageProvider.INSTANCE);
}

@SafeVarargs
public static void register(IWailaCommonRegistration reg, IServerDataProvider<BlockAccessor>... providers) {
for (var provider : providers) {
Class<? extends BlockEntity> clazz = BlockEntity.class;

if (provider instanceof MachineInfoProvider<?, ?> machineInfoProvider)
clazz = machineInfoProvider.machineType;
if (provider instanceof MachineTraitProvider<?, ?>) clazz = MetaMachine.class;

reg.registerBlockDataProvider(provider, clazz);
}
}

Comment thread
gustovafing marked this conversation as resolved.
public static void register(IWailaClientRegistration reg, IBlockComponentProvider... providers) {
for (var provider : providers) {
Class<? extends Block> clazz = Block.class;
if (provider instanceof MachineInfoProvider<?, ?> || provider instanceof MachineTraitProvider<?, ?>) {
clazz = MetaMachineBlock.class;
}
reg.registerBlockComponent(provider, clazz);
}
}

static {
GTMaterialItems.TOOL_ITEMS.columnMap().forEach((type, map) -> {
if (type.harvestTags.isEmpty() || type.harvestTags.get(0).location().getNamespace().equals("minecraft"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@
import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.common.machine.trait.AutoOutputTrait;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;

import org.apache.commons.lang3.StringUtils;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

public class AutoOutputBlockProvider extends MachineTraitProvider<AutoOutputTrait> {
public class AutoOutputBlockProvider extends MachineTraitProvider<AutoOutputTrait, CompoundTag> {

public AutoOutputBlockProvider() {
super(GTCEu.id("auto_output_info"), AutoOutputTrait.TYPE);
Expand All @@ -38,32 +40,32 @@ protected void addTooltip(CompoundTag data, ITooltip tooltip, Player player, Blo
}

@Override
protected void write(CompoundTag data, BlockAccessor blockAccessor, AutoOutputTrait trait) {
protected CompoundTag write(AutoOutputTrait trait) {
var data = new CompoundTag();
if (trait.supportsAutoOutputItems()) {
var direction = trait.getItemOutputDirection();
if (direction != null) {
data.put("autoOutputItem", writeData(new CompoundTag(), direction, blockAccessor,
trait.allowsItemInputFromOutputSide(), trait.isAutoOutputItems()));
data.put("autoOutputItem",
writeData(new CompoundTag(), direction, trait.getLevel(), trait.getBlockPos(),
trait.allowsItemInputFromOutputSide(), trait.isAutoOutputItems()));
}
}
if (trait.supportsAutoOutputFluids()) {
var direction = trait.getFluidOutputDirection();
if (direction != null) {
data.put("autoOutputFluid", writeData(new CompoundTag(), direction, blockAccessor,
trait.allowsFluidInputFromOutputSide(), trait.isAutoOutputFluids()));
data.put("autoOutputFluid",
writeData(new CompoundTag(), direction, trait.getLevel(), trait.getBlockPos(),
trait.allowsFluidInputFromOutputSide(), trait.isAutoOutputFluids()));
}
}
return data;
}

private CompoundTag writeData(CompoundTag compoundTag, Direction direction, BlockAccessor blockAccessor,
private CompoundTag writeData(CompoundTag compoundTag, Direction direction, Level lvl, BlockPos pos,
boolean allowInput, boolean auto) {
compoundTag.putString("direction", direction.getName());
var level = blockAccessor.getLevel();
var pos = blockAccessor.getPosition().relative(direction);
if (level != null) {
var key = BuiltInRegistries.BLOCK.getKey(level.getBlockState(pos).getBlock());
compoundTag.putString("block", key.toString());
}
var key = BuiltInRegistries.BLOCK.getKey(lvl.getBlockState(pos).getBlock());
compoundTag.putString("block", key.toString());
compoundTag.putBoolean("allowInput", allowInput);
compoundTag.putBoolean("auto", auto);
return compoundTag;
Expand Down
Loading
Loading