From 510ab9336704a896f0ee9bc29933341188e0317c Mon Sep 17 00:00:00 2001 From: TechnoVisionDev Date: Tue, 21 Jul 2020 00:29:09 -0700 Subject: [PATCH] Events --- .../com/technovision/tutorial/Tutorial.java | 2 +- .../tutorial/events/ModClientEvents.java | 66 +++++++++++++++++++ .../tutorial/events/ModServerEvents.java | 16 +++++ .../items => forge/tags/items/gems}/ruby.json | 0 .../data/minecraft/tags/blocks/planks.json | 14 ++++ .../data/tutorial/recipes/ruby_block.json | 4 +- .../data/tutorial/tags/items/gems.json | 7 ++ 7 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/technovision/tutorial/events/ModClientEvents.java create mode 100644 src/main/java/com/technovision/tutorial/events/ModServerEvents.java rename src/main/resources/data/{tutorial/tags/items => forge/tags/items/gems}/ruby.json (100%) create mode 100644 src/main/resources/data/minecraft/tags/blocks/planks.json create mode 100644 src/main/resources/data/tutorial/tags/items/gems.json diff --git a/src/main/java/com/technovision/tutorial/Tutorial.java b/src/main/java/com/technovision/tutorial/Tutorial.java index 19f5980..b0228a5 100644 --- a/src/main/java/com/technovision/tutorial/Tutorial.java +++ b/src/main/java/com/technovision/tutorial/Tutorial.java @@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger; @Mod("tutorial") public class Tutorial { - private static final Logger LOGGER = LogManager.getLogger(); + public static final Logger LOGGER = LogManager.getLogger(); public static final String MOD_ID = "tutorial"; public Tutorial() { diff --git a/src/main/java/com/technovision/tutorial/events/ModClientEvents.java b/src/main/java/com/technovision/tutorial/events/ModClientEvents.java new file mode 100644 index 0000000..5df3239 --- /dev/null +++ b/src/main/java/com/technovision/tutorial/events/ModClientEvents.java @@ -0,0 +1,66 @@ +package com.technovision.tutorial.events; + +import com.technovision.tutorial.Tutorial; +import com.technovision.tutorial.util.RegistryHandler; +import net.minecraft.client.gui.screen.inventory.CraftingScreen; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.passive.SheepEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Items; +import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.Effects; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.GuiOpenEvent; +import net.minecraftforge.event.entity.living.LivingEvent; +import net.minecraftforge.event.entity.player.AttackEntityEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = Tutorial.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) +public class ModClientEvents { + + @SubscribeEvent (priority = EventPriority.HIGHEST) + public static void onCraftingTableOpen(GuiOpenEvent event) { + if (event.isCancelable()) { + if (event.getGui() instanceof CraftingScreen) { + event.setCanceled(true); + Tutorial.LOGGER.info("Player tried to open a crafting table!"); + } + } + } + + @SubscribeEvent // LivingEntity#func_233580_cy_c() ----> LivingEntity#getPosition() + public static void onJumpWithStick(LivingEvent.LivingJumpEvent event) { + LivingEntity player = event.getEntityLiving(); + if (player.getHeldItemMainhand().getItem() == Items.STICK) { + Tutorial.LOGGER.info("Player tried to jump with a stick!"); + World world = player.getEntityWorld(); + world.setBlockState(player.func_233580_cy_().add(0, -1, 0), RegistryHandler.RUBY_BLOCK.get().getDefaultState()); + } + } + + @SubscribeEvent + public static void onDamageSheep(AttackEntityEvent event) { + if (event.getEntityLiving().getHeldItemMainhand().getItem() == RegistryHandler.POISON_APPLE.get()) { + if (event.getTarget().isAlive()) { + LivingEntity target = (LivingEntity) event.getTarget(); + if (target instanceof SheepEntity) { + + PlayerEntity player = event.getPlayer(); + target.addPotionEffect(new EffectInstance(Effects.POISON, 200)); + target.setGlowing(true); + + // Client Only + if (!event.getPlayer().getEntityWorld().isRemote) { + String msg = TextFormatting.RED + "That sheep isn't feeling so good..."; + player.sendMessage(new StringTextComponent(msg), player.getUniqueID()); + } + } + } + } + } +} diff --git a/src/main/java/com/technovision/tutorial/events/ModServerEvents.java b/src/main/java/com/technovision/tutorial/events/ModServerEvents.java new file mode 100644 index 0000000..6f08d55 --- /dev/null +++ b/src/main/java/com/technovision/tutorial/events/ModServerEvents.java @@ -0,0 +1,16 @@ +package com.technovision.tutorial.events; + +import com.technovision.tutorial.Tutorial; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.event.ServerChatEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = Tutorial.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.DEDICATED_SERVER) +public class ModServerEvents { + + @SubscribeEvent + public static void onCraftingTableOpen(ServerChatEvent event) { + // Your Code Here + } +} diff --git a/src/main/resources/data/tutorial/tags/items/ruby.json b/src/main/resources/data/forge/tags/items/gems/ruby.json similarity index 100% rename from src/main/resources/data/tutorial/tags/items/ruby.json rename to src/main/resources/data/forge/tags/items/gems/ruby.json diff --git a/src/main/resources/data/minecraft/tags/blocks/planks.json b/src/main/resources/data/minecraft/tags/blocks/planks.json new file mode 100644 index 0000000..45ecd9c --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/planks.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_planks", + "minecraft:spruce_planks", + "minecraft:birch_planks", + "minecraft:jungle_planks", + "minecraft:acacia_planks", + "minecraft:dark_oak_planks", + "minecraft:crimson_planks", + "minecraft:warped_planks", + "tutorial:ruby_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/tutorial/recipes/ruby_block.json b/src/main/resources/data/tutorial/recipes/ruby_block.json index 6d1a970..5baec81 100644 --- a/src/main/resources/data/tutorial/recipes/ruby_block.json +++ b/src/main/resources/data/tutorial/recipes/ruby_block.json @@ -10,11 +10,11 @@ { "x": { - "tag": "tutorial:ruby" + "tag": "tutorial:gems" }, "d": { - "item": "minecraft:diamond" + "tag": "forge:gems/diamond" } }, "result": diff --git a/src/main/resources/data/tutorial/tags/items/gems.json b/src/main/resources/data/tutorial/tags/items/gems.json new file mode 100644 index 0000000..cabeda1 --- /dev/null +++ b/src/main/resources/data/tutorial/tags/items/gems.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:emerald", + "tutorial:ruby" + ] +} \ No newline at end of file