DoctorG_Mystery Posted August 18, 2021 Posted August 18, 2021 (edited) I wrote a code that, when you right-click, places a diamond block where you look, but I can't get the coordiats. here my code: if(!world.isClientSide) { double x = player.getLookVec().xCoord; double y = player.getLookVec().yCoord; double z = player.getLookVec().zCoord; BlockPos blockPos = new BlockPos(x, y, z); world.setBlockAndUpdate(blockPos, Blocks.DIAMOND_BLOCK/*for example*/.defaultBlockState()); } (the getLookVec does not work) Edited August 18, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 18, 2021 Author Posted August 18, 2021 (edited) here is all of the code in the script: package drgmystery.darklight.item; import drgmystery.darklight.init.DarklightItemGroups; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Rarity; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class TestItem1 extends Item{ public TestItem1() { super(new Properties().defaultDurability(20).tab(DarklightItemGroups.GROUP).rarity(Rarity.EPIC)); } @Override public ActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) { if(!world.isClientSide) { double x = player.getLookVec().xCoord; double y = player.getLookVec().yCoord; double z = player.getLookVec().zCoord; BlockPos blockPos = new BlockPos(x, y, z); world.setBlockAndUpdate(blockPos, Blocks.DIAMOND_BLOCK.defaultBlockState()); } return super.use(world, player, hand); } } Edited August 18, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 18, 2021 Author Posted August 18, 2021 (edited) If I do that, it tells me that at useOn (World world, PlayerEntity player, Hand hand) something is wrong and as a solution it suggests deleting the @Override the error with getLookVec() is also still there here the code: package drgmystery.darklight.item; import drgmystery.darklight.init.DarklightItemGroups; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Rarity; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class TestItem1 extends Item{ public TestItem1() { super(new Properties().defaultDurability(20).tab(DarklightItemGroups.GROUP).rarity(Rarity.EPIC)); } @Override public ActionResult<ItemStack> useOn(World world, PlayerEntity player, Hand hand) { if(!world.isClientSide) { double x = player.getLookVec().xCoord; double y = player.getLookVec().yCoord; double z = player.getLookVec().zCoord; BlockPos blockPos = new BlockPos(x, y, z); world.setBlockAndUpdate(blockPos, Blocks.DIAMOND_BLOCK.defaultBlockState()); } return super.useOn(world, player, hand); } } Edited August 18, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 I have use -> useOn and deleted the @Override and whats with the getLookVec? Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 Describe to me how i can do it, i understand the principle, but not yet how i can use it here. Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 Overriting means somthing like transmission so you declares a methode in a class an give out if needed but how can I Overrite/declares useOn? First you mean I shoud use useOn not use so I have remove use and write useOn so there's an error and as solution I shoud remove the @Override than you said I shoud overrite the methode. Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 So the key word ist extends? Quote
Luis_ST Posted August 19, 2021 Posted August 19, 2021 no, learn basic java, and then come back to minecraft modding Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 wow I learned java and beguin moding, I hadn't any Problems, than I don't now or understand one thing I quest in a Forum so the final awnser is: "lern java" thanks 1 Quote
Luis_ST Posted August 19, 2021 Posted August 19, 2021 (edited) if you don't know how to override the correct method you don't know basic java Edited August 19, 2021 by Luis_ST Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 (edited) I see now a Video specific for overriting I think I understand now: I have a basic method: public void breathe () { System.out.println ("puuuuuh"); } then I have three (or more / less) objects on which it should be executed: animal x = new bird (); x. breathe (); x = new cat (); x. breathe (); x = new animal (); x. breathe (); //so the result is: puuuuuh puuuuuh puuuuuh But if you change the ...prnitln("puuuuuh"); zu ...println("pip pip"); directly in the class of bird then the master method that is in animal was overwritten. //so here is the result: pip pip puuuuuh puuuuuh what you say to that? Edited August 19, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 19, 2021 Author Posted August 19, 2021 and what is the basic / master method for my code? Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 (edited) I have no made a base methode and an overrited methode in 2 Scripts: Base methode: package drgmystery.darklight.init; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class DarklightOverrite { public ActionResult<ItemStack> use(PlayerEntity player, World world, Hand hand, BlockPos Pos) { // TODO Auto-generated method stub return null; } } Overrited methode: package drgmystery.darklight.events; import drgmystery.darklight.init.DarklightOverrite; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; @Mod.EventBusSubscriber(modid = "darklight", bus = Bus.FORGE, value = Dist.CLIENT) public class DarklightPlaceTest extends DarklightOverrite{ @Override @SubscribeEvent public ActionResult<ItemStack> useOn(PlayerEntity player, World world, Hand hand, BlockPos Pos){ if(!world.isClientSide){ double x = player.position().x(); double y = player.position().y(); double z = player.position().z(); BlockPos blockPos = new BlockPos(x, y, z); world.setBlockAndUpdate(new BlockPos(blockPos), Blocks.DIAMOND_BLOCK.defaultBlockState()); } return ActionResult.pass(null); } } and here is the item script: package drgmystery.darklight.item; import drgmystery.darklight.init.DarklightItemGroups; import net.minecraft.item.Item; import net.minecraft.item.Rarity; public class TestItem1 extends Item{ public TestItem1() { super(new Properties().defaultDurability(20).tab(DarklightItemGroups.GROUP).rarity(Rarity.EPIC)); } } so what next? The problem with the getLookVec is still there(I first changed getLookVec to position), I think that there is a new keyword in 1.16.5 ... Edited August 20, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 I have find the useOn method in Referenced Liebraris -> forge-1.16.5.36.2.2_mapped..._recomp -> net.minecraft.item -> Item.class public ActionResultType useOn(...){ ... } is that the right? Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 So I find the useOn methode but how can I overrite It? have I to extend out Item.class? Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 I can't autogenerate the methode or I don't now how Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 As normal you can go on useOn and there are the quick fixes and there is as normal generate useOn methode here(or smth like this) but it isn't Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 if you move the mouse pointer to useOn (the useOn in the class I created), then it shows you errors and the quick fixes and usually it shows you "autogenerate useOn method here" (or something like that) then The IDE generates the useOn method here, which also contains "// TODO Auto-generated constructor stub" Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 (edited) ok now I know ctrl + 3, type overrite, press enter, I don't know this feature yet Edited August 20, 2021 by DoctorG_Mystery Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 now I extend Item, I press ctrl + 3, type overrite, enter, search useOn, press ok, the error is still there. Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 (edited) the @overrite before the useOn, a quick fix is to remove that, so I think the @overrite Edited August 20, 2021 by DoctorG_Mystery Quote
Luis_ST Posted August 20, 2021 Posted August 20, 2021 On 8/20/2021 at 6:43 PM, DoctorG_Mystery said: the @overrite before the useOn, a quick fix is to remove that, so I think the @overrite Expand this is not really helpful, do what @diesieben07told you Quote
DoctorG_Mystery Posted August 20, 2021 Author Posted August 20, 2021 ok I make the overrite and nothing happens, the error is still there, no problem is solved. Perfect that what I want... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.