From c4053e05958a4ab1030529e33d464f8fea4f608f Mon Sep 17 00:00:00 2001 From: JackCarterSmith Date: Wed, 27 Feb 2019 16:11:28 +0100 Subject: [PATCH] Added multiside texture - Method name different but is registerIcons() instead of registerBlockIcons() - Prepare sounds implementation --- build.gradle | 4 +- src/main/java/fr/jcs/bigalarm/BigAlarm.java | 7 +- .../fr/jcs/bigalarm/blocks/AlarmBlock.java | 43 +++++++++-- .../bigalarm/tileentitys/TileEntityAlarm.java | 70 ++++++++++++++++++ .../bigalarm/tileentitys/TileEntitySound.java | 32 ++++++++ .../java/fr/jcs/bigalarm/utils/LogHelper.java | 24 ++++++ .../fr/jcs/bigalarm/utils/SoundHelper.java | 44 +++++++++++ .../blocks/alarmBlock/{front.png => side.png} | Bin .../textures/blocks/alarmBlock/top.png | Bin 0 -> 305 bytes .../bigalarm/textures/blocks/default.png | Bin 0 -> 316 bytes 10 files changed, 215 insertions(+), 9 deletions(-) create mode 100644 src/main/java/fr/jcs/bigalarm/tileentitys/TileEntityAlarm.java create mode 100644 src/main/java/fr/jcs/bigalarm/tileentitys/TileEntitySound.java create mode 100644 src/main/java/fr/jcs/bigalarm/utils/LogHelper.java create mode 100644 src/main/java/fr/jcs/bigalarm/utils/SoundHelper.java rename src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/{front.png => side.png} (100%) create mode 100644 src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/top.png create mode 100644 src/main/resources/assets/bigalarm/textures/blocks/default.png diff --git a/build.gradle b/build.gradle index e60f11a..9df0690 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "0.1.1" +version = "0.1.2" group = "fr.jcs.bigalarm" archivesBaseName = "BigAlarm" @@ -26,7 +26,7 @@ sourceCompatibility = 1.7 targetCompatibility = 1.7 minecraft { - version = "1.7.10-10.13.4.1558-1.7.10" + version = "1.7.10-10.13.4.1566-1.7.10" replace '${version}', project.version mappings = 'stable_12' runDir = "eclipse" diff --git a/src/main/java/fr/jcs/bigalarm/BigAlarm.java b/src/main/java/fr/jcs/bigalarm/BigAlarm.java index 64922e4..37cce76 100644 --- a/src/main/java/fr/jcs/bigalarm/BigAlarm.java +++ b/src/main/java/fr/jcs/bigalarm/BigAlarm.java @@ -5,18 +5,22 @@ import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; import fr.jcs.bigalarm.blocks.AlarmBlock; import fr.jcs.bigalarm.proxy.CommonProxy; import net.minecraft.block.Block; @Mod(modid = BigAlarmRefs.MOD_ID, name = BigAlarmRefs.MOD_NAME, version = "@VERSION@", canBeDeactivated = false, dependencies = "") public class BigAlarm { - @Instance + @Instance(BigAlarmRefs.MOD_ID) public static BigAlarm instance; @SidedProxy(clientSide = BigAlarmRefs.PROXY_CLIENT, serverSide = BigAlarmRefs.PROXY_SERVER) public static CommonProxy proxy; + public static final SimpleNetworkWrapper netWrapper = NetworkRegistry.INSTANCE.newSimpleChannel(BigAlarmRefs.MOD_ID); public static AlarmBlock alarmBlock; @@ -32,6 +36,7 @@ public class BigAlarm { System.out.println("[BigAlarm]: Connecting speakers..."); alarmBlock = new AlarmBlock(); GameRegistry.registerBlock(alarmBlock, "alarmBlock"); + //netWrapper.registerMessage(messageHandler, requestMessageType, 0, Side.SERVER); } @EventHandler diff --git a/src/main/java/fr/jcs/bigalarm/blocks/AlarmBlock.java b/src/main/java/fr/jcs/bigalarm/blocks/AlarmBlock.java index 6a59d1e..1b8f5b6 100644 --- a/src/main/java/fr/jcs/bigalarm/blocks/AlarmBlock.java +++ b/src/main/java/fr/jcs/bigalarm/blocks/AlarmBlock.java @@ -1,33 +1,64 @@ package fr.jcs.bigalarm.blocks; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import fr.jcs.bigalarm.BigAlarmRefs; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class AlarmBlock extends BlockContainer { + private IIcon iconAlarm; public AlarmBlock() { super(Material.iron); - this.setHardness(5.0F); - this.setResistance(4.0F); + setHardness(5.0F); + setResistance(20.0F); this.setStepSound(soundTypeMetal); this.setUnlocalizedName(BigAlarmRefs.MOD_ID + ":alarmBlock"); - this.setTextureName(BigAlarmRefs.MOD_ID + ":alarmBlock/front"); + this.setTextureName(BigAlarmRefs.MOD_ID + ":default"); this.setCreativeTab(CreativeTabs.tabDecorations); } - + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { //Method name different but is registerBlockIcons() + this.blockIcon = iconRegister.registerIcon(BigAlarmRefs.MOD_ID + ":alarmBlock/side"); + this.iconAlarm = iconRegister.registerIcon(BigAlarmRefs.MOD_ID + ":alarmBlock/top"); + } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) + { + /*if (side == 1) { //Simplified sentence below + return this.iconAlarm; + } else { + return this.blockIcon; + }*/ + + return side == 1 ? this.iconAlarm : this.blockIcon; + } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) + { + return side == 1 ? this.iconAlarm : this.blockIcon; + } + @Override public boolean isFullBlock() { - return false; + return true; } @Override public boolean isBlockNormalCube() { - return false; + return true; } @Override diff --git a/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntityAlarm.java b/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntityAlarm.java new file mode 100644 index 0000000..419f747 --- /dev/null +++ b/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntityAlarm.java @@ -0,0 +1,70 @@ +package fr.jcs.bigalarm.tileentitys; + +import cpw.mods.fml.common.FMLCommonHandler; +import fr.jcs.bigalarm.BigAlarmRefs; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityAlarm extends TileEntity { + private static final String DEFAULT_SOUND_NAME = "default"; + private static final float BASE_SOUND_RANGE = 16F; + private static final String SOUND_PREFIX = BigAlarmRefs.MOD_ID + ":alarm-"; + + public int range; + private int prevRange; + public String soundName; + private String prevSoundName; + + private int updateTicker; + protected int tickRate; + private TileEntitySound sound; + + public TileEntityAlarm() { + soundName = ""; + //range = IC2NuclearControl.instance.alarmRange; + range = 0; + if (FMLCommonHandler.instance().getEffectiveSide().isClient()) { + sound = new TileEntitySound(); + } + } + + public int getRange() { + return range; + } + + public void setRange(int r) { + range = r; + if (prevRange != r) { + //IC2.network.get().updateTileEntityField(this, "range"); + } + prevRange = range; + } + + public String getSoundName() { + return soundName; + } + + public void setSoundName(String name) { + soundName = name; + if (prevSoundName != name){ + //IC2.network.get().updateTileEntityField(this, "soundName"); + } + prevSoundName = name; + } + + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) { + super.readFromNBT(nbttagcompound); + if (nbttagcompound.hasKey("soundName")) { + prevSoundName = soundName = nbttagcompound.getString("soundName"); + prevRange = range = nbttagcompound.getInteger("range"); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) { + super.writeToNBT(nbttagcompound); + nbttagcompound.setString("soundName", soundName); + nbttagcompound.setInteger("range", range); + } +} diff --git a/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntitySound.java b/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntitySound.java new file mode 100644 index 0000000..41a3d18 --- /dev/null +++ b/src/main/java/fr/jcs/bigalarm/tileentitys/TileEntitySound.java @@ -0,0 +1,32 @@ +package fr.jcs.bigalarm.tileentitys; + +import fr.jcs.bigalarm.utils.SoundHelper; +import net.minecraft.client.audio.PositionedSoundRecord; + +public class TileEntitySound { + private PositionedSoundRecord sound; + + public TileEntitySound() { + } + + public void stopAlarm() { + if (sound != null) { + SoundHelper.stopAlarm(sound); + sound = null; + } + } + + public void playAlarm(double x, double y, double z, String soundName, + float range, boolean skipCheck) { + if (sound == null || skipCheck) { + sound = SoundHelper.playAlarm(x, y, z, soundName, range); + } + } + + public boolean isPlaying() { + if (sound == null) { + return false; + } + return SoundHelper.isPlaying(sound); + } +} diff --git a/src/main/java/fr/jcs/bigalarm/utils/LogHelper.java b/src/main/java/fr/jcs/bigalarm/utils/LogHelper.java new file mode 100644 index 0000000..f136914 --- /dev/null +++ b/src/main/java/fr/jcs/bigalarm/utils/LogHelper.java @@ -0,0 +1,24 @@ +package fr.jcs.bigalarm.utils; + +import org.apache.logging.log4j.Level; + +import cpw.mods.fml.common.FMLLog; +import fr.jcs.bigalarm.BigAlarmRefs; + +public class LogHelper { + public static void log(Level logLevel, Object object) { + FMLLog.log(BigAlarmRefs.MOD_ID, logLevel, String.valueOf(object), new Object[0]); + } + + public static void error(Object object) { + log(Level.ERROR, object); + } + + public static void info(Object object) { + log(Level.INFO, object); + } + + public static void warn(Object object) { + log(Level.WARN, object); + } +} diff --git a/src/main/java/fr/jcs/bigalarm/utils/SoundHelper.java b/src/main/java/fr/jcs/bigalarm/utils/SoundHelper.java new file mode 100644 index 0000000..bead3c0 --- /dev/null +++ b/src/main/java/fr/jcs/bigalarm/utils/SoundHelper.java @@ -0,0 +1,44 @@ +package fr.jcs.bigalarm.utils; + +import cpw.mods.fml.client.FMLClientHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class SoundHelper { + private static final float DEFAULT_RANGE = 16F; + + private static void playSound(PositionedSoundRecord sound) { + Minecraft.getMinecraft().getSoundHandler().playSound(sound); + } + + public static PositionedSoundRecord playAlarm(double x, double y, double z, + String name, float volume) { + float range = DEFAULT_RANGE; + + if (volume > 1.0F) { + range *= volume; + } + + Entity person = FMLClientHandler.instance().getClient().renderViewEntity; + + if (person != null && volume > 0 + && person.getDistanceSq(x, y, z) < range * range) { + PositionedSoundRecord sound = new PositionedSoundRecord( + new ResourceLocation(name), volume, 1.0F, (float) x, + (float) y, (float) z); + playSound(sound); + return sound; + } + return null; + } + + public static boolean isPlaying(PositionedSoundRecord sound) { + return Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(sound); + } + + public static void stopAlarm(PositionedSoundRecord sound) { + Minecraft.getMinecraft().getSoundHandler().stopSound(sound); + } +} diff --git a/src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/front.png b/src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/side.png similarity index 100% rename from src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/front.png rename to src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/side.png diff --git a/src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/top.png b/src/main/resources/assets/bigalarm/textures/blocks/alarmBlock/top.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee1b6b5e7b5f784a7412fdfc5744ba58bc3f5ba GIT binary patch literal 305 zcmV-10nYx3P)pF<4Ht8RCwBTlUWYKAPht~X|9rexi!_Z^eWd4A7}!MJ!6}+ZQJ^J zo_$%CejG>OecyrmzQ;G~x~>k_C9gft6M@q-{oy>%fsjGCAcEk!uDwYTQO)~`sLDgA zk&R55gxxnM@_rmpPbRBikoUD5c;6Ddtcp4@iNP70ilStDG3p6?ni>wO@(63W(L`-l zB^_zEHd5i3f|;GOK_;(_%~NWlk=3N$dyX*N<}=M?(X!mXO{-Z`b)fBpF?ny*JRCwB@lUZ)VFboBGQeVaUa>(9A!3Z8!cJ>DF}#!0t>}u*Pv5bvu$Ifp|2aZZi!CC}OkuLEzpjW{(JyK_|$q7k^HH z#d|AB(VD40);|cC1hSzQw~6V=O;fj>1S;dSg-$Rlc-NHfJ!tUXqORrtn4JWmBO-w} zP7inoS@Et1Zvs!{Ep9U;-J7VY#(HFJya<19Vmr}h&)p&B$36Jwll}nE=SoSlW_bbt O0000