Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (โ‹ฎ) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello

So here is the code

MapData mapdata = FilledMapItem.getSavedData(FilledMap, world);
SetImage setter = new SetImage();
if (mapdata == null) return;

mapdata.colors = setter.findImageAndReturnColors();
                    
world.setMapData(mapdata);

I looked to method and turned out it is abstract.

Is there any other way that I could save mapData.

  • Author

So MapData hasn't got any method called update but FilledMapItem has. It does the job it changes the map in item frame but when I hold it in my hands it changes back.

  • Author
public class ImageSetter extends Item {

    public ImageSetter(Properties properties) {
        super(properties);
    }

    @Override
    public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext context) {

        World world = Objects.requireNonNull(context.getPlayer()).getCommandSenderWorld();
        PlayerEntity player = context.getPlayer();
        List<Entity> itemFrames = world.getEntities(player, new AxisAlignedBB(
                context.getClickedPos().getX() - 2,
                context.getClickedPos().getY() - 2,
                context.getClickedPos().getZ() - 2,
                context.getClickedPos().getX() + 2,
                context.getClickedPos().getY() + 2,
                context.getClickedPos().getZ() + 2
        ));

        rightClickOnItemFrame(itemFrames, world, player);

        return ActionResultType.PASS;
    }

    private void rightClickOnItemFrame(List<Entity> entities, World world, PlayerEntity player) {
        for (Entity entity : entities) {
            if (entity instanceof ItemFrameEntity) {
                if (((ItemFrameEntity) entity).getItem().getItem() instanceof FilledMapItem) {
                    MapData mapdata = FilledMapItem.getSavedData(((ItemFrameEntity) entity).getItem(), world);
                    SetImage setter = new SetImage("ImageName");
                    if (mapdata == null) return;
                    if(!world.isClientSide) return;

                    mapdata.colors = setter.findImageAndReturnColors();

                    ((FilledMapItem) ((ItemFrameEntity) entity).getItem().getItem()).update(world, player, mapdata);
                }
            }
        }
    }
}

Here is the ImageSetter class. When I right click it gets list of entities and then I filter out just ItemFrames, then get item inside them and check if it's FilledMapItem but update for it doesn't work. (findImageAndReturnColors just gets an image converts it to byte array it works fine)

  • Author

Ok I assign mapdata.colors to my new data but I just can't save it back. Is there a way without packets?

Edited by Hakak

  • Author

I looked up there are no methods that "update" map data neither in MapData nor FilledMapItem.ย 

  • Author

Method "update" doesn't work when I log out and log in to world. Also World#setMapData doesn't workd either.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions โ†’ Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.