From 83a4221e19de7aa377af217f57c4a7b4011f8ba7 Mon Sep 17 00:00:00 2001 From: Jenny Date: Wed, 16 Apr 2025 16:19:27 +0200 Subject: [PATCH] tmp --- src/main/java/com/jenny/magic/Magic.java | 2 ++ .../java/com/jenny/magic/blocks/blocks.java | 1 - .../jenny/magic/conditions/conditions.java | 1 - .../com/jenny/magic/config/ConfigServer.java | 4 +++ .../magic/datagen/ModBlockStateProvider.java | 7 ++++ .../magic/entities/BaseWandProjectile.java | 13 +++---- .../client/BaseProjectileRenderer.java | 8 +++-- .../entities/client/ProjectileBlocks.java | 19 ++++++++++ .../com/jenny/magic/entities/entities.java | 3 +- .../items/scrolls/TeleportScrollRandom.java | 1 - .../com/jenny/magic/items/wands/BaseWand.java | 33 +++++++++++++++--- .../networking/packets/ManaAmountS2C.java | 1 - .../textures/block/projectile_hurtful.png | Bin 0 -> 137 bytes ...{amulet_growth.png => amulet_immunity.png} | Bin 14 files changed, 71 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/jenny/magic/entities/client/ProjectileBlocks.java create mode 100644 src/main/resources/assets/magic/textures/block/projectile_hurtful.png rename src/main/resources/assets/magic/textures/item/{amulet_growth.png => amulet_immunity.png} (100%) diff --git a/src/main/java/com/jenny/magic/Magic.java b/src/main/java/com/jenny/magic/Magic.java index 2b3469c..645e544 100644 --- a/src/main/java/com/jenny/magic/Magic.java +++ b/src/main/java/com/jenny/magic/Magic.java @@ -5,6 +5,7 @@ import com.jenny.magic.blocks.entities.blockEntities; import com.jenny.magic.conditions.conditions; import com.jenny.magic.config.ConfigServer; import com.jenny.magic.enchantments.enchantments; +import com.jenny.magic.entities.client.ProjectileBlocks; import com.jenny.magic.entities.entities; import com.jenny.magic.items.items; import com.jenny.magic.networking.networking; @@ -35,6 +36,7 @@ public class Magic { entities.register(modEventBus); items.register(modEventBus); blocks.register(modEventBus); + ProjectileBlocks.register(modEventBus); blockEntities.register(modEventBus); enchantments.register(modEventBus); creativeTab.register(modEventBus); diff --git a/src/main/java/com/jenny/magic/blocks/blocks.java b/src/main/java/com/jenny/magic/blocks/blocks.java index 073cef7..5b11e5a 100644 --- a/src/main/java/com/jenny/magic/blocks/blocks.java +++ b/src/main/java/com/jenny/magic/blocks/blocks.java @@ -18,7 +18,6 @@ public class blocks { public static final RegistryObject ANTI_SPAWNER = BLOCKS.register("anti_spawner", () -> new AntiSpawner(BlockBehaviour.Properties.of().strength(10.0F, 15.0F))); public static final RegistryObject ANTI_SPAWNER_ITEM = ITEMS.register("anti_spawner", () -> new BlockItemTooltip(ANTI_SPAWNER.get(), new Item.Properties())); - public static void register(IEventBus bus) { BLOCKS.register(bus); ITEMS.register(bus); diff --git a/src/main/java/com/jenny/magic/conditions/conditions.java b/src/main/java/com/jenny/magic/conditions/conditions.java index 456a6dc..4bb6864 100644 --- a/src/main/java/com/jenny/magic/conditions/conditions.java +++ b/src/main/java/com/jenny/magic/conditions/conditions.java @@ -14,7 +14,6 @@ public class conditions { public static void register() { for (RegistryObject item : items()) { String name = item.get().toString(); - System.out.println("test123: " + name); CraftingHelper.register(new ConfigCondition(name, ConfigServer.C_DISABLED_LIST)); } } diff --git a/src/main/java/com/jenny/magic/config/ConfigServer.java b/src/main/java/com/jenny/magic/config/ConfigServer.java index 40276d8..2068733 100644 --- a/src/main/java/com/jenny/magic/config/ConfigServer.java +++ b/src/main/java/com/jenny/magic/config/ConfigServer.java @@ -12,6 +12,7 @@ import static com.jenny.magic.Magic.MODID; public class ConfigServer { public static final ForgeConfigSpec SPEC; public static final ForgeConfigSpec.ConfigValue C_TELEPORT_SCROLL_RANGE, C_TELEPORT_SCROLL_RANGE_RANDOM, C_BROADCAST_RANGE; + public static final ForgeConfigSpec.ConfigValue C_PREVENT_BREAKING; public static final ForgeConfigSpec.ConfigValue> C_DISABLED_LIST; private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); @@ -28,6 +29,9 @@ public class ConfigServer { C_BROADCAST_RANGE = BUILDER.comment("up to which distance to send particle effects to players") .defineInRange("scroll_teleport_random_range", 128, 1, 60000000); + C_PREVENT_BREAKING = + BUILDER.comment("prevent using wands with 1 durability to keep them from breaking") + .define("prevent_breaking", true); SPEC = BUILDER.build(); } diff --git a/src/main/java/com/jenny/magic/datagen/ModBlockStateProvider.java b/src/main/java/com/jenny/magic/datagen/ModBlockStateProvider.java index 9c70aae..e38b650 100644 --- a/src/main/java/com/jenny/magic/datagen/ModBlockStateProvider.java +++ b/src/main/java/com/jenny/magic/datagen/ModBlockStateProvider.java @@ -1,6 +1,7 @@ package com.jenny.magic.datagen; import com.jenny.magic.blocks.blocks; +import com.jenny.magic.entities.client.ProjectileBlocks; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -25,6 +26,7 @@ public class ModBlockStateProvider extends BlockStateProvider { protected void registerStatesAndModels() { test(blocks.ANTI_SPAWNER); //blockWithItem(blocks.ANTI_SPAWNER); + simpleBlock(ProjectileBlocks.PROJECTILE_HURTFUL.get(), cubeAll(ProjectileBlocks.PROJECTILE_HURTFUL.get())); } private void test(@NotNull RegistryObject blockRegistryObject) { @@ -34,6 +36,11 @@ public class ModBlockStateProvider extends BlockStateProvider { simpleBlockItem(block, model); } + private void BlockCubeAll(@NotNull RegistryObject blockRegistryObject) { + Block block = blockRegistryObject.get(); + this.getVariantBuilder(block).forAllStates(blockState -> ConfiguredModel.builder().modelFile(cubeAll(block)).build()); + } + private void blockWithItem(@NotNull RegistryObject blockRegistryObject) { simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get())); } diff --git a/src/main/java/com/jenny/magic/entities/BaseWandProjectile.java b/src/main/java/com/jenny/magic/entities/BaseWandProjectile.java index 501c06f..8f4a2a8 100644 --- a/src/main/java/com/jenny/magic/entities/BaseWandProjectile.java +++ b/src/main/java/com/jenny/magic/entities/BaseWandProjectile.java @@ -16,16 +16,13 @@ public abstract class BaseWandProjectile extends AbstractArrow { } public void shootFromRotation(Entity pShooter, float pX, float pY, float pZ, float pVelocity) { - this.setPos(pShooter.position().x, pShooter.getEyeY() - 0.1, pShooter.position().z); float f = -Mth.sin(pY * ((float) Math.PI / 180F)) * Mth.cos(pX * ((float) Math.PI / 180F)); float f1 = -Mth.sin((pX + pZ) * ((float) Math.PI / 180F)); float f2 = Mth.cos(pY * ((float) Math.PI / 180F)) * Mth.cos(pX * ((float) Math.PI / 180F)); - Vec3 vec = new Vec3(f, f1, f2).multiply(pVelocity, pVelocity, pVelocity); - this.setPos(pShooter.position().x, pShooter.getEyeY() - 0.1, pShooter.position().z); - this.setPos(new Vec3(pShooter.getX(), pShooter.getEyeY() - 0.1, pShooter.getZ()).add(vec.scale(1))); - this.setDeltaMovement(vec); - Vec3 vec3 = pShooter.getDeltaMovement(); - this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, pShooter.onGround() ? 0.0D : vec3.y, vec3.z)); + Vec3 delta = new Vec3(f, f1, f2).normalize().multiply(pVelocity, pVelocity, pVelocity).add(pShooter.getDeltaMovement()); + Vec3 pos = pShooter.position().add(delta.scale(0.3).add(0, pShooter.getEyeHeight(), 0)); + this.setDeltaMovement(delta); + this.setPos(pos); } public void tick() { @@ -40,7 +37,6 @@ public abstract class BaseWandProjectile extends AbstractArrow { @Override protected void onHitEntity(@NotNull EntityHitResult pResult) { - System.out.println(level().isClientSide); if (level().isClientSide) { hitParticles(); } @@ -49,7 +45,6 @@ public abstract class BaseWandProjectile extends AbstractArrow { @Override protected void onHitBlock(@NotNull BlockHitResult pResult) { - System.out.println(level().isClientSide); if (level().isClientSide) { hitParticles(); } diff --git a/src/main/java/com/jenny/magic/entities/client/BaseProjectileRenderer.java b/src/main/java/com/jenny/magic/entities/client/BaseProjectileRenderer.java index 7126a36..834c34a 100644 --- a/src/main/java/com/jenny/magic/entities/client/BaseProjectileRenderer.java +++ b/src/main/java/com/jenny/magic/entities/client/BaseProjectileRenderer.java @@ -10,15 +10,17 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.TntMinecartRenderer; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.NotNull; public class BaseProjectileRenderer extends EntityRenderer { private final BlockRenderDispatcher blockRenderer; + private final Block block; - public BaseProjectileRenderer(EntityRendererProvider.Context pContext) { + public BaseProjectileRenderer(EntityRendererProvider.Context pContext, Block block) { super(pContext); this.blockRenderer = pContext.getBlockRenderDispatcher(); + this.block = block; } public void render(@NotNull T pEntity, float pEntityYaw, float pPartialTicks, @NotNull PoseStack pPoseStack, @NotNull MultiBufferSource pBuffer, int pPackedLight) { @@ -26,7 +28,7 @@ public class BaseProjectileRenderer extends Entity pPoseStack.mulPose(Axis.YP.rotationDegrees(-90.0F)); pPoseStack.scale(pEntity.getBbWidth(), pEntity.getBbHeight(), pEntity.getBbWidth()); pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); - TntMinecartRenderer.renderWhiteSolidBlock(this.blockRenderer, Blocks.TNT.defaultBlockState(), pPoseStack, pBuffer, pPackedLight, false); + TntMinecartRenderer.renderWhiteSolidBlock(this.blockRenderer, block.defaultBlockState(), pPoseStack, pBuffer, pPackedLight, false); pPoseStack.popPose(); super.render(pEntity, pEntityYaw, pPartialTicks, pPoseStack, pBuffer, pPackedLight); } diff --git a/src/main/java/com/jenny/magic/entities/client/ProjectileBlocks.java b/src/main/java/com/jenny/magic/entities/client/ProjectileBlocks.java new file mode 100644 index 0000000..aa956d1 --- /dev/null +++ b/src/main/java/com/jenny/magic/entities/client/ProjectileBlocks.java @@ -0,0 +1,19 @@ +package com.jenny.magic.entities.client; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.jenny.magic.Magic.MODID; + +public class ProjectileBlocks { + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); + public static final RegistryObject PROJECTILE_HURTFUL = BLOCKS.register("projectile_hurtful", () -> new Block(BlockBehaviour.Properties.of())); + + public static void register(IEventBus bus) { + BLOCKS.register(bus); + } +} diff --git a/src/main/java/com/jenny/magic/entities/entities.java b/src/main/java/com/jenny/magic/entities/entities.java index 3e95262..65f7636 100644 --- a/src/main/java/com/jenny/magic/entities/entities.java +++ b/src/main/java/com/jenny/magic/entities/entities.java @@ -1,6 +1,7 @@ package com.jenny.magic.entities; import com.jenny.magic.entities.client.BaseProjectileRenderer; +import com.jenny.magic.entities.client.ProjectileBlocks; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -24,6 +25,6 @@ public class entities { } public static void registerRenderers() { - EntityRenderers.register(PROJECTILE_HURTFUL.get(), BaseProjectileRenderer::new); + EntityRenderers.register(PROJECTILE_HURTFUL.get(), (context) -> new BaseProjectileRenderer<>(context, ProjectileBlocks.PROJECTILE_HURTFUL.get())); } } diff --git a/src/main/java/com/jenny/magic/items/scrolls/TeleportScrollRandom.java b/src/main/java/com/jenny/magic/items/scrolls/TeleportScrollRandom.java index 16d2b8a..fc15335 100644 --- a/src/main/java/com/jenny/magic/items/scrolls/TeleportScrollRandom.java +++ b/src/main/java/com/jenny/magic/items/scrolls/TeleportScrollRandom.java @@ -63,7 +63,6 @@ public class TeleportScrollRandom extends ScrollTeleportRandom { 0, rng.nextIntBetweenInclusive(-maxDist, maxDist) ); - System.out.println("test123 " + randomLocation.x + ";" + randomLocation.z); BlockPos blockPos = new BlockPos((int) randomLocation.x, 0, (int) randomLocation.z); int yMax = player.level().getChunk(((int) randomLocation.x) >> 4, ((int) randomLocation.z) >> 4, ChunkStatus.FULL, true).getHeight(Heightmap.Types.WORLD_SURFACE, ((int) randomLocation.x) % 16, ((int) randomLocation.z) % 16); randomLocation = randomLocation.add(0, yMax + 1, 0); diff --git a/src/main/java/com/jenny/magic/items/wands/BaseWand.java b/src/main/java/com/jenny/magic/items/wands/BaseWand.java index 139cd3b..e4ae793 100644 --- a/src/main/java/com/jenny/magic/items/wands/BaseWand.java +++ b/src/main/java/com/jenny/magic/items/wands/BaseWand.java @@ -1,14 +1,24 @@ package com.jenny.magic.items.wands; +import com.jenny.magic.config.ConfigServer; import com.jenny.magic.entities.BaseWandProjectile; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +import static com.jenny.magic.Magic.MODID; public abstract class BaseWand extends Item { public BaseWand(Item.Properties properties) { @@ -18,11 +28,14 @@ public abstract class BaseWand extends Item { @Override public @NotNull InteractionResultHolder use(@NotNull Level pLevel, Player pPlayer, @NotNull InteractionHand pUsedHand) { ItemStack itemstack = pPlayer.getItemInHand(pUsedHand); - BaseWandProjectile projectile = newProjectile(pLevel); - projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F); - pLevel.addFreshEntity(projectile); - itemstack.hurtAndBreak(1, pPlayer, (player) -> player.broadcastBreakEvent(pPlayer.getUsedItemHand())); - return InteractionResultHolder.success(itemstack); + if (!ConfigServer.C_PREVENT_BREAKING.get() || itemstack.getMaxDamage() - itemstack.getDamageValue() > 1) { + BaseWandProjectile projectile = newProjectile(pLevel); + projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F); + pLevel.addFreshEntity(projectile); + itemstack.hurtAndBreak(1, pPlayer, (player) -> player.broadcastBreakEvent(pPlayer.getUsedItemHand())); + return InteractionResultHolder.success(itemstack); + } + return InteractionResultHolder.pass(itemstack); } @Override @@ -39,4 +52,14 @@ public abstract class BaseWand extends Item { } abstract BaseWandProjectile newProjectile(Level level); + + @Override + public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) { + String key = String.format("tooltip.%s.%s", MODID, this); + MutableComponent toolTip = Component.translatable(key); + if (!toolTip.getString().equals(key)) { + pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); + super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced); + } + } } diff --git a/src/main/java/com/jenny/magic/networking/packets/ManaAmountS2C.java b/src/main/java/com/jenny/magic/networking/packets/ManaAmountS2C.java index 611d353..0307fed 100644 --- a/src/main/java/com/jenny/magic/networking/packets/ManaAmountS2C.java +++ b/src/main/java/com/jenny/magic/networking/packets/ManaAmountS2C.java @@ -26,7 +26,6 @@ public class ManaAmountS2C { NetworkEvent.Context context = supplier.get(); context.enqueueWork(() -> { ManaClient.mana = this.mana; - System.out.println("test187 " + this.mana); }); return true; } diff --git a/src/main/resources/assets/magic/textures/block/projectile_hurtful.png b/src/main/resources/assets/magic/textures/block/projectile_hurtful.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d7a761754403ac56591942d5eec2fe04eedbd4 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|oIPC}LnNjq z*Q{FfX+9%=LSjNf!i*0OnGdg?Z!dY|#?8PNW`%`pYHVz5YbGVVdBXz)0<1Sw;{X2X h3~-1Rmf)-uX5fBin;Dgm{2XW;gQu&X%Q~loCIAeaDoy|Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/magic/textures/item/amulet_growth.png b/src/main/resources/assets/magic/textures/item/amulet_immunity.png similarity index 100% rename from src/main/resources/assets/magic/textures/item/amulet_growth.png rename to src/main/resources/assets/magic/textures/item/amulet_immunity.png