mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Settings tool and first impl
This commit is contained in:
parent
8a200a50bd
commit
164ec9a192
10
src/main/java/com/hbm/interfaces/ICopiable.java
Normal file
10
src/main/java/com/hbm/interfaces/ICopiable.java
Normal file
@ -0,0 +1,10 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public interface ICopiable {
|
||||
|
||||
NBTTagCompound getSettings();
|
||||
|
||||
void pasteSettings(NBTTagCompound nbt);
|
||||
}
|
||||
@ -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());
|
||||
|
||||
61
src/main/java/com/hbm/items/tool/ItemSettingsTool.java
Normal file
61
src/main/java/com/hbm/items/tool/ItemSettingsTool.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
src/main/resources/assets/hbm/textures/items/settings_tool.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/settings_tool.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 356 B |
Loading…
x
Reference in New Issue
Block a user