This commit is contained in:
Jenny 2025-04-16 16:19:27 +02:00
parent 8e1edd46bf
commit 83a4221e19
Signed by: Jenny
GPG Key ID: 2072A14E40940632
14 changed files with 71 additions and 22 deletions

View File

@ -5,6 +5,7 @@ import com.jenny.magic.blocks.entities.blockEntities;
import com.jenny.magic.conditions.conditions; import com.jenny.magic.conditions.conditions;
import com.jenny.magic.config.ConfigServer; import com.jenny.magic.config.ConfigServer;
import com.jenny.magic.enchantments.enchantments; import com.jenny.magic.enchantments.enchantments;
import com.jenny.magic.entities.client.ProjectileBlocks;
import com.jenny.magic.entities.entities; import com.jenny.magic.entities.entities;
import com.jenny.magic.items.items; import com.jenny.magic.items.items;
import com.jenny.magic.networking.networking; import com.jenny.magic.networking.networking;
@ -35,6 +36,7 @@ public class Magic {
entities.register(modEventBus); entities.register(modEventBus);
items.register(modEventBus); items.register(modEventBus);
blocks.register(modEventBus); blocks.register(modEventBus);
ProjectileBlocks.register(modEventBus);
blockEntities.register(modEventBus); blockEntities.register(modEventBus);
enchantments.register(modEventBus); enchantments.register(modEventBus);
creativeTab.register(modEventBus); creativeTab.register(modEventBus);

View File

@ -18,7 +18,6 @@ public class blocks {
public static final RegistryObject<Block> ANTI_SPAWNER = BLOCKS.register("anti_spawner", () -> new AntiSpawner(BlockBehaviour.Properties.of().strength(10.0F, 15.0F))); public static final RegistryObject<Block> ANTI_SPAWNER = BLOCKS.register("anti_spawner", () -> new AntiSpawner(BlockBehaviour.Properties.of().strength(10.0F, 15.0F)));
public static final RegistryObject<Item> ANTI_SPAWNER_ITEM = ITEMS.register("anti_spawner", () -> new BlockItemTooltip(ANTI_SPAWNER.get(), new Item.Properties())); public static final RegistryObject<Item> ANTI_SPAWNER_ITEM = ITEMS.register("anti_spawner", () -> new BlockItemTooltip(ANTI_SPAWNER.get(), new Item.Properties()));
public static void register(IEventBus bus) { public static void register(IEventBus bus) {
BLOCKS.register(bus); BLOCKS.register(bus);
ITEMS.register(bus); ITEMS.register(bus);

View File

@ -14,7 +14,6 @@ public class conditions {
public static void register() { public static void register() {
for (RegistryObject<Item> item : items()) { for (RegistryObject<Item> item : items()) {
String name = item.get().toString(); String name = item.get().toString();
System.out.println("test123: " + name);
CraftingHelper.register(new ConfigCondition(name, ConfigServer.C_DISABLED_LIST)); CraftingHelper.register(new ConfigCondition(name, ConfigServer.C_DISABLED_LIST));
} }
} }

View File

@ -12,6 +12,7 @@ import static com.jenny.magic.Magic.MODID;
public class ConfigServer { public class ConfigServer {
public static final ForgeConfigSpec SPEC; public static final ForgeConfigSpec SPEC;
public static final ForgeConfigSpec.ConfigValue<Integer> C_TELEPORT_SCROLL_RANGE, C_TELEPORT_SCROLL_RANGE_RANDOM, C_BROADCAST_RANGE; public static final ForgeConfigSpec.ConfigValue<Integer> C_TELEPORT_SCROLL_RANGE, C_TELEPORT_SCROLL_RANGE_RANDOM, C_BROADCAST_RANGE;
public static final ForgeConfigSpec.ConfigValue<Boolean> C_PREVENT_BREAKING;
public static final ForgeConfigSpec.ConfigValue<List<String>> C_DISABLED_LIST; public static final ForgeConfigSpec.ConfigValue<List<String>> C_DISABLED_LIST;
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
@ -28,6 +29,9 @@ public class ConfigServer {
C_BROADCAST_RANGE = C_BROADCAST_RANGE =
BUILDER.comment("up to which distance to send particle effects to players") BUILDER.comment("up to which distance to send particle effects to players")
.defineInRange("scroll_teleport_random_range", 128, 1, 60000000); .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(); SPEC = BUILDER.build();
} }

View File

@ -1,6 +1,7 @@
package com.jenny.magic.datagen; package com.jenny.magic.datagen;
import com.jenny.magic.blocks.blocks; import com.jenny.magic.blocks.blocks;
import com.jenny.magic.entities.client.ProjectileBlocks;
import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -25,6 +26,7 @@ public class ModBlockStateProvider extends BlockStateProvider {
protected void registerStatesAndModels() { protected void registerStatesAndModels() {
test(blocks.ANTI_SPAWNER); test(blocks.ANTI_SPAWNER);
//blockWithItem(blocks.ANTI_SPAWNER); //blockWithItem(blocks.ANTI_SPAWNER);
simpleBlock(ProjectileBlocks.PROJECTILE_HURTFUL.get(), cubeAll(ProjectileBlocks.PROJECTILE_HURTFUL.get()));
} }
private void test(@NotNull RegistryObject<Block> blockRegistryObject) { private void test(@NotNull RegistryObject<Block> blockRegistryObject) {
@ -34,6 +36,11 @@ public class ModBlockStateProvider extends BlockStateProvider {
simpleBlockItem(block, model); simpleBlockItem(block, model);
} }
private void BlockCubeAll(@NotNull RegistryObject<Block> blockRegistryObject) {
Block block = blockRegistryObject.get();
this.getVariantBuilder(block).forAllStates(blockState -> ConfiguredModel.builder().modelFile(cubeAll(block)).build());
}
private void blockWithItem(@NotNull RegistryObject<Block> blockRegistryObject) { private void blockWithItem(@NotNull RegistryObject<Block> blockRegistryObject) {
simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get())); simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get()));
} }

View File

@ -16,16 +16,13 @@ public abstract class BaseWandProjectile extends AbstractArrow {
} }
public void shootFromRotation(Entity pShooter, float pX, float pY, float pZ, float pVelocity) { 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 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 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)); 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); Vec3 delta = new Vec3(f, f1, f2).normalize().multiply(pVelocity, pVelocity, pVelocity).add(pShooter.getDeltaMovement());
this.setPos(pShooter.position().x, pShooter.getEyeY() - 0.1, pShooter.position().z); Vec3 pos = pShooter.position().add(delta.scale(0.3).add(0, pShooter.getEyeHeight(), 0));
this.setPos(new Vec3(pShooter.getX(), pShooter.getEyeY() - 0.1, pShooter.getZ()).add(vec.scale(1))); this.setDeltaMovement(delta);
this.setDeltaMovement(vec); this.setPos(pos);
Vec3 vec3 = pShooter.getDeltaMovement();
this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, pShooter.onGround() ? 0.0D : vec3.y, vec3.z));
} }
public void tick() { public void tick() {
@ -40,7 +37,6 @@ public abstract class BaseWandProjectile extends AbstractArrow {
@Override @Override
protected void onHitEntity(@NotNull EntityHitResult pResult) { protected void onHitEntity(@NotNull EntityHitResult pResult) {
System.out.println(level().isClientSide);
if (level().isClientSide) { if (level().isClientSide) {
hitParticles(); hitParticles();
} }
@ -49,7 +45,6 @@ public abstract class BaseWandProjectile extends AbstractArrow {
@Override @Override
protected void onHitBlock(@NotNull BlockHitResult pResult) { protected void onHitBlock(@NotNull BlockHitResult pResult) {
System.out.println(level().isClientSide);
if (level().isClientSide) { if (level().isClientSide) {
hitParticles(); hitParticles();
} }

View File

@ -10,15 +10,17 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.TntMinecartRenderer; import net.minecraft.client.renderer.entity.TntMinecartRenderer;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class BaseProjectileRenderer<T extends BaseWandProjectile> extends EntityRenderer<T> { public class BaseProjectileRenderer<T extends BaseWandProjectile> extends EntityRenderer<T> {
private final BlockRenderDispatcher blockRenderer; private final BlockRenderDispatcher blockRenderer;
private final Block block;
public BaseProjectileRenderer(EntityRendererProvider.Context pContext) { public BaseProjectileRenderer(EntityRendererProvider.Context pContext, Block block) {
super(pContext); super(pContext);
this.blockRenderer = pContext.getBlockRenderDispatcher(); 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) { 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<T extends BaseWandProjectile> extends Entity
pPoseStack.mulPose(Axis.YP.rotationDegrees(-90.0F)); pPoseStack.mulPose(Axis.YP.rotationDegrees(-90.0F));
pPoseStack.scale(pEntity.getBbWidth(), pEntity.getBbHeight(), pEntity.getBbWidth()); pPoseStack.scale(pEntity.getBbWidth(), pEntity.getBbHeight(), pEntity.getBbWidth());
pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); 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(); pPoseStack.popPose();
super.render(pEntity, pEntityYaw, pPartialTicks, pPoseStack, pBuffer, pPackedLight); super.render(pEntity, pEntityYaw, pPartialTicks, pPoseStack, pBuffer, pPackedLight);
} }

View File

@ -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<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID);
public static final RegistryObject<Block> PROJECTILE_HURTFUL = BLOCKS.register("projectile_hurtful", () -> new Block(BlockBehaviour.Properties.of()));
public static void register(IEventBus bus) {
BLOCKS.register(bus);
}
}

View File

@ -1,6 +1,7 @@
package com.jenny.magic.entities; package com.jenny.magic.entities;
import com.jenny.magic.entities.client.BaseProjectileRenderer; import com.jenny.magic.entities.client.BaseProjectileRenderer;
import com.jenny.magic.entities.client.ProjectileBlocks;
import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.client.renderer.entity.EntityRenderers;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.MobCategory;
@ -24,6 +25,6 @@ public class entities {
} }
public static void registerRenderers() { public static void registerRenderers() {
EntityRenderers.register(PROJECTILE_HURTFUL.get(), BaseProjectileRenderer::new); EntityRenderers.register(PROJECTILE_HURTFUL.get(), (context) -> new BaseProjectileRenderer<>(context, ProjectileBlocks.PROJECTILE_HURTFUL.get()));
} }
} }

View File

@ -63,7 +63,6 @@ public class TeleportScrollRandom extends ScrollTeleportRandom {
0, 0,
rng.nextIntBetweenInclusive(-maxDist, maxDist) rng.nextIntBetweenInclusive(-maxDist, maxDist)
); );
System.out.println("test123 " + randomLocation.x + ";" + randomLocation.z);
BlockPos blockPos = new BlockPos((int) randomLocation.x, 0, (int) 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); 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); randomLocation = randomLocation.add(0, yMax + 1, 0);

View File

@ -1,14 +1,24 @@
package com.jenny.magic.items.wands; package com.jenny.magic.items.wands;
import com.jenny.magic.config.ConfigServer;
import com.jenny.magic.entities.BaseWandProjectile; 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.InteractionHand;
import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull; 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 abstract class BaseWand extends Item {
public BaseWand(Item.Properties properties) { public BaseWand(Item.Properties properties) {
@ -18,11 +28,14 @@ public abstract class BaseWand extends Item {
@Override @Override
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level pLevel, Player pPlayer, @NotNull InteractionHand pUsedHand) { public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level pLevel, Player pPlayer, @NotNull InteractionHand pUsedHand) {
ItemStack itemstack = pPlayer.getItemInHand(pUsedHand); ItemStack itemstack = pPlayer.getItemInHand(pUsedHand);
BaseWandProjectile projectile = newProjectile(pLevel); if (!ConfigServer.C_PREVENT_BREAKING.get() || itemstack.getMaxDamage() - itemstack.getDamageValue() > 1) {
projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F); BaseWandProjectile projectile = newProjectile(pLevel);
pLevel.addFreshEntity(projectile); projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F);
itemstack.hurtAndBreak(1, pPlayer, (player) -> player.broadcastBreakEvent(pPlayer.getUsedItemHand())); pLevel.addFreshEntity(projectile);
return InteractionResultHolder.success(itemstack); itemstack.hurtAndBreak(1, pPlayer, (player) -> player.broadcastBreakEvent(pPlayer.getUsedItemHand()));
return InteractionResultHolder.success(itemstack);
}
return InteractionResultHolder.pass(itemstack);
} }
@Override @Override
@ -39,4 +52,14 @@ public abstract class BaseWand extends Item {
} }
abstract BaseWandProjectile newProjectile(Level level); abstract BaseWandProjectile newProjectile(Level level);
@Override
public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> 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);
}
}
} }

View File

@ -26,7 +26,6 @@ public class ManaAmountS2C {
NetworkEvent.Context context = supplier.get(); NetworkEvent.Context context = supplier.get();
context.enqueueWork(() -> { context.enqueueWork(() -> {
ManaClient.mana = this.mana; ManaClient.mana = this.mana;
System.out.println("test187 " + this.mana);
}); });
return true; return true;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

View File

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 272 B