Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/pipe-switch' into pipe-switch
Browse files Browse the repository at this point in the history
  • Loading branch information
mak8427 committed Feb 1, 2025
2 parents ec91878 + 567ca28 commit 975f2dc
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 74 deletions.
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pluginManagement {
}

plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.31'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.32'
}


79 changes: 7 additions & 72 deletions src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.IntStream;

Expand All @@ -22,19 +20,14 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidRegistry;

import org.jetbrains.annotations.NotNull;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.io.ByteStreams;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.drawable.ItemDrawable;
import com.gtnewhorizons.modularui.api.math.MainAxisAlignment;
Expand All @@ -43,7 +36,6 @@
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.Column;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.MultiChildWidget;

import cpw.mods.fml.relauncher.Side;
Expand All @@ -65,8 +57,6 @@
import gregtech.common.GTClient;
import gregtech.common.covers.CoverFluidfilter;
import gregtech.common.covers.CoverInfo;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;

Expand All @@ -76,6 +66,9 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov
.mapToInt(Enum::ordinal)
.mapToObj(i -> "mCoverData" + i)
.toArray(String[]::new);
private static final String[] COVER_DIRECTION_NAMES = new String[] { "GT5U.interface.coverTabs.down",
"GT5U.interface.coverTabs.up", "GT5U.interface.coverTabs.north", "GT5U.interface.coverTabs.south",
"GT5U.interface.coverTabs.west", "GT5U.interface.coverTabs.east" };

// New Cover Information
protected final CoverInfo[] coverInfos = new CoverInfo[] { null, null, null, null, null, null };
Expand All @@ -87,7 +80,6 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov

protected short mID = 0;
public long mTickTimer = 0;
private Map<ForgeDirection, ISerializableObject> clientCoverData = new HashMap<>();

protected void writeCoverNBT(NBTTagCompound aNBT, boolean isDrop) {
final NBTTagList tList = new NBTTagList();
Expand Down Expand Up @@ -746,7 +738,7 @@ public IDrawable[] getBackground() {
return backgrounds.toArray(new IDrawable[] {});
}
}.setOnClick((clickData, widget) -> onTabClicked(clickData, widget, direction))
.dynamicTooltip(() -> getCoverTabTooltip(direction, clientCoverData.get(direction)))
.dynamicTooltip(() -> getCoverTabTooltip(direction))
.setSize(COVER_TAB_WIDTH, COVER_TAB_HEIGHT))
.addChild(
new ItemDrawable(() -> getCoverItemAtSide(direction)).asWidget()
Expand All @@ -755,20 +747,10 @@ public IDrawable[] getBackground() {
(COVER_TAB_HEIGHT - ICON_SIZE) / 2))
.setEnabled(widget -> getCoverItemAtSide(direction) != null));
}

builder.widget(
new FakeSyncWidget<>(
this::collectCoverData,
data -> clientCoverData = data,
this::writeClientCoverData,
this::readClientCoverData));
}

