Skip to content

Commit d4b22d6

Browse files
authored
Merge pull request #153 from Circulate233/master
ME机械样板镜像,以及一些bug修复
2 parents 185120c + baeb781 commit d4b22d6

34 files changed

+817
-57
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,10 @@ dependencies {
203203

204204
// AE2 Compat
205205
// implementation(rfg.deobf("curse.maven:applied-energistics-2-223794:2747063"))
206-
implementation(rfg.deobf("curse.maven:ae2-extended-life-570458:5378163"))
206+
implementation(rfg.deobf("curse.maven:ae2-extended-life-570458:6302098"))
207207
implementation(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5504001"))
208208
implementation(rfg.deobf("curse.maven:mekanism-energistics-1027681:5408319"))
209+
implementation(rfg.deobf("curse.maven:nae2-884359:5380800"))
209210

210211
// GeckoLib
211212
implementation("software.bernie.geckolib:geckolib-forge-1.12.2:3.0.31")

src/main/java/github/kasuminova/mmce/client/gui/widget/impl/preview/MachineStructurePreviewPanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ public class MachineStructurePreviewPanel extends Row {
4848

4949
protected final WorldSceneRendererWidget renderer;
5050

51+
public WorldSceneRendererWidget getRenderer(){
52+
return renderer;
53+
}
54+
5155
public MachineStructurePreviewPanel(final DynamicMachine machine) {
5256
renderer = (WorldSceneRendererWidget) new WorldSceneRendererWidget(machine)
5357
.setWidthHeight(WORLD_RENDERER_WIDTH, WORLD_RENDERER_HEIGHT)
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package github.kasuminova.mmce.common.block.appeng;
2+
3+
import appeng.api.implementations.items.IMemoryCard;
4+
import appeng.api.implementations.items.MemoryCardMessages;
5+
import github.kasuminova.mmce.common.tile.MEPatternMirrorImage;
6+
import hellfirepvp.modularmachinery.common.CommonProxy;
7+
import hellfirepvp.modularmachinery.common.block.BlockMachineComponent;
8+
import net.minecraft.block.SoundType;
9+
import net.minecraft.block.material.Material;
10+
import net.minecraft.block.state.IBlockState;
11+
import net.minecraft.entity.player.EntityPlayer;
12+
import net.minecraft.nbt.NBTTagCompound;
13+
import net.minecraft.tileentity.TileEntity;
14+
import net.minecraft.util.BlockRenderLayer;
15+
import net.minecraft.util.EnumBlockRenderType;
16+
import net.minecraft.util.EnumFacing;
17+
import net.minecraft.util.EnumHand;
18+
import net.minecraft.util.math.BlockPos;
19+
import net.minecraft.util.text.TextComponentTranslation;
20+
import net.minecraft.world.World;
21+
import net.minecraftforge.fml.relauncher.Side;
22+
import net.minecraftforge.fml.relauncher.SideOnly;
23+
24+
import javax.annotation.Nonnull;
25+
import javax.annotation.Nullable;
26+
27+
public class BlockMEPatternMirrorImage extends BlockMachineComponent {
28+
29+
public BlockMEPatternMirrorImage() {
30+
super(Material.IRON);
31+
setHardness(2F);
32+
setResistance(10F);
33+
setSoundType(SoundType.METAL);
34+
setHarvestLevel("pickaxe", 1);
35+
setCreativeTab(CommonProxy.creativeTabModularMachinery);
36+
}
37+
38+
final String mep = "tile.modularmachinery.blockmepatternprovider";
39+
40+
@Override
41+
public boolean onBlockActivated(
42+
@Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state,
43+
@Nonnull EntityPlayer player, @Nonnull EnumHand hand,
44+
@Nonnull EnumFacing facing,
45+
float hitX, float hitY, float hitZ)
46+
{
47+
if (worldIn.isRemote || hand != EnumHand.MAIN_HAND)return false;
48+
final MEPatternMirrorImage tileEntity = (MEPatternMirrorImage) worldIn.getTileEntity(pos);
49+
if (!player.getHeldItem(hand).isEmpty()) {
50+
var heldItem = player.getHeldItem(hand);
51+
if (!player.isSneaking()) {
52+
if (heldItem.getItem() instanceof IMemoryCard memoryCard) {
53+
final String savedName = memoryCard.getSettingsName(heldItem);
54+
final NBTTagCompound data = memoryCard.getData(heldItem);
55+
56+
if (mep.equals(savedName)) {
57+
tileEntity.providerPos = BlockPos.fromLong(data.getLong("Pos"));
58+
player.sendMessage(new TextComponentTranslation("message.blockmepatternprovider.load"));
59+
} else {
60+
memoryCard.notifyUser(player, MemoryCardMessages.INVALID_MACHINE);
61+
}
62+
63+
return true;
64+
}
65+
}
66+
}
67+
var pPos = tileEntity.providerPos;
68+
if (tileEntity.providerPos == null) {
69+
player.sendMessage(new TextComponentTranslation("message.blockmepatternprovider.tip0"));
70+
} else {
71+
player.sendMessage(new TextComponentTranslation("message.blockmepatternprovider.tip1",pPos.getX(),pPos.getY(),pPos.getZ()));
72+
}
73+
return true;
74+
}
75+
76+
@Nullable
77+
@Override
78+
public TileEntity createTileEntity(World world, IBlockState state) {
79+
return new MEPatternMirrorImage();
80+
}
81+
82+
@Nullable
83+
@Override
84+
public TileEntity createNewTileEntity(World worldIn, int meta) {
85+
return new MEPatternMirrorImage();
86+
}
87+
88+
@Nonnull
89+
@Override
90+
@SideOnly(Side.CLIENT)
91+
public BlockRenderLayer getRenderLayer() {
92+
return BlockRenderLayer.CUTOUT;
93+
}
94+
95+
@Nonnull
96+
@Override
97+
public EnumBlockRenderType getRenderType(@Nonnull IBlockState state) {
98+
return EnumBlockRenderType.MODEL;
99+
}
100+
}

src/main/java/github/kasuminova/mmce/common/block/appeng/BlockMEPatternProvider.java

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package github.kasuminova.mmce.common.block.appeng;
22

3+
import appeng.api.implementations.items.IMemoryCard;
4+
import appeng.api.util.AEPartLocation;
5+
import appeng.core.sync.GuiBridge;
6+
import appeng.items.tools.quartz.ToolQuartzCuttingKnife;
7+
import appeng.util.Platform;
38
import github.kasuminova.mmce.common.tile.MEPatternProvider;
49
import hellfirepvp.modularmachinery.ModularMachinery;
510
import hellfirepvp.modularmachinery.common.CommonProxy;
@@ -13,7 +18,9 @@
1318
import net.minecraft.util.EnumFacing;
1419
import net.minecraft.util.EnumHand;
1520
import net.minecraft.util.math.BlockPos;
21+
import net.minecraft.util.text.TextComponentTranslation;
1622
import net.minecraft.world.World;
23+
import net.minecraftforge.event.ForgeEventFactory;
1724

1825
import javax.annotation.Nonnull;
1926
import javax.annotation.Nullable;
@@ -23,15 +30,43 @@ public class BlockMEPatternProvider extends BlockMEMachineComponent {
2330
@Override
2431
public boolean onBlockActivated(
2532
@Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state,
26-
@Nonnull EntityPlayer playerIn, @Nonnull EnumHand hand,
33+
@Nonnull EntityPlayer player, @Nonnull EnumHand hand,
2734
@Nonnull EnumFacing facing,
2835
float hitX, float hitY, float hitZ)
2936
{
30-
if (!worldIn.isRemote) {
31-
TileEntity te = worldIn.getTileEntity(pos);
32-
if (te instanceof MEPatternProvider) {
33-
playerIn.openGui(ModularMachinery.MODID, CommonProxy.GuiType.ME_PATTERN_PROVIDER.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
37+
if (worldIn.isRemote)return false;
38+
if (hand == EnumHand.MAIN_HAND && !player.getHeldItem(hand).isEmpty()) {
39+
var heldItem = player.getHeldItem(hand);
40+
if (player.isSneaking()) {
41+
if (heldItem.getItem() instanceof IMemoryCard memoryCard) {
42+
final String name = this.getTranslationKey();
43+
44+
final NBTTagCompound data = new NBTTagCompound();
45+
data.setLong("Pos",pos.toLong());
46+
memoryCard.setMemoryCardContents(heldItem, name, data);
47+
player.sendMessage(new TextComponentTranslation("message.blockmepatternprovider.save"));
48+
49+
return true;
50+
}
3451
}
52+
53+
if (heldItem.getItem() instanceof ToolQuartzCuttingKnife) {
54+
if (ForgeEventFactory.onItemUseStart(player, heldItem, 1) <= 0) {
55+
return false;
56+
}
57+
58+
TileEntity te = worldIn.getTileEntity(pos);
59+
60+
if (te instanceof MEPatternProvider) {
61+
Platform.openGUI(player, te, AEPartLocation.fromFacing(facing), GuiBridge.GUI_RENAMER);
62+
return true;
63+
}
64+
return false;
65+
}
66+
}
67+
TileEntity te = worldIn.getTileEntity(pos);
68+
if (te instanceof MEPatternProvider) {
69+
player.openGui(ModularMachinery.MODID, CommonProxy.GuiType.ME_PATTERN_PROVIDER.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
3570
}
3671
return true;
3772
}
@@ -86,5 +121,4 @@ public void onBlockPlacedBy(@Nonnull final World worldIn,
86121
provider.readProviderNBT(tag.getCompoundTag("patternProvider"));
87122
}
88123
}
89-
90124
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package github.kasuminova.mmce.common.tile;
2+
3+
import github.kasuminova.mmce.common.util.InfItemFluidHandler;
4+
import hellfirepvp.modularmachinery.common.crafting.ComponentType;
5+
import hellfirepvp.modularmachinery.common.lib.ComponentTypesMM;
6+
import hellfirepvp.modularmachinery.common.machine.IOType;
7+
import hellfirepvp.modularmachinery.common.machine.MachineComponent;
8+
import hellfirepvp.modularmachinery.common.tiles.base.MachineComponentTile;
9+
import hellfirepvp.modularmachinery.common.tiles.base.SelectiveUpdateTileEntity;
10+
import hellfirepvp.modularmachinery.common.tiles.base.TileColorableMachineComponent;
11+
import net.minecraft.nbt.NBTTagCompound;
12+
import net.minecraft.tileentity.TileEntity;
13+
import net.minecraft.util.math.BlockPos;
14+
15+
import javax.annotation.Nullable;
16+
17+
public class MEPatternMirrorImage extends TileColorableMachineComponent implements SelectiveUpdateTileEntity, MachineComponentTile {
18+
19+
public BlockPos providerPos;
20+
public InfItemFluidHandler handler;
21+
22+
public MEPatternMirrorImage(){
23+
handler = new InfItemFluidHandler();
24+
}
25+
26+
@Nullable
27+
@Override
28+
public MachineComponent<InfItemFluidHandler> provideComponent() {
29+
if (providerPos != null) {
30+
TileEntity tileEntity = this.world.getTileEntity(providerPos);
31+
if (tileEntity instanceof MEPatternProvider){
32+
return new MachineComponent<>(IOType.INPUT) {
33+
public ComponentType getComponentType() {
34+
return ComponentTypesMM.COMPONENT_ITEM_FLUID_GAS;
35+
}
36+
37+
public InfItemFluidHandler getContainerProvider() {
38+
return ((MEPatternProvider) tileEntity).getInfHandler();
39+
}
40+
};
41+
}
42+
}
43+
return new MachineComponent<>(IOType.INPUT) {
44+
public ComponentType getComponentType() {
45+
return ComponentTypesMM.COMPONENT_ITEM_FLUID_GAS;
46+
}
47+
48+
public InfItemFluidHandler getContainerProvider() {
49+
return handler;
50+
}
51+
};
52+
}
53+
54+
@Override
55+
public void readCustomNBT(NBTTagCompound compound) {
56+
super.readCustomNBT(compound);
57+
if(compound.hasKey("providerPos")){
58+
this.providerPos = BlockPos.fromLong(compound.getLong("providerPos"));
59+
}
60+
}
61+
62+
@Override
63+
public void writeCustomNBT(NBTTagCompound compound) {
64+
super.writeCustomNBT(compound);
65+
if (providerPos != null){
66+
compound.setLong("providerPos", providerPos.toLong());
67+
}
68+
}
69+
70+
}

0 commit comments

Comments
 (0)