- 205
- 12
- 103
Ахой. Я уже успел всем изрядно надоесть, поскольку меня тут слишком часто видно с вопросами, но всё же...
Есть у меня ряд блоков без каких-либо особых супер-сложных функций. По задумке, эти блоки можно будет добывать ТОЛЬКО этими инструментами. Допустим, есть у меня алмазный топор и железная кирка из ванили, ими я даже не смогу нанести вред или просто сломать (не то что бы добыть), и есть у меня моя собственная (из моего мода, т.е.) деревянная+ кирка, которой добывается этот блок.
Насколько я понимаю, для реализации вот такого мне нужно реализовать абстрактный класс, наследующий собой ванильный класс кирки, и добавить ему собственный материал и тип (не pickaxe, а terraPickaxe, например). И теперь напрашивается вопрос, как указать что именно конкретный спектр блоков я могу добывать этой киркой?
Цель: Реализовать механику инструментов из террарии.
И второй, "бонусный вопрос", в котором я хотел бы узнать, насколько правильно я сделал этот метод:
В нём нужно выполнять 2 вещи, пока что:
1. Если попадает в проходимый блок, снаряд не должен умирать, а должна лететь дальше. Если блок непроходимый - умирает, с шансом 1/3 снаряд выпадает в мир в виде предмета.
2. Если цель - энтить, дает ей по щам и удаляется.
P.S. - Думаю, многие, кто видел мои вопросы, уже заметили, что я совершенно не знаком с Java (ну или знаком на уровне "Я могу распарсить код и примерно понять что тут происходит, но это не точно"). Лезть своими грязными лапками в такое не имея базовых представлений - плохо, знаю.
Есть у меня ряд блоков без каких-либо особых супер-сложных функций. По задумке, эти блоки можно будет добывать ТОЛЬКО этими инструментами. Допустим, есть у меня алмазный топор и железная кирка из ванили, ими я даже не смогу нанести вред или просто сломать (не то что бы добыть), и есть у меня моя собственная (из моего мода, т.е.) деревянная+ кирка, которой добывается этот блок.
Насколько я понимаю, для реализации вот такого мне нужно реализовать абстрактный класс, наследующий собой ванильный класс кирки, и добавить ему собственный материал и тип (не pickaxe, а terraPickaxe, например). И теперь напрашивается вопрос, как указать что именно конкретный спектр блоков я могу добывать этой киркой?
Цель: Реализовать механику инструментов из террарии.
И второй, "бонусный вопрос", в котором я хотел бы узнать, насколько правильно я сделал этот метод:
Java:
@Override
protected void onImpact(@Nonnull RayTraceResult rayTraceResult) {
if (!world.isRemote) {
switch (rayTraceResult.getType()) {
case BLOCK: {
BlockRayTraceResult blockRayTraceResult = (BlockRayTraceResult) rayTraceResult;
if (world.getBlockState(blockRayTraceResult.getPos()).isSolid()) {
this.remove();
if (rand.nextInt(3) == 0) {
world.addEntity(new ItemEntity(this.world, this.getPosX(), this.getPosY() + 1.0F, this.getPosZ(), new ItemStack(FunctionalItems.Items.wooden_arrow)));
}
break;
} else {
return;
}
}
case ENTITY: {
EntityRayTraceResult entityRayTraceResult = (EntityRayTraceResult) rayTraceResult;
if (entityRayTraceResult.getEntity() instanceof LivingEntity && entityRayTraceResult.getEntity() != getThrower()) {
LivingEntity thrower = getThrower();
entityRayTraceResult.getEntity().attackEntityFrom(thrower != null
? thrower instanceof PlayerEntity
? DamageSource.causeThrownDamage(this, thrower)
: DamageSource.causeMobDamage(thrower)
: DamageSource.GENERIC, 5);
this.remove();
}
break;
}
default:
break;
}
}
}
1. Если попадает в проходимый блок, снаряд не должен умирать, а должна лететь дальше. Если блок непроходимый - умирает, с шансом 1/3 снаряд выпадает в мир в виде предмета.
2. Если цель - энтить, дает ей по щам и удаляется.
P.S. - Думаю, многие, кто видел мои вопросы, уже заметили, что я совершенно не знаком с Java (ну или знаком на уровне "Я могу распарсить код и примерно понять что тут происходит, но это не точно"). Лезть своими грязными лапками в такое не имея базовых представлений - плохо, знаю.