Settings tool and first impl

This commit is contained in:
70000hp 2024-07-20 20:28:13 -04:00
parent 8a200a50bd
commit 164ec9a192
6 changed files with 97 additions and 2 deletions

View File

@ -0,0 +1,10 @@
package com.hbm.interfaces;
import net.minecraft.nbt.NBTTagCompound;
public interface ICopiable {
NBTTagCompound getSettings();
void pasteSettings(NBTTagCompound nbt);
}

View File

@ -1276,6 +1276,7 @@ public class ModItems {
public static Item coupling_tool;
public static Item drone_linker;
public static Item radar_linker;
public static Item settings_tool;
public static Item template_folder;
public static Item journal_pip;
@ -4621,6 +4622,7 @@ public class ModItems {
coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool");
drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker");
radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker");
settings_tool = new ItemSettingsTool().setUnlocalizedName("settings_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":settings_tool");
key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key");
key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red");
@ -6868,6 +6870,7 @@ public class ModItems {
GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName());
GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName());
GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName());
GameRegistry.registerItem(settings_tool, settings_tool.getUnlocalizedName());
GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName());
GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName());
GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName());

View File

@ -0,0 +1,61 @@
package com.hbm.items.tool;
import com.hbm.interfaces.ICopiable;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.network.IDroneLinkable;
import com.hbm.util.ChatBuilder;
import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import java.util.List;
public class ItemSettingsTool extends Item {
@SuppressWarnings("unchecked")
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add("Can copy the settings (filters, fluid ID, etc) of machines");
list.add("Shift right-click to copy, right click to paste");
if(stack.stackTagCompound != null) {
NBTTagCompound nbt = stack.stackTagCompound;
list.add(EnumChatFormatting.YELLOW + "Current machine:"
+ (nbt.hasKey("tileName") ? EnumChatFormatting.BLUE + " " + nbt.getString("tileName") : EnumChatFormatting.RED + " None "));
}
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
if (!world.isRemote) {
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof ICopiable) {
ICopiable te = ((ICopiable) tile);
if (player.isSneaking()) {
stack.stackTagCompound = ((ICopiable) tile).getSettings();
stack.stackTagCompound.setString("tileName", tile.getBlockType().getLocalizedName());
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Copied settings of " + tile.getBlockType().getLocalizedName()).color(EnumChatFormatting.AQUA).flush());
} else if (stack.hasTagCompound()) {
te.pasteSettings(stack.stackTagCompound);
}
return true;
}
}
return false;
}
}

View File

@ -2,13 +2,14 @@ package com.hbm.tileentity;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.interfaces.ICopiable;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
public interface IControlReceiverFilter extends IControlReceiver {
public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
void nextMode(int i);

View File

@ -1,5 +1,6 @@
package com.hbm.tileentity.network;
import com.hbm.interfaces.ICopiable;
import com.hbm.tileentity.TileEntityMachineBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
@ -8,7 +9,7 @@ import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class TileEntityCraneBase extends TileEntityMachineBase {
public abstract class TileEntityCraneBase extends TileEntityMachineBase implements ICopiable {
public TileEntityCraneBase(int scount) {
super(scount);
@ -101,4 +102,23 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase {
super.writeToNBT(nbt);
nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal());
}
@Override
public NBTTagCompound getSettings() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("inputSide", getInputSide().ordinal());
nbt.setInteger("outputSide", getOutputSide().ordinal());
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt) {
if(nbt.hasKey("outputSide")){
outputOverride = ForgeDirection.getOrientation(nbt.getInteger("outputSide"));
onBlockChanged();
}
if(nbt.hasKey("inputSide")) {
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, nbt.getInteger("inputSide"), 3);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B