@SideOnly(Side.CLIENT)
protected List<String> getCoverTabTooltip(ForgeDirection side, ISerializableObject coverData) {
final String[] SIDE_TOOLTIPS = new String[] { "GT5U.interface.coverTabs.down", "GT5U.interface.coverTabs.up",
"GT5U.interface.coverTabs.north", "GT5U.interface.coverTabs.south", "GT5U.interface.coverTabs.west",
"GT5U.interface.coverTabs.east" };
protected List<String> getCoverTabTooltip(ForgeDirection side) {
final CoverInfo coverInfo = getCoverInfoAtSide(side);
final ItemStack coverItem = coverInfo.getDisplayStack();
if (coverItem == null) return Collections.emptyList();
Expand All @@ -779,10 +761,10 @@ protected List<String> getCoverTabTooltip(ForgeDirection side, ISerializableObje
final ImmutableList.Builder<String> builder = ImmutableList.builder();
builder.add(
(coverHasGUI ? EnumChatFormatting.UNDERLINE : EnumChatFormatting.DARK_GRAY)
+ StatCollector.translateToLocal(SIDE_TOOLTIPS[side.ordinal()])
+ StatCollector.translateToLocal(COVER_DIRECTION_NAMES[side.ordinal()])
+ (coverHasGUI ? EnumChatFormatting.RESET + ": " : ": " + EnumChatFormatting.RESET)
+ tooltip.get(0));
builder.addAll(coverInfo.getAdditionalTooltip(coverData));
builder.addAll(coverInfo.getAdditionalTooltip(coverInfo.getCoverData()));
builder.addAll(
IntStream.range(1, tooltip.size())
.mapToObj(index -> EnumChatFormatting.GRAY + tooltip.get(index))
Expand All @@ -795,51 +777,4 @@ protected void onTabClicked(Widget.ClickData ignoredClickData, Widget widget, Fo
widget.getContext()
.openSyncedWindow(side.ordinal() + COVER_WINDOW_ID_START);
}

@NotNull
private Map<ForgeDirection, ISerializableObject> collectCoverData() {
final ImmutableMap.Builder<ForgeDirection, ISerializableObject> builder = ImmutableMap.builder();
for (final ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
final CoverInfo coverInfo = getCoverInfoAtSide(direction);
if (coverInfo.isValid()) {
builder.put(direction, coverInfo.getCoverData());
}
}

return builder.build();
}

private void writeClientCoverData(@NotNull PacketBuffer buffer,
@NotNull Map<ForgeDirection, ISerializableObject> dataMap) {
buffer.writeInt(dataMap.size());
dataMap.forEach((direction, serializableObject) -> {
final ByteBuf individualBuffer = Unpooled.buffer();
serializableObject.writeToByteBuf(individualBuffer);

buffer.writeByte(direction.ordinal());
buffer.writeInt(individualBuffer.array().length);
buffer.writeBytes(individualBuffer.array());
});
}

@NotNull
private Map<ForgeDirection, ISerializableObject> readClientCoverData(@NotNull PacketBuffer buffer) {
ImmutableMap.Builder<ForgeDirection, ISerializableObject> builder = ImmutableMap.builder();
final int size = buffer.readInt();
for (int i = 0; i < size; i++) {
final ForgeDirection direction = ForgeDirection.getOrientation(buffer.readByte());
final int length = buffer.readInt();
final byte[] object = buffer.readBytes(length)
.array();

// noinspection UnstableApiUsage
builder.put(
direction,
getCoverInfoAtSide(direction).getCoverBehavior()
.createDataObject()
.readFromPacket(ByteStreams.newDataInput(object), null));
}

return builder.build();
}
}
9 changes: 9 additions & 0 deletions src/main/java/gregtech/api/objects/GTCoverNone.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;

import com.gtnewhorizons.modularui.api.screen.ModularWindow;

import gregtech.api.gui.modularui.CoverUIBuildContext;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.util.CoverBehavior;
import gregtech.api.util.ISerializableObject;
Expand Down Expand Up @@ -234,4 +237,10 @@ protected ItemStack getDropImpl(ForgeDirection side, int aCoverID,
ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) {
return null;
}

@Override
public ModularWindow createWindow(CoverUIBuildContext buildContext) {
// Cancel opening the UI.
return null;
}
}
2 changes: 1 addition & 1 deletion src/main/java/gregtech/common/blocks/BlockMachines.java
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ public boolean onBlockActivated(World aWorld, int aX, int aY, int aZ, EntityPlay
if ((!aWorld.isRemote) && !gtTE.isUseableByPlayer(aPlayer)) {
return true;
}
return ((IGregTechTileEntity) tTileEntity).onRightclick(aPlayer, side, aOffsetX, aOffsetY, aOffsetZ);
return gtTE.onRightclick(aPlayer, side, aOffsetX, aOffsetY, aOffsetZ);
}
return false;
}
Expand Down

0 comments on commit 975f2dc

Please sign in to comment.