Skip to content

Commit

Permalink
Merge branch 'master' into Rockbreaker-BasaltAdd
Browse files Browse the repository at this point in the history
  • Loading branch information
LazyFleshWasTaken authored Feb 1, 2025
2 parents 973135f + 98c7e6b commit d113581
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/main/java/goodgenerator/loader/RecipeLoader2.java
Original file line number Diff line number Diff line change
Expand Up @@ -1555,8 +1555,8 @@ public static void RecipeLoad() {
MaterialsAlloy.TITANSTEEL.getPlateDense(8), ItemRefer.HiC_T4.get(8),
ItemList.Field_Generator_UHV.get(8),
GGMaterial.enrichedNaquadahAlloy.get(OrePrefixes.gearGtSmall, 64) },
new FluidStack[] { MaterialsElements.STANDALONE.RHUGNOR.getFluidStack(144),
GGMaterial.dalisenite.getMolten(1152), MaterialsAlloy.BOTMIUM.getFluidStack(288) },
new FluidStack[] { Materials.RadoxPolymer.getMolten(1296), GGMaterial.dalisenite.getMolten(1152),
MaterialsAlloy.BOTMIUM.getFluidStack(288) },
ItemRefer.Compact_Fusion_MK4.get(1),
6000,
(int) TierEU.RECIPE_UV);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import gregtech.api.util.ISerializableObject;
import gregtech.api.util.WorldSpawnedEventBuilder.ParticleEventBuilder;
import gregtech.common.GTClient;
import gregtech.common.blocks.ItemMachines;
import gregtech.common.config.Other;
import gregtech.common.covers.CoverDrain;
import gregtech.common.covers.CoverFluidRegulator;
Expand Down Expand Up @@ -473,6 +474,138 @@ public void blockPipeOnSide(ForgeDirection side, EntityPlayer entityPlayer, byte
}
}

@Override
public void onLeftclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
// Only trigger if the player is sneaking
if (!aPlayer.isSneaking()) {
return;
}

// Retrieve the item's MetaTileEntity
final ItemStack handItem = aPlayer.inventory.getCurrentItem();
if (handItem == null) return;

IMetaTileEntity meta = ItemMachines.getMetaTileEntity(handItem);
if (!(meta instanceof MTEFluid handFluid)) return;

// Preserve old connections and meta ID
byte oldConnections = this.mConnections;
short oldMetaID = (short) aBaseMetaTileEntity.getMetaTileID();

// Create the new fluid pipe
MTEFluid newPipe = (MTEFluid) handFluid.newMetaEntity(aBaseMetaTileEntity);
if (newPipe == null) return;

// Preserve old connections
newPipe.mConnections = oldConnections;
newPipe.mDisableInput = this.mDisableInput;

// Record old pipe parameters
long oldCapacity = this.mCapacity;
boolean oldGasProof = this.mGasProof;
int oldHeatResistance = this.mHeatResistance;

// Add fluid to the new pipe
if (this.mPipeAmount <= newPipe.mPipeAmount) {
for (int i = 0; i < mPipeAmount; i++) {
if (this.mFluids[i] != null) {
newPipe.mFluids[i] = this.mFluids[i].copy();
newPipe.mFluids[i].amount = Math.min(this.mFluids[i].amount, newPipe.mCapacity);
}
}
}

// Update to the new pipe
aBaseMetaTileEntity.setMetaTileID((short) handItem.getItemDamage());
aBaseMetaTileEntity.setMetaTileEntity(newPipe);

// Construct a change message if needed
StringBuilder message = new StringBuilder();

// Compare capacity changes
if (oldCapacity != newPipe.mCapacity) {
message.append(oldCapacity * 20)
.append("L/seconds → ");
message.append(newPipe.mCapacity > oldCapacity ? EnumChatFormatting.GREEN : EnumChatFormatting.RED)
.append(newPipe.mCapacity * 20)
.append("L/secs")
.append(EnumChatFormatting.RESET);
}

// Compare heat resistance
if (oldHeatResistance != newPipe.mHeatResistance) {
if (message.length() > 0) message.append(" | ");
message.append(oldHeatResistance)
.append("K → ");
message
.append(newPipe.mHeatResistance > oldHeatResistance ? EnumChatFormatting.GREEN : EnumChatFormatting.RED)
.append(newPipe.mHeatResistance)
.append("K")
.append(EnumChatFormatting.RESET);
}

// Compare gas handling
if (oldGasProof != newPipe.mGasProof) {
if (message.length() > 0) message.append(" | ");
if (newPipe.mGasProof) {
message.append(EnumChatFormatting.GREEN)
.append("Now Gas-Proof");
} else {
message.append(EnumChatFormatting.RED)
.append("No Longer Gas-Proof");
}
message.append(EnumChatFormatting.RESET);
}

// Send a chat message if anything changed
if (message.length() > 0) {
GTUtility.sendChatToPlayer(
aPlayer,
StatCollector.translateToLocal("GT5U.item.pipe.swap") + " " + message.toString());
}

// Force updates to sync changes
aBaseMetaTileEntity.markDirty();
aBaseMetaTileEntity.issueTextureUpdate();
aBaseMetaTileEntity.issueBlockUpdate();
aBaseMetaTileEntity.issueClientUpdate();

// Handle inventory operations unless in creative mode
if (!aPlayer.capabilities.isCreativeMode) {
ItemStack oldPipe = new ItemStack(handItem.getItem(), 1, oldMetaID);
boolean addedToInventory = false;

// Attempt to stack with existing items
if (oldPipe != null) {
for (int i = 0; i < aPlayer.inventory.mainInventory.length; i++) {
ItemStack slot = aPlayer.inventory.mainInventory[i];
if (slot != null && slot.getItem() == oldPipe.getItem()
&& slot.getItemDamage() == oldPipe.getItemDamage()
&& slot.stackSize < slot.getMaxStackSize()) {
slot.stackSize++;
addedToInventory = true;
break;
}
}
// Add new stack if stacking failed
if (!addedToInventory) {
addedToInventory = aPlayer.inventory.addItemStackToInventory(oldPipe);
}
// If still unsuccessful, drop the item
if (!addedToInventory) {
aPlayer.dropPlayerItemWithRandomChoice(oldPipe, false);
}
}

// Decrement the placed pipe from the player's hand
handItem.stackSize--;
if (handItem.stackSize <= 0) {
aPlayer.inventory.setInventorySlotContents(aPlayer.inventory.currentItem, null);
}
}
return;
}

@Override
public boolean onWrenchRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer entityPlayer,
float aX, float aY, float aZ, ItemStack aTool) {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/assets/gregtech/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,7 @@ GT5U.item.pipe.gas_proof.yes=Yes
GT5U.item.pipe.gas_proof.no=No
GT5U.item.pipe.amount=Pipe Amount
GT5U.item.pipe.empty=Empty
GT5U.item.pipe.swap=Pipe Swapped:

gt.behaviour.paintspray.infinite.gui.header=Select a Color
gt.behaviour.paintspray.infinite.gui.lock_error=§eSpray can is §clocked§e! §bSneak middle-click to unlock.
Expand Down

0 comments on commit d113581

Please sign in to comment.