提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | + | {{Stb}} | |
− | {{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1. | + | {{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.64~"}} |
== 周辺機器の追加 == | == 周辺機器の追加 == | ||
− | + | ComputerやTurtleから利用できる簡単な周辺機器ブロックを追加する。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== ソースコード === | === ソースコード === | ||
*SamplePeripheralCore.java | *SamplePeripheralCore.java | ||
<source lang = "java"> | <source lang = "java"> | ||
− | package mods. | + | package mods.blocksample; |
import net.minecraft.block.Block; | import net.minecraft.block.Block; | ||
− | |||
import cpw.mods.fml.common.Mod; | import cpw.mods.fml.common.Mod; | ||
import cpw.mods.fml.common.Mod.EventHandler; | import cpw.mods.fml.common.Mod.EventHandler; | ||
import cpw.mods.fml.common.event.FMLInitializationEvent; | import cpw.mods.fml.common.event.FMLInitializationEvent; | ||
− | |||
import cpw.mods.fml.common.registry.GameRegistry; | import cpw.mods.fml.common.registry.GameRegistry; | ||
import dan200.computercraft.api.ComputerCraftAPI; | import dan200.computercraft.api.ComputerCraftAPI; | ||
− | @Mod(modid= | + | @Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0") |
− | name= | + | public class SamplePeripheralCore |
− | version= | + | { |
− | |||
− | public class SamplePeripheralCore { | ||
− | |||
− | |||
− | |||
− | |||
− | |||
public static Block blockSamplePeripheral; | public static Block blockSamplePeripheral; | ||
@EventHandler | @EventHandler | ||
− | public void | + | public void init(FMLInitializationEvent event) |
− | blockSamplePeripheral = new | + | { |
− | GameRegistry.registerBlock(blockSamplePeripheral, " | + | blockSamplePeripheral = new SamplePeripheralBlock(); |
− | + | GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral"); | |
− | + | GameRegistry.registerTileEntity(SamplePeripheralTile.class, "tileSamplePeripheral"); | |
− | |||
− | |||
− | GameRegistry.registerTileEntity( | ||
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider()); | ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider()); | ||
} | } | ||
− | |||
} | } | ||
</source> | </source> | ||
− | * | + | *SamplePeripheralBlock.java |
<source lang = "java"> | <source lang = "java"> | ||
− | package mods. | + | package mods.blocksample; |
import net.minecraft.block.BlockContainer; | import net.minecraft.block.BlockContainer; | ||
import net.minecraft.block.material.Material; | import net.minecraft.block.material.Material; | ||
+ | import net.minecraft.creativetab.CreativeTabs; | ||
import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||
import net.minecraft.world.World; | import net.minecraft.world.World; | ||
− | public class | + | public class SamplePeripheralBlock extends BlockContainer { |
− | |||
− | |||
− | |||
− | setBlockName(" | + | protected SamplePeripheralBlock() { |
+ | super(Material.rock); | ||
+ | setBlockName("blockSamplePeripheral"); | ||
setCreativeTab(CreativeTabs.tabBlock); | setCreativeTab(CreativeTabs.tabBlock); | ||
} | } | ||
73行目: | 54行目: | ||
@Override | @Override | ||
public TileEntity createNewTileEntity(World world, int a) { | public TileEntity createNewTileEntity(World world, int a) { | ||
− | return new | + | return new SamplePeripheralTile(); |
} | } | ||
} | } | ||
− | |||
</source> | </source> | ||
− | * | + | *SamplePeripheralTile.java |
<source lang = "java"> | <source lang = "java"> | ||
− | package mods. | + | package mods.blocksample; |
import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||
90行目: | 70行目: | ||
import dan200.computercraft.api.peripheral.IPeripheral; | import dan200.computercraft.api.peripheral.IPeripheral; | ||
− | public class | + | public class SamplePeripheralTile extends TileEntity implements IPeripheral |
+ | { | ||
@Override | @Override | ||
− | public String getType() { | + | public String getType() |
+ | { | ||
return "sample"; | return "sample"; | ||
} | } | ||
@Override | @Override | ||
− | public String[] getMethodNames() { | + | public String[] getMethodNames() |
− | return new String[] {}; | + | { |
+ | return new String[] { "fn1", "fn2", "fn3", "fn4" }; | ||
} | } | ||
105行目: | 88行目: | ||
public Object[] callMethod(IComputerAccess computer, ILuaContext context, | public Object[] callMethod(IComputerAccess computer, ILuaContext context, | ||
int method, Object[] arguments) throws LuaException, | int method, Object[] arguments) throws LuaException, | ||
− | InterruptedException { | + | 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; | return null; | ||
} | } | ||
@Override | @Override | ||
− | public void attach(IComputerAccess computer) { | + | public void attach(IComputerAccess computer) |
+ | { | ||
} | } | ||
@Override | @Override | ||
− | public void detach(IComputerAccess computer) { | + | public void detach(IComputerAccess computer) |
+ | { | ||
} | } | ||
@Override | @Override | ||
− | public boolean equals(IPeripheral other) { | + | public boolean equals(IPeripheral other) |
− | + | { | |
− | + | return (other != null) && (other.getClass() == this.getClass()); | |
− | |||
− | |||
− | |||
} | } | ||
133行目: | 142行目: | ||
*PeripheralProvider.java | *PeripheralProvider.java | ||
<source lang = "java"> | <source lang = "java"> | ||
− | package mods. | + | package mods.blocksample; |
import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||
140行目: | 149行目: | ||
import dan200.computercraft.api.peripheral.IPeripheralProvider; | import dan200.computercraft.api.peripheral.IPeripheralProvider; | ||
− | public class PeripheralProvider implements IPeripheralProvider { | + | public class PeripheralProvider implements IPeripheralProvider |
+ | { | ||
@Override | @Override | ||
− | public IPeripheral getPeripheral(World world, int x, int y, int z, int side) { | + | public IPeripheral getPeripheral(World world, int x, int y, int z, int side) |
+ | { | ||
TileEntity tile = world.getTileEntity(x, y, z); | TileEntity tile = world.getTileEntity(x, y, z); | ||
− | if (tile != null && tile instanceof | + | |
− | return ( | + | if (tile != null && tile instanceof SamplePeripheralTile) { |
+ | return new SamplePeripheralTile(); | ||
} | } | ||
156行目: | 168行目: | ||
=== 解説 === | === 解説 === | ||
+ | 書きかけ | ||
==== SamplePeripheralCore.java ==== | ==== SamplePeripheralCore.java ==== | ||
− | + | ==== SamplePeripheralBlock.java ==== | |
− | + | ==== SamplePeripheralTile.java ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== PeripheralProvider.java ==== | ==== PeripheralProvider.java ==== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |