Jump to content

Search the Community

Showing results for tags '1.19.4'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Minecraft Forge
    • Releases
    • Support & Bug Reports
    • Suggestions
    • General Discussion
  • Mod Developer Central
    • Modder Support
    • User Submitted Tutorials
  • Non-Forge
    • Site News (non-forge)
    • Minecraft General
    • Off-topic
  • Forge Mods
    • Mods

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


XMPP/GTalk


Gender


URL


Location


ICQ


AIM


Yahoo IM


MSN Messenger


Personal Text

  1. I have a keybind where you spit like a llama. On singleplayer both the entity and particle spawn and it's sound is played (https://youtu.be/bpxnFDuWw_I). But on a server only the entity is spawned and nothing else (https://youtu.be/veVQ4zSqnIA), no particles nor sound. Upon starting the server I have noticed this error in the window (https://postimg.cc/K3KDCpMY), don't know if it's relevant. The server works fine but when I want to spit the following pops up in the serverlog '''Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER''' (https://postimg.cc/LqTDP1Sm). I have prepared the following code of the Server-to-Client packet class which I have made to spawn mentioned particles and sounds. package mett.palemannie.tabakmod.networking.packets; import net.minecraft.client.Minecraft; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SpuckEffektS2CPacket { public SpuckEffektS2CPacket(){ } public SpuckEffektS2CPacket(FriendlyByteBuf buf){ } public void toBytes(FriendlyByteBuf buf){ } public boolean handle(Supplier<NetworkEvent.Context> supplier){ NetworkEvent.Context context = supplier.get(); context.enqueueWork(()-> { Player player = Minecraft.getInstance().player; //Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Level level = Minecraft.getInstance().level; RandomSource rdm = RandomSource.create(); float r = rdm.nextInt(80, 120) / 100f; player.playSound(SoundEvents.LLAMA_SPIT, 1f, r); Vec3 MausPos = player.getEyePosition(); Vec3 SchauWinkel = player.getLookAngle(); level.addParticle(ParticleTypes.SPIT, true, MausPos.x, MausPos.y, MausPos.z, SchauWinkel.x/4, SchauWinkel.y/4, SchauWinkel.z/4); }); return true; } } Is there an alternative to Minecraft.getInstance().player;? dumb question. I have looked at other mods (MrCrayfish's Gun Mod, Ars Noveau, Apotheosis) on how they handle such server-to-client sound and particles but I haven't got any wiser.
  2. Hello! I was trying to create a mob which has two different textures: "red" and "black". It should be chosen randomly when the mob spawns and then never change. I had to find some way to save data about the variant of the mob when player go out from the game. I thought that using read/addAdditionalSaveData can help, but nothing has changed, it still doesn't remember what color each mob had. Did I something wrong? Here are methods in MyEntity class, related to the problem: private final static EntityDataAccessor<String> DATA_VARIANT_NAME = SynchedEntityData.defineId(MyEntity.class, EntityDataSerializers.STRING); //Entity variant is set in constructor public MyEntity(EntityType<? extends Animal> pEntityType, Level pLevel) { super(pEntityType, pLevel); setMyEntityVariant(RandomMyEntityVariant()); } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_VARIANT_NAME, RandomMyEntityVariant().getSerializedName()); } public static enum MyEntityVariant implements StringRepresentable{ RED("red"), BLACK("black"); private final String name; private MyEntityVariant(String name){ this.name = name; } @Override public String getSerializedName() { return name; } public static MyEntityVariant byName(String pName) { if (Objects.equals(pName, "black")){ return BLACK; } else return RED; } } private MyEntityVariant RandomMyEntityVariant(){ switch (this.random.nextIntBetweenInclusive(1,2)){ case 1: return MyEntityVariant.BLACK; default: return MyEntityVariant.RED; } } public MyEntityVariant getMyEntityVariant(){ return MyEntityVariant.byName(this.entityData.get(DATA_VARIANT_NAME)); } public void setMyEntityVariant(MyEntityVariant variant){ this.entityData.set(DATA_VARIANT_NAME,variant.getSerializedName()); } @Override public void addAdditionalSaveData(CompoundTag pCompound) { super.addAdditionalSaveData(pCompound); pCompound.putString("MyEntityVariant",this.getVariant().getSerializedName()); } @Override public void readAdditionalSaveData(CompoundTag pCompound) { super.readAdditionalSaveData(pCompound); this.setMyEntityVariant(MyEntityVariant.byName(pCompound.getString("MyEntityVariant"))); } Maybe, I should call SetMyEntityVariant somewhere in another place?
  3. I wanted to ask if there's a way to code something like in this image. I already tried changing the yaw of the camera through an event i forgot the name of and I also went through Minecraft code to see if I can find something useful but I got no progress whatsoever.
  4. Hello! I need to check is it night for some featues of my new mob. I planned to use the MyMob.level.isNight() method, but it seems to work kinda odd for some reason. So I'd wrote down a function in MyMob.tick() which prints value returned by level.isNight(): The result was: "True" and "False" values is alternating while it is obviously night in the world. So, what does the method actually return?..
  5. Hello! I've made a block, it is displaying with a black texture, but I haven't found anything wrong in the mod files. Here is my files: link to the texture: https://i.ibb.co/ck4nJ8L/tea.png
  6. I am trying to make some animations for my mod, and one of the steps is rolling out a ball of dough for a pizza. I want to have the rolled out dough slowly fade in, but trying to use RenderSystem#setShaderColor to set the alpha channel does not work how I would expect it to Is there another way that I am missing to be able to render items on block entities with some transparency?
  7. As the title reads, I've been trying to create a custom advancement trigger to activate based off a capability I've created. Despite my best efforts to A)Understand the sparse documentation for 1.19 on advancements and B) Reverse Engineer it by looking at the code, I keep coming back to this spot stumped. If anyone has example code using the SimpleTriggerInstance/AbstractTriggerInstance then I would be set and done. If you could explain what this line of the documentation is asking me to do, "Custom criteria triggers can be created by implementing SimpleCriterionTrigger for the created AbstractCriterionTriggerInstance subclass." then that would also be amazing. I've tried implementing it but it doesn't seem to actually want to be implemented, and extending it leads me in a direction that the documentation doesn't explain.
  8. Forge version: 45.3.0 Minecraft version: 1.19.4 Downloads: Changelog: (Direct) Installer: (AdFocus) (Direct) MDK: (AdFocus) (Direct) Downloads page Intro: This third recommended build for MC 1.19.4 offers improved performance, bugfixes, new features and various backports from newer versions such as 1.20.1, 1.20.2, 1.20.4 and 1.20.6. As a reminder, the release policy for recommended builds has changed - we now aim to release new recommended builds for fully supported MC versions more frequently - as long as there's a reasonable amount of changes since last recommended build. New: Improve mod loading error message for errors inside mod constructors, backport of #9751 (#9708) No longer shows a vague error if the error happens inside a constructor - Forge now tells you the actual error Optimise path filter in mod loading (#9711) Update to FG6 and Gradle 8, backport 1.20.1's MDK (#9753) Improve mod description formatting in mods screen (#9770) Add a CrashReportAnalyser that tries to identify the mod that crashed the game This feature scans your crash report as it is being generated and lists suspected mods that could be the cause of the crash, accounting for coremodding as well. This makes it easier to find the culprit as it is often listed clearly in the crash report itself (e.g. "Suspected mods: buggymod") Optimise ForgeConfigSpec and make Range public, backport of #9810 (#9826) Make common DisplayTest registration tasks easier, backport of #9822 (#9837) Before: ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> "ANY", (remote, isServer) -> true)); After: ModLoadingContext.get().registerDisplayTest(IExtensionPoint.DisplayTest.IGNORE_ALL_VERSION); The old method still works for backwards-compatibility. The new method has also been backported to 1.20.1, 1.19.2 and 1.18.2. Add support for running with Java 22 and 23 Make common config screen registration tasks easier, backport of #9884 (#9913) Before: ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, modsScreen) -> new MyConfigScreen(modsScreen)); After: MinecraftForge.registerConfigScreen(modsScreen -> new MyConfigScreen(modsScreen)); The old method still works for backwards-compatibility. The new method has also been backported to 1.20.1, 1.19.2 and 1.18.2. Optimise capabilities, backport of #9886 (#9917) Fixed: Fix Melon/Pumpkin stems having wrong plant type causing them to remain after trampling farmland. Fix NPE when acceptableValues in defineInList() does not allow nulls, backport of #9903 (#9908)
  9. I have a tool that harvests multiple crops at once, that either replants or harvests the crops depending on an enchant on the tool. The harvesting and loot dropping works fine, but when it comes to updating what block is rendering, only the clicked block is updated properly, while the others drop the loot but appear to say as the fully grown crop, until right clicked again. The normal path for the tool is to just break the crop, as if the player harvested the crop. The other path is to reset the growth of the crop and drop the crop's loot, minus one seed. I have already tried all combinations of method parameters for setBlock() and destroyBlock(), and the updateing of the crop blocks still does not happen. The code thus far: public class ScytheItem extends HoeItem { public ScytheItem(Tier tier, int atkBase, float atkSpeed) { super(tier, atkBase, atkSpeed, new Item.Properties().stacksTo(1)); } @Override public @NotNull InteractionResult useOn(@NotNull UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); InteractionHand hand = context.getHand(); ItemStack stack = context.getItemInHand(); if (!level.isClientSide() && player != null) { BlockPos pos = context.getClickedPos(); Block block = level.getBlockState(pos).getBlock(); if(block instanceof CropBlock) { level.playSound(null, pos, block.getSoundType(level.getBlockState(pos), level, pos, player).getBreakSound(), SoundSource.BLOCKS, 1.0F, AOTMain.RANDOM.nextFloat()); Map<Enchantment, Integer> enchantments = stack.getAllEnchantments(); int harvestSize = 1 + enchantments.getOrDefault(EnchantmentInit.HARVESTING_SIZE.get(), 0); for (int xOff = -harvestSize; xOff <= harvestSize; xOff++) { for (int zOff = -harvestSize; zOff <= harvestSize; zOff++) { BlockPos newPos = pos.offset(xOff, 0, zOff); Block blockAt = level.getBlockState(newPos).getBlock(); if (blockAt instanceof CropBlock crop) { if (crop.isMaxAge(level.getBlockState(newPos))) { if (enchantments.containsKey(EnchantmentInit.AUTO_PLANTER.get())) { dropLoot(level, newPos, level.getBlockState(newPos), block); level.setBlock(newPos, crop.getStateForAge(0), Block.UPDATE_CLIENTS); // the broken bit } else level.destroyBlock(newPos, true); // the broken bit } } } } stack.hurtAndBreak(1, player, (p) -> p.broadcastBreakEvent(hand)); } } return super.useOn(context); } private void dropLoot(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state, @NotNull Block block) { List<ItemStack> drops = getDrops(level, pos, state); findSeeds(block, drops).ifPresent(seed -> seed.shrink(1)); drops.forEach((drop) -> Block.popResource(level, pos, drop)); } private List<ItemStack> getDrops(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state) { return Block.getDrops(state, (ServerLevel) level, pos, null); } private Optional<ItemStack> findSeeds(@NotNull Block block, final Collection<ItemStack> stacks) { Item seedsItem = block.asItem(); return stacks.stream().filter((stack) -> stack.getItem() == seedsItem).findAny(); } }
  10. Hello everyone, I recently created a modpack but my game can't even load. As soon as I launch minecraft I get an error message saying that Psi can't load. I share the log and crash report. As I don't know anything about modpack creation, maybe the solution is quite simple but I haven't found anything on the internet that could solve my problem. Thank you for your patience and help. Crash report: https://mclo.gs/pd7dS2C Logs: https://mclo.gs/B8oR1bG
  11. How can I replace the vanilla DeathScreen with a custom one? My custom screen only adds an extra button.
  12. Does anybody know how to get old enchant glint from 1.17.1 on newer versions? not the texture pack but accualy to make it move on armors and items like in old versions. Is there any mod/shader to do it?
  13. (EDIT: THIS IS A CLIENT-SIDED ISSUE, THIS HAPPENS WHEN JOINING ANY SERVER) I have been currently having this issue where if I join my server, I get one of these 2 errors. I have tried fixing this issue by looking at the output log in both Server and Client side, from what I have seen I was not able to find anything I can understand that would have helped me. These two errors pop up randomly with no pattern when attempting to join the server when it says Encrypting... I have tried removing all mods from the Client and Server side, which did nothing and still showed the same errors (I don't remember which error showed or even if it showed both), so from what I tried to do, I do not think this is a mod Issue but rather a Forge Issue. How do I fix this? Here are the errors and all the information: Internal Exception: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/TrustedListenableFutureTask Debug.log: https://www.mediafire.com/file/hbtycb1tamqt1qr/debug2.log/file (PS: Debug.log file cannot be uploaded to Pastebin due to it crashing because of the Large Amount of Spam OpenGL logs) Internal Exception: Internal Exception: java.lang.NoClassDefFoundError: com/google/common/collect/LinkedHashMultiMap$ValueSet Debug.log: https://www.mediafire.com/file/o1d48z0bjfyff1e/debug.log/file (PS: Debug.log file cannot be uploaded to Pastebin due to it crashing because of the Large Amount of Spam OpenGL logs) Client Mods: Server Mods:
  14. I have programmed an entity that can load chunks independently of the player and is therefore always active. Since the entity is very large (volume of about 66800 blocks), I implemented that the entity is rendered from a distance of several thousand blocks, even outside of the player's actual render distance. Since I logically want to render the entity with the correct distance to the camera, rotation, motion, tickCount, etc., I use the server-side entity, which stores all this information. I get the server-side entity via an event and use the synchronized method to prevent an exception. In single player this also works perfectly, the entity has the correct position, rotation, etc. and I have the correct server-side entity. The same applies to a local LAN world. However, when I'm playing on an actual multiplayer server, whether alone or with other players, my code strangely always gives me the client-side entity, which is why the entity stops at the position where you leave its range of view, and the entity rendered from a long distance is no longer updated, which is obviously a problem. The problem is definitely not due to my long distant render logic, since the client-side entity, except for the problem that it is client-side, is rendered correctly, and the render logic otherwise only contains things like distance interpolations and a fog logic that definitely does not cause the problem. The server-side entity in the single player is actually rendered perfectly. So the problem must somehow be with the way I'm trying to get the entity. Here's the code that works perfectly in single player: private final Object renderLock = new Object(); WitherStormEntity witherStorm = null; @SubscribeEvent public void onServerTickLivingEntity(LivingEvent.LivingTickEvent event) { if (event.getEntity() instanceof WitherStormEntity witherStormEntity) { synchronized(this.renderLock) { if (!witherStormEntity.getLevel().isClientSide()) { this.witherStorm = witherStormEntity; } } } } @SubscribeEvent @OnlyIn(Dist.CLIENT) public void renderTickDistantRenderer(RenderLevelStageEvent event) { synchronized(this.renderLock) { if (this.witherStorm != null && event.getStage().equals(RenderLevelStageEvent.Stage.AFTER_PARTICLES) && WitherStormModClientConfigs.DISTANT_RENDERER.get()) { render(event.getPoseStack(), event.getPartialTick(), this.witherStorm); } } } Unfortunately, as I said, I get the client-side entity in multiplayer mode, or at least not the correct server-side entity. I've also tried things like an iterator over all entities in the server level, but unfortunately it didn't help. I desperately need help with this issue, and would really appreciate some help and an answer on how to fix this! 😀
  15. I made a projectile extending the AbstractHurtingProjectile class. The relevant code and video showing the error are shown below. I want my projectile to be able to pass through blocks and hit multiple entities, it should only despawn after a certain amount of time. For some reason, it does not hit entities in the situations shown below. It can't hit the bottom of the entity if there are blocks in the way, even though the projectile has been shown to damage an entity through blocks as long as I aim body level. Also, it can't hit entities through blocks if I shoot from above or below. Why is my projectile behaving like this? I am at my wit's end. (Ignore the chat I put that there for debugging purposes) Video demonstrating issues Class that defines projectile behavior: Item class that shoots projectile when right-clicked (lines 37 and 53-56 are the relevant ones): Class where I register the projectile entity:
  16. I'm updating my mod from 1.19.2 to 1.20.X, going to 1.19.3 as an intermediate step so that I can ensure my data generators work correctly before updating the rest. I have many lines to create configured features that look like this: ALPINE_ROCK = new ConfiguredFeature<>(ModGeneration.OUTCROP.get(), new BlockStateConfiguration(Blocks.STONE.defaultBlockState())); Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation(Main.MOD_ID, "alpine_rock"), ALPINE_ROCK); Now I am on 1.19.3, BuiltinRegistries.CONFIGURED_FEATURE no longer exists. What is the proper way to register configured features in this version? Can this even still be done in code, or is this one of the "dynamic registries" affected by the registry overhaul? If it can no longer be done in code, what is necessary to do it using JSON?
  17. I have a block already registered in my mod, which I have used in some worlds. The problem arises when in code, I add a property called CURRENT_AGE, when running Minecraft it freezes. In the console it doesn't appear any excpetion except that it stays in this phase: [Render thread/DEBUG] [ne.mi.co.ca.CapabilityManager/CAPABILITIES]: Attempting to automatically register: Lnet/minecraftforge/items/IItemHandler; Does anyone have an idea what it could be? I show the block and its registration public class SoulLichenBlock extends MultifaceBlock implements SimpleWaterloggedBlock, EntityBlock { public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final IntegerProperty SKILL_LEVEL = IntegerProperty.create("soullichen_level", 0, 30); public static final DirectionProperty FACE = DirectionProperty.create("soullichen_face"); public static final DirectionProperty DIRECTION = DirectionProperty.create("soullichen_direction"); public static final IntegerProperty CURRENT_AGE = BlockStateProperties.AGE_25; private final MultifaceSpreader spreader = new MultifaceSpreader(this); private final MultifaceSpreader.DefaultSpreaderConfig config = new MultifaceSpreader.DefaultSpreaderConfig(this); private LivingEntity owner; //private static final Integer MAX_AGE = 25; public SoulLichenBlock(Properties properties) { super(properties); this.registerDefaultState(this .defaultBlockState() .setValue(WATERLOGGED, Boolean.FALSE) .setValue(SKILL_LEVEL, 0) .setValue(FACE, Direction.DOWN) .setValue(DIRECTION, Direction.DOWN) .trySetValue(CURRENT_AGE, 0) ); } public static ToIntFunction<BlockState> emission(int p_181223_) { return (p_181221_) -> MultifaceBlock.hasAnyFace(p_181221_) ? p_181223_ : 0; } public static boolean hasFace(BlockState p_153901_, @NotNull Direction p_153902_) { BooleanProperty booleanproperty = getFaceProperty(p_153902_); return p_153901_.hasProperty(booleanproperty) && p_153901_.getValue(booleanproperty); } protected void createBlockStateDefinition(StateDefinition.@NotNull Builder<Block, BlockState> stateDefinition) { stateDefinition.add(WATERLOGGED).add(SKILL_LEVEL).add(FACE).add(DIRECTION).add(CURRENT_AGE); super.createBlockStateDefinition(stateDefinition); } public @NotNull BlockState updateShape(BlockState p_153302_, @NotNull Direction p_153303_, @NotNull BlockState p_153304_, @NotNull LevelAccessor p_153305_, @NotNull BlockPos p_153306_, @NotNull BlockPos p_153307_) { if (p_153302_.getValue(WATERLOGGED)) { p_153305_.scheduleTick(p_153306_, Fluids.WATER, Fluids.WATER.getTickDelay(p_153305_)); } return super.updateShape(p_153302_, p_153303_, p_153304_, p_153305_, p_153306_, p_153307_); } @SuppressWarnings("deprecation") public @NotNull FluidState getFluidState(BlockState fluidState) { return fluidState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(fluidState); } public boolean propagatesSkylightDown(BlockState p_181225_, @NotNull BlockGetter blockGetter, @NotNull BlockPos blockPos) { return p_181225_.getFluidState().isEmpty(); } public @NotNull MultifaceSpreader getSpreader() { return this.spreader; } public Optional<MultifaceSpreader.SpreadPos> spreadFromRandomFaceTowardRandomDirection( BlockState p_221620_, LevelAccessor p_221621_, BlockPos p_221622_, RandomSource p_221623_, int skillPoints, int age) { return Direction.allShuffled(p_221623_).stream().filter((p_221680_) -> { return this.config.canSpreadFrom(p_221620_, p_221680_); }).map((p_221629_) -> { return this.spreadFromFaceTowardRandomDirection(p_221620_, p_221621_, p_221622_, p_221629_, p_221623_, false, skillPoints, age); }).filter(Optional::isPresent).findFirst().orElse(Optional.empty()); } public Optional<MultifaceSpreader.SpreadPos> spreadFromFaceTowardRandomDirection( BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos, Direction face, RandomSource randomSource, boolean aBoolean, int skillPoints, int age) { return Direction.allShuffled(randomSource).stream().map((direction) -> spreadFromFaceTowardDirection(blockState, levelAccessor, blockPos, face, direction, aBoolean, skillPoints, age)) .filter(Optional::isPresent) .findFirst() .orElse(Optional.empty()); } public Optional<MultifaceSpreader.SpreadPos> spreadFromFaceTowardDirection( BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos, Direction face, Direction direction, boolean aBoolean, int skillPoints, int age) { //DevilRpg.LOGGER.debug("BEGIN ==================================== spreadFromFaceTowardDirection skillPoints {}", skillPoints); return skillPoints < 0 ? Optional.empty() : getSpreadFromFaceTowardDirection(blockState, levelAccessor, blockPos, face, direction, this::canSpreadInto) .flatMap((spreadPos) -> { //DevilRpg.LOGGER.debug("END ================================ spreadFromFaceTowardDirection spreadPos {}", spreadPos); return this.spreadToFace(levelAccessor, spreadPos, aBoolean, skillPoints, direction, age); }); } public boolean canSpreadInto(BlockGetter p_221685_, BlockPos p_221686_, MultifaceSpreader.SpreadPos p_221687_) { BlockState blockstate = p_221685_.getBlockState(p_221687_.pos()); return this.stateCanBeReplaced(p_221685_, p_221686_, p_221687_.pos(), p_221687_.face(), blockstate) && isValidStateForPlacement(p_221685_, blockstate, p_221687_.pos(), p_221687_.face()); } protected boolean stateCanBeReplaced(BlockGetter p_221688_, BlockPos p_221689_, BlockPos p_221690_, Direction p_221691_, BlockState p_221692_) { return p_221692_.isAir() || p_221692_.is(this) || p_221692_.is(Blocks.WATER) && p_221692_.getFluidState().isSource(); } public Optional<MultifaceSpreader.SpreadPos> getSpreadFromFaceTowardDirection(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, Direction face, Direction direction, MultifaceSpreader.SpreadPredicate spreadPredicate) { //DevilRpg.LOGGER.debug("--- getSpreadFromFaceTowardDirection direction.getAxis() == face.getAxis(): {}", direction.getAxis() == face.getAxis()); ArrayList<Direction> directions = new ArrayList<>(); directions.add(direction); if (direction.getAxis() == face.getAxis()) { if (direction.getAxis().isHorizontal()) { directions = Arrays.stream(Direction.values()).filter(dir -> dir.getAxis().isVertical()).collect(Collectors.toCollection(ArrayList::new)); } if (direction.getAxis().isVertical()) { directions = Arrays.stream(Direction.values()).filter(dir -> dir.getAxis().isHorizontal()).collect(Collectors.toCollection(ArrayList::new)); } } for (Direction directionElement : directions) { /*DevilRpg.LOGGER.debug("--->> getSpreadFromFaceTowardDirection config.isOtherBlockValidAsSource(blockState) {} || " + "hasFace(blockState, face) {} && " + "!hasFace(blockState, direction) {}", config.isOtherBlockValidAsSource(blockState), hasFace(blockState, face), !hasFace(blockState, directionElement));*/ if (config.isOtherBlockValidAsSource(blockState) || hasFace(blockState, face) && !hasFace(blockState, directionElement)) { for (MultifaceSpreader.SpreadType multifacespreader$spreadtype : config.getSpreadTypes()) { MultifaceSpreader.SpreadPos multifacespreader$spreadpos = multifacespreader$spreadtype.getSpreadPos(blockPos, directionElement, face); //DevilRpg.LOGGER.debug("--- test SpreadPos: {} direction {} face {} ", multifacespreader$spreadpos, directionElement, face); if (spreadPredicate.test(blockGetter, blockPos, multifacespreader$spreadpos)) { //DevilRpg.LOGGER.debug("--- spreadPredicate success:"); return Optional.of(multifacespreader$spreadpos); } } } } return Optional.empty(); } public boolean isValidStateForPlacement(@NotNull BlockGetter blockGetter, @NotNull BlockState blockState, @NotNull BlockPos blockPos, @NotNull Direction face) { //DevilRpg.LOGGER.debug("------ isValidStateForPlacement 1st condition: {} && ({} || {})", this.isFaceSupported(face), !blockState.is(this), !hasFace(blockState, face)); if (this.isFaceSupported(face) && (!blockState.is(this) || !hasFace(blockState, face))) { BlockPos blockpos = blockPos.relative(face); //DevilRpg.LOGGER.debug("------ isValidStateForPlacement 2nd condition: canAttachTo {} ", secondCondition); return canAttachTo(blockGetter, face, blockpos, blockGetter.getBlockState(blockpos)); } else { return false; } } @Nullable public BlockState getStateForPlacement(@NotNull BlockState blockState, @NotNull BlockGetter blockGetter, @NotNull BlockPos blockPos, @NotNull Direction face, int skillPoints, Direction direction, int age) { //DevilRpg.LOGGER.debug("--- getStateForPlacement"); boolean isNotValidStateForPlacement = !this.isValidStateForPlacement(blockGetter, blockState, blockPos, face); //DevilRpg.LOGGER.debug("------- isNotValidStateForPlacement: {}", isNotValidStateForPlacement); if (isNotValidStateForPlacement) { return null; } else { BlockState blockstate; if (blockState.is(this)) { blockstate = blockState; } else if (this.isWaterloggable() && blockState.getFluidState().isSourceOfType(Fluids.WATER)) { blockstate = this.defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, Boolean.TRUE); } else { blockstate = this.defaultBlockState(); } //DevilRpg.LOGGER.debug("------- getStateForPlacement -> blockStateResult "); return blockstate .setValue(getFaceProperty(face), Boolean.TRUE) .setValue(SKILL_LEVEL, skillPoints).setValue(FACE, face) .setValue(DIRECTION, direction) .setValue(CURRENT_AGE,age) ; } } public Optional<MultifaceSpreader.SpreadPos> spreadToFace(LevelAccessor levelAccessor, MultifaceSpreader.SpreadPos spreadPos, boolean p_221596_, int skillPoints, Direction direction, int age) { BlockState blockstate = levelAccessor.getBlockState(spreadPos.pos()); //DevilRpg.LOGGER.debug("---> spreadToFace blockstate{} direction: {}", blockstate, direction); return this.placeBlock(levelAccessor, spreadPos, blockstate, p_221596_, skillPoints, direction, age) ? Optional.of(spreadPos) : Optional.empty(); } public boolean placeBlock(LevelAccessor p_221702_, MultifaceSpreader.SpreadPos p_221703_, BlockState p_221704_, boolean p_221705_, int skillPoints, Direction direction, int age) { //DevilRpg.LOGGER.debug("---> placeBlock {} direction {} ", p_221703_, direction); BlockState blockstate = this.getStateForPlacement(p_221704_, p_221702_, p_221703_.pos(), p_221703_.face(), skillPoints, direction, age); if (blockstate != null) { if (p_221705_) { p_221702_.getChunk(p_221703_.pos()).markPosForPostprocessing(p_221703_.pos()); } //DevilRpg.LOGGER.debug("------> setBlock"); return p_221702_.setBlock(p_221703_.pos(), blockstate, 2); } else { return false; } } public long spreadFromFaceTowardAllDirections( BlockState blockState, LevelAccessor levelAccessor, BlockPos blockPos, Direction face, boolean aBoolean, int skillPoints, int age) { return Direction.stream().map((p_221656_) -> spreadFromFaceTowardDirection(blockState, levelAccessor, blockPos, face, p_221656_, aBoolean, skillPoints, age)) .filter(Optional::isPresent).count(); } private boolean isWaterloggable() { return this.stateDefinition.getProperties().contains(BlockStateProperties.WATERLOGGED); } @Override public void setPlacedBy(@NotNull Level level, @NotNull BlockPos blockPos, @NotNull BlockState blockState, @Nullable LivingEntity livingEntity, @NotNull ItemStack itemStack) { super.setPlacedBy(level, blockPos, blockState, livingEntity, itemStack); this.setOwner(livingEntity); } public LivingEntity getOwner() { return this.owner; } private void setOwner(LivingEntity livingEntity) { this.owner = livingEntity; } @Deprecated @Override public void entityInside(@NotNull BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull Entity entity) { if (entity instanceof LivingEntity /*&& entity.getType() != EntityType.BEE*/ && entity.getType() != ModEntities.LICHEN_SEEDBALL.get()) { entity.makeStuckInBlock(blockState, new Vec3(0.8D, 0.75D, 0.8D)); if (!level.isClientSide /*&& (entity.xOld != entity.getX() || entity.zOld != entity.getZ())*/) { // double d0 = Math.abs(entity.getX() - entity.xOld); // double d1 = Math.abs(entity.getZ() - entity.zOld); // if (d0 >= (double) 0.003F || d1 >= (double) 0.003F) { entity.hurt(level.damageSources().playerAttack((Player) owner), 1.0F); // Aplicar aceleración al movimiento double speedBoost = -0.4; // Ajusta este valor según lo rápido que quieras que sea el impulso double motionX = entity.getX() - entity.xOld; double motionZ = entity.getZ() - entity.zOld; double speed = Math.sqrt(motionX * motionX + motionZ * motionZ); //if (speed > 0.0) { entity.setDeltaMovement(entity.getDeltaMovement().multiply( (motionX / speed) * speedBoost, 0.0, (motionZ / speed) * speedBoost )); // } //} } } } @Nullable @Override public BlockEntity newBlockEntity(@NotNull BlockPos pos, @NotNull BlockState state) { return ModEntityBlocks.SOUL_LICHEN_ENTITY_BLOCK.get().create(pos, state); } @Nullable @Override public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, @NotNull BlockState blockState, @NotNull BlockEntityType<T> type) { return level.isClientSide ? null : (alevel, pos, aBlockstate, blockEntity) -> { if (blockEntity instanceof SoulLichenBlockEntity soulLichenBlockEntity && alevel.getGameTime() % 5 == 0) { soulLichenBlockEntity.tick(blockState, (ServerLevel) alevel, pos, alevel.getRandom()); //DevilRpg.LOGGER.info("-------->tick. this: {}", this.getClass().getSimpleName()); } }; } } This is the registration: public final class ModBlocks { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, DevilRpg.MODID); ... public static final RegistryObject<SoulLichenBlock> SOUL_LICHEN_BLOCK = BLOCKS.register("soullichen", () -> new SoulLichenBlock( Block.Properties.copy(Blocks.GLOW_LICHEN).lightLevel(SoulLichenBlock.emission(7)).randomTicks() )); }
  18. I'm trying to run MrCrayfish's Gun Mod in 1.19.4 (latest available version), so have created a new installation with the same version of Forge/Minecraft. I put the mod in the mod folder as well as the appropriate Framework mod, but they just don't load. I can play that version of Minecraft but the mods don't appear. I can run mods for the latest version (1.20.4) just fine. I've tried playing it from the 1.19.4 version folder too but it doesn't work. It doesn't crash, it just doesn't load the mods. I've also tried alternative older versions of the mods/Forge. Can anyone tell me what I might have done wrong here? I've followed lots of YouTube videos on how to do this, re-downloaded the mods and everything else I can think of... I'm using a MacBook Pro, Java edition. Link to launcher log: https://pastebin.com/0Lf0Teqk
  19. Hello, for a while now I have been trying to play Minecraft with Forge but it is not possible since I always get error screen 1 and this happens to me from this version to 1.20 and its latest updates https://paste.ee/p/vlWko I really appreciate your help
  20. https://dswrap.minecrafthopper.net/486731460137713664/1194724890759135294/message.txt
  21. Greetings Forge community and enthusiasts, I have previously come here to seek help for a mod that has been in development for about 7 Months now, focusing on adding realism and theory to Minecraft, and I'm looking for MORE individuals to help tackle this massive project with me and the current devs. If you have skills in coding, modeling, texturing, translation, or any related areas, I invite you to be a part of this. About the Mod: The goal of this mod is to make Minecraft feel more realistic and immersive. I aim to introduce features like realistic weather patterns, crops that grow based on real-life conditions, and animals with natural behaviours also build a better version of the old 1.12 mods like gregtech and industrial crafter and mix it with the modern mods like create or mekanism, a world where you experience extreme realistic weather, seasonal changes, world generation, pollution, and more, these ideas merely scratch the top of what we want to do. Whats it called: The Bmbc Project, which is a acronym for The Better Mine Better Craft Mod What I'm Looking For: I'm seeking motivated individuals who have experience or an interest in: Java coding with knowledge of Minecraft Forge 3D modeling and texturing Sound design Design Translation People who have an understanding a and are willing to share their knowledge Gameplay balancing and testing also people who want to document both on the fandom, and in the mod itself And i know this is a forge forums (and if you can link me to the fabric one) But i am also looking for fabric experts so that we can supply the mod in both Forge and Fabric. Im looking for skilled individuals, BUT even if you're new to modding but eager to learn and contribute, you're more than welcome to join. And if you know people who (Know people) know how to and are eager to contribute, ask them to let me know. What You Can Expect: By joining this project, We'll communicate primarily through Most likely Discord as a way to manage the project and ensure we create the best mod possible. How to Get Involved: If you're interested, please reply to this thread or send me a private message. You can also contact me via the projects discord: https://discord.gg/4Q538PWg69. Let me know which area(s) you specialise in and provide a brief summary of your relevant experience. If you have any questions or suggestions about the mod or the development process, feel free to ask. Your input is greatly appreciated! Thank you for reading this post. I'm excited to work with talented individuals who share a passion for Minecraft modding and realism. Let's create an amazing mod together! we're currently on [1.19.4] but i hope to migrate to [1.20] soon GitHub: https://github.com/IDoTheHax/The-Bmbc-Project please let me know if you are contributing. Discord: https://discord.gg/4Q538PWg69 Best regards, IDoTheHax, TalentedDev Managers of the BMBC project
  22. https://docs.google.com/document/d/1HUMB7FYamz5PmpXfpJSDxjsqPM0Kzt1Sx-qu03NYcDg/edit?usp=sharing this will take you to the crash report
  23. Forge version: 45.2.0 Minecraft version: 1.19.4 Downloads: Changelog: (Direct) Installer: (AdFocus) (Direct) MDK: (AdFocus) (Direct) Intro: Since the release of our first recommended build for MC 1.20.1, the release policy for recommended builds has changed - we now aim to release new recommended builds for fully supported MC versions more frequently - as long as there's a reasonable amount of changes since last recommended build. This second release build introduces some new features and bugfixes. New: Re-add in-game mod menu (#9654) Hook in IClientBlockExtensions to handle enabling tinting on breaking particles. (#9446) Add `EmptyEnergyStorage` (#9487) Support IPv6 address compression for logged IPs (#9501) Add option to advertise dedicated servers to LAN. (#9502) On by default to simplify home-hosting a Forge server - it'll now automatically show up in the multiplayer screen without needing to figure out the server's IP and manually addding it to be able to connect. Add particle description data provider (#9510) AlterGroundEvent for modifying block placement performed by AlterGroundDecorator (#9636) Improve logging for server connections (#9622) Add proper duplicate mod error message that includes the mod id(s) and mod files. (#9474) Fixed: Fix `Level` leak in debug HUD (#9700) Keep order of sources in PackRepository (#9703) Fix DelegatingPackResources searching resource path twice (#9698) This performance regression bug only affected 1.19.3+ and is now fixed Fix parameter names in IForgeDimensionSpecialEffects.adjustLightmapColors to better describe what they are. (#9657) Fix FluidUtil#tryFillContainer returning invalid result when simulating (#9358) Fix conflicting keybindings not having the correct click count set. (#9360) Fix the AdvancementsScreen not rendering next/previous page buttons. (#9650) Properly handle fluid updates while in a boat (#9428) Fix placing fluids into waterlogged blocks with FluidUtil::tryPlaceFluid. To behave more like vanilla MC-127110 (#9519)
×
×
  • Create New...

Important Information

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