提供: Minecraft Modding Wiki
(ページの新規作成) |
(サンプルのクラス名を変更) |
||
17行目: | 17行目: | ||
import dan200.computercraft.api.ComputerCraftAPI; | import dan200.computercraft.api.ComputerCraftAPI; | ||
− | + | @Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0") | |
− | @Mod(modid=" | ||
public class SamplePeripheralCore | public class SamplePeripheralCore | ||
{ | { | ||
− | |||
− | + | public static Block blockSamplePeripheral; | |
− | |||
− | |||
− | |||
− | GameRegistry.registerBlock( | + | @EventHandler |
− | + | public void init(FMLInitializationEvent event) | |
− | + | { | |
− | + | blockSamplePeripheral = new SamplePeripheralBlock(); | |
− | + | GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral"); | |
+ | GameRegistry.registerTileEntity(SamplePeripheralTile.class, "tileSamplePeripheral"); | ||
+ | ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider()); | ||
+ | } | ||
} | } | ||
</source> | </source> | ||
− | * | + | *SamplePeripheralBlock.java |
<source lang = "java"> | <source lang = "java"> | ||
package mods.blocksample; | package mods.blocksample; | ||
46行目: | 44行目: | ||
import net.minecraft.world.World; | import net.minecraft.world.World; | ||
− | public class | + | public class SamplePeripheralBlock extends BlockContainer { |
− | protected | + | protected SamplePeripheralBlock() { |
− | |||
super(Material.rock); | super(Material.rock); | ||
− | setBlockName(" | + | setBlockName("blockSamplePeripheral"); |
setCreativeTab(CreativeTabs.tabBlock); | setCreativeTab(CreativeTabs.tabBlock); | ||
} | } | ||
@Override | @Override | ||
− | public TileEntity createNewTileEntity(World world, int a) | + | public TileEntity createNewTileEntity(World world, int a) { |
− | + | return new SamplePeripheralTile(); | |
− | return new | ||
} | } | ||
64行目: | 60行目: | ||
</source> | </source> | ||
− | * | + | *SamplePeripheralTile.java |
<source lang = "java"> | <source lang = "java"> | ||
package mods.blocksample; | package mods.blocksample; | ||
74行目: | 70行目: | ||
import dan200.computercraft.api.peripheral.IPeripheral; | import dan200.computercraft.api.peripheral.IPeripheral; | ||
− | public class | + | public class SamplePeripheralTile extends TileEntity implements IPeripheral |
{ | { | ||
161行目: | 157行目: | ||
TileEntity tile = world.getTileEntity(x, y, z); | TileEntity tile = world.getTileEntity(x, y, z); | ||
− | if (tile != null && tile instanceof | + | if (tile != null && tile instanceof SamplePeripheralTile) { |
− | return new | + | return new SamplePeripheralTile(); |
} | } | ||
174行目: | 170行目: | ||
書きかけ | 書きかけ | ||
==== SamplePeripheralCore.java ==== | ==== SamplePeripheralCore.java ==== | ||
− | ==== | + | ==== SamplePeripheralBlock.java ==== |
− | ==== | + | ==== SamplePeripheralTile.java ==== |
==== PeripheralProvider.java ==== | ==== PeripheralProvider.java ==== |
2014年10月11日 (土) 05:39時点における版
この記事は執筆中です。加筆してくださる人を募集しています。 |
この記事は"Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.64~"を前提MODとしています。 |
目次
周辺機器の追加
ComputerやTurtleから利用できる簡単な周辺機器ブロックを追加する。
ソースコード
- SamplePeripheralCore.java
package mods.blocksample; import net.minecraft.block.Block; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import dan200.computercraft.api.ComputerCraftAPI; @Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0") public class SamplePeripheralCore { public static Block blockSamplePeripheral; @EventHandler public void init(FMLInitializationEvent event) { blockSamplePeripheral = new SamplePeripheralBlock(); GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral"); GameRegistry.registerTileEntity(SamplePeripheralTile.class, "tileSamplePeripheral"); ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider()); } }
- SamplePeripheralBlock.java
package mods.blocksample; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class SamplePeripheralBlock extends BlockContainer { protected SamplePeripheralBlock() { super(Material.rock); setBlockName("blockSamplePeripheral"); setCreativeTab(CreativeTabs.tabBlock); } @Override public TileEntity createNewTileEntity(World world, int a) { return new SamplePeripheralTile(); } }
- SamplePeripheralTile.java
package mods.blocksample; import net.minecraft.tileentity.TileEntity; import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; public class SamplePeripheralTile extends TileEntity implements IPeripheral { @Override public String getType() { return "sample"; } @Override public String[] getMethodNames() { return new String[] { "fn1", "fn2", "fn3", "fn4" }; } @Override public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws LuaException, InterruptedException { switch (method) { case 0: if( arguments.length < 1 || !(arguments[0] instanceof Boolean) ) { throw new LuaException("Expected boolean"); } return new Object[] {"fn1", arguments[0]}; case 1: if( arguments.length < 1 || !(arguments[0] instanceof Double) ) { throw new LuaException("Expected number"); } return new Object[] {"fn2", arguments[0]}; case 2: if( arguments.length < 1 || !(arguments[0] instanceof String) ) { throw new LuaException("Expected string"); } return new Object[] {"fn3", arguments[0]}; case 3: if( arguments.length < 1 || arguments[0] == null) { throw new LuaException("Expected argument"); } return new Object[] {"fn4", arguments[0], arguments[0].getClass().getName()}; } return null; } @Override public void attach(IComputerAccess computer) { } @Override public void detach(IComputerAccess computer) { } @Override public boolean equals(IPeripheral other) { return (other != null) && (other.getClass() == this.getClass()); } }
- PeripheralProvider.java
package mods.blocksample; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.api.peripheral.IPeripheralProvider; public class PeripheralProvider implements IPeripheralProvider { @Override public IPeripheral getPeripheral(World world, int x, int y, int z, int side) { TileEntity tile = world.getTileEntity(x, y, z); if (tile != null && tile instanceof SamplePeripheralTile) { return new SamplePeripheralTile(); } return null; } }
解説
書きかけ