Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Dandan642

Members
  • Joined

  • Last visited

Everything posted by Dandan642

  1. Guess I've got a lot to learn about this
  2. Probably NBT data, seems less complicated for a beginner
  3. And where would I use that? In the HammerBase constructor?
  4. Any examples or documentation you can point me too? I'm not familiar with those concepts yet.
  5. Hello, I'm very new to modding and pretty new to java so if my code is stupid, forgive me. I have created a HammerBase class for a hammer type tool. Currently I am able to call the setCurrentTier method in HammerBase from an keyboard input event handling class. The problem is, the way I get a hammer instance chances the value of any hammer of said resourceName. How might I change the value for only the hammer in the players hand? HammerBase.java package com.dolecki.simplyobunga.items; import com.dolecki.simplyobunga.SimplyObunga; import com.dolecki.simplyobunga.util.KeyHandler; import net.minecraft.block.BlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.PickaxeItem; import net.minecraft.util.Direction; import net.minecraft.util.math.*; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import javax.annotation.Nullable; import java.util.List; public class HammerBase extends PickaxeItem { private String toolTipIn; private int currentTier; private int maxTier; private int xIn; private int yIn; private int zIn; public HammerBase(ToolTier tier, int attackDamageIn, float attackSpeedIn, String toolTip) { super(tier, attackDamageIn, attackSpeedIn - 4, new Item.Properties().group(SimplyObunga.TAB_MAIN)); this.toolTipIn = toolTip; this.currentTier = 1; this.maxTier = tier.getMaxTier(); } @Override public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) { KeyHandler.addToolTip(tooltip, toolTipIn); super.addInformation(stack, worldIn, tooltip, flagIn); } public void setCurrentTier(String direction) { if(currentTier <= maxTier && currentTier >= 0) { if(direction.equals("up")) { if(currentTier != maxTier) this.currentTier += 1; SimplyObunga.LOGGER.info("Inc +1. Current tier: " + currentTier); } if(direction.equals("down")) { if(currentTier != 0) this.currentTier -= 1; SimplyObunga.LOGGER.info("Dec -1. Current tier: " + currentTier); } } } public void setXYZ(Direction facing) { if(currentTier >= 0 && currentTier <= 1) { xIn = currentTier; yIn = currentTier; zIn = currentTier; } else { switch (facing.getName()) { case "down": case "up": xIn = currentTier; yIn = 1; zIn = currentTier; break; case "north": case "south": xIn = currentTier; yIn = currentTier; zIn = 1; break; case "east": case "west": xIn = 1; yIn = currentTier; zIn = currentTier; break; default: SimplyObunga.LOGGER.error("No such facing index"); break; } } } @Override public boolean onBlockDestroyed(ItemStack stack, World worldIn, BlockState state, BlockPos pos, LivingEntity entityLiving) { if (!worldIn.isRemote && state.getBlockHardness(worldIn, pos) != 0.0F) { stack.damageItem(1, entityLiving, (p_220038_0_) -> { p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); }); BlockRayTraceResult targetBlock = getTargetBlock(entityLiving, worldIn); Direction blockFace = targetBlock.getFace(); setXYZ(blockFace); Vec3d blockAxis = new Vec3d(Math.abs(blockFace.getXOffset()), Math.abs(blockFace.getYOffset()), Math.abs(blockFace.getZOffset())); Vec3d plane = new Vec3d(xIn, yIn, zIn).subtract(blockAxis); BlockPos blockPos = targetBlock.getPos(); SimplyObunga.LOGGER.info("Primary Block Cord: " + blockPos + "\nBlock face: " + blockFace); // Get the donut for(int x =(int) -plane.x; x <= (int)plane.x; x++) { for (int y = (int) -plane.y; y <= (int) plane.y; y++) { for (int z = (int) -plane.z; z <= (int) plane.z; z++) { if (!(x == 0 && y == 0 && z == 0)) { BlockPos localCords = new BlockPos(x, y, z); SimplyObunga.LOGGER.info("Local Offset: " + localCords); BlockPos globalCords = localCords.add(blockPos); SimplyObunga.LOGGER.info("Global Position: " + globalCords); BlockState maybeBreakIt = worldIn.getBlockState(globalCords); if(this.canHarvestBlock(maybeBreakIt)) worldIn.destroyBlock(globalCords, true); } } } } } return true; } @Override public boolean canHarvestBlock(BlockState blockIn) { return super.canHarvestBlock(blockIn); } // Same as Item.RayTraceResult, sort of private RayTraceResult rayTrace(World worldIn, LivingEntity player) { double rayTraceDistance = player.getAttribute(PlayerEntity.REACH_DISTANCE).getValue(); // Distance of ray trace Vec3d eyePos = player.getEyePosition(0F); Vec3d look = player.getLook(0F); Vec3d rayDistTo = eyePos.add(look.x * rayTraceDistance, look.y * rayTraceDistance, look.z * rayTraceDistance); return worldIn.rayTraceBlocks(new RayTraceContext(eyePos, rayDistTo, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player)); } private BlockRayTraceResult getTargetBlock(LivingEntity entity, World worldIn) { return (BlockRayTraceResult) rayTrace(worldIn, entity); } } EventKeyInputs.java package com.dolecki.simplyobunga.util.events; import com.dolecki.simplyobunga.SimplyObunga; import com.dolecki.simplyobunga.items.HammerBase; import com.dolecki.simplyobunga.util.KeyHandler; import com.dolecki.simplyobunga.util.RegistryHandler; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; @Mod.EventBusSubscriber(modid = SimplyObunga.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class EventKeyInputs { @SubscribeEvent public static void onInput(TickEvent.ClientTickEvent event) { HammerBase hammer = (HammerBase) ForgeRegistries.ITEMS.getValue(new ResourceLocation("obunga:silver_hammer")); if(KeyHandler.NUM_PAD_7.isPressed()) { hammer.setCurrentTier("down"); } if(KeyHandler.NUM_PAD_8.isPressed()) { hammer.setCurrentTier("up"); } } }

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.